crewly 1.20.193 → 1.20.195

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 (407) hide show
  1. package/config/roles/auditor/prompt.md +2 -2
  2. package/config/roles/orchestrator/fragments/communication.md +1 -1
  3. package/config/roles/orchestrator/prompt.md +15 -505
  4. package/config/skills/agent/computer-use/SKILL.md +6 -0
  5. package/config/skills/agent/core/experiment-card/SKILL.md +101 -0
  6. package/config/skills/agent/core/experiment-card/execute.sh +149 -0
  7. package/config/skills/agent/core/experiment-card/execute.test.sh +97 -0
  8. package/config/skills/agent/desktop-app-control/execute.sh +5 -2
  9. package/config/skills/orchestrator/send-message/execute.sh +19 -2
  10. package/config/skills/orchestrator/send-message/execute.test.sh +80 -0
  11. package/config/skills/registry.json +7 -5
  12. package/config/skills/team-leader/signal-digest/SKILL.md +110 -0
  13. package/config/skills/team-leader/signal-digest/execute.sh +173 -0
  14. package/config/skills/team-leader/signal-digest/execute.test.sh +123 -0
  15. package/config/skills/team-leader/signal-digest/signal-digest.config.example.json +23 -0
  16. package/config/skills/team-leader/signal-digest/signal_digest.py +572 -0
  17. package/config/skills/team-leader/signal-digest/signal_digest.test.py +319 -0
  18. package/dist/backend/backend/src/constants.d.ts +191 -1
  19. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  20. package/dist/backend/backend/src/constants.js +194 -1
  21. package/dist/backend/backend/src/constants.js.map +1 -1
  22. package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
  23. package/dist/backend/backend/src/controllers/chat/chat.controller.js +6 -0
  24. package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
  25. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +3 -1
  27. package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts +27 -0
  29. package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts.map +1 -0
  30. package/dist/backend/backend/src/controllers/experiments/experiments.routes.js +96 -0
  31. package/dist/backend/backend/src/controllers/experiments/experiments.routes.js.map +1 -0
  32. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts +1 -0
  33. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
  34. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +1 -0
  35. package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
  36. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  37. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +5 -2
  38. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  39. package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
  40. package/dist/backend/backend/src/controllers/request/request.controller.js +5 -1
  41. package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
  42. package/dist/backend/backend/src/controllers/settings/settings.controller.d.ts.map +1 -1
  43. package/dist/backend/backend/src/controllers/settings/settings.controller.js +18 -2
  44. package/dist/backend/backend/src/controllers/settings/settings.controller.js.map +1 -1
  45. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts +26 -0
  46. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts.map +1 -0
  47. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js +100 -0
  48. package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js.map +1 -0
  49. package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts +47 -0
  50. package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts.map +1 -0
  51. package/dist/backend/backend/src/controllers/trace/trace.controller.js +169 -0
  52. package/dist/backend/backend/src/controllers/trace/trace.controller.js.map +1 -0
  53. package/dist/backend/backend/src/index.d.ts.map +1 -1
  54. package/dist/backend/backend/src/index.js +66 -20
  55. package/dist/backend/backend/src/index.js.map +1 -1
  56. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  57. package/dist/backend/backend/src/routes/api.routes.js +14 -0
  58. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  59. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  60. package/dist/backend/backend/src/services/agent/agent-registration.service.js +6 -1
  61. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  62. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +3 -0
  64. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  65. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
  66. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
  68. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  69. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +22 -6
  70. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  71. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
  72. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  73. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  74. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  75. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  76. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +6 -0
  77. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  78. package/dist/backend/backend/src/services/backup/backup-archive.service.js +7 -1
  79. package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
  80. package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +1 -1
  81. package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts.map +1 -1
  82. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/canva/canva-token.service.js +5 -0
  84. package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
  85. package/dist/backend/backend/src/services/chat/chat.service.d.ts +78 -2
  86. package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/chat/chat.service.js +210 -26
  88. package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
  89. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +14 -3
  90. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +28 -4
  92. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +4 -3
  94. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  95. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +7 -4
  96. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  97. package/dist/backend/backend/src/services/decisions/decision-store.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/decisions/decision-store.js +5 -1
  99. package/dist/backend/backend/src/services/decisions/decision-store.js.map +1 -1
  100. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +10 -1
  101. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  102. package/dist/backend/backend/src/services/decisions/decision.wiring.js +20 -9
  103. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  104. package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts +88 -0
  105. package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts.map +1 -0
  106. package/dist/backend/backend/src/services/experiments/experiment-verdict.js +226 -0
  107. package/dist/backend/backend/src/services/experiments/experiment-verdict.js.map +1 -0
  108. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +350 -0
  109. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -0
  110. package/dist/backend/backend/src/services/experiments/experiment.service.js +908 -0
  111. package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -0
  112. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts +88 -0
  113. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -0
  114. package/dist/backend/backend/src/services/experiments/experiment.wiring.js +162 -0
  115. package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -0
  116. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts +67 -0
  117. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts.map +1 -0
  118. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js +133 -0
  119. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js.map +1 -0
  120. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
  121. package/dist/backend/backend/src/services/google/google-workspace-token.service.js +5 -0
  122. package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
  123. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
  125. package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -3
  127. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  128. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +24 -7
  129. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  130. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
  131. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +5 -0
  132. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
  133. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
  134. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +4 -0
  136. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/orc/orc-status-router.service.js +12 -3
  139. package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -1
  140. package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +16 -0
  142. package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
  143. package/dist/backend/backend/src/services/people/acting-for.service.d.ts +42 -5
  144. package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -1
  145. package/dist/backend/backend/src/services/people/acting-for.service.js +80 -5
  146. package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -1
  147. package/dist/backend/backend/src/services/people/grant-sharing.d.ts +5 -4
  148. package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -1
  149. package/dist/backend/backend/src/services/people/grant-sharing.js +12 -4
  150. package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -1
  151. package/dist/backend/backend/src/services/people/people-directory.service.d.ts +71 -13
  152. package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/people/people-directory.service.js +164 -27
  154. package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  156. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +2 -0
  157. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  158. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +15 -0
  160. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  161. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  162. package/dist/backend/backend/src/services/session/session-handoff.service.js +8 -5
  163. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  164. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts +75 -0
  165. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts.map +1 -0
  166. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js +187 -0
  167. package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js.map +1 -0
  168. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts +86 -0
  169. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts.map +1 -0
  170. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js +307 -0
  171. package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js.map +1 -0
  172. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts +85 -0
  173. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts.map +1 -0
  174. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js +185 -0
  175. package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js.map +1 -0
  176. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts +272 -0
  177. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts.map +1 -0
  178. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js +570 -0
  179. package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js.map +1 -0
  180. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts +51 -0
  181. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts.map +1 -0
  182. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js +116 -0
  183. package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js.map +1 -0
  184. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts +5 -1
  185. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +6 -2
  187. package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
  188. package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts +33 -0
  189. package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts.map +1 -0
  190. package/dist/backend/backend/src/services/slack/slack-bot-ids.js +56 -0
  191. package/dist/backend/backend/src/services/slack/slack-bot-ids.js.map +1 -0
  192. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
  193. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  194. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +30 -10
  195. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  196. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +1 -1
  197. package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -1
  198. package/dist/backend/backend/src/services/slack/slack.service.d.ts +31 -1
  199. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/slack/slack.service.js +52 -7
  201. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  202. package/dist/backend/backend/src/services/system/auto-update.service.d.ts +2 -2
  203. package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -1
  204. package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/task-pool/pool-storage.js +4 -0
  206. package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
  207. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  208. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +2 -0
  209. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  210. package/dist/backend/backend/src/services/trace/trace-context.service.d.ts +195 -0
  211. package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
  212. package/dist/backend/backend/src/services/trace/trace-context.service.js +432 -0
  213. package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -0
  214. package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts +42 -0
  215. package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts.map +1 -0
  216. package/dist/backend/backend/src/services/trace/trace-http.middleware.js +146 -0
  217. package/dist/backend/backend/src/services/trace/trace-http.middleware.js.map +1 -0
  218. package/dist/backend/backend/src/services/trace/trace-markers.d.ts +93 -0
  219. package/dist/backend/backend/src/services/trace/trace-markers.d.ts.map +1 -0
  220. package/dist/backend/backend/src/services/trace/trace-markers.js +162 -0
  221. package/dist/backend/backend/src/services/trace/trace-markers.js.map +1 -0
  222. package/dist/backend/backend/src/services/trace/trace-recorder.d.ts +290 -0
  223. package/dist/backend/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
  224. package/dist/backend/backend/src/services/trace/trace-recorder.js +669 -0
  225. package/dist/backend/backend/src/services/trace/trace-recorder.js.map +1 -0
  226. package/dist/backend/backend/src/services/trace/trace-store.d.ts +269 -0
  227. package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -0
  228. package/dist/backend/backend/src/services/trace/trace-store.js +602 -0
  229. package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -0
  230. package/dist/backend/backend/src/services/trace/trace.types.d.ts +118 -0
  231. package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -0
  232. package/dist/backend/backend/src/services/trace/trace.types.js +85 -0
  233. package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -0
  234. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +1 -1
  235. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  237. package/dist/backend/backend/src/services/v3/request.service.js +4 -0
  238. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  239. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  240. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +22 -2
  241. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  242. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  243. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  244. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  245. package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
  246. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +3 -0
  247. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
  248. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  249. package/dist/backend/backend/src/services/workflow/scheduler.service.js +3 -0
  250. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  251. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +3 -0
  252. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  253. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +7 -0
  254. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  255. package/dist/backend/backend/src/types/experiment.types.d.ts +155 -0
  256. package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -0
  257. package/dist/backend/backend/src/types/experiment.types.js +32 -0
  258. package/dist/backend/backend/src/types/experiment.types.js.map +1 -0
  259. package/dist/backend/backend/src/types/messaging.types.d.ts +6 -0
  260. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  261. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  262. package/dist/backend/backend/src/types/signal-digest.types.d.ts +185 -0
  263. package/dist/backend/backend/src/types/signal-digest.types.d.ts.map +1 -0
  264. package/dist/backend/backend/src/types/signal-digest.types.js +21 -0
  265. package/dist/backend/backend/src/types/signal-digest.types.js.map +1 -0
  266. package/dist/backend/backend/src/types/v2/request.types.d.ts +4 -0
  267. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  268. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  269. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +4 -0
  270. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  271. package/dist/backend/backend/src/types/v2/work-item.types.js +1 -0
  272. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  273. package/dist/backend/backend/src/utils/security.d.ts +2 -0
  274. package/dist/backend/backend/src/utils/security.d.ts.map +1 -1
  275. package/dist/backend/backend/src/utils/security.js +3 -1
  276. package/dist/backend/backend/src/utils/security.js.map +1 -1
  277. package/dist/backend/backend/src/websocket/chat.gateway.d.ts +9 -0
  278. package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  279. package/dist/backend/backend/src/websocket/chat.gateway.js +26 -0
  280. package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
  281. package/dist/backend/build-info.json +2 -2
  282. package/dist/cli/backend/src/constants.d.ts +191 -1
  283. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  284. package/dist/cli/backend/src/constants.js +194 -1
  285. package/dist/cli/backend/src/constants.js.map +1 -1
  286. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  287. package/dist/cli/backend/src/services/agent/agent-registration.service.js +6 -1
  288. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  289. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  290. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +3 -0
  291. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  292. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
  293. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  294. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
  295. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  296. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +22 -6
  297. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  298. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
  299. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  300. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  301. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  302. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  303. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +6 -0
  304. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  305. package/dist/cli/backend/src/services/backup/backup-archive.service.js +7 -1
  306. package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
  307. package/dist/cli/backend/src/services/chat/chat.service.d.ts +185 -0
  308. package/dist/cli/backend/src/services/chat/chat.service.d.ts.map +1 -0
  309. package/dist/cli/backend/src/services/chat/chat.service.js +558 -0
  310. package/dist/cli/backend/src/services/chat/chat.service.js.map +1 -0
  311. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +14 -3
  312. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  313. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +28 -4
  314. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  315. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +4 -3
  316. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  317. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +7 -4
  318. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  319. package/dist/cli/backend/src/services/decisions/decision-store.d.ts.map +1 -1
  320. package/dist/cli/backend/src/services/decisions/decision-store.js +5 -1
  321. package/dist/cli/backend/src/services/decisions/decision-store.js.map +1 -1
  322. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
  323. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
  324. package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
  325. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -3
  326. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  327. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +24 -7
  328. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  329. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
  330. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  331. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +4 -0
  332. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  333. package/dist/cli/backend/src/services/people/acting-for.service.d.ts +42 -5
  334. package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -1
  335. package/dist/cli/backend/src/services/people/acting-for.service.js +80 -5
  336. package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -1
  337. package/dist/cli/backend/src/services/people/people-directory.service.d.ts +71 -13
  338. package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -1
  339. package/dist/cli/backend/src/services/people/people-directory.service.js +164 -27
  340. package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -1
  341. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
  342. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +2 -0
  343. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
  344. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  345. package/dist/cli/backend/src/services/session/session-handoff.service.js +8 -5
  346. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  347. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
  348. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  349. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +30 -10
  350. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  351. package/dist/cli/backend/src/services/slack/slack.service.d.ts +31 -1
  352. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  353. package/dist/cli/backend/src/services/slack/slack.service.js +52 -7
  354. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  355. package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
  356. package/dist/cli/backend/src/services/task-pool/pool-storage.js +4 -0
  357. package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
  358. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  359. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +2 -0
  360. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  361. package/dist/cli/backend/src/services/trace/trace-context.service.d.ts +195 -0
  362. package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
  363. package/dist/cli/backend/src/services/trace/trace-context.service.js +432 -0
  364. package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -0
  365. package/dist/cli/backend/src/services/trace/trace-markers.d.ts +93 -0
  366. package/dist/cli/backend/src/services/trace/trace-markers.d.ts.map +1 -0
  367. package/dist/cli/backend/src/services/trace/trace-markers.js +162 -0
  368. package/dist/cli/backend/src/services/trace/trace-markers.js.map +1 -0
  369. package/dist/cli/backend/src/services/trace/trace-recorder.d.ts +290 -0
  370. package/dist/cli/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
  371. package/dist/cli/backend/src/services/trace/trace-recorder.js +669 -0
  372. package/dist/cli/backend/src/services/trace/trace-recorder.js.map +1 -0
  373. package/dist/cli/backend/src/services/trace/trace-store.d.ts +269 -0
  374. package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -0
  375. package/dist/cli/backend/src/services/trace/trace-store.js +602 -0
  376. package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -0
  377. package/dist/cli/backend/src/services/trace/trace.types.d.ts +118 -0
  378. package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -0
  379. package/dist/cli/backend/src/services/trace/trace.types.js +85 -0
  380. package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -0
  381. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  382. package/dist/cli/backend/src/services/v3/request.service.js +4 -0
  383. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  384. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  385. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  386. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  387. package/dist/cli/backend/src/types/messaging.types.d.ts +6 -0
  388. package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
  389. package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
  390. package/dist/cli/backend/src/types/v2/request.types.d.ts +4 -0
  391. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  392. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  393. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +4 -0
  394. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  395. package/dist/cli/backend/src/types/v2/work-item.types.js +1 -0
  396. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  397. package/dist/cli/backend/src/utils/security.d.ts +196 -0
  398. package/dist/cli/backend/src/utils/security.d.ts.map +1 -0
  399. package/dist/cli/backend/src/utils/security.js +538 -0
  400. package/dist/cli/backend/src/utils/security.js.map +1 -0
  401. package/dist/cli/backend/src/websocket/chat.gateway.d.ts +9 -0
  402. package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -1
  403. package/dist/cli/backend/src/websocket/chat.gateway.js +26 -0
  404. package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -1
  405. package/frontend/dist/assets/{index-465d1f8f.js → index-800118ca.js} +274 -274
  406. package/frontend/dist/index.html +1 -1
  407. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Text helpers for run traces: the `[TRACE:<id>]` prompt marker, the ids a
3
+ * delivered text refers to, safe summaries, and skill-call path labels.
4
+ *
5
+ * All pure; no I/O.
6
+ *
7
+ * @module services/trace/trace-markers
8
+ */
9
+ import { type TraceData } from './trace.types.js';
10
+ /**
11
+ * The marker for a trace.
12
+ *
13
+ * @param traceId - Trace id
14
+ * @returns `[TRACE:<id>]`
15
+ */
16
+ export declare function formatTraceMarker(traceId: string): string;
17
+ /**
18
+ * Trace ids named by `[TRACE:…]` markers in a text, in order, de-duplicated.
19
+ *
20
+ * @param text - Delivered text
21
+ * @returns Trace ids
22
+ */
23
+ export declare function parseTraceMarkers(text: string): string[];
24
+ /**
25
+ * Append the trace marker as the last line, unless the text already names
26
+ * this trace. Used where a prefix could disturb routing parsers (status
27
+ * reports, agent-to-agent messages).
28
+ *
29
+ * @param text - Message text
30
+ * @param traceId - Trace to carry (no-op when absent)
31
+ * @returns The text with the marker
32
+ */
33
+ export declare function appendTraceMarker(text: string, traceId: string | null | undefined): string;
34
+ /**
35
+ * Remove every `[TRACE:…]` marker from text going to the owner or an outside
36
+ * channel (Slack, chat, the portal). Trace ids are harness plumbing; an
37
+ * agent that copies a prompt's marker into its reply must not show it.
38
+ *
39
+ * @param text - Outgoing text
40
+ * @returns The text without markers (unchanged when it had none)
41
+ *
42
+ * @example
43
+ * stripTraceMarkers('Done.\n[TRACE:tr-20261003-0123abcd]') // 'Done.'
44
+ */
45
+ export declare function stripTraceMarkers(text: string): string;
46
+ /** Ids a delivered text refers to, by kind. */
47
+ export interface TextRefs {
48
+ /** Request ids from `[TICKET:TKT-n <id>]` markers */
49
+ requestIds: string[];
50
+ /** UUIDs (candidate work item ids) */
51
+ workItemIds: string[];
52
+ /** `D-n` */
53
+ decisionIds: string[];
54
+ /** `CE-7`, `TKT-12`, … (not `D-n`) */
55
+ ticketIds: string[];
56
+ }
57
+ /**
58
+ * Every id in a text that the trace index might know.
59
+ *
60
+ * @param text - Delivered text
61
+ * @returns Ids by kind, each de-duplicated
62
+ */
63
+ export declare function extractTextRefs(text: string): TextRefs;
64
+ /**
65
+ * A summary safe to store: one line, routing prefixes and trace markers
66
+ * removed, secrets redacted, cut to {@link TRACE_CONSTANTS.SUMMARY_MAX_CHARS}.
67
+ *
68
+ * @param text - Raw text (a message body, an error, a title)
69
+ * @param max - Character limit
70
+ * @returns The summary
71
+ */
72
+ export declare function safeSummary(text: string | null | undefined, max?: number): string;
73
+ /**
74
+ * Keep only small values in an event's data map: strings are summarised,
75
+ * non-finite numbers and empty values are dropped.
76
+ *
77
+ * @param data - Raw data
78
+ * @returns Cleaned data, or undefined when nothing is left
79
+ */
80
+ export declare function cleanTraceData(data: Record<string, unknown> | undefined): TraceData | undefined;
81
+ /**
82
+ * The label of a skill call: method plus API path with ids replaced, so calls
83
+ * group by endpoint.
84
+ *
85
+ * @param method - HTTP method
86
+ * @param apiPath - Path relative to `/api` (query string ignored)
87
+ * @returns e.g. `POST /task-pool/:id/complete`
88
+ *
89
+ * @example
90
+ * skillLabel('post', '/terminal/crewly-orc/write?x=1') // 'POST /terminal/:session/write'
91
+ */
92
+ export declare function skillLabel(method: string, apiPath: string): string;
93
+ //# sourceMappingURL=trace-markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-markers.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/trace/trace-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAoB7D;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG1F;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,+CAA+C;AAC/C,MAAM,WAAW,QAAQ;IACxB,qDAAqD;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sCAAsC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY;IACZ,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sCAAsC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAOtD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,GAAE,MAA0C,GAAG,MAAM,CAOpH;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAS/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAWlE"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Text helpers for run traces: the `[TRACE:<id>]` prompt marker, the ids a
3
+ * delivered text refers to, safe summaries, and skill-call path labels.
4
+ *
5
+ * All pure; no I/O.
6
+ *
7
+ * @module services/trace/trace-markers
8
+ */
9
+ import { TRACE_CONSTANTS } from '../../constants.js';
10
+ import { redactSensitive } from '../wiki/wiki-redaction.js';
11
+ import { parseTicketMarkers } from '../../types/v2/ticket.types.js';
12
+ import { isTraceId } from './trace.types.js';
13
+ /** `[TRACE:tr-…]` anywhere in a text. */
14
+ const TRACE_MARKER = /\[TRACE:(tr-\d{8}-[0-9a-f]+)\]/g;
15
+ /** A UUID (work item ids). */
16
+ const UUID = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;
17
+ /** A decision id (`D-12`). */
18
+ const DECISION_ID = /\bD-\d+\b/g;
19
+ /** A project ticket id (`CE-7`, `APP-12`) or a Request label (`TKT-12`). */
20
+ const TICKET_ID = /\b[A-Z][A-Z0-9]{1,9}-\d+\b/g;
21
+ /** `…TOKEN=value`, `…_KEY=value`, `…SECRET=value`, `…PASSWORD=value` assignments. */
22
+ const SECRET_ASSIGNMENT = /\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|API_KEY|PRIVATE_KEY))=(\S+)/gi;
23
+ /** Routing prefixes the harness puts in front of a delivered message. */
24
+ const ROUTING_PREFIX = /^\s*(\[(?:G?CHAT|SLACK|SLACK-THREAD|TICKET|TRACE|REMOTE):[^\]]*\]\s*)+/;
25
+ /**
26
+ * The marker for a trace.
27
+ *
28
+ * @param traceId - Trace id
29
+ * @returns `[TRACE:<id>]`
30
+ */
31
+ export function formatTraceMarker(traceId) {
32
+ return `[TRACE:${traceId}]`;
33
+ }
34
+ /**
35
+ * Trace ids named by `[TRACE:…]` markers in a text, in order, de-duplicated.
36
+ *
37
+ * @param text - Delivered text
38
+ * @returns Trace ids
39
+ */
40
+ export function parseTraceMarkers(text) {
41
+ const out = [];
42
+ for (const m of text.matchAll(TRACE_MARKER)) {
43
+ if (isTraceId(m[1]) && !out.includes(m[1]))
44
+ out.push(m[1]);
45
+ }
46
+ return out;
47
+ }
48
+ /**
49
+ * Append the trace marker as the last line, unless the text already names
50
+ * this trace. Used where a prefix could disturb routing parsers (status
51
+ * reports, agent-to-agent messages).
52
+ *
53
+ * @param text - Message text
54
+ * @param traceId - Trace to carry (no-op when absent)
55
+ * @returns The text with the marker
56
+ */
57
+ export function appendTraceMarker(text, traceId) {
58
+ if (!traceId || !isTraceId(traceId) || parseTraceMarkers(text).includes(traceId))
59
+ return text;
60
+ return `${text}\n${formatTraceMarker(traceId)}`;
61
+ }
62
+ /** A line holding only a marker (optionally labelled `Trace:`), with its newline. */
63
+ const TRACE_MARKER_LINE = /^[ \t]*(?:Trace:[ \t]*)?\[TRACE:tr-\d{8}-[0-9a-f]+\][ \t]*(?:\r?\n|$)/gm;
64
+ /** A marker inside a line, with one space before it. */
65
+ const TRACE_MARKER_INLINE = /[ \t]?\[TRACE:tr-\d{8}-[0-9a-f]+\]/g;
66
+ /**
67
+ * Remove every `[TRACE:…]` marker from text going to the owner or an outside
68
+ * channel (Slack, chat, the portal). Trace ids are harness plumbing; an
69
+ * agent that copies a prompt's marker into its reply must not show it.
70
+ *
71
+ * @param text - Outgoing text
72
+ * @returns The text without markers (unchanged when it had none)
73
+ *
74
+ * @example
75
+ * stripTraceMarkers('Done.\n[TRACE:tr-20261003-0123abcd]') // 'Done.'
76
+ */
77
+ export function stripTraceMarkers(text) {
78
+ if (typeof text !== 'string' || !text.includes('[TRACE:'))
79
+ return text;
80
+ return text.replace(TRACE_MARKER_LINE, '').replace(TRACE_MARKER_INLINE, '').replace(/\n+$/, '');
81
+ }
82
+ /**
83
+ * Every id in a text that the trace index might know.
84
+ *
85
+ * @param text - Delivered text
86
+ * @returns Ids by kind, each de-duplicated
87
+ */
88
+ export function extractTextRefs(text) {
89
+ const uniq = (values) => [...new Set(values)];
90
+ const requestIds = uniq(parseTicketMarkers(text).map((r) => r.id));
91
+ const workItemIds = uniq([...text.matchAll(UUID)].map((m) => m[0].toLowerCase()));
92
+ const decisionIds = uniq([...text.matchAll(DECISION_ID)].map((m) => m[0]));
93
+ const ticketIds = uniq([...text.matchAll(TICKET_ID)].map((m) => m[0]).filter((id) => !/^D-\d+$/.test(id)));
94
+ return { requestIds, workItemIds, decisionIds, ticketIds };
95
+ }
96
+ /**
97
+ * A summary safe to store: one line, routing prefixes and trace markers
98
+ * removed, secrets redacted, cut to {@link TRACE_CONSTANTS.SUMMARY_MAX_CHARS}.
99
+ *
100
+ * @param text - Raw text (a message body, an error, a title)
101
+ * @param max - Character limit
102
+ * @returns The summary
103
+ */
104
+ export function safeSummary(text, max = TRACE_CONSTANTS.SUMMARY_MAX_CHARS) {
105
+ if (!text)
106
+ return '';
107
+ const flat = String(text).replace(ROUTING_PREFIX, '').replace(TRACE_MARKER, '').replace(/\s+/g, ' ').trim();
108
+ // Pattern-only redaction (no constants read at import time, so modules
109
+ // that stub the constants in tests can still load this one).
110
+ const redacted = redactSensitive(flat.replace(SECRET_ASSIGNMENT, '$1=[REDACTED]'));
111
+ return redacted.length > max ? `${redacted.slice(0, max - 1)}…` : redacted;
112
+ }
113
+ /**
114
+ * Keep only small values in an event's data map: strings are summarised,
115
+ * non-finite numbers and empty values are dropped.
116
+ *
117
+ * @param data - Raw data
118
+ * @returns Cleaned data, or undefined when nothing is left
119
+ */
120
+ export function cleanTraceData(data) {
121
+ if (!data)
122
+ return undefined;
123
+ const out = {};
124
+ for (const [key, value] of Object.entries(data)) {
125
+ if (typeof value === 'number' && Number.isFinite(value))
126
+ out[key] = value;
127
+ else if (typeof value === 'boolean')
128
+ out[key] = value;
129
+ else if (typeof value === 'string' && value.length > 0)
130
+ out[key] = safeSummary(value, TRACE_CONSTANTS.DATA_VALUE_MAX_CHARS);
131
+ }
132
+ return Object.keys(out).length > 0 ? out : undefined;
133
+ }
134
+ /**
135
+ * The label of a skill call: method plus API path with ids replaced, so calls
136
+ * group by endpoint.
137
+ *
138
+ * @param method - HTTP method
139
+ * @param apiPath - Path relative to `/api` (query string ignored)
140
+ * @returns e.g. `POST /task-pool/:id/complete`
141
+ *
142
+ * @example
143
+ * skillLabel('post', '/terminal/crewly-orc/write?x=1') // 'POST /terminal/:session/write'
144
+ */
145
+ export function skillLabel(method, apiPath) {
146
+ const pathOnly = apiPath.split('?')[0] || '/';
147
+ const segments = pathOnly.split('/').map((seg, i, all) => {
148
+ if (!seg)
149
+ return seg;
150
+ if (all[i - 1] === 'terminal')
151
+ return ':session';
152
+ if (/^[0-9a-f]{8}-[0-9a-f]{4}-/i.test(seg) || /^\d+$/.test(seg) || /^[0-9a-f]{12,}$/i.test(seg))
153
+ return ':id';
154
+ if (/^[A-Z][A-Z0-9]{0,9}-\d+$/.test(seg))
155
+ return ':id';
156
+ if (isTraceId(seg))
157
+ return ':id';
158
+ return seg;
159
+ });
160
+ return `${method.toUpperCase()} ${segments.join('/')}`;
161
+ }
162
+ //# sourceMappingURL=trace-markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-markers.js","sourceRoot":"","sources":["../../../../../../backend/src/services/trace/trace-markers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Run trace hooks: the one-line calls the rest of the backend makes to start
3
+ * traces, carry them onto entities, and record what happened.
4
+ *
5
+ * Every function here is fire-and-forget: it catches its own errors and never
6
+ * throws, so a trace problem can never break a turn, a delivery or a request.
7
+ *
8
+ * specs/2026-10-03-run-traces.md
9
+ *
10
+ * @module services/trace/trace-recorder
11
+ */
12
+ import type { Request } from '../../types/v2/request.types.js';
13
+ import type { WorkItem, WorkItemStatus } from '../../types/v2/work-item.types.js';
14
+ import type { OwnerDecision } from '../../types/decision.types.js';
15
+ import { type TraceEventType, type TraceOutcome, type TraceRefs } from './trace.types.js';
16
+ /**
17
+ * The trace a session's turn is on (no pending root is materialised).
18
+ *
19
+ * @param session - Agent session
20
+ * @returns Trace id, or null
21
+ */
22
+ export declare function currentTraceOf(session: string | null | undefined): string | null;
23
+ /**
24
+ * The trace a session's turn is on; a waiting owner message becomes a root now
25
+ * because the turn is starting work.
26
+ *
27
+ * @param session - Agent session
28
+ * @returns Trace id, or null
29
+ */
30
+ export declare function ensureTraceForSession(session: string | null | undefined): string | null;
31
+ /**
32
+ * A message was written into an agent turn (PTY or in-process).
33
+ *
34
+ * @param session - Agent session
35
+ * @param text - Exactly what was delivered
36
+ * @param runtime - `pty` or `in-process`
37
+ * @returns The trace the turn is now on, or null
38
+ */
39
+ export declare function noteTurnDelivery(session: string, text: string, runtime?: string): string | null;
40
+ /**
41
+ * An in-process turn failed.
42
+ *
43
+ * @param session - Agent session
44
+ * @param error - What failed
45
+ */
46
+ export declare function traceTurnError(session: string, error: unknown): void;
47
+ /**
48
+ * Start a goal or experiment trace (POST /api/traces, #986 experiment cards).
49
+ *
50
+ * @param input - Kind, summary, who, refs, session to bind
51
+ * @returns Trace id, or null
52
+ */
53
+ export declare function startGoalTrace(input: {
54
+ kind: 'goal' | 'experiment';
55
+ summary: string;
56
+ session?: string;
57
+ refs?: TraceRefs;
58
+ }): string | null;
59
+ /**
60
+ * Give a new Request its trace (call before its first save): an explicit or
61
+ * creator trace, the parent ticket's trace, or a new `request` root. Sets
62
+ * `request.traceId` and records `request.created`.
63
+ *
64
+ * @param request - The Request about to be saved (mutated)
65
+ * @param opts.traceId - Trace to join (e.g. the creating agent's)
66
+ * @param opts.creatorSession - Agent creating it, when known
67
+ * @returns The trace id, or null
68
+ */
69
+ export declare function assignRequestTrace(request: Request, opts?: {
70
+ traceId?: string;
71
+ creatorSession?: string;
72
+ }): string | null;
73
+ /**
74
+ * A Request (ticket) changed status: submitted for review, accepted, sent
75
+ * back, reopened, cancelled.
76
+ *
77
+ * @param request - The Request after the change
78
+ * @param previous - Its status before
79
+ */
80
+ export declare function traceRequestStatus(request: Request, previous: string): void;
81
+ /**
82
+ * A project ticket was created: link it to the trace of its Request or of the
83
+ * creating agent's turn, and record `ticket.created`.
84
+ *
85
+ * @param ticket - The ticket
86
+ * @param actor - Who created it (agent session, or a non-agent label)
87
+ * @returns The trace id, or null
88
+ */
89
+ export declare function traceProjectTicketCreated(ticket: {
90
+ id: string;
91
+ title: string;
92
+ requestId?: string | null;
93
+ assignee?: string | null;
94
+ }, actor: string): string | null;
95
+ /**
96
+ * Give a work item its trace before it is stored. Order: its own `traceId`;
97
+ * the item it continues (parent / verify-of / source); its Request; its
98
+ * project ticket; the creating agent's turn. Sets `workItem.traceId`.
99
+ *
100
+ * @param workItem - The item (mutated)
101
+ * @param creatorSession - Agent creating it (X-Agent-Session), when known
102
+ * @returns The trace id, or null
103
+ */
104
+ export declare function assignWorkItemTrace(workItem: WorkItem, creatorSession?: string): string | null;
105
+ /**
106
+ * A work item entered the pool (PoolStorage.addWorkItem): fill in its trace if
107
+ * the caller did not, and record `workitem.created`.
108
+ *
109
+ * @param workItem - The stored item (mutated when its trace is filled in)
110
+ */
111
+ export declare function traceWorkItemCreated(workItem: WorkItem): void;
112
+ /**
113
+ * A work item changed status (PoolStorage.updateWorkItem). `running` is the
114
+ * claim.
115
+ *
116
+ * @param workItem - The item after the change
117
+ * @param previous - Its status before
118
+ */
119
+ export declare function traceWorkItemStatus(workItem: WorkItem, previous: WorkItemStatus): void;
120
+ /**
121
+ * The `[TRACE:…]` header line for a work item's prompt.
122
+ *
123
+ * @param workItem - The item
124
+ * @returns The marker, or '' when the item has no trace
125
+ */
126
+ export declare function workItemTraceMarker(workItem: Pick<WorkItem, 'traceId'>): string;
127
+ /**
128
+ * Append a work item's trace marker as the last line of a hand-over message,
129
+ * unless it is already there. Appended, never prepended: routing parsers
130
+ * anchor on the start of a delivered message (`[CHAT:…]`, `[TASK]`).
131
+ *
132
+ * @param message - The hand-over text
133
+ * @param workItem - The item handed over
134
+ * @returns The text with the marker last
135
+ */
136
+ export declare function withWorkItemTraceMarker(message: string, workItem: Pick<WorkItem, 'traceId'>): string;
137
+ /**
138
+ * One agent messaged another through `/terminal/:to/*`: return the text with
139
+ * the sender's trace appended so the receiving turn joins it, and record
140
+ * `message.agent`.
141
+ *
142
+ * @param sender - Sending agent session
143
+ * @param target - Receiving session
144
+ * @param text - Message text
145
+ * @param maxLength - Longest text the endpoint accepts; the marker is skipped when it would not fit
146
+ * @returns The text to deliver (unchanged when the sender has no trace)
147
+ */
148
+ export declare function carryAgentMessageTrace(sender: string, target: string, text: string, maxLength?: number): string;
149
+ /**
150
+ * A status report was routed. Returns the trace so the routed text can carry
151
+ * its marker.
152
+ *
153
+ * @param input.sender - Reporting agent
154
+ * @param input.content - Report text
155
+ * @param input.workItem - The work item it is about, if found
156
+ * @param input.action - Route (`orc`, `team-lead`, `digest`, `record`)
157
+ * @param input.target - Who receives it
158
+ * @returns The trace id, or null
159
+ */
160
+ export declare function traceStatusRouted(input: {
161
+ sender: string;
162
+ content: string;
163
+ workItem?: Pick<WorkItem, 'id' | 'traceId'> | null;
164
+ action: string;
165
+ target?: string;
166
+ }): string | null;
167
+ /**
168
+ * Append the trace marker to a routed status text.
169
+ *
170
+ * @param text - Status text
171
+ * @param traceId - Trace (no-op when null)
172
+ * @returns The text with the marker last
173
+ */
174
+ export declare function withTraceMarker(text: string, traceId: string | null): string;
175
+ /** What the reply resolver did with an agent message (subset of ReplyDelivery). */
176
+ export interface OutboundReplyResult {
177
+ ok: boolean;
178
+ error?: string;
179
+ messageId?: string;
180
+ conversationId?: string;
181
+ slackChannelId?: string;
182
+ messageTs?: string;
183
+ destination?: {
184
+ kind?: string;
185
+ source?: string;
186
+ };
187
+ }
188
+ /**
189
+ * The reply resolver (#954) delivered or refused an agent message.
190
+ *
191
+ * @param input.session - Agent
192
+ * @param input.content - Message text
193
+ * @param input.reference - The reference it named (ticket / work item / decision / message)
194
+ * @param result - The delivery
195
+ */
196
+ export declare function traceOutboundReply(input: {
197
+ session: string;
198
+ content: string;
199
+ reference?: {
200
+ messageId?: string;
201
+ ticket?: string;
202
+ workItemId?: string;
203
+ decisionId?: string;
204
+ };
205
+ }, result: OutboundReplyResult): void;
206
+ /**
207
+ * A decision card was asked: link it to the trace of its work item, Request,
208
+ * project ticket or asker's turn, and record `decision.created`.
209
+ *
210
+ * @param decision - The stored decision
211
+ */
212
+ export declare function traceDecisionCreated(decision: OwnerDecision): void;
213
+ /**
214
+ * A decision changed state (answered, defaulted, cancelled, …).
215
+ *
216
+ * @param previous - Before
217
+ * @param next - After
218
+ */
219
+ export declare function traceDecisionChanged(previous: Pick<OwnerDecision, 'status'>, next: OwnerDecision): void;
220
+ /** Input of {@link traceHarness}. */
221
+ export interface HarnessEventInput {
222
+ /** Session acted on */
223
+ session?: string;
224
+ workItemId?: string;
225
+ workItem?: Pick<WorkItem, 'id' | 'traceId'> | null;
226
+ /** Trace, when the caller knows it */
227
+ traceId?: string | null;
228
+ summary: string;
229
+ outcome?: TraceOutcome;
230
+ data?: Record<string, unknown>;
231
+ }
232
+ /**
233
+ * The harness intervened (redelivery, wake, correction, nudge, guard block):
234
+ * record it in the trace of the work item, else of the session's turn.
235
+ *
236
+ * @param type - Event type
237
+ * @param input - What and on whom
238
+ * @returns True when recorded
239
+ */
240
+ export declare function traceHarness(type: Extract<TraceEventType, `harness.${string}` | 'guard.block'>, input: HarnessEventInput): boolean;
241
+ /** A token-ledger entry (subset of TokenUsageEvent). */
242
+ export interface UsageEntry {
243
+ timestamp: string;
244
+ input: number;
245
+ output: number;
246
+ model: string;
247
+ cachedInput?: number;
248
+ runtime?: string;
249
+ }
250
+ /**
251
+ * A token-ledger entry was recorded: find the trace the session was on at
252
+ * that time, record `usage`, and return the id to stamp on the entry.
253
+ *
254
+ * @param session - Agent session
255
+ * @param entry - The usage
256
+ * @returns Trace id, or null
257
+ */
258
+ export declare function traceUsage(session: string, entry: UsageEntry): string | null;
259
+ /** The part of an experiment card the trace needs. */
260
+ export interface ExperimentTraceInput {
261
+ /** `EXP-n` */
262
+ id: string;
263
+ title: string;
264
+ /** The ticket it rides on: a project ticket id, or a TKT-n label / request id */
265
+ ticket?: {
266
+ kind: 'project' | 'harness';
267
+ id: string;
268
+ };
269
+ }
270
+ /**
271
+ * An experiment card was created: join its ticket's trace when the ticket
272
+ * has one, else start an `experiment` root. Links `experiment:<EXP-n>` (and
273
+ * the ticket) in the index.
274
+ *
275
+ * @param experiment - The new card
276
+ * @param caller - Who created it (agent session, or `owner`)
277
+ * @returns The trace id, or null
278
+ */
279
+ export declare function startExperimentTrace(experiment: ExperimentTraceInput, caller: string): string | null;
280
+ /**
281
+ * Mirror one experiment timeline entry (created, shipped, baseline, measured,
282
+ * verdict, …) into its trace.
283
+ *
284
+ * @param traceId - The card's trace
285
+ * @param experimentId - `EXP-n`
286
+ * @param event - Timeline event name
287
+ * @param detail - Optional detail
288
+ */
289
+ export declare function traceExperimentEvent(traceId: string, experimentId: string, event: string, detail?: string): void;
290
+ //# sourceMappingURL=trace-recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-recorder.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/trace/trace-recorder.ts"],"names":[],"mappings":"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"}