@rudderhq/server 0.7.12 → 0.7.14

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 (179) hide show
  1. package/dist/bootstrap/types.d.ts +5 -0
  2. package/dist/bootstrap/types.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/routes/agents.management-routes.d.ts.map +1 -1
  6. package/dist/routes/agents.management-routes.js +15 -9
  7. package/dist/routes/agents.management-routes.js.map +1 -1
  8. package/dist/routes/chats.d.ts.map +1 -1
  9. package/dist/routes/chats.js +57 -14
  10. package/dist/routes/chats.js.map +1 -1
  11. package/dist/routes/goals.d.ts.map +1 -1
  12. package/dist/routes/goals.js +24 -0
  13. package/dist/routes/goals.js.map +1 -1
  14. package/dist/routes/issues.d.ts.map +1 -1
  15. package/dist/routes/issues.js +4 -5
  16. package/dist/routes/issues.js.map +1 -1
  17. package/dist/routes/run-intelligence.d.ts.map +1 -1
  18. package/dist/routes/run-intelligence.js +1 -0
  19. package/dist/routes/run-intelligence.js.map +1 -1
  20. package/dist/services/agent-issue-creation.d.ts +1 -1
  21. package/dist/services/agent-run-context.d.ts +1 -1
  22. package/dist/services/agent-run-context.d.ts.map +1 -1
  23. package/dist/services/agent-run-context.js +6 -12
  24. package/dist/services/agent-run-context.js.map +1 -1
  25. package/dist/services/agent-startup-context.d.ts.map +1 -1
  26. package/dist/services/agent-startup-context.js +7 -6
  27. package/dist/services/agent-startup-context.js.map +1 -1
  28. package/dist/services/agents.d.ts +35 -0
  29. package/dist/services/agents.d.ts.map +1 -1
  30. package/dist/services/automations.js +2 -2
  31. package/dist/services/automations.js.map +1 -1
  32. package/dist/services/chat-agent-runs.d.ts +1 -0
  33. package/dist/services/chat-agent-runs.d.ts.map +1 -1
  34. package/dist/services/chat-agent-runs.js +16 -2
  35. package/dist/services/chat-agent-runs.js.map +1 -1
  36. package/dist/services/chat-assistant.d.ts.map +1 -1
  37. package/dist/services/chat-assistant.helpers.d.ts +2 -2
  38. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  39. package/dist/services/chat-assistant.helpers.js +3 -0
  40. package/dist/services/chat-assistant.helpers.js.map +1 -1
  41. package/dist/services/chat-assistant.js +5 -1
  42. package/dist/services/chat-assistant.js.map +1 -1
  43. package/dist/services/chats.d.ts +2 -1
  44. package/dist/services/chats.d.ts.map +1 -1
  45. package/dist/services/chats.js +2 -2
  46. package/dist/services/chats.js.map +1 -1
  47. package/dist/services/finance.d.ts +1 -1
  48. package/dist/services/goals.d.ts +11 -7
  49. package/dist/services/goals.d.ts.map +1 -1
  50. package/dist/services/goals.js +54 -33
  51. package/dist/services/goals.js.map +1 -1
  52. package/dist/services/issue-assignment-wakeup.d.ts +1 -0
  53. package/dist/services/issue-assignment-wakeup.d.ts.map +1 -1
  54. package/dist/services/issue-assignment-wakeup.js +2 -0
  55. package/dist/services/issue-assignment-wakeup.js.map +1 -1
  56. package/dist/services/issues.d.ts +6 -3
  57. package/dist/services/issues.d.ts.map +1 -1
  58. package/dist/services/issues.js +134 -5
  59. package/dist/services/issues.js.map +1 -1
  60. package/dist/services/knowledge-portability/organization-portability.js +1 -1
  61. package/dist/services/knowledge-portability/organization-portability.js.map +1 -1
  62. package/dist/services/projects.d.ts +1 -1
  63. package/dist/services/run-intelligence.d.ts +1 -0
  64. package/dist/services/run-intelligence.d.ts.map +1 -1
  65. package/dist/services/run-intelligence.js +6 -0
  66. package/dist/services/run-intelligence.js.map +1 -1
  67. package/dist/services/runtime-kernel/heartbeat.core.d.ts +19 -1
  68. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  69. package/dist/services/runtime-kernel/heartbeat.core.js +53 -4
  70. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  71. package/dist/services/runtime-kernel/heartbeat.d.ts +9 -0
  72. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  73. package/dist/services/runtime-kernel/heartbeat.js +17 -0
  74. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  75. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
  76. package/dist/services/runtime-kernel/heartbeat.recovery.js +17 -1
  77. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
  78. package/dist/services/runtime-kernel/heartbeat.release.d.ts.map +1 -1
  79. package/dist/services/runtime-kernel/heartbeat.release.js +1 -0
  80. package/dist/services/runtime-kernel/heartbeat.release.js.map +1 -1
  81. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts.map +1 -1
  82. package/dist/services/runtime-kernel/heartbeat.sessions.js +10 -2
  83. package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -1
  84. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +8 -0
  85. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -1
  86. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
  87. package/dist/services/runtime-kernel/heartbeat.wakeup.js +28 -0
  88. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  89. package/package.json +14 -14
  90. package/resources/bundled-skills/rudder-docs/references/agent-creation.md +5 -2
  91. package/resources/bundled-skills/rudder-docs/references/api-reference.md +6 -4
  92. package/resources/bundled-skills/rudder-docs/references/cli-reference.md +1 -1
  93. package/skills/rudder-docs/references/agent-creation.md +5 -2
  94. package/skills/rudder-docs/references/api-reference.md +6 -4
  95. package/skills/rudder-docs/references/cli-reference.md +1 -1
  96. package/ui-dist/assets/{LibraryLiveSurface-tCWxJKp5.js → LibraryLiveSurface-Dl_mRBqL.js} +1 -1
  97. package/ui-dist/assets/{abnfDiagram-VRR7QNED-BcCms-hs.js → abnfDiagram-VRR7QNED-4MIrDcN0.js} +1 -1
  98. package/ui-dist/assets/{addon-fit-CH3xNHN4.js → addon-fit-DaLbwAfQ.js} +1 -1
  99. package/ui-dist/assets/{arc-h5W-EkRK.js → arc-DrbWjUWY.js} +1 -1
  100. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-Bdehm1PB.js → architectureDiagram-ZJ3FMSHR-Bt-JYYfG.js} +1 -1
  101. package/ui-dist/assets/{blockDiagram-677ZJIJ3-BJ3W91Su.js → blockDiagram-677ZJIJ3-OXUbGv47.js} +1 -1
  102. package/ui-dist/assets/{c4Diagram-LMCZKHZV-Bnft_fRy.js → c4Diagram-LMCZKHZV-C_EcNhSw.js} +1 -1
  103. package/ui-dist/assets/channel-DL45J6-6.js +1 -0
  104. package/ui-dist/assets/{chunk-2Q5K7J3B-w1SF0tSk.js → chunk-2Q5K7J3B-DY-Rya7u.js} +1 -1
  105. package/ui-dist/assets/{chunk-32BRIVSS-C1UzXTFZ.js → chunk-32BRIVSS-CTrRcC7g.js} +1 -1
  106. package/ui-dist/assets/{chunk-5VM5RSS4-COVI3rNd.js → chunk-5VM5RSS4-CFfB2lwI.js} +1 -1
  107. package/ui-dist/assets/{chunk-EX3LRPZG-DxQOLy7z.js → chunk-EX3LRPZG-C0nNM3QW.js} +1 -1
  108. package/ui-dist/assets/{chunk-JWPE2WC7-KTwmElcL.js → chunk-JWPE2WC7-Bzqz4lCp.js} +1 -1
  109. package/ui-dist/assets/{chunk-MOJQB5TN-BynL4lzA.js → chunk-MOJQB5TN-B7JFd8bM.js} +1 -1
  110. package/ui-dist/assets/{chunk-RYQCIY6F-CJksBfuJ.js → chunk-RYQCIY6F-a5E8W5cO.js} +1 -1
  111. package/ui-dist/assets/{chunk-V7JOEXUC-C_zED5WJ.js → chunk-V7JOEXUC-lhKPx7D_.js} +1 -1
  112. package/ui-dist/assets/{chunk-VR4S4FIN-BHDtMeiT.js → chunk-VR4S4FIN-bZBK3VoP.js} +1 -1
  113. package/ui-dist/assets/{chunk-XXDRQBXY-C0VvJgte.js → chunk-XXDRQBXY-Di3ho8vJ.js} +1 -1
  114. package/ui-dist/assets/classDiagram-OUVF2IWQ-DuHN7Tz9.js +1 -0
  115. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-DuHN7Tz9.js +1 -0
  116. package/ui-dist/assets/{cose-bilkent-JH36ORCC-DsTTzpP7.js → cose-bilkent-JH36ORCC-CGSlPnRr.js} +1 -1
  117. package/ui-dist/assets/{cynefin-VYW2F7L2-BfULw90s.js → cynefin-VYW2F7L2-BfELv7kL.js} +1 -1
  118. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-BukSzKVC.js → cynefinDiagram-TSTJHNR4-iMVux7wr.js} +1 -1
  119. package/ui-dist/assets/{dagre-VKFMJZFB-BbZY_Ipf.js → dagre-VKFMJZFB-imUTNZ-g.js} +1 -1
  120. package/ui-dist/assets/{diagram-FQU43EPY-BTYIYn2p.js → diagram-FQU43EPY-i0bYfkK2.js} +1 -1
  121. package/ui-dist/assets/{diagram-G47NLZAW-CikY_FKi.js → diagram-G47NLZAW-CN7P8lGu.js} +1 -1
  122. package/ui-dist/assets/{diagram-NH7WQ7WH-BfZ7AlT8.js → diagram-NH7WQ7WH-BJ4dmUnA.js} +1 -1
  123. package/ui-dist/assets/{diagram-OA4YK3LP-f5AikxJj.js → diagram-OA4YK3LP-DDWgQGqt.js} +1 -1
  124. package/ui-dist/assets/{diagram-WEI45ONY-BCbG5yas.js → diagram-WEI45ONY-3At0yiVq.js} +1 -1
  125. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-DT-3mJLY.js → ebnfDiagram-CCIWWBDH-Dk6Q1_n0.js} +1 -1
  126. package/ui-dist/assets/{erDiagram-Q63AITRT-BsfOhDfe.js → erDiagram-Q63AITRT-DIQXCD2C.js} +1 -1
  127. package/ui-dist/assets/{flowDiagram-23GEKE2U-BfaeQCsg.js → flowDiagram-23GEKE2U-D19_Ed2R.js} +1 -1
  128. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-CgPQruVz.js → ganttDiagram-NO4QXBWP-JdDX_faf.js} +1 -1
  129. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-CNrBFzjY.js → gitGraphDiagram-IHSO6WYX-D1H6mGeL.js} +1 -1
  130. package/ui-dist/assets/{graph-QqDTzUUJ.js → graph-BG22o1KD.js} +1 -1
  131. package/ui-dist/assets/{index-Dc_DUpPj.js → index-BDNVVxYy.js} +1 -1
  132. package/ui-dist/assets/{index-BAt16m_U.js → index-BRGW3KLv.js} +1 -1
  133. package/ui-dist/assets/{index-sFJMMyA3.js → index-BxHKdZbS.js} +1 -1
  134. package/ui-dist/assets/{index-DZ4gAeDM.js → index-C0wGrz8h.js} +1 -1
  135. package/ui-dist/assets/{index-2cYcOpZB.js → index-CVu9lnBy.js} +1 -1
  136. package/ui-dist/assets/{index-BY8xCKIE.js → index-CqaANx_i.js} +1 -1
  137. package/ui-dist/assets/{index-CQ92CxVC.js → index-CwdDPdqf.js} +1 -1
  138. package/ui-dist/assets/{index-CQFwlD-o.js → index-D3lUbbsS.js} +1 -1
  139. package/ui-dist/assets/{index-Befy20DN.js → index-DDIA_6o8.js} +1 -1
  140. package/ui-dist/assets/{index-BuIyK71w.js → index-DL6O5Ix-.js} +553 -554
  141. package/ui-dist/assets/{index-2ZQZC89T.js → index-DXA-HNO5.js} +1 -1
  142. package/ui-dist/assets/{index-Dqv46mWS.js → index-KZiKwV4T.js} +1 -1
  143. package/ui-dist/assets/{index-BogOyxlk.js → index-MrGb7TRh.js} +1 -1
  144. package/ui-dist/assets/{index-BfAP3xNl.js → index-inavbYTa.js} +1 -1
  145. package/ui-dist/assets/index-rHP5bnon.css +32 -0
  146. package/ui-dist/assets/{index-Cu4qo_D7.js → index-uHZfZjdL.js} +1 -1
  147. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-BJHuaNA9.js → infoDiagram-FWYZ7A6U-CVUn5UCu.js} +1 -1
  148. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-CmsA1Knp.js → ishikawaDiagram-FXEZZL3T-5BbuWr6T.js} +1 -1
  149. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-iV_Nt9d4.js → journeyDiagram-5HDEW3XC-DoCwetKy.js} +1 -1
  150. package/ui-dist/assets/{kanban-definition-HUTT4EX6-D45s70Ny.js → kanban-definition-HUTT4EX6-BNDYA9Vo.js} +1 -1
  151. package/ui-dist/assets/{layout-DDC-iOzY.js → layout-DUhTcIiA.js} +1 -1
  152. package/ui-dist/assets/{linear-DCTJ7Pq3.js → linear-CCEHbSzg.js} +1 -1
  153. package/ui-dist/assets/{map-RGy5k616.js → map-C8V41jZb.js} +1 -1
  154. package/ui-dist/assets/{mermaid.core-6MH04cvi.js → mermaid.core-UAa_NJSl.js} +4 -4
  155. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-CA2LFmda.js → mindmap-definition-LN4V7U3C-C_ygOwPG.js} +1 -1
  156. package/ui-dist/assets/{pegDiagram-2B236MQR-DDsUr2du.js → pegDiagram-2B236MQR-Dz0Nw1iK.js} +1 -1
  157. package/ui-dist/assets/{pieDiagram-ENE6RG2P-D7jEL8xK.js → pieDiagram-ENE6RG2P-DSn9W4hM.js} +1 -1
  158. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-BsJxgVLb.js → quadrantDiagram-ABIIQ3AL-D6cn2p2u.js} +1 -1
  159. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-CBI457f6.js → railroadDiagram-RFXS5EU6-DkQOZUbI.js} +1 -1
  160. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-_GAc0NOO.js → requirementDiagram-TGXJPOKE-CVxaeOzG.js} +1 -1
  161. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-DNIaj5hu.js → sankeyDiagram-HTMAVEWB-DsCkJ9Sr.js} +1 -1
  162. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-BHDZs2dc.js → sequenceDiagram-DBY2YBRQ-DSVgeeYC.js} +1 -1
  163. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-DwKT6aTP.js → sizeCapture-X5ZJPWSS-jYNNSFFN.js} +1 -1
  164. package/ui-dist/assets/{stateDiagram-2N3HPSRC-D2hDsltG.js → stateDiagram-2N3HPSRC-HMmvTfZO.js} +1 -1
  165. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-Ij5NPf9Z.js +1 -0
  166. package/ui-dist/assets/{swimlanes-5IMT3BWC-BV8xA0iq.js → swimlanes-5IMT3BWC-B7lpTS-P.js} +2 -2
  167. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-VbzuYi16.js +8 -0
  168. package/ui-dist/assets/{timeline-definition-FHXFAJF6-BPJMubhV.js → timeline-definition-FHXFAJF6-CfjkTbE1.js} +1 -1
  169. package/ui-dist/assets/{vennDiagram-L72KCM5P-CY76J0Px.js → vennDiagram-L72KCM5P-gK5ZOhfi.js} +1 -1
  170. package/ui-dist/assets/{wardleyDiagram-EHGQE667-pmNWLdE_.js → wardleyDiagram-EHGQE667-ClAgPp4O.js} +1 -1
  171. package/ui-dist/assets/{xterm-UByodpzD.js → xterm-CI3dnrG9.js} +1 -1
  172. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-BWZC7gWV.js → xychartDiagram-FW5EYKEG-CMu8n5xR.js} +1 -1
  173. package/ui-dist/index.html +2 -2
  174. package/ui-dist/assets/channel-G6qIOCiV.js +0 -1
  175. package/ui-dist/assets/classDiagram-OUVF2IWQ-D15_PFCL.js +0 -1
  176. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-D15_PFCL.js +0 -1
  177. package/ui-dist/assets/index-DRuC5g8V.css +0 -32
  178. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-CMTeJdkk.js +0 -1
  179. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-ChF8QLeM.js +0 -8
@@ -15,6 +15,7 @@ export declare function queueIssueAssignmentWakeup(input: {
15
15
  heartbeat: IssueAssignmentWakeupDeps;
16
16
  issue: {
17
17
  id: string;
18
+ goalId?: string | null;
18
19
  assigneeAgentId: string | null;
19
20
  status: string;
20
21
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"issue-assignment-wakeup.d.ts","sourceRoot":"","sources":["../../src/services/issue-assignment-wakeup.ts"],"names":[],"mappings":"AAGA,KAAK,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AACrE,KAAK,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;AAEnF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,CACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,aAAa,CAAC,EAAE,mBAAmB,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzC,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;QACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAgCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,gCAyBA"}
1
+ {"version":3,"file":"issue-assignment-wakeup.d.ts","sourceRoot":"","sources":["../../src/services/issue-assignment-wakeup.ts"],"names":[],"mappings":"AAGA,KAAK,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AACrE,KAAK,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;AAEnF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,CACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,aAAa,CAAC,EAAE,mBAAmB,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzC,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;QACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAmCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,SAAS,EAAE,yBAAyB,CAAC;IACrC,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,gCA0BA"}
@@ -3,6 +3,7 @@ import { logger } from "../middleware/logger.js";
3
3
  function buildIssueContextSnapshot(issue) {
4
4
  return {
5
5
  id: issue.id,
6
+ goalId: issue.goalId ?? null,
6
7
  title: issue.title,
7
8
  description: issue.description,
8
9
  status: issue.status,
@@ -26,6 +27,7 @@ export function queueIssueAssignmentWakeup(input) {
26
27
  requestedByActorId: input.requestedByActorId ?? null,
27
28
  contextSnapshot: {
28
29
  issueId: input.issue.id,
30
+ goalId: input.issue.goalId ?? null,
29
31
  source: input.contextSource,
30
32
  wakeSource: "assignment",
31
33
  wakeReason: input.reason,
@@ -1 +1 @@
1
- {"version":3,"file":"issue-assignment-wakeup.js","sourceRoot":"","sources":["../../src/services/issue-assignment-wakeup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AA6BjD,SAAS,yBAAyB,CAAC,KAMlC;IACC,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,WAAsC;IAC3E,MAAM,QAAQ,GAAG,mCAAmC,CAAC,WAAW,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAgB1C;IACC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IAE7E,OAAO,KAAK,CAAC,SAAS;SACnB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE;QACnC,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,QAAQ;QACvB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QAC9D,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;QACpD,eAAe,EAAE;YACf,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,EAAE,KAAK,CAAC,aAAa;YAC3B,UAAU,EAAE,YAAY;YACxB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7C,GAAG,6BAA6B,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;SAC1D;KACF,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,6CAA6C,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,cAAc;YAAE,MAAM,GAAG,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"issue-assignment-wakeup.js","sourceRoot":"","sources":["../../src/services/issue-assignment-wakeup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AA8BjD,SAAS,yBAAyB,CAAC,KAOlC;IACC,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,WAAsC;IAC3E,MAAM,QAAQ,GAAG,mCAAmC,CAAC,WAAW,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAiB1C;IACC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IAE7E,OAAO,KAAK,CAAC,SAAS;SACnB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE;QACnC,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,QAAQ;QACvB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QAC9D,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;QACpD,eAAe,EAAE;YACf,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI;YAClC,MAAM,EAAE,KAAK,CAAC,aAAa;YAC3B,UAAU,EAAE,YAAY;YACxB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7C,GAAG,6BAA6B,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;SAC1D;KACF,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,6CAA6C,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,cAAc;YAAE,MAAM,GAAG,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -9,10 +9,13 @@
9
9
  import type { Db } from "@rudderhq/db";
10
10
  import { issues, labels } from "@rudderhq/db";
11
11
  import { type ReorderIssue } from "@rudderhq/shared";
12
+ import type { StorageService } from "../storage/types.js";
12
13
  import { type IssueFilters, type IssueWithLabelsAndRun } from "./issues.helpers.js";
13
14
  export { deriveIssueUserContext } from "./issues.helpers.js";
14
15
  export type { IssueFilters } from "./issues.helpers.js";
15
- export declare function issueService(db: Db): {
16
+ export declare function extractIssueDescriptionAssetIds(description: string | null | undefined): string[];
17
+ export declare function rewriteIssueDescriptionAssetPaths(description: string, replacements: ReadonlyMap<string, string>): string;
18
+ export declare function issueService(db: Db, storage?: StorageService): {
16
19
  getAncestors: (issueId: string) => Promise<{
17
20
  project: {
18
21
  id: string;
@@ -354,10 +357,10 @@ export declare function issueService(db: Db): {
354
357
  id?: string | undefined;
355
358
  startedAt?: Date | null | undefined;
356
359
  updatedAt?: Date | undefined;
360
+ goalId?: string | null | undefined;
357
361
  description?: string | null | undefined;
358
362
  createdAt?: Date | undefined;
359
363
  identifier?: string | null | undefined;
360
- goalId?: string | null | undefined;
361
364
  priority?: string | undefined;
362
365
  parentId?: string | null | undefined;
363
366
  assigneeAgentId?: string | null | undefined;
@@ -399,10 +402,10 @@ export declare function issueService(db: Db): {
399
402
  id?: string | undefined;
400
403
  startedAt?: Date | null | undefined;
401
404
  updatedAt?: Date | undefined;
405
+ goalId?: string | null | undefined;
402
406
  description?: string | null | undefined;
403
407
  createdAt?: Date | undefined;
404
408
  identifier?: string | null | undefined;
405
- goalId?: string | null | undefined;
406
409
  priority?: string | undefined;
407
410
  parentId?: string | null | undefined;
408
411
  assigneeAgentId?: string | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/services/issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/services/issues.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { activityLog, agents, assets, documents, executionWorkspaces, goals, heartbeatRuns, issueAttachments, issueComments, issueDocuments, issueFollows, issueLabels, issueReadStates, issues, labels, organizationIssuePrefixAliases, organizationMemberships, organizations, projectWorkspaces, projects } from "@rudderhq/db";
2
+ import { isUuidLike } from "@rudderhq/shared";
2
3
  import { and, asc, desc, eq, inArray, isNull, ne, or, sql } from "drizzle-orm";
4
+ import { randomUUID } from "node:crypto";
3
5
  import { conflict, notFound, unprocessable } from "../errors.js";
4
6
  import { redactCurrentUserText } from "../log-redaction.js";
7
+ import { logger } from "../middleware/logger.js";
5
8
  import { defaultIssueExecutionWorkspaceSettingsForProject, parseProjectExecutionWorkspacePolicy, } from "./execution-workspace-policy.js";
6
9
  import { instanceSettingsService } from "./instance-settings.js";
7
10
  import { issueMaterialUpdateActivitySql } from "./issue-activity-filters.js";
@@ -12,6 +15,96 @@ import { BOARD_ORDER_STEP, TERMINAL_HEARTBEAT_RUN_STATUSES, activeRunMapForIssue
12
15
  export { deriveIssueUserContext } from "./issues.helpers.js";
13
16
  const DEFAULT_ISSUE_SEARCH_FIELDS = ["title"];
14
17
  const MAX_ISSUE_LIST_LIMIT = 500;
18
+ const ISSUE_DESCRIPTION_ASSET_PATH_RE = /\/api\/assets\/([^/?#\s)]+)\/content/g;
19
+ export function extractIssueDescriptionAssetIds(description) {
20
+ if (!description)
21
+ return [];
22
+ const ids = new Set();
23
+ for (const match of description.matchAll(ISSUE_DESCRIPTION_ASSET_PATH_RE)) {
24
+ const assetId = match[1]?.trim();
25
+ if (assetId && isUuidLike(assetId))
26
+ ids.add(assetId.toLowerCase());
27
+ }
28
+ return [...ids];
29
+ }
30
+ export function rewriteIssueDescriptionAssetPaths(description, replacements) {
31
+ return description.replace(ISSUE_DESCRIPTION_ASSET_PATH_RE, (full, assetId) => {
32
+ return replacements.get(assetId.toLowerCase()) ?? full;
33
+ });
34
+ }
35
+ async function readStorageObject(stream) {
36
+ const chunks = [];
37
+ for await (const chunk of stream) {
38
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
39
+ }
40
+ return Buffer.concat(chunks);
41
+ }
42
+ async function stageIssueDescriptionAssets(input) {
43
+ const sourceAssetIds = extractIssueDescriptionAssetIds(input.description);
44
+ if (sourceAssetIds.length === 0) {
45
+ return {
46
+ description: input.description,
47
+ attachments: [],
48
+ };
49
+ }
50
+ const sourceAssets = await input.tx
51
+ .select()
52
+ .from(assets)
53
+ .where(and(eq(assets.orgId, input.orgId), inArray(assets.id, sourceAssetIds)));
54
+ const sourceAssetsById = new Map(sourceAssets.map((asset) => [asset.id, asset]));
55
+ const replacements = new Map();
56
+ const attachments = [];
57
+ for (const sourceAssetId of sourceAssetIds) {
58
+ const sourceAsset = sourceAssetsById.get(sourceAssetId);
59
+ if (!sourceAsset) {
60
+ throw unprocessable("Issue description image asset is missing or outside the organization");
61
+ }
62
+ let stored;
63
+ try {
64
+ const object = await input.storage.getObject(input.orgId, sourceAsset.objectKey);
65
+ const body = await readStorageObject(object.stream);
66
+ if (body.length === 0)
67
+ throw new Error("Issue description image asset is empty");
68
+ stored = await input.storage.putFile({
69
+ orgId: input.orgId,
70
+ namespace: `issues/${input.issueId}/description`,
71
+ originalFilename: sourceAsset.originalFilename,
72
+ contentType: sourceAsset.contentType || object.contentType || "application/octet-stream",
73
+ body,
74
+ });
75
+ }
76
+ catch (error) {
77
+ logger.warn({ err: error, orgId: input.orgId, assetId: sourceAsset.id, issueId: input.issueId }, "failed to preserve an Issue description asset");
78
+ throw unprocessable("Issue description image could not be saved; please retry the Issue creation");
79
+ }
80
+ input.copiedObjectKeys.push({ orgId: input.orgId, objectKey: stored.objectKey });
81
+ const [copiedAsset] = await input.tx
82
+ .insert(assets)
83
+ .values({
84
+ orgId: input.orgId,
85
+ provider: stored.provider,
86
+ objectKey: stored.objectKey,
87
+ contentType: stored.contentType,
88
+ byteSize: stored.byteSize,
89
+ sha256: stored.sha256,
90
+ originalFilename: stored.originalFilename,
91
+ createdByAgentId: input.createdByAgentId ?? null,
92
+ createdByUserId: input.createdByUserId ?? null,
93
+ })
94
+ .returning({ id: assets.id });
95
+ if (!copiedAsset)
96
+ throw new Error("Failed to create preserved Issue description asset");
97
+ const attachmentId = randomUUID();
98
+ attachments.push({ attachmentId, assetId: copiedAsset.id });
99
+ replacements.set(sourceAsset.id, `/api/attachments/${attachmentId}/content`);
100
+ }
101
+ return {
102
+ description: typeof input.description === "string"
103
+ ? rewriteIssueDescriptionAssetPaths(input.description, replacements)
104
+ : input.description,
105
+ attachments,
106
+ };
107
+ }
15
108
  function normalizeIssueSearchFields(fields) {
16
109
  const allowed = new Set(["title", "description", "comment"]);
17
110
  const normalized = (fields ?? DEFAULT_ISSUE_SEARCH_FIELDS).filter((field) => allowed.has(field));
@@ -33,7 +126,7 @@ function normalizeIssueListOffset(offset) {
33
126
  return undefined;
34
127
  return normalized;
35
128
  }
36
- export function issueService(db) {
129
+ export function issueService(db, storage) {
37
130
  const instanceSettings = instanceSettingsService(db);
38
131
  const issueCreateResults = new WeakMap();
39
132
  let createIssue;
@@ -785,8 +878,9 @@ export function issueService(db) {
785
878
  if (data.status === "in_progress" && !data.assigneeAgentId && !data.assigneeUserId) {
786
879
  throw unprocessable("in_progress issues require an assignee");
787
880
  }
881
+ const copiedObjectKeys = [];
788
882
  try {
789
- return await db.transaction(async (tx) => {
883
+ const createdIssue = await db.transaction(async (tx) => {
790
884
  let executionWorkspaceSettings = issueData.executionWorkspaceSettings ?? null;
791
885
  if (executionWorkspaceSettings == null && issueData.projectId) {
792
886
  const project = await tx
@@ -827,8 +921,27 @@ export function issueService(db) {
827
921
  .returning({ issueCounter: organizations.issueCounter, issuePrefix: organizations.issuePrefix });
828
922
  const issueNumber = organization.issueCounter;
829
923
  const identifier = `${organization.issuePrefix}-${issueNumber}`;
924
+ const issueId = issueData.id ?? randomUUID();
925
+ const sourceAssetIds = extractIssueDescriptionAssetIds(issueData.description);
926
+ if (sourceAssetIds.length > 0 && !storage) {
927
+ throw unprocessable("Issue description image storage is unavailable; please retry the Issue creation");
928
+ }
929
+ const stagedDescriptionAssets = storage
930
+ ? await stageIssueDescriptionAssets({
931
+ tx,
932
+ storage,
933
+ orgId,
934
+ issueId,
935
+ description: issueData.description,
936
+ copiedObjectKeys,
937
+ createdByAgentId: issueData.createdByAgentId,
938
+ createdByUserId: issueData.createdByUserId,
939
+ })
940
+ : null;
830
941
  const values = {
831
942
  ...issueData,
943
+ id: issueId,
944
+ ...(stagedDescriptionAssets ? { description: stagedDescriptionAssets.description } : {}),
832
945
  originKind: issueData.originKind ?? "manual",
833
946
  goalId: issueData.goalId ?? null,
834
947
  ...(projectWorkspaceId ? { projectWorkspaceId } : {}),
@@ -857,6 +970,15 @@ export function issueService(db) {
857
970
  }
858
971
  const resolvedLabelIds = await resolveCreateLabelIds(orgId, issueData, inputLabelIds, tx);
859
972
  const [issue] = await tx.insert(issues).values(values).returning();
973
+ if (stagedDescriptionAssets && stagedDescriptionAssets.attachments.length > 0) {
974
+ await tx.insert(issueAttachments).values(stagedDescriptionAssets.attachments.map((attachment) => ({
975
+ id: attachment.attachmentId,
976
+ orgId,
977
+ issueId: issue.id,
978
+ assetId: attachment.assetId,
979
+ usage: "description_inline",
980
+ })));
981
+ }
860
982
  if (resolvedLabelIds) {
861
983
  await syncIssueLabels(issue.id, orgId, resolvedLabelIds, tx);
862
984
  }
@@ -924,8 +1046,15 @@ export function issueService(db) {
924
1046
  const [enriched] = await withIssueLabels(tx, [issue]);
925
1047
  return rememberIssueCreateResult(enriched, true);
926
1048
  });
1049
+ copiedObjectKeys.length = 0;
1050
+ return createdIssue;
927
1051
  }
928
1052
  catch (error) {
1053
+ if (storage) {
1054
+ await Promise.all(copiedObjectKeys.map((object) => storage.deleteObject(object.orgId, object.objectKey).catch((cleanupError) => {
1055
+ logger.warn({ err: cleanupError, orgId: object.orgId, objectKey: object.objectKey }, "failed to clean up a staged Issue description asset");
1056
+ })));
1057
+ }
929
1058
  if (!agentIssueCreationOrigin || !isUniqueConstraintConflict(error, "issues_agent_issue_creation_origin_uq")) {
930
1059
  throw error;
931
1060
  }
@@ -995,9 +1124,9 @@ export function issueService(db) {
995
1124
  const relationshipCondition = authorization
996
1125
  ? authorization.relationship === "reviewer"
997
1126
  ? eq(issues.reviewerAgentId, authorization.agentId)
998
- : or(eq(issues.reviewerAgentId, authorization.agentId), and(eq(issues.assigneeAgentId, authorization.agentId), or(ne(issues.status, "in_progress"), authorization.runId
999
- ? and(eq(issues.status, "in_progress"), eq(issues.checkoutRunId, authorization.runId))
1000
- : sql `false`)))
1127
+ : or(eq(issues.reviewerAgentId, authorization.agentId), and(eq(issues.assigneeAgentId, authorization.agentId), or(ne(issues.status, "in_progress"), and(eq(issues.status, "in_progress"), or(isNull(issues.checkoutRunId), authorization.runId
1128
+ ? eq(issues.checkoutRunId, authorization.runId)
1129
+ : sql `false`)))))
1001
1130
  : undefined;
1002
1131
  const authorizationCondition = relationshipCondition && authorization?.requireReviewableStatus
1003
1132
  ? and(relationshipCondition, inArray(issues.status, ["in_review", "blocked"]))