crewly 1.20.182 → 1.20.184

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 (212) 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 +79 -0
  4. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  5. package/dist/backend/backend/src/constants.js +79 -0
  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/request/open-items.controller.d.ts +25 -0
  14. package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts.map +1 -0
  15. package/dist/backend/backend/src/controllers/request/open-items.controller.js +68 -0
  16. package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -0
  17. package/dist/backend/backend/src/controllers/request/request.routes.d.ts +2 -0
  18. package/dist/backend/backend/src/controllers/request/request.routes.d.ts.map +1 -1
  19. package/dist/backend/backend/src/controllers/request/request.routes.js +6 -0
  20. package/dist/backend/backend/src/controllers/request/request.routes.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 +15 -0
  23. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  24. package/dist/backend/backend/src/index.d.ts.map +1 -1
  25. package/dist/backend/backend/src/index.js +57 -1
  26. package/dist/backend/backend/src/index.js.map +1 -1
  27. package/dist/backend/backend/src/scripts/open-items-backfill.d.ts +16 -0
  28. package/dist/backend/backend/src/scripts/open-items-backfill.d.ts.map +1 -0
  29. package/dist/backend/backend/src/scripts/open-items-backfill.js +112 -0
  30. package/dist/backend/backend/src/scripts/open-items-backfill.js.map +1 -0
  31. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/agent-registration.service.js +4 -2
  33. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  34. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +9 -0
  35. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  36. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +11 -0
  37. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  38. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  39. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  40. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +20 -0
  41. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  42. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +8 -1
  43. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/decisions/decision.service.js +12 -2
  45. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  46. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +2 -1
  47. package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  48. package/dist/backend/backend/src/services/messaging/message-queue.service.js +6 -3
  49. package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
  50. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +6 -1
  52. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  53. package/dist/backend/backend/src/services/open-items/open-item-card.d.ts +66 -0
  54. package/dist/backend/backend/src/services/open-items/open-item-card.d.ts.map +1 -0
  55. package/dist/backend/backend/src/services/open-items/open-item-card.js +208 -0
  56. package/dist/backend/backend/src/services/open-items/open-item-card.js.map +1 -0
  57. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts +114 -0
  58. package/dist/backend/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -0
  59. package/dist/backend/backend/src/services/open-items/open-item-extractor.js +394 -0
  60. package/dist/backend/backend/src/services/open-items/open-item-extractor.js.map +1 -0
  61. package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts +70 -0
  62. package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts.map +1 -0
  63. package/dist/backend/backend/src/services/open-items/open-items-backfill.js +147 -0
  64. package/dist/backend/backend/src/services/open-items/open-items-backfill.js.map +1 -0
  65. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +332 -0
  66. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -0
  67. package/dist/backend/backend/src/services/open-items/open-items.service.js +785 -0
  68. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -0
  69. package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts +44 -0
  70. package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts.map +1 -0
  71. package/dist/backend/backend/src/services/open-items/open-items.wiring.js +172 -0
  72. package/dist/backend/backend/src/services/open-items/open-items.wiring.js.map +1 -0
  73. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +3 -1
  74. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +7 -4
  76. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  77. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts +110 -0
  78. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -0
  79. package/dist/backend/backend/src/services/orc/orc-status-router.service.js +229 -0
  80. package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -0
  81. package/dist/backend/backend/src/services/orc/orc-status-routing.d.ts +108 -0
  82. package/dist/backend/backend/src/services/orc/orc-status-routing.d.ts.map +1 -0
  83. package/dist/backend/backend/src/services/orc/orc-status-routing.js +145 -0
  84. package/dist/backend/backend/src/services/orc/orc-status-routing.js.map +1 -0
  85. package/dist/backend/backend/src/services/orc/orc-wake-counter.d.ts +86 -0
  86. package/dist/backend/backend/src/services/orc/orc-wake-counter.d.ts.map +1 -0
  87. package/dist/backend/backend/src/services/orc/orc-wake-counter.js +130 -0
  88. package/dist/backend/backend/src/services/orc/orc-wake-counter.js.map +1 -0
  89. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts +33 -0
  90. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/orc/work-item-destination.js +49 -0
  92. package/dist/backend/backend/src/services/orc/work-item-destination.js.map +1 -1
  93. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts +2 -1
  94. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts.map +1 -1
  95. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js +10 -4
  96. package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js.map +1 -1
  97. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +4 -0
  99. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  100. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +16 -0
  101. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  102. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +31 -8
  103. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  104. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js +2 -0
  106. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js.map +1 -1
  107. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +23 -0
  108. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  109. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +61 -0
  110. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  111. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/v3/request.service.js +15 -1
  113. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  114. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  115. package/dist/backend/backend/src/services/v3/ticket-review.service.js +5 -1
  116. package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
  117. package/dist/backend/backend/src/types/decision.types.d.ts +15 -1
  118. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  119. package/dist/backend/backend/src/types/v2/index.d.ts +2 -0
  120. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  121. package/dist/backend/backend/src/types/v2/index.js +1 -0
  122. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  123. package/dist/backend/backend/src/types/v2/open-item.types.d.ts +73 -0
  124. package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -0
  125. package/dist/backend/backend/src/types/v2/open-item.types.js +14 -0
  126. package/dist/backend/backend/src/types/v2/open-item.types.js.map +1 -0
  127. package/dist/backend/backend/src/types/v2/request.types.d.ts +22 -1
  128. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  129. package/dist/backend/backend/src/types/v2/request.types.js +10 -5
  130. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  131. package/dist/backend/build-info.json +2 -2
  132. package/dist/cli/backend/src/constants.d.ts +79 -0
  133. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  134. package/dist/cli/backend/src/constants.js +79 -0
  135. package/dist/cli/backend/src/constants.js.map +1 -1
  136. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  137. package/dist/cli/backend/src/services/agent/agent-registration.service.js +4 -2
  138. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  139. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +9 -0
  140. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  141. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +11 -0
  142. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  143. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
  144. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  145. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +20 -0
  146. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  147. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +8 -1
  148. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  149. package/dist/cli/backend/src/services/decisions/decision.service.js +12 -2
  150. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  151. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts +2 -1
  152. package/dist/cli/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
  153. package/dist/cli/backend/src/services/messaging/message-queue.service.js +6 -3
  154. package/dist/cli/backend/src/services/messaging/message-queue.service.js.map +1 -1
  155. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  156. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +6 -1
  157. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  158. package/dist/cli/backend/src/services/open-items/open-item-card.d.ts +66 -0
  159. package/dist/cli/backend/src/services/open-items/open-item-card.d.ts.map +1 -0
  160. package/dist/cli/backend/src/services/open-items/open-item-card.js +208 -0
  161. package/dist/cli/backend/src/services/open-items/open-item-card.js.map +1 -0
  162. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts +114 -0
  163. package/dist/cli/backend/src/services/open-items/open-item-extractor.d.ts.map +1 -0
  164. package/dist/cli/backend/src/services/open-items/open-item-extractor.js +394 -0
  165. package/dist/cli/backend/src/services/open-items/open-item-extractor.js.map +1 -0
  166. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +3 -1
  167. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  168. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +7 -4
  169. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  170. package/dist/cli/backend/src/services/orc/orc-status-routing.d.ts +108 -0
  171. package/dist/cli/backend/src/services/orc/orc-status-routing.d.ts.map +1 -0
  172. package/dist/cli/backend/src/services/orc/orc-status-routing.js +145 -0
  173. package/dist/cli/backend/src/services/orc/orc-status-routing.js.map +1 -0
  174. package/dist/cli/backend/src/services/orc/orc-wake-counter.d.ts +86 -0
  175. package/dist/cli/backend/src/services/orc/orc-wake-counter.d.ts.map +1 -0
  176. package/dist/cli/backend/src/services/orc/orc-wake-counter.js +130 -0
  177. package/dist/cli/backend/src/services/orc/orc-wake-counter.js.map +1 -0
  178. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts +198 -0
  179. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts.map +1 -0
  180. package/dist/cli/backend/src/services/orc/work-item-destination.js +288 -0
  181. package/dist/cli/backend/src/services/orc/work-item-destination.js.map +1 -0
  182. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +16 -0
  183. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  184. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +31 -8
  185. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  186. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +23 -0
  187. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  188. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +61 -0
  189. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  190. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  191. package/dist/cli/backend/src/services/v3/request.service.js +15 -1
  192. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  193. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  194. package/dist/cli/backend/src/services/v3/ticket-review.service.js +5 -1
  195. package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
  196. package/dist/cli/backend/src/types/decision.types.d.ts +15 -1
  197. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
  198. package/dist/cli/backend/src/types/v2/index.d.ts +2 -0
  199. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  200. package/dist/cli/backend/src/types/v2/index.js +1 -0
  201. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  202. package/dist/cli/backend/src/types/v2/open-item.types.d.ts +73 -0
  203. package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -0
  204. package/dist/cli/backend/src/types/v2/open-item.types.js +14 -0
  205. package/dist/cli/backend/src/types/v2/open-item.types.js.map +1 -0
  206. package/dist/cli/backend/src/types/v2/request.types.d.ts +22 -1
  207. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  208. package/dist/cli/backend/src/types/v2/request.types.js +10 -5
  209. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  210. package/frontend/dist/assets/{index-9c91de50.js → index-a6cb8533.js} +265 -265
  211. package/frontend/dist/index.html +1 -1
  212. package/package.json +1 -1
@@ -0,0 +1,288 @@
1
+ /**
2
+ * Where an agent's answer goes, decided by the WORK it is answering
3
+ * (specs/2026-10-01-decision-cards.md §6).
4
+ *
5
+ * Incident: Atlas posted the output of a scheduled task ("steveswiki 第一次季度
6
+ * 回看…") into an unrelated #pro-think-tank thread. The 1.20.170 `reply` sent
7
+ * every answer to "the thread the agent was last asked in", and a cron run
8
+ * has no asker — so the last owner thread, however old, won.
9
+ *
10
+ * Now each work item carries its own origin and the answer follows it:
11
+ *
12
+ * | Work | Destination |
13
+ * |---|---|
14
+ * | owner asked (newest, < 2 h) | that conversation / thread (turn origin) |
15
+ * | ticket work | the ticket's Slack thread (created on first post) |
16
+ * | trigger / cron / auto work | the trigger's `destination`, else a NEW top-level post in the team channel |
17
+ * | no current work | a NEW top-level post in the team channel |
18
+ *
19
+ * Pure functions only; the effects live in `work-item-destination.wiring.ts`.
20
+ *
21
+ * @module services/orc/work-item-destination
22
+ */
23
+ import { WORK_ITEM_DESTINATION_CONSTANTS } from '../../constants.js';
24
+ import { parseSlackThreadKey } from '../slack/slack-thread-key.js';
25
+ /** Statuses in which a work item is the agent's current work. */
26
+ const CURRENT_STATUSES = new Set(['running', 'accepted']);
27
+ /**
28
+ * Build the origin stamped on a trigger- or cron-created work item.
29
+ *
30
+ * @param input - Trigger/cron ids, its destination, team and a topic
31
+ * @returns The origin (topic shortened to one line)
32
+ */
33
+ export function buildTriggerOrigin(input) {
34
+ return {
35
+ kind: 'trigger',
36
+ ...(input.triggerId ? { triggerId: input.triggerId } : {}),
37
+ ...(input.cronTaskId ? { cronTaskId: input.cronTaskId } : {}),
38
+ ...(input.destination?.trim() ? { destination: input.destination.trim() } : {}),
39
+ ...(input.teamId ? { teamId: input.teamId } : {}),
40
+ topic: shortTopic(input.topic),
41
+ };
42
+ }
43
+ /**
44
+ * One-line topic, capped at {@link WORK_ITEM_DESTINATION_CONSTANTS.TOPIC_MAX_CHARS}.
45
+ *
46
+ * @param text - Any text
47
+ * @returns Single line, possibly shortened with an ellipsis
48
+ */
49
+ export function shortTopic(text) {
50
+ const flat = String(text ?? '').replace(/\s+/g, ' ').trim();
51
+ const max = WORK_ITEM_DESTINATION_CONSTANTS.TOPIC_MAX_CHARS;
52
+ return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
53
+ }
54
+ /**
55
+ * The agent's current work item: the newest (by start) item targeted at it
56
+ * that is running or accepted.
57
+ *
58
+ * @param items - Pool items
59
+ * @param session - Agent session
60
+ * @returns The item, or null
61
+ */
62
+ export function currentWorkItemOf(items, session) {
63
+ let best = null;
64
+ let bestAt = -Infinity;
65
+ for (const wi of items) {
66
+ if (wi.target !== session || !CURRENT_STATUSES.has(wi.status))
67
+ continue;
68
+ const at = startOf(wi);
69
+ if (at > bestAt) {
70
+ best = wi;
71
+ bestAt = at;
72
+ }
73
+ }
74
+ return best;
75
+ }
76
+ /**
77
+ * When a work item started (else when it was created).
78
+ *
79
+ * @param wi - Work item
80
+ * @returns Epoch ms (0 when unreadable)
81
+ */
82
+ function startOf(wi) {
83
+ return Date.parse(wi.startedAt ?? '') || Date.parse(wi.createdAt) || 0;
84
+ }
85
+ /**
86
+ * The origin of a work item: its stamped `metadata.origin`, else what its
87
+ * other fields say (a linked project ticket, a trigger, a cron task).
88
+ *
89
+ * @param wi - Work item
90
+ * @returns The origin, or null when nothing tells where it came from
91
+ */
92
+ export function originOfWorkItem(wi) {
93
+ const meta = (wi.metadata ?? {});
94
+ const stamped = meta[WORK_ITEM_DESTINATION_CONSTANTS.METADATA_KEY];
95
+ if (isWorkItemOrigin(stamped))
96
+ return stamped;
97
+ const link = meta.projectTicket;
98
+ if (link && typeof link.projectPath === 'string' && typeof link.id === 'string') {
99
+ return {
100
+ kind: 'ticket',
101
+ projectPath: link.projectPath,
102
+ ticketId: link.id,
103
+ ...(typeof meta.teamId === 'string' ? { teamId: meta.teamId } : {}),
104
+ };
105
+ }
106
+ if (wi.triggerId)
107
+ return buildTriggerOrigin({ triggerId: wi.triggerId, topic: wi.title });
108
+ if (meta.source === 'cron') {
109
+ return buildTriggerOrigin({
110
+ ...(typeof meta.cronTaskId === 'string' ? { cronTaskId: meta.cronTaskId } : {}),
111
+ ...(typeof meta.targetTeamId === 'string' ? { teamId: meta.targetTeamId } : {}),
112
+ topic: wi.description ?? wi.title,
113
+ });
114
+ }
115
+ return null;
116
+ }
117
+ /**
118
+ * The origin an owner turn gives the work started from it.
119
+ *
120
+ * @param turn - The owner's turn origin (OrcReplyRouteService)
121
+ * @returns An owner origin
122
+ */
123
+ export function ownerOriginFromTurn(turn) {
124
+ const key = parseSlackThreadKey(turn.slackThreadKey);
125
+ const slackChannelId = key?.slackChannelId ?? turn.slackChannelId;
126
+ const threadTs = key?.threadTs ?? turn.slackThreadTs;
127
+ return {
128
+ kind: 'owner',
129
+ conversationId: turn.conversationId,
130
+ ...(slackChannelId ? { slackChannelId } : {}),
131
+ ...(threadTs ? { threadTs } : {}),
132
+ ...(turn.chatThreadId ? { chatThreadId: turn.chatThreadId } : {}),
133
+ };
134
+ }
135
+ /**
136
+ * The origin a new work item inherits (owner request → delegate → verify /
137
+ * retry / subtask). Incident 2026-10-01: Atlas delegated the owner's
138
+ * #morning-brief question to Sage; Sage's [DONE] made a verify item for
139
+ * Atlas with no origin, and the answer's file landed in an unrelated thread.
140
+ *
141
+ * Order: an origin already stamped wins (null = keep it); then the parent's;
142
+ * then the creator's current owner request; then the creator's current
143
+ * work item's.
144
+ *
145
+ * @param input - New item, its parent, the creator's current work
146
+ * @returns The origin to stamp, or null (nothing to inherit / already stamped)
147
+ */
148
+ export function inheritedOrigin(input) {
149
+ const meta = (input.workItem.metadata ?? {});
150
+ if (isWorkItemOrigin(meta[WORK_ITEM_DESTINATION_CONSTANTS.METADATA_KEY]))
151
+ return null;
152
+ if (input.parent) {
153
+ const fromParent = originOfWorkItem(input.parent);
154
+ if (fromParent)
155
+ return fromParent;
156
+ }
157
+ const dest = input.creatorDestination;
158
+ if (dest?.kind === 'owner-origin')
159
+ return ownerOriginFromTurn(dest.origin);
160
+ if (input.creatorWorkItem)
161
+ return originOfWorkItem(input.creatorWorkItem);
162
+ return null;
163
+ }
164
+ /**
165
+ * Shape check for a stamped origin.
166
+ *
167
+ * @param value - Anything
168
+ * @returns True for a {@link WorkItemOrigin}
169
+ */
170
+ export function isWorkItemOrigin(value) {
171
+ if (!value || typeof value !== 'object')
172
+ return false;
173
+ const v = value;
174
+ if (v.kind === 'owner')
175
+ return true;
176
+ if (v.kind === 'ticket')
177
+ return typeof v.projectPath === 'string' && typeof v.ticketId === 'string';
178
+ if (v.kind === 'trigger')
179
+ return typeof v.topic === 'string';
180
+ return false;
181
+ }
182
+ /**
183
+ * Split a trigger destination into a post target and an optional thread.
184
+ *
185
+ * @param destination - `#name`, `C…` or `C…:<ts>`
186
+ * @returns Target + thread, or null when unreadable
187
+ */
188
+ export function parseDestination(destination) {
189
+ const d = destination.trim();
190
+ const thread = /^([CG][A-Z0-9]{6,}):(\d{6,}\.\d+)$/.exec(d);
191
+ if (thread)
192
+ return { target: thread[1], threadTs: thread[2] };
193
+ if (/^[CG][A-Z0-9]{6,}$/.test(d))
194
+ return { target: d };
195
+ if (/^#[a-z0-9][a-z0-9._-]*$/.test(d))
196
+ return { target: d };
197
+ return null;
198
+ }
199
+ /**
200
+ * Decide where the answer to the agent's current work goes.
201
+ *
202
+ * The current work is the newer of the running work item and the last owner
203
+ * message — the owner message only counts while it is fresh
204
+ * ({@link WORK_ITEM_DESTINATION_CONSTANTS.OWNER_ORIGIN_FRESH_MS}).
205
+ *
206
+ * @param input - Current work item, owner origin, clock
207
+ * @returns The destination
208
+ */
209
+ export function planWorkDestination(input) {
210
+ const { workItem, ownerOrigin, now } = input;
211
+ const ownerFresh = !!ownerOrigin && now - ownerOrigin.receivedAt < WORK_ITEM_DESTINATION_CONSTANTS.OWNER_ORIGIN_FRESH_MS;
212
+ if (ownerOrigin && ownerFresh && (!workItem || ownerOrigin.receivedAt >= startOf(workItem))) {
213
+ return { kind: 'owner-origin', origin: ownerOrigin, reason: workItem ? 'the owner asked after the work item started' : 'the owner asked (no work item running)' };
214
+ }
215
+ if (!workItem) {
216
+ return { kind: 'new-top-level', reason: ownerOrigin ? 'no current work; the last owner message is stale' : 'no current work' };
217
+ }
218
+ const origin = originOfWorkItem(workItem);
219
+ if (!origin) {
220
+ return { kind: 'new-top-level', topic: shortTopic(workItem.title), reason: `work item ${workItem.id} has no recorded origin` };
221
+ }
222
+ switch (origin.kind) {
223
+ case 'owner': {
224
+ if (origin.conversationId) {
225
+ const threadKey = origin.slackChannelId && origin.threadTs ? `${origin.slackChannelId}:${origin.threadTs}` : undefined;
226
+ return {
227
+ kind: 'owner-origin',
228
+ origin: {
229
+ conversationId: origin.conversationId,
230
+ ...(origin.slackChannelId ? { slackChannelId: origin.slackChannelId } : {}),
231
+ ...(origin.threadTs ? { slackThreadTs: origin.threadTs } : {}),
232
+ ...(threadKey ? { slackThreadKey: threadKey } : {}),
233
+ ...(origin.chatThreadId ? { chatThreadId: origin.chatThreadId } : {}),
234
+ receivedAt: startOf(workItem),
235
+ },
236
+ reason: `work item ${workItem.id} was asked by the owner`,
237
+ };
238
+ }
239
+ if (origin.slackChannelId) {
240
+ return { kind: 'slack', target: origin.slackChannelId, ...(origin.threadTs ? { threadTs: origin.threadTs } : {}), reason: `work item ${workItem.id} was asked by the owner in Slack` };
241
+ }
242
+ return { kind: 'new-top-level', topic: shortTopic(workItem.title), reason: `work item ${workItem.id} owner origin has no place` };
243
+ }
244
+ case 'ticket':
245
+ return {
246
+ kind: 'ticket-thread',
247
+ projectPath: origin.projectPath,
248
+ ticketId: origin.ticketId,
249
+ ...(origin.title ? { title: origin.title } : {}),
250
+ ...(origin.teamId ? { teamId: origin.teamId } : {}),
251
+ reason: `work item ${workItem.id} is ticket ${origin.ticketId}`,
252
+ };
253
+ case 'trigger': {
254
+ const parsed = origin.destination ? parseDestination(origin.destination) : null;
255
+ if (parsed) {
256
+ return {
257
+ kind: 'slack',
258
+ target: parsed.target,
259
+ ...(parsed.threadTs ? { threadTs: parsed.threadTs } : { topic: origin.topic }),
260
+ reason: `scheduled work item ${workItem.id}: its trigger's destination`,
261
+ };
262
+ }
263
+ return {
264
+ kind: 'new-top-level',
265
+ ...(origin.teamId ? { teamId: origin.teamId } : {}),
266
+ topic: origin.topic,
267
+ reason: `scheduled work item ${workItem.id}: new top-level post`,
268
+ };
269
+ }
270
+ }
271
+ }
272
+ /**
273
+ * The text of a new top-level post: the topic line in bold, then the body.
274
+ *
275
+ * @param topic - Topic (may be empty)
276
+ * @param text - Body
277
+ * @returns Post text
278
+ */
279
+ export function withTopicLine(topic, text) {
280
+ const t = shortTopic(topic);
281
+ if (!t)
282
+ return text;
283
+ // An agent that already opened with the topic needs no second copy.
284
+ if (text.trimStart().startsWith(`*${t}*`))
285
+ return text;
286
+ return `*${t}*\n${text}`;
287
+ }
288
+ //# sourceMappingURL=work-item-destination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-item-destination.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/work-item-destination.ts"],"names":[],"mappings":"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"}
@@ -857,6 +857,16 @@ export declare class SlackTeamChannelService {
857
857
  title?: string;
858
858
  comment?: string;
859
859
  threadId?: string;
860
+ /**
861
+ * Where the agent's current work answers (the `reply` resolver,
862
+ * work-item-destination.wiring). Used when no thread is named; null/absent
863
+ * = no known place → top level, never "the latest thread in the channel".
864
+ */
865
+ destination?: {
866
+ slackChannelId: string;
867
+ threadTs?: string;
868
+ topic?: string;
869
+ } | null;
860
870
  }): Promise<{
861
871
  ok: true;
862
872
  slackChannelId: string;
@@ -867,6 +877,12 @@ export declare class SlackTeamChannelService {
867
877
  ok: false;
868
878
  reason: string;
869
879
  }>;
880
+ /**
881
+ * @param mapping - Channel mapping
882
+ * @param dto - The outbound message (thread reference / metadata)
883
+ * @param allowLatestRoot - Fall back to the channel's latest Slack thread (text mirror only; never for files)
884
+ * @returns Slack thread ts, or undefined for top level
885
+ */
870
886
  private resolveOutboundThreadTs;
871
887
  /**
872
888
  * Give every member of a mapped team a real Slack identity: ask Cloud for
@@ -1 +1 @@
1
- {"version":3,"file":"slack-team-channel.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-team-channel.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slack-team-channel.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-team-channel.service.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ import { LoggerService } from '../core/logger.service.js';
41
41
  import { getSlackDirectoryService } from './slack-directory.service.js';
42
42
  import { SLACK_TEAM_CHANNEL_CONSTANTS, OWNER_EVIDENCE_METADATA, SLACK_THREAD_KEY_CONSTANTS } from '../../constants.js';
43
43
  import { parseSlackThreadKey } from './slack-thread-key.js';
44
+ import { withTopicLine } from '../orc/work-item-destination.js';
44
45
  import { resolveSlackMentions, extractNativeMentionIds } from './slack-mention-resolver.js';
45
46
  import { toSlackMrkdwn } from './slack-mrkdwn.js';
46
47
  import { renderSlackThreadContext } from './slack-thread-context.service.js';
@@ -2239,12 +2240,26 @@ export class SlackTeamChannelService {
2239
2240
  return { ok: false, reason: 'not_a_slack_channel' };
2240
2241
  if (!this.deps.slack.isConnected())
2241
2242
  return { ok: false, reason: 'slack_not_connected' };
2242
- // Same thread the agent's words go to, so the file lands beside them.
2243
- const threadTs = this.resolveOutboundThreadTs(mapping, {
2244
- channelId: input.chatChannelId,
2245
- senderId: input.agentSession,
2246
- ...(input.threadId ? { threadId: input.threadId } : {}),
2247
- });
2243
+ // A thread the agent named wins. Otherwise the file goes where its reply
2244
+ // goes — the work's origin, the same resolver as `reply` — and only when
2245
+ // that place is in this channel. It used to fall back to the channel's
2246
+ // latest Slack thread: Atlas's answer to a #morning-brief question landed
2247
+ // in the owner's unrelated Blender-video thread (2026-10-01).
2248
+ let threadTs;
2249
+ let topic;
2250
+ if (input.threadId) {
2251
+ threadTs = this.resolveOutboundThreadTs(mapping, {
2252
+ channelId: input.chatChannelId,
2253
+ senderId: input.agentSession,
2254
+ threadId: input.threadId,
2255
+ }, false);
2256
+ }
2257
+ else if (input.destination && input.destination.slackChannelId === mapping.slackChannelId) {
2258
+ threadTs = input.destination.threadTs;
2259
+ if (!threadTs)
2260
+ topic = input.destination.topic;
2261
+ }
2262
+ const comment = topic ? withTopicLine(topic, input.comment ?? '').trim() : input.comment;
2248
2263
  const installed = this.deps.identities?.getInstalled(input.agentSession) ?? null;
2249
2264
  try {
2250
2265
  const result = await this.deps.slack.uploadFile({
@@ -2252,7 +2267,7 @@ export class SlackTeamChannelService {
2252
2267
  filePath: input.filePath,
2253
2268
  ...(input.filename ? { filename: input.filename } : {}),
2254
2269
  ...(input.title ? { title: input.title } : {}),
2255
- ...(input.comment ? { initialComment: input.comment } : {}),
2270
+ ...(comment ? { initialComment: comment } : {}),
2256
2271
  ...(threadTs ? { threadTs } : {}),
2257
2272
  ...(installed ? { botToken: installed.botToken } : {}),
2258
2273
  });
@@ -2283,7 +2298,13 @@ export class SlackTeamChannelService {
2283
2298
  return { ok: false, reason };
2284
2299
  }
2285
2300
  }
2286
- resolveOutboundThreadTs(mapping, dto) {
2301
+ /**
2302
+ * @param mapping - Channel mapping
2303
+ * @param dto - The outbound message (thread reference / metadata)
2304
+ * @param allowLatestRoot - Fall back to the channel's latest Slack thread (text mirror only; never for files)
2305
+ * @returns Slack thread ts, or undefined for top level
2306
+ */
2307
+ resolveOutboundThreadTs(mapping, dto, allowLatestRoot = true) {
2287
2308
  // A Slack thread key the agent named (`--thread <channel>:<ts>`), on the
2288
2309
  // row or as the thread reference itself — only for this channel.
2289
2310
  const named = parseSlackThreadKey(dto.metadata?.[SLACK_THREAD_KEY_CONSTANTS.METADATA_KEY]) ?? parseSlackThreadKey(dto.threadId);
@@ -2295,6 +2316,8 @@ export class SlackTeamChannelService {
2295
2316
  if (typeof ts === 'string' && ts)
2296
2317
  return ts;
2297
2318
  }
2319
+ if (!allowLatestRoot)
2320
+ return undefined;
2298
2321
  const latest = this.deps.chat.findLatestSlackRoot(mapping.chatChannelId);
2299
2322
  const ts = latest?.metadata?.slackThreadTs;
2300
2323
  return typeof ts === 'string' && ts ? ts : undefined;