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,538 @@
1
+ /**
2
+ * Security Utilities
3
+ *
4
+ * Provides security-related validation and sanitization functions
5
+ * for protecting against common vulnerabilities like command injection,
6
+ * path traversal, and dangerous control sequences.
7
+ *
8
+ * @module security
9
+ */
10
+ import * as path from 'path';
11
+ import * as os from 'os';
12
+ /** Longest text {@link validateTerminalInput} accepts by default (characters). */
13
+ export const TERMINAL_INPUT_MAX_LENGTH = 10000;
14
+ /**
15
+ * Characters that are dangerous in shell commands and should be escaped or removed
16
+ * from user input that will be used in shell operations.
17
+ */
18
+ export const SHELL_DANGEROUS_CHARS = [
19
+ '`', // Command substitution
20
+ '$', // Variable expansion / command substitution
21
+ '\\', // Escape character
22
+ '"', // String delimiter
23
+ "'", // String delimiter
24
+ ';', // Command separator
25
+ '&', // Background execution / AND operator
26
+ '|', // Pipe operator
27
+ '>', // Output redirection
28
+ '<', // Input redirection
29
+ '\n', // Newline (command separator)
30
+ '\r', // Carriage return
31
+ '\0', // Null byte
32
+ ];
33
+ /**
34
+ * Dangerous control sequences that should not be allowed in terminal input.
35
+ * These can be used for terminal escape attacks or to manipulate terminal state.
36
+ */
37
+ export const DANGEROUS_CONTROL_SEQUENCES = [
38
+ '\x1b', // ESC - Start of ANSI escape sequences
39
+ '\x07', // BEL - Bell character (can trigger actions)
40
+ '\x08', // BS - Backspace (can manipulate display)
41
+ '\x7f', // DEL - Delete character
42
+ '\x9b', // CSI - Control Sequence Introducer (8-bit)
43
+ '\x90', // DCS - Device Control String
44
+ '\x9d', // OSC - Operating System Command
45
+ '\x9e', // PM - Privacy Message
46
+ '\x9f', // APC - Application Program Command
47
+ ];
48
+ /**
49
+ * Regex pattern to match ANSI escape sequences
50
+ */
51
+ const ANSI_ESCAPE_PATTERN = /\x1b\[[0-9;]*[a-zA-Z]|\x1b\][^\x07]*\x07|\x1b[PX^_][^\x1b]*\x1b\\|\x1b[@-Z\\^_]|\x9b[0-9;]*[a-zA-Z]/g;
52
+ /**
53
+ * Regex pattern to match Operating System Command sequences
54
+ * These can be used to change terminal title, clipboard, etc.
55
+ */
56
+ const OSC_PATTERN = /\x1b\](?:[0-9]+;[^\x07\x1b]*)?(?:\x07|\x1b\\)/g;
57
+ /**
58
+ * Sanitizes a string for safe use in shell commands, specifically for
59
+ * git commit messages. Removes or escapes characters that could be used
60
+ * for command injection.
61
+ *
62
+ * @param input - The raw input string to sanitize
63
+ * @param options - Sanitization options
64
+ * @param options.maxLength - Maximum allowed length (default: 1000)
65
+ * @param options.allowNewlines - Whether to allow newlines (default: true for commit messages)
66
+ * @returns SanitizationResult with the sanitized string and metadata
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const result = sanitizeForShell('Fix bug; rm -rf /');
71
+ * // result.sanitized === 'Fix bug rm -rf /'
72
+ * // result.wasModified === true
73
+ * ```
74
+ */
75
+ export function sanitizeForShell(input, options = {}) {
76
+ const { maxLength = 1000, allowNewlines = true } = options;
77
+ const removedPatterns = [];
78
+ let sanitized = input;
79
+ let wasModified = false;
80
+ // Truncate if too long
81
+ if (sanitized.length > maxLength) {
82
+ sanitized = sanitized.substring(0, maxLength);
83
+ wasModified = true;
84
+ removedPatterns.push(`truncated from ${input.length} to ${maxLength} chars`);
85
+ }
86
+ // Remove null bytes
87
+ if (sanitized.includes('\0')) {
88
+ sanitized = sanitized.replace(/\0/g, '');
89
+ wasModified = true;
90
+ removedPatterns.push('null bytes');
91
+ }
92
+ // Handle newlines based on option
93
+ if (!allowNewlines) {
94
+ if (sanitized.includes('\n') || sanitized.includes('\r')) {
95
+ sanitized = sanitized.replace(/[\r\n]+/g, ' ');
96
+ wasModified = true;
97
+ removedPatterns.push('newlines');
98
+ }
99
+ }
100
+ // Remove backtick command substitution patterns
101
+ const backtickPattern = /`[^`]*`/g;
102
+ const backtickReplaced = sanitized.replace(backtickPattern, '');
103
+ if (backtickReplaced !== sanitized) {
104
+ sanitized = backtickReplaced;
105
+ wasModified = true;
106
+ removedPatterns.push('backtick command substitution');
107
+ }
108
+ // Remove $() command substitution
109
+ const dollarParenPattern = /\$\([^)]*\)/g;
110
+ const dollarParenReplaced = sanitized.replace(dollarParenPattern, '');
111
+ if (dollarParenReplaced !== sanitized) {
112
+ sanitized = dollarParenReplaced;
113
+ wasModified = true;
114
+ removedPatterns.push('$() command substitution');
115
+ }
116
+ // Remove shell variable expansion $VAR or ${VAR}
117
+ const varPattern = /\$\{[^}]*\}|\$[A-Za-z_][A-Za-z0-9_]*/g;
118
+ const varReplaced = sanitized.replace(varPattern, '');
119
+ if (varReplaced !== sanitized) {
120
+ sanitized = varReplaced;
121
+ wasModified = true;
122
+ removedPatterns.push('shell variable expansion');
123
+ }
124
+ // Remove dangerous shell operators (but preserve the text around them)
125
+ const dangerousOps = [';', '&&', '||', '|', '>', '<', '>>', '<<'];
126
+ for (const op of dangerousOps) {
127
+ if (sanitized.includes(op)) {
128
+ // Replace operator with space to preserve word boundaries
129
+ sanitized = sanitized.split(op).join(' ');
130
+ wasModified = true;
131
+ if (!removedPatterns.includes('shell operators')) {
132
+ removedPatterns.push('shell operators');
133
+ }
134
+ }
135
+ }
136
+ // Clean up multiple consecutive spaces (but preserve newlines if allowed)
137
+ if (allowNewlines) {
138
+ // Only clean up multiple spaces on the same line
139
+ const cleanedSpaces = sanitized.replace(/[ \t]{2,}/g, ' ');
140
+ if (cleanedSpaces !== sanitized) {
141
+ sanitized = cleanedSpaces;
142
+ // Don't mark as modified just for whitespace cleanup
143
+ }
144
+ }
145
+ else {
146
+ // Clean up all multiple whitespace
147
+ const cleanedSpaces = sanitized.replace(/\s{2,}/g, ' ').trim();
148
+ if (cleanedSpaces !== sanitized) {
149
+ sanitized = cleanedSpaces;
150
+ // Don't mark as modified just for whitespace cleanup
151
+ }
152
+ }
153
+ return {
154
+ sanitized,
155
+ wasModified,
156
+ removedPatterns: removedPatterns.length > 0 ? removedPatterns : undefined,
157
+ };
158
+ }
159
+ /**
160
+ * Sanitizes a git commit message by removing potentially dangerous characters
161
+ * while preserving the semantic content of the message.
162
+ *
163
+ * @param message - The raw commit message
164
+ * @param options - Sanitization options
165
+ * @param options.maxLength - Maximum message length (default: 5000)
166
+ * @returns SanitizationResult with the sanitized message
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const result = sanitizeGitCommitMessage('feat: add feature $(whoami)');
171
+ * // result.sanitized === 'feat: add feature'
172
+ * ```
173
+ */
174
+ export function sanitizeGitCommitMessage(message, options = {}) {
175
+ const { maxLength = 5000 } = options;
176
+ // Use shell sanitization with newlines allowed (for multi-line commit messages)
177
+ return sanitizeForShell(message, { maxLength, allowNewlines: true });
178
+ }
179
+ /**
180
+ * Validates that terminal input does not contain dangerous control sequences
181
+ * that could be used for terminal escape attacks.
182
+ *
183
+ * @param input - The terminal input to validate
184
+ * @param options - Validation options
185
+ * @param options.allowBasicFormatting - Allow basic ANSI formatting codes (colors, etc.)
186
+ * @param options.maxLength - Maximum input length (default: 10000)
187
+ * @returns Object with isValid flag and optional error message
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const result = validateTerminalInput('echo hello');
192
+ * // result.isValid === true
193
+ *
194
+ * const result2 = validateTerminalInput('\x1b]0;malicious\x07');
195
+ * // result2.isValid === false
196
+ * // result2.error === 'Input contains Operating System Command sequences'
197
+ * ```
198
+ */
199
+ export function validateTerminalInput(input, options = {}) {
200
+ const { allowBasicFormatting = false, maxLength = TERMINAL_INPUT_MAX_LENGTH } = options;
201
+ // Check length
202
+ if (input.length > maxLength) {
203
+ return {
204
+ isValid: false,
205
+ error: `Input exceeds maximum length of ${maxLength} characters`,
206
+ };
207
+ }
208
+ // Check for null bytes
209
+ if (input.includes('\0')) {
210
+ return {
211
+ isValid: false,
212
+ error: 'Input contains null bytes',
213
+ };
214
+ }
215
+ // Check for OSC (Operating System Command) sequences which can:
216
+ // - Change terminal title
217
+ // - Access clipboard
218
+ // - Execute commands on some terminals
219
+ // Check this BEFORE checking for ESC to give more specific error
220
+ if (OSC_PATTERN.test(input)) {
221
+ return {
222
+ isValid: false,
223
+ error: 'Input contains Operating System Command sequences',
224
+ };
225
+ }
226
+ // If basic formatting is not allowed, reject any ANSI escape sequences
227
+ if (!allowBasicFormatting && ANSI_ESCAPE_PATTERN.test(input)) {
228
+ return {
229
+ isValid: false,
230
+ error: 'Input contains ANSI escape sequences',
231
+ };
232
+ }
233
+ // Check for dangerous control characters (check after ANSI patterns for specific errors)
234
+ for (const seq of DANGEROUS_CONTROL_SEQUENCES) {
235
+ if (seq === '\x1b' && (allowBasicFormatting || ANSI_ESCAPE_PATTERN.test(input) || OSC_PATTERN.test(input))) {
236
+ // Skip ESC if we already handled it above
237
+ continue;
238
+ }
239
+ if (input.includes(seq)) {
240
+ return {
241
+ isValid: false,
242
+ error: 'Input contains dangerous control sequences',
243
+ };
244
+ }
245
+ }
246
+ // If basic formatting is allowed, check for dangerous escape sequences
247
+ // that go beyond simple color/formatting codes
248
+ if (allowBasicFormatting) {
249
+ // DCS (Device Control String) - can be used for Sixel injection
250
+ if (/\x1bP[^\\]*\x1b\\/.test(input) || /\x90[^\x9c]*\x9c/.test(input)) {
251
+ return {
252
+ isValid: false,
253
+ error: 'Input contains Device Control String sequences',
254
+ };
255
+ }
256
+ // Check for cursor positioning that could be used to overwrite displayed content
257
+ // to deceive users (allowed: colors, bold, etc. Disallowed: cursor movement)
258
+ const cursorMovePattern = /\x1b\[[0-9;]*[ABCDEFGHJ]/gi;
259
+ if (cursorMovePattern.test(input)) {
260
+ return {
261
+ isValid: false,
262
+ error: 'Input contains cursor manipulation sequences',
263
+ };
264
+ }
265
+ }
266
+ return { isValid: true };
267
+ }
268
+ /**
269
+ * Sanitizes terminal input by removing dangerous control sequences while
270
+ * preserving safe content.
271
+ *
272
+ * @param input - The terminal input to sanitize
273
+ * @param options - Sanitization options
274
+ * @param options.preserveNewlines - Keep newline characters (default: true)
275
+ * @param options.maxLength - Maximum output length (default: 10000)
276
+ * @returns SanitizationResult with the sanitized input
277
+ *
278
+ * @example
279
+ * ```typescript
280
+ * const result = sanitizeTerminalInput('hello\x1b]0;title\x07world');
281
+ * // result.sanitized === 'helloworld'
282
+ * ```
283
+ */
284
+ export function sanitizeTerminalInput(input, options = {}) {
285
+ const { preserveNewlines = true, maxLength = 10000 } = options;
286
+ const removedPatterns = [];
287
+ let sanitized = input;
288
+ let wasModified = false;
289
+ // Truncate if too long
290
+ if (sanitized.length > maxLength) {
291
+ sanitized = sanitized.substring(0, maxLength);
292
+ wasModified = true;
293
+ removedPatterns.push(`truncated from ${input.length} to ${maxLength} chars`);
294
+ }
295
+ // Remove null bytes
296
+ if (sanitized.includes('\0')) {
297
+ sanitized = sanitized.replace(/\0/g, '');
298
+ wasModified = true;
299
+ removedPatterns.push('null bytes');
300
+ }
301
+ // Remove OSC sequences
302
+ if (OSC_PATTERN.test(sanitized)) {
303
+ sanitized = sanitized.replace(OSC_PATTERN, '');
304
+ wasModified = true;
305
+ removedPatterns.push('OSC sequences');
306
+ }
307
+ // Remove all ANSI escape sequences
308
+ if (ANSI_ESCAPE_PATTERN.test(sanitized)) {
309
+ sanitized = sanitized.replace(ANSI_ESCAPE_PATTERN, '');
310
+ wasModified = true;
311
+ removedPatterns.push('ANSI escape sequences');
312
+ }
313
+ // Remove other dangerous control characters
314
+ const controlCharPattern = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F\x80-\x9F]/g;
315
+ if (controlCharPattern.test(sanitized)) {
316
+ sanitized = sanitized.replace(controlCharPattern, '');
317
+ wasModified = true;
318
+ removedPatterns.push('control characters');
319
+ }
320
+ // Handle newlines
321
+ if (!preserveNewlines) {
322
+ if (sanitized.includes('\n') || sanitized.includes('\r')) {
323
+ sanitized = sanitized.replace(/[\r\n]+/g, ' ');
324
+ wasModified = true;
325
+ removedPatterns.push('newlines');
326
+ }
327
+ }
328
+ return {
329
+ sanitized,
330
+ wasModified,
331
+ removedPatterns: removedPatterns.length > 0 ? removedPatterns : undefined,
332
+ };
333
+ }
334
+ /**
335
+ * Validates a file path to prevent path traversal attacks.
336
+ * Ensures the resolved path is within the allowed base directory.
337
+ *
338
+ * @param inputPath - The path to validate (can be relative or absolute)
339
+ * @param baseDirectory - The allowed base directory (must be absolute)
340
+ * @param options - Validation options
341
+ * @param options.allowSymlinks - Whether to allow symlinks (default: false for security)
342
+ * @returns PathValidationResult with validation status and normalized path
343
+ *
344
+ * @example
345
+ * ```typescript
346
+ * const result = validatePath('../../../etc/passwd', '/home/user/projects');
347
+ * // result.isValid === false
348
+ * // result.error === 'Path traversal detected'
349
+ *
350
+ * const result2 = validatePath('src/index.ts', '/home/user/projects');
351
+ * // result2.isValid === true
352
+ * // result2.normalizedPath === '/home/user/projects/src/index.ts'
353
+ * ```
354
+ */
355
+ export function validatePath(inputPath, baseDirectory, options = {}) {
356
+ const { allowSymlinks = false } = options;
357
+ // Input validation
358
+ if (!inputPath || typeof inputPath !== 'string') {
359
+ return {
360
+ isValid: false,
361
+ error: 'Path is required and must be a string',
362
+ };
363
+ }
364
+ if (!baseDirectory || typeof baseDirectory !== 'string') {
365
+ return {
366
+ isValid: false,
367
+ error: 'Base directory is required and must be a string',
368
+ };
369
+ }
370
+ // Base directory must be absolute
371
+ if (!path.isAbsolute(baseDirectory)) {
372
+ return {
373
+ isValid: false,
374
+ error: 'Base directory must be an absolute path',
375
+ };
376
+ }
377
+ // Check for null bytes (can bypass path checks in some systems)
378
+ if (inputPath.includes('\0') || baseDirectory.includes('\0')) {
379
+ return {
380
+ isValid: false,
381
+ error: 'Path contains null bytes',
382
+ };
383
+ }
384
+ // Normalize the base directory
385
+ const normalizedBase = path.normalize(baseDirectory);
386
+ // Resolve the input path relative to the base directory
387
+ let resolvedPath;
388
+ if (path.isAbsolute(inputPath)) {
389
+ resolvedPath = path.normalize(inputPath);
390
+ }
391
+ else {
392
+ resolvedPath = path.normalize(path.join(normalizedBase, inputPath));
393
+ }
394
+ // Check if the resolved path starts with the base directory
395
+ // Add trailing separator to prevent partial directory name matches
396
+ // e.g., /home/user matching /home/username
397
+ const baseWithSep = normalizedBase.endsWith(path.sep)
398
+ ? normalizedBase
399
+ : normalizedBase + path.sep;
400
+ const resolvedWithSep = resolvedPath.endsWith(path.sep)
401
+ ? resolvedPath
402
+ : resolvedPath + path.sep;
403
+ // The resolved path must either equal the base or be a subdirectory of it
404
+ const isWithinBase = resolvedPath === normalizedBase || resolvedWithSep.startsWith(baseWithSep);
405
+ if (!isWithinBase) {
406
+ return {
407
+ isValid: false,
408
+ error: 'Path traversal detected: path resolves outside the allowed directory',
409
+ };
410
+ }
411
+ // Check for common path traversal patterns in the original input
412
+ // This catches attempts that might not be caught by normalization alone
413
+ const traversalPatterns = [
414
+ /\.\.[\/\\]/, // ../
415
+ /[\/\\]\.\./, // /..
416
+ /^\.\.$/, // just ..
417
+ /%2e%2e/i, // URL encoded ..
418
+ /%252e%252e/i, // Double URL encoded ..
419
+ /\.%2e/i, // Mixed encoding
420
+ /%2e\./i, // Mixed encoding
421
+ ];
422
+ for (const pattern of traversalPatterns) {
423
+ if (pattern.test(inputPath)) {
424
+ return {
425
+ isValid: false,
426
+ error: 'Path traversal pattern detected in input',
427
+ };
428
+ }
429
+ }
430
+ // Note: Symlink checking should be done at the filesystem level
431
+ // when actually accessing the file, as the symlink might not exist yet
432
+ // or the check could be subject to TOCTOU (time-of-check-time-of-use) issues
433
+ return {
434
+ isValid: true,
435
+ normalizedPath: resolvedPath,
436
+ };
437
+ }
438
+ /**
439
+ * Validates a project path ensuring it is within allowed directories
440
+ * (user's home directory or explicitly allowed paths).
441
+ *
442
+ * @param projectPath - The project path to validate
443
+ * @param allowedBasePaths - Additional allowed base paths (default: [os.homedir()])
444
+ * @returns PathValidationResult with validation status
445
+ *
446
+ * @example
447
+ * ```typescript
448
+ * const result = validateProjectPath('/home/user/projects/myapp');
449
+ * // result.isValid === true
450
+ *
451
+ * const result2 = validateProjectPath('/etc/passwd');
452
+ * // result2.isValid === false
453
+ * ```
454
+ */
455
+ export function validateProjectPath(projectPath, allowedBasePaths) {
456
+ // Default to home directory if no allowed paths specified
457
+ const basePaths = allowedBasePaths ?? [os.homedir()];
458
+ // Input validation
459
+ if (!projectPath || typeof projectPath !== 'string') {
460
+ return {
461
+ isValid: false,
462
+ error: 'Project path is required and must be a string',
463
+ };
464
+ }
465
+ // Check for null bytes
466
+ if (projectPath.includes('\0')) {
467
+ return {
468
+ isValid: false,
469
+ error: 'Path contains null bytes',
470
+ };
471
+ }
472
+ // Normalize the project path
473
+ const normalizedProjectPath = path.normalize(path.isAbsolute(projectPath) ? projectPath : path.resolve(projectPath));
474
+ // Check if the path is within any of the allowed base paths
475
+ for (const basePath of basePaths) {
476
+ const result = validatePath(normalizedProjectPath, basePath);
477
+ if (result.isValid) {
478
+ return {
479
+ isValid: true,
480
+ normalizedPath: result.normalizedPath,
481
+ };
482
+ }
483
+ }
484
+ // Also allow the current working directory
485
+ const cwdResult = validatePath(normalizedProjectPath, process.cwd());
486
+ if (cwdResult.isValid) {
487
+ return {
488
+ isValid: true,
489
+ normalizedPath: cwdResult.normalizedPath,
490
+ };
491
+ }
492
+ return {
493
+ isValid: false,
494
+ error: 'Project path is outside allowed directories',
495
+ };
496
+ }
497
+ /**
498
+ * Validates a session name to ensure it contains only safe characters.
499
+ *
500
+ * @param sessionName - The session name to validate
501
+ * @param options - Validation options
502
+ * @param options.maxLength - Maximum session name length (default: 100)
503
+ * @returns Object with isValid flag and optional error message
504
+ *
505
+ * @example
506
+ * ```typescript
507
+ * const result = validateSessionName('my-session_123');
508
+ * // result.isValid === true
509
+ *
510
+ * const result2 = validateSessionName('session; rm -rf /');
511
+ * // result2.isValid === false
512
+ * ```
513
+ */
514
+ export function validateSessionName(sessionName, options = {}) {
515
+ const { maxLength = 100 } = options;
516
+ if (!sessionName || typeof sessionName !== 'string') {
517
+ return {
518
+ isValid: false,
519
+ error: 'Session name is required and must be a string',
520
+ };
521
+ }
522
+ if (sessionName.length > maxLength) {
523
+ return {
524
+ isValid: false,
525
+ error: `Session name exceeds maximum length of ${maxLength} characters`,
526
+ };
527
+ }
528
+ // Only allow alphanumeric characters, hyphens, and underscores
529
+ const validPattern = /^[a-zA-Z0-9_-]+$/;
530
+ if (!validPattern.test(sessionName)) {
531
+ return {
532
+ isValid: false,
533
+ error: 'Session name contains invalid characters. Only alphanumeric characters, hyphens, and underscores are allowed.',
534
+ };
535
+ }
536
+ return { isValid: true };
537
+ }
538
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../../backend/src/utils/security.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,15 @@ export declare class ChatGateway {
41
41
  * legacy ChatService EventEmitter wiring.
42
42
  */
43
43
  private setupChatV2Listeners;
44
+ /**
45
+ * Forward the events that only the legacy ChatService façade emits —
46
+ * `conversation_updated` (chat-v2 has no channel-touched event yet) and
47
+ * `chat_typing` — to WebSocket clients. `chat_message` is deliberately
48
+ * NOT forwarded from the façade: chat-v2 already emits it for every
49
+ * write (see {@link setupChatV2Listeners}), so forwarding both would
50
+ * double-broadcast.
51
+ */
52
+ private setupChatServiceListeners;
44
53
  /**
45
54
  * Set up WebSocket event handlers for chat-specific events.
46
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.gateway.d.ts","sourceRoot":"","sources":["../../../../../backend/src/websocket/chat.gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,cAAc,EAAU,MAAM,WAAW,CAAC;AAW7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAM9B;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+D9B;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;;;;;;OAUG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyC9B;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyC9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIvE;;;;;;OAMG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIpF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;IACH,aAAa,IAAI,OAAO;CAGzB;AAQD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"chat.gateway.d.ts","sourceRoot":"","sources":["../../../../../backend/src/websocket/chat.gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,IAAI,cAAc,EAAU,MAAM,WAAW,CAAC;AAY7D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAGX,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAM9B;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+D9B;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;;;;;;OAUG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyC9B;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyC9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIvE;;;;;;OAMG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIpF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;IACH,aAAa,IAAI,OAAO;CAGzB;AAQD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { getChatV2Service } from '../services/chat-v2/chat-v2.singleton.js';
10
10
  import { SYSTEM_PRINCIPAL, v2MessageToLegacy, v2ChannelToLegacy, senderToV2, } from '../services/chat-v2/legacy-dto.utils.js';
11
+ import { getChatService } from '../services/chat/chat.service.js';
11
12
  import { LoggerService } from '../services/core/logger.service.js';
12
13
  /**
13
14
  * Chat Gateway class for WebSocket-based chat messaging.
@@ -43,6 +44,7 @@ export class ChatGateway {
43
44
  if (this.initialized)
44
45
  return;
45
46
  this.setupChatV2Listeners();
47
+ this.setupChatServiceListeners();
46
48
  this.setupWebSocketHandlers();
47
49
  this.initialized = true;
48
50
  this.logger.info('ChatGateway initialized');
@@ -63,6 +65,30 @@ export class ChatGateway {
63
65
  });
64
66
  });
65
67
  }
68
+ /**
69
+ * Forward the events that only the legacy ChatService façade emits —
70
+ * `conversation_updated` (chat-v2 has no channel-touched event yet) and
71
+ * `chat_typing` — to WebSocket clients. `chat_message` is deliberately
72
+ * NOT forwarded from the façade: chat-v2 already emits it for every
73
+ * write (see {@link setupChatV2Listeners}), so forwarding both would
74
+ * double-broadcast.
75
+ */
76
+ setupChatServiceListeners() {
77
+ const chatService = getChatService();
78
+ chatService.on('conversation_updated', (event) => {
79
+ this.logger.debug('Broadcasting conversation_updated', {
80
+ conversationId: event.data.id,
81
+ });
82
+ this.broadcast('conversation_updated', {
83
+ type: 'conversation_updated',
84
+ data: event.data,
85
+ timestamp: new Date().toISOString(),
86
+ });
87
+ });
88
+ chatService.on('chat_typing', (event) => {
89
+ this.broadcastTyping(event.data.conversationId, event.data.sender, event.data.isTyping);
90
+ });
91
+ }
66
92
  /**
67
93
  * Set up WebSocket event handlers for chat-specific events.
68
94
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.gateway.js","sourceRoot":"","sources":["../../../../../backend/src/websocket/chat.gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.gateway.js","sourceRoot":"","sources":["../../../../../backend/src/websocket/chat.gateway.ts"],"names":[],"mappings":"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"}