crewly 1.20.181 → 1.20.183

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 (220) hide show
  1. package/config/roles/orchestrator/prompt.md +4 -0
  2. package/config/skills/agent/core/report-status/execute.sh +4 -2
  3. package/dist/backend/backend/src/constants.d.ts +101 -1
  4. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  5. package/dist/backend/backend/src/constants.js +110 -1
  6. package/dist/backend/backend/src/constants.js.map +1 -1
  7. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts.map +1 -1
  8. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js +22 -1
  9. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js.map +1 -1
  10. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  11. package/dist/backend/backend/src/controllers/chat/chat.controller.js +25 -24
  12. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  13. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  14. package/dist/backend/backend/src/controllers/slack/slack.controller.js +15 -0
  15. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +11 -1
  17. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +44 -9
  19. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
  20. package/dist/backend/backend/src/controllers/system/runtime-terms.controller.d.ts +31 -0
  21. package/dist/backend/backend/src/controllers/system/runtime-terms.controller.d.ts.map +1 -0
  22. package/dist/backend/backend/src/controllers/system/runtime-terms.controller.js +99 -0
  23. package/dist/backend/backend/src/controllers/system/runtime-terms.controller.js.map +1 -0
  24. package/dist/backend/backend/src/index.d.ts.map +1 -1
  25. package/dist/backend/backend/src/index.js +4 -0
  26. package/dist/backend/backend/src/index.js.map +1 -1
  27. package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
  28. package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
  29. package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
  30. package/dist/backend/backend/src/services/agent/antigravity-runtime.service.d.ts.map +1 -1
  31. package/dist/backend/backend/src/services/agent/antigravity-runtime.service.js +5 -0
  32. package/dist/backend/backend/src/services/agent/antigravity-runtime.service.js.map +1 -1
  33. package/dist/backend/backend/src/services/decisions/decision-card.d.ts +14 -4
  34. package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/decisions/decision-card.js +31 -10
  36. package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -1
  37. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +40 -2
  38. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  39. package/dist/backend/backend/src/services/decisions/decision.service.js +100 -8
  40. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  41. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/decisions/decision.wiring.js +7 -0
  43. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  44. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +2 -1
  45. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  46. package/dist/backend/backend/src/services/messaging/message-queue.service.js +6 -3
  47. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  48. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +6 -1
  50. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  51. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +3 -1
  52. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +7 -4
  54. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  55. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts +110 -0
  56. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -0
  57. package/dist/backend/backend/src/services/orc/orc-status-router.service.js +229 -0
  58. package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -0
  59. package/dist/backend/backend/src/services/orc/orc-status-routing.d.ts +108 -0
  60. package/dist/backend/backend/src/services/orc/orc-status-routing.d.ts.map +1 -0
  61. package/dist/backend/backend/src/services/orc/orc-status-routing.js +145 -0
  62. package/dist/backend/backend/src/services/orc/orc-status-routing.js.map +1 -0
  63. package/dist/backend/backend/src/services/orc/orc-wake-counter.d.ts +86 -0
  64. package/dist/backend/backend/src/services/orc/orc-wake-counter.d.ts.map +1 -0
  65. package/dist/backend/backend/src/services/orc/orc-wake-counter.js +130 -0
  66. package/dist/backend/backend/src/services/orc/orc-wake-counter.js.map +1 -0
  67. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts +33 -0
  68. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/orc/work-item-destination.js +49 -0
  70. package/dist/backend/backend/src/services/orc/work-item-destination.js.map +1 -1
  71. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts +2 -1
  72. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts.map +1 -1
  73. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js +10 -4
  74. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js.map +1 -1
  75. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -0
  76. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
  77. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +5 -0
  78. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
  79. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +2 -0
  80. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
  81. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +4 -0
  82. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
  83. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +2 -0
  84. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  86. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +3 -0
  88. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
  89. package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts +15 -1
  90. package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.js +13 -2
  92. package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts +92 -0
  94. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts.map +1 -0
  95. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.js +199 -0
  96. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.js.map +1 -0
  97. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts +79 -0
  98. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts.map +1 -0
  99. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.js +145 -0
  100. package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.js.map +1 -0
  101. package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.d.ts +75 -0
  102. package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.d.ts.map +1 -0
  103. package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.js +218 -0
  104. package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.js.map +1 -0
  105. package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts +245 -0
  106. package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts.map +1 -0
  107. package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.js +428 -0
  108. package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.js.map +1 -0
  109. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.d.ts +67 -0
  110. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.d.ts.map +1 -0
  111. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.js +78 -0
  112. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.js.map +1 -0
  113. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.d.ts +39 -0
  114. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.d.ts.map +1 -0
  115. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.js +161 -0
  116. package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.js.map +1 -0
  117. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +16 -0
  118. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  119. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +31 -8
  120. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  121. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts.map +1 -1
  122. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js +2 -0
  123. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js.map +1 -1
  124. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +23 -0
  125. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  126. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +61 -0
  127. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  128. package/dist/backend/backend/src/types/decision.types.d.ts +29 -5
  129. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  130. package/dist/backend/build-info.json +2 -2
  131. package/dist/cli/backend/src/constants.d.ts +101 -1
  132. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  133. package/dist/cli/backend/src/constants.js +110 -1
  134. package/dist/cli/backend/src/constants.js.map +1 -1
  135. package/dist/cli/backend/src/services/agent/antigravity-runtime.service.d.ts.map +1 -1
  136. package/dist/cli/backend/src/services/agent/antigravity-runtime.service.js +5 -0
  137. package/dist/cli/backend/src/services/agent/antigravity-runtime.service.js.map +1 -1
  138. package/dist/cli/backend/src/services/decisions/decision-card.d.ts +165 -0
  139. package/dist/cli/backend/src/services/decisions/decision-card.d.ts.map +1 -0
  140. package/dist/cli/backend/src/services/decisions/decision-card.js +358 -0
  141. package/dist/cli/backend/src/services/decisions/decision-card.js.map +1 -0
  142. package/dist/cli/backend/src/services/decisions/decision-contract.d.ts +83 -0
  143. package/dist/cli/backend/src/services/decisions/decision-contract.d.ts.map +1 -0
  144. package/dist/cli/backend/src/services/decisions/decision-contract.js +226 -0
  145. package/dist/cli/backend/src/services/decisions/decision-contract.js.map +1 -0
  146. package/dist/cli/backend/src/services/decisions/decision-store.d.ts +80 -0
  147. package/dist/cli/backend/src/services/decisions/decision-store.d.ts.map +1 -0
  148. package/dist/cli/backend/src/services/decisions/decision-store.js +151 -0
  149. package/dist/cli/backend/src/services/decisions/decision-store.js.map +1 -0
  150. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +376 -0
  151. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -0
  152. package/dist/cli/backend/src/services/decisions/decision.service.js +821 -0
  153. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -0
  154. package/dist/cli/backend/src/services/decisions/ticket-thread-store.d.ts +97 -0
  155. package/dist/cli/backend/src/services/decisions/ticket-thread-store.d.ts.map +1 -0
  156. package/dist/cli/backend/src/services/decisions/ticket-thread-store.js +137 -0
  157. package/dist/cli/backend/src/services/decisions/ticket-thread-store.js.map +1 -0
  158. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts +2 -1
  159. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  160. package/dist/cli/backend/src/services/messaging/message-queue.service.js +6 -3
  161. package/dist/cli/backend/src/services/messaging/message-queue.service.js.map +1 -1
  162. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  163. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +6 -1
  164. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  165. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +3 -1
  166. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  167. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +7 -4
  168. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  169. package/dist/cli/backend/src/services/orc/orc-status-routing.d.ts +108 -0
  170. package/dist/cli/backend/src/services/orc/orc-status-routing.d.ts.map +1 -0
  171. package/dist/cli/backend/src/services/orc/orc-status-routing.js +145 -0
  172. package/dist/cli/backend/src/services/orc/orc-status-routing.js.map +1 -0
  173. package/dist/cli/backend/src/services/orc/orc-wake-counter.d.ts +86 -0
  174. package/dist/cli/backend/src/services/orc/orc-wake-counter.d.ts.map +1 -0
  175. package/dist/cli/backend/src/services/orc/orc-wake-counter.js +130 -0
  176. package/dist/cli/backend/src/services/orc/orc-wake-counter.js.map +1 -0
  177. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts +198 -0
  178. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts.map +1 -0
  179. package/dist/cli/backend/src/services/orc/work-item-destination.js +288 -0
  180. package/dist/cli/backend/src/services/orc/work-item-destination.js.map +1 -0
  181. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +136 -0
  182. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -0
  183. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +152 -0
  184. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -0
  185. package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts +217 -0
  186. package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts.map +1 -0
  187. package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.js +430 -0
  188. package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.js.map +1 -0
  189. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts +92 -0
  190. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts.map +1 -0
  191. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.js +199 -0
  192. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.js.map +1 -0
  193. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts +79 -0
  194. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts.map +1 -0
  195. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.js +145 -0
  196. package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.js.map +1 -0
  197. package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts +245 -0
  198. package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts.map +1 -0
  199. package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.js +428 -0
  200. package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.js.map +1 -0
  201. package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.d.ts +67 -0
  202. package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.d.ts.map +1 -0
  203. package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.js +78 -0
  204. package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.js.map +1 -0
  205. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +16 -0
  206. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  207. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +31 -8
  208. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  209. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +23 -0
  210. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  211. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +61 -0
  212. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  213. package/dist/cli/backend/src/types/decision.types.d.ts +192 -0
  214. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -0
  215. package/dist/cli/backend/src/types/decision.types.js +13 -0
  216. package/dist/cli/backend/src/types/decision.types.js.map +1 -0
  217. package/dist/cli/cli/src/commands/harness-setup.js +2 -2
  218. package/frontend/dist/assets/{index-4271e95e.js → index-9c91de50.js} +138 -138
  219. package/frontend/dist/index.html +1 -1
  220. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"orc-delivery-enforcer.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/orc-delivery-enforcer.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orc-delivery-enforcer.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/orc-delivery-enforcer.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Carries out {@link planOrcStatusRoute}: wakes the orchestrator, hands a
3
+ * report to the sender's lead, records it, or holds it for the 30-minute
4
+ * digest (specs/2026-10-01-orc-status-wakes.md).
5
+ *
6
+ * @module services/orc/orc-status-router.service
7
+ */
8
+ import type { EnqueueMessageInput } from '../../types/messaging.types.js';
9
+ import type { Team } from '../../types/index.js';
10
+ import type { WorkItem } from '../../types/v2/work-item.types.js';
11
+ import { type OrcStatusRoute } from './orc-status-routing.js';
12
+ import { OrcWakeCounter } from './orc-wake-counter.js';
13
+ /** Collaborators (all injectable for tests). */
14
+ export interface OrcStatusRouterDeps {
15
+ /** Queue a message (orchestrator, or `targetSession` for a lead) */
16
+ enqueue: ((input: EnqueueMessageInput) => unknown) | null;
17
+ /** Task pool items */
18
+ poolItems(): Promise<WorkItem[]>;
19
+ /** Every team */
20
+ teams(): Promise<Team[]>;
21
+ /** Orchestrator check */
22
+ isOrchestrator(name: string): boolean;
23
+ /** Clock */
24
+ now(): number;
25
+ /** Hourly counter */
26
+ counter: OrcWakeCounter;
27
+ }
28
+ /** One status report to route. */
29
+ export interface OrcStatusReport {
30
+ /** Report text */
31
+ content: string;
32
+ /** Reporting agent session */
33
+ sender: string;
34
+ /** Conversation the report was filed under (orchestrator turns keep it) */
35
+ conversationId: string;
36
+ /** Work item the report named, if any */
37
+ workItemId?: string;
38
+ /** The owner is waiting on the orchestrator to deliver this */
39
+ deliveryOwed: boolean;
40
+ /** The text as the orchestrator should see it (clipped) */
41
+ orcText: string;
42
+ }
43
+ /** A report held for the next digest. */
44
+ interface DigestEntry {
45
+ sender: string;
46
+ text: string;
47
+ actionable: boolean;
48
+ at: number;
49
+ }
50
+ /** Routes agent status reports; one per process. */
51
+ export declare class OrcStatusRouterService {
52
+ private readonly deps;
53
+ private static instance;
54
+ private readonly logger;
55
+ private digest;
56
+ private digestTimer;
57
+ /**
58
+ * @param deps - Collaborators
59
+ */
60
+ constructor(deps: OrcStatusRouterDeps);
61
+ /** The process-wide router, with the real collaborators. */
62
+ static getInstance(): OrcStatusRouterService;
63
+ /**
64
+ * Replace the singleton (tests, boot wiring).
65
+ *
66
+ * @param router - The router, or null to drop it
67
+ */
68
+ static setInstance(router: OrcStatusRouterService | null): void;
69
+ /**
70
+ * Wire the message queue and start the hourly counter log.
71
+ *
72
+ * @param enqueue - MessageQueueService.enqueue (bound), or null to unwire
73
+ */
74
+ setEnqueue(enqueue: ((input: EnqueueMessageInput) => unknown) | null): void;
75
+ /** Stop timers (pending digest entries are dropped). */
76
+ stop(): void;
77
+ /**
78
+ * Route one report.
79
+ *
80
+ * @param report - The report
81
+ * @returns What was done
82
+ */
83
+ route(report: OrcStatusReport): Promise<OrcStatusRoute>;
84
+ /**
85
+ * Hold a report for the digest; the first entry opens a window that
86
+ * closes {@link ORC_WAKE_CONSTANTS.DIGEST_INTERVAL_MS} later, so digests
87
+ * go out at most that often.
88
+ *
89
+ * @param entry - The report
90
+ */
91
+ private addToDigest;
92
+ /** Entries waiting for the next digest (copy). */
93
+ pendingDigest(): ReadonlyArray<Readonly<DigestEntry>>;
94
+ /**
95
+ * Close the digest window: send one orchestrator turn when any entry is
96
+ * actionable, otherwise drop them all.
97
+ *
98
+ * @returns The digest text, or null when nothing was sent
99
+ */
100
+ flushDigest(): string | null;
101
+ /**
102
+ * Queue a message; false when there is no queue or it refused.
103
+ *
104
+ * @param input - Message
105
+ * @returns Whether it was queued
106
+ */
107
+ private enqueue;
108
+ }
109
+ export {};
110
+ //# sourceMappingURL=orc-status-router.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orc-status-router.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/orc-status-router.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAIlE,OAAO,EAA0C,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1D,sBAAsB;IACtB,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjC,iBAAiB;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,yBAAyB;IACzB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,YAAY;IACZ,GAAG,IAAI,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,YAAY,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yCAAyC;AACzC,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAYD,oDAAoD;AACpD,qBAAa,sBAAsB;IASrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAA+B;IAElD;;OAEG;gBAC0B,IAAI,EAAE,mBAAmB;IAItD,4DAA4D;IAC5D,MAAM,CAAC,WAAW,IAAI,sBAAsB;IAO5C;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAK/D;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI;IAK3E,wDAAwD;IACxD,IAAI,IAAI,IAAI;IAKZ;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAiD7D;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAUnB,kDAAkD;IAClD,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAIrD;;;;;OAKG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IA2B5B;;;;;OAKG;IACH,OAAO,CAAC,OAAO;CAUhB"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Carries out {@link planOrcStatusRoute}: wakes the orchestrator, hands a
3
+ * report to the sender's lead, records it, or holds it for the 30-minute
4
+ * digest (specs/2026-10-01-orc-status-wakes.md).
5
+ *
6
+ * @module services/orc/orc-status-router.service
7
+ */
8
+ import { MESSAGE_SOURCES, ORC_WAKE_CONSTANTS } from '../../constants.js';
9
+ import { pickTeamLead } from '../../utils/team.utils.js';
10
+ import { leadAbove } from '../task-pool/untargeted-router.js';
11
+ import { LoggerService } from '../core/logger.service.js';
12
+ import { findStatusWorkItem, planOrcStatusRoute } from './orc-status-routing.js';
13
+ import { OrcWakeCounter } from './orc-wake-counter.js';
14
+ import { isOrchestratorSender } from './orc-delivery-enforcer.service.js';
15
+ /**
16
+ * Session of a team member (permanent agent id first, like the pool).
17
+ *
18
+ * @param m - Member
19
+ * @returns Session name
20
+ */
21
+ function sessionOf(m) {
22
+ return m?.agentId || m?.sessionName || undefined;
23
+ }
24
+ /** Routes agent status reports; one per process. */
25
+ export class OrcStatusRouterService {
26
+ deps;
27
+ static instance = null;
28
+ logger;
29
+ digest = [];
30
+ digestTimer = null;
31
+ /**
32
+ * @param deps - Collaborators
33
+ */
34
+ constructor(deps) {
35
+ this.deps = deps;
36
+ this.logger = LoggerService.getInstance().createComponentLogger('OrcStatusRouter');
37
+ }
38
+ /** The process-wide router, with the real collaborators. */
39
+ static getInstance() {
40
+ if (!OrcStatusRouterService.instance) {
41
+ OrcStatusRouterService.instance = new OrcStatusRouterService(defaultDeps());
42
+ }
43
+ return OrcStatusRouterService.instance;
44
+ }
45
+ /**
46
+ * Replace the singleton (tests, boot wiring).
47
+ *
48
+ * @param router - The router, or null to drop it
49
+ */
50
+ static setInstance(router) {
51
+ OrcStatusRouterService.instance?.stop();
52
+ OrcStatusRouterService.instance = router;
53
+ }
54
+ /**
55
+ * Wire the message queue and start the hourly counter log.
56
+ *
57
+ * @param enqueue - MessageQueueService.enqueue (bound), or null to unwire
58
+ */
59
+ setEnqueue(enqueue) {
60
+ this.deps.enqueue = enqueue;
61
+ if (enqueue)
62
+ this.deps.counter.start();
63
+ }
64
+ /** Stop timers (pending digest entries are dropped). */
65
+ stop() {
66
+ if (this.digestTimer)
67
+ clearTimeout(this.digestTimer);
68
+ this.digestTimer = null;
69
+ }
70
+ /**
71
+ * Route one report.
72
+ *
73
+ * @param report - The report
74
+ * @returns What was done
75
+ */
76
+ async route(report) {
77
+ const now = this.deps.now();
78
+ const [items, teams] = await Promise.all([
79
+ this.deps.poolItems().catch(() => []),
80
+ this.deps.teams().catch(() => []),
81
+ ]);
82
+ const workItem = findStatusWorkItem(items, report.sender, report.workItemId, now);
83
+ const lead = leadAbove(report.sender, teams);
84
+ const senderIsLead = teams.some((t) => (t.members ?? []).some((m) => sessionOf(m) === report.sender || m.sessionName === report.sender) && sessionOf(pickTeamLead(t)) === report.sender);
85
+ const route = planOrcStatusRoute({
86
+ content: report.content,
87
+ sender: report.sender,
88
+ workItem,
89
+ lead,
90
+ senderIsLead,
91
+ deliveryOwed: report.deliveryOwed,
92
+ isOrchestrator: this.deps.isOrchestrator,
93
+ });
94
+ const logCtx = { sender: report.sender, workItemId: workItem?.id, preview: report.content.slice(0, 80) };
95
+ switch (route.action) {
96
+ case 'record':
97
+ this.logger.info('Agent status recorded — orchestrator not woken', { ...logCtx, reason: route.reason });
98
+ break;
99
+ case 'orc':
100
+ if (this.enqueue({ content: `Agent status: ${report.orcText}`, conversationId: report.conversationId, source: MESSAGE_SOURCES.SYSTEM_EVENT, sourceMetadata: { [ORC_WAKE_CONSTANTS.WAKE_CATEGORY_KEY]: route.category } })) {
101
+ this.deps.counter.noteRouted(route.category);
102
+ }
103
+ this.logger.info('Agent status routed to orchestrator', { ...logCtx, category: route.category, reason: route.reason });
104
+ break;
105
+ case 'team-lead': {
106
+ const sent = this.enqueue({
107
+ content: `Status from ${report.sender} (reports to you): ${report.orcText}`,
108
+ conversationId: ORC_WAKE_CONSTANTS.TEAM_LEAD_CONVERSATION_ID,
109
+ source: MESSAGE_SOURCES.SYSTEM_EVENT,
110
+ targetSession: route.lead,
111
+ sourceMetadata: { kind: 'agent-status', sender: report.sender, ...(workItem ? { workItemId: workItem.id } : {}) },
112
+ });
113
+ this.logger.info(sent ? 'Agent status routed to its team lead' : 'Agent status could not be queued for its team lead', { ...logCtx, lead: route.lead, reason: route.reason });
114
+ break;
115
+ }
116
+ case 'digest':
117
+ this.addToDigest({ sender: report.sender, text: report.content, actionable: route.actionable, at: now });
118
+ this.logger.info('Agent status held for the orchestrator digest', { ...logCtx, actionable: route.actionable, reason: route.reason });
119
+ break;
120
+ }
121
+ return route;
122
+ }
123
+ /**
124
+ * Hold a report for the digest; the first entry opens a window that
125
+ * closes {@link ORC_WAKE_CONSTANTS.DIGEST_INTERVAL_MS} later, so digests
126
+ * go out at most that often.
127
+ *
128
+ * @param entry - The report
129
+ */
130
+ addToDigest(entry) {
131
+ this.digest.push(entry);
132
+ if (this.digestTimer)
133
+ return;
134
+ this.digestTimer = setTimeout(() => {
135
+ this.digestTimer = null;
136
+ this.flushDigest();
137
+ }, ORC_WAKE_CONSTANTS.DIGEST_INTERVAL_MS);
138
+ this.digestTimer.unref?.();
139
+ }
140
+ /** Entries waiting for the next digest (copy). */
141
+ pendingDigest() {
142
+ return [...this.digest];
143
+ }
144
+ /**
145
+ * Close the digest window: send one orchestrator turn when any entry is
146
+ * actionable, otherwise drop them all.
147
+ *
148
+ * @returns The digest text, or null when nothing was sent
149
+ */
150
+ flushDigest() {
151
+ const entries = this.digest;
152
+ this.digest = [];
153
+ if (this.digestTimer)
154
+ clearTimeout(this.digestTimer);
155
+ this.digestTimer = null;
156
+ const actionable = entries.filter((e) => e.actionable);
157
+ if (actionable.length === 0) {
158
+ if (entries.length > 0)
159
+ this.logger.info('Status digest dropped — nothing for the orchestrator to act on', { reports: entries.length });
160
+ return null;
161
+ }
162
+ const max = ORC_WAKE_CONSTANTS.DIGEST_MAX_LINES;
163
+ const lines = actionable.slice(0, max).map((e) => `- ${e.sender}: ${clipLine(e.text)}`);
164
+ const more = actionable.length - lines.length;
165
+ const recorded = entries.length - actionable.length;
166
+ const text = [
167
+ `[STATUS DIGEST] ${actionable.length} agent report(s) since the last digest that may need you:`,
168
+ ...lines,
169
+ ...(more > 0 ? [`- …and ${more} more`] : []),
170
+ ...(recorded > 0 ? [`(${recorded} other report(s) were recorded for their team leads; nothing to do.)`] : []),
171
+ ].join('\n');
172
+ if (this.enqueue({ content: text, conversationId: ORC_WAKE_CONSTANTS.DIGEST_CONVERSATION_ID, source: MESSAGE_SOURCES.SYSTEM_EVENT, sourceMetadata: { [ORC_WAKE_CONSTANTS.WAKE_CATEGORY_KEY]: 'digest' } })) {
173
+ this.deps.counter.noteRouted('digest');
174
+ }
175
+ this.logger.info('Status digest sent to the orchestrator', { actionable: actionable.length, recorded });
176
+ return text;
177
+ }
178
+ /**
179
+ * Queue a message; false when there is no queue or it refused.
180
+ *
181
+ * @param input - Message
182
+ * @returns Whether it was queued
183
+ */
184
+ enqueue(input) {
185
+ if (!this.deps.enqueue)
186
+ return false;
187
+ try {
188
+ this.deps.enqueue(input);
189
+ return true;
190
+ }
191
+ catch (err) {
192
+ this.logger.warn('Could not queue agent status', { error: err instanceof Error ? err.message : String(err), target: input.targetSession ?? 'orchestrator' });
193
+ return false;
194
+ }
195
+ }
196
+ }
197
+ /**
198
+ * One digest line: first line of the report, clipped.
199
+ *
200
+ * @param text - Report
201
+ * @returns Line
202
+ */
203
+ function clipLine(text) {
204
+ const flat = text.replace(/\s+/g, ' ').trim();
205
+ const max = ORC_WAKE_CONSTANTS.DIGEST_LINE_CHARS;
206
+ return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
207
+ }
208
+ /**
209
+ * The real collaborators (lazy imports keep the module light).
210
+ *
211
+ * @returns Deps
212
+ */
213
+ function defaultDeps() {
214
+ return {
215
+ enqueue: null,
216
+ poolItems: async () => {
217
+ const { TaskPoolService } = await import('../task-pool/task-pool.service.js');
218
+ return TaskPoolService.getInstance().getAllItems();
219
+ },
220
+ teams: async () => {
221
+ const { StorageService } = await import('../core/storage.service.js');
222
+ return StorageService.getInstance().getTeams();
223
+ },
224
+ isOrchestrator: (name) => isOrchestratorSender(name),
225
+ now: () => Date.now(),
226
+ counter: OrcWakeCounter.getInstance(),
227
+ };
228
+ }
229
+ //# sourceMappingURL=orc-status-router.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orc-status-router.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/orc-status-router.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Who an agent status report wakes (specs/2026-10-01-orc-status-wakes.md).
3
+ *
4
+ * Every `report-status` line used to be queued for the orchestrator. On
5
+ * 2026-09-29 that was 134 full-context orchestrator turns, almost all of them
6
+ * team members' [DONE] lines about work their own team lead owns and reviews.
7
+ * Now the report goes to whoever is responsible:
8
+ *
9
+ * | Report | Goes to |
10
+ * |---|---|
11
+ * | [IN_PROGRESS] [ACTIVE] [READY] [WORKING] [IDLE] … | recorded only |
12
+ * | [DONE] that a pending owner delivery is waiting for | orchestrator |
13
+ * | [DONE] on work the orchestrator delegated | orchestrator |
14
+ * | [DONE] on anyone else's work item | recorded (the lead's review path takes it) |
15
+ * | [DONE] with no work item | digest (actionable only without a lead) |
16
+ * | [BLOCKED] [FAILED] [ERROR] | the sender's lead; orchestrator when there is none or the lead sent it |
17
+ * | [MILESTONE] | orchestrator (it forwards milestones to the owner) |
18
+ * | other markers | digest (actionable only on orchestrator work or without a lead) |
19
+ * | no marker (an answer someone waits for) | orchestrator, as before |
20
+ *
21
+ * Pure functions only; {@link OrcStatusRouterService} carries out the plan.
22
+ *
23
+ * @module services/orc/orc-status-routing
24
+ */
25
+ import type { WorkItem } from '../../types/v2/work-item.types.js';
26
+ /** Why the orchestrator is woken (the hourly counter's categories). */
27
+ export type OrcWakeCategory = 'owner' | 'delegated-done' | 'escalation' | 'digest' | 'other';
28
+ /** What happens to one status report. */
29
+ export type OrcStatusRoute =
30
+ /** Status store / UI / ticket log only */
31
+ {
32
+ action: 'record';
33
+ reason: string;
34
+ }
35
+ /** Wake the orchestrator now */
36
+ | {
37
+ action: 'orc';
38
+ category: Exclude<OrcWakeCategory, 'digest'>;
39
+ reason: string;
40
+ }
41
+ /** Hand it to the sender's team lead */
42
+ | {
43
+ action: 'team-lead';
44
+ lead: string;
45
+ reason: string;
46
+ }
47
+ /** Hold for the next digest; only actionable entries make a digest go out */
48
+ | {
49
+ action: 'digest';
50
+ actionable: boolean;
51
+ reason: string;
52
+ };
53
+ /** Inputs of {@link planOrcStatusRoute}. */
54
+ export interface OrcStatusRouteInput {
55
+ /** The report text (`[DONE] Agent x: …`) */
56
+ content: string;
57
+ /** Reporting agent session */
58
+ sender: string;
59
+ /** The work item the report is about, when known */
60
+ workItem: WorkItem | null;
61
+ /** The sender's lead (parent member, else team lead), never the sender itself */
62
+ lead: string | null;
63
+ /** True when the sender leads its own team (reason text only; a lead with a parent still reports up) */
64
+ senderIsLead: boolean;
65
+ /** True when the owner is waiting on the orchestrator to deliver this (OrcDeliveryEnforcer tracked it) */
66
+ deliveryOwed: boolean;
67
+ /** Orchestrator check for a session / name */
68
+ isOrchestrator: (name: string) => boolean;
69
+ }
70
+ /**
71
+ * The bracketed marker a report starts with, upper-cased.
72
+ *
73
+ * @param content - Report text
74
+ * @returns e.g. `DONE`, or null when the text has no leading marker
75
+ */
76
+ export declare function statusMarkerOf(content: string): string | null;
77
+ /**
78
+ * Whether the orchestrator delegated (or created) a work item: its owner is
79
+ * the orchestrator, or the orchestrator stamped itself as the delegator.
80
+ *
81
+ * @param wi - Work item
82
+ * @param isOrchestrator - Orchestrator check
83
+ * @returns True for orchestrator work
84
+ */
85
+ export declare function isOrcDelegated(wi: WorkItem, isOrchestrator: (name: string) => boolean): boolean;
86
+ /**
87
+ * The work item a report is about: the one it names; else the sender's
88
+ * running/accepted item (newest); else the sender's most recently finished
89
+ * item, when it finished within {@link ORC_WAKE_CONSTANTS.RECENT_COMPLETION_MS}.
90
+ *
91
+ * `report-status` posts the line BEFORE it completes the item, so the
92
+ * running item is normally the answer.
93
+ *
94
+ * @param items - Pool items
95
+ * @param sender - Reporting agent
96
+ * @param workItemId - Id the report named, if any
97
+ * @param now - Clock (epoch ms)
98
+ * @returns The item, or null
99
+ */
100
+ export declare function findStatusWorkItem(items: readonly WorkItem[], sender: string, workItemId: string | undefined, now: number): WorkItem | null;
101
+ /**
102
+ * Decide where one agent status report goes.
103
+ *
104
+ * @param input - Report, sender, its work item and lead
105
+ * @returns The route
106
+ */
107
+ export declare function planOrcStatusRoute(input: OrcStatusRouteInput): OrcStatusRoute;
108
+ //# sourceMappingURL=orc-status-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orc-status-routing.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/orc-status-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,gBAAgB,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7F,yCAAyC;AACzC,MAAM,MAAM,cAAc;AACxB,0CAA0C;AACxC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACtC,gCAAgC;GAC9B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACjF,wCAAwC;GACtC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACvD,6EAA6E;GAC3E;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,iFAAiF;IACjF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,wGAAwG;IACxG,YAAY,EAAE,OAAO,CAAC;IACtB,0GAA0G;IAC1G,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAQ/F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,GACV,QAAQ,GAAG,IAAI,CA0BjB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA2C7E"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Who an agent status report wakes (specs/2026-10-01-orc-status-wakes.md).
3
+ *
4
+ * Every `report-status` line used to be queued for the orchestrator. On
5
+ * 2026-09-29 that was 134 full-context orchestrator turns, almost all of them
6
+ * team members' [DONE] lines about work their own team lead owns and reviews.
7
+ * Now the report goes to whoever is responsible:
8
+ *
9
+ * | Report | Goes to |
10
+ * |---|---|
11
+ * | [IN_PROGRESS] [ACTIVE] [READY] [WORKING] [IDLE] … | recorded only |
12
+ * | [DONE] that a pending owner delivery is waiting for | orchestrator |
13
+ * | [DONE] on work the orchestrator delegated | orchestrator |
14
+ * | [DONE] on anyone else's work item | recorded (the lead's review path takes it) |
15
+ * | [DONE] with no work item | digest (actionable only without a lead) |
16
+ * | [BLOCKED] [FAILED] [ERROR] | the sender's lead; orchestrator when there is none or the lead sent it |
17
+ * | [MILESTONE] | orchestrator (it forwards milestones to the owner) |
18
+ * | other markers | digest (actionable only on orchestrator work or without a lead) |
19
+ * | no marker (an answer someone waits for) | orchestrator, as before |
20
+ *
21
+ * Pure functions only; {@link OrcStatusRouterService} carries out the plan.
22
+ *
23
+ * @module services/orc/orc-status-routing
24
+ */
25
+ import { ORC_WAKE_CONSTANTS } from '../../constants.js';
26
+ /**
27
+ * The bracketed marker a report starts with, upper-cased.
28
+ *
29
+ * @param content - Report text
30
+ * @returns e.g. `DONE`, or null when the text has no leading marker
31
+ */
32
+ export function statusMarkerOf(content) {
33
+ const m = /^\s*\[([A-Za-z_ ]{2,40})\]/.exec(content ?? '');
34
+ return m ? m[1].trim().toUpperCase() : null;
35
+ }
36
+ /**
37
+ * Whether the orchestrator delegated (or created) a work item: its owner is
38
+ * the orchestrator, or the orchestrator stamped itself as the delegator.
39
+ *
40
+ * @param wi - Work item
41
+ * @param isOrchestrator - Orchestrator check
42
+ * @returns True for orchestrator work
43
+ */
44
+ export function isOrcDelegated(wi, isOrchestrator) {
45
+ if (wi.owner === 'orchestrator')
46
+ return true;
47
+ const meta = (wi.metadata ?? {});
48
+ for (const key of ['delegatedBy', 'createdBy']) {
49
+ const v = meta[key];
50
+ if (typeof v === 'string' && v && isOrchestrator(v))
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ /**
56
+ * The work item a report is about: the one it names; else the sender's
57
+ * running/accepted item (newest); else the sender's most recently finished
58
+ * item, when it finished within {@link ORC_WAKE_CONSTANTS.RECENT_COMPLETION_MS}.
59
+ *
60
+ * `report-status` posts the line BEFORE it completes the item, so the
61
+ * running item is normally the answer.
62
+ *
63
+ * @param items - Pool items
64
+ * @param sender - Reporting agent
65
+ * @param workItemId - Id the report named, if any
66
+ * @param now - Clock (epoch ms)
67
+ * @returns The item, or null
68
+ */
69
+ export function findStatusWorkItem(items, sender, workItemId, now) {
70
+ if (workItemId) {
71
+ const named = items.find((wi) => wi.id === workItemId);
72
+ if (named)
73
+ return named;
74
+ }
75
+ let running = null;
76
+ let runningAt = -Infinity;
77
+ let finished = null;
78
+ let finishedAt = -Infinity;
79
+ for (const wi of items) {
80
+ if (wi.target !== sender)
81
+ continue;
82
+ if (wi.status === 'running' || wi.status === 'accepted') {
83
+ const at = Date.parse(wi.startedAt ?? wi.createdAt) || 0;
84
+ if (at > runningAt) {
85
+ running = wi;
86
+ runningAt = at;
87
+ }
88
+ continue;
89
+ }
90
+ const doneAt = Date.parse(wi.completedAt ?? '') || 0;
91
+ if (doneAt && now - doneAt <= ORC_WAKE_CONSTANTS.RECENT_COMPLETION_MS && doneAt > finishedAt) {
92
+ finished = wi;
93
+ finishedAt = doneAt;
94
+ }
95
+ }
96
+ return running ?? finished;
97
+ }
98
+ /**
99
+ * Decide where one agent status report goes.
100
+ *
101
+ * @param input - Report, sender, its work item and lead
102
+ * @returns The route
103
+ */
104
+ export function planOrcStatusRoute(input) {
105
+ const { content, sender, workItem, lead, senderIsLead, deliveryOwed, isOrchestrator } = input;
106
+ const marker = statusMarkerOf(content);
107
+ const hasLead = Boolean(lead) && lead !== sender && !isOrchestrator(String(lead));
108
+ if (ORC_WAKE_CONSTANTS.RECORD_ONLY_MARKERS.test(content)) {
109
+ return { action: 'record', reason: `progress marker [${marker}]` };
110
+ }
111
+ if (deliveryOwed) {
112
+ return { action: 'orc', category: 'owner', reason: 'the owner is waiting on the orchestrator to deliver this' };
113
+ }
114
+ if (!marker) {
115
+ return { action: 'orc', category: 'other', reason: 'not a status line — someone may be waiting for this answer' };
116
+ }
117
+ if (ORC_WAKE_CONSTANTS.ALWAYS_ORC_MARKERS.test(content)) {
118
+ return { action: 'orc', category: 'other', reason: `[${marker}] is forwarded to the owner by the orchestrator` };
119
+ }
120
+ const orcWork = workItem ? isOrcDelegated(workItem, isOrchestrator) : false;
121
+ if (ORC_WAKE_CONSTANTS.DONE_MARKERS.test(content)) {
122
+ if (workItem && orcWork) {
123
+ return { action: 'orc', category: 'delegated-done', reason: `work item ${workItem.id} was delegated by the orchestrator` };
124
+ }
125
+ if (workItem) {
126
+ return { action: 'record', reason: `work item ${workItem.id} is owned by ${workItem.owner}; its review path takes the [DONE]` };
127
+ }
128
+ return hasLead
129
+ ? { action: 'digest', actionable: false, reason: `no work item; ${sender} reports to ${lead}` }
130
+ : { action: 'digest', actionable: true, reason: `no work item and no lead above ${sender}` };
131
+ }
132
+ if (ORC_WAKE_CONSTANTS.ATTENTION_MARKERS.test(content)) {
133
+ if (hasLead && lead)
134
+ return { action: 'team-lead', lead, reason: `[${marker}] goes to ${sender}'s lead first` };
135
+ return { action: 'orc', category: 'escalation', reason: senderIsLead ? `[${marker}] from a team lead` : `[${marker}] and ${sender} has no lead` };
136
+ }
137
+ // Structured reports and unknown markers.
138
+ const actionable = orcWork || !hasLead;
139
+ return {
140
+ action: 'digest',
141
+ actionable,
142
+ reason: actionable ? `[${marker}] ${orcWork ? 'on orchestrator work' : 'from an agent with no lead'}` : `[${marker}] on work its lead owns`,
143
+ };
144
+ }
145
+ //# sourceMappingURL=orc-status-routing.js.map