@rudderhq/server 0.7.10 → 0.7.12

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 (260) 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 +7 -0
  5. package/dist/bootstrap/types.d.ts.map +1 -1
  6. package/dist/index.js +18 -3
  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 +2 -0
  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 +356 -7
  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 +68 -7
  20. package/dist/routes/goals.js.map +1 -1
  21. package/dist/routes/issues.mutations.d.ts.map +1 -1
  22. package/dist/routes/issues.mutations.js +3 -0
  23. package/dist/routes/issues.mutations.js.map +1 -1
  24. package/dist/routes/orgs.d.ts.map +1 -1
  25. package/dist/routes/orgs.js +22 -1
  26. package/dist/routes/orgs.js.map +1 -1
  27. package/dist/routes/run-intelligence.d.ts.map +1 -1
  28. package/dist/routes/run-intelligence.js +9 -0
  29. package/dist/routes/run-intelligence.js.map +1 -1
  30. package/dist/services/agent-instructions.d.ts +1 -0
  31. package/dist/services/agent-instructions.d.ts.map +1 -1
  32. package/dist/services/agent-instructions.js +124 -6
  33. package/dist/services/agent-instructions.js.map +1 -1
  34. package/dist/services/agent-run-context.d.ts.map +1 -1
  35. package/dist/services/agent-run-context.js +15 -0
  36. package/dist/services/agent-run-context.js.map +1 -1
  37. package/dist/services/agent-startup-context.d.ts +5 -1
  38. package/dist/services/agent-startup-context.d.ts.map +1 -1
  39. package/dist/services/agent-startup-context.js +67 -14
  40. package/dist/services/agent-startup-context.js.map +1 -1
  41. package/dist/services/agents.d.ts +218 -0
  42. package/dist/services/agents.d.ts.map +1 -1
  43. package/dist/services/automations.d.ts.map +1 -1
  44. package/dist/services/automations.js +3 -0
  45. package/dist/services/automations.js.map +1 -1
  46. package/dist/services/chat-agent-runs.d.ts +47 -1
  47. package/dist/services/chat-agent-runs.d.ts.map +1 -1
  48. package/dist/services/chat-agent-runs.js +91 -1
  49. package/dist/services/chat-agent-runs.js.map +1 -1
  50. package/dist/services/chat-assistant.d.ts.map +1 -1
  51. package/dist/services/chat-assistant.helpers.d.ts +12 -3
  52. package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
  53. package/dist/services/chat-assistant.helpers.js +3 -0
  54. package/dist/services/chat-assistant.helpers.js.map +1 -1
  55. package/dist/services/chat-assistant.js +65 -19
  56. package/dist/services/chat-assistant.js.map +1 -1
  57. package/dist/services/chat-generation-protocol.d.ts +119 -0
  58. package/dist/services/chat-generation-protocol.d.ts.map +1 -1
  59. package/dist/services/chat-generation-protocol.js +65 -0
  60. package/dist/services/chat-generation-protocol.js.map +1 -1
  61. package/dist/services/chats.constants.d.ts +1 -1
  62. package/dist/services/chats.constants.d.ts.map +1 -1
  63. package/dist/services/chats.constants.js +1 -0
  64. package/dist/services/chats.constants.js.map +1 -1
  65. package/dist/services/chats.d.ts +213 -0
  66. package/dist/services/chats.d.ts.map +1 -1
  67. package/dist/services/chats.js +46 -1
  68. package/dist/services/chats.js.map +1 -1
  69. package/dist/services/goals.d.ts +133 -5
  70. package/dist/services/goals.d.ts.map +1 -1
  71. package/dist/services/goals.js +260 -3
  72. package/dist/services/goals.js.map +1 -1
  73. package/dist/services/heartbeat-run-reference.d.ts.map +1 -1
  74. package/dist/services/heartbeat-run-reference.js +11 -5
  75. package/dist/services/heartbeat-run-reference.js.map +1 -1
  76. package/dist/services/index.d.ts +2 -1
  77. package/dist/services/index.d.ts.map +1 -1
  78. package/dist/services/index.js +2 -1
  79. package/dist/services/index.js.map +1 -1
  80. package/dist/services/integrations/feishu/runtime.d.ts +8 -0
  81. package/dist/services/integrations/feishu/runtime.d.ts.map +1 -1
  82. package/dist/services/integrations/feishu/runtime.js +124 -1
  83. package/dist/services/integrations/feishu/runtime.js.map +1 -1
  84. package/dist/services/issues.d.ts.map +1 -1
  85. package/dist/services/issues.helpers.d.ts +8 -0
  86. package/dist/services/issues.helpers.d.ts.map +1 -1
  87. package/dist/services/issues.helpers.js +17 -1
  88. package/dist/services/issues.helpers.js.map +1 -1
  89. package/dist/services/issues.js +108 -15
  90. package/dist/services/issues.js.map +1 -1
  91. package/dist/services/messenger.d.ts.map +1 -1
  92. package/dist/services/messenger.js +12 -3
  93. package/dist/services/messenger.js.map +1 -1
  94. package/dist/services/organization-members.d.ts +27 -0
  95. package/dist/services/organization-members.d.ts.map +1 -0
  96. package/dist/services/organization-members.js +169 -0
  97. package/dist/services/organization-members.js.map +1 -0
  98. package/dist/services/organization-workspace-browser.d.ts.map +1 -1
  99. package/dist/services/organization-workspace-browser.js +44 -10
  100. package/dist/services/organization-workspace-browser.js.map +1 -1
  101. package/dist/services/product-intelligence.d.ts.map +1 -1
  102. package/dist/services/product-intelligence.js +4 -0
  103. package/dist/services/product-intelligence.js.map +1 -1
  104. package/dist/services/projects.d.ts +1 -4
  105. package/dist/services/projects.d.ts.map +1 -1
  106. package/dist/services/projects.js +27 -2
  107. package/dist/services/projects.js.map +1 -1
  108. package/dist/services/rudder-plugin-catalog.d.ts +1 -1
  109. package/dist/services/rudder-plugin-catalog.d.ts.map +1 -1
  110. package/dist/services/rudder-plugin-catalog.js +281 -15
  111. package/dist/services/rudder-plugin-catalog.js.map +1 -1
  112. package/dist/services/rudder-plugin-catalog.test.js +55 -0
  113. package/dist/services/rudder-plugin-catalog.test.js.map +1 -1
  114. package/dist/services/run-intelligence.d.ts.map +1 -1
  115. package/dist/services/run-intelligence.js +2 -1
  116. package/dist/services/run-intelligence.js.map +1 -1
  117. package/dist/services/run-log-store.d.ts +3 -0
  118. package/dist/services/run-log-store.d.ts.map +1 -1
  119. package/dist/services/run-log-store.js +124 -18
  120. package/dist/services/run-log-store.js.map +1 -1
  121. package/dist/services/runtime-kernel/assignment-run-guardrail.d.ts +80 -23
  122. package/dist/services/runtime-kernel/assignment-run-guardrail.d.ts.map +1 -1
  123. package/dist/services/runtime-kernel/assignment-run-guardrail.js +230 -5
  124. package/dist/services/runtime-kernel/assignment-run-guardrail.js.map +1 -1
  125. package/dist/services/runtime-kernel/assignment-run-guardrail.test.js +122 -2
  126. package/dist/services/runtime-kernel/assignment-run-guardrail.test.js.map +1 -1
  127. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.d.ts +124 -0
  128. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.d.ts.map +1 -0
  129. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.js +108 -0
  130. package/dist/services/runtime-kernel/heartbeat-attempt-ledger.js.map +1 -0
  131. package/dist/services/runtime-kernel/heartbeat.core.d.ts +111 -0
  132. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  133. package/dist/services/runtime-kernel/heartbeat.core.js +13 -0
  134. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  135. package/dist/services/runtime-kernel/heartbeat.d.ts +34 -0
  136. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  137. package/dist/services/runtime-kernel/heartbeat.execute.d.ts.map +1 -1
  138. package/dist/services/runtime-kernel/heartbeat.execute.js +312 -16
  139. package/dist/services/runtime-kernel/heartbeat.execute.js.map +1 -1
  140. package/dist/services/runtime-kernel/heartbeat.js +205 -8
  141. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  142. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts.map +1 -1
  143. package/dist/services/runtime-kernel/heartbeat.sessions.js +15 -3
  144. package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -1
  145. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +48 -0
  146. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -1
  147. package/dist/services/runtime-kernel/heartbeat.wakeup.js +1 -1
  148. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  149. package/dist/services/runtime-kernel/model-fallback.d.ts +4 -0
  150. package/dist/services/runtime-kernel/model-fallback.d.ts.map +1 -1
  151. package/dist/services/runtime-kernel/model-fallback.js +25 -4
  152. package/dist/services/runtime-kernel/model-fallback.js.map +1 -1
  153. package/dist/services/workspace-backup-v2.d.ts +20 -0
  154. package/dist/services/workspace-backup-v2.d.ts.map +1 -1
  155. package/dist/services/workspace-backup-v2.js +155 -23
  156. package/dist/services/workspace-backup-v2.js.map +1 -1
  157. package/dist/services/workspace-backup-v2.test.js +34 -2
  158. package/dist/services/workspace-backup-v2.test.js.map +1 -1
  159. package/dist/services/workspace-backups.d.ts +0 -1
  160. package/dist/services/workspace-backups.d.ts.map +1 -1
  161. package/dist/services/workspace-backups.js +18 -19
  162. package/dist/services/workspace-backups.js.map +1 -1
  163. package/dist/services/workspace-manifest-native.d.ts +10 -0
  164. package/dist/services/workspace-manifest-native.d.ts.map +1 -0
  165. package/dist/services/workspace-manifest-native.js +219 -0
  166. package/dist/services/workspace-manifest-native.js.map +1 -0
  167. package/dist/services/workspace-restore-reconciliation.d.ts +11 -0
  168. package/dist/services/workspace-restore-reconciliation.d.ts.map +1 -0
  169. package/dist/services/workspace-restore-reconciliation.js +165 -0
  170. package/dist/services/workspace-restore-reconciliation.js.map +1 -0
  171. package/package.json +14 -14
  172. package/resources/bundled-skills/rudder-docs/references/api-reference.md +8 -0
  173. package/resources/bundled-skills/rudder-docs/references/cli-reference.md +14 -8
  174. package/skills/rudder-docs/references/api-reference.md +8 -0
  175. package/skills/rudder-docs/references/cli-reference.md +14 -8
  176. package/ui-dist/assets/LibraryLiveSurface-tCWxJKp5.js +1 -0
  177. package/ui-dist/assets/{abnfDiagram-VRR7QNED-CG3j5RmW.js → abnfDiagram-VRR7QNED-BcCms-hs.js} +1 -1
  178. package/ui-dist/assets/{addon-fit-D07m_e8_.js → addon-fit-CH3xNHN4.js} +1 -1
  179. package/ui-dist/assets/{arc-B2RI9_Dw.js → arc-h5W-EkRK.js} +1 -1
  180. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-C5v1tMZi.js → architectureDiagram-ZJ3FMSHR-Bdehm1PB.js} +1 -1
  181. package/ui-dist/assets/{blockDiagram-677ZJIJ3-CgcSNhl8.js → blockDiagram-677ZJIJ3-BJ3W91Su.js} +1 -1
  182. package/ui-dist/assets/{c4Diagram-LMCZKHZV-B7qmWb0f.js → c4Diagram-LMCZKHZV-Bnft_fRy.js} +1 -1
  183. package/ui-dist/assets/channel-G6qIOCiV.js +1 -0
  184. package/ui-dist/assets/{chunk-2Q5K7J3B-cNlq0MJR.js → chunk-2Q5K7J3B-w1SF0tSk.js} +1 -1
  185. package/ui-dist/assets/{chunk-32BRIVSS-rcxFQzYk.js → chunk-32BRIVSS-C1UzXTFZ.js} +1 -1
  186. package/ui-dist/assets/{chunk-5VM5RSS4-9PSO_t10.js → chunk-5VM5RSS4-COVI3rNd.js} +1 -1
  187. package/ui-dist/assets/{chunk-EX3LRPZG-BlOFcT4O.js → chunk-EX3LRPZG-DxQOLy7z.js} +1 -1
  188. package/ui-dist/assets/{chunk-JWPE2WC7-B2Jgd3wO.js → chunk-JWPE2WC7-KTwmElcL.js} +1 -1
  189. package/ui-dist/assets/{chunk-MOJQB5TN-CaAqG9fp.js → chunk-MOJQB5TN-BynL4lzA.js} +1 -1
  190. package/ui-dist/assets/{chunk-RYQCIY6F-BDI7azm6.js → chunk-RYQCIY6F-CJksBfuJ.js} +1 -1
  191. package/ui-dist/assets/{chunk-V7JOEXUC-B-P0KC6p.js → chunk-V7JOEXUC-C_zED5WJ.js} +1 -1
  192. package/ui-dist/assets/{chunk-VR4S4FIN-CMfw-kF9.js → chunk-VR4S4FIN-BHDtMeiT.js} +1 -1
  193. package/ui-dist/assets/{chunk-XXDRQBXY-BBVqU1YP.js → chunk-XXDRQBXY-C0VvJgte.js} +1 -1
  194. package/ui-dist/assets/classDiagram-OUVF2IWQ-D15_PFCL.js +1 -0
  195. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-D15_PFCL.js +1 -0
  196. package/ui-dist/assets/{cose-bilkent-JH36ORCC-B_hARQDI.js → cose-bilkent-JH36ORCC-DsTTzpP7.js} +1 -1
  197. package/ui-dist/assets/{cynefin-VYW2F7L2-CTcM0j1n.js → cynefin-VYW2F7L2-BfULw90s.js} +1 -1
  198. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-CL7MmdPn.js → cynefinDiagram-TSTJHNR4-BukSzKVC.js} +1 -1
  199. package/ui-dist/assets/{dagre-VKFMJZFB-mhGwmtXN.js → dagre-VKFMJZFB-BbZY_Ipf.js} +1 -1
  200. package/ui-dist/assets/{diagram-FQU43EPY-BMjw7iEL.js → diagram-FQU43EPY-BTYIYn2p.js} +1 -1
  201. package/ui-dist/assets/{diagram-G47NLZAW-BsTpJwdG.js → diagram-G47NLZAW-CikY_FKi.js} +1 -1
  202. package/ui-dist/assets/{diagram-NH7WQ7WH-Ne5TlLrd.js → diagram-NH7WQ7WH-BfZ7AlT8.js} +1 -1
  203. package/ui-dist/assets/{diagram-OA4YK3LP-YVpFkzL5.js → diagram-OA4YK3LP-f5AikxJj.js} +1 -1
  204. package/ui-dist/assets/{diagram-WEI45ONY-B5uEnE3n.js → diagram-WEI45ONY-BCbG5yas.js} +1 -1
  205. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-i74y0Dqq.js → ebnfDiagram-CCIWWBDH-DT-3mJLY.js} +1 -1
  206. package/ui-dist/assets/{erDiagram-Q63AITRT-46MUSamZ.js → erDiagram-Q63AITRT-BsfOhDfe.js} +1 -1
  207. package/ui-dist/assets/{flowDiagram-23GEKE2U-C9jQx1Z9.js → flowDiagram-23GEKE2U-BfaeQCsg.js} +1 -1
  208. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-BHoVYgnd.js → ganttDiagram-NO4QXBWP-CgPQruVz.js} +1 -1
  209. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-BxCaqc4K.js → gitGraphDiagram-IHSO6WYX-CNrBFzjY.js} +1 -1
  210. package/ui-dist/assets/{graph-7yEA7MiX.js → graph-QqDTzUUJ.js} +1 -1
  211. package/ui-dist/assets/{index-55mSol35.js → index-2ZQZC89T.js} +1 -1
  212. package/ui-dist/assets/{index-Y9EFmtGV.js → index-2cYcOpZB.js} +1 -1
  213. package/ui-dist/assets/{index-Bk4h2xgb.js → index-BAt16m_U.js} +1 -1
  214. package/ui-dist/assets/{index-SnNVv85r.js → index-BY8xCKIE.js} +1 -1
  215. package/ui-dist/assets/{index-Bbr_dltJ.js → index-Befy20DN.js} +1 -1
  216. package/ui-dist/assets/{index-2l0f_0un.js → index-BfAP3xNl.js} +1 -1
  217. package/ui-dist/assets/{index-Cr_0vHJF.js → index-BogOyxlk.js} +1 -1
  218. package/ui-dist/assets/{index-BM2yCFug.js → index-BuIyK71w.js} +562 -557
  219. package/ui-dist/assets/{index-8SjcJx20.js → index-CQ92CxVC.js} +1 -1
  220. package/ui-dist/assets/{index-BMbspMfV.js → index-CQFwlD-o.js} +1 -1
  221. package/ui-dist/assets/{index-DEDA9JuC.js → index-Cu4qo_D7.js} +1 -1
  222. package/ui-dist/assets/index-DRuC5g8V.css +32 -0
  223. package/ui-dist/assets/{index-BYHrPlW0.js → index-DZ4gAeDM.js} +1 -1
  224. package/ui-dist/assets/{index-zsia7wHf.js → index-Dc_DUpPj.js} +1 -1
  225. package/ui-dist/assets/{index-CTe7L-bN.js → index-Dqv46mWS.js} +1 -1
  226. package/ui-dist/assets/{index-sorUqxO4.js → index-sFJMMyA3.js} +1 -1
  227. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-tKN_HUk-.js → infoDiagram-FWYZ7A6U-BJHuaNA9.js} +1 -1
  228. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-z7MJkWMv.js → ishikawaDiagram-FXEZZL3T-CmsA1Knp.js} +1 -1
  229. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-CY9IRx-1.js → journeyDiagram-5HDEW3XC-iV_Nt9d4.js} +1 -1
  230. package/ui-dist/assets/{kanban-definition-HUTT4EX6-R6xzFCHM.js → kanban-definition-HUTT4EX6-D45s70Ny.js} +1 -1
  231. package/ui-dist/assets/{layout-BQx6ln2a.js → layout-DDC-iOzY.js} +1 -1
  232. package/ui-dist/assets/{linear-CH-dQ7Bg.js → linear-DCTJ7Pq3.js} +1 -1
  233. package/ui-dist/assets/{map-DmEHxVn2.js → map-RGy5k616.js} +1 -1
  234. package/ui-dist/assets/{mermaid.core-8TMqfMCO.js → mermaid.core-6MH04cvi.js} +4 -4
  235. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-ClYlc1ss.js → mindmap-definition-LN4V7U3C-CA2LFmda.js} +1 -1
  236. package/ui-dist/assets/{pegDiagram-2B236MQR-DuQPcIJk.js → pegDiagram-2B236MQR-DDsUr2du.js} +1 -1
  237. package/ui-dist/assets/{pieDiagram-ENE6RG2P-Bc1fELpd.js → pieDiagram-ENE6RG2P-D7jEL8xK.js} +1 -1
  238. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-DS9-N5ZO.js → quadrantDiagram-ABIIQ3AL-BsJxgVLb.js} +1 -1
  239. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-BBAeUuch.js → railroadDiagram-RFXS5EU6-CBI457f6.js} +1 -1
  240. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-BmDkrDi3.js → requirementDiagram-TGXJPOKE-_GAc0NOO.js} +1 -1
  241. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-APPAQqTz.js → sankeyDiagram-HTMAVEWB-DNIaj5hu.js} +1 -1
  242. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-B9G01Gl-.js → sequenceDiagram-DBY2YBRQ-BHDZs2dc.js} +1 -1
  243. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-BYjnDqoI.js → sizeCapture-X5ZJPWSS-DwKT6aTP.js} +1 -1
  244. package/ui-dist/assets/{stateDiagram-2N3HPSRC-BQkWPBAj.js → stateDiagram-2N3HPSRC-D2hDsltG.js} +1 -1
  245. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-CMTeJdkk.js +1 -0
  246. package/ui-dist/assets/{swimlanes-5IMT3BWC-Cacv4UUq.js → swimlanes-5IMT3BWC-BV8xA0iq.js} +2 -2
  247. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-ChF8QLeM.js +8 -0
  248. package/ui-dist/assets/{timeline-definition-FHXFAJF6-COt3U2Pi.js → timeline-definition-FHXFAJF6-BPJMubhV.js} +1 -1
  249. package/ui-dist/assets/{vennDiagram-L72KCM5P-C7eLlxvT.js → vennDiagram-L72KCM5P-CY76J0Px.js} +1 -1
  250. package/ui-dist/assets/{wardleyDiagram-EHGQE667-Bufv0x60.js → wardleyDiagram-EHGQE667-pmNWLdE_.js} +1 -1
  251. package/ui-dist/assets/{xterm-BuWLsUNc.js → xterm-UByodpzD.js} +1 -1
  252. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-9RQAf_Zw.js → xychartDiagram-FW5EYKEG-BWZC7gWV.js} +1 -1
  253. package/ui-dist/index.html +2 -2
  254. package/ui-dist/assets/LibraryLiveSurface-YMhPWwag.js +0 -1
  255. package/ui-dist/assets/channel-Cbzk2971.js +0 -1
  256. package/ui-dist/assets/classDiagram-OUVF2IWQ-hBDf22nr.js +0 -1
  257. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-hBDf22nr.js +0 -1
  258. package/ui-dist/assets/index-B_CDj4oF.css +0 -32
  259. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-BucPPlgK.js +0 -1
  260. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-DPpGouCd.js +0 -8
@@ -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.10",
3
+ "version": "0.7.12",
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.10",
59
- "@rudderhq/agent-runtime-codex-local": "0.7.10",
60
- "@rudderhq/agent-runtime-cursor-local": "0.7.10",
61
- "@rudderhq/agent-runtime-gemini-local": "0.7.10",
62
- "@rudderhq/agent-runtime-hermes-gateway": "0.7.10",
63
- "@rudderhq/agent-runtime-openclaw-gateway": "0.7.10",
64
- "@rudderhq/agent-runtime-opencode-local": "0.7.10",
65
- "@rudderhq/agent-runtime-pi-local": "0.7.10",
66
- "@rudderhq/agent-runtime-utils": "0.7.10",
67
- "@rudderhq/db": "0.7.10",
68
- "@rudderhq/identity-core": "0.7.10",
69
- "@rudderhq/run-intelligence-core": "0.7.10",
70
- "@rudderhq/shared": "0.7.10",
58
+ "@rudderhq/agent-runtime-claude-local": "0.7.12",
59
+ "@rudderhq/agent-runtime-codex-local": "0.7.12",
60
+ "@rudderhq/agent-runtime-cursor-local": "0.7.12",
61
+ "@rudderhq/agent-runtime-gemini-local": "0.7.12",
62
+ "@rudderhq/agent-runtime-hermes-gateway": "0.7.12",
63
+ "@rudderhq/agent-runtime-openclaw-gateway": "0.7.12",
64
+ "@rudderhq/agent-runtime-opencode-local": "0.7.12",
65
+ "@rudderhq/agent-runtime-pi-local": "0.7.12",
66
+ "@rudderhq/agent-runtime-utils": "0.7.12",
67
+ "@rudderhq/db": "0.7.12",
68
+ "@rudderhq/identity-core": "0.7.12",
69
+ "@rudderhq/run-intelligence-core": "0.7.12",
70
+ "@rudderhq/shared": "0.7.12",
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 |
@@ -55,6 +56,7 @@ operating-practices guide for operating behavior:
55
56
  | `rudder_goal_list` | `rudder goal list [--lifecycle <draft|active|closed|all>] [--focus <true|false>] [--facet <facet>] [--limit <n>]` | Discover Goals owned by the authenticated Agent; defaults to active Goals and returns current progress, next step, and attention state. | no | required | required | no |
56
57
  | `rudder_goal_context` | `rudder goal context <goal-id>` | Read the owned Goal agreement and current operating context before acting: contract revision, criteria, boundaries, progress, next step, attention, proposals, and recent feedback. | no | no | required | no |
57
58
  | `rudder_goal_progress` | `rudder goal progress <goal-id> --summary <text> --evidence-refs <json> --idempotency-key <key>` | Record evidence-backed progress for a Goal owned by the authenticated Agent and attribute it to the current Run. | yes | no | required | required |
59
+ | `rudder_goal_checkpoint` | `rudder goal checkpoint <goal-id> --summary <text> --evidence-refs <json> --expected-plan-revision <n> --continuation <json> --idempotency-key <key>` | Atomically persist a Goal checkpoint, optional Plan revision, continuation, checkpoint activity, and eligible automatic continuation wake. | yes | no | required | required |
58
60
  | `rudder_goal_change_propose` | `rudder goal change propose <goal-id> --contract-revision <n> --after-contract <json> --rationale <text> --idempotency-key <key>` | Propose a reviewable change to the current Goal contract when evidence shows its outcome, criteria, boundaries, or deadlines should change. | yes | no | required | required |
59
61
  | `rudder_goal_result_propose` | `rudder goal result propose <goal-id> --contract-revision <n> --criteria <json> --evidence-refs <json> --risk-summary <text> --idempotency-key <key>` | Submit an evidence-backed Goal result for mandatory human acceptance without closing the Goal. | yes | no | required | required |
60
62
  | `rudder_issue_get` | `rudder issue get <issue>` | Read a full issue by UUID or identifier. | no | no | no | no |
@@ -129,13 +131,13 @@ operating-practices guide for operating behavior:
129
131
  | `rudder_automation_run` | `rudder automation run <automation-id>` | Trigger a manual automation run. | yes | no | no | attached when available |
130
132
  | `rudder_chat_list` | `rudder chat list --org-id <id>` | List chat conversations without dumping full message history. | no | required | no | no |
131
133
  | `rudder_chat_search` | `rudder chat search <query> --org-id <id>` | Search chats with bounded snippets and optional scope filtering. | no | required | no | no |
132
- | `rudder_chat_get` | `rudder chat get <chat-id>` | Read one chat conversation record. | no | no | no | no |
133
- | `rudder_chat_messages` | `rudder chat messages <chat-id> [--limit <n>] [--cursor <cursor>] [--include-transcript]` | Read bounded chat messages with page cursors; transcript output is omitted unless requested. | no | no | no | no |
134
- | `rudder_chat_transcript` | `rudder chat transcript <chat-id> [--limit <n>] [--cursor <cursor>] [--max-output-chars <n>]` | Read paginated chat messages with assistant transcript entries clipped in human output. | no | no | no | no |
135
- | `rudder_chat_read` | `rudder chat read <chat-id> [--turn-limit <n>] [--cursor <cursor>] [--include-output]` | Read a bounded recent-message snapshot for one chat with page cursors. | no | no | no | no |
134
+ | `rudder_chat_get` | `rudder chat get <chat-id-or-cht-ref>` | Read one chat conversation record. | no | no | no | no |
135
+ | `rudder_chat_messages` | `rudder chat messages <chat-id-or-cht-ref> [--limit <n>] [--cursor <cursor>] [--include-transcript]` | Read bounded chat messages with page cursors; transcript output is omitted unless requested. | no | no | no | no |
136
+ | `rudder_chat_transcript` | `rudder chat transcript <chat-id-or-cht-ref> [--limit <n>] [--cursor <cursor>] [--max-output-chars <n>]` | Read paginated chat messages with assistant transcript entries clipped in human output. | no | no | no | no |
137
+ | `rudder_chat_read` | `rudder chat read <chat-id-or-cht-ref> [--turn-limit <n>] [--cursor <cursor>] [--include-output]` | Read a bounded recent-message snapshot for one chat with page cursors. | no | no | no | no |
136
138
  | `rudder_chat_create` | `rudder chat create --org-id <id> --body <text>` | Create a chat conversation with its first message. | yes | required | no | attached when available |
137
- | `rudder_chat_send` | `rudder chat send <chat-id> --body <text>` | Send an agent-authored message directly to the operator in a chat. | yes | no | required | attached when available |
138
- | `rudder_chat_archive` | `rudder chat archive <chat-id>` | Archive a chat conversation without deleting it. | yes | no | no | attached when available |
139
+ | `rudder_chat_send` | `rudder chat send <chat-id-or-cht-ref> --body <text>` | Send an agent-authored message directly to the operator in a chat. | yes | no | required | attached when available |
140
+ | `rudder_chat_archive` | `rudder chat archive <chat-id-or-cht-ref>` | Archive a chat conversation without deleting it. | yes | no | no | attached when available |
139
141
  | `rudder_runs_list` | `rudder runs list --org-id <id> [--used-skill <skill>] [--loaded-skill <skill>] [--cursor <cursor>] [--full]` | List lightweight run summaries with stable pagination and filters; use --full only for legacy full-row compatibility. | no | required | no | no |
140
142
  | `rudder_runs_by_skill` | `rudder runs by-skill <skill> --org-id <id> [--evidence <used-or-loaded>] [--cursor <cursor>] [--full]` | Build a paginated skill evidence packet from lightweight run summaries; use --full only for legacy full-row compatibility. | no | required | no | no |
141
143
  | `rudder_runs_get` | `rudder runs get <run-id> [--full]` | Read one bounded run summary; use --full only from a direct trusted CLI for raw detail. | no | no | no | no |
@@ -158,6 +160,10 @@ Issue comment and close-out commands accept comment bodies only from files or st
158
160
 
159
161
  Issue comment responses include `shortRef` when available. `rudder issue comments get <issue> <comment-id-or-cmt-ref>` accepts a full comment UUID or `cmt_<uuid-prefix>`, and `rudder issue comments list <issue> --after <comment-id-or-cmt-ref>` accepts the same forms for the pagination anchor. Use the full UUID when a short ref is ambiguous within the issue.
160
162
 
163
+ 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.
164
+
165
+ 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.
166
+
161
167
  `--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.
162
168
 
163
169
  ## Renderable Library CLI Output
@@ -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 |
@@ -55,6 +56,7 @@ operating-practices guide for operating behavior:
55
56
  | `rudder_goal_list` | `rudder goal list [--lifecycle <draft|active|closed|all>] [--focus <true|false>] [--facet <facet>] [--limit <n>]` | Discover Goals owned by the authenticated Agent; defaults to active Goals and returns current progress, next step, and attention state. | no | required | required | no |
56
57
  | `rudder_goal_context` | `rudder goal context <goal-id>` | Read the owned Goal agreement and current operating context before acting: contract revision, criteria, boundaries, progress, next step, attention, proposals, and recent feedback. | no | no | required | no |
57
58
  | `rudder_goal_progress` | `rudder goal progress <goal-id> --summary <text> --evidence-refs <json> --idempotency-key <key>` | Record evidence-backed progress for a Goal owned by the authenticated Agent and attribute it to the current Run. | yes | no | required | required |
59
+ | `rudder_goal_checkpoint` | `rudder goal checkpoint <goal-id> --summary <text> --evidence-refs <json> --expected-plan-revision <n> --continuation <json> --idempotency-key <key>` | Atomically persist a Goal checkpoint, optional Plan revision, continuation, checkpoint activity, and eligible automatic continuation wake. | yes | no | required | required |
58
60
  | `rudder_goal_change_propose` | `rudder goal change propose <goal-id> --contract-revision <n> --after-contract <json> --rationale <text> --idempotency-key <key>` | Propose a reviewable change to the current Goal contract when evidence shows its outcome, criteria, boundaries, or deadlines should change. | yes | no | required | required |
59
61
  | `rudder_goal_result_propose` | `rudder goal result propose <goal-id> --contract-revision <n> --criteria <json> --evidence-refs <json> --risk-summary <text> --idempotency-key <key>` | Submit an evidence-backed Goal result for mandatory human acceptance without closing the Goal. | yes | no | required | required |
60
62
  | `rudder_issue_get` | `rudder issue get <issue>` | Read a full issue by UUID or identifier. | no | no | no | no |
@@ -129,13 +131,13 @@ operating-practices guide for operating behavior:
129
131
  | `rudder_automation_run` | `rudder automation run <automation-id>` | Trigger a manual automation run. | yes | no | no | attached when available |
130
132
  | `rudder_chat_list` | `rudder chat list --org-id <id>` | List chat conversations without dumping full message history. | no | required | no | no |
131
133
  | `rudder_chat_search` | `rudder chat search <query> --org-id <id>` | Search chats with bounded snippets and optional scope filtering. | no | required | no | no |
132
- | `rudder_chat_get` | `rudder chat get <chat-id>` | Read one chat conversation record. | no | no | no | no |
133
- | `rudder_chat_messages` | `rudder chat messages <chat-id> [--limit <n>] [--cursor <cursor>] [--include-transcript]` | Read bounded chat messages with page cursors; transcript output is omitted unless requested. | no | no | no | no |
134
- | `rudder_chat_transcript` | `rudder chat transcript <chat-id> [--limit <n>] [--cursor <cursor>] [--max-output-chars <n>]` | Read paginated chat messages with assistant transcript entries clipped in human output. | no | no | no | no |
135
- | `rudder_chat_read` | `rudder chat read <chat-id> [--turn-limit <n>] [--cursor <cursor>] [--include-output]` | Read a bounded recent-message snapshot for one chat with page cursors. | no | no | no | no |
134
+ | `rudder_chat_get` | `rudder chat get <chat-id-or-cht-ref>` | Read one chat conversation record. | no | no | no | no |
135
+ | `rudder_chat_messages` | `rudder chat messages <chat-id-or-cht-ref> [--limit <n>] [--cursor <cursor>] [--include-transcript]` | Read bounded chat messages with page cursors; transcript output is omitted unless requested. | no | no | no | no |
136
+ | `rudder_chat_transcript` | `rudder chat transcript <chat-id-or-cht-ref> [--limit <n>] [--cursor <cursor>] [--max-output-chars <n>]` | Read paginated chat messages with assistant transcript entries clipped in human output. | no | no | no | no |
137
+ | `rudder_chat_read` | `rudder chat read <chat-id-or-cht-ref> [--turn-limit <n>] [--cursor <cursor>] [--include-output]` | Read a bounded recent-message snapshot for one chat with page cursors. | no | no | no | no |
136
138
  | `rudder_chat_create` | `rudder chat create --org-id <id> --body <text>` | Create a chat conversation with its first message. | yes | required | no | attached when available |
137
- | `rudder_chat_send` | `rudder chat send <chat-id> --body <text>` | Send an agent-authored message directly to the operator in a chat. | yes | no | required | attached when available |
138
- | `rudder_chat_archive` | `rudder chat archive <chat-id>` | Archive a chat conversation without deleting it. | yes | no | no | attached when available |
139
+ | `rudder_chat_send` | `rudder chat send <chat-id-or-cht-ref> --body <text>` | Send an agent-authored message directly to the operator in a chat. | yes | no | required | attached when available |
140
+ | `rudder_chat_archive` | `rudder chat archive <chat-id-or-cht-ref>` | Archive a chat conversation without deleting it. | yes | no | no | attached when available |
139
141
  | `rudder_runs_list` | `rudder runs list --org-id <id> [--used-skill <skill>] [--loaded-skill <skill>] [--cursor <cursor>] [--full]` | List lightweight run summaries with stable pagination and filters; use --full only for legacy full-row compatibility. | no | required | no | no |
140
142
  | `rudder_runs_by_skill` | `rudder runs by-skill <skill> --org-id <id> [--evidence <used-or-loaded>] [--cursor <cursor>] [--full]` | Build a paginated skill evidence packet from lightweight run summaries; use --full only for legacy full-row compatibility. | no | required | no | no |
141
143
  | `rudder_runs_get` | `rudder runs get <run-id> [--full]` | Read one bounded run summary; use --full only from a direct trusted CLI for raw detail. | no | no | no | no |
@@ -158,6 +160,10 @@ Issue comment and close-out commands accept comment bodies only from files or st
158
160
 
159
161
  Issue comment responses include `shortRef` when available. `rudder issue comments get <issue> <comment-id-or-cmt-ref>` accepts a full comment UUID or `cmt_<uuid-prefix>`, and `rudder issue comments list <issue> --after <comment-id-or-cmt-ref>` accepts the same forms for the pagination anchor. Use the full UUID when a short ref is ambiguous within the issue.
160
162
 
163
+ 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.
164
+
165
+ 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.
166
+
161
167
  `--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.
162
168
 
163
169
  ## Renderable Library CLI Output
@@ -0,0 +1 @@
1
+ import{u as ee,a as re,b as te,r as l,c as Q,q as T,i as I,d as A,w as ne,j as e,W as ae,T as se,F as G,e as oe,M as ie,f as le,g as ce,C as z,h as ue,k as de,l as fe,m as me,n as he,o as xe,s as q,p as U,t as D,v as ye,x as J,y as be,z as pe,A as X,B as ve,R as we,D as ke}from"./index-BuIyK71w.js";const V="This file changed while you were editing it.";function ge(b){return b.split("/").filter(Boolean).at(-1)??b}function je(b){return!(b.truncated||b.previewKind!=="text"||b.content===null)}function Fe(b){return/\.(?:md|markdown|mdown|mdx)$/i.test(b.filePath)}function Ce({annotationConversationId:b,file:L,organizationId:n,sourceToolbar:K}){const a=he(),s=L.filePath,w=L.content??"",F=l.useRef(xe(n,s,w)).current,c=l.useRef(!0),f=l.useRef(F.baseContent),C=l.useRef(w),u=l.useRef(F.content),g=l.useRef(null),_=l.useRef(!1),i=l.useRef(F.conflicted),y=l.useRef(0),[m,j]=l.useState(F.content),[P,p]=l.useState(F.conflicted?"error":F.content===w?"saved":"saving"),[R,h]=l.useState(F.conflicted?V:null),v=l.useRef(null),[S,N]=l.useState(null),t=Fe(L);u.current=m,C.current=w,l.useEffect(()=>(c.current=!0,()=>{c.current=!1,q(n,s,f.current,u.current)}),[s,n]),l.useEffect(()=>{if(w!==f.current){if(w===u.current){f.current=w,i.current=!1,p("saved"),h(null),U(n,s);return}if(u.current===f.current){f.current=w,u.current=w,j(w),i.current=!1,p("saved"),h(null),U(n,s);return}g.current=null,y.current+=1,i.current=!0,p("error"),h(V),q(n,s,f.current,u.current)}},[s,n,w]);const M=l.useCallback((o,k)=>{const r=o.content??k;f.current=r,C.current=r,i.current=!1,a.setQueryData(T.organizations.workspaceFile(n,s),o),q(n,s,r,u.current),u.current!==r&&(g.current=u.current),c.current&&(h(null),p(u.current===r?"saved":"saving"))},[s,n,a]),E=l.useCallback(async()=>{if(!_.current){_.current=!0;try{for(;g.current!==null;){const o=g.current,k=y.current;if(g.current=null,i.current)return;if(o!==f.current){c.current&&(p("saving"),h(null));try{const r=await D.updateWorkspaceFile(n,s,{content:o,expectedContent:f.current});if(k!==y.current)continue;M(r,o)}catch(r){if(k!==y.current)continue;let d=null;try{d=await D.readWorkspaceFile(n,s)}catch{}if(k!==y.current)continue;if(d&&(C.current=d.content??"",a.setQueryData(T.organizations.workspaceFile(n,s),d)),(d==null?void 0:d.content)===o){M(d,o);continue}d&&d.content!==f.current&&(g.current=null,i.current=!0,q(n,s,f.current,u.current)),c.current&&(p("error"),h(i.current?V:r instanceof Error?r.message:"Could not save this file."));return}}}c.current&&p(u.current===f.current?"saved":"saving")}finally{_.current=!1,g.current!==null&&!i.current&&E()}}},[M,s,n,a]),W=l.useCallback(o=>{g.current=o,E()},[E]);l.useEffect(()=>{if(q(n,s,f.current,m),i.current)return;if(m===f.current){p(_.current||g.current!==null?"saving":"saved");return}const o=window.setTimeout(()=>W(m),700);return()=>window.clearTimeout(o)},[m,W,s,n]);const $=()=>{const o=C.current;y.current+=1,f.current=o,u.current=o,g.current=null,i.current=!1,j(o),p("saved"),h(null),U(n,s)},O=()=>{y.current+=1,f.current=C.current,i.current=!1,p("saving"),h(null),W(u.current)},x=t?ye(m):{frontmatter:null,separator:"",body:m};return e.jsxs("div",{className:"relative flex h-full min-h-0 min-w-0 w-full flex-col overflow-hidden","data-testid":t?"library-live-surface-markdown-editor":"library-live-surface-text-editor",children:[K,e.jsx("div",{ref:v,className:X("min-h-0 flex-1",t?"scrollbar-auto-hide overflow-y-auto px-6 py-6":"overflow-hidden"),children:t?e.jsxs(e.Fragment,{children:[x.frontmatter!==null?e.jsxs("details",{className:"group mb-6 rounded-md border border-[color:var(--border-soft)] bg-[color:var(--surface-page)]","data-chat-annotation-ignore":!0,"data-testid":"library-live-surface-frontmatter-editor",children:[e.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2 text-xs font-medium text-muted-foreground outline-none transition-colors hover:text-foreground [&::-webkit-details-marker]:hidden",children:[e.jsx("span",{children:"Frontmatter"}),e.jsx(z,{className:"h-3.5 w-3.5 transition-transform group-open:rotate-90"})]}),e.jsx("textarea",{value:x.frontmatter,onChange:o=>{const k=J(o.currentTarget.value,x.separator,x.body);u.current=k,j(k),p(i.current?"error":"saving"),i.current||h(null)},spellCheck:!1,className:"block min-h-28 w-full resize-y border-t border-[color:var(--border-soft)] bg-transparent px-3 py-2 font-mono text-xs leading-5 text-foreground outline-none","aria-label":"Frontmatter"})]}):null,e.jsx(be,{engine:"codemirror",documentIdentity:`library-file:${s}`,value:x.body,onChange:o=>{const k=J(x.frontmatter,x.separator,o);u.current=k,j(k),p(i.current?"error":"saving"),i.current||h(null)},bordered:!1,placeholder:"Write in Markdown...",contentClassName:"rudder-library-document-editor rudder-readable-document mx-auto min-h-[420px] w-full max-w-[880px] text-[15px] leading-7 text-foreground"},s)]}):e.jsx(pe,{"data-testid":"library-live-surface-text-source-editor",annotationSource:{surface:"workspace_file",sourceFilePath:s},ariaLabel:`${s} source editor`,filePath:s,value:m,onChange:o=>{u.current=o,j(o),p(i.current?"error":"saving"),i.current||h(null)},onSelectionChange:N})}),e.jsx(ve,{containerRef:v,conversationId:b,explicitSelection:t?void 0:S,saved:P==="saved"&&!i.current&&m===f.current,source:m,sourceIdentity:{surface:"workspace_file",sourceFilePath:s,sourceLibraryEntryId:L.libraryEntryId},sourceRenderMode:t?"markdown":"text",renderedSource:t?x.body:m,renderedSourceOffset:t?m.length-x.body.length:0}),e.jsxs("div",{className:X("flex min-h-10 shrink-0 items-center gap-2 border-t border-border/70 px-4 text-xs",P==="error"?"text-destructive":"text-muted-foreground"),role:P==="error"?"alert":"status",children:[e.jsx("span",{children:P==="saved"?"Saved":P==="saving"?"Saving…":R??"Save failed"}),i.current?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"font-medium text-foreground underline underline-offset-2",onClick:O,children:"Keep mine"}),e.jsx("button",{type:"button",className:"font-medium text-foreground underline underline-offset-2",onClick:$,children:"Use latest"})]}):P==="error"?e.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 font-medium text-foreground underline underline-offset-2",onClick:()=>W(u.current),children:[e.jsx(we,{className:"h-3 w-3","aria-hidden":!0}),"Retry"]}):null]})]})}function Z(b){return e.jsx("div",{className:"m-auto max-w-sm px-6 py-10 text-center text-sm leading-6 text-muted-foreground","data-testid":"library-live-surface-unavailable",role:"status",children:b})}function Ne({active:b,annotationConversationId:L=null,organizationId:n,surface:K,target:a,onOpenTarget:s}){var o,k;const{pushToast:w}=ee(),Y=re(),F=te(),c=me(),[f,C]=l.useState([]),[u,g]=l.useState(null),[_,i]=l.useState("preview"),y=a.kind==="library_entry"?a:null,m=a.kind==="library_document"?a:null,j=a.kind==="library_directory"?a:null,P=(j==null?void 0:j.directoryPath)??"",p=a.kind==="library_file"?a.filePath:(y==null?void 0:y.path)??null,R=Q({queryKey:T.organizations.libraryEntry(n,(y==null?void 0:y.entryId)??"__none__"),queryFn:()=>D.getLibraryEntry(n,y.entryId),enabled:!!y,refetchOnWindowFocus:!1}),h=p??(((o=R.data)==null?void 0:o.status)==="active"?R.data.currentPath:null),v=Q({queryKey:T.organizations.workspaceFile(n,h??""),queryFn:()=>D.readWorkspaceFile(n,h),enabled:(a.kind==="library_file"||a.kind==="library_entry")&&!!h,refetchOnWindowFocus:!1}),S=Q({queryKey:T.organizations.libraryDocument(n,(m==null?void 0:m.documentId)??"__none__"),queryFn:()=>D.getLibraryDocument(n,m.documentId),enabled:!!m,refetchOnWindowFocus:!1}),N=Q({queryKey:T.organizations.workspaceFiles(n,P),queryFn:()=>D.listWorkspaceFiles(n,P),enabled:!!j,refetchOnWindowFocus:!1}),t=v.data,M=t?I(t)||A(t):!1;l.useEffect(()=>{i("preview")},[h]);const E=ne(f,{canOpenFile:!!(t!=null&&t.rootPath&&typeof(c==null?void 0:c.openWorkspaceFileInIde)=="function"),canOpenLocation:!!(t!=null&&t.rootPath&&typeof(c==null?void 0:c.openWorkspaceFileLocation)=="function")});l.useEffect(()=>{let r=!1;if(!(t!=null&&t.rootPath)||typeof(c==null?void 0:c.listWorkspaceLaunchTargets)!="function"){C([]);return}return c.listWorkspaceLaunchTargets().then(d=>{r||C(d)}).catch(()=>{r||C([])}),()=>{r=!0}},[c,t==null?void 0:t.rootPath]);const W=async r=>{var d;if(!(!(t!=null&&t.rootPath)||!c)){g(r.id);try{ke(r)?await c.openWorkspaceFileInIde(t.rootPath,t.filePath,r.id):await((d=c.openWorkspaceFileLocation)==null?void 0:d.call(c,t.rootPath,t.filePath,r.id)),w({title:`Opened in ${r.label}`,tone:"success"})}catch(B){w({title:`Could not open in ${r.label}`,body:B instanceof Error?B.message:"Try another app.",tone:"error"})}finally{g(null)}}},$=!!(a.kind==="library_entry"&&R.isPending||(a.kind==="library_file"||a.kind==="library_entry")&&h&&v.isPending||a.kind==="library_document"&&S.isPending||a.kind==="library_directory"&&N.isPending),O=a.kind==="library_entry"?R.error??v.error:a.kind==="library_file"?v.error:a.kind==="library_document"?S.error:N.error;let x;return $?x=e.jsx("div",{className:"m-auto text-sm text-muted-foreground","data-testid":"library-live-surface-loading",children:"Loading Library item…"}):O?x=e.jsx("div",{className:"m-auto max-w-sm px-6 py-10 text-center text-sm leading-6 text-destructive","data-testid":"library-live-surface-error",role:"alert",children:O instanceof Error?O.message:"Could not open this Library item."}):a.kind==="library_entry"&&!h?x=Z(((k=R.data)==null?void 0:k.status)==="deleted"?"This Library entry was deleted.":"This Library entry is unavailable on its original path."):(a.kind==="library_file"||a.kind==="library_entry")&&v.data?x=je(v.data)&&(!M||_==="source")?e.jsx(Ce,{annotationConversationId:L,file:v.data,organizationId:n,sourceToolbar:I(v.data)?e.jsx(ae,{viewMode:"source",onViewModeChange:i,testIdPrefix:"library-live-surface"}):A(v.data)?e.jsx("div",{className:"flex h-10 shrink-0 items-center justify-end border-b border-border px-3",children:e.jsxs("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground",onClick:()=>i("preview"),"aria-label":"Show table",children:[e.jsx(se,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Show table"]})}):void 0},v.data.filePath):e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden","data-testid":"library-live-surface-file-preview",children:[A(v.data)?e.jsx("div",{className:"flex h-10 shrink-0 items-center justify-end border-b border-border px-3",children:e.jsxs("button",{type:"button",className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground",onClick:()=>i("source"),"aria-label":"Show source",children:[e.jsx(G,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Show source"]})}):null,e.jsx(oe,{file:v.data,organizationId:n,mode:_,onModeChange:i,testIdPrefix:"library-live-surface"})]}):a.kind==="library_document"&&S.data?x=e.jsx("article",{className:"scrollbar-auto-hide min-h-0 flex-1 overflow-y-auto px-8 py-8","data-testid":"library-live-surface-document",children:e.jsx(ie,{className:"rudder-library-document-editor rudder-readable-document mx-auto w-full max-w-[880px] text-[15px] leading-7 text-foreground",children:S.data.body})}):a.kind==="library_directory"&&N.data?x=e.jsxs("div",{className:"scrollbar-auto-hide min-h-0 flex-1 overflow-y-auto p-3","data-testid":"library-live-surface-directory",children:[e.jsxs("div",{className:"mb-3 px-2",children:[e.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:N.data.directoryPath||"Library root"}),e.jsxs("div",{className:"mt-1 text-xs text-muted-foreground",children:[N.data.entries.length," item",N.data.entries.length===1?"":"s"]})]}),e.jsx("ul",{className:"space-y-0.5 border-t border-border/70 pt-2",children:N.data.entries.map(r=>{var H;const d=((H=r.displayLabel)==null?void 0:H.trim())||r.name,B=r.isDirectory?le:/\.(?:md|markdown|mdx|txt)$/i.test(r.path)?ce:G;return e.jsx("li",{children:e.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm text-muted-foreground hover:bg-[color:var(--surface-active)] hover:text-foreground",onClick:()=>s(r.isDirectory?{kind:"library_directory",directoryPath:r.path,label:d}:r.libraryEntryId?{kind:"library_entry",entryId:r.libraryEntryId,label:d,path:r.path}:{kind:"library_file",filePath:r.path,label:d||ge(r.path)}),children:[e.jsx(B,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),e.jsx("span",{className:"min-w-0 flex-1 truncate",children:d}),r.isDirectory?e.jsx(z,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}):null]})},r.path)})})]}):x=Z("This Library item is unavailable."),e.jsxs("section",{"aria-hidden":!b,className:"flex h-full min-h-0 min-w-0 w-full flex-col overflow-hidden bg-[color:var(--surface-panel)]","data-active":b?"true":"false","data-surface":K,"data-target-kind":a.kind,"data-testid":"library-live-surface",children:[t&&E.length>0?e.jsxs("div",{className:"flex h-11 shrink-0 items-center gap-3 border-b border-border/70 px-4","data-testid":"library-live-surface-file-toolbar",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:t.filePath}),e.jsx("div",{"data-testid":"library-live-surface-file-open-selector",children:e.jsx(ue,{targets:E,openingTargetId:u,onOpenTarget:r=>void W(r),onOpenInLibrary:()=>F(de(`/library?path=${encodeURIComponent(t.filePath)}`,fe(Y.pathname))),testId:"library-live-surface-file-open-menu"})})]}):null,x]})}export{Ne as LibraryLiveSurface};
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-CaAqG9fp.js";import{p as f}from"./chunk-JWPE2WC7-B2Jgd3wO.js";import{_ as n,l as o}from"./mermaid.core-8TMqfMCO.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-CTcM0j1n.js";import"./index-BM2yCFug.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-BynL4lzA.js";import{p as f}from"./chunk-JWPE2WC7-KTwmElcL.js";import{_ as n,l as o}from"./mermaid.core-6MH04cvi.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BfULw90s.js";import"./index-BuIyK71w.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
@@ -1 +1 @@
1
- import{aa as g}from"./index-BM2yCFug.js";function _(i,s){for(var o=0;o<s.length;o++){const t=s[o];if(typeof t!="string"&&!Array.isArray(t)){for(const e in t)if(e!=="default"&&!(e in i)){const r=Object.getOwnPropertyDescriptor(t,e);r&&Object.defineProperty(i,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}var a={exports:{}},d;function y(){return d||(d=1,(function(i,s){(function(o,t){i.exports=t()})(self,(()=>(()=>{var o={};return(()=>{var t=o;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){const e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;const r=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(r._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;const e=this._terminal._core,r=e._renderService.dimensions;if(r.css.cell.width===0||r.css.cell.height===0)return;const c=this._terminal.options.scrollback===0?0:e.viewport.scrollBarWidth,l=window.getComputedStyle(this._terminal.element.parentElement),m=parseInt(l.getPropertyValue("height")),u=Math.max(0,parseInt(l.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),h=m-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),f=u-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-c;return{cols:Math.max(2,Math.floor(f/r.css.cell.width)),rows:Math.max(1,Math.floor(h/r.css.cell.height))}}}})(),o})()))})(a)),a.exports}var p=y();const w=g(p),x=_({__proto__:null,default:w},[p]);export{x as a};
1
+ import{aa as g}from"./index-BuIyK71w.js";function _(i,s){for(var o=0;o<s.length;o++){const t=s[o];if(typeof t!="string"&&!Array.isArray(t)){for(const e in t)if(e!=="default"&&!(e in i)){const r=Object.getOwnPropertyDescriptor(t,e);r&&Object.defineProperty(i,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}var a={exports:{}},d;function y(){return d||(d=1,(function(i,s){(function(o,t){i.exports=t()})(self,(()=>(()=>{var o={};return(()=>{var t=o;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){const e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;const r=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(r._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;const e=this._terminal._core,r=e._renderService.dimensions;if(r.css.cell.width===0||r.css.cell.height===0)return;const c=this._terminal.options.scrollback===0?0:e.viewport.scrollBarWidth,l=window.getComputedStyle(this._terminal.element.parentElement),m=parseInt(l.getPropertyValue("height")),u=Math.max(0,parseInt(l.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),h=m-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),f=u-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-c;return{cols:Math.max(2,Math.floor(f/r.css.cell.width)),rows:Math.max(1,Math.floor(h/r.css.cell.height))}}}})(),o})()))})(a)),a.exports}var p=y();const w=g(p),x=_({__proto__:null,default:w},[p]);export{x as a};
@@ -1 +1 @@
1
- import{G as ln,H as un,I as N,J as I,K as J,L as an,M as y,N as tn,O as j,P as _,Q as rn,R as o,S as on,T as sn,V as fn}from"./mermaid.core-8TMqfMCO.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,q,O,v,R,K,u){var D=q-l,i=O-h,n=K-v,d=u-R,a=d*D-n*i;if(!(a*a<y))return a=(n*(h-R)-d*(l-v))/a,[l+a*D,h+a*i]}function W(l,h,q,O,v,R,K){var u=l-q,D=h-O,i=(K?R:-R)/j(u*u+D*D),n=i*D,d=-i*u,a=l+n,s=h+d,f=q+n,c=O+d,L=(a+f)/2,t=(s+c)/2,m=f-a,g=c-s,A=m*m+g*g,T=v-R,P=a*c-f*s,E=(g<0?-1:1)*j(on(0,T*T*A-P*P)),G=(P*g-m*E)/A,H=(-P*m-g*E)/A,w=(P*g+m*E)/A,p=(-P*m+g*E)/A,x=G-L,e=H-t,r=w-L,M=p-t;return x*x+e*e>r*r+M*M&&(G=w,H=p),{cx:G,cy:H,x01:-n,y01:-d,x11:G*(v/T-1),y11:H*(v/T-1)}}function hn(){var l=cn,h=yn,q=J(0),O=null,v=gn,R=dn,K=mn,u=null,D=ln(i);function i(){var n,d,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=R.apply(this,arguments)-an,L=rn(c-f),t=c>f;if(u||(u=n=D()),s<a&&(d=s,s=a,a=d),!(s>y))u.moveTo(0,0);else if(L>tn-y)u.moveTo(s*N(f),s*I(f)),u.arc(0,0,s,f,c,!t),a>y&&(u.moveTo(a*N(c),a*I(c)),u.arc(0,0,a,c,f,t));else{var m=f,g=c,A=f,T=c,P=L,E=L,G=K.apply(this,arguments)/2,H=G>y&&(O?+O.apply(this,arguments):j(a*a+s*s)),w=_(rn(s-a)/2,+q.apply(this,arguments)),p=w,x=w,e,r;if(H>y){var M=sn(H/a*I(G)),z=sn(H/s*I(G));(P-=M*2)>y?(M*=t?1:-1,A+=M,T-=M):(P=0,A=T=(f+c)/2),(E-=z*2)>y?(z*=t?1:-1,m+=z,g-=z):(E=0,m=g=(f+c)/2)}var Q=s*N(m),V=s*I(m),B=a*N(T),C=a*I(T);if(w>y){var F=s*N(g),U=s*I(g),X=a*N(A),Y=a*I(A),S;if(L<un)if(S=pn(Q,V,X,Y,F,U,B,C)){var Z=Q-S[0],$=V-S[1],k=F-S[0],b=U-S[1],nn=1/I(fn((Z*k+$*b)/(j(Z*Z+$*$)*j(k*k+b*b)))/2),en=j(S[0]*S[0]+S[1]*S[1]);p=_(w,(a-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}E>y?x>y?(e=W(X,Y,Q,V,s,x,t),r=W(F,U,B,C,s,x,t),u.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),u.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(u.moveTo(Q,V),u.arc(0,0,s,m,g,!t)):u.moveTo(Q,V),!(a>y)||!(P>y)?u.lineTo(B,C):p>y?(e=W(B,C,F,U,a,-p,t),r=W(Q,V,X,Y,a,-p,t),u.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,a,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),u.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):u.arc(0,0,a,T,A,t)}if(u.closePath(),n)return u=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-un/2;return[N(d)*n,I(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:J(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:J(+n),i):h},i.cornerRadius=function(n){return arguments.length?(q=typeof n=="function"?n:J(+n),i):q},i.padRadius=function(n){return arguments.length?(O=n==null?null:typeof n=="function"?n:J(+n),i):O},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:J(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:J(+n),i):R},i.padAngle=function(n){return arguments.length?(K=typeof n=="function"?n:J(+n),i):K},i.context=function(n){return arguments.length?(u=n??null,i):u},i}export{hn as d};
1
+ import{G as ln,H as un,I as N,J as I,K as J,L as an,M as y,N as tn,O as j,P as _,Q as rn,R as o,S as on,T as sn,V as fn}from"./mermaid.core-6MH04cvi.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,q,O,v,R,K,u){var D=q-l,i=O-h,n=K-v,d=u-R,a=d*D-n*i;if(!(a*a<y))return a=(n*(h-R)-d*(l-v))/a,[l+a*D,h+a*i]}function W(l,h,q,O,v,R,K){var u=l-q,D=h-O,i=(K?R:-R)/j(u*u+D*D),n=i*D,d=-i*u,a=l+n,s=h+d,f=q+n,c=O+d,L=(a+f)/2,t=(s+c)/2,m=f-a,g=c-s,A=m*m+g*g,T=v-R,P=a*c-f*s,E=(g<0?-1:1)*j(on(0,T*T*A-P*P)),G=(P*g-m*E)/A,H=(-P*m-g*E)/A,w=(P*g+m*E)/A,p=(-P*m+g*E)/A,x=G-L,e=H-t,r=w-L,M=p-t;return x*x+e*e>r*r+M*M&&(G=w,H=p),{cx:G,cy:H,x01:-n,y01:-d,x11:G*(v/T-1),y11:H*(v/T-1)}}function hn(){var l=cn,h=yn,q=J(0),O=null,v=gn,R=dn,K=mn,u=null,D=ln(i);function i(){var n,d,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=R.apply(this,arguments)-an,L=rn(c-f),t=c>f;if(u||(u=n=D()),s<a&&(d=s,s=a,a=d),!(s>y))u.moveTo(0,0);else if(L>tn-y)u.moveTo(s*N(f),s*I(f)),u.arc(0,0,s,f,c,!t),a>y&&(u.moveTo(a*N(c),a*I(c)),u.arc(0,0,a,c,f,t));else{var m=f,g=c,A=f,T=c,P=L,E=L,G=K.apply(this,arguments)/2,H=G>y&&(O?+O.apply(this,arguments):j(a*a+s*s)),w=_(rn(s-a)/2,+q.apply(this,arguments)),p=w,x=w,e,r;if(H>y){var M=sn(H/a*I(G)),z=sn(H/s*I(G));(P-=M*2)>y?(M*=t?1:-1,A+=M,T-=M):(P=0,A=T=(f+c)/2),(E-=z*2)>y?(z*=t?1:-1,m+=z,g-=z):(E=0,m=g=(f+c)/2)}var Q=s*N(m),V=s*I(m),B=a*N(T),C=a*I(T);if(w>y){var F=s*N(g),U=s*I(g),X=a*N(A),Y=a*I(A),S;if(L<un)if(S=pn(Q,V,X,Y,F,U,B,C)){var Z=Q-S[0],$=V-S[1],k=F-S[0],b=U-S[1],nn=1/I(fn((Z*k+$*b)/(j(Z*Z+$*$)*j(k*k+b*b)))/2),en=j(S[0]*S[0]+S[1]*S[1]);p=_(w,(a-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}E>y?x>y?(e=W(X,Y,Q,V,s,x,t),r=W(F,U,B,C,s,x,t),u.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),u.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(u.moveTo(Q,V),u.arc(0,0,s,m,g,!t)):u.moveTo(Q,V),!(a>y)||!(P>y)?u.lineTo(B,C):p>y?(e=W(B,C,F,U,a,-p,t),r=W(Q,V,X,Y,a,-p,t),u.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,a,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),u.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):u.arc(0,0,a,T,A,t)}if(u.closePath(),n)return u=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-un/2;return[N(d)*n,I(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:J(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:J(+n),i):h},i.cornerRadius=function(n){return arguments.length?(q=typeof n=="function"?n:J(+n),i):q},i.padRadius=function(n){return arguments.length?(O=n==null?null:typeof n=="function"?n:J(+n),i):O},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:J(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:J(+n),i):R},i.padAngle=function(n){return arguments.length?(K=typeof n=="function"?n:J(+n),i):K},i.context=function(n){return arguments.length?(u=n??null,i):u},i}export{hn as d};