crewly 1.20.185 → 1.20.187

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 (279) hide show
  1. package/config/skills/agent/core/remember/SKILL.md +1 -0
  2. package/config/skills/agent/core/remember/execute.sh +12 -0
  3. package/config/skills/agent/core/report-status/SKILL.md +7 -1
  4. package/config/skills/agent/core/report-status/execute.sh +41 -0
  5. package/config/skills/agent/core/slack-post/SKILL.md +1 -0
  6. package/config/skills/agent/core/slack-post/execute.sh +9 -2
  7. package/config/skills/team-leader/_common/lib.sh +45 -0
  8. package/config/skills/team-leader/start-agent/SKILL.md +6 -6
  9. package/config/skills/team-leader/start-agent/execute.sh +3 -12
  10. package/config/skills/team-leader/stop-agent/SKILL.md +6 -6
  11. package/config/skills/team-leader/stop-agent/execute.sh +3 -12
  12. package/dist/backend/backend/src/constants.d.ts +64 -0
  13. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  14. package/dist/backend/backend/src/constants.js +64 -0
  15. package/dist/backend/backend/src/constants.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +62 -0
  18. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/request/open-items.controller.js +1 -1
  20. package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -1
  21. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/slack/slack.controller.js +4 -1
  23. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +18 -1
  25. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/standing/standing.controller.js +77 -4
  27. package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/system/spend.controller.d.ts +32 -0
  29. package/dist/backend/backend/src/controllers/system/spend.controller.d.ts.map +1 -0
  30. package/dist/backend/backend/src/controllers/system/spend.controller.js +100 -0
  31. package/dist/backend/backend/src/controllers/system/spend.controller.js.map +1 -0
  32. package/dist/backend/backend/src/controllers/system/system.controller.d.ts +12 -0
  33. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  34. package/dist/backend/backend/src/controllers/system/system.controller.js +28 -3
  35. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  36. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +7 -0
  37. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  38. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +64 -1
  39. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  40. package/dist/backend/backend/src/index.d.ts.map +1 -1
  41. package/dist/backend/backend/src/index.js +59 -0
  42. package/dist/backend/backend/src/index.js.map +1 -1
  43. package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
  44. package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
  45. package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
  46. package/dist/backend/backend/src/scripts/open-items-stale-followups.d.ts +51 -0
  47. package/dist/backend/backend/src/scripts/open-items-stale-followups.d.ts.map +1 -0
  48. package/dist/backend/backend/src/scripts/open-items-stale-followups.js +142 -0
  49. package/dist/backend/backend/src/scripts/open-items-stale-followups.js.map +1 -0
  50. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/agent/agent-registration.service.js +32 -1
  52. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  53. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +9 -0
  54. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/decisions/decision.service.js +37 -1
  56. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  57. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts +28 -0
  58. package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/event-bus/event-bus.service.js +83 -2
  60. package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  61. package/dist/backend/backend/src/services/memory/memory.service.d.ts +14 -2
  62. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/memory/memory.service.js +12 -1
  64. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  65. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts +18 -1
  66. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/memory/project-memory.service.js +38 -1
  68. package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
  69. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +11 -0
  70. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
  71. package/dist/backend/backend/src/services/memory/standing-answers.service.js +40 -2
  72. package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -1
  73. package/dist/backend/backend/src/services/messaging/offline-agent-message.d.ts +70 -0
  74. package/dist/backend/backend/src/services/messaging/offline-agent-message.d.ts.map +1 -0
  75. package/dist/backend/backend/src/services/messaging/offline-agent-message.js +92 -0
  76. package/dist/backend/backend/src/services/messaging/offline-agent-message.js.map +1 -0
  77. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts +5 -1
  78. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +11 -2
  80. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  81. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts.map +1 -1
  82. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js +2 -0
  83. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js.map +1 -1
  84. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +9 -1
  86. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  87. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +41 -1
  88. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  89. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +87 -2
  90. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  91. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +30 -12
  92. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  93. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +83 -13
  94. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  95. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +25 -0
  96. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  97. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +45 -1
  98. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  99. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts +10 -1
  100. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/open-items/open-item-extractor.js +86 -5
  102. package/dist/backend/backend/src/services/open-items/open-item-extractor.js.map +1 -1
  103. package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts +2 -1
  104. package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/open-items/open-items-backfill.js +17 -6
  106. package/dist/backend/backend/src/services/open-items/open-items-backfill.js.map +1 -1
  107. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +62 -1
  108. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  109. package/dist/backend/backend/src/services/open-items/open-items.service.js +203 -9
  110. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  111. package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.d.ts +40 -0
  112. package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.d.ts.map +1 -0
  113. package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.js +82 -0
  114. package/dist/backend/backend/src/services/reconciler/idle-holder-surfacer.js.map +1 -0
  115. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +29 -0
  116. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +49 -0
  118. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  119. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +6 -11
  121. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  122. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +23 -0
  123. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +55 -1
  125. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -1
  127. package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +10 -4
  128. package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -1
  129. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts +13 -2
  130. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
  131. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js +19 -5
  132. package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
  133. package/dist/backend/backend/src/services/spend/spend-cap-command.d.ts +99 -0
  134. package/dist/backend/backend/src/services/spend/spend-cap-command.d.ts.map +1 -0
  135. package/dist/backend/backend/src/services/spend/spend-cap-command.js +190 -0
  136. package/dist/backend/backend/src/services/spend/spend-cap-command.js.map +1 -0
  137. package/dist/backend/backend/src/services/spend/spend-cap.gate.d.ts +64 -0
  138. package/dist/backend/backend/src/services/spend/spend-cap.gate.d.ts.map +1 -0
  139. package/dist/backend/backend/src/services/spend/spend-cap.gate.js +71 -0
  140. package/dist/backend/backend/src/services/spend/spend-cap.gate.js.map +1 -0
  141. package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +225 -0
  142. package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -0
  143. package/dist/backend/backend/src/services/spend/spend-cap.service.js +503 -0
  144. package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -0
  145. package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts +85 -0
  146. package/dist/backend/backend/src/services/spend/spend-cap.store.d.ts.map +1 -0
  147. package/dist/backend/backend/src/services/spend/spend-cap.store.js +95 -0
  148. package/dist/backend/backend/src/services/spend/spend-cap.store.js.map +1 -0
  149. package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts +50 -0
  150. package/dist/backend/backend/src/services/spend/spend-cap.wiring.d.ts.map +1 -0
  151. package/dist/backend/backend/src/services/spend/spend-cap.wiring.js +98 -0
  152. package/dist/backend/backend/src/services/spend/spend-cap.wiring.js.map +1 -0
  153. package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts +124 -0
  154. package/dist/backend/backend/src/services/spend/spend-ledger.service.d.ts.map +1 -0
  155. package/dist/backend/backend/src/services/spend/spend-ledger.service.js +189 -0
  156. package/dist/backend/backend/src/services/spend/spend-ledger.service.js.map +1 -0
  157. package/dist/backend/backend/src/services/task-pool/claim-target-waker.d.ts +51 -0
  158. package/dist/backend/backend/src/services/task-pool/claim-target-waker.d.ts.map +1 -0
  159. package/dist/backend/backend/src/services/task-pool/claim-target-waker.js +43 -0
  160. package/dist/backend/backend/src/services/task-pool/claim-target-waker.js.map +1 -0
  161. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +38 -0
  162. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +73 -1
  164. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  165. package/dist/backend/backend/src/services/task-pool/work-item-usage.d.ts +44 -0
  166. package/dist/backend/backend/src/services/task-pool/work-item-usage.d.ts.map +1 -0
  167. package/dist/backend/backend/src/services/task-pool/work-item-usage.js +37 -0
  168. package/dist/backend/backend/src/services/task-pool/work-item-usage.js.map +1 -0
  169. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  170. package/dist/backend/backend/src/services/v3/v3-data.service.js +11 -14
  171. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  172. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +25 -0
  173. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +50 -0
  175. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  176. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +9 -1
  177. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/workflow/scheduler.service.js +16 -2
  179. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  180. package/dist/backend/backend/src/types/decision.types.d.ts +5 -1
  181. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  182. package/dist/backend/backend/src/types/event-bus.types.d.ts +9 -1
  183. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  184. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  185. package/dist/backend/backend/src/types/review-reason.types.d.ts +3 -1
  186. package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -1
  187. package/dist/backend/backend/src/types/review-reason.types.js +1 -0
  188. package/dist/backend/backend/src/types/review-reason.types.js.map +1 -1
  189. package/dist/backend/backend/src/types/v2/open-item.types.d.ts +5 -1
  190. package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  191. package/dist/backend/backend/src/types/v2/open-item.types.js +1 -1
  192. package/dist/backend/backend/src/types/v2/open-item.types.js.map +1 -1
  193. package/dist/backend/build-info.json +2 -2
  194. package/dist/cli/backend/src/constants.d.ts +64 -0
  195. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  196. package/dist/cli/backend/src/constants.js +64 -0
  197. package/dist/cli/backend/src/constants.js.map +1 -1
  198. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  199. package/dist/cli/backend/src/services/agent/agent-registration.service.js +32 -1
  200. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  201. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +9 -0
  202. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  203. package/dist/cli/backend/src/services/decisions/decision.service.js +37 -1
  204. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  205. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts +28 -0
  206. package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
  207. package/dist/cli/backend/src/services/event-bus/event-bus.service.js +83 -2
  208. package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
  209. package/dist/cli/backend/src/services/memory/memory.service.d.ts +14 -2
  210. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  211. package/dist/cli/backend/src/services/memory/memory.service.js +12 -1
  212. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  213. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +18 -1
  214. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  215. package/dist/cli/backend/src/services/memory/project-memory.service.js +38 -1
  216. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
  217. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +11 -0
  218. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
  219. package/dist/cli/backend/src/services/memory/standing-answers.service.js +40 -2
  220. package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -1
  221. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts +5 -1
  222. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  223. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +11 -2
  224. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  225. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  226. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +9 -1
  227. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  228. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +41 -1
  229. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  230. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +87 -2
  231. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  232. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +30 -12
  233. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  234. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +83 -13
  235. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  236. package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts +97 -0
  237. package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts.map +1 -0
  238. package/dist/cli/backend/src/services/monitoring/model-pricing.js +120 -0
  239. package/dist/cli/backend/src/services/monitoring/model-pricing.js.map +1 -0
  240. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +25 -0
  241. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  242. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +45 -1
  243. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  244. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts +10 -1
  245. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -1
  246. package/dist/cli/backend/src/services/open-items/open-item-extractor.js +86 -5
  247. package/dist/cli/backend/src/services/open-items/open-item-extractor.js.map +1 -1
  248. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts +13 -2
  249. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
  250. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js +19 -5
  251. package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
  252. package/dist/cli/backend/src/services/spend/spend-cap.gate.d.ts +64 -0
  253. package/dist/cli/backend/src/services/spend/spend-cap.gate.d.ts.map +1 -0
  254. package/dist/cli/backend/src/services/spend/spend-cap.gate.js +71 -0
  255. package/dist/cli/backend/src/services/spend/spend-cap.gate.js.map +1 -0
  256. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +38 -0
  257. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  258. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +73 -1
  259. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  260. package/dist/cli/backend/src/services/task-pool/work-item-usage.d.ts +44 -0
  261. package/dist/cli/backend/src/services/task-pool/work-item-usage.d.ts.map +1 -0
  262. package/dist/cli/backend/src/services/task-pool/work-item-usage.js +37 -0
  263. package/dist/cli/backend/src/services/task-pool/work-item-usage.js.map +1 -0
  264. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  265. package/dist/cli/backend/src/services/v3/v3-data.service.js +11 -14
  266. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
  267. package/dist/cli/backend/src/types/decision.types.d.ts +5 -1
  268. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
  269. package/dist/cli/backend/src/types/event-bus.types.d.ts +9 -1
  270. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  271. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  272. package/dist/cli/backend/src/types/v2/open-item.types.d.ts +5 -1
  273. package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  274. package/dist/cli/backend/src/types/v2/open-item.types.js +1 -1
  275. package/dist/cli/backend/src/types/v2/open-item.types.js.map +1 -1
  276. package/frontend/dist/assets/{index-1ee8a9a2.js → index-15c2faf2.js} +279 -279
  277. package/frontend/dist/assets/{index-a79c7852.css → index-20a67829.css} +1 -1
  278. package/frontend/dist/index.html +2 -2
  279. package/package.json +1 -1
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Spend cap gate — the process-wide hook the delivery and wake paths ask
3
+ * "may this agent start a new turn?". Kept apart from the service so the
4
+ * hot paths (agent registration, the orc queue processor, the owner-message
5
+ * watchdog) import a tiny module with no dependencies of its own.
6
+ *
7
+ * specs/2026-10-02-spend-cap.md
8
+ *
9
+ * @module services/spend/spend-cap.gate
10
+ */
11
+ let gate = null;
12
+ /**
13
+ * Install (or clear) the gate.
14
+ *
15
+ * @param next - Gate, or null
16
+ */
17
+ export function setSpendCapGate(next) {
18
+ gate = next;
19
+ }
20
+ /**
21
+ * The stop in force for a session. Never throws: a broken gate lets the
22
+ * agent run rather than silently dropping its work.
23
+ *
24
+ * @param session - Agent session
25
+ * @returns Stop, or null
26
+ */
27
+ export function spendCapStopOf(session) {
28
+ try {
29
+ return gate?.stopOf(session) ?? null;
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ /**
36
+ * Owner-facing name of a session.
37
+ *
38
+ * @param session - Agent session
39
+ * @returns Name (the session name when unknown)
40
+ */
41
+ export function spendCapNameOf(session) {
42
+ try {
43
+ return gate?.displayNameOf?.(session) || session;
44
+ }
45
+ catch {
46
+ return session;
47
+ }
48
+ }
49
+ /**
50
+ * USD for owner text.
51
+ *
52
+ * @param usd - Amount
53
+ * @returns e.g. `$5.00`
54
+ */
55
+ export function formatUsd(usd) {
56
+ return `$${(Math.round(usd * 100) / 100).toFixed(2)}`;
57
+ }
58
+ /**
59
+ * The one-line reason, e.g. "Orc hit its daily spend cap ($5.00)".
60
+ *
61
+ * @param stop - The stop
62
+ * @param name - Owner-facing name (default: looked up)
63
+ * @returns Reason text
64
+ */
65
+ export function spendCapReason(stop, name = spendCapNameOf(stop.session)) {
66
+ if (stop.scope === 'total') {
67
+ return `${name} is stopped: all agents together hit the daily total spend cap (${formatUsd(stop.capUsd)})`;
68
+ }
69
+ return `${name} hit its daily spend cap (${formatUsd(stop.capUsd)})`;
70
+ }
71
+ //# sourceMappingURL=spend-cap.gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spend-cap.gate.js","sourceRoot":"","sources":["../../../../../../backend/src/services/spend/spend-cap.gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqBH,IAAI,IAAI,GAAwB,IAAI,CAAC;AAErC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB;IACvD,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAe,EAAE,OAAe,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;IACzF,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,GAAG,IAAI,mEAAmE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7G,CAAC;IACD,OAAO,GAAG,IAAI,6BAA6B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACvE,CAAC"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Per-agent daily spend cap with a hard stop.
3
+ *
4
+ * - Caps are the owner's own limits (unlike the runtime fallback, which
5
+ * reacts to a provider's usage limit). All are OFF until the owner sets
6
+ * one: a default per-agent cap, per-agent overrides, and an optional
7
+ * all-agents daily total.
8
+ * - At {@link SPEND_CAP_CONSTANTS.WARN_FRACTION} of a cap the owner gets ONE
9
+ * heads-up.
10
+ * - At 100% the agent is hard-stopped: {@link stopOf} answers the delivery
11
+ * and wake gates, so no new turn starts (the current one may finish) and
12
+ * messages stay queued. The owner gets ONE decision card: "Raise to $Y
13
+ * today" / "Keep stopped".
14
+ * - Local midnight resets everything; raises last for the day they were
15
+ * made. When a stop lifts (midnight, raise, cap change) the queued
16
+ * messages are released.
17
+ *
18
+ * Spend comes from {@link SpendLedger} (the shared token ledger and its one
19
+ * cost computation).
20
+ *
21
+ * specs/2026-10-02-spend-cap.md
22
+ *
23
+ * @module services/spend/spend-cap.service
24
+ */
25
+ import type { OwnerDecision } from '../../types/decision.types.js';
26
+ import type { SystemAskInput } from '../decisions/decision.service.js';
27
+ import { type SpendCapGate, type SpendStop } from './spend-cap.gate.js';
28
+ import { type SpendLedger, type SpendSummary } from './spend-ledger.service.js';
29
+ import { type SpendCapConfig, type SpendCapStoreLike } from './spend-cap.store.js';
30
+ /** Minimal logger. */
31
+ export interface SpendCapLogger {
32
+ info(message: string, meta?: Record<string, unknown>): void;
33
+ warn(message: string, meta?: Record<string, unknown>): void;
34
+ }
35
+ /** The decision-card calls the service makes. */
36
+ export interface SpendCapDecisions {
37
+ askSystem(input: SystemAskInput): Promise<OwnerDecision>;
38
+ replyInThread(id: string, text: string): Promise<boolean>;
39
+ }
40
+ /** Collaborators. */
41
+ export interface SpendCapServiceDeps {
42
+ store: SpendCapStoreLike;
43
+ ledger: Pick<SpendLedger, 'spentToday' | 'totalToday' | 'summarize' | 'invalidate'>;
44
+ /** One line to the owner (Slack DM from this machine's orc bot); false/throw = not sent */
45
+ notifyOwner: (text: string) => Promise<unknown>;
46
+ /** Decision cards (null before they are wired: the stop is then a plain notice) */
47
+ decisions?: () => SpendCapDecisions | null;
48
+ /** Owner-facing name of a session ("Orc", "Ella") */
49
+ displayNameOf?: (session: string) => string;
50
+ /** Sessions the owner configured (orc + team members), for the caps view */
51
+ knownSessions?: () => Promise<string[]>;
52
+ /** Stops lifted: deliver what was queued for these sessions */
53
+ onReleased?: (sessions: string[]) => Promise<void>;
54
+ now?: () => Date;
55
+ logger?: SpendCapLogger;
56
+ }
57
+ /** Body of `PUT /api/system/spend/caps`. */
58
+ export interface SpendCapPatch {
59
+ /** Default per-agent cap (USD); null turns it off */
60
+ defaultAgentCapUsd?: number | null;
61
+ /** All-agents total cap (USD); null turns it off */
62
+ totalCapUsd?: number | null;
63
+ /** Session → cap (USD), `null` = no cap for this agent, `"default"` = drop the override */
64
+ agents?: Record<string, number | null | 'default'>;
65
+ }
66
+ /** A rejected cap change. */
67
+ export declare class SpendCapError extends Error {
68
+ readonly status: number;
69
+ /**
70
+ * @param status - HTTP status
71
+ * @param message - Owner-facing reason
72
+ */
73
+ constructor(status: number, message: string);
74
+ }
75
+ /** One agent in the view. */
76
+ export interface SpendCapAgentView {
77
+ session: string;
78
+ name: string;
79
+ runtimes: string[];
80
+ todayUsd: number;
81
+ windowUsd: number;
82
+ daily: number[];
83
+ /** Cap in force today (USD), null = none */
84
+ capUsd: number | null;
85
+ /** Where the cap comes from */
86
+ capSource: 'override' | 'default' | 'raised' | 'none' | 'exempt';
87
+ /** Stopped right now, and why */
88
+ stopped: boolean;
89
+ stopReason?: string;
90
+ }
91
+ /** What `GET /api/system/spend` returns. */
92
+ export interface SpendView extends Omit<SpendSummary, 'agents'> {
93
+ agents: SpendCapAgentView[];
94
+ caps: SpendCapConfig;
95
+ /** Raises in force today: target → USD */
96
+ raisedToday: Record<string, number>;
97
+ /** Total cap in force today (raise included), null = off */
98
+ totalCapTodayUsd: number | null;
99
+ /** Suggested default per-agent cap: last window's p90 agent-day, rounded up to whole dollars (null = no data) */
100
+ suggestedAgentCapUsd: number | null;
101
+ /** All agents together stopped by the total cap */
102
+ totalStopped: boolean;
103
+ }
104
+ /**
105
+ * The "Raise to $Y today" amount: the cap times RAISE_FACTOR, rounded up to
106
+ * whole dollars, and always above what was already spent.
107
+ *
108
+ * @param capUsd - Cap in force
109
+ * @param spentUsd - Spent today
110
+ * @returns USD
111
+ */
112
+ export declare function suggestedRaise(capUsd: number, spentUsd: number): number;
113
+ /**
114
+ * Read the amount out of a "Raise to $Y today" option label.
115
+ *
116
+ * @param label - Option label
117
+ * @returns USD, or null when the label is not a raise
118
+ */
119
+ export declare function raiseAmountOf(label: string | undefined): number | null;
120
+ /**
121
+ * Per-agent daily spend cap service.
122
+ */
123
+ export declare class SpendCapService implements SpendCapGate {
124
+ private readonly deps;
125
+ private file;
126
+ private readonly now;
127
+ private readonly logger;
128
+ private timer;
129
+ /** Sessions stopped at the last evaluation (to release them when the stop lifts) */
130
+ private lastStopped;
131
+ /** Evaluation passes run one after another */
132
+ private chain;
133
+ private queuedPass;
134
+ /**
135
+ * @param deps - Collaborators
136
+ */
137
+ constructor(deps: SpendCapServiceDeps);
138
+ /** Start the enforcement tick. */
139
+ start(): void;
140
+ /** Stop the tick. */
141
+ stop(): void;
142
+ /** @returns The owner's caps (a copy) */
143
+ getConfig(): SpendCapConfig;
144
+ /**
145
+ * Change caps. Takes effect at once (a stop can lift or start).
146
+ *
147
+ * @param patch - Changes
148
+ * @returns The new caps
149
+ * @throws SpendCapError on a bad value
150
+ */
151
+ setCaps(patch: SpendCapPatch): Promise<SpendCapConfig>;
152
+ /**
153
+ * Lift a cap for today only.
154
+ *
155
+ * @param target - Agent session, or `*` for the all-agents total
156
+ * @param usd - New cap for today (must be above today's spend)
157
+ * @returns The new cap for today
158
+ * @throws SpendCapError when the amount is not above today's spend
159
+ */
160
+ raiseToday(target: string, usd: unknown): Promise<number>;
161
+ /**
162
+ * The stop in force for a session (the delivery / wake gate). Synchronous
163
+ * and live: it reads today's spend now, not at the last tick.
164
+ *
165
+ * @param session - Agent session
166
+ * @returns Stop, or null when the agent may run
167
+ */
168
+ stopOf(session: string): SpendStop | null;
169
+ /**
170
+ * Owner-facing name.
171
+ *
172
+ * @param session - Agent session
173
+ * @returns Name
174
+ */
175
+ displayNameOf(session: string): string;
176
+ /**
177
+ * Cap in force today for a target, and where it comes from.
178
+ *
179
+ * @param target - Agent session, or `*`
180
+ * @returns Cap (null = none) and source
181
+ */
182
+ capOf(target: string): {
183
+ capUsd: number | null;
184
+ source: SpendCapAgentView['capSource'];
185
+ };
186
+ /**
187
+ * Spend plus caps for the API / Settings panel.
188
+ *
189
+ * @param days - Window
190
+ * @returns View
191
+ */
192
+ view(days?: number): Promise<SpendView>;
193
+ /**
194
+ * One enforcement pass: day roll, 80% notices, stop announcements (one
195
+ * card per stop), and releasing agents whose stop lifted. Passes run
196
+ * one at a time; a call during a pass gets another pass after it.
197
+ */
198
+ evaluate(): Promise<void>;
199
+ /**
200
+ * React to a settled "cap reached" card (decision kind `spend_cap`).
201
+ *
202
+ * @param d - The settled decision
203
+ * @returns Always null (nobody else is told)
204
+ */
205
+ onSettled(d: OwnerDecision): Promise<null>;
206
+ private evaluateOnce;
207
+ private checkThresholds;
208
+ private announceStop;
209
+ private anyCap;
210
+ private computeStop;
211
+ private stopKey;
212
+ private scheduleEvaluate;
213
+ /** Reset today's bookkeeping when the local day changed. */
214
+ private rollDay;
215
+ private nextMidnight;
216
+ private nameOf;
217
+ private notify;
218
+ private reply;
219
+ private persist;
220
+ }
221
+ /** @returns The backend's service, or null before it is wired */
222
+ export declare function getSpendCapService(): SpendCapService | null;
223
+ /** @param service - Instance (null clears) */
224
+ export declare function setSpendCapService(service: SpendCapService | null): void;
225
+ //# sourceMappingURL=spend-cap.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spend-cap.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/spend/spend-cap.service.ts"],"names":[],"mappings":"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"}