@rudderhq/server 0.7.16 → 0.7.19-canary.0
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.
- package/dist/agent-runtimes/registry.d.ts.map +1 -1
- package/dist/agent-runtimes/registry.js +2 -1
- package/dist/agent-runtimes/registry.js.map +1 -1
- package/dist/bootstrap/create-http-app.d.ts.map +1 -1
- package/dist/bootstrap/create-http-app.js +3 -9
- package/dist/bootstrap/create-http-app.js.map +1 -1
- package/dist/file-system-durability.d.ts +5 -0
- package/dist/file-system-durability.d.ts.map +1 -0
- package/dist/file-system-durability.js +39 -0
- package/dist/file-system-durability.js.map +1 -0
- package/dist/home-paths.d.ts +1 -0
- package/dist/home-paths.d.ts.map +1 -1
- package/dist/home-paths.js +705 -102
- package/dist/home-paths.js.map +1 -1
- package/dist/routes/chats.d.ts.map +1 -1
- package/dist/routes/chats.js +18 -69
- package/dist/routes/chats.js.map +1 -1
- package/dist/routes/chats.message-query-routes.d.ts +9 -0
- package/dist/routes/chats.message-query-routes.d.ts.map +1 -0
- package/dist/routes/chats.message-query-routes.js +43 -0
- package/dist/routes/chats.message-query-routes.js.map +1 -0
- package/dist/routes/chats.stop-route.d.ts +3 -0
- package/dist/routes/chats.stop-route.d.ts.map +1 -0
- package/dist/routes/chats.stop-route.js +240 -0
- package/dist/routes/chats.stop-route.js.map +1 -0
- package/dist/routes/chats.stream-routes.d.ts.map +1 -1
- package/dist/routes/chats.stream-routes.js +94 -390
- package/dist/routes/chats.stream-routes.js.map +1 -1
- package/dist/routes/chats.stream-support.d.ts +41 -0
- package/dist/routes/chats.stream-support.d.ts.map +1 -1
- package/dist/routes/chats.stream-support.js +58 -0
- package/dist/routes/chats.stream-support.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +27 -5
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/issues.mutations.d.ts.map +1 -1
- package/dist/routes/issues.mutations.js +10 -6
- package/dist/routes/issues.mutations.js.map +1 -1
- package/dist/routes/orgs.d.ts.map +1 -1
- package/dist/routes/orgs.js +28 -8
- package/dist/routes/orgs.js.map +1 -1
- package/dist/routes/rudder-plugins.d.ts +5 -0
- package/dist/routes/rudder-plugins.d.ts.map +1 -1
- package/dist/routes/rudder-plugins.js +21 -1
- package/dist/routes/rudder-plugins.js.map +1 -1
- package/dist/routes/rudder-plugins.test.d.ts +2 -0
- package/dist/routes/rudder-plugins.test.d.ts.map +1 -0
- package/dist/routes/rudder-plugins.test.js +42 -0
- package/dist/routes/rudder-plugins.test.js.map +1 -0
- package/dist/routes/run-intelligence.d.ts.map +1 -1
- package/dist/routes/run-intelligence.js +8 -0
- package/dist/routes/run-intelligence.js.map +1 -1
- package/dist/services/agent-issue-creation.d.ts.map +1 -1
- package/dist/services/agent-issue-creation.js +2 -0
- package/dist/services/agent-issue-creation.js.map +1 -1
- package/dist/services/chat-assistant.d.ts.map +1 -1
- package/dist/services/chat-assistant.helpers.d.ts +4 -2
- package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
- package/dist/services/chat-assistant.helpers.js +5 -0
- package/dist/services/chat-assistant.helpers.js.map +1 -1
- package/dist/services/chat-assistant.js +31 -8
- package/dist/services/chat-assistant.js.map +1 -1
- package/dist/services/chat-generation-locks.test.js +0 -8
- package/dist/services/chat-generation-locks.test.js.map +1 -1
- package/dist/services/chat-inline-annotation-validation.d.ts.map +1 -1
- package/dist/services/chat-inline-annotation-validation.js +3 -10
- package/dist/services/chat-inline-annotation-validation.js.map +1 -1
- package/dist/services/chat-inline-annotations.test.js +12 -15
- package/dist/services/chat-inline-annotations.test.js.map +1 -1
- package/dist/services/chat-message-mutation-fingerprint.d.ts +29 -1
- package/dist/services/chat-message-mutation-fingerprint.d.ts.map +1 -1
- package/dist/services/chat-message-mutation-fingerprint.js +55 -0
- package/dist/services/chat-message-mutation-fingerprint.js.map +1 -1
- package/dist/services/chats.annotation-persistence.d.ts +5 -0
- package/dist/services/chats.annotation-persistence.d.ts.map +1 -1
- package/dist/services/chats.annotation-persistence.js +33 -1
- package/dist/services/chats.annotation-persistence.js.map +1 -1
- package/dist/services/chats.d.ts +2 -28
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +3 -29
- package/dist/services/chats.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/issue-references.d.ts +10 -0
- package/dist/services/issue-references.d.ts.map +1 -0
- package/dist/services/issue-references.js +141 -0
- package/dist/services/issue-references.js.map +1 -0
- package/dist/services/issues.d.ts +1 -1
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.helpers.d.ts +4 -0
- package/dist/services/issues.helpers.d.ts.map +1 -1
- package/dist/services/issues.helpers.js.map +1 -1
- package/dist/services/issues.js +164 -97
- package/dist/services/issues.js.map +1 -1
- package/dist/services/organization-workspace-browser.d.ts +6 -2
- package/dist/services/organization-workspace-browser.d.ts.map +1 -1
- package/dist/services/organization-workspace-browser.js +212 -53
- package/dist/services/organization-workspace-browser.js.map +1 -1
- package/dist/services/plugin-archive-native.d.ts +10 -0
- package/dist/services/plugin-archive-native.d.ts.map +1 -0
- package/dist/services/plugin-archive-native.js +170 -0
- package/dist/services/plugin-archive-native.js.map +1 -0
- package/dist/services/plugin-archive-node.d.ts +3 -0
- package/dist/services/plugin-archive-node.d.ts.map +1 -0
- package/dist/services/plugin-archive-node.js +97 -0
- package/dist/services/plugin-archive-node.js.map +1 -0
- package/dist/services/product-analytics-collector.test.js +5 -1
- package/dist/services/product-analytics-collector.test.js.map +1 -1
- package/dist/services/rudder-plugin-catalog.d.ts.map +1 -1
- package/dist/services/rudder-plugin-catalog.js +10 -11
- package/dist/services/rudder-plugin-catalog.js.map +1 -1
- package/dist/services/rudder-plugins.d.ts +1 -3
- package/dist/services/rudder-plugins.d.ts.map +1 -1
- package/dist/services/rudder-plugins.js +57 -100
- package/dist/services/rudder-plugins.js.map +1 -1
- package/dist/services/rudder-plugins.test.js +52 -17
- package/dist/services/rudder-plugins.test.js.map +1 -1
- package/dist/services/run-intelligence.d.ts +1 -0
- package/dist/services/run-intelligence.d.ts.map +1 -1
- package/dist/services/run-intelligence.js +1 -1
- package/dist/services/run-intelligence.js.map +1 -1
- package/dist/services/run-log-store.d.ts +1 -0
- package/dist/services/run-log-store.d.ts.map +1 -1
- package/dist/services/run-log-store.js +123 -4
- package/dist/services/run-log-store.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.core.d.ts +1 -0
- package/dist/services/runtime-kernel/heartbeat.core.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.core.js +11 -0
- package/dist/services/runtime-kernel/heartbeat.core.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.d.ts +1 -0
- package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.js +3 -33
- package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.recovery.d.ts +1 -0
- package/dist/services/runtime-kernel/heartbeat.recovery.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.recovery.js +23 -0
- package/dist/services/runtime-kernel/heartbeat.recovery.js.map +1 -1
- package/dist/services/runtime-kernel/model-fallback.d.ts.map +1 -1
- package/dist/services/runtime-kernel/model-fallback.js +56 -11
- package/dist/services/runtime-kernel/model-fallback.js.map +1 -1
- package/dist/services/workspace-backup-v2.d.ts +1 -0
- package/dist/services/workspace-backup-v2.d.ts.map +1 -1
- package/dist/services/workspace-backup-v2.js +16 -0
- package/dist/services/workspace-backup-v2.js.map +1 -1
- package/dist/services/workspace-backups.d.ts.map +1 -1
- package/dist/services/workspace-backups.js +4 -2
- package/dist/services/workspace-backups.js.map +1 -1
- package/dist/services/workspace-files-native.d.ts +16 -0
- package/dist/services/workspace-files-native.d.ts.map +1 -0
- package/dist/services/workspace-files-native.js +212 -0
- package/dist/services/workspace-files-native.js.map +1 -0
- package/dist/services/workspace-manifest-native.d.ts +1 -1
- package/dist/services/workspace-manifest-native.d.ts.map +1 -1
- package/dist/services/workspace-manifest-native.js +49 -6
- package/dist/services/workspace-manifest-native.js.map +1 -1
- package/dist/services/workspace-runtime.helpers.d.ts.map +1 -1
- package/dist/services/workspace-runtime.helpers.js +13 -11
- package/dist/services/workspace-runtime.helpers.js.map +1 -1
- package/package.json +14 -14
- package/resources/bundled-skills/rudder-docs/SKILL.md +12 -12
- package/resources/bundled-skills/rudder-docs/references/source-map.md +7 -31
- package/skills/rudder-docs/SKILL.md +12 -12
- package/skills/rudder-docs/references/source-map.md +7 -31
- package/ui-dist/assets/{LibraryLiveSurface-DnY0wZep.js → LibraryLiveSurface-D-6Puw4N.js} +1 -1
- package/ui-dist/assets/{abnfDiagram-VRR7QNED-CT-9m1Vc.js → abnfDiagram-VRR7QNED-DjgQ9iD_.js} +1 -1
- package/ui-dist/assets/{addon-fit-C6aMSfRz.js → addon-fit-OOCvZY14.js} +1 -1
- package/ui-dist/assets/{arc-1nExaM-y.js → arc-D6yqUjH4.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-bILoPPs5.js → architectureDiagram-ZJ3FMSHR-eF-Es2a-.js} +1 -1
- package/ui-dist/assets/{blockDiagram-677ZJIJ3--zRFciqi.js → blockDiagram-677ZJIJ3-B7G2uxR7.js} +1 -1
- package/ui-dist/assets/{c4Diagram-LMCZKHZV-CrtaX6A_.js → c4Diagram-LMCZKHZV-YhY4bz85.js} +1 -1
- package/ui-dist/assets/channel-DISxdJMI.js +1 -0
- package/ui-dist/assets/{chunk-2Q5K7J3B-DoBb7ZYS.js → chunk-2Q5K7J3B-D7QxbIUK.js} +1 -1
- package/ui-dist/assets/{chunk-32BRIVSS-DilGswdp.js → chunk-32BRIVSS-CArPDsLy.js} +1 -1
- package/ui-dist/assets/{chunk-5VM5RSS4-D8q00d1k.js → chunk-5VM5RSS4-ByyAjdOI.js} +1 -1
- package/ui-dist/assets/{chunk-EX3LRPZG-Bl1KSAwQ.js → chunk-EX3LRPZG-B6Z9cEKa.js} +1 -1
- package/ui-dist/assets/{chunk-JWPE2WC7-DtdgLB7Y.js → chunk-JWPE2WC7-L5jYy4CI.js} +1 -1
- package/ui-dist/assets/{chunk-MOJQB5TN-UaG7L1QI.js → chunk-MOJQB5TN-BBTZZsOQ.js} +1 -1
- package/ui-dist/assets/{chunk-RYQCIY6F-mkz9qbQF.js → chunk-RYQCIY6F-DyV9CaPT.js} +1 -1
- package/ui-dist/assets/{chunk-V7JOEXUC-FGET6Myl.js → chunk-V7JOEXUC-CNztgBrF.js} +1 -1
- package/ui-dist/assets/{chunk-VR4S4FIN-BgfUmupS.js → chunk-VR4S4FIN-Bv62Xmto.js} +1 -1
- package/ui-dist/assets/{chunk-XXDRQBXY-B6I-gBFN.js → chunk-XXDRQBXY-B5AzJDaz.js} +1 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-BssC8UiF.js +1 -0
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-BssC8UiF.js +1 -0
- package/ui-dist/assets/{cose-bilkent-JH36ORCC-DVGWBjbO.js → cose-bilkent-JH36ORCC-DrzyjyO_.js} +1 -1
- package/ui-dist/assets/{cynefin-VYW2F7L2-CWjLXAiA.js → cynefin-VYW2F7L2-ChoChVKW.js} +1 -1
- package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-DWY5Jowv.js → cynefinDiagram-TSTJHNR4-Fv4ecj_f.js} +1 -1
- package/ui-dist/assets/{dagre-VKFMJZFB-Bp0SVTqP.js → dagre-VKFMJZFB-Zd466k0O.js} +1 -1
- package/ui-dist/assets/{diagram-FQU43EPY-EhsLuQCs.js → diagram-FQU43EPY-BgL3Uu7z.js} +1 -1
- package/ui-dist/assets/{diagram-G47NLZAW-C_ifHw4Q.js → diagram-G47NLZAW-Bcbg2TZF.js} +1 -1
- package/ui-dist/assets/{diagram-NH7WQ7WH-BCitqFNA.js → diagram-NH7WQ7WH-YS4gl6dx.js} +1 -1
- package/ui-dist/assets/{diagram-OA4YK3LP-BRjomHnO.js → diagram-OA4YK3LP-C-A8A6Xi.js} +1 -1
- package/ui-dist/assets/{diagram-WEI45ONY-Cr_E92JE.js → diagram-WEI45ONY-mqkaxwes.js} +1 -1
- package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-0WJQMwqt.js → ebnfDiagram-CCIWWBDH-CvH1cI4K.js} +1 -1
- package/ui-dist/assets/{erDiagram-Q63AITRT-B0EBivSu.js → erDiagram-Q63AITRT-Duhw1MUB.js} +1 -1
- package/ui-dist/assets/{flowDiagram-23GEKE2U-BwdRtCsd.js → flowDiagram-23GEKE2U-DUkAECUs.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-NO4QXBWP-KxlqXAqZ.js → ganttDiagram-NO4QXBWP-B3cINaqn.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-DeTCa-SS.js → gitGraphDiagram-IHSO6WYX-BMEHvYy5.js} +1 -1
- package/ui-dist/assets/{graph-rdRwl3us.js → graph-B1-dUGRC.js} +1 -1
- package/ui-dist/assets/{index-B2jHUYti.js → index-BFmYzGL9.js} +1 -1
- package/ui-dist/assets/{index-DBPJ49Cn.js → index-BGAEBJze.js} +1 -1
- package/ui-dist/assets/{index-NxbW73mN.js → index-BMfPEMCH.js} +1 -1
- package/ui-dist/assets/{index-CcLF8pix.js → index-BglV2AAc.js} +1 -1
- package/ui-dist/assets/{index-BzLCEJCf.js → index-Blix7pGb.js} +1 -1
- package/ui-dist/assets/{index-D5pdKmHf.js → index-CBrXXiQ_.js} +1 -1
- package/ui-dist/assets/{index-7Mb8iY3g.js → index-CSMCUMYP.js} +1 -1
- package/ui-dist/assets/index-CUW-AUBO.css +32 -0
- package/ui-dist/assets/{index-D3RtGD1i.js → index-CaveK_TY.js} +1 -1
- package/ui-dist/assets/{index-CtFA44ZZ.js → index-DHcvu8nk.js} +1 -1
- package/ui-dist/assets/{index-CuP2P51w.js → index-DSz4Tjbh.js} +1 -1
- package/ui-dist/assets/{index-Bi7KPtJ3.js → index-DgNZ8Oto.js} +1 -1
- package/ui-dist/assets/{index-C2DKaTLo.js → index-Drmy6GaQ.js} +1 -1
- package/ui-dist/assets/{index-CbEMZXO1.js → index-DvrowL98.js} +1 -1
- package/ui-dist/assets/{index-CY1CWc3h.js → index-DxHCQu-4.js} +1 -1
- package/ui-dist/assets/{index-s8ZAOPE2.js → index-IJhIHwGp.js} +641 -641
- package/ui-dist/assets/{infoDiagram-FWYZ7A6U-Cun6yrS9.js → infoDiagram-FWYZ7A6U-BJ7smuOx.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-SHuCvm_3.js → ishikawaDiagram-FXEZZL3T-Bn7jPYRy.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-5HDEW3XC-B2oa-ovF.js → journeyDiagram-5HDEW3XC-D5NYECBN.js} +1 -1
- package/ui-dist/assets/{kanban-definition-HUTT4EX6-DtG3RFW0.js → kanban-definition-HUTT4EX6-CcrYvDYt.js} +1 -1
- package/ui-dist/assets/{layout-DmSY_WKW.js → layout-32M7EWAw.js} +1 -1
- package/ui-dist/assets/{linear-BiklTv-9.js → linear-DT9kJUfH.js} +1 -1
- package/ui-dist/assets/{map-B3RAMPoy.js → map-C2crE4Bv.js} +1 -1
- package/ui-dist/assets/{mermaid.core-CQj0CvWy.js → mermaid.core-B9y8ebhy.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-LN4V7U3C-BQrncLdk.js → mindmap-definition-LN4V7U3C-CaFsY4LT.js} +1 -1
- package/ui-dist/assets/{pegDiagram-2B236MQR-BmkmBhyS.js → pegDiagram-2B236MQR-BMTtqHzV.js} +1 -1
- package/ui-dist/assets/{pieDiagram-ENE6RG2P-B0dWJser.js → pieDiagram-ENE6RG2P-DRl32AMI.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-RS2o06NX.js → quadrantDiagram-ABIIQ3AL-pXeC4qE5.js} +1 -1
- package/ui-dist/assets/{railroadDiagram-RFXS5EU6-B4dlWUnB.js → railroadDiagram-RFXS5EU6-tGzWZNPI.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-TGXJPOKE-7M1vICZA.js → requirementDiagram-TGXJPOKE-DEqEN1a0.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-LUpZrugG.js → sankeyDiagram-HTMAVEWB-DjVDCNO4.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-DB4ecUEg.js → sequenceDiagram-DBY2YBRQ-CRKMhKhd.js} +1 -1
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-CgLQGkEa.js → sizeCapture-X5ZJPWSS-CWl0gYed.js} +1 -1
- package/ui-dist/assets/{stateDiagram-2N3HPSRC-BxLcsZg0.js → stateDiagram-2N3HPSRC-BH6FVEBD.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-DFWkP3y3.js +1 -0
- package/ui-dist/assets/{swimlanes-5IMT3BWC-CFoyzQNM.js → swimlanes-5IMT3BWC-BZdn1cQ5.js} +2 -2
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-BwA91U1K.js +8 -0
- package/ui-dist/assets/{timeline-definition-FHXFAJF6-C1vajCzY.js → timeline-definition-FHXFAJF6-CMofE9DN.js} +1 -1
- package/ui-dist/assets/{vennDiagram-L72KCM5P-C42rETOq.js → vennDiagram-L72KCM5P-CszussGd.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-EHGQE667-BgzD6-QL.js → wardleyDiagram-EHGQE667-C1Op8a5q.js} +1 -1
- package/ui-dist/assets/{xterm-BeBaISmm.js → xterm-BM41mI-I.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-FW5EYKEG-BdoJT_55.js → xychartDiagram-FW5EYKEG-zi-IHNrX.js} +1 -1
- package/ui-dist/index.html +11 -7
- package/ui-dist/assets/channel-C3jj6nd_.js +0 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-CNsW5NoJ.js +0 -1
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CNsW5NoJ.js +0 -1
- package/ui-dist/assets/index-CYaeM_68.css +0 -32
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-DAlIlXqa.js +0 -1
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-DXfnihCA.js +0 -8
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { resolveNativeCommand } from "@rudderhq/agent-runtime-utils";
|
|
2
|
+
import { execFile } from "node:child_process";
|
|
3
|
+
import { existsSync, promises as fs } from "node:fs";
|
|
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
|
+
const execFileAsync = promisify(execFile);
|
|
9
|
+
const PROTOCOL_VERSION = 1;
|
|
10
|
+
// HTTP accepts a 10 MiB compressed ZIP; PLUGIN.IMPORT.001 allows 100 MiB after expansion.
|
|
11
|
+
const MAX_ARCHIVE_BYTES = 10 * 1024 * 1024;
|
|
12
|
+
const MAX_PLUGIN_BYTES = 100 * 1024 * 1024;
|
|
13
|
+
const MAX_FILE_BYTES = 2 * 1024 * 1024;
|
|
14
|
+
const MAX_FILES = 500;
|
|
15
|
+
const MAX_EXPANSION_RATIO = 100;
|
|
16
|
+
const MAX_OUTPUT_BYTES = 170 * 1024 * 1024;
|
|
17
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
18
|
+
const INPUT_ERROR_CODES = new Set([
|
|
19
|
+
"plugin_archive_size_limit",
|
|
20
|
+
"plugin_archive_invalid",
|
|
21
|
+
"plugin_archive_path_invalid",
|
|
22
|
+
"plugin_archive_path_unsafe",
|
|
23
|
+
"plugin_archive_file_count_limit",
|
|
24
|
+
"plugin_archive_file_size_limit",
|
|
25
|
+
"plugin_archive_expansion_limit",
|
|
26
|
+
"plugin_archive_total_size_limit",
|
|
27
|
+
"plugin_archive_duplicate_path",
|
|
28
|
+
"plugin_archive_size_mismatch",
|
|
29
|
+
"plugin_archive_read_failed",
|
|
30
|
+
"plugin_archive_empty",
|
|
31
|
+
]);
|
|
32
|
+
export class PluginArchiveNativeError extends Error {
|
|
33
|
+
code;
|
|
34
|
+
fallbackAllowed;
|
|
35
|
+
inputRejected;
|
|
36
|
+
constructor(code, fallbackAllowed, inputRejected) {
|
|
37
|
+
super(`Native Plugin archive inspection failed: ${code}`);
|
|
38
|
+
this.code = code;
|
|
39
|
+
this.fallbackAllowed = fallbackAllowed;
|
|
40
|
+
this.inputRejected = inputRejected;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function decodeBase64(value) {
|
|
44
|
+
const compact = value.replace(/\s/g, "");
|
|
45
|
+
if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(compact)) {
|
|
46
|
+
throw new PluginArchiveNativeError("plugin_archive_base64_invalid", false, true);
|
|
47
|
+
}
|
|
48
|
+
return Buffer.from(compact, "base64");
|
|
49
|
+
}
|
|
50
|
+
export function resolveNativePluginArchiveBinary() {
|
|
51
|
+
const configured = process.env.RUDDER_NATIVE_PLUGIN_ARCHIVE_PATH?.trim()
|
|
52
|
+
|| process.env.RUDDER_NATIVE_ARCHIVE_PATH?.trim();
|
|
53
|
+
if (configured)
|
|
54
|
+
return path.resolve(configured);
|
|
55
|
+
const binaryName = process.platform === "win32" ? "rudder-native.exe" : "rudder-native";
|
|
56
|
+
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
57
|
+
const target = process.platform === "darwin"
|
|
58
|
+
? `${process.arch === "arm64" ? "aarch64" : "x86_64"}-apple-darwin`
|
|
59
|
+
: process.platform === "win32"
|
|
60
|
+
? `${process.arch === "arm64" ? "aarch64" : "x86_64"}-pc-windows-msvc`
|
|
61
|
+
: `${process.arch === "arm64" ? "aarch64" : "x86_64"}-unknown-linux-gnu`;
|
|
62
|
+
const resourcesPath = process.env.RUDDER_DESKTOP_RESOURCES_PATH?.trim()
|
|
63
|
+
|| (typeof process.resourcesPath === "string"
|
|
64
|
+
? process.resourcesPath
|
|
65
|
+
: "");
|
|
66
|
+
const candidates = [
|
|
67
|
+
path.resolve(moduleDir, "../../../native/target/debug", binaryName),
|
|
68
|
+
path.resolve(moduleDir, "../../../../native/target/debug", binaryName),
|
|
69
|
+
path.resolve(moduleDir, "../../../native", target, binaryName),
|
|
70
|
+
resourcesPath ? path.resolve(resourcesPath, "native", target, binaryName) : "",
|
|
71
|
+
].filter(Boolean);
|
|
72
|
+
return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
|
|
73
|
+
}
|
|
74
|
+
function timeoutMs() {
|
|
75
|
+
const configured = Number(process.env.RUDDER_NATIVE_PLUGIN_ARCHIVE_TIMEOUT_MS ?? DEFAULT_TIMEOUT_MS);
|
|
76
|
+
return Number.isFinite(configured) ? Math.max(10, Math.min(DEFAULT_TIMEOUT_MS, Math.floor(configured))) : DEFAULT_TIMEOUT_MS;
|
|
77
|
+
}
|
|
78
|
+
function parseFiles(response) {
|
|
79
|
+
if (response.ok !== true
|
|
80
|
+
|| response.operation !== "inspectPluginArchive"
|
|
81
|
+
|| response.protocolVersion !== PROTOCOL_VERSION
|
|
82
|
+
|| !Array.isArray(response.files)) {
|
|
83
|
+
throw new PluginArchiveNativeError("plugin_archive_envelope_mismatch", true, false);
|
|
84
|
+
}
|
|
85
|
+
return response.files.map((file) => {
|
|
86
|
+
if (!file || typeof file !== "object" || Array.isArray(file)) {
|
|
87
|
+
throw new PluginArchiveNativeError("plugin_archive_file_envelope_invalid", true, false);
|
|
88
|
+
}
|
|
89
|
+
const record = file;
|
|
90
|
+
if (typeof record.path !== "string" || typeof record.content !== "string" || record.encoding !== "base64") {
|
|
91
|
+
throw new PluginArchiveNativeError("plugin_archive_file_envelope_invalid", true, false);
|
|
92
|
+
}
|
|
93
|
+
return { path: record.path, content: record.content, encoding: "base64" };
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
export async function inspectPluginArchiveNative(input, signal) {
|
|
97
|
+
const archive = decodeBase64(input.content);
|
|
98
|
+
if (archive.byteLength > MAX_ARCHIVE_BYTES) {
|
|
99
|
+
throw new PluginArchiveNativeError("plugin_archive_size_limit", false, true);
|
|
100
|
+
}
|
|
101
|
+
const staging = await fs.mkdtemp(path.join(os.tmpdir(), "rudder-plugin-archive-"));
|
|
102
|
+
const archivePath = path.join(staging, "input.zip");
|
|
103
|
+
try {
|
|
104
|
+
await fs.writeFile(archivePath, archive);
|
|
105
|
+
const command = resolveNativeCommand(resolveNativePluginArchiveBinary(), [
|
|
106
|
+
"plugin",
|
|
107
|
+
"inspect-archive",
|
|
108
|
+
archivePath,
|
|
109
|
+
String(MAX_ARCHIVE_BYTES),
|
|
110
|
+
String(MAX_FILE_BYTES),
|
|
111
|
+
String(MAX_PLUGIN_BYTES),
|
|
112
|
+
String(MAX_FILES),
|
|
113
|
+
String(MAX_EXPANSION_RATIO),
|
|
114
|
+
]);
|
|
115
|
+
let stdout;
|
|
116
|
+
let stderr;
|
|
117
|
+
try {
|
|
118
|
+
const result = await execFileAsync(command.command, command.args, {
|
|
119
|
+
encoding: "utf8",
|
|
120
|
+
timeout: timeoutMs(),
|
|
121
|
+
maxBuffer: MAX_OUTPUT_BYTES,
|
|
122
|
+
windowsHide: true,
|
|
123
|
+
signal,
|
|
124
|
+
});
|
|
125
|
+
stdout = result.stdout;
|
|
126
|
+
stderr = result.stderr;
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
const details = error;
|
|
130
|
+
const output = typeof details.stdout === "string" ? details.stdout : "";
|
|
131
|
+
const lines = output.trim().split(/\r?\n/).filter(Boolean);
|
|
132
|
+
if (lines.length === 1) {
|
|
133
|
+
try {
|
|
134
|
+
const parsed = JSON.parse(lines[0]);
|
|
135
|
+
if (typeof parsed.errorCode === "string") {
|
|
136
|
+
const inputRejected = INPUT_ERROR_CODES.has(parsed.errorCode);
|
|
137
|
+
throw new PluginArchiveNativeError(parsed.errorCode, !inputRejected, inputRejected);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (parsedError) {
|
|
141
|
+
if (parsedError instanceof PluginArchiveNativeError)
|
|
142
|
+
throw parsedError;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (details.name === "AbortError")
|
|
146
|
+
throw new PluginArchiveNativeError("plugin_archive_cancelled", false, false);
|
|
147
|
+
if (details.killed || details.signal === "SIGTERM" || details.code === "ETIMEDOUT") {
|
|
148
|
+
throw new PluginArchiveNativeError("plugin_archive_timeout", true, false);
|
|
149
|
+
}
|
|
150
|
+
throw new PluginArchiveNativeError("plugin_archive_process_failed", true, false);
|
|
151
|
+
}
|
|
152
|
+
if (stderr.trim())
|
|
153
|
+
throw new PluginArchiveNativeError("plugin_archive_unexpected_stderr", true, false);
|
|
154
|
+
const lines = stdout.trim().split(/\r?\n/).filter(Boolean);
|
|
155
|
+
if (lines.length !== 1)
|
|
156
|
+
throw new PluginArchiveNativeError("plugin_archive_response_line_count", true, false);
|
|
157
|
+
let response;
|
|
158
|
+
try {
|
|
159
|
+
response = JSON.parse(lines[0]);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
throw new PluginArchiveNativeError("plugin_archive_malformed_json", true, false);
|
|
163
|
+
}
|
|
164
|
+
return parseFiles(response);
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
await fs.rm(staging, { recursive: true, force: true });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=plugin-archive-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-archive-native.js","sourceRoot":"","sources":["../../src/services/plugin-archive-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-archive-node.d.ts","sourceRoot":"","sources":["../../src/services/plugin-archive-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAmBrE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,4BAA4B,EAAE,CAuE/H"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Unzip, UnzipInflate, UnzipPassThrough } from "fflate";
|
|
2
|
+
import { unprocessable } from "../errors.js";
|
|
3
|
+
// HTTP accepts a 10 MiB compressed ZIP; PLUGIN.IMPORT.001 allows 100 MiB after expansion.
|
|
4
|
+
const MAX_ARCHIVE_BYTES = 10 * 1024 * 1024;
|
|
5
|
+
const MAX_PLUGIN_BYTES = 100 * 1024 * 1024;
|
|
6
|
+
const MAX_FILE_BYTES = 2 * 1024 * 1024;
|
|
7
|
+
const MAX_PATH_CHARS = 1_024;
|
|
8
|
+
const MAX_ARCHIVE_RATIO = 100;
|
|
9
|
+
function decodeBase64(value, label) {
|
|
10
|
+
const compact = value.replace(/\s/g, "");
|
|
11
|
+
if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(compact)) {
|
|
12
|
+
throw unprocessable(`Invalid base64 content for ${label}`);
|
|
13
|
+
}
|
|
14
|
+
return Buffer.from(compact, "base64");
|
|
15
|
+
}
|
|
16
|
+
export function unzipPluginPackageNode(content, label, stripPluginRoot) {
|
|
17
|
+
const archive = decodeBase64(content, label);
|
|
18
|
+
if (archive.byteLength > MAX_ARCHIVE_BYTES)
|
|
19
|
+
throw unprocessable("Plugin archive exceeds the 10 MiB transport limit");
|
|
20
|
+
const files = [];
|
|
21
|
+
let totalBytes = 0;
|
|
22
|
+
let failure = null;
|
|
23
|
+
const unzip = new Unzip((file) => {
|
|
24
|
+
if (failure || file.name.endsWith("/"))
|
|
25
|
+
return;
|
|
26
|
+
if (Array.from(file.name).length > MAX_PATH_CHARS || /[\u0000-\u001f\u007f-\u009f]/u.test(file.name)) {
|
|
27
|
+
failure = new Error(`Plugin archive path is invalid: ${file.name}`);
|
|
28
|
+
file.terminate();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (files.length >= 500) {
|
|
32
|
+
failure = new Error("Plugin archive exceeds the 500-file V1 limit");
|
|
33
|
+
file.terminate();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (file.originalSize !== undefined && file.originalSize > MAX_FILE_BYTES) {
|
|
37
|
+
failure = new Error(`Plugin archive entry exceeds 2 MiB: ${file.name}`);
|
|
38
|
+
file.terminate();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (file.size && file.originalSize && file.originalSize / file.size > MAX_ARCHIVE_RATIO) {
|
|
42
|
+
failure = new Error(`Plugin archive entry exceeds the ${MAX_ARCHIVE_RATIO}:1 expansion limit: ${file.name}`);
|
|
43
|
+
file.terminate();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const chunks = [];
|
|
47
|
+
let entryBytes = 0;
|
|
48
|
+
file.ondata = (error, data, final) => {
|
|
49
|
+
if (failure)
|
|
50
|
+
return;
|
|
51
|
+
if (error) {
|
|
52
|
+
failure = error;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
entryBytes += data.byteLength;
|
|
56
|
+
totalBytes += data.byteLength;
|
|
57
|
+
if (entryBytes > MAX_FILE_BYTES || totalBytes > MAX_PLUGIN_BYTES) {
|
|
58
|
+
failure = new Error(entryBytes > MAX_FILE_BYTES
|
|
59
|
+
? `Plugin archive entry exceeds 2 MiB: ${file.name}`
|
|
60
|
+
: "Plugin archive exceeds the 100 MiB expansion limit");
|
|
61
|
+
file.terminate();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
chunks.push(Buffer.from(data));
|
|
65
|
+
if (final) {
|
|
66
|
+
files.push({ path: file.name, content: Buffer.concat(chunks).toString("base64"), encoding: "base64" });
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
file.start();
|
|
70
|
+
});
|
|
71
|
+
unzip.register(UnzipInflate);
|
|
72
|
+
unzip.register(UnzipPassThrough);
|
|
73
|
+
try {
|
|
74
|
+
unzip.push(archive, true);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw unprocessable(`Invalid ZIP Plugin archive: ${error instanceof Error ? error.message : String(error)}`);
|
|
78
|
+
}
|
|
79
|
+
const archiveFailure = failure;
|
|
80
|
+
if (archiveFailure)
|
|
81
|
+
throw unprocessable(archiveFailure.message);
|
|
82
|
+
if (files.length === 0)
|
|
83
|
+
throw unprocessable("Invalid ZIP Plugin archive: archive contains no files");
|
|
84
|
+
if (totalBytes > archive.byteLength * MAX_ARCHIVE_RATIO) {
|
|
85
|
+
throw unprocessable(`Plugin archive exceeds the ${MAX_ARCHIVE_RATIO}:1 expansion limit`);
|
|
86
|
+
}
|
|
87
|
+
if (!stripPluginRoot || files.some((file) => file.path === ".codex-plugin/plugin.json"))
|
|
88
|
+
return files;
|
|
89
|
+
const manifests = files.filter((file) => file.path.endsWith("/.codex-plugin/plugin.json"));
|
|
90
|
+
if (manifests.length !== 1)
|
|
91
|
+
return files;
|
|
92
|
+
const prefix = manifests[0].path.slice(0, -".codex-plugin/plugin.json".length);
|
|
93
|
+
if (!files.every((file) => file.path.startsWith(prefix)))
|
|
94
|
+
return files;
|
|
95
|
+
return files.map((file) => ({ ...file, path: file.path.slice(prefix.length) }));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=plugin-archive-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-archive-node.js","sourceRoot":"","sources":["../../src/services/plugin-archive-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,11 @@ describe("product analytics collector", () => {
|
|
|
58
58
|
it("rejects a conflicting event id instead of overwriting the first payload", () => {
|
|
59
59
|
const collector = createCollector();
|
|
60
60
|
collector.ingestBatch({ authorization, events: [event()] });
|
|
61
|
-
const result = collector.ingestBatch({
|
|
61
|
+
const result = collector.ingestBatch({
|
|
62
|
+
authorization,
|
|
63
|
+
events: [event({ properties: { work_surface: "chat" } })],
|
|
64
|
+
now: new Date("2026-08-03T00:00:00.000Z"),
|
|
65
|
+
});
|
|
62
66
|
expect(result.rejected).toEqual([{ eventId, status: "rejected", errorCode: "conflict", late: false }]);
|
|
63
67
|
expect(collector.store.listEvents()[0]?.properties).toEqual({ work_surface: "issue", is_first_loop: true });
|
|
64
68
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-analytics-collector.test.js","sourceRoot":"","sources":["../../src/services/product-analytics-collector.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"product-analytics-collector.test.js","sourceRoot":"","sources":["../../src/services/product-analytics-collector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rudder-plugin-catalog.d.ts","sourceRoot":"","sources":["../../src/services/rudder-plugin-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAOvC,OAAO,KAAK,EACV,mBAAmB,EAEnB,6BAA6B,EAE7B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"rudder-plugin-catalog.d.ts","sourceRoot":"","sources":["../../src/services/rudder-plugin-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,11 @@ import fs from "node:fs/promises";
|
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { HttpError, notFound, unprocessable } from "../errors.js";
|
|
8
8
|
import { resolveRudderInstanceRoot } from "../home-paths.js";
|
|
9
|
-
import {
|
|
9
|
+
import { rudderPluginService } from "./rudder-plugins.js";
|
|
10
10
|
const DEFAULT_CATALOG_URL = "https://raw.githubusercontent.com/Undertone0809/rudder-plugins/main/catalog.json";
|
|
11
11
|
const MAX_FILES = 500;
|
|
12
12
|
const MAX_FILE_BYTES = 2 * 1024 * 1024;
|
|
13
|
+
const MAX_TOTAL_BYTES = 10 * 1024 * 1024;
|
|
13
14
|
const FETCH_CONCURRENCY = 12;
|
|
14
15
|
const MAX_REDIRECTS = 3;
|
|
15
16
|
const CATALOG_DEGRADED_VISIBILITY_MS = 30_000;
|
|
@@ -533,9 +534,8 @@ function safePackageEntries(tree, subdirectory) {
|
|
|
533
534
|
if (size > MAX_FILE_BYTES)
|
|
534
535
|
throw unprocessable(`Plugin file exceeds 2 MiB: ${relativePath}`);
|
|
535
536
|
total += size;
|
|
536
|
-
if (total >
|
|
537
|
-
throw unprocessable(
|
|
538
|
-
}
|
|
537
|
+
if (total > MAX_TOTAL_BYTES)
|
|
538
|
+
throw unprocessable("Plugin package exceeds the 10 MiB V1 limit");
|
|
539
539
|
}
|
|
540
540
|
return entries;
|
|
541
541
|
}
|
|
@@ -599,13 +599,12 @@ async function fetchGitHubArchiveFiles(fetcher, resolution) {
|
|
|
599
599
|
if (!response.ok)
|
|
600
600
|
throw unprocessable(`GitHub archive returned HTTP ${response.status}`);
|
|
601
601
|
const contentLength = Number(response.headers.get("content-length") ?? 0);
|
|
602
|
-
if (Number.isFinite(contentLength) && contentLength >
|
|
603
|
-
throw unprocessable(
|
|
602
|
+
if (Number.isFinite(contentLength) && contentLength > MAX_TOTAL_BYTES) {
|
|
603
|
+
throw unprocessable("Plugin archive exceeds the 10 MiB V1 limit");
|
|
604
604
|
}
|
|
605
605
|
const archive = Buffer.from(await response.arrayBuffer());
|
|
606
|
-
if (archive.byteLength >
|
|
607
|
-
throw unprocessable(
|
|
608
|
-
}
|
|
606
|
+
if (archive.byteLength > MAX_TOTAL_BYTES)
|
|
607
|
+
throw unprocessable("Plugin archive exceeds the 10 MiB V1 limit");
|
|
609
608
|
const tree = [];
|
|
610
609
|
const files = [];
|
|
611
610
|
const folded = new Set();
|
|
@@ -677,10 +676,10 @@ async function fetchGitHubArchiveFiles(fetcher, resolution) {
|
|
|
677
676
|
}
|
|
678
677
|
entryBytes += data.byteLength;
|
|
679
678
|
totalBytes += data.byteLength;
|
|
680
|
-
if (entryBytes > MAX_FILE_BYTES || totalBytes >
|
|
679
|
+
if (entryBytes > MAX_FILE_BYTES || totalBytes > MAX_TOTAL_BYTES) {
|
|
681
680
|
failure = new Error(entryBytes > MAX_FILE_BYTES
|
|
682
681
|
? `Plugin file exceeds 2 MiB: ${normalized}`
|
|
683
|
-
:
|
|
682
|
+
: "Plugin package exceeds the 10 MiB V1 limit");
|
|
684
683
|
file.terminate();
|
|
685
684
|
return;
|
|
686
685
|
}
|