@rudderhq/server 0.7.11 → 0.7.13

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 (272) hide show
  1. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  2. package/dist/bootstrap/register-api-routes.js +1 -1
  3. package/dist/bootstrap/register-api-routes.js.map +1 -1
  4. package/dist/bootstrap/types.d.ts +12 -0
  5. package/dist/bootstrap/types.d.ts.map +1 -1
  6. package/dist/index.js +20 -5
  7. package/dist/index.js.map +1 -1
  8. package/dist/routes/agents.management-routes.d.ts.map +1 -1
  9. package/dist/routes/agents.management-routes.js +10 -2
  10. package/dist/routes/agents.management-routes.js.map +1 -1
  11. package/dist/routes/chats.d.ts +2 -1
  12. package/dist/routes/chats.d.ts.map +1 -1
  13. package/dist/routes/chats.js +377 -4
  14. package/dist/routes/chats.js.map +1 -1
  15. package/dist/routes/chats.stream-routes.d.ts.map +1 -1
  16. package/dist/routes/chats.stream-routes.js +55 -3
  17. package/dist/routes/chats.stream-routes.js.map +1 -1
  18. package/dist/routes/goals.d.ts.map +1 -1
  19. package/dist/routes/goals.js +34 -3
  20. package/dist/routes/goals.js.map +1 -1
  21. package/dist/routes/orgs.d.ts.map +1 -1
  22. package/dist/routes/orgs.js +22 -1
  23. package/dist/routes/orgs.js.map +1 -1
  24. package/dist/routes/run-intelligence.d.ts.map +1 -1
  25. package/dist/routes/run-intelligence.js +10 -0
  26. package/dist/routes/run-intelligence.js.map +1 -1
  27. package/dist/services/agent-instructions.d.ts +1 -0
  28. package/dist/services/agent-instructions.d.ts.map +1 -1
  29. package/dist/services/agent-instructions.js +124 -6
  30. package/dist/services/agent-instructions.js.map +1 -1
  31. package/dist/services/agent-issue-creation.d.ts +1 -1
  32. package/dist/services/agent-run-context.d.ts.map +1 -1
  33. package/dist/services/agent-run-context.js +15 -0
  34. package/dist/services/agent-run-context.js.map +1 -1
  35. package/dist/services/agent-startup-context.d.ts +4 -0
  36. package/dist/services/agent-startup-context.d.ts.map +1 -1
  37. package/dist/services/agent-startup-context.js +57 -13
  38. package/dist/services/agent-startup-context.js.map +1 -1
  39. package/dist/services/agents.d.ts +253 -0
  40. package/dist/services/agents.d.ts.map +1 -1
  41. package/dist/services/automations.d.ts.map +1 -1
  42. package/dist/services/automations.js +3 -0
  43. package/dist/services/automations.js.map +1 -1
  44. package/dist/services/chat-agent-runs.d.ts +48 -1
  45. package/dist/services/chat-agent-runs.d.ts.map +1 -1
  46. package/dist/services/chat-agent-runs.js +107 -3
  47. package/dist/services/chat-agent-runs.js.map +1 -1
  48. package/dist/services/chat-assistant.d.ts.map +1 -1
  49. package/dist/services/chat-assistant.helpers.d.ts +12 -3
  50. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  51. package/dist/services/chat-assistant.helpers.js +6 -0
  52. package/dist/services/chat-assistant.helpers.js.map +1 -1
  53. package/dist/services/chat-assistant.js +54 -18
  54. package/dist/services/chat-assistant.js.map +1 -1
  55. package/dist/services/chat-generation-protocol.d.ts +119 -0
  56. package/dist/services/chat-generation-protocol.d.ts.map +1 -1
  57. package/dist/services/chat-generation-protocol.js +65 -0
  58. package/dist/services/chat-generation-protocol.js.map +1 -1
  59. package/dist/services/chats.constants.d.ts +1 -1
  60. package/dist/services/chats.constants.d.ts.map +1 -1
  61. package/dist/services/chats.constants.js +1 -0
  62. package/dist/services/chats.constants.js.map +1 -1
  63. package/dist/services/chats.d.ts +128 -0
  64. package/dist/services/chats.d.ts.map +1 -1
  65. package/dist/services/chats.js +10 -0
  66. package/dist/services/chats.js.map +1 -1
  67. package/dist/services/finance.d.ts +1 -1
  68. package/dist/services/goals.d.ts +47 -7
  69. package/dist/services/goals.d.ts.map +1 -1
  70. package/dist/services/goals.js +74 -33
  71. package/dist/services/goals.js.map +1 -1
  72. package/dist/services/heartbeat-run-reference.d.ts.map +1 -1
  73. package/dist/services/heartbeat-run-reference.js +11 -5
  74. package/dist/services/heartbeat-run-reference.js.map +1 -1
  75. package/dist/services/index.d.ts +2 -1
  76. package/dist/services/index.d.ts.map +1 -1
  77. package/dist/services/index.js +2 -1
  78. package/dist/services/index.js.map +1 -1
  79. package/dist/services/integrations/feishu/runtime.d.ts +8 -0
  80. package/dist/services/integrations/feishu/runtime.d.ts.map +1 -1
  81. package/dist/services/integrations/feishu/runtime.js +124 -1
  82. package/dist/services/integrations/feishu/runtime.js.map +1 -1
  83. package/dist/services/issue-assignment-wakeup.d.ts +1 -0
  84. package/dist/services/issue-assignment-wakeup.d.ts.map +1 -1
  85. package/dist/services/issue-assignment-wakeup.js +2 -0
  86. package/dist/services/issue-assignment-wakeup.js.map +1 -1
  87. package/dist/services/issues.d.ts +2 -2
  88. package/dist/services/issues.d.ts.map +1 -1
  89. package/dist/services/issues.helpers.d.ts +8 -0
  90. package/dist/services/issues.helpers.d.ts.map +1 -1
  91. package/dist/services/issues.helpers.js +17 -1
  92. package/dist/services/issues.helpers.js.map +1 -1
  93. package/dist/services/issues.js +108 -15
  94. package/dist/services/issues.js.map +1 -1
  95. package/dist/services/messenger.d.ts.map +1 -1
  96. package/dist/services/messenger.js +12 -3
  97. package/dist/services/messenger.js.map +1 -1
  98. package/dist/services/organization-members.d.ts +27 -0
  99. package/dist/services/organization-members.d.ts.map +1 -0
  100. package/dist/services/organization-members.js +169 -0
  101. package/dist/services/organization-members.js.map +1 -0
  102. package/dist/services/organization-workspace-browser.d.ts.map +1 -1
  103. package/dist/services/organization-workspace-browser.js +44 -10
  104. package/dist/services/organization-workspace-browser.js.map +1 -1
  105. package/dist/services/product-intelligence.d.ts.map +1 -1
  106. package/dist/services/product-intelligence.js +4 -0
  107. package/dist/services/product-intelligence.js.map +1 -1
  108. package/dist/services/projects.d.ts +2 -5
  109. package/dist/services/projects.d.ts.map +1 -1
  110. package/dist/services/projects.js +27 -2
  111. package/dist/services/projects.js.map +1 -1
  112. package/dist/services/rudder-plugin-catalog.d.ts +1 -1
  113. package/dist/services/rudder-plugin-catalog.d.ts.map +1 -1
  114. package/dist/services/rudder-plugin-catalog.js +281 -15
  115. package/dist/services/rudder-plugin-catalog.js.map +1 -1
  116. package/dist/services/rudder-plugin-catalog.test.js +55 -0
  117. package/dist/services/rudder-plugin-catalog.test.js.map +1 -1
  118. package/dist/services/run-intelligence.d.ts +1 -0
  119. package/dist/services/run-intelligence.d.ts.map +1 -1
  120. package/dist/services/run-intelligence.js +8 -1
  121. package/dist/services/run-intelligence.js.map +1 -1
  122. package/dist/services/run-log-store.d.ts +3 -0
  123. package/dist/services/run-log-store.d.ts.map +1 -1
  124. package/dist/services/run-log-store.js +124 -18
  125. package/dist/services/run-log-store.js.map +1 -1
  126. package/dist/services/runtime-kernel/assignment-run-guardrail.d.ts +2 -0
  127. package/dist/services/runtime-kernel/assignment-run-guardrail.d.ts.map +1 -1
  128. package/dist/services/runtime-kernel/assignment-run-guardrail.js +5 -3
  129. package/dist/services/runtime-kernel/assignment-run-guardrail.js.map +1 -1
  130. package/dist/services/runtime-kernel/assignment-run-guardrail.test.js +20 -0
  131. package/dist/services/runtime-kernel/assignment-run-guardrail.test.js.map +1 -1
  132. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.d.ts +124 -0
  133. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.d.ts.map +1 -0
  134. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.js +108 -0
  135. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.js.map +1 -0
  136. package/dist/services/runtime-kernel/heartbeat.core.d.ts +129 -0
  137. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  138. package/dist/services/runtime-kernel/heartbeat.core.js +15 -0
  139. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  140. package/dist/services/runtime-kernel/heartbeat.d.ts +43 -0
  141. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  142. package/dist/services/runtime-kernel/heartbeat.execute.d.ts.map +1 -1
  143. package/dist/services/runtime-kernel/heartbeat.execute.js +229 -3
  144. package/dist/services/runtime-kernel/heartbeat.execute.js.map +1 -1
  145. package/dist/services/runtime-kernel/heartbeat.js +178 -6
  146. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  147. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
  148. package/dist/services/runtime-kernel/heartbeat.recovery.js +17 -1
  149. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
  150. package/dist/services/runtime-kernel/heartbeat.release.d.ts.map +1 -1
  151. package/dist/services/runtime-kernel/heartbeat.release.js +1 -0
  152. package/dist/services/runtime-kernel/heartbeat.release.js.map +1 -1
  153. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts.map +1 -1
  154. package/dist/services/runtime-kernel/heartbeat.sessions.js +25 -5
  155. package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -1
  156. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +56 -0
  157. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -1
  158. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
  159. package/dist/services/runtime-kernel/heartbeat.wakeup.js +28 -0
  160. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  161. package/dist/services/runtime-kernel/model-fallback.d.ts +4 -0
  162. package/dist/services/runtime-kernel/model-fallback.d.ts.map +1 -1
  163. package/dist/services/runtime-kernel/model-fallback.js +25 -4
  164. package/dist/services/runtime-kernel/model-fallback.js.map +1 -1
  165. package/dist/services/workspace-backup-v2.d.ts +20 -0
  166. package/dist/services/workspace-backup-v2.d.ts.map +1 -1
  167. package/dist/services/workspace-backup-v2.js +155 -23
  168. package/dist/services/workspace-backup-v2.js.map +1 -1
  169. package/dist/services/workspace-backup-v2.test.js +34 -2
  170. package/dist/services/workspace-backup-v2.test.js.map +1 -1
  171. package/dist/services/workspace-backups.d.ts +0 -1
  172. package/dist/services/workspace-backups.d.ts.map +1 -1
  173. package/dist/services/workspace-backups.js +18 -19
  174. package/dist/services/workspace-backups.js.map +1 -1
  175. package/dist/services/workspace-manifest-native.d.ts +10 -0
  176. package/dist/services/workspace-manifest-native.d.ts.map +1 -0
  177. package/dist/services/workspace-manifest-native.js +219 -0
  178. package/dist/services/workspace-manifest-native.js.map +1 -0
  179. package/dist/services/workspace-restore-reconciliation.d.ts +11 -0
  180. package/dist/services/workspace-restore-reconciliation.d.ts.map +1 -0
  181. package/dist/services/workspace-restore-reconciliation.js +165 -0
  182. package/dist/services/workspace-restore-reconciliation.js.map +1 -0
  183. package/package.json +14 -14
  184. package/resources/bundled-skills/rudder-docs/references/api-reference.md +8 -0
  185. package/resources/bundled-skills/rudder-docs/references/cli-reference.md +6 -3
  186. package/skills/rudder-docs/references/api-reference.md +8 -0
  187. package/skills/rudder-docs/references/cli-reference.md +6 -3
  188. package/ui-dist/assets/LibraryLiveSurface-l4GUICoP.js +1 -0
  189. package/ui-dist/assets/{abnfDiagram-VRR7QNED-BggxrEZR.js → abnfDiagram-VRR7QNED-BLBjJ-cq.js} +1 -1
  190. package/ui-dist/assets/{addon-fit-Cc1gOtSX.js → addon-fit-BJjiE5UX.js} +1 -1
  191. package/ui-dist/assets/{arc-0kNrc9xt.js → arc-Cc8Cihbb.js} +1 -1
  192. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-BOCa-5ab.js → architectureDiagram-ZJ3FMSHR--xCnNdhe.js} +1 -1
  193. package/ui-dist/assets/{blockDiagram-677ZJIJ3-CQU5jcsO.js → blockDiagram-677ZJIJ3-DRT2VAhQ.js} +1 -1
  194. package/ui-dist/assets/{c4Diagram-LMCZKHZV-ChgWIw5O.js → c4Diagram-LMCZKHZV-D88LDng_.js} +1 -1
  195. package/ui-dist/assets/channel-C5Hipz5u.js +1 -0
  196. package/ui-dist/assets/{chunk-2Q5K7J3B-B4yrwesI.js → chunk-2Q5K7J3B-Dz_vdT6U.js} +1 -1
  197. package/ui-dist/assets/{chunk-32BRIVSS-mhAeSMlR.js → chunk-32BRIVSS-DigOixDH.js} +1 -1
  198. package/ui-dist/assets/{chunk-5VM5RSS4-BmS_u59G.js → chunk-5VM5RSS4-C_1XAVwx.js} +1 -1
  199. package/ui-dist/assets/{chunk-EX3LRPZG-DXoTKkLG.js → chunk-EX3LRPZG-C6viraTj.js} +1 -1
  200. package/ui-dist/assets/{chunk-JWPE2WC7-Bj9myT03.js → chunk-JWPE2WC7-BCRBJeuJ.js} +1 -1
  201. package/ui-dist/assets/{chunk-MOJQB5TN-OAoJna8Y.js → chunk-MOJQB5TN-Cf1ATLhT.js} +1 -1
  202. package/ui-dist/assets/{chunk-RYQCIY6F-AGLA7TJn.js → chunk-RYQCIY6F-WltrJiTY.js} +1 -1
  203. package/ui-dist/assets/{chunk-V7JOEXUC-YGM2tDK2.js → chunk-V7JOEXUC-CA5tCSQF.js} +1 -1
  204. package/ui-dist/assets/{chunk-VR4S4FIN-DqaZn9Ty.js → chunk-VR4S4FIN-CEkOCBXH.js} +1 -1
  205. package/ui-dist/assets/{chunk-XXDRQBXY-Cpqn_8Bl.js → chunk-XXDRQBXY-CtrnGXIb.js} +1 -1
  206. package/ui-dist/assets/classDiagram-OUVF2IWQ-ClTHNkOu.js +1 -0
  207. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-ClTHNkOu.js +1 -0
  208. package/ui-dist/assets/{cose-bilkent-JH36ORCC-BVe-X26w.js → cose-bilkent-JH36ORCC-CByYAK4l.js} +1 -1
  209. package/ui-dist/assets/{cynefin-VYW2F7L2-DlDrrBWp.js → cynefin-VYW2F7L2-_sCXFLWX.js} +1 -1
  210. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-BSHvFeGh.js → cynefinDiagram-TSTJHNR4-CFeFfsqk.js} +1 -1
  211. package/ui-dist/assets/{dagre-VKFMJZFB-tUm70k9h.js → dagre-VKFMJZFB-Bqod3KpP.js} +1 -1
  212. package/ui-dist/assets/{diagram-FQU43EPY-C5kjITq7.js → diagram-FQU43EPY-BfvoZqSk.js} +1 -1
  213. package/ui-dist/assets/{diagram-G47NLZAW-BrbHgt8r.js → diagram-G47NLZAW-BXbnKoJ9.js} +1 -1
  214. package/ui-dist/assets/{diagram-NH7WQ7WH-DT7PdghT.js → diagram-NH7WQ7WH-DzyI0L8P.js} +1 -1
  215. package/ui-dist/assets/{diagram-OA4YK3LP-wOjhRHRo.js → diagram-OA4YK3LP-DTMuvqry.js} +1 -1
  216. package/ui-dist/assets/{diagram-WEI45ONY-Dz9vtaDT.js → diagram-WEI45ONY-CAzeoFPA.js} +1 -1
  217. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-BT5TzIA6.js → ebnfDiagram-CCIWWBDH-CV731d_d.js} +1 -1
  218. package/ui-dist/assets/{erDiagram-Q63AITRT-DLCpoOEP.js → erDiagram-Q63AITRT-X1TOS4Ka.js} +1 -1
  219. package/ui-dist/assets/{flowDiagram-23GEKE2U-DfF2COjh.js → flowDiagram-23GEKE2U-DVrBhhZN.js} +1 -1
  220. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-1d0KDwQs.js → ganttDiagram-NO4QXBWP-Bu2bat7s.js} +1 -1
  221. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-COLjS1ZR.js → gitGraphDiagram-IHSO6WYX-BACGK4uh.js} +1 -1
  222. package/ui-dist/assets/{graph-B7fcgpw_.js → graph-DBmSffWh.js} +1 -1
  223. package/ui-dist/assets/{index-DTc5LpTU.js → index-37d7mmQR.js} +1 -1
  224. package/ui-dist/assets/{index-DttnaNlV.js → index-BJLMZ-lO.js} +542 -543
  225. package/ui-dist/assets/{index-CTIfCQqR.js → index-BM89NC7H.js} +1 -1
  226. package/ui-dist/assets/{index-COLwjKBR.js → index-BlzBPtLA.js} +1 -1
  227. package/ui-dist/assets/{index-CXg1YCeI.js → index-C7oAJP9-.js} +1 -1
  228. package/ui-dist/assets/index-CPP8apmO.css +32 -0
  229. package/ui-dist/assets/{index-CZYXpHv4.js → index-CY63mXIN.js} +1 -1
  230. package/ui-dist/assets/{index-CgkYyYx9.js → index-CqrPtttL.js} +1 -1
  231. package/ui-dist/assets/{index-CMNULCMJ.js → index-D8VjtybU.js} +1 -1
  232. package/ui-dist/assets/{index-CH8I9acP.js → index-DsjgdWi0.js} +1 -1
  233. package/ui-dist/assets/{index-CbqgXGcs.js → index-Qr_boV5N.js} +1 -1
  234. package/ui-dist/assets/{index-B6zSdXAR.js → index-SBaOrW31.js} +1 -1
  235. package/ui-dist/assets/{index-D27Bbc-x.js → index-jawM4Mw8.js} +1 -1
  236. package/ui-dist/assets/{index-BczgTMAn.js → index-juSeEYHt.js} +1 -1
  237. package/ui-dist/assets/{index-Denv6wuU.js → index-qSO_9tQ4.js} +1 -1
  238. package/ui-dist/assets/{index-vtghjwab.js → index-sPs1blcu.js} +1 -1
  239. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-Bg4YQUu2.js → infoDiagram-FWYZ7A6U-DsKiGJG2.js} +1 -1
  240. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-BtgUVI_I.js → ishikawaDiagram-FXEZZL3T-qFWBzEXh.js} +1 -1
  241. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-BGHGjvN4.js → journeyDiagram-5HDEW3XC-CzXYTAgD.js} +1 -1
  242. package/ui-dist/assets/{kanban-definition-HUTT4EX6-DekQSNo8.js → kanban-definition-HUTT4EX6-BCz-L1fU.js} +1 -1
  243. package/ui-dist/assets/{layout-Bsw9hK6u.js → layout-YfTyU1_8.js} +1 -1
  244. package/ui-dist/assets/{linear-D8D1R-4C.js → linear-Cmr3155j.js} +1 -1
  245. package/ui-dist/assets/{map-BUIcuf4c.js → map-Cd3zkWna.js} +1 -1
  246. package/ui-dist/assets/{mermaid.core-CYZMLemV.js → mermaid.core-B0LpeiXb.js} +4 -4
  247. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-mjS9avIS.js → mindmap-definition-LN4V7U3C-53OklQRn.js} +1 -1
  248. package/ui-dist/assets/{pegDiagram-2B236MQR-Buziry9m.js → pegDiagram-2B236MQR-Dm_aMKAy.js} +1 -1
  249. package/ui-dist/assets/{pieDiagram-ENE6RG2P-B_9BmFEg.js → pieDiagram-ENE6RG2P-X7GdM_uO.js} +1 -1
  250. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-BxFdUA8s.js → quadrantDiagram-ABIIQ3AL-CwNrCyye.js} +1 -1
  251. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-pJh_afC-.js → railroadDiagram-RFXS5EU6-qeA8AyXg.js} +1 -1
  252. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-BGgk3AxL.js → requirementDiagram-TGXJPOKE-CbTV3-mv.js} +1 -1
  253. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-DdPKE4bs.js → sankeyDiagram-HTMAVEWB-Cb2FZniK.js} +1 -1
  254. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-xlik6FjZ.js → sequenceDiagram-DBY2YBRQ-43rfMbK2.js} +1 -1
  255. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-D_zKAjvf.js → sizeCapture-X5ZJPWSS-kd6mcpBA.js} +1 -1
  256. package/ui-dist/assets/{stateDiagram-2N3HPSRC-BGQP8giG.js → stateDiagram-2N3HPSRC-DVpqAreh.js} +1 -1
  257. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-CD2jPBKH.js +1 -0
  258. package/ui-dist/assets/{swimlanes-5IMT3BWC-ZhE8oAxR.js → swimlanes-5IMT3BWC-Cpgu2cLX.js} +2 -2
  259. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-CwSF2io0.js +8 -0
  260. package/ui-dist/assets/{timeline-definition-FHXFAJF6-CUqfijnL.js → timeline-definition-FHXFAJF6-BXgN1EJb.js} +1 -1
  261. package/ui-dist/assets/{vennDiagram-L72KCM5P-B_rqTUA0.js → vennDiagram-L72KCM5P-ZFEGgsAk.js} +1 -1
  262. package/ui-dist/assets/{wardleyDiagram-EHGQE667-BTvjybDi.js → wardleyDiagram-EHGQE667-DrxFJODe.js} +1 -1
  263. package/ui-dist/assets/{xterm-CRpDYL2s.js → xterm-DeUtt-wP.js} +1 -1
  264. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-ZBbwueZ5.js → xychartDiagram-FW5EYKEG-BNcvHMPz.js} +1 -1
  265. package/ui-dist/index.html +2 -2
  266. package/ui-dist/assets/LibraryLiveSurface-De1p59PK.js +0 -1
  267. package/ui-dist/assets/channel-eAoWqZqJ.js +0 -1
  268. package/ui-dist/assets/classDiagram-OUVF2IWQ-c94PI6yY.js +0 -1
  269. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-c94PI6yY.js +0 -1
  270. package/ui-dist/assets/index-RSbihTRP.css +0 -32
  271. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-BMEtuB93.js +0 -1
  272. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-Bdh18WfM.js +0 -8
@@ -0,0 +1,219 @@
1
+ import { resolveNativeCommand } from "@rudderhq/agent-runtime-utils";
2
+ import { resolveRudderNativeCapability, resolveRudderNativeTarget } from "@rudderhq/shared";
3
+ import { spawn } from "node:child_process";
4
+ import { createHash } from "node:crypto";
5
+ import { existsSync } from "node:fs";
6
+ import fs from "node:fs/promises";
7
+ import path from "node:path";
8
+ import readline from "node:readline";
9
+ import { fileURLToPath } from "node:url";
10
+ import { resolveRudderInstanceRoot } from "../home-paths.js";
11
+ const PROTOCOL_VERSION = 1;
12
+ const MAX_ENTRIES = 1_000_000;
13
+ const MAX_PATH_BYTES = 128 * 1024 * 1024;
14
+ const MAX_MANIFEST_BYTES = 256 * 1024 * 1024;
15
+ const DEBOUNCE_MS = 100;
16
+ const REQUIRED_READY_TIMEOUT_MS = 5_000;
17
+ const sessions = new Map();
18
+ class NativeWorkspaceManifestError extends Error {
19
+ diagnostic;
20
+ constructor(session, code, detail) {
21
+ super(detail);
22
+ this.name = "NativeWorkspaceManifestError";
23
+ this.diagnostic = {
24
+ capability: "workspace-manifest",
25
+ target: session.target,
26
+ binaryVersion: session.binaryVersion,
27
+ protocolVersion: String(PROTOCOL_VERSION),
28
+ effectiveEngine: "rust",
29
+ fallbackCode: code,
30
+ };
31
+ }
32
+ }
33
+ function nativeTarget() {
34
+ return resolveRudderNativeTarget();
35
+ }
36
+ export function resolveNativeWorkspaceManifestBinary() {
37
+ const configured = process.env.RUDDER_NATIVE_WORKSPACE_MANIFEST_PATH?.trim()
38
+ || process.env.RUDDER_NATIVE_PATH?.trim();
39
+ if (configured)
40
+ return path.resolve(configured);
41
+ const binaryName = process.platform === "win32" ? "rudder-native.exe" : "rudder-native";
42
+ const moduleDir = path.dirname(fileURLToPath(import.meta.url));
43
+ const target = nativeTarget();
44
+ const resourcesPath = process.env.RUDDER_DESKTOP_RESOURCES_PATH?.trim()
45
+ || (typeof process.resourcesPath === "string"
46
+ ? process.resourcesPath
47
+ : "");
48
+ const candidates = [
49
+ path.resolve(moduleDir, "../../../native/target/debug", binaryName),
50
+ path.resolve(moduleDir, "../../../../native/target/debug", binaryName),
51
+ path.resolve(moduleDir, "../../../native", target ?? "unsupported", binaryName),
52
+ resourcesPath && target ? path.resolve(resourcesPath, "native", target, binaryName) : "",
53
+ ].filter(Boolean);
54
+ return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
55
+ }
56
+ function manifestPathForRoot(rootPath) {
57
+ const key = createHash("sha256").update(path.resolve(rootPath)).digest("hex").slice(0, 24);
58
+ return path.resolve(resolveRudderInstanceRoot(), "data", "native-workspace-manifests", `${key}.json`);
59
+ }
60
+ function watchState(value) {
61
+ return ["building", "ready", "dirty", "overflow", "unavailable", "stopped"].includes(String(value))
62
+ ? value
63
+ : null;
64
+ }
65
+ async function startSession(rootPath) {
66
+ const manifestPath = manifestPathForRoot(rootPath);
67
+ await fs.mkdir(path.dirname(manifestPath), { recursive: true });
68
+ const command = resolveNativeCommand(resolveNativeWorkspaceManifestBinary(), [
69
+ "workspace", "watch", path.resolve(rootPath), manifestPath,
70
+ String(MAX_ENTRIES), String(MAX_PATH_BYTES), String(DEBOUNCE_MS),
71
+ ]);
72
+ const child = spawn(command.command, command.args, { stdio: ["pipe", "pipe", "pipe"], windowsHide: true });
73
+ const session = {
74
+ child, manifestPath, state: "building", exited: false,
75
+ target: nativeTarget() ?? "unsupported", binaryVersion: "unavailable",
76
+ };
77
+ const lines = readline.createInterface({ input: child.stdout });
78
+ lines.on("line", (line) => {
79
+ try {
80
+ const envelope = JSON.parse(line);
81
+ const state = watchState(envelope.state);
82
+ if (envelope.ok !== true || envelope.capability !== "workspace.watch"
83
+ || envelope.protocolVersion !== PROTOCOL_VERSION || !state) {
84
+ session.state = "unavailable";
85
+ return;
86
+ }
87
+ if (typeof envelope.target === "string")
88
+ session.target = envelope.target;
89
+ if (typeof envelope.binaryVersion === "string")
90
+ session.binaryVersion = envelope.binaryVersion;
91
+ session.state = state;
92
+ }
93
+ catch {
94
+ session.state = "unavailable";
95
+ }
96
+ });
97
+ child.once("error", () => {
98
+ session.state = "unavailable";
99
+ session.exited = true;
100
+ });
101
+ child.once("exit", () => {
102
+ if (session.state !== "stopped")
103
+ session.state = "unavailable";
104
+ session.exited = true;
105
+ });
106
+ child.stderr.resume();
107
+ return session;
108
+ }
109
+ async function ensureSession(rootPath) {
110
+ const key = path.resolve(rootPath);
111
+ const existing = sessions.get(key);
112
+ if (existing && !existing.exited)
113
+ return existing;
114
+ const session = await startSession(key);
115
+ sessions.set(key, session);
116
+ return session;
117
+ }
118
+ async function waitForRequiredReady(session) {
119
+ const deadline = Date.now() + REQUIRED_READY_TIMEOUT_MS;
120
+ while (session.state !== "ready") {
121
+ if (session.state === "unavailable" || session.exited) {
122
+ throw new NativeWorkspaceManifestError(session, "watch_unavailable", "Native workspace manifest watcher is unavailable");
123
+ }
124
+ if (Date.now() >= deadline) {
125
+ throw new NativeWorkspaceManifestError(session, "ready_timeout", `Native workspace manifest watcher did not become ready within ${REQUIRED_READY_TIMEOUT_MS}ms`);
126
+ }
127
+ await new Promise((resolve) => setTimeout(resolve, 10));
128
+ }
129
+ }
130
+ function parseManifest(value, rootPath) {
131
+ if (!value || typeof value !== "object" || Array.isArray(value))
132
+ return null;
133
+ const manifest = value;
134
+ if (manifest.protocolVersion !== PROTOCOL_VERSION || manifest.state !== "ready"
135
+ || path.resolve(String(manifest.rootPath ?? "")) !== path.resolve(rootPath)
136
+ || !Array.isArray(manifest.entries) || manifest.entries.length > MAX_ENTRIES)
137
+ return null;
138
+ const entries = [];
139
+ let pathBytes = 0;
140
+ for (const value of manifest.entries) {
141
+ if (!value || typeof value !== "object" || Array.isArray(value))
142
+ return null;
143
+ const entry = value;
144
+ const entryPath = typeof entry.path === "string" ? entry.path : "";
145
+ const kind = entry.kind;
146
+ if (!entryPath || entryPath.includes("\\") || entryPath.startsWith("/")
147
+ || entryPath.split("/").some((part) => !part || part === "." || part === "..")
148
+ || !["file", "directory", "symlink"].includes(String(kind))
149
+ || !Number.isSafeInteger(entry.byteSize) || Number(entry.byteSize) < 0
150
+ || !Number.isSafeInteger(entry.modifiedMillis) || Number(entry.modifiedMillis) < 0)
151
+ return null;
152
+ pathBytes += Buffer.byteLength(entryPath);
153
+ if (pathBytes > MAX_PATH_BYTES)
154
+ return null;
155
+ entries.push({
156
+ path: entryPath,
157
+ kind: kind,
158
+ byteSize: Number(entry.byteSize),
159
+ modifiedMillis: Number(entry.modifiedMillis),
160
+ });
161
+ }
162
+ return entries;
163
+ }
164
+ export async function readNativeWorkspaceManifest(rootPath) {
165
+ const policy = resolveRudderNativeCapability({ capability: "workspace-manifest", env: process.env });
166
+ if (!policy.enabled)
167
+ return null;
168
+ let session;
169
+ try {
170
+ session = await ensureSession(rootPath);
171
+ }
172
+ catch (error) {
173
+ if (policy.required)
174
+ throw error;
175
+ return null;
176
+ }
177
+ if (policy.required)
178
+ await waitForRequiredReady(session);
179
+ if (session.state !== "ready") {
180
+ return null;
181
+ }
182
+ try {
183
+ const stat = await fs.stat(session.manifestPath);
184
+ if (!stat.isFile() || stat.size > MAX_MANIFEST_BYTES)
185
+ throw new Error("Native workspace manifest exceeds its read boundary");
186
+ const entries = parseManifest(JSON.parse(await fs.readFile(session.manifestPath, "utf8")), rootPath);
187
+ if (!entries)
188
+ throw new Error("Native workspace manifest is invalid");
189
+ return entries;
190
+ }
191
+ catch (error) {
192
+ await fs.rm(session.manifestPath, { force: true }).catch(() => undefined);
193
+ session.state = "dirty";
194
+ if (policy.required) {
195
+ throw new NativeWorkspaceManifestError(session, "invalid_manifest", error instanceof Error ? error.message : "Native workspace manifest is invalid");
196
+ }
197
+ return null;
198
+ }
199
+ }
200
+ export async function stopNativeWorkspaceManifestWatchersForTests() {
201
+ const active = [...sessions.values()];
202
+ sessions.clear();
203
+ await Promise.all(active.map(async (session) => {
204
+ if (session.exited)
205
+ return;
206
+ session.child.stdin.end();
207
+ await new Promise((resolve) => {
208
+ const timer = setTimeout(() => {
209
+ session.child.kill();
210
+ resolve();
211
+ }, 1_000);
212
+ session.child.once("exit", () => {
213
+ clearTimeout(timer);
214
+ resolve();
215
+ });
216
+ });
217
+ }));
218
+ }
219
+ //# sourceMappingURL=workspace-manifest-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manifest-native.js","sourceRoot":"","sources":["../../src/services/workspace-manifest-native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Db } from "@rudderhq/db";
2
+ /** Reconcile only validated receipts and their exact operation-owned roots. */
3
+ export declare function reconcileWorkspaceRestoreReceipts(db?: Db): Promise<{
4
+ recovered: string[];
5
+ blocked: Array<{
6
+ receiptPath: string;
7
+ operationId: string;
8
+ error: string;
9
+ }>;
10
+ }>;
11
+ //# sourceMappingURL=workspace-restore-reconciliation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-restore-reconciliation.d.ts","sourceRoot":"","sources":["../../src/services/workspace-restore-reconciliation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAE,EAAE,MAAM,cAAc,CAAC;AAgDzD,+EAA+E;AAC/E,wBAAsB,iCAAiC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC;IACxE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7E,CAAC,CA+ED"}
@@ -0,0 +1,165 @@
1
+ import { workspaceBackups } from "@rudderhq/db";
2
+ import { and, eq } from "drizzle-orm";
3
+ import fs from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { resolveDefaultBackupDir, resolveOrganizationWorkspaceRoot } from "../home-paths.js";
6
+ import { walkWorkspaceBackupV2 } from "./workspace-backup-v2.js";
7
+ async function pathExists(targetPath) {
8
+ return fs.lstat(targetPath).catch((error) => {
9
+ if (error.code === "ENOENT")
10
+ return null;
11
+ throw error;
12
+ });
13
+ }
14
+ async function syncDirectory(directoryPath) {
15
+ const handle = await fs.open(directoryPath, "r");
16
+ try {
17
+ if (process.platform !== "win32")
18
+ await handle.sync();
19
+ }
20
+ finally {
21
+ await handle.close();
22
+ }
23
+ }
24
+ async function workspaceTreeSha256(rootPath) {
25
+ return (await walkWorkspaceBackupV2(rootPath)).treeSha256;
26
+ }
27
+ async function readRestoreReceipt(filePath) {
28
+ try {
29
+ const value = JSON.parse(await fs.readFile(filePath, "utf8"));
30
+ if (value.version !== 1 || typeof value.operationId !== "string" || typeof value.orgId !== "string"
31
+ || typeof value.backupId !== "string"
32
+ || !["prepared", "live_moved", "committed", "rolled_back", "recovery_required"].includes(value.phase ?? "")
33
+ || typeof value.workspaceRoot !== "string" || typeof value.stagingRoot !== "string"
34
+ || typeof value.rollbackRoot !== "string"
35
+ || (value.liveTreeSha256 !== null && typeof value.liveTreeSha256 !== "string")
36
+ || typeof value.stagingTreeSha256 !== "string"
37
+ || (value.expectedTreeSha256 !== null && typeof value.expectedTreeSha256 !== "string")
38
+ || typeof value.preRestoreBackupId !== "string")
39
+ return null;
40
+ return value;
41
+ }
42
+ catch (error) {
43
+ if (error.code === "ENOENT")
44
+ return null;
45
+ throw error;
46
+ }
47
+ }
48
+ function isOwnedRestoreRoot(root, workspaceRoot, operationId, kind) {
49
+ return path.resolve(root) !== path.resolve(workspaceRoot)
50
+ && path.resolve(root) === path.resolve(path.dirname(workspaceRoot), `.rudder-workspace-restore-${kind}-${operationId}`);
51
+ }
52
+ /** Reconcile only validated receipts and their exact operation-owned roots. */
53
+ export async function reconcileWorkspaceRestoreReceipts(db) {
54
+ const receiptRoot = path.resolve(resolveDefaultBackupDir(), "workspace-restore-receipts");
55
+ const recovered = [];
56
+ const blocked = [];
57
+ let names;
58
+ try {
59
+ names = await fs.readdir(receiptRoot);
60
+ }
61
+ catch (error) {
62
+ if (error.code === "ENOENT")
63
+ return { recovered, blocked };
64
+ throw error;
65
+ }
66
+ for (const name of names.filter((entry) => entry.endsWith(".json"))) {
67
+ const receiptPath = path.join(receiptRoot, name);
68
+ let receipt = null;
69
+ try {
70
+ receipt = await readRestoreReceipt(receiptPath);
71
+ }
72
+ catch (error) {
73
+ blocked.push({ receiptPath, operationId: "unknown", error: error instanceof Error ? error.message : String(error) });
74
+ continue;
75
+ }
76
+ let canonicalWorkspaceRoot = null;
77
+ try {
78
+ if (receipt?.orgId)
79
+ canonicalWorkspaceRoot = path.resolve(resolveOrganizationWorkspaceRoot(receipt.orgId));
80
+ }
81
+ catch {
82
+ canonicalWorkspaceRoot = null;
83
+ }
84
+ if (!receipt || !canonicalWorkspaceRoot
85
+ || !/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(receipt.operationId)
86
+ || path.resolve(receipt.workspaceRoot) !== canonicalWorkspaceRoot
87
+ || !isOwnedRestoreRoot(receipt.stagingRoot, receipt.workspaceRoot, receipt.operationId, "staging")
88
+ || !isOwnedRestoreRoot(receipt.rollbackRoot, receipt.workspaceRoot, receipt.operationId, "rollback")) {
89
+ blocked.push({ receiptPath, operationId: receipt?.operationId ?? "unknown", error: "invalid_or_unowned_receipt" });
90
+ continue;
91
+ }
92
+ try {
93
+ const workspace = await pathExists(receipt.workspaceRoot);
94
+ const rollback = await pathExists(receipt.rollbackRoot);
95
+ const expectedPublishedTree = receipt.expectedTreeSha256 ?? receipt.stagingTreeSha256;
96
+ let publishedRestore = false;
97
+ if (receipt.phase === "prepared") {
98
+ if (workspace && rollback)
99
+ throw new Error("prepared receipt has conflicting live and rollback roots");
100
+ if (!workspace && rollback) {
101
+ if (!receipt.liveTreeSha256 || await workspaceTreeSha256(receipt.rollbackRoot) !== receipt.liveTreeSha256)
102
+ throw new Error("prepared rollback tree does not match recorded live tree");
103
+ await fs.rename(receipt.rollbackRoot, receipt.workspaceRoot);
104
+ await syncDirectory(path.dirname(receipt.workspaceRoot));
105
+ }
106
+ }
107
+ else if (receipt.phase === "committed") {
108
+ if (!workspace)
109
+ throw new Error("committed receipt workspace is missing");
110
+ if (await workspaceTreeSha256(receipt.workspaceRoot) !== expectedPublishedTree) {
111
+ throw new Error("committed workspace tree does not match receipt");
112
+ }
113
+ publishedRestore = true;
114
+ }
115
+ else if (receipt.phase === "rolled_back") {
116
+ if (!workspace)
117
+ throw new Error("rolled_back receipt workspace is missing");
118
+ if (receipt.liveTreeSha256 && await workspaceTreeSha256(receipt.workspaceRoot) !== receipt.liveTreeSha256)
119
+ throw new Error("rolled_back workspace tree does not match recorded live tree");
120
+ }
121
+ else if (receipt.phase === "live_moved" || receipt.phase === "recovery_required") {
122
+ if (!workspace && rollback) {
123
+ if (!receipt.liveTreeSha256 || await workspaceTreeSha256(receipt.rollbackRoot) !== receipt.liveTreeSha256)
124
+ throw new Error("rollback tree does not match recorded live tree");
125
+ await fs.rename(receipt.rollbackRoot, receipt.workspaceRoot);
126
+ await syncDirectory(path.dirname(receipt.workspaceRoot));
127
+ }
128
+ else if (workspace && !rollback) {
129
+ if (await workspaceTreeSha256(receipt.workspaceRoot) !== expectedPublishedTree)
130
+ throw new Error("published workspace tree does not match receipt");
131
+ publishedRestore = true;
132
+ }
133
+ else if (workspace && rollback) {
134
+ if (await workspaceTreeSha256(receipt.workspaceRoot) === expectedPublishedTree)
135
+ publishedRestore = true;
136
+ else if (receipt.liveTreeSha256 && await workspaceTreeSha256(receipt.rollbackRoot) === receipt.liveTreeSha256) {
137
+ await fs.rm(receipt.workspaceRoot, { recursive: true, force: true });
138
+ await fs.rename(receipt.rollbackRoot, receipt.workspaceRoot);
139
+ await syncDirectory(path.dirname(receipt.workspaceRoot));
140
+ }
141
+ else
142
+ throw new Error("workspace and rollback roots match neither recorded tree");
143
+ }
144
+ else
145
+ throw new Error("workspace and rollback roots are both missing");
146
+ }
147
+ if (publishedRestore && db) {
148
+ const [updated] = await db.update(workspaceBackups).set({ status: "restored", updatedAt: new Date() })
149
+ .where(and(eq(workspaceBackups.id, receipt.backupId), eq(workspaceBackups.orgId, receipt.orgId))).returning({ id: workspaceBackups.id });
150
+ if (!updated)
151
+ throw new Error("restore receipt backup row is missing");
152
+ }
153
+ await fs.rm(receipt.stagingRoot, { recursive: true, force: true });
154
+ await fs.rm(receipt.rollbackRoot, { recursive: true, force: true });
155
+ await fs.rm(receiptPath, { force: true });
156
+ await syncDirectory(receiptRoot);
157
+ recovered.push(receipt.operationId);
158
+ }
159
+ catch (error) {
160
+ blocked.push({ receiptPath, operationId: receipt.operationId, error: error instanceof Error ? error.message : String(error) });
161
+ }
162
+ }
163
+ return { recovered, blocked };
164
+ }
165
+ //# sourceMappingURL=workspace-restore-reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-restore-reconciliation.js","sourceRoot":"","sources":["../../src/services/workspace-restore-reconciliation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderhq/server",
3
- "version": "0.7.11",
3
+ "version": "0.7.13",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "homepage": "https://github.com/Undertone0809/rudder",
6
6
  "bugs": {
@@ -55,19 +55,19 @@
55
55
  "@aws-sdk/client-s3": "^3.1015.0",
56
56
  "@larksuiteoapi/node-sdk": "1.67.0",
57
57
  "@modelcontextprotocol/client": "2.0.0",
58
- "@rudderhq/agent-runtime-claude-local": "0.7.11",
59
- "@rudderhq/agent-runtime-codex-local": "0.7.11",
60
- "@rudderhq/agent-runtime-cursor-local": "0.7.11",
61
- "@rudderhq/agent-runtime-gemini-local": "0.7.11",
62
- "@rudderhq/agent-runtime-hermes-gateway": "0.7.11",
63
- "@rudderhq/agent-runtime-openclaw-gateway": "0.7.11",
64
- "@rudderhq/agent-runtime-opencode-local": "0.7.11",
65
- "@rudderhq/agent-runtime-pi-local": "0.7.11",
66
- "@rudderhq/agent-runtime-utils": "0.7.11",
67
- "@rudderhq/db": "0.7.11",
68
- "@rudderhq/identity-core": "0.7.11",
69
- "@rudderhq/run-intelligence-core": "0.7.11",
70
- "@rudderhq/shared": "0.7.11",
58
+ "@rudderhq/agent-runtime-claude-local": "0.7.13",
59
+ "@rudderhq/agent-runtime-codex-local": "0.7.13",
60
+ "@rudderhq/agent-runtime-cursor-local": "0.7.13",
61
+ "@rudderhq/agent-runtime-gemini-local": "0.7.13",
62
+ "@rudderhq/agent-runtime-hermes-gateway": "0.7.13",
63
+ "@rudderhq/agent-runtime-openclaw-gateway": "0.7.13",
64
+ "@rudderhq/agent-runtime-opencode-local": "0.7.13",
65
+ "@rudderhq/agent-runtime-pi-local": "0.7.13",
66
+ "@rudderhq/agent-runtime-utils": "0.7.13",
67
+ "@rudderhq/db": "0.7.13",
68
+ "@rudderhq/identity-core": "0.7.13",
69
+ "@rudderhq/run-intelligence-core": "0.7.13",
70
+ "@rudderhq/shared": "0.7.13",
71
71
  "ajv": "^8.18.0",
72
72
  "ajv-formats": "^3.0.1",
73
73
  "better-auth": "1.6.23",
@@ -138,6 +138,8 @@ Use the incremental `after` form when you already know the thread.
138
138
  - `GET /api/orgs/:orgId/issues`
139
139
  - `POST /api/orgs/:orgId/issues`
140
140
  - `GET /api/orgs/:orgId/agents`
141
+ - `GET /api/orgs/:orgId/members/directory`
142
+ - Returns `total/items/nextCursor/hasMore` with `Name`, `Type`, `Role`, and `Ref`; use `fullIds=true` only for explicit UUID debugging.
141
143
  - `POST /api/orgs/:orgId/agent-hires`
142
144
  - `GET /api/orgs/:orgId/dashboard`
143
145
  - `GET /api/orgs/:orgId/projects`
@@ -158,6 +160,12 @@ in `pending_approval` plus the approval record when organization policy requires
158
160
  review. Normal runtime work should follow [Agent creation](agent-creation.md)
159
161
  and the installed CLI instead of calling this route directly.
160
162
 
163
+ The member directory is a read-only, organization-scoped view for Agent
164
+ context. It returns only active visible members with `name`, `type`, `role`,
165
+ and typed short `ref` fields. Agent keys may read their own organization;
166
+ cross-organization requests are rejected. Use `query`, `type`, `limit`, and
167
+ `cursor` for bounded pagination.
168
+
161
169
  ### Resources
162
170
 
163
171
  - `GET /api/orgs/:orgId/resources`
@@ -32,14 +32,14 @@ operating-practices guide for operating behavior:
32
32
 
33
33
  - First-party MCP tools use the stable `rudder_<capability_id>` naming convention, for example `rudder_issue_checkout` for `issue.checkout`.
34
34
  - All commands support `--json`.
35
- - CLI output renders IDs as short IDs by default; `rudder runs ...` commands accept short run IDs. Add `--full-ids` only when a debugging or compatibility workflow needs raw UUIDs.
35
+ - CLI output renders IDs as typed short IDs by default (`agt_`, `cht_`, `run_`, `msg_`, `cmt_`, and related refs); `rudder runs ...` commands accept typed refs, legacy bare short run IDs, or full UUIDs. Add `--full-ids` only when a debugging or compatibility workflow needs raw UUIDs.
36
36
  - `--org-id` defaults to `RUDDER_ORG_ID` when relevant.
37
37
  - `--run-id` defaults to `RUDDER_RUN_ID` and is attached to mutating requests when available.
38
38
  - `issue checkout` defaults `--agent-id` from `RUDDER_AGENT_ID`.
39
39
 
40
40
  ## JSON Output Contract
41
41
 
42
- `rudder ... --json` commands must write valid JSON to stdout on success. ID fields in CLI JSON use short display IDs by default; pass `--full-ids` to preserve raw UUIDs. Short run IDs returned by CLI output can be passed back into `rudder runs get`, `events`, `log`, `transcript`, `errors`, `cancel`, and `retry`. If a command cannot produce the requested JSON, it must exit nonzero and write a diagnostic error to stderr. An exit-0 command with empty stdout is a CLI/runtime defect, not a valid empty result.
42
+ `rudder ... --json` commands must write valid JSON to stdout on success. ID fields in CLI JSON use typed short display IDs by default; pass `--full-ids` to preserve raw UUIDs. Typed or legacy short run IDs returned by CLI output can be passed back into `rudder runs get`, `events`, `log`, `transcript`, `errors`, `cancel`, and `retry`. If a command cannot produce the requested JSON, it must exit nonzero and write a diagnostic error to stderr. An exit-0 command with empty stdout is a CLI/runtime defect, not a valid empty result.
43
43
 
44
44
  ## Agent V1 Commands
45
45
 
@@ -47,6 +47,7 @@ operating-practices guide for operating behavior:
47
47
  | --- | --- | --- | --- | --- | --- | --- |
48
48
  | `rudder_agent_me` | `rudder agent me` | Show the authenticated agent identity and budget. | no | no | no | no |
49
49
  | `rudder_agent_inbox` | `rudder agent inbox` | List the compact assignee and reviewer work inbox for the authenticated agent. | no | no | no | no |
50
+ | `rudder_organization_members_list` | `rudder org members --org-id <id> [--query <text>] [--type <human|agent|all>] [--limit <n>] [--cursor <cursor>]` | List active visible human and agent members in the authenticated organization. | no | required | no | no |
50
51
  | `rudder_agent_capabilities` | `rudder agent capabilities` | List the stable Rudder agent command contract. | no | no | no | no |
51
52
  | `rudder_agent_update` | `rudder agent update [agent-id] [--title <title>] [--description <text>]` | Update an agent's identity fields; defaults to the authenticated agent. | yes | no | no | attached when available |
52
53
  | `rudder_agent_skills_create` | `rudder agent skills create [agent-id] --name <name> [--enable]` | Create an agent-private skill package under AGENT_HOME/skills. | yes | no | no | attached when available |
@@ -81,6 +82,7 @@ operating-practices guide for operating behavior:
81
82
  | `rudder_library_file_ref` | `rudder library file ref <path>` | Return the stable Markdown reference for one Library file without printing file content. | no | required | no | no |
82
83
  | `rudder_library_file_link` | `rudder library file link <path>` | Compatibility alias for `rudder library file ref <path>`. | no | required | no | no |
83
84
  | `rudder_library_file_put` | `rudder library file put <path> --body-file <path>` | Fallback create/update when local filesystem access is unavailable; JSON includes `mentionHref` and `markdownLink`. | yes | required | no | attached when available |
85
+ | `rudder_issue_create` | `rudder issue create --org-id <id> ... [--label-id <id> ...] [--label <name> ...]` | Create a new issue or subtask with the generic issue surface; agent-created issues default to the creating agent when no assignee is supplied. | yes | required | no | attached when available |
84
86
  | `rudder_approval_get` | `rudder approval get <approval-id>` | Read one approval request. | no | no | no | no |
85
87
  | `rudder_approval_issues` | `rudder approval issues <approval-id>` | List the issues linked to an approval. | no | no | no | no |
86
88
  | `rudder_approval_comment` | `rudder approval comment <approval-id> --body-file <path>` | Add a comment to an approval. | yes | no | no | attached when available |
@@ -161,6 +163,8 @@ Issue comment responses include `shortRef` when available. `rudder issue comment
161
163
 
162
164
  Chat conversation responses include `shortRef` when available. Chat read and mutation commands accept the organization-scoped `cht_<uuid-prefix>` value or the full conversation UUID. Human-readable `chat list` and `chat search` output prefers `shortRef`; `--json` retains both `id` and `shortRef`, and `--full-ids` preserves the durable UUID value in `id`. Use the full UUID when a short ref is ambiguous.
163
165
 
166
+ Agent run and message responses include typed `shortRef` values when available. Agent-facing output prefers `run_<uuid-prefix>` and `msg_<uuid-prefix>` while preserving the durable UUID in `id`; `--full-ids` restores the UUID values. Run routes accept `run_` refs, legacy bare hex prefixes, and full UUIDs within the authorized organization scope. Ambiguous prefixes return `409` with typed candidates.
167
+
164
168
  `--image` may be repeated. The CLI uploads each local PNG/JPEG/WebP/GIF as an issue attachment and appends Markdown image links to the comment text before sending it.
165
169
 
166
170
  ## Renderable Library CLI Output
@@ -194,7 +198,6 @@ Reviewer policy lives in [Review and close-out](operating-practices.md#review-an
194
198
  - `rudder agent config list --org-id <id>` — List redacted agent configuration snapshots for an organization.
195
199
  - `rudder agent config get <agent-id-or-shortname>` — Read one redacted agent configuration snapshot by id or shortname.
196
200
  - `rudder agent icons` — List legacy named agent icons for compatibility/debugging; normal create and hire payloads should omit icon.
197
- - `rudder issue create --org-id <id> ... [--label-id <id> ...] [--label <name> ...]` — Create a new issue or subtask with the generic issue surface; agent-created issues default to the creating agent when no assignee is supplied.
198
201
  - `rudder issue labels list --org-id <id>` — List organization issue labels available for issue creation.
199
202
  - `rudder approval create --org-id <id> --type <type> --payload <json>` — Create a new approval request.
200
203
  - `rudder approval resubmit <approval-id> [--payload <json>]` — Resubmit a revision-requested approval, optionally with updated payload.
@@ -138,6 +138,8 @@ Use the incremental `after` form when you already know the thread.
138
138
  - `GET /api/orgs/:orgId/issues`
139
139
  - `POST /api/orgs/:orgId/issues`
140
140
  - `GET /api/orgs/:orgId/agents`
141
+ - `GET /api/orgs/:orgId/members/directory`
142
+ - Returns `total/items/nextCursor/hasMore` with `Name`, `Type`, `Role`, and `Ref`; use `fullIds=true` only for explicit UUID debugging.
141
143
  - `POST /api/orgs/:orgId/agent-hires`
142
144
  - `GET /api/orgs/:orgId/dashboard`
143
145
  - `GET /api/orgs/:orgId/projects`
@@ -158,6 +160,12 @@ in `pending_approval` plus the approval record when organization policy requires
158
160
  review. Normal runtime work should follow [Agent creation](agent-creation.md)
159
161
  and the installed CLI instead of calling this route directly.
160
162
 
163
+ The member directory is a read-only, organization-scoped view for Agent
164
+ context. It returns only active visible members with `name`, `type`, `role`,
165
+ and typed short `ref` fields. Agent keys may read their own organization;
166
+ cross-organization requests are rejected. Use `query`, `type`, `limit`, and
167
+ `cursor` for bounded pagination.
168
+
161
169
  ### Resources
162
170
 
163
171
  - `GET /api/orgs/:orgId/resources`
@@ -32,14 +32,14 @@ operating-practices guide for operating behavior:
32
32
 
33
33
  - First-party MCP tools use the stable `rudder_<capability_id>` naming convention, for example `rudder_issue_checkout` for `issue.checkout`.
34
34
  - All commands support `--json`.
35
- - CLI output renders IDs as short IDs by default; `rudder runs ...` commands accept short run IDs. Add `--full-ids` only when a debugging or compatibility workflow needs raw UUIDs.
35
+ - CLI output renders IDs as typed short IDs by default (`agt_`, `cht_`, `run_`, `msg_`, `cmt_`, and related refs); `rudder runs ...` commands accept typed refs, legacy bare short run IDs, or full UUIDs. Add `--full-ids` only when a debugging or compatibility workflow needs raw UUIDs.
36
36
  - `--org-id` defaults to `RUDDER_ORG_ID` when relevant.
37
37
  - `--run-id` defaults to `RUDDER_RUN_ID` and is attached to mutating requests when available.
38
38
  - `issue checkout` defaults `--agent-id` from `RUDDER_AGENT_ID`.
39
39
 
40
40
  ## JSON Output Contract
41
41
 
42
- `rudder ... --json` commands must write valid JSON to stdout on success. ID fields in CLI JSON use short display IDs by default; pass `--full-ids` to preserve raw UUIDs. Short run IDs returned by CLI output can be passed back into `rudder runs get`, `events`, `log`, `transcript`, `errors`, `cancel`, and `retry`. If a command cannot produce the requested JSON, it must exit nonzero and write a diagnostic error to stderr. An exit-0 command with empty stdout is a CLI/runtime defect, not a valid empty result.
42
+ `rudder ... --json` commands must write valid JSON to stdout on success. ID fields in CLI JSON use typed short display IDs by default; pass `--full-ids` to preserve raw UUIDs. Typed or legacy short run IDs returned by CLI output can be passed back into `rudder runs get`, `events`, `log`, `transcript`, `errors`, `cancel`, and `retry`. If a command cannot produce the requested JSON, it must exit nonzero and write a diagnostic error to stderr. An exit-0 command with empty stdout is a CLI/runtime defect, not a valid empty result.
43
43
 
44
44
  ## Agent V1 Commands
45
45
 
@@ -47,6 +47,7 @@ operating-practices guide for operating behavior:
47
47
  | --- | --- | --- | --- | --- | --- | --- |
48
48
  | `rudder_agent_me` | `rudder agent me` | Show the authenticated agent identity and budget. | no | no | no | no |
49
49
  | `rudder_agent_inbox` | `rudder agent inbox` | List the compact assignee and reviewer work inbox for the authenticated agent. | no | no | no | no |
50
+ | `rudder_organization_members_list` | `rudder org members --org-id <id> [--query <text>] [--type <human|agent|all>] [--limit <n>] [--cursor <cursor>]` | List active visible human and agent members in the authenticated organization. | no | required | no | no |
50
51
  | `rudder_agent_capabilities` | `rudder agent capabilities` | List the stable Rudder agent command contract. | no | no | no | no |
51
52
  | `rudder_agent_update` | `rudder agent update [agent-id] [--title <title>] [--description <text>]` | Update an agent's identity fields; defaults to the authenticated agent. | yes | no | no | attached when available |
52
53
  | `rudder_agent_skills_create` | `rudder agent skills create [agent-id] --name <name> [--enable]` | Create an agent-private skill package under AGENT_HOME/skills. | yes | no | no | attached when available |
@@ -81,6 +82,7 @@ operating-practices guide for operating behavior:
81
82
  | `rudder_library_file_ref` | `rudder library file ref <path>` | Return the stable Markdown reference for one Library file without printing file content. | no | required | no | no |
82
83
  | `rudder_library_file_link` | `rudder library file link <path>` | Compatibility alias for `rudder library file ref <path>`. | no | required | no | no |
83
84
  | `rudder_library_file_put` | `rudder library file put <path> --body-file <path>` | Fallback create/update when local filesystem access is unavailable; JSON includes `mentionHref` and `markdownLink`. | yes | required | no | attached when available |
85
+ | `rudder_issue_create` | `rudder issue create --org-id <id> ... [--label-id <id> ...] [--label <name> ...]` | Create a new issue or subtask with the generic issue surface; agent-created issues default to the creating agent when no assignee is supplied. | yes | required | no | attached when available |
84
86
  | `rudder_approval_get` | `rudder approval get <approval-id>` | Read one approval request. | no | no | no | no |
85
87
  | `rudder_approval_issues` | `rudder approval issues <approval-id>` | List the issues linked to an approval. | no | no | no | no |
86
88
  | `rudder_approval_comment` | `rudder approval comment <approval-id> --body-file <path>` | Add a comment to an approval. | yes | no | no | attached when available |
@@ -161,6 +163,8 @@ Issue comment responses include `shortRef` when available. `rudder issue comment
161
163
 
162
164
  Chat conversation responses include `shortRef` when available. Chat read and mutation commands accept the organization-scoped `cht_<uuid-prefix>` value or the full conversation UUID. Human-readable `chat list` and `chat search` output prefers `shortRef`; `--json` retains both `id` and `shortRef`, and `--full-ids` preserves the durable UUID value in `id`. Use the full UUID when a short ref is ambiguous.
163
165
 
166
+ Agent run and message responses include typed `shortRef` values when available. Agent-facing output prefers `run_<uuid-prefix>` and `msg_<uuid-prefix>` while preserving the durable UUID in `id`; `--full-ids` restores the UUID values. Run routes accept `run_` refs, legacy bare hex prefixes, and full UUIDs within the authorized organization scope. Ambiguous prefixes return `409` with typed candidates.
167
+
164
168
  `--image` may be repeated. The CLI uploads each local PNG/JPEG/WebP/GIF as an issue attachment and appends Markdown image links to the comment text before sending it.
165
169
 
166
170
  ## Renderable Library CLI Output
@@ -194,7 +198,6 @@ Reviewer policy lives in [Review and close-out](operating-practices.md#review-an
194
198
  - `rudder agent config list --org-id <id>` — List redacted agent configuration snapshots for an organization.
195
199
  - `rudder agent config get <agent-id-or-shortname>` — Read one redacted agent configuration snapshot by id or shortname.
196
200
  - `rudder agent icons` — List legacy named agent icons for compatibility/debugging; normal create and hire payloads should omit icon.
197
- - `rudder issue create --org-id <id> ... [--label-id <id> ...] [--label <name> ...]` — Create a new issue or subtask with the generic issue surface; agent-created issues default to the creating agent when no assignee is supplied.
198
201
  - `rudder issue labels list --org-id <id>` — List organization issue labels available for issue creation.
199
202
  - `rudder approval create --org-id <id> --type <type> --payload <json>` — Create a new approval request.
200
203
  - `rudder approval resubmit <approval-id> [--payload <json>]` — Resubmit a revision-requested approval, optionally with updated payload.