@rudderhq/server 0.7.2 → 0.7.3

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 (428) hide show
  1. package/dist/agent-runtimes/registry.d.ts.map +1 -1
  2. package/dist/agent-runtimes/registry.js +0 -2
  3. package/dist/agent-runtimes/registry.js.map +1 -1
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +1 -5
  6. package/dist/app.js.map +1 -1
  7. package/dist/bootstrap/create-http-app.d.ts +1 -2
  8. package/dist/bootstrap/create-http-app.d.ts.map +1 -1
  9. package/dist/bootstrap/create-http-app.js +13 -12
  10. package/dist/bootstrap/create-http-app.js.map +1 -1
  11. package/dist/bootstrap/register-api-routes.d.ts +1 -2
  12. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  13. package/dist/bootstrap/register-api-routes.js +20 -4
  14. package/dist/bootstrap/register-api-routes.js.map +1 -1
  15. package/dist/middleware/logger.js +2 -2
  16. package/dist/middleware/logger.js.map +1 -1
  17. package/dist/middleware/logger.test.js +26 -10
  18. package/dist/middleware/logger.test.js.map +1 -1
  19. package/dist/routes/agent-issue-creation.d.ts +25 -0
  20. package/dist/routes/agent-issue-creation.d.ts.map +1 -0
  21. package/dist/routes/agent-issue-creation.js +201 -0
  22. package/dist/routes/agent-issue-creation.js.map +1 -0
  23. package/dist/routes/app-builder.d.ts +3 -1
  24. package/dist/routes/app-builder.d.ts.map +1 -1
  25. package/dist/routes/app-builder.js +31 -11
  26. package/dist/routes/app-builder.js.map +1 -1
  27. package/dist/routes/computer.d.ts +30 -0
  28. package/dist/routes/computer.d.ts.map +1 -0
  29. package/dist/routes/computer.js +231 -0
  30. package/dist/routes/computer.js.map +1 -0
  31. package/dist/routes/health.d.ts.map +1 -1
  32. package/dist/routes/health.js +2 -0
  33. package/dist/routes/health.js.map +1 -1
  34. package/dist/routes/instance-settings.d.ts.map +1 -1
  35. package/dist/routes/instance-settings.js +3 -0
  36. package/dist/routes/instance-settings.js.map +1 -1
  37. package/dist/routes/issues.comments-attachments.d.ts.map +1 -1
  38. package/dist/routes/issues.comments-attachments.js +90 -8
  39. package/dist/routes/issues.comments-attachments.js.map +1 -1
  40. package/dist/routes/issues.d.ts.map +1 -1
  41. package/dist/routes/issues.js +12 -1
  42. package/dist/routes/issues.js.map +1 -1
  43. package/dist/routes/issues.mutations.d.ts.map +1 -1
  44. package/dist/routes/issues.mutations.js +85 -33
  45. package/dist/routes/issues.mutations.js.map +1 -1
  46. package/dist/routes/managed-mcp-runtime.d.ts.map +1 -1
  47. package/dist/routes/managed-mcp-runtime.js +109 -7
  48. package/dist/routes/managed-mcp-runtime.js.map +1 -1
  49. package/dist/routes/rudder-plugins.d.ts +4 -0
  50. package/dist/routes/rudder-plugins.d.ts.map +1 -0
  51. package/dist/routes/rudder-plugins.js +213 -0
  52. package/dist/routes/rudder-plugins.js.map +1 -0
  53. package/dist/services/activity-log.d.ts +0 -3
  54. package/dist/services/activity-log.d.ts.map +1 -1
  55. package/dist/services/activity-log.js +0 -33
  56. package/dist/services/activity-log.js.map +1 -1
  57. package/dist/services/activity.d.ts +3 -3
  58. package/dist/services/agent-issue-creation.d.ts +344 -0
  59. package/dist/services/agent-issue-creation.d.ts.map +1 -0
  60. package/dist/services/agent-issue-creation.js +675 -0
  61. package/dist/services/agent-issue-creation.js.map +1 -0
  62. package/dist/services/agent-run-context.d.ts.map +1 -1
  63. package/dist/services/agent-run-context.js +13 -2
  64. package/dist/services/agent-run-context.js.map +1 -1
  65. package/dist/services/app-builder.d.ts.map +1 -1
  66. package/dist/services/app-builder.js +24 -3
  67. package/dist/services/app-builder.js.map +1 -1
  68. package/dist/services/chat-assistant.d.ts.map +1 -1
  69. package/dist/services/chat-assistant.helpers.d.ts +1 -1
  70. package/dist/services/chat-assistant.js +11 -2
  71. package/dist/services/chat-assistant.js.map +1 -1
  72. package/dist/services/chat-generation-protocol.test.js +2 -2
  73. package/dist/services/chat-generation-protocol.test.js.map +1 -1
  74. package/dist/services/chats.d.ts +2 -2
  75. package/dist/services/computer-broker.d.ts +35 -0
  76. package/dist/services/computer-broker.d.ts.map +1 -0
  77. package/dist/services/computer-broker.js +211 -0
  78. package/dist/services/computer-broker.js.map +1 -0
  79. package/dist/services/computer-broker.test.d.ts +2 -0
  80. package/dist/services/computer-broker.test.d.ts.map +1 -0
  81. package/dist/services/computer-broker.test.js +70 -0
  82. package/dist/services/computer-broker.test.js.map +1 -0
  83. package/dist/services/computer-capability.d.ts +13 -0
  84. package/dist/services/computer-capability.d.ts.map +1 -0
  85. package/dist/services/computer-capability.js +11 -0
  86. package/dist/services/computer-capability.js.map +1 -0
  87. package/dist/services/computer-capability.test.d.ts +2 -0
  88. package/dist/services/computer-capability.test.d.ts.map +1 -0
  89. package/dist/services/computer-capability.test.js +27 -0
  90. package/dist/services/computer-capability.test.js.map +1 -0
  91. package/dist/services/finance.d.ts +1 -1
  92. package/dist/services/index.d.ts +2 -0
  93. package/dist/services/index.d.ts.map +1 -1
  94. package/dist/services/index.js +2 -0
  95. package/dist/services/index.js.map +1 -1
  96. package/dist/services/instance-settings.d.ts.map +1 -1
  97. package/dist/services/instance-settings.js +15 -2
  98. package/dist/services/instance-settings.js.map +1 -1
  99. package/dist/services/integrations/agent-integrations.d.ts +1 -1
  100. package/dist/services/issues.d.ts +86 -1
  101. package/dist/services/issues.d.ts.map +1 -1
  102. package/dist/services/issues.helpers.d.ts +4 -0
  103. package/dist/services/issues.helpers.d.ts.map +1 -1
  104. package/dist/services/issues.helpers.js +28 -6
  105. package/dist/services/issues.helpers.js.map +1 -1
  106. package/dist/services/issues.js +207 -127
  107. package/dist/services/issues.js.map +1 -1
  108. package/dist/services/knowledge-portability/organization-portability.files.d.ts +1 -1
  109. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts +7 -1
  110. package/dist/services/knowledge-portability/organization-skills.catalog.d.ts.map +1 -1
  111. package/dist/services/knowledge-portability/organization-skills.catalog.js +10 -0
  112. package/dist/services/knowledge-portability/organization-skills.catalog.js.map +1 -1
  113. package/dist/services/knowledge-portability/organization-skills.d.ts +1 -0
  114. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  115. package/dist/services/knowledge-portability/organization-skills.js +36 -3
  116. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  117. package/dist/services/mcp/managed-bindings.d.ts +3 -1
  118. package/dist/services/mcp/managed-bindings.d.ts.map +1 -1
  119. package/dist/services/mcp/managed-bindings.js +20 -3
  120. package/dist/services/mcp/managed-bindings.js.map +1 -1
  121. package/dist/services/mcp/managed-client.d.ts +15 -0
  122. package/dist/services/mcp/managed-client.d.ts.map +1 -1
  123. package/dist/services/mcp/managed-client.js +23 -1
  124. package/dist/services/mcp/managed-client.js.map +1 -1
  125. package/dist/services/mcp/managed-client.test.js +73 -9
  126. package/dist/services/mcp/managed-client.test.js.map +1 -1
  127. package/dist/services/messenger.d.ts +2 -2
  128. package/dist/services/messenger.d.ts.map +1 -1
  129. package/dist/services/messenger.js +126 -49
  130. package/dist/services/messenger.js.map +1 -1
  131. package/dist/services/product-analytics.d.ts +1 -1
  132. package/dist/services/rudder-plugins.d.ts +107 -0
  133. package/dist/services/rudder-plugins.d.ts.map +1 -0
  134. package/dist/services/rudder-plugins.js +1746 -0
  135. package/dist/services/rudder-plugins.js.map +1 -0
  136. package/dist/services/rudder-plugins.test.d.ts +2 -0
  137. package/dist/services/rudder-plugins.test.d.ts.map +1 -0
  138. package/dist/services/rudder-plugins.test.js +191 -0
  139. package/dist/services/rudder-plugins.test.js.map +1 -0
  140. package/dist/services/runtime-kernel/heartbeat.core.d.ts +1 -0
  141. package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
  142. package/dist/services/runtime-kernel/heartbeat.core.js +1 -1
  143. package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
  144. package/dist/services/runtime-kernel/heartbeat.d.ts +53 -0
  145. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  146. package/dist/services/runtime-kernel/heartbeat.js +227 -107
  147. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  148. package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
  149. package/dist/services/runtime-kernel/heartbeat.recovery.js +23 -2
  150. package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
  151. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts +14 -1
  152. package/dist/services/runtime-kernel/heartbeat.terminal.d.ts.map +1 -1
  153. package/dist/services/runtime-kernel/heartbeat.terminal.js +31 -0
  154. package/dist/services/runtime-kernel/heartbeat.terminal.js.map +1 -1
  155. package/dist/services/runtime-kernel/heartbeat.wakeup.d.ts.map +1 -1
  156. package/dist/services/runtime-kernel/heartbeat.wakeup.js +35 -3
  157. package/dist/services/runtime-kernel/heartbeat.wakeup.js.map +1 -1
  158. package/package.json +18 -18
  159. package/resources/bundled-skills/app-builder/SKILL.md +39 -9
  160. package/resources/bundled-skills/app-builder/assets/scaffold/app/globals.css +109 -16
  161. package/resources/bundled-skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +176 -152
  162. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/alert.tsx +12 -0
  163. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/badge.tsx +27 -0
  164. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/button.tsx +9 -7
  165. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/card.tsx +15 -3
  166. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/empty.tsx +18 -0
  167. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/field.tsx +23 -0
  168. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/input.tsx +1 -1
  169. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/label.tsx +1 -1
  170. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/separator.tsx +6 -0
  171. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/skeleton.tsx +6 -0
  172. package/resources/bundled-skills/app-builder/assets/scaffold/components/ui/table.tsx +30 -0
  173. package/resources/bundled-skills/app-builder/assets/scaffold/components.json +20 -0
  174. package/resources/bundled-skills/app-builder/assets/scaffold/next-env.d.ts +1 -1
  175. package/resources/bundled-skills/app-builder/assets/scaffold/next.config.ts +19 -0
  176. package/resources/bundled-skills/app-builder/assets/scaffold/package.json +2 -1
  177. package/resources/bundled-skills/app-builder/assets/scaffold/rudder.app.json +1 -1
  178. package/resources/bundled-skills/app-builder/assets/scaffold/rudder.ui.json +13 -0
  179. package/resources/bundled-skills/app-builder/assets/scaffold/scripts/validate-rudder-ui.mjs +50 -0
  180. package/resources/bundled-skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +35 -1
  181. package/resources/bundled-skills/app-builder/evals/evals.json +2 -1
  182. package/resources/bundled-skills/app-builder/references/design-guidelines.md +19 -2
  183. package/resources/bundled-skills/app-builder/references/rudder-ui-preset.md +73 -0
  184. package/resources/bundled-skills/app-builder/references/scaffold-contract.md +12 -0
  185. package/resources/bundled-skills/app-builder/references/verification.md +6 -0
  186. package/resources/bundled-skills/app-builder/scripts/report-build-status.mjs +83 -0
  187. package/resources/bundled-skills/rudder-docs/SKILL.md +2 -2
  188. package/resources/bundled-skills/rudder-docs/evals/retrieval-authority-evals.json +40 -0
  189. package/resources/bundled-skills/rudder-docs/evals/trigger-evals.json +2 -2
  190. package/resources/bundled-skills/rudder-docs/references/api-reference.md +0 -2
  191. package/resources/bundled-skills/rudder-docs/references/plugin-authoring.md +38 -114
  192. package/resources/bundled-skills/rudder-docs/references/source-map.md +2 -0
  193. package/skills/app-builder/SKILL.md +39 -9
  194. package/skills/app-builder/assets/scaffold/app/globals.css +109 -16
  195. package/skills/app-builder/assets/scaffold/components/contacts-workspace.tsx +176 -152
  196. package/skills/app-builder/assets/scaffold/components/ui/alert.tsx +12 -0
  197. package/skills/app-builder/assets/scaffold/components/ui/badge.tsx +27 -0
  198. package/skills/app-builder/assets/scaffold/components/ui/button.tsx +9 -7
  199. package/skills/app-builder/assets/scaffold/components/ui/card.tsx +15 -3
  200. package/skills/app-builder/assets/scaffold/components/ui/empty.tsx +18 -0
  201. package/skills/app-builder/assets/scaffold/components/ui/field.tsx +23 -0
  202. package/skills/app-builder/assets/scaffold/components/ui/input.tsx +1 -1
  203. package/skills/app-builder/assets/scaffold/components/ui/label.tsx +1 -1
  204. package/skills/app-builder/assets/scaffold/components/ui/separator.tsx +6 -0
  205. package/skills/app-builder/assets/scaffold/components/ui/skeleton.tsx +6 -0
  206. package/skills/app-builder/assets/scaffold/components/ui/table.tsx +30 -0
  207. package/skills/app-builder/assets/scaffold/components.json +20 -0
  208. package/skills/app-builder/assets/scaffold/next-env.d.ts +1 -1
  209. package/skills/app-builder/assets/scaffold/next.config.ts +19 -0
  210. package/skills/app-builder/assets/scaffold/package.json +2 -1
  211. package/skills/app-builder/assets/scaffold/rudder.app.json +1 -1
  212. package/skills/app-builder/assets/scaffold/rudder.ui.json +13 -0
  213. package/skills/app-builder/assets/scaffold/scripts/validate-rudder-ui.mjs +50 -0
  214. package/skills/app-builder/assets/scaffold/tests/e2e/app.spec.ts +35 -1
  215. package/skills/app-builder/evals/evals.json +2 -1
  216. package/skills/app-builder/references/design-guidelines.md +19 -2
  217. package/skills/app-builder/references/rudder-ui-preset.md +73 -0
  218. package/skills/app-builder/references/scaffold-contract.md +12 -0
  219. package/skills/app-builder/references/verification.md +6 -0
  220. package/skills/app-builder/scripts/report-build-status.mjs +83 -0
  221. package/skills/rudder-docs/SKILL.md +2 -2
  222. package/skills/rudder-docs/evals/retrieval-authority-evals.json +40 -0
  223. package/skills/rudder-docs/evals/trigger-evals.json +2 -2
  224. package/skills/rudder-docs/references/api-reference.md +0 -2
  225. package/skills/rudder-docs/references/plugin-authoring.md +38 -114
  226. package/skills/rudder-docs/references/source-map.md +2 -0
  227. package/ui-dist/assets/{LibraryLiveSurface-cHCJmmsl.js → LibraryLiveSurface-CoGcDfo0.js} +1 -1
  228. package/ui-dist/assets/{abnfDiagram-VRR7QNED-BORJvkew.js → abnfDiagram-VRR7QNED-BnPHHNfu.js} +1 -1
  229. package/ui-dist/assets/{arc-DPUzhx87.js → arc-CAvqQQR_.js} +1 -1
  230. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-Bz_hY8LM.js → architectureDiagram-ZJ3FMSHR-DDa31YAK.js} +1 -1
  231. package/ui-dist/assets/{blockDiagram-677ZJIJ3-Bq1X3YkP.js → blockDiagram-677ZJIJ3-DDXLU9Ej.js} +1 -1
  232. package/ui-dist/assets/{c4Diagram-LMCZKHZV-BawEM9Pc.js → c4Diagram-LMCZKHZV-zEm0rHCp.js} +1 -1
  233. package/ui-dist/assets/channel-M_3GhwHQ.js +1 -0
  234. package/ui-dist/assets/{chunk-2Q5K7J3B-D0D5ZOaA.js → chunk-2Q5K7J3B-y1Rw45sz.js} +1 -1
  235. package/ui-dist/assets/{chunk-32BRIVSS-T90P7lug.js → chunk-32BRIVSS-Cq8cQBba.js} +1 -1
  236. package/ui-dist/assets/{chunk-5VM5RSS4-jcAERTgh.js → chunk-5VM5RSS4-CjQA6jGI.js} +1 -1
  237. package/ui-dist/assets/{chunk-EX3LRPZG-t9-JXwnR.js → chunk-EX3LRPZG-VVYt7jh3.js} +1 -1
  238. package/ui-dist/assets/{chunk-JWPE2WC7-hqgD1saC.js → chunk-JWPE2WC7-BJC3ISop.js} +1 -1
  239. package/ui-dist/assets/{chunk-MOJQB5TN-BsSUoYzd.js → chunk-MOJQB5TN-ClZgTqQk.js} +1 -1
  240. package/ui-dist/assets/{chunk-RYQCIY6F-YcdDh2Zn.js → chunk-RYQCIY6F-DRei3pn2.js} +1 -1
  241. package/ui-dist/assets/{chunk-V7JOEXUC-ChFyH9Su.js → chunk-V7JOEXUC-BGWrQfpZ.js} +1 -1
  242. package/ui-dist/assets/{chunk-VR4S4FIN-BjVK8IyX.js → chunk-VR4S4FIN-BBYT57Lt.js} +1 -1
  243. package/ui-dist/assets/{chunk-XXDRQBXY-D-TvO9vT.js → chunk-XXDRQBXY-D7P4SoZB.js} +1 -1
  244. package/ui-dist/assets/classDiagram-OUVF2IWQ-G44FJFnB.js +1 -0
  245. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-G44FJFnB.js +1 -0
  246. package/ui-dist/assets/{cose-bilkent-JH36ORCC-DBwhASJG.js → cose-bilkent-JH36ORCC-mJXY7GQo.js} +1 -1
  247. package/ui-dist/assets/{cynefin-VYW2F7L2-SlCRmwl2.js → cynefin-VYW2F7L2-C-I_lPmH.js} +1 -1
  248. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-DImV6N_p.js → cynefinDiagram-TSTJHNR4-Bm1S_w7H.js} +1 -1
  249. package/ui-dist/assets/{dagre-VKFMJZFB-FH4Wv8Zn.js → dagre-VKFMJZFB-BuPIm1AB.js} +1 -1
  250. package/ui-dist/assets/{diagram-FQU43EPY-CrZvQjId.js → diagram-FQU43EPY-DTBCuV0W.js} +1 -1
  251. package/ui-dist/assets/{diagram-G47NLZAW-B7IGl_T3.js → diagram-G47NLZAW-B4CK8uR2.js} +1 -1
  252. package/ui-dist/assets/{diagram-NH7WQ7WH-CB4i7H1a.js → diagram-NH7WQ7WH-BkbS0GkL.js} +1 -1
  253. package/ui-dist/assets/{diagram-OA4YK3LP-DNyWPYY9.js → diagram-OA4YK3LP-C_mkRe0c.js} +1 -1
  254. package/ui-dist/assets/{diagram-WEI45ONY-BAhxbhpi.js → diagram-WEI45ONY-CHUb3TIJ.js} +1 -1
  255. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-ClXtQ9qt.js → ebnfDiagram-CCIWWBDH-D_lN4ZOY.js} +1 -1
  256. package/ui-dist/assets/{erDiagram-Q63AITRT-DGXiMYfn.js → erDiagram-Q63AITRT-CRnDqcsy.js} +1 -1
  257. package/ui-dist/assets/{flowDiagram-23GEKE2U-CdZ-02zc.js → flowDiagram-23GEKE2U-ChELY-8y.js} +1 -1
  258. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-TxhzNpta.js → ganttDiagram-NO4QXBWP-QIML25-M.js} +1 -1
  259. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-D6Q_w6wR.js → gitGraphDiagram-IHSO6WYX-TB_AKH8l.js} +1 -1
  260. package/ui-dist/assets/{graph-CxNmbpl9.js → graph-HKPvyYQ1.js} +1 -1
  261. package/ui-dist/assets/{index-C12QC1Ex.js → index-Ar0zIwom.js} +1 -1
  262. package/ui-dist/assets/{index-CW21qWFm.js → index-BeNxgoKd.js} +1 -1
  263. package/ui-dist/assets/{index-BujwWE3j.js → index-CB-UdrKN.js} +1 -1
  264. package/ui-dist/assets/{index-Cx6oIZPm.js → index-CfpFS1Tl.js} +555 -581
  265. package/ui-dist/assets/{index-C_nwI4Yj.js → index-CjIeIR2m.js} +1 -1
  266. package/ui-dist/assets/{index-Rau2cGm0.js → index-DCgbySwf.js} +1 -1
  267. package/ui-dist/assets/{index-Do78GymY.js → index-DDMaBNLI.js} +1 -1
  268. package/ui-dist/assets/{index-DU2LI7f9.js → index-DSZmO4bA.js} +1 -1
  269. package/ui-dist/assets/{index-BA9tMBhO.js → index-DfzFi2fx.js} +1 -1
  270. package/ui-dist/assets/{index-BoTz5S-X.js → index-DmEf_U5I.js} +1 -1
  271. package/ui-dist/assets/{index-kbWUQ1um.js → index-OfGDMJiA.js} +1 -1
  272. package/ui-dist/assets/{index-AkhgKOxC.js → index-ZzX8P4M5.js} +1 -1
  273. package/ui-dist/assets/{index-BQ87dGIq.js → index-fDtlbG8Y.js} +1 -1
  274. package/ui-dist/assets/{index-CXnqg1Oq.js → index-gdvFtffQ.js} +1 -1
  275. package/ui-dist/assets/index-noipz8bE.css +1 -0
  276. package/ui-dist/assets/{index-Bxz75ICF.js → index-rnOTiIXd.js} +1 -1
  277. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-CnJd4-Jq.js → infoDiagram-FWYZ7A6U-DUR3sDTd.js} +1 -1
  278. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-Bq-qc3pD.js → ishikawaDiagram-FXEZZL3T-CcnYT0s0.js} +1 -1
  279. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-NSmpUGUA.js → journeyDiagram-5HDEW3XC-CqfbG8T1.js} +1 -1
  280. package/ui-dist/assets/{kanban-definition-HUTT4EX6-D7pgWtfA.js → kanban-definition-HUTT4EX6-CYwQM9eR.js} +1 -1
  281. package/ui-dist/assets/{layout-BRuo6LWe.js → layout-B2IlJgLE.js} +1 -1
  282. package/ui-dist/assets/{linear-CkaWI9Nd.js → linear-CcEPcfbO.js} +1 -1
  283. package/ui-dist/assets/{map-CgA6tTpZ.js → map-Bmhfvlpu.js} +1 -1
  284. package/ui-dist/assets/{mermaid.core-DrXOt-P6.js → mermaid.core-T9Q0CuQx.js} +4 -4
  285. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-D9ImeWBe.js → mindmap-definition-LN4V7U3C-CRjQlwN4.js} +1 -1
  286. package/ui-dist/assets/{pegDiagram-2B236MQR-Cq-zZ_zz.js → pegDiagram-2B236MQR-DenccdY8.js} +1 -1
  287. package/ui-dist/assets/{pieDiagram-ENE6RG2P-FgNgy726.js → pieDiagram-ENE6RG2P-CPiTrJcY.js} +1 -1
  288. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-BxQbmGmi.js → quadrantDiagram-ABIIQ3AL-fKbvGl_-.js} +1 -1
  289. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-CrpbkPH2.js → railroadDiagram-RFXS5EU6-D6uOjEmA.js} +1 -1
  290. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-DQ-65ZW6.js → requirementDiagram-TGXJPOKE-CQIQ387O.js} +1 -1
  291. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-Bom0lMZm.js → sankeyDiagram-HTMAVEWB-CKrnONJL.js} +1 -1
  292. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-C1MSDLDj.js → sequenceDiagram-DBY2YBRQ-C3vaOiZO.js} +1 -1
  293. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-Bn1vxebD.js → sizeCapture-X5ZJPWSS-F39EvxY0.js} +1 -1
  294. package/ui-dist/assets/{stateDiagram-2N3HPSRC-GRRQpmzI.js → stateDiagram-2N3HPSRC-Bq2sVFQq.js} +1 -1
  295. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-B94IPtHC.js +1 -0
  296. package/ui-dist/assets/{swimlanes-5IMT3BWC-BcOOCZ4q.js → swimlanes-5IMT3BWC-CSrygB7m.js} +2 -2
  297. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-9WQr2_E9.js +8 -0
  298. package/ui-dist/assets/{timeline-definition-FHXFAJF6-gi6amswh.js → timeline-definition-FHXFAJF6-DSMMlntv.js} +1 -1
  299. package/ui-dist/assets/{vennDiagram-L72KCM5P-B9uqeyQt.js → vennDiagram-L72KCM5P-D5XH96zV.js} +1 -1
  300. package/ui-dist/assets/{wardleyDiagram-EHGQE667-BnqWAMiE.js → wardleyDiagram-EHGQE667-BXX2RFsU.js} +1 -1
  301. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-BJXKltIN.js → xychartDiagram-FW5EYKEG-awBW2lwG.js} +1 -1
  302. package/ui-dist/index.html +2 -2
  303. package/dist/bootstrap/plugin-host-runtime.d.ts +0 -116
  304. package/dist/bootstrap/plugin-host-runtime.d.ts.map +0 -1
  305. package/dist/bootstrap/plugin-host-runtime.js +0 -179
  306. package/dist/bootstrap/plugin-host-runtime.js.map +0 -1
  307. package/dist/bundled-plugins/plugin-linear/README.md +0 -22
  308. package/dist/bundled-plugins/plugin-linear/dist/manifest.js +0 -183
  309. package/dist/bundled-plugins/plugin-linear/dist/manifest.js.map +0 -7
  310. package/dist/bundled-plugins/plugin-linear/dist/ui/index.js +0 -1285
  311. package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +0 -7
  312. package/dist/bundled-plugins/plugin-linear/dist/worker.js +0 -10699
  313. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +0 -7
  314. package/dist/bundled-plugins/plugin-linear/package.json +0 -42
  315. package/dist/routes/plugin-ui-static.d.ts +0 -70
  316. package/dist/routes/plugin-ui-static.d.ts.map +0 -1
  317. package/dist/routes/plugin-ui-static.js +0 -375
  318. package/dist/routes/plugin-ui-static.js.map +0 -1
  319. package/dist/routes/plugins.d.ts +0 -120
  320. package/dist/routes/plugins.d.ts.map +0 -1
  321. package/dist/routes/plugins.js +0 -1125
  322. package/dist/routes/plugins.js.map +0 -1
  323. package/dist/routes/plugins.operations-routes.d.ts +0 -28
  324. package/dist/routes/plugins.operations-routes.d.ts.map +0 -1
  325. package/dist/routes/plugins.operations-routes.js +0 -720
  326. package/dist/routes/plugins.operations-routes.js.map +0 -1
  327. package/dist/services/plugin-capability-validator.d.ts +0 -108
  328. package/dist/services/plugin-capability-validator.d.ts.map +0 -1
  329. package/dist/services/plugin-capability-validator.js +0 -268
  330. package/dist/services/plugin-capability-validator.js.map +0 -1
  331. package/dist/services/plugin-config-validator.d.ts +0 -26
  332. package/dist/services/plugin-config-validator.d.ts.map +0 -1
  333. package/dist/services/plugin-config-validator.js +0 -41
  334. package/dist/services/plugin-config-validator.js.map +0 -1
  335. package/dist/services/plugin-dev-watcher.d.ts +0 -47
  336. package/dist/services/plugin-dev-watcher.d.ts.map +0 -1
  337. package/dist/services/plugin-dev-watcher.js +0 -275
  338. package/dist/services/plugin-dev-watcher.js.map +0 -1
  339. package/dist/services/plugin-event-bus.d.ts +0 -149
  340. package/dist/services/plugin-event-bus.d.ts.map +0 -1
  341. package/dist/services/plugin-event-bus.js +0 -258
  342. package/dist/services/plugin-event-bus.js.map +0 -1
  343. package/dist/services/plugin-host-service-cleanup.d.ts +0 -14
  344. package/dist/services/plugin-host-service-cleanup.d.ts.map +0 -1
  345. package/dist/services/plugin-host-service-cleanup.js +0 -37
  346. package/dist/services/plugin-host-service-cleanup.js.map +0 -1
  347. package/dist/services/plugin-host-services.d.ts +0 -13
  348. package/dist/services/plugin-host-services.d.ts.map +0 -1
  349. package/dist/services/plugin-host-services.js +0 -933
  350. package/dist/services/plugin-host-services.js.map +0 -1
  351. package/dist/services/plugin-job-coordinator.d.ts +0 -81
  352. package/dist/services/plugin-job-coordinator.d.ts.map +0 -1
  353. package/dist/services/plugin-job-coordinator.js +0 -172
  354. package/dist/services/plugin-job-coordinator.js.map +0 -1
  355. package/dist/services/plugin-job-scheduler.d.ts +0 -163
  356. package/dist/services/plugin-job-scheduler.d.ts.map +0 -1
  357. package/dist/services/plugin-job-scheduler.js +0 -452
  358. package/dist/services/plugin-job-scheduler.js.map +0 -1
  359. package/dist/services/plugin-job-store.d.ts +0 -208
  360. package/dist/services/plugin-job-store.d.ts.map +0 -1
  361. package/dist/services/plugin-job-store.js +0 -350
  362. package/dist/services/plugin-job-store.js.map +0 -1
  363. package/dist/services/plugin-lifecycle.d.ts +0 -240
  364. package/dist/services/plugin-lifecycle.d.ts.map +0 -1
  365. package/dist/services/plugin-lifecycle.js +0 -439
  366. package/dist/services/plugin-lifecycle.js.map +0 -1
  367. package/dist/services/plugin-loader.core.d.ts +0 -40
  368. package/dist/services/plugin-loader.core.d.ts.map +0 -1
  369. package/dist/services/plugin-loader.core.js +0 -879
  370. package/dist/services/plugin-loader.core.js.map +0 -1
  371. package/dist/services/plugin-loader.d.ts +0 -30
  372. package/dist/services/plugin-loader.d.ts.map +0 -1
  373. package/dist/services/plugin-loader.helpers.d.ts +0 -495
  374. package/dist/services/plugin-loader.helpers.d.ts.map +0 -1
  375. package/dist/services/plugin-loader.helpers.js +0 -238
  376. package/dist/services/plugin-loader.helpers.js.map +0 -1
  377. package/dist/services/plugin-loader.js +0 -30
  378. package/dist/services/plugin-loader.js.map +0 -1
  379. package/dist/services/plugin-loader.worker-paths.d.ts +0 -37
  380. package/dist/services/plugin-loader.worker-paths.d.ts.map +0 -1
  381. package/dist/services/plugin-loader.worker-paths.js +0 -62
  382. package/dist/services/plugin-loader.worker-paths.js.map +0 -1
  383. package/dist/services/plugin-log-retention.d.ts +0 -20
  384. package/dist/services/plugin-log-retention.d.ts.map +0 -1
  385. package/dist/services/plugin-log-retention.js +0 -63
  386. package/dist/services/plugin-log-retention.js.map +0 -1
  387. package/dist/services/plugin-manifest-validator.d.ts +0 -90
  388. package/dist/services/plugin-manifest-validator.d.ts.map +0 -1
  389. package/dist/services/plugin-manifest-validator.js +0 -72
  390. package/dist/services/plugin-manifest-validator.js.map +0 -1
  391. package/dist/services/plugin-registry.d.ts +0 -2542
  392. package/dist/services/plugin-registry.d.ts.map +0 -1
  393. package/dist/services/plugin-registry.js +0 -536
  394. package/dist/services/plugin-registry.js.map +0 -1
  395. package/dist/services/plugin-runtime-sandbox.d.ts +0 -40
  396. package/dist/services/plugin-runtime-sandbox.d.ts.map +0 -1
  397. package/dist/services/plugin-runtime-sandbox.js +0 -154
  398. package/dist/services/plugin-runtime-sandbox.js.map +0 -1
  399. package/dist/services/plugin-secrets-handler.d.ts +0 -81
  400. package/dist/services/plugin-secrets-handler.d.ts.map +0 -1
  401. package/dist/services/plugin-secrets-handler.js +0 -275
  402. package/dist/services/plugin-secrets-handler.js.map +0 -1
  403. package/dist/services/plugin-state-store.d.ts +0 -92
  404. package/dist/services/plugin-state-store.d.ts.map +0 -1
  405. package/dist/services/plugin-state-store.js +0 -190
  406. package/dist/services/plugin-state-store.js.map +0 -1
  407. package/dist/services/plugin-stream-bus.d.ts +0 -29
  408. package/dist/services/plugin-stream-bus.d.ts.map +0 -1
  409. package/dist/services/plugin-stream-bus.js +0 -48
  410. package/dist/services/plugin-stream-bus.js.map +0 -1
  411. package/dist/services/plugin-tool-dispatcher.d.ts +0 -180
  412. package/dist/services/plugin-tool-dispatcher.d.ts.map +0 -1
  413. package/dist/services/plugin-tool-dispatcher.js +0 -224
  414. package/dist/services/plugin-tool-dispatcher.js.map +0 -1
  415. package/dist/services/plugin-tool-registry.d.ts +0 -192
  416. package/dist/services/plugin-tool-registry.d.ts.map +0 -1
  417. package/dist/services/plugin-tool-registry.js +0 -224
  418. package/dist/services/plugin-tool-registry.js.map +0 -1
  419. package/dist/services/plugin-worker-manager.d.ts +0 -260
  420. package/dist/services/plugin-worker-manager.d.ts.map +0 -1
  421. package/dist/services/plugin-worker-manager.js +0 -836
  422. package/dist/services/plugin-worker-manager.js.map +0 -1
  423. package/ui-dist/assets/channel-C08AyYJr.js +0 -1
  424. package/ui-dist/assets/classDiagram-OUVF2IWQ-BIXq6fec.js +0 -1
  425. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-BIXq6fec.js +0 -1
  426. package/ui-dist/assets/index-BmXb0yC1.css +0 -1
  427. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-KvSJhiLM.js +0 -1
  428. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-Cr92NnJ4.js +0 -8
@@ -1,238 +0,0 @@
1
- import { execFile } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
- import { readFile } from "node:fs/promises";
4
- import os from "node:os";
5
- import path from "node:path";
6
- import { fileURLToPath } from "node:url";
7
- import { promisify } from "node:util";
8
- export const execFileAsync = promisify(execFile);
9
- export const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
- // ---------------------------------------------------------------------------
11
- // Constants
12
- // ---------------------------------------------------------------------------
13
- /**
14
- * Naming convention for npm-published Rudder plugins.
15
- * Packages matching this pattern are considered Rudder plugins.
16
- *
17
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
18
- */
19
- export const NPM_PLUGIN_PACKAGE_PREFIX = "rudder-plugin-";
20
- /**
21
- * Default local plugin directory. The loader scans this directory for
22
- * locally-installed plugin packages.
23
- *
24
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — On-Disk Layout
25
- */
26
- export const DEFAULT_LOCAL_PLUGIN_DIR = path.join(os.homedir(), ".rudder", "plugins");
27
- export const DEV_TSX_LOADER_PATH = path.resolve(__dirname, "../../../cli/node_modules/tsx/dist/loader.mjs");
28
- export function getDeclaredPageRoutePaths(manifest) {
29
- return (manifest.ui?.slots ?? [])
30
- .filter((slot) => slot.type === "page" && typeof slot.routePath === "string" && slot.routePath.length > 0)
31
- .map((slot) => slot.routePath);
32
- }
33
- // ---------------------------------------------------------------------------
34
- // Helpers
35
- // ---------------------------------------------------------------------------
36
- /**
37
- * Check whether a package name matches the Rudder plugin naming convention.
38
- * Accepts both the "rudder-plugin-" prefix and scoped "@scope/plugin-" packages.
39
- *
40
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
41
- */
42
- export function isPluginPackageName(name) {
43
- if (name.startsWith(NPM_PLUGIN_PACKAGE_PREFIX))
44
- return true;
45
- // Also accept scoped packages like @acme/plugin-linear or @rudderhq/plugin-*
46
- if (name.includes("/")) {
47
- const localPart = name.split("/")[1] ?? "";
48
- return localPart.startsWith("plugin-");
49
- }
50
- return false;
51
- }
52
- /**
53
- * Read and parse a package.json from a directory path.
54
- * Returns null if no package.json exists.
55
- */
56
- export async function readPackageJson(dir) {
57
- const pkgPath = path.join(dir, "package.json");
58
- if (!existsSync(pkgPath))
59
- return null;
60
- try {
61
- const raw = await readFile(pkgPath, "utf-8");
62
- return JSON.parse(raw);
63
- }
64
- catch {
65
- return null;
66
- }
67
- }
68
- /**
69
- * Resolve the manifest entrypoint from a package.json and package root.
70
- *
71
- * Rudder plugin packages define a "rudderPlugin" key in package.json with a
72
- * "manifest" subkey pointing to the manifest module. This helper resolves the
73
- * path.
74
- *
75
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
76
- */
77
- export function resolveManifestPath(packageRoot, pkgJson) {
78
- const rudderPlugin = pkgJson["rudderPlugin"];
79
- if (rudderPlugin !== null &&
80
- typeof rudderPlugin === "object" &&
81
- !Array.isArray(rudderPlugin)) {
82
- const manifestRelPath = rudderPlugin["manifest"];
83
- if (typeof manifestRelPath === "string") {
84
- // NOTE: the resolved path is returned as-is even if the file does not yet
85
- // exist on disk (e.g. the package has not been built). Callers MUST guard
86
- // with existsSync() before passing the path to loadManifestFromPath().
87
- return path.resolve(packageRoot, manifestRelPath);
88
- }
89
- }
90
- // Fallback: look for dist/manifest.js as a convention
91
- const conventionalPath = path.join(packageRoot, "dist", "manifest.js");
92
- if (existsSync(conventionalPath)) {
93
- return conventionalPath;
94
- }
95
- // Fallback: look for manifest.js at package root
96
- const rootManifestPath = path.join(packageRoot, "manifest.js");
97
- if (existsSync(rootManifestPath)) {
98
- return rootManifestPath;
99
- }
100
- return null;
101
- }
102
- export function parseSemver(version) {
103
- const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);
104
- if (!match)
105
- return null;
106
- return {
107
- major: Number(match[1]),
108
- minor: Number(match[2]),
109
- patch: Number(match[3]),
110
- prerelease: match[4] ? match[4].split(".") : [],
111
- };
112
- }
113
- export function compareIdentifiers(left, right) {
114
- const leftIsNumeric = /^\d+$/.test(left);
115
- const rightIsNumeric = /^\d+$/.test(right);
116
- if (leftIsNumeric && rightIsNumeric) {
117
- return Number(left) - Number(right);
118
- }
119
- if (leftIsNumeric)
120
- return -1;
121
- if (rightIsNumeric)
122
- return 1;
123
- return left.localeCompare(right);
124
- }
125
- export function compareSemver(left, right) {
126
- const leftParsed = parseSemver(left);
127
- const rightParsed = parseSemver(right);
128
- if (!leftParsed || !rightParsed) {
129
- throw new Error(`Invalid semver comparison: '${left}' vs '${right}'`);
130
- }
131
- const coreOrder = ["major", "minor", "patch"].map((key) => leftParsed[key] - rightParsed[key]).find((delta) => delta !== 0);
132
- if (coreOrder) {
133
- return coreOrder;
134
- }
135
- if (leftParsed.prerelease.length === 0 && rightParsed.prerelease.length === 0) {
136
- return 0;
137
- }
138
- if (leftParsed.prerelease.length === 0)
139
- return 1;
140
- if (rightParsed.prerelease.length === 0)
141
- return -1;
142
- const maxLength = Math.max(leftParsed.prerelease.length, rightParsed.prerelease.length);
143
- for (let index = 0; index < maxLength; index += 1) {
144
- const leftId = leftParsed.prerelease[index];
145
- const rightId = rightParsed.prerelease[index];
146
- if (leftId === undefined)
147
- return -1;
148
- if (rightId === undefined)
149
- return 1;
150
- const diff = compareIdentifiers(leftId, rightId);
151
- if (diff !== 0)
152
- return diff;
153
- }
154
- return 0;
155
- }
156
- export function getMinimumHostVersion(manifest) {
157
- return manifest.minimumHostVersion ?? manifest.minimumPaperclipVersion;
158
- }
159
- /**
160
- * Extract UI contribution metadata from a manifest for route serialization.
161
- *
162
- * Returns `null` when the plugin does not declare any UI slots or launchers.
163
- * Launcher declarations are aggregated from both the legacy top-level
164
- * `launchers` field and the preferred `ui.launchers` field.
165
- */
166
- export function getPluginUiContributionMetadata(manifest) {
167
- const slots = manifest.ui?.slots ?? [];
168
- const launchers = [
169
- ...(manifest.launchers ?? []),
170
- ...(manifest.ui?.launchers ?? []),
171
- ];
172
- if (slots.length === 0 && launchers.length === 0) {
173
- return null;
174
- }
175
- return {
176
- uiEntryFile: "index.js",
177
- slots,
178
- launchers,
179
- };
180
- }
181
- // ---------------------------------------------------------------------------
182
- // Factory
183
- // ---------------------------------------------------------------------------
184
- /**
185
- * Create a PluginLoader service.
186
- *
187
- * The loader is responsible for plugin discovery, installation, and runtime
188
- * activation. It reads plugin packages from the local filesystem and npm,
189
- * validates their manifests, registers them in the database, and — when
190
- * runtime services are provided — initialises worker processes, event
191
- * subscriptions, job schedules, webhook endpoints, and agent tools.
192
- *
193
- * Usage (discovery & install only):
194
- * ```ts
195
- * const loader = pluginLoader(db, { enableLocalFilesystem: true });
196
- *
197
- * // Discover all available plugins
198
- * const result = await loader.discoverAll();
199
- * for (const plugin of result.discovered) {
200
- * console.log(plugin.packageName, plugin.manifest?.id);
201
- * }
202
- *
203
- * // Install a specific plugin
204
- * const discovered = await loader.installPlugin({
205
- * packageName: "rudder-plugin-linear",
206
- * version: "^1.0.0",
207
- * });
208
- * ```
209
- *
210
- * Usage (full runtime activation at server startup):
211
- * ```ts
212
- * const loader = pluginLoader(db, loaderOpts, {
213
- * workerManager,
214
- * eventBus,
215
- * jobScheduler,
216
- * jobStore,
217
- * toolDispatcher,
218
- * lifecycleManager,
219
- * buildHostHandlers: (pluginId, manifest) => ({ ... }),
220
- * instanceInfo: { instanceId: "inst-1", hostVersion: "1.0.0" },
221
- * });
222
- *
223
- * // Load all ready plugins at startup
224
- * const loadResult = await loader.loadAll();
225
- * console.log(`Loaded ${loadResult.succeeded}/${loadResult.total} plugins`);
226
- *
227
- * // Load a single plugin after install
228
- * const singleResult = await loader.loadSingle(pluginId);
229
- *
230
- * // Shutdown all plugin workers on server exit
231
- * await loader.shutdownAll();
232
- * ```
233
- *
234
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — On-Disk Layout
235
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Install Process
236
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Process Model
237
- */
238
- //# sourceMappingURL=plugin-loader.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.helpers.js","sourceRoot":"","sources":["../../src/services/plugin-loader.helpers.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- /**
2
- * PluginLoader — discovery, installation, and runtime activation of plugins.
3
- *
4
- * This service is the entry point for the plugin system's I/O boundary:
5
- *
6
- * 1. **Discovery** — Scans the local plugin directory
7
- * (`~/.rudder/plugins/`) and `node_modules` for packages matching
8
- * the `rudder-plugin-*` naming convention. Aggregates results with
9
- * path-based deduplication.
10
- *
11
- * 2. **Installation** — `installPlugin()` downloads from npm (or reads a
12
- * local path), validates the manifest, checks capability consistency,
13
- * and persists the install record.
14
- *
15
- * 3. **Runtime activation** — `activatePlugin()` wires up a loaded plugin
16
- * with all runtime services: resolves its entrypoint, builds
17
- * capability-gated host handlers, spawns a worker process, syncs job
18
- * declarations, registers event subscriptions, and discovers tools.
19
- *
20
- * 4. **Shutdown** — `shutdownAll()` gracefully stops all active workers
21
- * and unregisters runtime hooks.
22
- *
23
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Plugin Discovery
24
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
25
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Process Model
26
- */
27
- export * from "./plugin-loader.core.js";
28
- export * from "./plugin-loader.helpers.js";
29
- export * from "./plugin-loader.worker-paths.js";
30
- //# sourceMappingURL=plugin-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/services/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC"}
@@ -1,37 +0,0 @@
1
- /**
2
- * PluginLoader — discovery, installation, and runtime activation of plugins.
3
- *
4
- * This service is the entry point for the plugin system's I/O boundary:
5
- *
6
- * 1. **Discovery** — Scans the local plugin directory
7
- * (`~/.rudder/plugins/`) and `node_modules` for packages matching
8
- * the `rudder-plugin-*` naming convention. Aggregates results with
9
- * path-based deduplication.
10
- *
11
- * 2. **Installation** — `installPlugin()` downloads from npm (or reads a
12
- * local path), validates the manifest, checks capability consistency,
13
- * and persists the install record.
14
- *
15
- * 3. **Runtime activation** — `activatePlugin()` wires up a loaded plugin
16
- * with all runtime services: resolves its entrypoint, builds
17
- * capability-gated host handlers, spawns a worker process, syncs job
18
- * declarations, registers event subscriptions, and discovers tools.
19
- *
20
- * 4. **Shutdown** — `shutdownAll()` gracefully stops all active workers
21
- * and unregisters runtime hooks.
22
- *
23
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Plugin Discovery
24
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Package Contract
25
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Process Model
26
- */
27
- import type { PluginRecord } from "@rudderhq/shared";
28
- export interface PluginPackageResolutionOptions {
29
- serverPackageRoot?: string;
30
- }
31
- export declare function resolvePluginPackageCandidateDirs(localPluginDir: string, packageName: string, packagePath?: string | null, options?: PluginPackageResolutionOptions): string[];
32
- export declare function resolveWorkerEntrypoint(plugin: PluginRecord & {
33
- packagePath?: string | null;
34
- }, localPluginDir: string, options?: PluginPackageResolutionOptions): string;
35
- export declare function resolveManagedInstallPackageDir(localPluginDir: string, packageName: string): string;
36
- export declare function isPathInsideDir(candidatePath: string, parentDir: string): boolean;
37
- //# sourceMappingURL=plugin-loader.worker-paths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.worker-paths.d.ts","sourceRoot":"","sources":["../../src/services/plugin-loader.worker-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EACV,YAAY,EACb,MAAM,kBAAkB,CAAC;AAO1B,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD,wBAAgB,iCAAiC,CAC/C,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,GAAE,8BAAmC,GAC3C,MAAM,EAAE,CA4BV;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACtD,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,8BAAmC,GAC3C,MAAM,CAmCR;AAED,wBAAgB,+BAA+B,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAKnG;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKjF"}
@@ -1,62 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import path from "node:path";
3
- import { __dirname } from "./plugin-loader.helpers.js";
4
- const SERVER_PACKAGE_ROOT = path.resolve(__dirname, "../..");
5
- const BUNDLED_PLUGIN_PACKAGE_DIRS = new Map([
6
- ["@rudderhq/plugin-linear", "plugin-linear"],
7
- ]);
8
- export function resolvePluginPackageCandidateDirs(localPluginDir, packageName, packagePath, options = {}) {
9
- const candidates = [];
10
- if (packagePath && existsSync(packagePath)) {
11
- candidates.push(path.resolve(packagePath));
12
- }
13
- if (packageName.startsWith("@")) {
14
- candidates.push(path.join(localPluginDir, "node_modules", ...packageName.split("/")));
15
- }
16
- else {
17
- candidates.push(path.join(localPluginDir, "node_modules", packageName));
18
- }
19
- candidates.push(path.join(localPluginDir, packageName));
20
- const bundledPluginDirName = BUNDLED_PLUGIN_PACKAGE_DIRS.get(packageName);
21
- if (bundledPluginDirName) {
22
- candidates.push(path.join(options.serverPackageRoot ?? SERVER_PACKAGE_ROOT, "dist", "bundled-plugins", bundledPluginDirName));
23
- }
24
- return [...new Set(candidates.map((candidate) => path.resolve(candidate)))];
25
- }
26
- export function resolveWorkerEntrypoint(plugin, localPluginDir, options = {}) {
27
- const manifest = plugin.manifestJson;
28
- const workerRelPath = manifest.entrypoints.worker;
29
- const packageName = plugin.packageName;
30
- const checkedEntrypoints = [];
31
- for (const dir of resolvePluginPackageCandidateDirs(localPluginDir, packageName, plugin.packagePath, options)) {
32
- const entrypoint = path.resolve(dir, workerRelPath);
33
- checkedEntrypoints.push(entrypoint);
34
- // Security: ensure entrypoint is actually inside the directory (prevent path traversal)
35
- if (!isPathInsideDir(entrypoint, dir)) {
36
- continue;
37
- }
38
- if (existsSync(entrypoint)) {
39
- return entrypoint;
40
- }
41
- }
42
- // Fallback: try the worker path as-is (absolute or relative to cwd)
43
- // ONLY if it's already an absolute path and we trust the manifest (which we've already validated)
44
- if (path.isAbsolute(workerRelPath) && existsSync(workerRelPath)) {
45
- return workerRelPath;
46
- }
47
- throw new Error(`Worker entrypoint not found for plugin "${plugin.pluginKey}". ` +
48
- `Checked: ${checkedEntrypoints.join(", ")}`);
49
- }
50
- export function resolveManagedInstallPackageDir(localPluginDir, packageName) {
51
- if (packageName.startsWith("@")) {
52
- return path.join(localPluginDir, "node_modules", ...packageName.split("/"));
53
- }
54
- return path.join(localPluginDir, "node_modules", packageName);
55
- }
56
- export function isPathInsideDir(candidatePath, parentDir) {
57
- const resolvedCandidate = path.resolve(candidatePath);
58
- const resolvedParent = path.resolve(parentDir);
59
- const relative = path.relative(resolvedParent, resolvedCandidate);
60
- return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
61
- }
62
- //# sourceMappingURL=plugin-loader.worker-paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.worker-paths.js","sourceRoot":"","sources":["../../src/services/plugin-loader.worker-paths.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { Db } from "@rudderhq/db";
2
- /**
3
- * Delete plugin log rows older than `retentionDays`.
4
- *
5
- * Deletes in batches of `DELETE_BATCH_SIZE` to keep transaction sizes
6
- * bounded and avoid holding locks for extended periods.
7
- *
8
- * @returns The total number of rows deleted.
9
- */
10
- export declare function prunePluginLogs(db: Db, retentionDays?: number): Promise<number>;
11
- /**
12
- * Start a periodic plugin log cleanup interval.
13
- *
14
- * @param db - Database connection
15
- * @param intervalMs - How often to run (default: 1 hour)
16
- * @param retentionDays - How many days of logs to keep (default: 7)
17
- * @returns A cleanup function that stops the interval
18
- */
19
- export declare function startPluginLogRetention(db: Db, intervalMs?: number, retentionDays?: number): () => void;
20
- //# sourceMappingURL=plugin-log-retention.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-log-retention.d.ts","sourceRoot":"","sources":["../../src/services/plugin-log-retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAcvC;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,aAAa,GAAE,MAA+B,GAC7C,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,EAAE,EACN,UAAU,GAAE,MAAwB,EACpC,aAAa,GAAE,MAA+B,GAC7C,MAAM,IAAI,CAaZ"}
@@ -1,63 +0,0 @@
1
- import { pluginLogs } from "@rudderhq/db";
2
- import { lt } from "drizzle-orm";
3
- import { logger } from "../middleware/logger.js";
4
- /** Default retention period: 7 days. */
5
- const DEFAULT_RETENTION_DAYS = 7;
6
- /** Maximum rows to delete per sweep to avoid long-running transactions. */
7
- const DELETE_BATCH_SIZE = 5_000;
8
- /** Maximum number of batches per sweep to guard against unbounded loops. */
9
- const MAX_ITERATIONS = 100;
10
- /**
11
- * Delete plugin log rows older than `retentionDays`.
12
- *
13
- * Deletes in batches of `DELETE_BATCH_SIZE` to keep transaction sizes
14
- * bounded and avoid holding locks for extended periods.
15
- *
16
- * @returns The total number of rows deleted.
17
- */
18
- export async function prunePluginLogs(db, retentionDays = DEFAULT_RETENTION_DAYS) {
19
- const cutoff = new Date();
20
- cutoff.setDate(cutoff.getDate() - retentionDays);
21
- let totalDeleted = 0;
22
- let iterations = 0;
23
- // Delete in batches to avoid long-running transactions
24
- while (iterations < MAX_ITERATIONS) {
25
- const deleted = await db
26
- .delete(pluginLogs)
27
- .where(lt(pluginLogs.createdAt, cutoff))
28
- .returning({ id: pluginLogs.id })
29
- .then((rows) => rows.length);
30
- totalDeleted += deleted;
31
- iterations++;
32
- if (deleted < DELETE_BATCH_SIZE)
33
- break;
34
- }
35
- if (iterations >= MAX_ITERATIONS) {
36
- logger.warn({ totalDeleted, iterations, cutoffDate: cutoff }, "Plugin log retention hit iteration limit; some logs may remain");
37
- }
38
- if (totalDeleted > 0) {
39
- logger.info({ totalDeleted, retentionDays }, "Pruned expired plugin logs");
40
- }
41
- return totalDeleted;
42
- }
43
- /**
44
- * Start a periodic plugin log cleanup interval.
45
- *
46
- * @param db - Database connection
47
- * @param intervalMs - How often to run (default: 1 hour)
48
- * @param retentionDays - How many days of logs to keep (default: 7)
49
- * @returns A cleanup function that stops the interval
50
- */
51
- export function startPluginLogRetention(db, intervalMs = 60 * 60 * 1_000, retentionDays = DEFAULT_RETENTION_DAYS) {
52
- const timer = setInterval(() => {
53
- prunePluginLogs(db, retentionDays).catch((err) => {
54
- logger.warn({ err }, "Plugin log retention sweep failed");
55
- });
56
- }, intervalMs);
57
- // Run once immediately on startup
58
- prunePluginLogs(db, retentionDays).catch((err) => {
59
- logger.warn({ err }, "Initial plugin log retention sweep failed");
60
- });
61
- return () => clearInterval(timer);
62
- }
63
- //# sourceMappingURL=plugin-log-retention.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-log-retention.js","sourceRoot":"","sources":["../../src/services/plugin-log-retention.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,wCAAwC;AACxC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,4EAA4E;AAC5E,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAM,EACN,gBAAwB,sBAAsB;IAE9C,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC;IAEjD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,uDAAuD;IACvD,OAAO,UAAU,GAAG,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,EAAE;aACrB,MAAM,CAAC,UAAU,CAAC;aAClB,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;aACvC,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;aAChC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/B,YAAY,IAAI,OAAO,CAAC;QACxB,UAAU,EAAE,CAAC;QAEb,IAAI,OAAO,GAAG,iBAAiB;YAAE,MAAM;IACzC,CAAC;IAED,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CACT,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,EAChD,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAM,EACN,aAAqB,EAAE,GAAG,EAAE,GAAG,KAAK,EACpC,gBAAwB,sBAAsB;IAE9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,kCAAkC;IAClC,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,2CAA2C,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC"}
@@ -1,90 +0,0 @@
1
- /**
2
- * PluginManifestValidator — schema validation for plugin manifest files.
3
- *
4
- * Uses the shared Zod schema (`pluginManifestV1Schema`) to validate
5
- * manifest payloads. Provides both a safe `parse()` variant (returns
6
- * a result union) and a throwing `parseOrThrow()` for HTTP error
7
- * propagation at install time.
8
- *
9
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Plugin Manifest
10
- * @see packages/shared/src/validators/plugin.ts — Zod schema definition
11
- */
12
- import type { PaperclipPluginManifestV1 } from "@rudderhq/shared";
13
- /**
14
- * Successful parse result.
15
- */
16
- export interface ManifestParseSuccess {
17
- success: true;
18
- manifest: PaperclipPluginManifestV1;
19
- }
20
- /**
21
- * Failed parse result. `errors` is a human-readable description of what went
22
- * wrong; `details` is the raw Zod error list for programmatic inspection.
23
- */
24
- export interface ManifestParseFailure {
25
- success: false;
26
- errors: string;
27
- details: Array<{
28
- path: (string | number)[];
29
- message: string;
30
- }>;
31
- }
32
- /** Union of parse outcomes. */
33
- export type ManifestParseResult = ManifestParseSuccess | ManifestParseFailure;
34
- /**
35
- * Service for parsing and validating plugin manifests.
36
- *
37
- * @see doc/engineering/PLUGIN_RUNTIME_CONTRACT.md — Plugin Manifest
38
- */
39
- export interface PluginManifestValidator {
40
- /**
41
- * Try to parse `input` as a plugin manifest.
42
- *
43
- * Returns a {@link ManifestParseSuccess} when the input passes all
44
- * validation rules, or a {@link ManifestParseFailure} with human-readable
45
- * error messages when it does not.
46
- *
47
- * This is the "safe" variant — it never throws.
48
- */
49
- parse(input: unknown): ManifestParseResult;
50
- /**
51
- * Parse `input` as a plugin manifest, throwing a 400 HttpError on failure.
52
- *
53
- * Use this at install time when an invalid manifest should surface as an
54
- * HTTP error to the caller.
55
- *
56
- * @throws {HttpError} 400 Bad Request if the manifest is invalid.
57
- */
58
- parseOrThrow(input: unknown): PaperclipPluginManifestV1;
59
- /**
60
- * Return the list of plugin API versions supported by this host.
61
- *
62
- * Callers can use this to present the supported version range to operators
63
- * or to decide whether a candidate plugin can be installed.
64
- */
65
- getSupportedVersions(): readonly number[];
66
- }
67
- /**
68
- * Create a {@link PluginManifestValidator}.
69
- *
70
- * Usage:
71
- * ```ts
72
- * const validator = pluginManifestValidator();
73
- *
74
- * // Safe parse — inspect the result
75
- * const result = validator.parse(rawManifest);
76
- * if (!result.success) {
77
- * console.error(result.errors);
78
- * return;
79
- * }
80
- * const manifest = result.manifest;
81
- *
82
- * // Throwing parse — use at install time
83
- * const manifest = validator.parseOrThrow(rawManifest);
84
- *
85
- * // Check supported versions
86
- * const versions = validator.getSupportedVersions(); // [1]
87
- * ```
88
- */
89
- export declare function pluginManifestValidator(): PluginManifestValidator;
90
- //# sourceMappingURL=plugin-manifest-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-manifest-validator.d.ts","sourceRoot":"","sources":["../../src/services/plugin-manifest-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAmBlE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,yBAAyB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,+BAA+B;AAC/B,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAM9E;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAE3C;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,CAAC;IAExD;;;;;OAKG;IACH,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAAC;CAC3C;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,IAAI,uBAAuB,CA4CjE"}
@@ -1,72 +0,0 @@
1
- import { PLUGIN_API_VERSION, pluginManifestV1Schema } from "@rudderhq/shared";
2
- import { badRequest } from "../errors.js";
3
- // ---------------------------------------------------------------------------
4
- // Supported manifest API versions
5
- // ---------------------------------------------------------------------------
6
- /**
7
- * The set of plugin API versions this host can accept.
8
- * When a new API version is introduced, add it here. Old versions should be
9
- * retained until the host drops support for them.
10
- */
11
- const SUPPORTED_VERSIONS = [PLUGIN_API_VERSION];
12
- // ---------------------------------------------------------------------------
13
- // Factory
14
- // ---------------------------------------------------------------------------
15
- /**
16
- * Create a {@link PluginManifestValidator}.
17
- *
18
- * Usage:
19
- * ```ts
20
- * const validator = pluginManifestValidator();
21
- *
22
- * // Safe parse — inspect the result
23
- * const result = validator.parse(rawManifest);
24
- * if (!result.success) {
25
- * console.error(result.errors);
26
- * return;
27
- * }
28
- * const manifest = result.manifest;
29
- *
30
- * // Throwing parse — use at install time
31
- * const manifest = validator.parseOrThrow(rawManifest);
32
- *
33
- * // Check supported versions
34
- * const versions = validator.getSupportedVersions(); // [1]
35
- * ```
36
- */
37
- export function pluginManifestValidator() {
38
- return {
39
- parse(input) {
40
- const result = pluginManifestV1Schema.safeParse(input);
41
- if (result.success) {
42
- return {
43
- success: true,
44
- manifest: result.data,
45
- };
46
- }
47
- const details = result.error.errors.map((issue) => ({
48
- path: issue.path,
49
- message: issue.message,
50
- }));
51
- const errors = details
52
- .map(({ path, message }) => path.length > 0 ? `${path.join(".")}: ${message}` : message)
53
- .join("; ");
54
- return {
55
- success: false,
56
- errors,
57
- details,
58
- };
59
- },
60
- parseOrThrow(input) {
61
- const result = this.parse(input);
62
- if (!result.success) {
63
- throw badRequest(`Invalid plugin manifest: ${result.errors}`, result.details);
64
- }
65
- return result.manifest;
66
- },
67
- getSupportedVersions() {
68
- return SUPPORTED_VERSIONS;
69
- },
70
- };
71
- }
72
- //# sourceMappingURL=plugin-manifest-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-manifest-validator.js","sourceRoot":"","sources":["../../src/services/plugin-manifest-validator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,kBAAkB,CAAU,CAAC;AAmEzD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,KAAK,CAAC,KAAc;YAClB,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,MAAM,CAAC,IAAiC;iBACnD,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAClD,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,OAAO;iBACnB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CACzB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAC5D;iBACA,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,KAAc;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,UAAU,CAAC,4BAA4B,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAChF,CAAC;YAED,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,oBAAoB;YAClB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}