@rubytech/create-maxy-code 0.1.558 → 0.1.559

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 (248) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/mcp/dist/index.js +20 -0
  3. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  4. package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.d.ts +14 -0
  5. package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.d.ts.map +1 -0
  6. package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.js +18 -0
  7. package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.js.map +1 -0
  8. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +10 -0
  9. package/payload/platform/plugins/filesystem/mcp/dist/lib/result.d.ts +5 -1
  10. package/payload/platform/plugins/filesystem/mcp/dist/lib/result.d.ts.map +1 -1
  11. package/payload/platform/plugins/filesystem/mcp/dist/lib/result.js +4 -1
  12. package/payload/platform/plugins/filesystem/mcp/dist/lib/result.js.map +1 -1
  13. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.d.ts.map +1 -1
  14. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.js +2 -1
  15. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-read.js.map +1 -1
  16. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.d.ts.map +1 -1
  17. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.js +2 -1
  18. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.js.map +1 -1
  19. package/payload/platform/plugins/scheduling/PLUGIN.md +4 -2
  20. package/payload/platform/plugins/scheduling/mcp/dist/index.js +15 -3
  21. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  22. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js +72 -0
  23. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/schedule-audit.test.js.map +1 -1
  24. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/workflow-census.test.d.ts +2 -0
  25. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/workflow-census.test.d.ts.map +1 -0
  26. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/workflow-census.test.js +112 -0
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/workflow-census.test.js.map +1 -0
  28. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +59 -6
  29. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
  30. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +154 -18
  31. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
  32. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +17 -2
  33. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  34. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list-kind.test.d.ts +2 -0
  35. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list-kind.test.d.ts.map +1 -0
  36. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list-kind.test.js +25 -0
  37. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-list-kind.test.js.map +1 -0
  38. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts +15 -0
  39. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.d.ts.map +1 -1
  40. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js +66 -46
  41. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-list.js.map +1 -1
  42. package/payload/platform/plugins/storage-broker/mcp/dist/index.js +5 -2
  43. package/payload/platform/plugins/storage-broker/mcp/dist/index.js.map +1 -1
  44. package/payload/platform/plugins/url-get/mcp/dist/index.js +13 -13
  45. package/payload/platform/plugins/url-get/mcp/dist/index.js.map +1 -1
  46. package/payload/platform/plugins/workflows/PLUGIN.md +4 -1
  47. package/payload/platform/plugins/workflows/mcp/dist/__tests__/retry-delay.test.d.ts +2 -0
  48. package/payload/platform/plugins/workflows/mcp/dist/__tests__/retry-delay.test.d.ts.map +1 -0
  49. package/payload/platform/plugins/workflows/mcp/dist/__tests__/retry-delay.test.js +33 -0
  50. package/payload/platform/plugins/workflows/mcp/dist/__tests__/retry-delay.test.js.map +1 -0
  51. package/payload/platform/plugins/workflows/mcp/dist/index.js +1 -0
  52. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -1
  53. package/payload/platform/plugins/workflows/mcp/dist/lib/__tests__/step-resolver.test.d.ts +2 -0
  54. package/payload/platform/plugins/workflows/mcp/dist/lib/__tests__/step-resolver.test.d.ts.map +1 -0
  55. package/payload/platform/plugins/workflows/mcp/dist/lib/__tests__/step-resolver.test.js +42 -0
  56. package/payload/platform/plugins/workflows/mcp/dist/lib/__tests__/step-resolver.test.js.map +1 -0
  57. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts +23 -5
  58. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.d.ts.map +1 -1
  59. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js +20 -12
  60. package/payload/platform/plugins/workflows/mcp/dist/lib/step-resolver.js.map +1 -1
  61. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts +2 -0
  62. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -1
  63. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +2 -0
  64. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
  65. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +10 -0
  66. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts.map +1 -1
  67. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +53 -7
  68. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
  69. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.d.ts.map +1 -1
  70. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js +2 -0
  71. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-update.js.map +1 -1
  72. package/payload/platform/scripts/__tests__/provision-honours-disabled-agents.test.sh +4 -3
  73. package/payload/platform/scripts/__tests__/provision-specialist-retirement.test.sh +115 -0
  74. package/payload/platform/scripts/lib/provision-account-dir.sh +88 -13
  75. package/payload/platform/scripts/logs-rotate.sh +6 -1
  76. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  77. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +16 -0
  78. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  79. package/payload/platform/services/claude-session-manager/dist/pty-tee.d.ts +16 -0
  80. package/payload/platform/services/claude-session-manager/dist/pty-tee.d.ts.map +1 -0
  81. package/payload/platform/services/claude-session-manager/dist/pty-tee.js +84 -0
  82. package/payload/platform/services/claude-session-manager/dist/pty-tee.js.map +1 -0
  83. package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +2 -0
  84. package/payload/server/public/activity.html +5 -5
  85. package/payload/server/public/agents.html +4 -4
  86. package/payload/server/public/assets/{AdminLoginScreens-BUv_EOfw.js → AdminLoginScreens-DLogIsJT.js} +1 -1
  87. package/payload/server/public/assets/AdminLoginScreens-DLogIsJT.js.br +0 -0
  88. package/payload/server/public/assets/AdminLoginScreens-DLogIsJT.js.gz +0 -0
  89. package/payload/server/public/assets/{AdminShell-BVKfxSgh.js → AdminShell-B67tPTyE.js} +1 -1
  90. package/payload/server/public/assets/AdminShell-B67tPTyE.js.br +0 -0
  91. package/payload/server/public/assets/AdminShell-B67tPTyE.js.gz +0 -0
  92. package/payload/server/public/assets/{activity-CBcvL5MZ.js → activity-AVJSFESV.js} +1 -1
  93. package/payload/server/public/assets/activity-AVJSFESV.js.br +0 -0
  94. package/payload/server/public/assets/activity-AVJSFESV.js.gz +0 -0
  95. package/payload/server/public/assets/{admin-BUor8KRy.js → admin-eFgbld42.js} +1 -1
  96. package/payload/server/public/assets/admin-eFgbld42.js.br +0 -0
  97. package/payload/server/public/assets/admin-eFgbld42.js.gz +0 -0
  98. package/payload/server/public/assets/{agents-Dzx8Uxgz.js → agents-CoWLZMf7.js} +1 -1
  99. package/payload/server/public/assets/agents-CoWLZMf7.js.br +0 -0
  100. package/payload/server/public/assets/agents-CoWLZMf7.js.gz +0 -0
  101. package/payload/server/public/assets/{browser-B7EsGyVd.js → browser-C6K66_fw.js} +1 -1
  102. package/payload/server/public/assets/browser-C6K66_fw.js.br +0 -0
  103. package/payload/server/public/assets/browser-C6K66_fw.js.gz +0 -0
  104. package/payload/server/public/assets/{calendar-D4qD0upn.js → calendar-Dnw_cP4b.js} +1 -1
  105. package/payload/server/public/assets/calendar-Dnw_cP4b.js.br +0 -0
  106. package/payload/server/public/assets/calendar-Dnw_cP4b.js.gz +0 -0
  107. package/payload/server/public/assets/chat-Cm0fkpg1.js +1 -0
  108. package/payload/server/public/assets/chat-Cm0fkpg1.js.br +0 -0
  109. package/payload/server/public/assets/chat-Cm0fkpg1.js.gz +0 -0
  110. package/payload/server/public/assets/chevron-left-CjRH-BtF.js +1 -0
  111. package/payload/server/public/assets/chevron-left-CjRH-BtF.js.br +0 -0
  112. package/payload/server/public/assets/clock-wbYEt1kM.js +1 -0
  113. package/payload/server/public/assets/clock-wbYEt1kM.js.br +0 -0
  114. package/payload/server/public/assets/clock-wbYEt1kM.js.gz +0 -0
  115. package/payload/server/public/assets/{copy-CG2tAK16.js → copy-kuNM0Etw.js} +1 -1
  116. package/payload/server/public/assets/copy-kuNM0Etw.js.br +0 -0
  117. package/payload/server/public/assets/copy-kuNM0Etw.js.gz +0 -0
  118. package/payload/server/public/assets/data-c47T2NCd.js +1 -0
  119. package/payload/server/public/assets/data-c47T2NCd.js.br +1 -0
  120. package/payload/server/public/assets/data-c47T2NCd.js.gz +0 -0
  121. package/payload/server/public/assets/{file-text-47cIljhV.js → file-text-BWkobrcx.js} +1 -1
  122. package/payload/server/public/assets/file-text-BWkobrcx.js.br +0 -0
  123. package/payload/server/public/assets/file-text-BWkobrcx.js.gz +0 -0
  124. package/payload/server/public/assets/{graph-CDbi-eqF.js → graph-BGjTL5Vz.js} +1 -1
  125. package/payload/server/public/assets/graph-BGjTL5Vz.js.br +0 -0
  126. package/payload/server/public/assets/graph-BGjTL5Vz.js.gz +0 -0
  127. package/payload/server/public/assets/{graph-labels-Byp2RkVg.js → graph-labels-Dvc5Kw_r.js} +1 -1
  128. package/payload/server/public/assets/graph-labels-Dvc5Kw_r.js.br +0 -0
  129. package/payload/server/public/assets/graph-labels-Dvc5Kw_r.js.gz +0 -0
  130. package/payload/server/public/assets/{operator-t15ZvJER.js → operator-CzBGv_he.js} +1 -1
  131. package/payload/server/public/assets/operator-CzBGv_he.js.br +0 -0
  132. package/payload/server/public/assets/operator-CzBGv_he.js.gz +0 -0
  133. package/payload/server/public/assets/{page-DcKH1PVD.js → page-BIY4Ku8Q.js} +1 -1
  134. package/payload/server/public/assets/page-BIY4Ku8Q.js.br +0 -0
  135. package/payload/server/public/assets/page-BIY4Ku8Q.js.gz +0 -0
  136. package/payload/server/public/assets/{page-CogD1Hho.js → page-DaySqamH.js} +1 -1
  137. package/payload/server/public/assets/page-DaySqamH.js.br +0 -0
  138. package/payload/server/public/assets/page-DaySqamH.js.gz +0 -0
  139. package/payload/server/public/assets/play-C8RA52_i.js +1 -0
  140. package/payload/server/public/assets/play-C8RA52_i.js.br +0 -0
  141. package/payload/server/public/assets/play-C8RA52_i.js.gz +0 -0
  142. package/payload/server/public/assets/{public-UlLvs9vV.js → public-pwDSvhBv.js} +1 -1
  143. package/payload/server/public/assets/public-pwDSvhBv.js.br +0 -0
  144. package/payload/server/public/assets/public-pwDSvhBv.js.gz +0 -0
  145. package/payload/server/public/assets/{rotate-ccw-Dbj7NrEB.js → rotate-ccw-B6s7tkEt.js} +1 -1
  146. package/payload/server/public/assets/rotate-ccw-B6s7tkEt.js.br +0 -0
  147. package/payload/server/public/assets/rotate-ccw-B6s7tkEt.js.gz +0 -0
  148. package/payload/server/public/assets/routines-CFlyRdYg.js +2 -0
  149. package/payload/server/public/assets/routines-CFlyRdYg.js.br +0 -0
  150. package/payload/server/public/assets/routines-CFlyRdYg.js.gz +0 -0
  151. package/payload/server/public/assets/{skills-EtKyNK_3.js → skills-C45kfL_Q.js} +1 -1
  152. package/payload/server/public/assets/skills-C45kfL_Q.js.br +0 -0
  153. package/payload/server/public/assets/skills-C45kfL_Q.js.gz +0 -0
  154. package/payload/server/public/assets/{tasks-U0poqfi9.js → tasks-BwoCTCu5.js} +1 -1
  155. package/payload/server/public/assets/tasks-BwoCTCu5.js.br +0 -0
  156. package/payload/server/public/assets/tasks-BwoCTCu5.js.gz +0 -0
  157. package/payload/server/public/assets/{triangle-alert-D7zwttJW.js → triangle-alert-B3bthSzx.js} +1 -1
  158. package/payload/server/public/assets/triangle-alert-B3bthSzx.js.br +0 -0
  159. package/payload/server/public/assets/triangle-alert-B3bthSzx.js.gz +0 -0
  160. package/payload/server/public/assets/{useCopyFeedback-Ae_va0Ps.js → useCopyFeedback-BzJAkFEb.js} +1 -1
  161. package/payload/server/public/assets/useCopyFeedback-BzJAkFEb.js.br +0 -0
  162. package/payload/server/public/assets/useCopyFeedback-BzJAkFEb.js.gz +0 -0
  163. package/payload/server/public/assets/{useMediaQuery-HRgPNA8l.css → useMediaQuery-DW_xRrMl.css} +1 -1
  164. package/payload/server/public/assets/useMediaQuery-DW_xRrMl.css.br +0 -0
  165. package/payload/server/public/assets/{useMediaQuery-HRgPNA8l.css.gz → useMediaQuery-DW_xRrMl.css.gz} +0 -0
  166. package/payload/server/public/assets/{useVoiceRecorder-q9U5ahfg.js → useVoiceRecorder-_qI_BAOo.js} +1 -1
  167. package/payload/server/public/assets/useVoiceRecorder-_qI_BAOo.js.br +0 -0
  168. package/payload/server/public/assets/useVoiceRecorder-_qI_BAOo.js.gz +0 -0
  169. package/payload/server/public/assets/{wrench-BmXV4Tmh.js → wrench-Bqux9jaw.js} +1 -1
  170. package/payload/server/public/assets/wrench-Bqux9jaw.js.br +0 -0
  171. package/payload/server/public/assets/wrench-Bqux9jaw.js.gz +0 -0
  172. package/payload/server/public/browser.html +4 -4
  173. package/payload/server/public/calendar.html +7 -7
  174. package/payload/server/public/chat.html +13 -13
  175. package/payload/server/public/data.html +11 -11
  176. package/payload/server/public/graph.html +9 -9
  177. package/payload/server/public/index.html +13 -13
  178. package/payload/server/public/operator.html +14 -14
  179. package/payload/server/public/public.html +13 -13
  180. package/payload/server/public/routines.html +7 -7
  181. package/payload/server/public/skills.html +5 -5
  182. package/payload/server/public/tasks.html +6 -6
  183. package/payload/server/server.js +169 -43
  184. package/payload/server/public/assets/AdminLoginScreens-BUv_EOfw.js.br +0 -0
  185. package/payload/server/public/assets/AdminLoginScreens-BUv_EOfw.js.gz +0 -0
  186. package/payload/server/public/assets/AdminShell-BVKfxSgh.js.br +0 -0
  187. package/payload/server/public/assets/AdminShell-BVKfxSgh.js.gz +0 -0
  188. package/payload/server/public/assets/activity-CBcvL5MZ.js.br +0 -0
  189. package/payload/server/public/assets/activity-CBcvL5MZ.js.gz +0 -0
  190. package/payload/server/public/assets/admin-BUor8KRy.js.br +0 -0
  191. package/payload/server/public/assets/admin-BUor8KRy.js.gz +0 -0
  192. package/payload/server/public/assets/agents-Dzx8Uxgz.js.br +0 -0
  193. package/payload/server/public/assets/agents-Dzx8Uxgz.js.gz +0 -0
  194. package/payload/server/public/assets/browser-B7EsGyVd.js.br +0 -0
  195. package/payload/server/public/assets/browser-B7EsGyVd.js.gz +0 -0
  196. package/payload/server/public/assets/calendar-D4qD0upn.js.br +0 -0
  197. package/payload/server/public/assets/calendar-D4qD0upn.js.gz +0 -0
  198. package/payload/server/public/assets/chat-D7LjNerV.js +0 -1
  199. package/payload/server/public/assets/chat-D7LjNerV.js.br +0 -0
  200. package/payload/server/public/assets/chat-D7LjNerV.js.gz +0 -0
  201. package/payload/server/public/assets/chevron-left-CGsW9Vsp.js +0 -1
  202. package/payload/server/public/assets/chevron-left-CGsW9Vsp.js.br +0 -0
  203. package/payload/server/public/assets/clock-B_xWWLQW.js +0 -1
  204. package/payload/server/public/assets/clock-B_xWWLQW.js.br +0 -0
  205. package/payload/server/public/assets/clock-B_xWWLQW.js.gz +0 -0
  206. package/payload/server/public/assets/copy-CG2tAK16.js.br +0 -0
  207. package/payload/server/public/assets/copy-CG2tAK16.js.gz +0 -0
  208. package/payload/server/public/assets/data-BU60tJiv.js +0 -1
  209. package/payload/server/public/assets/data-BU60tJiv.js.br +0 -0
  210. package/payload/server/public/assets/data-BU60tJiv.js.gz +0 -0
  211. package/payload/server/public/assets/file-text-47cIljhV.js.br +0 -0
  212. package/payload/server/public/assets/file-text-47cIljhV.js.gz +0 -0
  213. package/payload/server/public/assets/graph-CDbi-eqF.js.br +0 -0
  214. package/payload/server/public/assets/graph-CDbi-eqF.js.gz +0 -0
  215. package/payload/server/public/assets/graph-labels-Byp2RkVg.js.br +0 -0
  216. package/payload/server/public/assets/graph-labels-Byp2RkVg.js.gz +0 -0
  217. package/payload/server/public/assets/operator-t15ZvJER.js.br +0 -0
  218. package/payload/server/public/assets/operator-t15ZvJER.js.gz +0 -0
  219. package/payload/server/public/assets/page-CogD1Hho.js.br +0 -0
  220. package/payload/server/public/assets/page-CogD1Hho.js.gz +0 -0
  221. package/payload/server/public/assets/page-DcKH1PVD.js.br +0 -0
  222. package/payload/server/public/assets/page-DcKH1PVD.js.gz +0 -0
  223. package/payload/server/public/assets/play-Bankj0zU.js +0 -1
  224. package/payload/server/public/assets/play-Bankj0zU.js.br +0 -0
  225. package/payload/server/public/assets/play-Bankj0zU.js.gz +0 -0
  226. package/payload/server/public/assets/public-UlLvs9vV.js.br +0 -0
  227. package/payload/server/public/assets/public-UlLvs9vV.js.gz +0 -0
  228. package/payload/server/public/assets/rotate-ccw-Dbj7NrEB.js.br +0 -0
  229. package/payload/server/public/assets/rotate-ccw-Dbj7NrEB.js.gz +0 -0
  230. package/payload/server/public/assets/routines-CdqGJwyD.js +0 -2
  231. package/payload/server/public/assets/routines-CdqGJwyD.js.br +0 -0
  232. package/payload/server/public/assets/routines-CdqGJwyD.js.gz +0 -0
  233. package/payload/server/public/assets/skills-EtKyNK_3.js.br +0 -0
  234. package/payload/server/public/assets/skills-EtKyNK_3.js.gz +0 -0
  235. package/payload/server/public/assets/tasks-U0poqfi9.js.br +0 -0
  236. package/payload/server/public/assets/tasks-U0poqfi9.js.gz +0 -0
  237. package/payload/server/public/assets/triangle-alert-D7zwttJW.js.br +0 -0
  238. package/payload/server/public/assets/triangle-alert-D7zwttJW.js.gz +0 -0
  239. package/payload/server/public/assets/useCopyFeedback-Ae_va0Ps.js.br +0 -4
  240. package/payload/server/public/assets/useCopyFeedback-Ae_va0Ps.js.gz +0 -0
  241. package/payload/server/public/assets/useMediaQuery-HRgPNA8l.css.br +0 -0
  242. package/payload/server/public/assets/useVoiceRecorder-q9U5ahfg.js.br +0 -0
  243. package/payload/server/public/assets/useVoiceRecorder-q9U5ahfg.js.gz +0 -0
  244. package/payload/server/public/assets/wrench-BmXV4Tmh.js.br +0 -0
  245. package/payload/server/public/assets/wrench-BmXV4Tmh.js.gz +0 -0
  246. /package/payload/server/public/assets/{useMediaQuery-DIm6yGOl.js → useMediaQuery-DJ6XeNN7.js} +0 -0
  247. /package/payload/server/public/assets/{useMediaQuery-DIm6yGOl.js.br → useMediaQuery-DJ6XeNN7.js.br} +0 -0
  248. /package/payload/server/public/assets/{useMediaQuery-DIm6yGOl.js.gz → useMediaQuery-DJ6XeNN7.js.gz} +0 -0
@@ -0,0 +1,112 @@
1
+ // Task 2405 — the workflow engine had no census at all. Across three brands on
2
+ // 2026-08-04 it held one :Workflow node and had produced zero :WorkflowRun rows
3
+ // since it shipped, and nothing in the tree could say so. `ok=false` marks
4
+ // exactly one condition: an active workflow that has never run.
5
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
6
+ import { auditWorkflowCensus } from "../schedule-audit.js";
7
+ const NOW = Date.parse("2026-08-04T12:00:00Z");
8
+ /** Captures the params the audit binds, so the 30-day cutoff can be asserted
9
+ * on its exact string shape rather than on the audit's own output. */
10
+ const bound = [];
11
+ function workflowDriver(rows, failWith) {
12
+ return {
13
+ session: () => ({
14
+ run: vi.fn(async (_cypher, params) => {
15
+ bound.push(params);
16
+ if (failWith)
17
+ throw new Error(failWith);
18
+ return {
19
+ records: rows.map((r) => ({
20
+ get: (k) => r[k] ?? null,
21
+ })),
22
+ };
23
+ }),
24
+ close: vi.fn(async () => { }),
25
+ }),
26
+ };
27
+ }
28
+ const workflowRow = (over = {}) => ({
29
+ accountId: "acct-1111-2222",
30
+ workflowId: "wf-3333",
31
+ status: "active",
32
+ runs30d: 0,
33
+ lastRunAt: null,
34
+ ...over,
35
+ });
36
+ describe("auditWorkflowCensus (Task 2405)", () => {
37
+ let logs = [];
38
+ beforeEach(() => {
39
+ logs = [];
40
+ bound.length = 0;
41
+ vi.spyOn(console, "error").mockImplementation((...args) => {
42
+ logs.push(args.map(String).join(" "));
43
+ });
44
+ });
45
+ afterEach(() => vi.restoreAllMocks());
46
+ const line = () => logs.find((l) => l.includes("op=workflow-census "));
47
+ it("reports zeros and ok=true for an account with no workflows", async () => {
48
+ // Having none is not a fault, and a check that goes quiet when healthy
49
+ // cannot be told apart from one that stopped running.
50
+ await auditWorkflowCensus(workflowDriver([]), ["acct-1111-2222"], NOW);
51
+ expect(line()).toContain("workflows=0");
52
+ expect(line()).toContain("active=0");
53
+ expect(line()).toContain("runs30d=0");
54
+ expect(line()).toContain("lastRunAge=never");
55
+ expect(line()).toContain("ok=true");
56
+ });
57
+ it("fails on an active workflow that has never run", async () => {
58
+ // The dark-engine signature this audit exists to name.
59
+ await auditWorkflowCensus(workflowDriver([workflowRow()]), ["acct-1111-2222"], NOW);
60
+ expect(line()).toContain("workflows=1");
61
+ expect(line()).toContain("active=1");
62
+ expect(line()).toContain("runs30d=0");
63
+ expect(line()).toContain("lastRunAge=never");
64
+ expect(line()).toContain("ok=false");
65
+ });
66
+ it("passes on a draft workflow that has never run", async () => {
67
+ // A draft is not armed, so it is not expected to have run.
68
+ await auditWorkflowCensus(workflowDriver([workflowRow({ status: "draft" })]), ["acct-1111-2222"], NOW);
69
+ expect(line()).toContain("workflows=1");
70
+ expect(line()).toContain("active=0");
71
+ expect(line()).toContain("ok=true");
72
+ });
73
+ it("reports the age in whole days from the newest run across the account", async () => {
74
+ await auditWorkflowCensus(workflowDriver([
75
+ workflowRow({ workflowId: "wf-a", runs30d: 3, lastRunAt: "2026-07-30T12:00:00.000Z" }),
76
+ workflowRow({ workflowId: "wf-b", runs30d: 1, lastRunAt: "2026-08-02T12:00:00.000Z" }),
77
+ ]), ["acct-1111-2222"], NOW);
78
+ expect(line()).toContain("workflows=2");
79
+ expect(line()).toContain("runs30d=4");
80
+ expect(line()).toContain("lastRunAge=2");
81
+ expect(line()).toContain("ok=true");
82
+ });
83
+ it("binds the 30-day cutoff as a Z-suffixed ISO string", async () => {
84
+ // The compare is lexical against `startedAt`, which workflow-execute writes
85
+ // as toISOString. A cutoff in any other shape would compare wrong.
86
+ await auditWorkflowCensus(workflowDriver([]), ["acct-1111-2222"], NOW);
87
+ expect(bound[0]).toMatchObject({ since30d: "2026-07-05T12:00:00.000Z" });
88
+ });
89
+ it("counts a neo4j Integer runs30d as a number", async () => {
90
+ await auditWorkflowCensus(workflowDriver([
91
+ workflowRow({ runs30d: { toNumber: () => 7 }, lastRunAt: "2026-08-04T00:00:00.000Z" }),
92
+ ]), ["acct-1111-2222"], NOW);
93
+ expect(line()).toContain("runs30d=7");
94
+ });
95
+ it("emits the error line and no count line when the read fails", async () => {
96
+ // A silent zero is indistinguishable from a genuine one, which is the
97
+ // defect this task fixes.
98
+ await auditWorkflowCensus(workflowDriver([], "bolt down"), ["acct-1111-2222"], NOW);
99
+ expect(logs.find((l) => l.includes("op=workflow-census-error"))).toContain("bolt down");
100
+ expect(line()).toBeUndefined();
101
+ });
102
+ it("emits a line for every local account, not only those with rows", async () => {
103
+ await auditWorkflowCensus(workflowDriver([workflowRow()]), ["acct-1111-2222", "acct-9999-8888"], NOW);
104
+ expect(logs.filter((l) => l.includes("op=workflow-census ")).length).toBe(2);
105
+ expect(logs.find((l) => l.includes("acct=acct-999"))).toContain("workflows=0");
106
+ });
107
+ it("emits nothing when there are no local accounts", async () => {
108
+ await auditWorkflowCensus(workflowDriver([workflowRow()]), [], NOW);
109
+ expect(line()).toBeUndefined();
110
+ });
111
+ });
112
+ //# sourceMappingURL=workflow-census.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-census.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/workflow-census.test.ts"],"names":[],"mappings":"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"}
@@ -115,7 +115,8 @@ export declare function noneForHours(entry: ConnectorStateEntry, nowMs: number):
115
115
  */
116
116
  export declare function auditConnectorResolution(driver: Driver, localAccountIds: string[], accountsDir: string, statePath: string, nowMs: number): Promise<void>;
117
117
  /**
118
- * Task 2380 — the install's agent-bearing fire rate, counted from the rows.
118
+ * Task 2380, widened to both rails by Task 2405 — the install's fire rate on
119
+ * each dispatch rail, counted from the rows.
119
120
  *
120
121
  * `recurrencePrevious` records a change made through `schedule-update` and
121
122
  * nothing else. A direct Cypher write, a restore, or a future editor changes the
@@ -125,15 +126,29 @@ export declare function auditConnectorResolution(driver: Driver, localAccountIds
125
126
  * next tick. It is a census, not an alarm: its value is that the total is
126
127
  * greppable across days.
127
128
  *
129
+ * 2380 counted the agent rail alone: a numerator with no total, so the platform's
130
+ * shift toward running scheduled work without a model had nothing to be measured
131
+ * against. One query, one tally, one line covers both rails; a second census
132
+ * reading the same rows would let the two disagree about what a routine is.
133
+ *
134
+ * Which rail a row lands on is `chooseDispatchMode`'s rule verbatim
135
+ * (agent-turn-dispatch.ts:48-59): the agent rail needs `agentChannel` AND
136
+ * `agentDestination` AND `agentPrompt`, the action rail needs `actionPlugin` AND
137
+ * `actionTool`, and a row satisfying neither is counted on neither. Reading it
138
+ * any other way would report a fire rate for a row the dispatcher answers
139
+ * `kind:"none"` for, which never fires at all.
140
+ *
128
141
  * Only `scheduled` rows are counted, because the sweep selects that literal by
129
142
  * equality (check-due-events.ts:502, :567, :704, :768) and a suspended routine's
130
143
  * fire rate is zero, not unknown. Each row is counted in its own timezone.
131
144
  *
132
- * `ok=false` in exactly one case: nothing counted while agent-bearing rows exist
133
- * at any status. That is the Task 2231 vacuity guard — a zero that means "the
134
- * enumeration found nothing" must not read the same as a zero that means "there
135
- * is nothing". An install whose agent routines are all suspended reports
136
- * `ok=false`, and it clears the moment one is resumed.
145
+ * `ok=false` in exactly one case: nothing counted on EITHER rail while
146
+ * dispatch-bearing rows exist at any status. That is the Task 2231 vacuity guard
147
+ * — a zero that means "the enumeration found nothing" must not read the same as
148
+ * a zero that means "there is nothing". An install whose routines are all
149
+ * suspended reports `ok=false`, and it clears the moment one is resumed.
150
+ * `actionRoutines=0` alone is NOT a failure: it is the state of every install
151
+ * today, and a permanently red line is how a warning stops being read.
137
152
  *
138
153
  * A gate (Task 2378) does not reduce the count. The gate skips the INJECT; the
139
154
  * fire still happens and still costs a headless tool call, so the rate this
@@ -142,6 +157,44 @@ export declare function auditConnectorResolution(driver: Driver, localAccountIds
142
157
  * Never throws; the sweep's contract.
143
158
  */
144
159
  export declare function auditFireRateCensus(driver: Driver, localAccountIds: string[]): Promise<void>;
160
+ /**
161
+ * Task 2405 — whether the workflow engine has ever run.
162
+ *
163
+ * `auditFireRateCensus` counts the two dispatch rails a routine can sit on. The
164
+ * workflow engine is the third destination the platform is moving work toward
165
+ * and nothing in the tree counted it at all: across three brands on 2026-08-04
166
+ * it held one `:Workflow` node and zero `:WorkflowRun` rows, and three Cypher
167
+ * sessions across three bolt ports were the only way to learn it.
168
+ *
169
+ * `ok=false` in exactly one case: `active > 0` and `runs30d = 0`. An account
170
+ * with no workflows reports zeros and `ok=true`, because having none is not a
171
+ * fault. An account carrying an active workflow that has never run is the
172
+ * dark-engine signature this audit exists to name. A draft workflow never fails
173
+ * the check: it is not armed, so it is not expected to have run.
174
+ *
175
+ * The trash predicate matches every query the workflows plugin makes
176
+ * (workflow-list.ts:33, workflow-runs.ts:40-41); a trashed workflow counted as
177
+ * active would produce a permanent false `ok=false`.
178
+ *
179
+ * `r.startedAt` is a Z-suffixed `toISOString` (workflow-execute.ts:355), the
180
+ * only writer, so the lexical `>=` against the cutoff is exact, `max()` is
181
+ * genuinely the latest run, and `Date.parse` on the winner always parses.
182
+ *
183
+ * Every construct in the query below is copied from a live in-tree twin
184
+ * (workflow-runs.ts:49-57) EXCEPT `max()`, which appears in no other Cypher in
185
+ * this tree. That is a considered exception to the rule ROUTINE_COLS states,
186
+ * not an oversight: the rule there is a blast-radius argument — a syntax error
187
+ * in that shared projection 503s every routine query — and this audit is a
188
+ * single guarded read whose failure emits one named line and costs the sweep
189
+ * nothing else.
190
+ *
191
+ * One line per local account per tick, including every healthy one and every
192
+ * account with nothing. Never throws (honours the sweep's contract); an
193
+ * unreadable census emits `op=workflow-census-error` INSTEAD of the count line
194
+ * and never alongside it, so a database that is down is never read as an
195
+ * account with nothing in it.
196
+ */
197
+ export declare function auditWorkflowCensus(driver: Driver, localAccountIds: string[], nowMs: number): Promise<void>;
145
198
  /**
146
199
  * Task 2383 — how the fleet's recurring agent routines answered the gate
147
200
  * question.
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-audit.d.ts","sourceRoot":"","sources":["../../src/lib/schedule-audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGjF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,OAAO,YAA2B,GACvC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBpE;AAWD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CA4Df;AAMD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,eAAe,CAAC;IAC3B;oBACgB;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,mBAAmB,GAAG,SAAS,EACrC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAGrB;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG9E;AAwCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyElG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAiDf"}
1
+ {"version":3,"file":"schedule-audit.d.ts","sourceRoot":"","sources":["../../src/lib/schedule-audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGjF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,OAAO,YAA2B,GACvC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBpE;AAWD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CA4Df;AAMD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,eAAe,CAAC;IAC3B;oBACgB;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,mBAAmB,GAAG,SAAS,EACrC,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAGrB;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG9E;AAwCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GlG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAiEf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAiDf"}
@@ -331,7 +331,8 @@ export async function auditConnectorResolution(driver, localAccountIds, accounts
331
331
  writeConnectorState(statePath, state);
332
332
  }
333
333
  /**
334
- * Task 2380 — the install's agent-bearing fire rate, counted from the rows.
334
+ * Task 2380, widened to both rails by Task 2405 — the install's fire rate on
335
+ * each dispatch rail, counted from the rows.
335
336
  *
336
337
  * `recurrencePrevious` records a change made through `schedule-update` and
337
338
  * nothing else. A direct Cypher write, a restore, or a future editor changes the
@@ -341,15 +342,29 @@ export async function auditConnectorResolution(driver, localAccountIds, accounts
341
342
  * next tick. It is a census, not an alarm: its value is that the total is
342
343
  * greppable across days.
343
344
  *
345
+ * 2380 counted the agent rail alone: a numerator with no total, so the platform's
346
+ * shift toward running scheduled work without a model had nothing to be measured
347
+ * against. One query, one tally, one line covers both rails; a second census
348
+ * reading the same rows would let the two disagree about what a routine is.
349
+ *
350
+ * Which rail a row lands on is `chooseDispatchMode`'s rule verbatim
351
+ * (agent-turn-dispatch.ts:48-59): the agent rail needs `agentChannel` AND
352
+ * `agentDestination` AND `agentPrompt`, the action rail needs `actionPlugin` AND
353
+ * `actionTool`, and a row satisfying neither is counted on neither. Reading it
354
+ * any other way would report a fire rate for a row the dispatcher answers
355
+ * `kind:"none"` for, which never fires at all.
356
+ *
344
357
  * Only `scheduled` rows are counted, because the sweep selects that literal by
345
358
  * equality (check-due-events.ts:502, :567, :704, :768) and a suspended routine's
346
359
  * fire rate is zero, not unknown. Each row is counted in its own timezone.
347
360
  *
348
- * `ok=false` in exactly one case: nothing counted while agent-bearing rows exist
349
- * at any status. That is the Task 2231 vacuity guard — a zero that means "the
350
- * enumeration found nothing" must not read the same as a zero that means "there
351
- * is nothing". An install whose agent routines are all suspended reports
352
- * `ok=false`, and it clears the moment one is resumed.
361
+ * `ok=false` in exactly one case: nothing counted on EITHER rail while
362
+ * dispatch-bearing rows exist at any status. That is the Task 2231 vacuity guard
363
+ * — a zero that means "the enumeration found nothing" must not read the same as
364
+ * a zero that means "there is nothing". An install whose routines are all
365
+ * suspended reports `ok=false`, and it clears the moment one is resumed.
366
+ * `actionRoutines=0` alone is NOT a failure: it is the state of every install
367
+ * today, and a permanently red line is how a warning stops being read.
353
368
  *
354
369
  * A gate (Task 2378) does not reduce the count. The gate skips the INJECT; the
355
370
  * fire still happens and still costs a headless tool call, so the rate this
@@ -362,21 +377,28 @@ export async function auditFireRateCensus(driver, localAccountIds) {
362
377
  return;
363
378
  const session = driver.session();
364
379
  try {
365
- // Every agent-bearing row on the account regardless of status or
380
+ // Every dispatch-bearing row on the account regardless of status or
366
381
  // recurrence: the wider set is what makes the vacuity guard meaningful, and
367
382
  // splitting it into a second query would let the two disagree.
368
383
  const res = await session.run(`MATCH (e:Event)
369
384
  WHERE e.accountId IN $localAccountIds
370
- AND e.agentChannel IS NOT NULL
371
- AND e.agentDestination IS NOT NULL
372
- AND e.agentPrompt IS NOT NULL
385
+ AND (e.agentPrompt IS NOT NULL OR e.actionPlugin IS NOT NULL)
373
386
  RETURN e.accountId AS accountId, e.eventId AS eventId,
374
387
  e.recurrence AS recurrence, e.timezone AS timezone,
375
- e.eventStatus AS eventStatus`, { localAccountIds });
388
+ e.eventStatus AS eventStatus,
389
+ e.agentChannel AS agentChannel, e.agentDestination AS agentDestination,
390
+ e.agentPrompt AS agentPrompt,
391
+ e.actionPlugin AS actionPlugin, e.actionTool AS actionTool`, { localAccountIds });
376
392
  const countedAt = new Date();
377
393
  const tally = new Map();
378
394
  for (const accountId of localAccountIds) {
379
- tally.set(accountId, { bearing: 0, routines: 0, fires: 0 });
395
+ tally.set(accountId, {
396
+ bearing: 0,
397
+ agentRoutines: 0,
398
+ agentFires: 0,
399
+ actionRoutines: 0,
400
+ actionFires: 0,
401
+ });
380
402
  }
381
403
  for (const rec of res.records) {
382
404
  const accountId = rec.get("accountId");
@@ -390,9 +412,25 @@ export async function auditFireRateCensus(driver, localAccountIds) {
390
412
  const eventStatus = (rec.get("eventStatus") ?? null);
391
413
  if (recurrence === null || eventStatus !== "scheduled")
392
414
  continue;
415
+ // chooseDispatchMode's rule verbatim (agent-turn-dispatch.ts:48-59).
416
+ const prop = (k) => (rec.get(k) ?? null);
417
+ const rail = prop("agentChannel") && prop("agentDestination") && prop("agentPrompt")
418
+ ? "agent"
419
+ : prop("actionPlugin") && prop("actionTool")
420
+ ? "action"
421
+ : null;
422
+ if (rail === null)
423
+ continue;
393
424
  try {
394
- acc.fires += firesPerDay(recurrence, (rec.get("timezone") ?? null), countedAt);
395
- acc.routines++;
425
+ const fires = firesPerDay(recurrence, (rec.get("timezone") ?? null), countedAt);
426
+ if (rail === "agent") {
427
+ acc.agentFires += fires;
428
+ acc.agentRoutines++;
429
+ }
430
+ else {
431
+ acc.actionFires += fires;
432
+ acc.actionRoutines++;
433
+ }
396
434
  }
397
435
  catch {
398
436
  // Named rather than swallowed, and dropped from both figures: one row
@@ -403,13 +441,14 @@ export async function auditFireRateCensus(driver, localAccountIds) {
403
441
  }
404
442
  }
405
443
  // Driven by localAccountIds, not by the result rows: an account with no
406
- // agent routines returns none, and skipping it would make "healthy" and
407
- // "not looked at" the same silence.
444
+ // routines returns none, and skipping it would make "healthy" and "not
445
+ // looked at" the same silence.
408
446
  for (const accountId of localAccountIds) {
409
447
  const c = tally.get(accountId);
410
- const ok = !(c.routines === 0 && c.bearing > 0);
448
+ const ok = !(c.agentRoutines === 0 && c.actionRoutines === 0 && c.bearing > 0);
411
449
  console.error(`[schedule-audit] op=fire-rate-census acct=${accountId.slice(0, 8)} ` +
412
- `agentRoutines=${c.routines} agentFiresPerDay=${c.fires} ok=${ok}`);
450
+ `agentRoutines=${c.agentRoutines} agentFiresPerDay=${c.agentFires} ` +
451
+ `actionRoutines=${c.actionRoutines} actionFiresPerDay=${c.actionFires} ok=${ok}`);
413
452
  }
414
453
  }
415
454
  catch (err) {
@@ -424,6 +463,103 @@ export async function auditFireRateCensus(driver, localAccountIds) {
424
463
  }
425
464
  }
426
465
  }
466
+ /**
467
+ * Task 2405 — whether the workflow engine has ever run.
468
+ *
469
+ * `auditFireRateCensus` counts the two dispatch rails a routine can sit on. The
470
+ * workflow engine is the third destination the platform is moving work toward
471
+ * and nothing in the tree counted it at all: across three brands on 2026-08-04
472
+ * it held one `:Workflow` node and zero `:WorkflowRun` rows, and three Cypher
473
+ * sessions across three bolt ports were the only way to learn it.
474
+ *
475
+ * `ok=false` in exactly one case: `active > 0` and `runs30d = 0`. An account
476
+ * with no workflows reports zeros and `ok=true`, because having none is not a
477
+ * fault. An account carrying an active workflow that has never run is the
478
+ * dark-engine signature this audit exists to name. A draft workflow never fails
479
+ * the check: it is not armed, so it is not expected to have run.
480
+ *
481
+ * The trash predicate matches every query the workflows plugin makes
482
+ * (workflow-list.ts:33, workflow-runs.ts:40-41); a trashed workflow counted as
483
+ * active would produce a permanent false `ok=false`.
484
+ *
485
+ * `r.startedAt` is a Z-suffixed `toISOString` (workflow-execute.ts:355), the
486
+ * only writer, so the lexical `>=` against the cutoff is exact, `max()` is
487
+ * genuinely the latest run, and `Date.parse` on the winner always parses.
488
+ *
489
+ * Every construct in the query below is copied from a live in-tree twin
490
+ * (workflow-runs.ts:49-57) EXCEPT `max()`, which appears in no other Cypher in
491
+ * this tree. That is a considered exception to the rule ROUTINE_COLS states,
492
+ * not an oversight: the rule there is a blast-radius argument — a syntax error
493
+ * in that shared projection 503s every routine query — and this audit is a
494
+ * single guarded read whose failure emits one named line and costs the sweep
495
+ * nothing else.
496
+ *
497
+ * One line per local account per tick, including every healthy one and every
498
+ * account with nothing. Never throws (honours the sweep's contract); an
499
+ * unreadable census emits `op=workflow-census-error` INSTEAD of the count line
500
+ * and never alongside it, so a database that is down is never read as an
501
+ * account with nothing in it.
502
+ */
503
+ export async function auditWorkflowCensus(driver, localAccountIds, nowMs) {
504
+ if (localAccountIds.length === 0)
505
+ return;
506
+ const session = driver.session();
507
+ try {
508
+ const since30d = new Date(nowMs - 30 * 24 * 60 * 60 * 1000).toISOString();
509
+ const res = await session.run(`MATCH (w:Workflow)
510
+ WHERE w.accountId IN $localAccountIds
511
+ AND (NOT w:Trashed AND w.deletedAt IS NULL)
512
+ OPTIONAL MATCH (r:WorkflowRun)-[:RUN_OF]->(w)
513
+ WHERE (NOT r:Trashed AND r.deletedAt IS NULL)
514
+ RETURN w.accountId AS accountId, w.workflowId AS workflowId, w.status AS status,
515
+ count(CASE WHEN r.startedAt >= $since30d THEN 1 END) AS runs30d,
516
+ max(r.startedAt) AS lastRunAt`, { localAccountIds, since30d });
517
+ const tally = new Map();
518
+ for (const accountId of localAccountIds) {
519
+ tally.set(accountId, { workflows: 0, active: 0, runs30d: 0, lastRunAt: null });
520
+ }
521
+ for (const rec of res.records) {
522
+ const accountId = rec.get("accountId");
523
+ const acc = tally.get(accountId);
524
+ if (!acc)
525
+ continue;
526
+ acc.workflows++;
527
+ if (rec.get("status") === "active")
528
+ acc.active++;
529
+ acc.runs30d += num(rec.get("runs30d"));
530
+ const lastRunAt = (rec.get("lastRunAt") ?? null);
531
+ // Both sides are Z-suffixed toISOString, so the string compare is the
532
+ // instant compare.
533
+ if (lastRunAt !== null && (acc.lastRunAt === null || lastRunAt > acc.lastRunAt)) {
534
+ acc.lastRunAt = lastRunAt;
535
+ }
536
+ }
537
+ // Driven by localAccountIds, not by the result rows: an account with no
538
+ // workflows returns none, and skipping it would make "healthy" and "not
539
+ // looked at" the same silence.
540
+ for (const accountId of localAccountIds) {
541
+ const c = tally.get(accountId);
542
+ const lastRunAge = c.lastRunAt === null
543
+ ? "never"
544
+ : String(Math.floor((nowMs - Date.parse(c.lastRunAt)) / 86_400_000));
545
+ const ok = !(c.active > 0 && c.runs30d === 0);
546
+ console.error(`[schedule-audit] op=workflow-census acct=${accountId.slice(0, 8)} ` +
547
+ `workflows=${c.workflows} active=${c.active} runs30d=${c.runs30d} ` +
548
+ `lastRunAge=${lastRunAge} ok=${ok}`);
549
+ }
550
+ }
551
+ catch (err) {
552
+ console.error(`[schedule-audit] op=workflow-census-error detail=${err instanceof Error ? err.message : String(err)}`);
553
+ }
554
+ finally {
555
+ try {
556
+ await session.close();
557
+ }
558
+ catch {
559
+ // ignore
560
+ }
561
+ }
562
+ }
427
563
  /**
428
564
  * Task 2383 — how the fleet's recurring agent routines answered the gate
429
565
  * question.
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-audit.js","sourceRoot":"","sources":["../../src/lib/schedule-audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-audit.js","sourceRoot":"","sources":["../../src/lib/schedule-audit.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,10 @@ import { chooseDispatchMode, dispatchAgentTurn, runStandingAudit, auditSelfCance
40
40
  // cannot be imported by a test.
41
41
  import { callPluginTool, evaluateGate, PluginToolError } from "../lib/gate.js";
42
42
  // Task 2381 adds auditConnectorResolution beside Task 2378's two gate audits;
43
- // Task 2380 adds auditFireRateCensus and Task 2383 auditGateClassification.
44
- import { auditConnectorResolution, auditGateAlwaysSkipping, auditGateWatermarkAge, auditFireRateCensus, auditGateClassification, } from "../lib/schedule-audit.js";
43
+ // Task 2380 adds auditFireRateCensus and Task 2383 auditGateClassification;
44
+ // Task 2405 widens the fire-rate census to both rails and adds
45
+ // auditWorkflowCensus beside it.
46
+ import { auditConnectorResolution, auditGateAlwaysSkipping, auditGateWatermarkAge, auditFireRateCensus, auditGateClassification, auditWorkflowCensus, } from "../lib/schedule-audit.js";
45
47
  import { spawn } from "node:child_process";
46
48
  import { shouldRunSentSweep, SENT_SWEEP_INTERVAL_MS, } from "../lib/sent-sweep-throttle.js";
47
49
  import { openRoutineRun, closeRoutineRun, logRunDispatch } from "../lib/routine-run.js";
@@ -915,6 +917,19 @@ async function main() {
915
917
  console.error(`[schedule-audit] op=fire-rate-census-error detail=${err instanceof Error ? err.message : String(err)}`);
916
918
  errors++;
917
919
  }
920
+ // --- Workflow census (Task 2405) ---
921
+ // Sits beside the fire-rate census because the two answer one question
922
+ // together: the census counts the two dispatch rails a routine can sit on,
923
+ // and this counts the third destination work is moving toward. Nothing
924
+ // counted `:WorkflowRun` before this, so an engine installed and never run
925
+ // was indistinguishable from one that was not installed.
926
+ try {
927
+ await auditWorkflowCensus(driver, localAccountIds, Date.parse(now));
928
+ }
929
+ catch (err) {
930
+ console.error(`[schedule-audit] op=workflow-census-error detail=${err instanceof Error ? err.message : String(err)}`);
931
+ errors++;
932
+ }
918
933
  // --- Plugin lifecycle reconciliation ---
919
934
  try {
920
935
  await reconcilePluginLifecycles(driver);