diff --git a/.gitkeep b/.gitkeep index 79a620e..48587b8 100644 --- a/.gitkeep +++ b/.gitkeep @@ -1,4 +1,6 @@ # .gitkeep file auto-generated at 2026-03-19T10:37:13.073Z for PR creation at branch issue-19-f54b585823d1 for issue https://github.com/xlabtg/teleton-plugins/issues/19 # Updated: 2026-03-27T01:04:44.761Z # Updated: 2026-04-05T19:20:26.278Z -# Updated: 2026-04-09T18:02:32.277Z \ No newline at end of file +# Updated: 2026-04-09T18:02:32.277Z +# Updated: 2026-06-14T10:40:42.180Z +# Updated: 2026-06-14T10:41:34.176Z \ No newline at end of file diff --git a/plugins/composio-direct/index.js b/plugins/composio-direct/index.js index 604afea..dd0954e 100644 --- a/plugins/composio-direct/index.js +++ b/plugins/composio-direct/index.js @@ -22,9 +22,9 @@ * - Requires a Composio API key stored in sdk.secrets as "composio_api_key" * - Set COMPOSIO_DIRECT_COMPOSIO_API_KEY, COMPOSIO_API_KEY, or use the secrets store * - * SDK integration: - * - Uses the official @composio/core npm SDK if it is available - * - Uses direct HTTP calls against Composio v3 when the SDK is unavailable + * Transport: + * - Talks directly to the Composio v3 REST API over HTTPS + * - Self-contained: no npm dependencies, so there is no install step to fail * * Security: * - API keys and OAuth tokens are never logged @@ -38,39 +38,12 @@ */ // --------------------------------------------------------------------------- -// @composio/core SDK — lazy-loaded from plugin-local node_modules. -// We use a dynamic import so the plugin degrades gracefully if the SDK is -// not yet installed (first boot before npm ci completes). +// Composio v3 API constants. +// This plugin talks to Composio over direct HTTPS calls (no npm dependency), +// which keeps it self-contained and avoids any runtime install step that could +// fail (for example "spawn npm ENOENT" when npm is not on PATH). // --------------------------------------------------------------------------- -/** @type {typeof import("@composio/core").Composio | null} */ -let ComposioClass = null; -let sdkLoadAttempted = false; - -/** - * Try to load the @composio/core SDK once. - * Returns the Composio constructor, or null if unavailable. - * @returns {Promise} - */ -async function loadComposioSdk() { - if (sdkLoadAttempted) return ComposioClass; - sdkLoadAttempted = true; - try { - const mod = await import("@composio/core"); - ComposioClass = mod.Composio; - } catch { - // SDK not installed — will fall back to direct HTTP - ComposioClass = null; - } - return ComposioClass; -} - -/** - * Cache of Composio SDK instances keyed by API key. - * @type {Map} - */ -const composioSdkCache = new Map(); - const DEFAULT_BASE_URL = "https://backend.composio.dev/api/v3"; const DEFAULT_TOOL_VERSION = "latest"; const DEFAULT_TOOLKIT_VERSIONS = "latest"; @@ -84,26 +57,6 @@ const COMPOSIO_EXECUTION_GUIDANCE = { "Do not call returned tool_slug values directly. To run a Composio result, call composio_execute_tool with { tool_slug, parameters }.", }; -/** - * Get (or create) a Composio SDK instance for the given API key. - * Returns null if the SDK is unavailable. - * - * @param {string} apiKey - * @returns {Promise} - */ -async function getComposioSdk(apiKey) { - const Cls = await loadComposioSdk(); - if (!Cls) return null; - if (composioSdkCache.has(apiKey)) return composioSdkCache.get(apiKey); - try { - const instance = new Cls({ apiKey, allowTracking: false }); - composioSdkCache.set(apiKey, instance); - return instance; - } catch { - return null; - } -} - // --------------------------------------------------------------------------- // Inline manifest — read by the Teleton runtime for SDK version gating, // defaultConfig merging, and secrets registration. @@ -111,7 +64,7 @@ async function getComposioSdk(apiKey) { export const manifest = { name: "composio-direct", - version: "1.8.0", + version: "1.9.0", sdkVersion: ">=1.0.0", description: "Direct access to 1000+ Composio automation tools plus v3 toolkits, files, triggers, webhooks, connection reuse, and meta-tools without MCP transport", @@ -1043,47 +996,6 @@ export const tools = (sdk) => { const limit = params.limit ?? 50; const includeParams = params.include_params ?? false; - // --- Try SDK path first --- - const composioSdk = await getComposioSdk(apiKey); - if (composioSdk) { - sdk.log.debug(`composio_search_tools: using @composio/core SDK`); - try { - const query = {}; - if (params.query) query.query = params.query; - if (params.toolkit) query.toolkits = [normalizeToolkitSlug(params.toolkit)]; - query.limit = limit; - if (toolkitVersions) query.toolkitVersions = toolkitVersions; - - const toolList = await composioSdk.tools.getRawComposioTools(query); - const rawItems = Array.isArray(toolList) - ? toolList - : Array.isArray(toolList?.items) - ? toolList.items - : []; - const tools = rawItems.map((item) => formatTool(item, includeParams)); - - sdk.log.info(`composio_search_tools: found ${tools.length} tools (SDK)`); - if (tools.length > 0 || (!params.query && !params.toolkit)) { - return { - success: true, - data: { - tools, - count: tools.length, - query: params.query ?? null, - toolkit: params.toolkit ?? null, - total_available: toolList?.total ?? tools.length, - execution: COMPOSIO_EXECUTION_GUIDANCE, - }, - }; - } - sdk.log.debug(`composio_search_tools: SDK returned 0 tools, falling back to HTTP`); - } catch (err) { - sdk.log.debug(`composio_search_tools: SDK error — ${formatApiError(err)}, falling back to HTTP`); - // fall through to HTTP path - } - } - - // --- HTTP fallback path --- const qs = new URLSearchParams(); if (params.query) qs.set("query", params.query); if (params.toolkit) qs.set("toolkit_slug", normalizeToolkitSlug(params.toolkit)); @@ -1337,85 +1249,17 @@ export const tools = (sdk) => { sdk.log.debug(`composio_execute_tool: ${normalizedSlug}`); - // --- Try SDK path first --- - const composioSdk = await getComposioSdk(apiKey); - if (composioSdk) { - sdk.log.debug(`composio_execute_tool: using @composio/core SDK`); - try { - const execBody = { - userId, - arguments: params.parameters, - dangerouslySkipVersionCheck: true, - }; - if (params.version ?? toolVersion) { - execBody.version = params.version ?? toolVersion; - } - if (params.connected_account_id) { - execBody.connectedAccountId = params.connected_account_id; - } - - const result = await composioSdk.tools.execute( - normalizedSlug, - execBody - ); - - const resultData = result?.data ?? result; - if (isAuthRequiredPayload(result) || isAuthRequiredPayload(resultData)) { - const service = extractServiceFromSlug(params.tool_slug); - const connectUrl = extractConnectUrl(result) || extractConnectUrl(resultData) || buildConnectUrl(baseUrl, apiKey, service, context); - sdk.log.info(`composio_execute_tool: auth required for ${service} (SDK response)`); - return { - success: false, - error: "auth_required", - auth: { - service, - connect_url: connectUrl, - message: `Authorization required for ${service.toUpperCase()}. Call composio_auth_link for a fresh connection link.`, - }, - }; - } - - sdk.log.info(`composio_execute_tool: ${params.tool_slug} succeeded (SDK)`); - return { - success: true, - data: resultData, - }; - } catch (err) { - const errMsg = formatApiError(err); - if (err?.status === 401 || err?.status === 403 || - errMsg.toLowerCase().includes("auth") || - errMsg.toLowerCase().includes("connect") || - errMsg.toLowerCase().includes("not connected")) { - const service = extractServiceFromSlug(params.tool_slug); - const connectUrl = buildConnectUrl(baseUrl, apiKey, service, context); - sdk.log.info(`composio_execute_tool: auth required for ${service} (SDK)`); - return { - success: false, - error: "auth_required", - auth: { - service, - connect_url: connectUrl, - message: `Authorization required for ${service.toUpperCase()}. Call composio_auth_link for a fresh connection link.`, - }, - }; - } - sdk.log.debug(`composio_execute_tool: SDK error — ${errMsg}, falling back to HTTP`); - // fall through to HTTP path - } - } - - // --- HTTP fallback path --- const effectiveTimeout = params.timeout_override_ms ?? timeoutMs; let url = `${baseUrl}/tools/execute/${encodeURIComponent(normalizedSlug)}`; sdk.log.debug(`composio_execute_tool: POST ${normalizedSlug} via HTTP (timeout=${effectiveTimeout}ms)`); - const toolArguments = params.connected_account_id - ? { ...params.parameters, connected_account_id: params.connected_account_id } - : params.parameters; + // connected_account_id is a top-level field of the execute request body, + // not a tool argument. Injecting it into `arguments` would fail strict + // tool schemas (additionalProperties: false) and break execution. const body = { user_id: userId, - arguments: toolArguments, + arguments: params.parameters, version: params.version ?? toolVersion, }; if (params.connected_account_id) { @@ -1596,8 +1440,6 @@ export const tools = (sdk) => { const batchEnd = Math.min(batchStart + maxParallel, params.executions.length); const batch = params.executions.slice(batchStart, batchEnd); - const composioSdk = await getComposioSdk(apiKey); - const batchPromises = batch.map(async (exec, batchIdx) => { const globalIdx = batchStart + batchIdx; if (stopped) { @@ -1605,88 +1447,16 @@ export const tools = (sdk) => { return; } - // --- Try SDK path first --- - if (composioSdk) { - try { - const normalizedSlug = normalizeToolSlug(exec.tool_slug); - const execBody = { - userId: getUserId(context), - arguments: exec.parameters, - dangerouslySkipVersionCheck: true, - version: exec.version ?? toolVersion, - }; - if (exec.connected_account_id) { - execBody.connectedAccountId = exec.connected_account_id; - } - - const result = await composioSdk.tools.execute( - normalizedSlug, - execBody - ); - - const resultData = result?.data ?? result; - if (isAuthRequiredPayload(result) || isAuthRequiredPayload(resultData)) { - const service = extractServiceFromSlug(exec.tool_slug); - const connectUrl = extractConnectUrl(result) || extractConnectUrl(resultData) || buildConnectUrl(baseUrl, apiKey, service, context); - results[globalIdx] = { - tool_slug: normalizedSlug, - success: false, - error: "auth_required", - auth: { - service, - connect_url: connectUrl, - message: `Authorization required for ${service.toUpperCase()}. Call composio_auth_link for a fresh connection link.`, - }, - }; - if (failFast) stopped = true; - return; - } - - results[globalIdx] = { - tool_slug: normalizedSlug, - success: true, - data: resultData, - }; - return; - } catch (err) { - const errMsg = formatApiError(err); - const isAuthErr = err?.status === 401 || err?.status === 403 || - errMsg.toLowerCase().includes("auth") || - errMsg.toLowerCase().includes("connect") || - errMsg.toLowerCase().includes("not connected"); - - if (isAuthErr) { - const service = extractServiceFromSlug(exec.tool_slug); - const connectUrl = buildConnectUrl(baseUrl, apiKey, service, context); - results[globalIdx] = { - tool_slug: normalizeToolSlug(exec.tool_slug), - success: false, - error: "auth_required", - auth: { - service, - connect_url: connectUrl, - message: `Authorization required for ${service.toUpperCase()}. Call composio_auth_link for a fresh connection link.`, - }, - }; - if (failFast) stopped = true; - return; - } - sdk.log.debug(`composio_multi_execute: SDK error for ${exec.tool_slug} — ${errMsg}, falling back to HTTP`); - // fall through to HTTP path - } - } - - // --- HTTP fallback path --- const normalizedSlug = normalizeToolSlug(exec.tool_slug); const effectiveTimeout = exec.timeout_override_ms ?? timeoutMs; let url = `${baseUrl}/tools/execute/${encodeURIComponent(normalizedSlug)}`; - const execArguments = exec.connected_account_id - ? { ...exec.parameters, connected_account_id: exec.connected_account_id } - : exec.parameters; + // connected_account_id is a top-level field of the execute request + // body, not a tool argument. Injecting it into `arguments` would fail + // strict tool schemas (additionalProperties: false) and break execution. const body = { user_id: getUserId(context), - arguments: execArguments, + arguments: exec.parameters, version: exec.version ?? toolVersion, }; if (exec.connected_account_id) { diff --git a/plugins/composio-direct/manifest.json b/plugins/composio-direct/manifest.json index 40e9da6..bc8fea6 100644 --- a/plugins/composio-direct/manifest.json +++ b/plugins/composio-direct/manifest.json @@ -1,7 +1,7 @@ { "id": "composio-direct", "name": "Composio Direct", - "version": "1.8.0", + "version": "1.9.0", "description": "Direct access to 1000+ Composio automation tools plus v3 toolkits, files, triggers, webhooks, connection reuse, and meta-tools without MCP transport", "author": { "name": "xlabtg", diff --git a/plugins/composio-direct/package.json b/plugins/composio-direct/package.json index 7f9641b..eaf2a20 100644 --- a/plugins/composio-direct/package.json +++ b/plugins/composio-direct/package.json @@ -1,7 +1,7 @@ { "name": "teleton-plugin-composio-direct", "type": "module", - "version": "1.8.0", + "version": "1.9.0", "private": true, "description": "Teleton plugin for direct Composio API access" } diff --git a/plugins/composio-direct/test/unit/composio-direct.test.js b/plugins/composio-direct/test/unit/composio-direct.test.js index fdfd31f..a6a3b41 100644 --- a/plugins/composio-direct/test/unit/composio-direct.test.js +++ b/plugins/composio-direct/test/unit/composio-direct.test.js @@ -149,7 +149,7 @@ describe("manifest", () => { assert.ok(manifest.name, "manifest.name is set"); assert.ok(manifest.version, "manifest.version is set"); assert.ok(manifest.secrets?.composio_api_key, "secret composio_api_key declared"); - assert.equal(manifest.version, "1.8.0"); + assert.equal(manifest.version, "1.9.0"); assert.equal(manifest.defaultConfig?.base_url, "https://backend.composio.dev/api/v3"); }); }); diff --git a/plugins/composio-direct/tests/index.test.js b/plugins/composio-direct/tests/index.test.js index 383c592..72b0a98 100644 --- a/plugins/composio-direct/tests/index.test.js +++ b/plugins/composio-direct/tests/index.test.js @@ -109,7 +109,7 @@ describe("composio-direct Teleton integration", () => { const sdk = makeSdk(); const toolList = toolsFactory(sdk); - assert.equal(manifest.version, "1.8.0"); + assert.equal(manifest.version, "1.9.0"); assert.equal(manifest.defaultConfig.base_url, "https://backend.composio.dev/api/v3"); assert.deepEqual( toolList.map((tool) => tool.name).sort(), @@ -260,7 +260,7 @@ describe("composio-direct Teleton integration", () => { } }); - it("passes connected_account_id in HTTP body when provided", async () => { + it("passes connected_account_id as a top-level execute field, not inside arguments", async () => { const { calls, restore } = mockFetch(() => ({ status: 200, data: { @@ -274,7 +274,7 @@ describe("composio-direct Teleton integration", () => { const result = await executeTool.execute( { tool_slug: "COINMARKETCAP_CRYPTOCURRENCY_LISTINGS_LATEST", - parameters: {}, + parameters: { symbol: "BTC" }, connected_account_id: "ca_lc9TestLuaI", }, makeContext({ senderId: "user-42" }) @@ -283,14 +283,20 @@ describe("composio-direct Teleton integration", () => { assert.equal(result.success, true); assert.equal(calls[0].body.connected_account_id, "ca_lc9TestLuaI"); assert.equal(calls[0].body.user_id, "user-42"); - // connected_account_id must also be inside arguments so Composio API picks it up - assert.equal(calls[0].body.arguments.connected_account_id, "ca_lc9TestLuaI"); + // connected_account_id is a top-level execute field per the Composio v3 API. + // It must NOT pollute the tool arguments, or strict tool schemas + // (additionalProperties: false) reject the call. + assert.deepEqual(calls[0].body.arguments, { symbol: "BTC" }); + assert.equal( + Object.hasOwn(calls[0].body.arguments, "connected_account_id"), + false + ); } finally { restore(); } }); - it("passes connected_account_id inside arguments for multi_execute HTTP body", async () => { + it("passes connected_account_id as a top-level field for multi_execute, not inside arguments", async () => { const { calls, restore } = mockFetch(() => ({ status: 200, data: { successful: true, data: { ok: true } }, @@ -312,8 +318,12 @@ describe("composio-direct Teleton integration", () => { ); assert.equal(result.success, true); - // connected_account_id must be inside arguments so Composio API picks it up - assert.equal(calls[0].body.arguments.connected_account_id, "ca_multi_inside"); + // connected_account_id is a top-level execute field, never a tool argument. + assert.deepEqual(calls[0].body.arguments, { symbol: "BTC" }); + assert.equal( + Object.hasOwn(calls[0].body.arguments, "connected_account_id"), + false + ); assert.equal(calls[0].body.connected_account_id, "ca_multi_inside"); } finally { restore(); diff --git a/plugins/dedust/package-lock.json b/plugins/dedust/package-lock.json index 34134e2..9cb0bb0 100644 --- a/plugins/dedust/package-lock.json +++ b/plugins/dedust/package-lock.json @@ -107,6 +107,19 @@ "@tonconnect/protocol": "2.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -115,15 +128,16 @@ "peer": true }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "peer": true, "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/call-bind-apply-helpers": { @@ -153,6 +167,24 @@ "node": ">= 0.8" } }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -238,9 +270,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -379,6 +411,20 @@ "node": ">= 0.4" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "peer": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/isomorphic-fetch": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", @@ -432,6 +478,13 @@ "node": ">= 0.6" } }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "peer": true + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -453,11 +506,14 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "license": "MIT", - "peer": true + "peer": true, + "engines": { + "node": ">=10" + } }, "node_modules/tr46": { "version": "0.0.3", diff --git a/plugins/evaa/package-lock.json b/plugins/evaa/package-lock.json index 89dee3c..8a665c8 100644 --- a/plugins/evaa/package-lock.json +++ b/plugins/evaa/package-lock.json @@ -170,6 +170,18 @@ "zod": "^3.x" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -177,14 +189,15 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/call-bind-apply-helpers": { @@ -225,6 +238,23 @@ "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", "license": "MIT" }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -327,9 +357,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -459,6 +489,19 @@ "node": ">= 0.4" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/isomorphic-fetch": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", @@ -509,6 +552,12 @@ "node": ">= 0.6" } }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -530,10 +579,13 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/symbol.inspect": { "version": "1.0.1", diff --git a/plugins/finam-trade/package-lock.json b/plugins/finam-trade/package-lock.json index a209697..b0fc2b9 100644 --- a/plugins/finam-trade/package-lock.json +++ b/plugins/finam-trade/package-lock.json @@ -13,9 +13,9 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", - "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", @@ -66,25 +66,24 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", "license": "BSD-3-Clause", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@protobufjs/aspromise": "^1.1.1" } }, "node_modules/@protobufjs/float": { @@ -93,12 +92,6 @@ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "license": "BSD-3-Clause" }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", @@ -112,9 +105,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "license": "BSD-3-Clause" }, "node_modules/@types/node": { @@ -228,24 +221,23 @@ "license": "Apache-2.0" }, "node_modules/protobufjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.5.tgz", - "integrity": "sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", + "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", - "long": "^5.0.0" + "long": "^5.3.2" }, "engines": { "node": ">=12.0.0" diff --git a/plugins/stonfi/package-lock.json b/plugins/stonfi/package-lock.json index b183b27..6568bd5 100644 --- a/plugins/stonfi/package-lock.json +++ b/plugins/stonfi/package-lock.json @@ -92,6 +92,19 @@ "@ton/crypto": ">=3.2.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -100,15 +113,16 @@ "peer": true }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "peer": true, "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/call-bind-apply-helpers": { @@ -175,6 +189,24 @@ "license": "MIT", "peer": true }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/decamelize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz", @@ -310,9 +342,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -451,6 +483,20 @@ "node": ">= 0.4" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "peer": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/isomorphic-fetch": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", @@ -516,6 +562,13 @@ "node": ">= 0.6" } }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "peer": true + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -554,11 +607,14 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "license": "MIT", - "peer": true + "peer": true, + "engines": { + "node": ">=10" + } }, "node_modules/quick-lru": { "version": "6.1.2",