@rudderhq/server 0.2.5-canary.9 → 0.2.5

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 (309) hide show
  1. package/dist/bootstrap/plugin-host-runtime.d.ts +39 -39
  2. package/dist/bundled-plugins/plugin-linear/dist/worker.js +101 -147
  3. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +2 -2
  4. package/dist/bundled-plugins/plugin-linear/package.json +1 -1
  5. package/dist/routes/access-onboarding.helpers.d.ts +142 -0
  6. package/dist/routes/access-onboarding.helpers.d.ts.map +1 -0
  7. package/dist/routes/access-onboarding.helpers.js +762 -0
  8. package/dist/routes/access-onboarding.helpers.js.map +1 -0
  9. package/dist/routes/access.d.ts +2 -48
  10. package/dist/routes/access.d.ts.map +1 -1
  11. package/dist/routes/access.helpers.d.ts +109 -0
  12. package/dist/routes/access.helpers.d.ts.map +1 -0
  13. package/dist/routes/access.helpers.js +460 -0
  14. package/dist/routes/access.helpers.js.map +1 -0
  15. package/dist/routes/access.js +6 -1218
  16. package/dist/routes/access.js.map +1 -1
  17. package/dist/routes/agents.d.ts.map +1 -1
  18. package/dist/routes/agents.js +55 -1057
  19. package/dist/routes/agents.js.map +1 -1
  20. package/dist/routes/agents.management-routes.d.ts +12 -0
  21. package/dist/routes/agents.management-routes.d.ts.map +1 -0
  22. package/dist/routes/agents.management-routes.js +1067 -0
  23. package/dist/routes/agents.management-routes.js.map +1 -0
  24. package/dist/routes/chats.d.ts.map +1 -1
  25. package/dist/routes/chats.js +42 -652
  26. package/dist/routes/chats.js.map +1 -1
  27. package/dist/routes/chats.stream-routes.d.ts +12 -0
  28. package/dist/routes/chats.stream-routes.d.ts.map +1 -0
  29. package/dist/routes/chats.stream-routes.js +666 -0
  30. package/dist/routes/chats.stream-routes.js.map +1 -0
  31. package/dist/routes/issues.comments-attachments.d.ts +12 -0
  32. package/dist/routes/issues.comments-attachments.d.ts.map +1 -0
  33. package/dist/routes/issues.comments-attachments.js +511 -0
  34. package/dist/routes/issues.comments-attachments.js.map +1 -0
  35. package/dist/routes/issues.d.ts.map +1 -1
  36. package/dist/routes/issues.js +43 -1128
  37. package/dist/routes/issues.js.map +1 -1
  38. package/dist/routes/issues.mutations.d.ts +12 -0
  39. package/dist/routes/issues.mutations.d.ts.map +1 -0
  40. package/dist/routes/issues.mutations.js +635 -0
  41. package/dist/routes/issues.mutations.js.map +1 -0
  42. package/dist/routes/plugins.d.ts.map +1 -1
  43. package/dist/routes/plugins.js +14 -694
  44. package/dist/routes/plugins.js.map +1 -1
  45. package/dist/routes/plugins.operations-routes.d.ts +28 -0
  46. package/dist/routes/plugins.operations-routes.d.ts.map +1 -0
  47. package/dist/routes/plugins.operations-routes.js +720 -0
  48. package/dist/routes/plugins.operations-routes.js.map +1 -0
  49. package/dist/services/access.d.ts +21 -21
  50. package/dist/services/activity.d.ts +19 -19
  51. package/dist/services/agents.d.ts +158 -158
  52. package/dist/services/approvals.d.ts +29 -29
  53. package/dist/services/assets.d.ts +8 -8
  54. package/dist/services/automations.d.ts +41 -27
  55. package/dist/services/automations.d.ts.map +1 -1
  56. package/dist/services/automations.js +287 -110
  57. package/dist/services/automations.js.map +1 -1
  58. package/dist/services/automations.scheduler.d.ts +9 -0
  59. package/dist/services/automations.scheduler.d.ts.map +1 -0
  60. package/dist/services/automations.scheduler.js +101 -0
  61. package/dist/services/automations.scheduler.js.map +1 -0
  62. package/dist/services/board-auth.d.ts +32 -32
  63. package/dist/services/calendar.d.ts +26 -26
  64. package/dist/services/chat-assistant.d.ts +3 -47
  65. package/dist/services/chat-assistant.d.ts.map +1 -1
  66. package/dist/services/chat-assistant.helpers.d.ts +156 -0
  67. package/dist/services/chat-assistant.helpers.d.ts.map +1 -0
  68. package/dist/services/chat-assistant.helpers.js +862 -0
  69. package/dist/services/chat-assistant.helpers.js.map +1 -0
  70. package/dist/services/chat-assistant.js +2 -861
  71. package/dist/services/chat-assistant.js.map +1 -1
  72. package/dist/services/chats.d.ts +149 -247
  73. package/dist/services/chats.d.ts.map +1 -1
  74. package/dist/services/chats.helpers.d.ts +117 -0
  75. package/dist/services/chats.helpers.d.ts.map +1 -0
  76. package/dist/services/chats.helpers.js +285 -0
  77. package/dist/services/chats.helpers.js.map +1 -0
  78. package/dist/services/chats.js +6 -286
  79. package/dist/services/chats.js.map +1 -1
  80. package/dist/services/costs.d.ts +8 -8
  81. package/dist/services/finance.d.ts +18 -18
  82. package/dist/services/goals.d.ts +30 -30
  83. package/dist/services/heartbeat.d.ts +3 -1
  84. package/dist/services/heartbeat.d.ts.map +1 -1
  85. package/dist/services/heartbeat.js +3 -1
  86. package/dist/services/heartbeat.js.map +1 -1
  87. package/dist/services/issue-approvals.d.ts +4 -4
  88. package/dist/services/issue-review-wakeup.d.ts +3 -3
  89. package/dist/services/issues.comments-attachments.d.ts +141 -0
  90. package/dist/services/issues.comments-attachments.d.ts.map +1 -0
  91. package/dist/services/issues.comments-attachments.js +313 -0
  92. package/dist/services/issues.comments-attachments.js.map +1 -0
  93. package/dist/services/issues.d.ts +205 -256
  94. package/dist/services/issues.d.ts.map +1 -1
  95. package/dist/services/issues.helpers.d.ts +87 -0
  96. package/dist/services/issues.helpers.d.ts.map +1 -0
  97. package/dist/services/issues.helpers.js +270 -0
  98. package/dist/services/issues.helpers.js.map +1 -0
  99. package/dist/services/issues.js +5 -569
  100. package/dist/services/issues.js.map +1 -1
  101. package/dist/services/knowledge-portability/organization-portability.core.d.ts +210 -0
  102. package/dist/services/knowledge-portability/organization-portability.core.d.ts.map +1 -0
  103. package/dist/services/knowledge-portability/organization-portability.core.js +997 -0
  104. package/dist/services/knowledge-portability/organization-portability.core.js.map +1 -0
  105. package/dist/services/knowledge-portability/organization-portability.d.ts +6 -28
  106. package/dist/services/knowledge-portability/organization-portability.d.ts.map +1 -1
  107. package/dist/services/knowledge-portability/organization-portability.export.d.ts +24 -0
  108. package/dist/services/knowledge-portability/organization-portability.export.d.ts.map +1 -0
  109. package/dist/services/knowledge-portability/organization-portability.export.js +607 -0
  110. package/dist/services/knowledge-portability/organization-portability.export.js.map +1 -0
  111. package/dist/services/knowledge-portability/organization-portability.files.d.ts +69 -0
  112. package/dist/services/knowledge-portability/organization-portability.files.d.ts.map +1 -0
  113. package/dist/services/knowledge-portability/organization-portability.files.js +597 -0
  114. package/dist/services/knowledge-portability/organization-portability.files.js.map +1 -0
  115. package/dist/services/knowledge-portability/organization-portability.import.d.ts +31 -0
  116. package/dist/services/knowledge-portability/organization-portability.import.d.ts.map +1 -0
  117. package/dist/services/knowledge-portability/organization-portability.import.js +575 -0
  118. package/dist/services/knowledge-portability/organization-portability.import.js.map +1 -0
  119. package/dist/services/knowledge-portability/organization-portability.js +37 -3848
  120. package/dist/services/knowledge-portability/organization-portability.js.map +1 -1
  121. package/dist/services/knowledge-portability/organization-portability.package.d.ts +72 -0
  122. package/dist/services/knowledge-portability/organization-portability.package.d.ts.map +1 -0
  123. package/dist/services/knowledge-portability/organization-portability.package.js +749 -0
  124. package/dist/services/knowledge-portability/organization-portability.package.js.map +1 -0
  125. package/dist/services/knowledge-portability/organization-portability.preview.d.ts +18 -0
  126. package/dist/services/knowledge-portability/organization-portability.preview.d.ts.map +1 -0
  127. package/dist/services/knowledge-portability/organization-portability.preview.js +333 -0
  128. package/dist/services/knowledge-portability/organization-portability.preview.js.map +1 -0
  129. package/dist/services/knowledge-portability/organization-portability.resolve-source.d.ts +4 -0
  130. package/dist/services/knowledge-portability/organization-portability.resolve-source.d.ts.map +1 -0
  131. package/dist/services/knowledge-portability/organization-portability.resolve-source.js +86 -0
  132. package/dist/services/knowledge-portability/organization-portability.resolve-source.js.map +1 -0
  133. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts +221 -0
  134. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -0
  135. package/dist/services/knowledge-portability/organization-skills.catalog.js +999 -0
  136. package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -0
  137. package/dist/services/knowledge-portability/organization-skills.d.ts +4 -75
  138. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  139. package/dist/services/knowledge-portability/organization-skills.js +11 -2008
  140. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  141. package/dist/services/knowledge-portability/organization-skills.scans.d.ts +16 -0
  142. package/dist/services/knowledge-portability/organization-skills.scans.d.ts.map +1 -0
  143. package/dist/services/knowledge-portability/organization-skills.scans.js +300 -0
  144. package/dist/services/knowledge-portability/organization-skills.scans.js.map +1 -0
  145. package/dist/services/knowledge-portability/organization-skills.sources.d.ts +68 -0
  146. package/dist/services/knowledge-portability/organization-skills.sources.d.ts.map +1 -0
  147. package/dist/services/knowledge-portability/organization-skills.sources.js +728 -0
  148. package/dist/services/knowledge-portability/organization-skills.sources.js.map +1 -0
  149. package/dist/services/messenger.d.ts +2 -2
  150. package/dist/services/messenger.js +2 -2
  151. package/dist/services/messenger.js.map +1 -1
  152. package/dist/services/organization-skills.d.ts +3 -1
  153. package/dist/services/organization-skills.d.ts.map +1 -1
  154. package/dist/services/organization-skills.js +3 -1
  155. package/dist/services/organization-skills.js.map +1 -1
  156. package/dist/services/orgs.d.ts +9 -9
  157. package/dist/services/plugin-loader.core.d.ts +14 -0
  158. package/dist/services/plugin-loader.core.d.ts.map +1 -0
  159. package/dist/services/plugin-loader.core.js +905 -0
  160. package/dist/services/plugin-loader.core.js.map +1 -0
  161. package/dist/services/plugin-loader.d.ts +3 -440
  162. package/dist/services/plugin-loader.d.ts.map +1 -1
  163. package/dist/services/plugin-loader.helpers.d.ts +468 -0
  164. package/dist/services/plugin-loader.helpers.d.ts.map +1 -0
  165. package/dist/services/plugin-loader.helpers.js +263 -0
  166. package/dist/services/plugin-loader.helpers.js.map +1 -0
  167. package/dist/services/plugin-loader.js +3 -1191
  168. package/dist/services/plugin-loader.js.map +1 -1
  169. package/dist/services/plugin-loader.worker-paths.d.ts +7 -0
  170. package/dist/services/plugin-loader.worker-paths.d.ts.map +1 -0
  171. package/dist/services/plugin-loader.worker-paths.js +85 -0
  172. package/dist/services/plugin-loader.worker-paths.js.map +1 -0
  173. package/dist/services/plugin-registry.d.ts +123 -123
  174. package/dist/services/projects.d.ts +8 -8
  175. package/dist/services/runtime-kernel/heartbeat.core.d.ts +725 -0
  176. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -0
  177. package/dist/services/runtime-kernel/heartbeat.core.js +525 -0
  178. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -0
  179. package/dist/services/runtime-kernel/heartbeat.d.ts +38 -259
  180. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  181. package/dist/services/runtime-kernel/heartbeat.execute.d.ts +5 -0
  182. package/dist/services/runtime-kernel/heartbeat.execute.d.ts.map +1 -0
  183. package/dist/services/runtime-kernel/heartbeat.execute.js +1052 -0
  184. package/dist/services/runtime-kernel/heartbeat.execute.js.map +1 -0
  185. package/dist/services/runtime-kernel/heartbeat.js +50 -4142
  186. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  187. package/dist/services/runtime-kernel/heartbeat.misc.d.ts +30 -0
  188. package/dist/services/runtime-kernel/heartbeat.misc.d.ts.map +1 -0
  189. package/dist/services/runtime-kernel/heartbeat.misc.js +483 -0
  190. package/dist/services/runtime-kernel/heartbeat.misc.js.map +1 -0
  191. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts +38 -0
  192. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -0
  193. package/dist/services/runtime-kernel/heartbeat.recovery.js +605 -0
  194. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -0
  195. package/dist/services/runtime-kernel/heartbeat.release.d.ts +6 -0
  196. package/dist/services/runtime-kernel/heartbeat.release.d.ts.map +1 -0
  197. package/dist/services/runtime-kernel/heartbeat.release.js +398 -0
  198. package/dist/services/runtime-kernel/heartbeat.release.js.map +1 -0
  199. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts +229 -0
  200. package/dist/services/runtime-kernel/heartbeat.sessions.d.ts.map +1 -0
  201. package/dist/services/runtime-kernel/heartbeat.sessions.js +708 -0
  202. package/dist/services/runtime-kernel/heartbeat.sessions.js.map +1 -0
  203. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts +5 -0
  204. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -0
  205. package/dist/services/runtime-kernel/heartbeat.wakeup.js +552 -0
  206. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -0
  207. package/dist/services/secrets.d.ts +25 -25
  208. package/dist/services/sidebar-badges.js +1 -1
  209. package/dist/services/sidebar-badges.js.map +1 -1
  210. package/dist/services/workspace-runtime.comments.d.ts +6 -0
  211. package/dist/services/workspace-runtime.comments.d.ts.map +1 -0
  212. package/dist/services/workspace-runtime.comments.js +17 -0
  213. package/dist/services/workspace-runtime.comments.js.map +1 -0
  214. package/dist/services/workspace-runtime.d.ts +4 -163
  215. package/dist/services/workspace-runtime.d.ts.map +1 -1
  216. package/dist/services/workspace-runtime.helpers.d.ts +163 -0
  217. package/dist/services/workspace-runtime.helpers.d.ts.map +1 -0
  218. package/dist/services/workspace-runtime.helpers.js +360 -0
  219. package/dist/services/workspace-runtime.helpers.js.map +1 -0
  220. package/dist/services/workspace-runtime.js +4 -1236
  221. package/dist/services/workspace-runtime.js.map +1 -1
  222. package/dist/services/workspace-runtime.lifecycle.d.ts +35 -0
  223. package/dist/services/workspace-runtime.lifecycle.d.ts.map +1 -0
  224. package/dist/services/workspace-runtime.lifecycle.js +266 -0
  225. package/dist/services/workspace-runtime.lifecycle.js.map +1 -0
  226. package/dist/services/workspace-runtime.services.d.ts +140 -0
  227. package/dist/services/workspace-runtime.services.d.ts.map +1 -0
  228. package/dist/services/workspace-runtime.services.js +606 -0
  229. package/dist/services/workspace-runtime.services.js.map +1 -0
  230. package/package.json +21 -15
  231. package/ui-dist/assets/{_basePickBy-B5mJzzqZ.js → _basePickBy-N8I9ml5Y.js} +1 -1
  232. package/ui-dist/assets/{_baseUniq-B10Ec09o.js → _baseUniq-BuSlpRSQ.js} +1 -1
  233. package/ui-dist/assets/{arc-Bw7wimOa.js → arc-qX-dPyA1.js} +1 -1
  234. package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-DZr0XEvv.js → architectureDiagram-2XIMDMQ5-DhjkbXsp.js} +1 -1
  235. package/ui-dist/assets/{blockDiagram-WCTKOSBZ-D0jl0LgB.js → blockDiagram-WCTKOSBZ-JS-tTu3J.js} +1 -1
  236. package/ui-dist/assets/{c4Diagram-IC4MRINW-BEFxBnEm.js → c4Diagram-IC4MRINW-4DqwCWIx.js} +1 -1
  237. package/ui-dist/assets/channel-CccCW5_a.js +1 -0
  238. package/ui-dist/assets/{chunk-4BX2VUAB-Cbul1GoA.js → chunk-4BX2VUAB-T37SqBpp.js} +1 -1
  239. package/ui-dist/assets/{chunk-55IACEB6-DuouC3bT.js → chunk-55IACEB6-BSj9hdqK.js} +1 -1
  240. package/ui-dist/assets/{chunk-FMBD7UC4-bN1jF9xw.js → chunk-FMBD7UC4-Dkrlh0Wk.js} +1 -1
  241. package/ui-dist/assets/{chunk-JSJVCQXG-B0-Ij6ZF.js → chunk-JSJVCQXG-C0ZE3QdB.js} +1 -1
  242. package/ui-dist/assets/{chunk-KX2RTZJC-BjI3IEjI.js → chunk-KX2RTZJC-DOZQM9gW.js} +1 -1
  243. package/ui-dist/assets/{chunk-NQ4KR5QH-MUoGr46n.js → chunk-NQ4KR5QH-5Yr3U2k8.js} +1 -1
  244. package/ui-dist/assets/{chunk-QZHKN3VN-CQoI9Ouy.js → chunk-QZHKN3VN-CvKTufwF.js} +1 -1
  245. package/ui-dist/assets/{chunk-WL4C6EOR-DSJh3iDp.js → chunk-WL4C6EOR-IoEM0jyx.js} +1 -1
  246. package/ui-dist/assets/classDiagram-VBA2DB6C-JKk4tCW2.js +1 -0
  247. package/ui-dist/assets/classDiagram-v2-RAHNMMFH-JKk4tCW2.js +1 -0
  248. package/ui-dist/assets/clone-Onaweg8D.js +1 -0
  249. package/ui-dist/assets/{cose-bilkent-S5V4N54A-BPepglgB.js → cose-bilkent-S5V4N54A-CTvr1OFj.js} +1 -1
  250. package/ui-dist/assets/{dagre-KLK3FWXG-DhnHVZkt.js → dagre-KLK3FWXG-UZ-SNjVK.js} +1 -1
  251. package/ui-dist/assets/{diagram-E7M64L7V-DNvXtoOO.js → diagram-E7M64L7V-D7RAN0Hr.js} +1 -1
  252. package/ui-dist/assets/{diagram-IFDJBPK2-DhGlDTgn.js → diagram-IFDJBPK2-B4LViaFR.js} +1 -1
  253. package/ui-dist/assets/{diagram-P4PSJMXO-BmXEloWS.js → diagram-P4PSJMXO-CY1be7ak.js} +1 -1
  254. package/ui-dist/assets/{erDiagram-INFDFZHY-BTYVzaLM.js → erDiagram-INFDFZHY-Dca0KkvJ.js} +1 -1
  255. package/ui-dist/assets/{flowDiagram-PKNHOUZH-CqMNQUVv.js → flowDiagram-PKNHOUZH-i-qMvfwg.js} +1 -1
  256. package/ui-dist/assets/{ganttDiagram-A5KZAMGK-B2le_64a.js → ganttDiagram-A5KZAMGK-Wxq2lhbh.js} +1 -1
  257. package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-BtxOBq5A.js → gitGraphDiagram-K3NZZRJ6-DwzgPlAY.js} +1 -1
  258. package/ui-dist/assets/{graph-C5E6qFfm.js → graph-BAqf89Tz.js} +1 -1
  259. package/ui-dist/assets/{index-Piq-IPXt.js → index-4eCzaLuY.js} +1 -1
  260. package/ui-dist/assets/{index-DT6UN2ec.js → index-8uu-nKqK.js} +1 -1
  261. package/ui-dist/assets/{index-T5NVZ3nR.js → index-B-1NEcI_.js} +1 -1
  262. package/ui-dist/assets/{index-D-MoarxG.js → index-B0b_3Eu5.js} +1 -1
  263. package/ui-dist/assets/{index-CZiP3FBQ.js → index-B8v0eZjP.js} +1 -1
  264. package/ui-dist/assets/{index-C1Ga66FM.js → index-BN7Moj3u.js} +1 -1
  265. package/ui-dist/assets/{index-xBUfBdQn.js → index-BSpxh3cY.js} +1 -1
  266. package/ui-dist/assets/{index-CQcMWp51.js → index-BY44RIi9.js} +1 -1
  267. package/ui-dist/assets/{index-3a93sZNI.js → index-BhyQJhdZ.js} +1 -1
  268. package/ui-dist/assets/{index-BsVDit5y.js → index-BkPL_iGU.js} +1 -1
  269. package/ui-dist/assets/{index-88lBSTsW.js → index-BsPfoHXS.js} +1 -1
  270. package/ui-dist/assets/{index-CyJtcUF0.js → index-BstW7nmv.js} +1 -1
  271. package/ui-dist/assets/{index-BvZ0Ptfl.js → index-BwB67Zyz.js} +1 -1
  272. package/ui-dist/assets/index-C2peSkmT.css +1 -0
  273. package/ui-dist/assets/{index-vkCrQLeX.js → index-C3ktOsS_.js} +1 -1
  274. package/ui-dist/assets/{index-D2hZpQJT.js → index-CMyABlS-.js} +1 -1
  275. package/ui-dist/assets/{index-C4WCPEY4.js → index-CyBJ8ujC.js} +1 -1
  276. package/ui-dist/assets/{index-Bf7NB_lK.js → index-DAxM2W3O.js} +1 -1
  277. package/ui-dist/assets/{index-Dq7H6-Lm.js → index-DVZXPmhk.js} +1 -1
  278. package/ui-dist/assets/{index-CskDu6A3.js → index-Dc19uAyw.js} +1 -1
  279. package/ui-dist/assets/index-DzHrwZu1.js +1511 -0
  280. package/ui-dist/assets/{index-B20JneLK.js → index-LJuf53Ye.js} +1 -1
  281. package/ui-dist/assets/{index-D6McTDMQ.js → index-Ugw5VWWz.js} +1 -1
  282. package/ui-dist/assets/{index-CcVGS6HJ.js → index-YGraEFR7.js} +1 -1
  283. package/ui-dist/assets/{infoDiagram-LFFYTUFH-BiCCZcIW.js → infoDiagram-LFFYTUFH-jLmDtFVR.js} +1 -1
  284. package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-BiwBemM5.js → ishikawaDiagram-PHBUUO56-6OGMyLT8.js} +1 -1
  285. package/ui-dist/assets/{journeyDiagram-4ABVD52K-D8RGr2xl.js → journeyDiagram-4ABVD52K-yQjl6E0t.js} +1 -1
  286. package/ui-dist/assets/{kanban-definition-K7BYSVSG-C733Fj-E.js → kanban-definition-K7BYSVSG-DkdCeQlS.js} +1 -1
  287. package/ui-dist/assets/{layout-CM4c3NA_.js → layout-CqSYvZ_w.js} +1 -1
  288. package/ui-dist/assets/{linear-DzH21Xsf.js → linear-B8xGZaoi.js} +1 -1
  289. package/ui-dist/assets/{mermaid.core-Z2rpoVP2.js → mermaid.core-AKL_cdyk.js} +4 -4
  290. package/ui-dist/assets/{mindmap-definition-YRQLILUH-DylLLj9w.js → mindmap-definition-YRQLILUH-Zr-dXC0x.js} +1 -1
  291. package/ui-dist/assets/{pieDiagram-SKSYHLDU-617wI_rr.js → pieDiagram-SKSYHLDU-BvDAU-Nk.js} +1 -1
  292. package/ui-dist/assets/{quadrantDiagram-337W2JSQ-lxoCPJIL.js → quadrantDiagram-337W2JSQ-Dn9kM62o.js} +1 -1
  293. package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-C5XydQ9-.js → requirementDiagram-Z7DCOOCP-GIsIh7Sd.js} +1 -1
  294. package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK--grmq-Q8.js → sankeyDiagram-WA2Y5GQK-CUCuBkuf.js} +1 -1
  295. package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-BS2PeYH-.js → sequenceDiagram-2WXFIKYE-MDpUY2HM.js} +1 -1
  296. package/ui-dist/assets/{stateDiagram-RAJIS63D-CeuZtj2z.js → stateDiagram-RAJIS63D-BymMpuUU.js} +1 -1
  297. package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-Bi2oCU6d.js +1 -0
  298. package/ui-dist/assets/{timeline-definition-YZTLITO2-DxHdMpRr.js → timeline-definition-YZTLITO2-B6ofPhhy.js} +1 -1
  299. package/ui-dist/assets/{treemap-KZPCXAKY-Bv1ZlC5h.js → treemap-KZPCXAKY-DnLO6w1l.js} +1 -1
  300. package/ui-dist/assets/{vennDiagram-LZ73GAT5-DvpZSXY2.js → vennDiagram-LZ73GAT5-D0MyZIDl.js} +1 -1
  301. package/ui-dist/assets/{xychartDiagram-JWTSCODW-DttOu1GC.js → xychartDiagram-JWTSCODW-rADY1iUG.js} +1 -1
  302. package/ui-dist/index.html +2 -2
  303. package/ui-dist/assets/channel-DGUh6rEi.js +0 -1
  304. package/ui-dist/assets/classDiagram-VBA2DB6C-1ntk2IOV.js +0 -1
  305. package/ui-dist/assets/classDiagram-v2-RAHNMMFH-1ntk2IOV.js +0 -1
  306. package/ui-dist/assets/clone-BpddY88c.js +0 -1
  307. package/ui-dist/assets/index-C8AD6s7S.js +0 -1510
  308. package/ui-dist/assets/index-Ded0dPwB.css +0 -1
  309. package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DXq0yC5C.js +0 -1
@@ -0,0 +1,749 @@
1
+ import path from "node:path";
2
+ import { deriveProjectUrlKey, getBundledRudderSkillSlug, normalizeAgentUrlKey, toBundledRudderSkillKey, } from "@rudderhq/shared";
3
+ import { unprocessable } from "../../errors.js";
4
+ import { PORTABLE_AGENT_ENTRY_FILE, asString, asBoolean, deriveManifestSkillKey, execFileAsync, isPlainRecord, isBundledRudderSourceKind, normalizeAutomationExtension, normalizePortableProjectWorkspaceExtension, normalizeSkillKey, readSkillSourceKind, stripEmptyValues, } from "./organization-portability.core.js";
5
+ import { buildMarkdown, findPaperclipExtensionPath, normalizeFileMap, normalizePortablePath, normalizePortableSidebarOrder, readPortableTextFile, renderYamlBlock, resolvePortablePath, } from "./organization-portability.files.js";
6
+ let bundledSkillsCommitPromise = null;
7
+ export async function resolveBundledSkillsCommit() {
8
+ if (!bundledSkillsCommitPromise) {
9
+ bundledSkillsCommitPromise = execFileAsync("git", ["rev-parse", "HEAD"], {
10
+ cwd: process.cwd(),
11
+ encoding: "utf8",
12
+ })
13
+ .then(({ stdout }) => stdout.trim() || null)
14
+ .catch(() => null);
15
+ }
16
+ return bundledSkillsCommitPromise;
17
+ }
18
+ export async function buildSkillSourceEntry(skill) {
19
+ const metadata = isPlainRecord(skill.metadata) ? skill.metadata : null;
20
+ if (isBundledRudderSourceKind(asString(metadata?.sourceKind))) {
21
+ const commit = await resolveBundledSkillsCommit();
22
+ return {
23
+ kind: "github-dir",
24
+ repo: "rudder/rudder",
25
+ path: `.agents/skills/${skill.slug}`,
26
+ commit,
27
+ trackingRef: "master",
28
+ url: `https://github.com/Undertone0809/rudder/tree/master/.agents/skills/${skill.slug}`,
29
+ };
30
+ }
31
+ if (skill.sourceType === "github" || skill.sourceType === "skills_sh") {
32
+ const owner = asString(metadata?.owner);
33
+ const repo = asString(metadata?.repo);
34
+ const repoSkillDir = asString(metadata?.repoSkillDir);
35
+ if (!owner || !repo || !repoSkillDir)
36
+ return null;
37
+ return {
38
+ kind: "github-dir",
39
+ repo: `${owner}/${repo}`,
40
+ path: repoSkillDir,
41
+ commit: skill.sourceRef ?? null,
42
+ trackingRef: asString(metadata?.trackingRef),
43
+ url: skill.sourceLocator,
44
+ };
45
+ }
46
+ if (skill.sourceType === "url" && skill.sourceLocator) {
47
+ return {
48
+ kind: "url",
49
+ url: skill.sourceLocator,
50
+ };
51
+ }
52
+ return null;
53
+ }
54
+ export function shouldReferenceSkillOnExport(skill, expandReferencedSkills) {
55
+ if (expandReferencedSkills)
56
+ return false;
57
+ const metadata = isPlainRecord(skill.metadata) ? skill.metadata : null;
58
+ if (isBundledRudderSourceKind(asString(metadata?.sourceKind)))
59
+ return true;
60
+ return skill.sourceType === "github" || skill.sourceType === "skills_sh" || skill.sourceType === "url";
61
+ }
62
+ export async function buildReferencedSkillMarkdown(skill) {
63
+ const sourceEntry = await buildSkillSourceEntry(skill);
64
+ const sourceKind = readSkillSourceKind(skill);
65
+ const canonicalKey = isBundledRudderSourceKind(sourceKind)
66
+ ? toBundledRudderSkillKey(getBundledRudderSkillSlug(skill.key) ?? skill.slug) ?? skill.key
67
+ : skill.key;
68
+ const frontmatter = {
69
+ key: canonicalKey,
70
+ slug: skill.slug,
71
+ name: skill.name,
72
+ description: skill.description ?? null,
73
+ };
74
+ if (sourceEntry) {
75
+ frontmatter.metadata = {
76
+ sources: [sourceEntry],
77
+ };
78
+ }
79
+ return buildMarkdown(frontmatter, "");
80
+ }
81
+ export async function withSkillSourceMetadata(skill, markdown) {
82
+ const sourceEntry = await buildSkillSourceEntry(skill);
83
+ const parsed = parseFrontmatterMarkdown(markdown);
84
+ const metadata = isPlainRecord(parsed.frontmatter.metadata)
85
+ ? { ...parsed.frontmatter.metadata }
86
+ : {};
87
+ const existingSources = Array.isArray(metadata.sources)
88
+ ? metadata.sources.filter((entry) => isPlainRecord(entry))
89
+ : [];
90
+ if (sourceEntry) {
91
+ metadata.sources = [...existingSources, sourceEntry];
92
+ }
93
+ metadata.skillKey = skill.key;
94
+ metadata.rudderSkillKey = skill.key;
95
+ metadata.rudder = {
96
+ ...(isPlainRecord(metadata.rudder) ? metadata.rudder : {}),
97
+ skillKey: skill.key,
98
+ slug: skill.slug,
99
+ };
100
+ const frontmatter = {
101
+ ...parsed.frontmatter,
102
+ key: skill.key,
103
+ slug: skill.slug,
104
+ metadata,
105
+ };
106
+ return buildMarkdown(frontmatter, parsed.body);
107
+ }
108
+ export function parseYamlScalar(rawValue) {
109
+ const trimmed = rawValue.trim();
110
+ if (trimmed === "")
111
+ return "";
112
+ if (trimmed === "null" || trimmed === "~")
113
+ return null;
114
+ if (trimmed === "true")
115
+ return true;
116
+ if (trimmed === "false")
117
+ return false;
118
+ if (trimmed === "[]")
119
+ return [];
120
+ if (trimmed === "{}")
121
+ return {};
122
+ if (/^-?\d+(\.\d+)?$/.test(trimmed))
123
+ return Number(trimmed);
124
+ if (trimmed.startsWith("\"") ||
125
+ trimmed.startsWith("[") ||
126
+ trimmed.startsWith("{")) {
127
+ try {
128
+ return JSON.parse(trimmed);
129
+ }
130
+ catch {
131
+ return trimmed;
132
+ }
133
+ }
134
+ return trimmed;
135
+ }
136
+ export function prepareYamlLines(raw) {
137
+ return raw
138
+ .split("\n")
139
+ .map((line) => ({
140
+ indent: line.match(/^ */)?.[0].length ?? 0,
141
+ content: line.trim(),
142
+ }))
143
+ .filter((line) => line.content.length > 0 && !line.content.startsWith("#"));
144
+ }
145
+ export function parseYamlBlock(lines, startIndex, indentLevel) {
146
+ let index = startIndex;
147
+ while (index < lines.length && lines[index].content.length === 0) {
148
+ index += 1;
149
+ }
150
+ if (index >= lines.length || lines[index].indent < indentLevel) {
151
+ return { value: {}, nextIndex: index };
152
+ }
153
+ const isArray = lines[index].indent === indentLevel && lines[index].content.startsWith("-");
154
+ if (isArray) {
155
+ const values = [];
156
+ while (index < lines.length) {
157
+ const line = lines[index];
158
+ if (line.indent < indentLevel)
159
+ break;
160
+ if (line.indent !== indentLevel || !line.content.startsWith("-"))
161
+ break;
162
+ const remainder = line.content.slice(1).trim();
163
+ index += 1;
164
+ if (!remainder) {
165
+ const nested = parseYamlBlock(lines, index, indentLevel + 2);
166
+ values.push(nested.value);
167
+ index = nested.nextIndex;
168
+ continue;
169
+ }
170
+ const inlineObjectSeparator = remainder.indexOf(":");
171
+ if (inlineObjectSeparator > 0 &&
172
+ !remainder.startsWith("\"") &&
173
+ !remainder.startsWith("{") &&
174
+ !remainder.startsWith("[")) {
175
+ const key = remainder.slice(0, inlineObjectSeparator).trim();
176
+ const rawValue = remainder.slice(inlineObjectSeparator + 1).trim();
177
+ const nextObject = {
178
+ [key]: parseYamlScalar(rawValue),
179
+ };
180
+ if (index < lines.length && lines[index].indent > indentLevel) {
181
+ const nested = parseYamlBlock(lines, index, indentLevel + 2);
182
+ if (isPlainRecord(nested.value)) {
183
+ Object.assign(nextObject, nested.value);
184
+ }
185
+ index = nested.nextIndex;
186
+ }
187
+ values.push(nextObject);
188
+ continue;
189
+ }
190
+ values.push(parseYamlScalar(remainder));
191
+ }
192
+ return { value: values, nextIndex: index };
193
+ }
194
+ const record = {};
195
+ while (index < lines.length) {
196
+ const line = lines[index];
197
+ if (line.indent < indentLevel)
198
+ break;
199
+ if (line.indent !== indentLevel) {
200
+ index += 1;
201
+ continue;
202
+ }
203
+ const separatorIndex = line.content.indexOf(":");
204
+ if (separatorIndex <= 0) {
205
+ index += 1;
206
+ continue;
207
+ }
208
+ const key = line.content.slice(0, separatorIndex).trim();
209
+ const remainder = line.content.slice(separatorIndex + 1).trim();
210
+ index += 1;
211
+ if (!remainder) {
212
+ const nested = parseYamlBlock(lines, index, indentLevel + 2);
213
+ record[key] = nested.value;
214
+ index = nested.nextIndex;
215
+ continue;
216
+ }
217
+ record[key] = parseYamlScalar(remainder);
218
+ }
219
+ return { value: record, nextIndex: index };
220
+ }
221
+ export function parseYamlFrontmatter(raw) {
222
+ const prepared = prepareYamlLines(raw);
223
+ if (prepared.length === 0)
224
+ return {};
225
+ const parsed = parseYamlBlock(prepared, 0, prepared[0].indent);
226
+ return isPlainRecord(parsed.value) ? parsed.value : {};
227
+ }
228
+ export function parseYamlFile(raw) {
229
+ return parseYamlFrontmatter(raw);
230
+ }
231
+ export function buildYamlFile(value, opts) {
232
+ const cleaned = stripEmptyValues(value, opts);
233
+ if (!isPlainRecord(cleaned))
234
+ return "{}\n";
235
+ return renderYamlBlock(cleaned, 0).join("\n") + "\n";
236
+ }
237
+ export function parseFrontmatterMarkdown(raw) {
238
+ const normalized = raw.replace(/\r\n/g, "\n");
239
+ if (!normalized.startsWith("---\n")) {
240
+ return { frontmatter: {}, body: normalized.replace(/\n$/, "") };
241
+ }
242
+ const closing = normalized.indexOf("\n---\n", 4);
243
+ if (closing < 0) {
244
+ return { frontmatter: {}, body: normalized.replace(/\n$/, "") };
245
+ }
246
+ const frontmatterRaw = normalized.slice(4, closing).trim();
247
+ const body = normalized.slice(closing + 5).replace(/^\n/, "").replace(/\n$/, "");
248
+ return {
249
+ frontmatter: parseYamlFrontmatter(frontmatterRaw),
250
+ body,
251
+ };
252
+ }
253
+ export async function fetchText(url) {
254
+ const response = await fetch(url);
255
+ if (!response.ok) {
256
+ throw unprocessable(`Failed to fetch ${url}: ${response.status}`);
257
+ }
258
+ return response.text();
259
+ }
260
+ export async function fetchOptionalText(url) {
261
+ const response = await fetch(url);
262
+ if (response.status === 404)
263
+ return null;
264
+ if (!response.ok) {
265
+ throw unprocessable(`Failed to fetch ${url}: ${response.status}`);
266
+ }
267
+ return response.text();
268
+ }
269
+ export async function fetchBinary(url) {
270
+ const response = await fetch(url);
271
+ if (!response.ok) {
272
+ throw unprocessable(`Failed to fetch ${url}: ${response.status}`);
273
+ }
274
+ return Buffer.from(await response.arrayBuffer());
275
+ }
276
+ export async function fetchJson(url) {
277
+ const response = await fetch(url, {
278
+ headers: {
279
+ accept: "application/vnd.github+json",
280
+ },
281
+ });
282
+ if (!response.ok) {
283
+ throw unprocessable(`Failed to fetch ${url}: ${response.status}`);
284
+ }
285
+ return response.json();
286
+ }
287
+ export function dedupeEnvInputs(values) {
288
+ const seen = new Set();
289
+ const out = [];
290
+ for (const value of values) {
291
+ const key = `${value.agentSlug ?? ""}:${value.key.toUpperCase()}`;
292
+ if (seen.has(key))
293
+ continue;
294
+ seen.add(key);
295
+ out.push(value);
296
+ }
297
+ return out;
298
+ }
299
+ export function buildEnvInputMap(inputs) {
300
+ const env = {};
301
+ for (const input of inputs) {
302
+ const entry = {
303
+ kind: input.kind,
304
+ requirement: input.requirement,
305
+ };
306
+ if (input.defaultValue !== null)
307
+ entry.default = input.defaultValue;
308
+ if (input.description)
309
+ entry.description = input.description;
310
+ if (input.portability === "system_dependent")
311
+ entry.portability = "system_dependent";
312
+ env[input.key] = entry;
313
+ }
314
+ return env;
315
+ }
316
+ export function readCompanyApprovalDefault(_frontmatter) {
317
+ return true;
318
+ }
319
+ export function readIncludeEntries(frontmatter) {
320
+ const includes = frontmatter.includes;
321
+ if (!Array.isArray(includes))
322
+ return [];
323
+ return includes.flatMap((entry) => {
324
+ if (typeof entry === "string") {
325
+ return [{ path: entry }];
326
+ }
327
+ if (isPlainRecord(entry)) {
328
+ const pathValue = asString(entry.path);
329
+ return pathValue ? [{ path: pathValue }] : [];
330
+ }
331
+ return [];
332
+ });
333
+ }
334
+ export function readAgentEnvInputs(extension, agentSlug) {
335
+ const inputs = isPlainRecord(extension.inputs) ? extension.inputs : null;
336
+ const env = inputs && isPlainRecord(inputs.env) ? inputs.env : null;
337
+ if (!env)
338
+ return [];
339
+ return Object.entries(env).flatMap(([key, value]) => {
340
+ if (!isPlainRecord(value))
341
+ return [];
342
+ const record = value;
343
+ return [{
344
+ key,
345
+ description: asString(record.description) ?? null,
346
+ agentSlug,
347
+ kind: record.kind === "plain" ? "plain" : "secret",
348
+ requirement: record.requirement === "required" ? "required" : "optional",
349
+ defaultValue: typeof record.default === "string" ? record.default : null,
350
+ portability: record.portability === "system_dependent" ? "system_dependent" : "portable",
351
+ }];
352
+ });
353
+ }
354
+ export function readAgentSkillRefs(frontmatter) {
355
+ const skills = frontmatter.skills;
356
+ if (!Array.isArray(skills))
357
+ return [];
358
+ return Array.from(new Set(skills
359
+ .filter((entry) => typeof entry === "string")
360
+ .map((entry) => normalizeSkillKey(entry) ?? entry.trim())
361
+ .filter(Boolean)));
362
+ }
363
+ export function isPortableAgentEntryPath(relativePath) {
364
+ return path.posix.basename(normalizePortablePath(relativePath)) === PORTABLE_AGENT_ENTRY_FILE;
365
+ }
366
+ export function ensurePortableAgentEntryFile(exportedFiles, exportedEntryFile, fallbackBody) {
367
+ const files = { ...exportedFiles };
368
+ const normalizedEntryFile = normalizePortablePath(exportedEntryFile);
369
+ if (isPortableAgentEntryPath(normalizedEntryFile) && typeof files[normalizedEntryFile] === "string") {
370
+ return { files, entryFile: normalizedEntryFile };
371
+ }
372
+ const existingPortableEntry = Object.keys(files)
373
+ .map((entry) => normalizePortablePath(entry))
374
+ .find((entry) => isPortableAgentEntryPath(entry));
375
+ if (existingPortableEntry) {
376
+ return { files, entryFile: existingPortableEntry };
377
+ }
378
+ files[PORTABLE_AGENT_ENTRY_FILE] = fallbackBody || "_No AGENTS instructions were resolved from current agent config._";
379
+ return { files, entryFile: PORTABLE_AGENT_ENTRY_FILE };
380
+ }
381
+ export function buildManifestFromPackageFiles(files, opts) {
382
+ const normalizedFiles = normalizeFileMap(files);
383
+ const companyPath = typeof normalizedFiles["ORGANIZATION.md"] === "string"
384
+ ? normalizedFiles["ORGANIZATION.md"]
385
+ : undefined;
386
+ const resolvedCompanyPath = companyPath !== undefined
387
+ ? "ORGANIZATION.md"
388
+ : Object.keys(normalizedFiles).find((entry) => entry.endsWith("/ORGANIZATION.md") || entry === "ORGANIZATION.md");
389
+ if (!resolvedCompanyPath) {
390
+ throw unprocessable("Organization package is missing ORGANIZATION.md");
391
+ }
392
+ const companyMarkdown = readPortableTextFile(normalizedFiles, resolvedCompanyPath);
393
+ if (typeof companyMarkdown !== "string") {
394
+ throw unprocessable(`Organization package file is not readable as text: ${resolvedCompanyPath}`);
395
+ }
396
+ const companyDoc = parseFrontmatterMarkdown(companyMarkdown);
397
+ const companyFrontmatter = companyDoc.frontmatter;
398
+ const rudderExtensionPath = findPaperclipExtensionPath(normalizedFiles);
399
+ const rudderExtension = rudderExtensionPath
400
+ ? parseYamlFile(readPortableTextFile(normalizedFiles, rudderExtensionPath) ?? "")
401
+ : {};
402
+ const rudderCompany = isPlainRecord(rudderExtension.organization) ? rudderExtension.organization : {};
403
+ const rudderSidebar = normalizePortableSidebarOrder(rudderExtension.sidebar);
404
+ const rudderAgents = isPlainRecord(rudderExtension.agents) ? rudderExtension.agents : {};
405
+ const rudderProjects = isPlainRecord(rudderExtension.projects) ? rudderExtension.projects : {};
406
+ const rudderTasks = isPlainRecord(rudderExtension.tasks) ? rudderExtension.tasks : {};
407
+ const rudderAutomations = isPlainRecord(rudderExtension.automations) ? rudderExtension.automations : {};
408
+ const organizationName = asString(companyFrontmatter.name)
409
+ ?? opts?.sourceLabel?.organizationName
410
+ ?? "Imported Organization";
411
+ const companySlug = asString(companyFrontmatter.slug)
412
+ ?? normalizeAgentUrlKey(organizationName)
413
+ ?? "organization";
414
+ const includeEntries = readIncludeEntries(companyFrontmatter);
415
+ const referencedAgentPaths = includeEntries
416
+ .map((entry) => resolvePortablePath(resolvedCompanyPath, entry.path))
417
+ .filter((entry) => entry.endsWith("/AGENTS.md") || entry === "AGENTS.md");
418
+ const referencedProjectPaths = includeEntries
419
+ .map((entry) => resolvePortablePath(resolvedCompanyPath, entry.path))
420
+ .filter((entry) => entry.endsWith("/PROJECT.md") || entry === "PROJECT.md");
421
+ const referencedTaskPaths = includeEntries
422
+ .map((entry) => resolvePortablePath(resolvedCompanyPath, entry.path))
423
+ .filter((entry) => entry.endsWith("/TASK.md") || entry === "TASK.md");
424
+ const referencedSkillPaths = includeEntries
425
+ .map((entry) => resolvePortablePath(resolvedCompanyPath, entry.path))
426
+ .filter((entry) => entry.endsWith("/SKILL.md") || entry === "SKILL.md");
427
+ const discoveredAgentPaths = Object.keys(normalizedFiles).filter((entry) => entry.endsWith("/AGENTS.md") || entry === "AGENTS.md");
428
+ const discoveredProjectPaths = Object.keys(normalizedFiles).filter((entry) => entry.endsWith("/PROJECT.md") || entry === "PROJECT.md");
429
+ const discoveredTaskPaths = Object.keys(normalizedFiles).filter((entry) => entry.endsWith("/TASK.md") || entry === "TASK.md");
430
+ const discoveredSkillPaths = Object.keys(normalizedFiles).filter((entry) => entry.endsWith("/SKILL.md") || entry === "SKILL.md");
431
+ const agentPaths = Array.from(new Set([...referencedAgentPaths, ...discoveredAgentPaths])).sort();
432
+ const projectPaths = Array.from(new Set([...referencedProjectPaths, ...discoveredProjectPaths])).sort();
433
+ const taskPaths = Array.from(new Set([...referencedTaskPaths, ...discoveredTaskPaths])).sort();
434
+ const skillPaths = Array.from(new Set([...referencedSkillPaths, ...discoveredSkillPaths])).sort();
435
+ const manifest = {
436
+ schemaVersion: 4,
437
+ generatedAt: new Date().toISOString(),
438
+ source: opts?.sourceLabel ?? null,
439
+ includes: {
440
+ organization: true,
441
+ agents: true,
442
+ projects: projectPaths.length > 0,
443
+ issues: taskPaths.length > 0,
444
+ skills: skillPaths.length > 0,
445
+ },
446
+ organization: {
447
+ path: resolvedCompanyPath,
448
+ name: organizationName,
449
+ description: asString(companyFrontmatter.description),
450
+ brandColor: asString(rudderCompany.brandColor),
451
+ logoPath: asString(rudderCompany.logoPath) ?? asString(rudderCompany.logo),
452
+ requireBoardApprovalForNewAgents: typeof rudderCompany.requireBoardApprovalForNewAgents === "boolean"
453
+ ? rudderCompany.requireBoardApprovalForNewAgents
454
+ : readCompanyApprovalDefault(companyFrontmatter),
455
+ },
456
+ sidebar: rudderSidebar,
457
+ agents: [],
458
+ skills: [],
459
+ projects: [],
460
+ issues: [],
461
+ envInputs: [],
462
+ };
463
+ const warnings = [];
464
+ if (manifest.organization?.logoPath && !normalizedFiles[manifest.organization.logoPath]) {
465
+ warnings.push(`Referenced organization logo file is missing from package: ${manifest.organization.logoPath}`);
466
+ }
467
+ for (const agentPath of agentPaths) {
468
+ const markdownRaw = readPortableTextFile(normalizedFiles, agentPath);
469
+ if (typeof markdownRaw !== "string") {
470
+ warnings.push(`Referenced agent file is missing from package: ${agentPath}`);
471
+ continue;
472
+ }
473
+ const agentDoc = parseFrontmatterMarkdown(markdownRaw);
474
+ const frontmatter = agentDoc.frontmatter;
475
+ const fallbackSlug = normalizeAgentUrlKey(path.posix.basename(path.posix.dirname(agentPath))) ?? "agent";
476
+ const slug = asString(frontmatter.slug) ?? fallbackSlug;
477
+ const extension = isPlainRecord(rudderAgents[slug]) ? rudderAgents[slug] : {};
478
+ const extensionAdapter = isPlainRecord(extension.adapter) ? extension.adapter : null;
479
+ const extensionRuntime = isPlainRecord(extension.runtime) ? extension.runtime : null;
480
+ const extensionPermissions = isPlainRecord(extension.permissions) ? extension.permissions : null;
481
+ const extensionMetadata = isPlainRecord(extension.metadata) ? extension.metadata : null;
482
+ const agentRuntimeConfig = isPlainRecord(extensionAdapter?.config)
483
+ ? extensionAdapter.config
484
+ : {};
485
+ const runtimeConfig = extensionRuntime ?? {};
486
+ const title = asString(frontmatter.title);
487
+ manifest.agents.push({
488
+ slug,
489
+ name: asString(frontmatter.name) ?? title ?? slug,
490
+ path: agentPath,
491
+ skills: readAgentSkillRefs(frontmatter),
492
+ role: asString(extension.role) ?? "agent",
493
+ title,
494
+ icon: asString(extension.icon),
495
+ capabilities: asString(extension.capabilities),
496
+ reportsToSlug: asString(frontmatter.reportsTo) ?? asString(extension.reportsTo),
497
+ agentRuntimeType: asString(extensionAdapter?.type) ?? "process",
498
+ agentRuntimeConfig,
499
+ runtimeConfig,
500
+ permissions: extensionPermissions ?? {},
501
+ budgetMonthlyCents: typeof extension.budgetMonthlyCents === "number" && Number.isFinite(extension.budgetMonthlyCents)
502
+ ? Math.max(0, Math.floor(extension.budgetMonthlyCents))
503
+ : 0,
504
+ metadata: extensionMetadata,
505
+ });
506
+ manifest.envInputs.push(...readAgentEnvInputs(extension, slug));
507
+ if (frontmatter.kind && frontmatter.kind !== "agent") {
508
+ warnings.push(`Agent markdown ${agentPath} does not declare kind: agent in frontmatter.`);
509
+ }
510
+ }
511
+ for (const skillPath of skillPaths) {
512
+ const markdownRaw = readPortableTextFile(normalizedFiles, skillPath);
513
+ if (typeof markdownRaw !== "string") {
514
+ warnings.push(`Referenced skill file is missing from package: ${skillPath}`);
515
+ continue;
516
+ }
517
+ const skillDoc = parseFrontmatterMarkdown(markdownRaw);
518
+ const frontmatter = skillDoc.frontmatter;
519
+ const skillDir = path.posix.dirname(skillPath);
520
+ const fallbackSlug = normalizeAgentUrlKey(path.posix.basename(skillDir)) ?? "skill";
521
+ const slug = asString(frontmatter.slug) ?? normalizeAgentUrlKey(asString(frontmatter.name) ?? "") ?? fallbackSlug;
522
+ const inventory = Object.keys(normalizedFiles)
523
+ .filter((entry) => entry === skillPath || entry.startsWith(`${skillDir}/`))
524
+ .map((entry) => ({
525
+ path: entry === skillPath ? "SKILL.md" : entry.slice(skillDir.length + 1),
526
+ kind: entry === skillPath
527
+ ? "skill"
528
+ : entry.startsWith(`${skillDir}/references/`)
529
+ ? "reference"
530
+ : entry.startsWith(`${skillDir}/scripts/`)
531
+ ? "script"
532
+ : entry.startsWith(`${skillDir}/assets/`)
533
+ ? "asset"
534
+ : entry.endsWith(".md")
535
+ ? "markdown"
536
+ : "other",
537
+ }));
538
+ const metadata = isPlainRecord(frontmatter.metadata) ? frontmatter.metadata : null;
539
+ const sources = metadata && Array.isArray(metadata.sources) ? metadata.sources : [];
540
+ const primarySource = sources.find((entry) => isPlainRecord(entry));
541
+ const sourceKind = asString(primarySource?.kind);
542
+ let sourceType = "catalog";
543
+ let sourceLocator = null;
544
+ let sourceRef = null;
545
+ let normalizedMetadata = null;
546
+ if (sourceKind === "github-dir" || sourceKind === "github-file") {
547
+ const repo = asString(primarySource?.repo);
548
+ const repoPath = asString(primarySource?.path);
549
+ const commit = asString(primarySource?.commit);
550
+ const trackingRef = asString(primarySource?.trackingRef);
551
+ const [owner, repoName] = (repo ?? "").split("/");
552
+ sourceType = "github";
553
+ sourceLocator = asString(primarySource?.url)
554
+ ?? (repo ? `https://github.com/${repo}${repoPath ? `/tree/${trackingRef ?? commit ?? "main"}/${repoPath}` : ""}` : null);
555
+ sourceRef = commit;
556
+ normalizedMetadata = owner && repoName
557
+ ? {
558
+ sourceKind: "github",
559
+ owner,
560
+ repo: repoName,
561
+ ref: commit,
562
+ trackingRef,
563
+ repoSkillDir: repoPath ?? `skills/${slug}`,
564
+ }
565
+ : null;
566
+ }
567
+ else if (sourceKind === "url") {
568
+ sourceType = "url";
569
+ sourceLocator = asString(primarySource?.url) ?? asString(primarySource?.rawUrl);
570
+ normalizedMetadata = {
571
+ sourceKind: "url",
572
+ };
573
+ }
574
+ else if (metadata) {
575
+ normalizedMetadata = {
576
+ sourceKind: "catalog",
577
+ };
578
+ }
579
+ const key = deriveManifestSkillKey(frontmatter, slug, normalizedMetadata, sourceType, sourceLocator);
580
+ manifest.skills.push({
581
+ key,
582
+ slug,
583
+ name: asString(frontmatter.name) ?? slug,
584
+ path: skillPath,
585
+ description: asString(frontmatter.description),
586
+ sourceType,
587
+ sourceLocator,
588
+ sourceRef,
589
+ trustLevel: null,
590
+ compatibility: "compatible",
591
+ metadata: normalizedMetadata,
592
+ fileInventory: inventory,
593
+ });
594
+ }
595
+ for (const projectPath of projectPaths) {
596
+ const markdownRaw = readPortableTextFile(normalizedFiles, projectPath);
597
+ if (typeof markdownRaw !== "string") {
598
+ warnings.push(`Referenced project file is missing from package: ${projectPath}`);
599
+ continue;
600
+ }
601
+ const projectDoc = parseFrontmatterMarkdown(markdownRaw);
602
+ const frontmatter = projectDoc.frontmatter;
603
+ const fallbackSlug = deriveProjectUrlKey(asString(frontmatter.name) ?? path.posix.basename(path.posix.dirname(projectPath)) ?? "project", projectPath);
604
+ const slug = asString(frontmatter.slug) ?? fallbackSlug;
605
+ const extension = isPlainRecord(rudderProjects[slug]) ? rudderProjects[slug] : {};
606
+ const workspaceExtensions = isPlainRecord(extension.workspaces) ? extension.workspaces : {};
607
+ const workspaces = Object.entries(workspaceExtensions)
608
+ .map(([workspaceKey, entry]) => normalizePortableProjectWorkspaceExtension(workspaceKey, entry))
609
+ .filter((entry) => entry !== null);
610
+ manifest.projects.push({
611
+ slug,
612
+ name: asString(frontmatter.name) ?? slug,
613
+ path: projectPath,
614
+ description: asString(frontmatter.description),
615
+ ownerAgentSlug: asString(frontmatter.owner),
616
+ leadAgentSlug: asString(extension.leadAgentSlug),
617
+ targetDate: asString(extension.targetDate),
618
+ color: asString(extension.color),
619
+ status: asString(extension.status),
620
+ executionWorkspacePolicy: isPlainRecord(extension.executionWorkspacePolicy)
621
+ ? extension.executionWorkspacePolicy
622
+ : null,
623
+ workspaces,
624
+ metadata: isPlainRecord(extension.metadata) ? extension.metadata : null,
625
+ });
626
+ if (frontmatter.kind && frontmatter.kind !== "project") {
627
+ warnings.push(`Project markdown ${projectPath} does not declare kind: project in frontmatter.`);
628
+ }
629
+ }
630
+ for (const taskPath of taskPaths) {
631
+ const markdownRaw = readPortableTextFile(normalizedFiles, taskPath);
632
+ if (typeof markdownRaw !== "string") {
633
+ warnings.push(`Referenced task file is missing from package: ${taskPath}`);
634
+ continue;
635
+ }
636
+ const taskDoc = parseFrontmatterMarkdown(markdownRaw);
637
+ const frontmatter = taskDoc.frontmatter;
638
+ const fallbackSlug = normalizeAgentUrlKey(path.posix.basename(path.posix.dirname(taskPath))) ?? "task";
639
+ const slug = asString(frontmatter.slug) ?? fallbackSlug;
640
+ const extension = isPlainRecord(rudderTasks[slug]) ? rudderTasks[slug] : {};
641
+ const automationExtension = normalizeAutomationExtension(rudderAutomations[slug]);
642
+ const automationExtensionRaw = isPlainRecord(rudderAutomations[slug]) ? rudderAutomations[slug] : {};
643
+ const schedule = isPlainRecord(frontmatter.schedule) ? frontmatter.schedule : null;
644
+ const legacyRecurrence = schedule && isPlainRecord(schedule.recurrence)
645
+ ? schedule.recurrence
646
+ : isPlainRecord(extension.recurrence)
647
+ ? extension.recurrence
648
+ : null;
649
+ const recurring = asBoolean(frontmatter.recurring) === true
650
+ || automationExtension !== null
651
+ || legacyRecurrence !== null;
652
+ manifest.issues.push({
653
+ slug,
654
+ identifier: asString(extension.identifier),
655
+ title: asString(frontmatter.name) ?? asString(frontmatter.title) ?? slug,
656
+ path: taskPath,
657
+ projectSlug: asString(frontmatter.project),
658
+ projectWorkspaceKey: asString(extension.projectWorkspaceKey),
659
+ assigneeAgentSlug: asString(frontmatter.assignee),
660
+ parentIssueSlug: asString(frontmatter.parent) ?? asString(extension.parentIssueSlug) ?? null,
661
+ description: taskDoc.body || asString(frontmatter.description),
662
+ recurring,
663
+ automation: automationExtension,
664
+ legacyRecurrence,
665
+ status: asString(extension.status) ?? asString(automationExtensionRaw.status),
666
+ priority: asString(extension.priority) ?? asString(automationExtensionRaw.priority),
667
+ labelIds: Array.isArray(extension.labelIds)
668
+ ? extension.labelIds.filter((entry) => typeof entry === "string")
669
+ : [],
670
+ billingCode: asString(extension.billingCode),
671
+ executionWorkspaceSettings: isPlainRecord(extension.executionWorkspaceSettings)
672
+ ? extension.executionWorkspaceSettings
673
+ : null,
674
+ assigneeAgentRuntimeOverrides: isPlainRecord(extension.assigneeAgentRuntimeOverrides)
675
+ ? extension.assigneeAgentRuntimeOverrides
676
+ : null,
677
+ metadata: isPlainRecord(extension.metadata) ? extension.metadata : null,
678
+ });
679
+ if (frontmatter.kind && frontmatter.kind !== "task") {
680
+ warnings.push(`Task markdown ${taskPath} does not declare kind: task in frontmatter.`);
681
+ }
682
+ }
683
+ manifest.envInputs = dedupeEnvInputs(manifest.envInputs);
684
+ return {
685
+ manifest,
686
+ files: normalizedFiles,
687
+ warnings,
688
+ };
689
+ }
690
+ export function normalizeGitHubSourcePath(value) {
691
+ if (!value)
692
+ return "";
693
+ return value.trim().replace(/\\/g, "/").replace(/^\/+|\/+$/g, "");
694
+ }
695
+ export function parseGitHubSourceUrl(rawUrl) {
696
+ const url = new URL(rawUrl);
697
+ if (url.hostname !== "github.com") {
698
+ throw unprocessable("GitHub source must use github.com URL");
699
+ }
700
+ const parts = url.pathname.split("/").filter(Boolean);
701
+ if (parts.length < 2) {
702
+ throw unprocessable("Invalid GitHub URL");
703
+ }
704
+ const owner = parts[0];
705
+ const repo = parts[1].replace(/\.git$/i, "");
706
+ const queryRef = url.searchParams.get("ref")?.trim();
707
+ const queryPath = normalizeGitHubSourcePath(url.searchParams.get("path"));
708
+ const queryCompanyPath = normalizeGitHubSourcePath(url.searchParams.get("companyPath"))?.replace(/(^|\/)COMPANY\.md$/i, "$1ORGANIZATION.md");
709
+ if (queryRef || queryPath || queryCompanyPath) {
710
+ const companyPath = queryCompanyPath || [queryPath, "ORGANIZATION.md"].filter(Boolean).join("/") || "ORGANIZATION.md";
711
+ let basePath = queryPath;
712
+ if (!basePath && companyPath !== "ORGANIZATION.md") {
713
+ basePath = path.posix.dirname(companyPath);
714
+ if (basePath === ".")
715
+ basePath = "";
716
+ }
717
+ return {
718
+ owner,
719
+ repo,
720
+ ref: queryRef || "main",
721
+ basePath,
722
+ companyPath,
723
+ };
724
+ }
725
+ let ref = "main";
726
+ let basePath = "";
727
+ let companyPath = "ORGANIZATION.md";
728
+ if (parts[2] === "tree") {
729
+ ref = parts[3] ?? "main";
730
+ basePath = parts.slice(4).join("/");
731
+ }
732
+ else if (parts[2] === "blob") {
733
+ ref = parts[3] ?? "main";
734
+ const blobPath = parts.slice(4).join("/");
735
+ if (!blobPath) {
736
+ throw unprocessable("Invalid GitHub blob URL");
737
+ }
738
+ companyPath = blobPath.replace(/(^|\/)COMPANY\.md$/i, "$1ORGANIZATION.md");
739
+ basePath = path.posix.dirname(blobPath);
740
+ if (basePath === ".")
741
+ basePath = "";
742
+ }
743
+ return { owner, repo, ref, basePath, companyPath };
744
+ }
745
+ export function resolveRawGitHubUrl(owner, repo, ref, filePath) {
746
+ const normalizedFilePath = filePath.replace(/^\/+/, "");
747
+ return `https://raw.githubusercontent.com/${owner}/${repo}/${ref}/${normalizedFilePath}`;
748
+ }
749
+ //# sourceMappingURL=organization-portability.package.js.map