diff --git a/package.json b/package.json index 2cc42e2..6ccb231 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@tanstack/react-virtual": "^3.13.12", "@tauri-apps/api": "^2.8.0", "@types/lodash": "^4.17.20", + "@walletconnect/modal-core": "^2.7.0", "@walletconnect/types": "^2.23.0", "axios": "^1.11.0", "bignumber.js": "9.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba54fd4..601e2a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,25 +18,25 @@ importers: version: 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) '@hashgraphonline/conversational-agent': specifier: 0.2.218 - version: 0.2.218(252f994abd05a6c1ff19dd5cc16964b3) + version: 0.2.218(e47b71c91fa40603a3a33c9bf29d1755) '@hashgraphonline/hashinal-wc': specifier: 2.0.35 - version: 2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + version: 2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@hashgraphonline/standards-agent-kit': specifier: 0.2.164 - version: 0.2.164(9859074c7d612ea58d49318388a50038) + version: 0.2.164(611668c4f45ccb18a00cb0fb55c3732f) '@hashgraphonline/standards-sdk': specifier: 0.1.145 - version: 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + version: 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) '@hookform/resolvers': specifier: ^5.2.1 version: 5.2.2(react-hook-form@7.64.0(react@19.2.0)) '@kabuto-sh/ns': specifier: ^0.14.2 - version: 0.14.2(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(debug@4.4.3) + version: 0.14.2(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(debug@4.4.1) '@kiloscribe/inscription-sdk': specifier: 2.0.8 - version: 2.0.8(fcfb749de57453c7419c12c861670091) + version: 2.0.8(86651e015bcc3ab997ed7b99a04b8037) '@langchain/anthropic': specifier: ^0.3.27 version: 0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76) @@ -109,12 +109,15 @@ importers: '@types/lodash': specifier: ^4.17.20 version: 4.17.20 + '@walletconnect/modal-core': + specifier: ^2.7.0 + version: 2.7.0(@types/react@19.2.0)(react@19.2.0) '@walletconnect/types': specifier: ^2.23.0 version: 2.23.0(ioredis@5.8.0) axios: specifier: ^1.11.0 - version: 1.12.2(debug@4.4.3) + version: 1.12.2(debug@4.4.1) bignumber.js: specifier: 9.3.1 version: 9.3.1 @@ -1923,9 +1926,6 @@ packages: resolution: {integrity: sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@lit-labs/ssr-dom-shim@1.4.0': - resolution: {integrity: sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==} - '@lit-labs/ssr-dom-shim@1.5.1': resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} @@ -4194,10 +4194,6 @@ packages: resolution: {integrity: sha512-Tp4MHJYcdWD846PH//2r+Mu4wz1/ZU/fr9av1UWFiaYQ2t2TPLDiZxjLw54AAEpMqlEHemwCgiRiAmjR1NDdTQ==} engines: {node: '>=18'} - '@walletconnect/core@2.21.10': - resolution: {integrity: sha512-azWSsDeUZupqK0E8V85w7toNYVm/uzLtxhNv28dvNMtUf8aKlww3DilQxP9T2HZ3z+3n0ocuRzi0nfktjsaHyw==} - engines: {node: '>=18.20.8'} - '@walletconnect/core@2.22.3': resolution: {integrity: sha512-14qELKSVdLiXHUzFhErhP16DT58JaK7Aw5PM/x94tSKvjrI5Y3ttq8E1aF7c/yoETgJ0VVINav/YfKr2cYH7vQ==} engines: {node: '>=18.20.8'} @@ -4318,9 +4314,6 @@ packages: '@walletconnect/types@2.21.1': resolution: {integrity: sha512-UeefNadqP6IyfwWC1Yi7ux+ljbP2R66PLfDrDm8izmvlPmYlqRerJWJvYO4t0Vvr9wrG4Ko7E0c4M7FaPKT/sQ==} - '@walletconnect/types@2.21.10': - resolution: {integrity: sha512-9oSvgxv1hE5aS+j4aHS9YgKeq50BP4iMh49tjubTW5574cBWqmt1bXfQhZddSTbq9OirwLSegl6W36itkzryBQ==} - '@walletconnect/types@2.22.3': resolution: {integrity: sha512-2argx5Bt7NQ6DarppU72ASCdt0lUJH421REo4BFWn6RaX2Ce054qDDYCnZjSqb0BX+yy9kqesjaoz6P3Gj0f2g==} @@ -4347,9 +4340,6 @@ packages: '@walletconnect/utils@2.21.1': resolution: {integrity: sha512-VPZvTcrNQCkbGOjFRbC24mm/pzbRMUq2DSQoiHlhh0X1U7ZhuIrzVtAoKsrzu6rqjz0EEtGxCr3K1TGRqDG4NA==} - '@walletconnect/utils@2.21.10': - resolution: {integrity: sha512-LC5hmP3uxVoMyw7Ibea1JQdE98FTb7jZie60qiaybmaIsg/ApEUosU5uCLTFRJwEWUip2p3sJTb0n/3pU+yR/Q==} - '@walletconnect/utils@2.22.3': resolution: {integrity: sha512-9YSR9h2Vk8x0QPZjMvZOIj94x5UPU2aCNmxrL6uPUkmjVDW36VwGvrQmC5xZckrB5PkBeSHupyzIk23x1hlb+A==} @@ -10125,9 +10115,9 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@base-org/account@2.4.0(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@base-org/account@2.4.0(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@coinbase/cdp-sdk': 1.43.0(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@coinbase/cdp-sdk': 1.43.0(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 @@ -10171,7 +10161,7 @@ snapshots: deepmerge: 4.3.1 dotenv: 17.2.3 openai: 5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) zod: 3.25.76 zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: @@ -10205,15 +10195,15 @@ snapshots: dependencies: '@chainsafe/is-ip': 2.1.0 - '@coinbase/cdp-sdk@1.43.0(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@coinbase/cdp-sdk@1.43.0(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: '@solana-program/system': 0.10.0(@solana/kit@5.4.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) '@solana-program/token': 0.9.0(@solana/kit@5.4.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) '@solana/kit': 5.4.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) - axios: 1.12.2(debug@4.4.3) - axios-retry: 4.5.0(axios@1.12.2(debug@4.4.3)) + axios: 1.12.2(debug@4.4.1) + axios-retry: 4.5.0(axios@1.12.2(debug@4.4.1)) jose: 6.1.3 md5: 2.3.0 uncrypto: 0.1.3 @@ -10752,12 +10742,12 @@ snapshots: - react-native - supports-color - '@hashgraph/hedera-wallet-connect@1.5.1(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@walletconnect/qrcode-modal@1.8.0)(@walletconnect/types@2.23.0(ioredis@5.8.0))(@walletconnect/utils@2.22.3(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76))(@walletconnect/web3wallet@1.16.1(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@hashgraph/hedera-wallet-connect@1.5.1(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@walletconnect/qrcode-modal@1.8.0)(@walletconnect/types@2.23.0(ioredis@5.8.0))(@walletconnect/utils@2.23.0(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76))(@walletconnect/web3wallet@1.16.1(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) '@walletconnect/qrcode-modal': 1.8.0 '@walletconnect/types': 2.23.0(ioredis@5.8.0) - '@walletconnect/utils': 2.22.3(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/utils': 2.23.0(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76) '@walletconnect/web3wallet': 1.16.1(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@hashgraph/hedera-wallet-connect@2.0.4(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': @@ -10786,20 +10776,11 @@ snapshots: protobufjs: 7.5.4 strip-ansi: 7.1.2 - '@hashgraph/proto@2.24.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.3)(protobufjs@7.5.4)(strip-ansi@7.1.2)': + '@hashgraph/proto@2.25.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.1)(protobufjs@7.5.4)(strip-ansi@7.1.2)': dependencies: ansi-regex: 6.2.2 ansi-styles: 6.2.3 - debug: 4.4.3 - long: 5.3.1 - protobufjs: 7.5.4 - strip-ansi: 7.1.2 - - '@hashgraph/proto@2.25.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.3)(protobufjs@7.5.4)(strip-ansi@7.1.2)': - dependencies: - ansi-regex: 6.2.2 - ansi-styles: 6.2.3 - debug: 4.4.3 + debug: 4.4.1 long: 5.3.1 protobufjs: 7.5.4 strip-ansi: 7.1.2 @@ -10832,23 +10813,23 @@ snapshots: - react-native - supports-color - '@hashgraphonline/conversational-agent@0.2.218(252f994abd05a6c1ff19dd5cc16964b3)': + '@hashgraphonline/conversational-agent@0.2.218(e47b71c91fa40603a3a33c9bf29d1755)': dependencies: '@ethereumjs/wallet': 10.0.0 '@ethersphere/bee-js': 10.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@hashgraphonline/hashinal-wc': 2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@hashgraphonline/standards-agent-kit': 0.2.164(9859074c7d612ea58d49318388a50038) - '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@hashgraphonline/hashinal-wc': 2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@hashgraphonline/standards-agent-kit': 0.2.164(611668c4f45ccb18a00cb0fb55c3732f) + '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) '@langchain/anthropic': 0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76) '@langchain/core': 0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)) '@langchain/openai': 0.6.14(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@modelcontextprotocol/sdk': 1.19.1 - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) bignumber.js: 9.3.1 ethers: 6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - hedera-agent-kit: 2.0.3(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(bn.js@5.2.2)(debug@4.4.3)(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod-to-json-schema@3.24.6(zod@3.25.76)) - langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.3))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + hedera-agent-kit: 2.0.3(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(bn.js@5.2.2)(debug@4.4.1)(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod-to-json-schema@3.24.6(zod@3.25.76)) + langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.1))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) openai: 5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76) tiktoken: 1.0.22 zod: 3.25.76 @@ -11047,12 +11028,12 @@ snapshots: - ws - youtubei.js - '@hashgraphonline/hashinal-wc@2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@hashgraphonline/hashinal-wc@2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@hashgraph/hedera-wallet-connect': 2.0.4(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - '@hashgraph/proto': 2.25.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.3)(protobufjs@7.5.4)(strip-ansi@7.1.2) + '@hashgraph/proto': 2.25.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.1)(protobufjs@7.5.4)(strip-ansi@7.1.2) '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) '@reown/appkit': 1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) fetch-retry: 6.0.0 long: 5.3.2 @@ -11105,21 +11086,21 @@ snapshots: - utf-8-validate - zod - '@hashgraphonline/standards-agent-kit@0.2.164(9859074c7d612ea58d49318388a50038)': + '@hashgraphonline/standards-agent-kit@0.2.164(611668c4f45ccb18a00cb0fb55c3732f)': dependencies: '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@kiloscribe/inscription-sdk': 1.0.60(594813b32636add0adadd86d2a0e2c3a) - '@langchain/community': 0.3.57(a2e85460a9cfdc407f389aae11d1cd38) + '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@kiloscribe/inscription-sdk': 1.0.60(9028d95770a3f5dd81322f0ebc68427b) + '@langchain/community': 0.3.57(0c9c5c1b879415680493bd06aa819827) '@langchain/core': 0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)) '@langchain/openai': 0.6.14(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@octokit/rest': 21.1.1 - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) chromadb: 2.4.6(encoding@0.1.13)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76) commander: 14.0.1 dotenv: 16.6.1 - hedera-agent-kit: 2.0.3(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(bn.js@5.2.2)(debug@4.4.3)(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod-to-json-schema@3.24.6(zod@3.25.76)) - langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.3))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + hedera-agent-kit: 2.0.3(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(bn.js@5.2.2)(debug@4.4.1)(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod-to-json-schema@3.24.6(zod@3.25.76)) + langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.1))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) openai: 5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76) typescript: 5.9.3 zod: 3.25.76 @@ -11315,18 +11296,18 @@ snapshots: - youtubei.js - zod-to-json-schema - '@hashgraphonline/standards-sdk@0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@hashgraphonline/standards-sdk@0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: - '@hashgraph/proto': 2.24.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.3)(protobufjs@7.5.4)(strip-ansi@7.1.2) + '@hashgraph/proto': 2.24.0(ansi-regex@6.2.2)(ansi-styles@6.2.3)(debug@4.4.1)(protobufjs@7.5.4)(strip-ansi@7.1.2) '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@hashgraphonline/hashinal-wc': 2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@hashgraphonline/hashinal-wc': 2.0.35(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@hiero-did-sdk/registrar': 0.1.8(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) '@hiero-did-sdk/resolver': 0.1.8(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@kiloscribe/inscription-sdk': 2.0.8(fcfb749de57453c7419c12c861670091) + '@kiloscribe/inscription-sdk': 2.0.8(86651e015bcc3ab997ed7b99a04b8037) '@noble/curves': 2.0.1 '@types/localtunnel': 2.0.4 agent0-sdk: 0.2.1(bufferutil@4.1.0)(encoding@0.1.13)(graphql@16.11.0)(utf-8-validate@5.0.10) - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) bignumber.js: 9.3.1 buffer: 6.0.3 chalk: 5.6.2 @@ -11337,7 +11318,7 @@ snapshots: long: 5.3.2 mime-types: 2.1.35 viem: 2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - x402-axios: 0.7.2(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + x402-axios: 0.7.2(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10) zod: 3.25.76 optionalDependencies: ioredis: 5.8.0 @@ -11672,21 +11653,21 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} - '@kabuto-sh/ns@0.14.2(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(debug@4.4.3)': + '@kabuto-sh/ns@0.14.2(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(debug@4.4.1)': dependencies: '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) bignumber.js: 9.3.1 date-fns: 2.30.0 transitivePeerDependencies: - debug - '@kiloscribe/inscription-sdk@1.0.60(594813b32636add0adadd86d2a0e2c3a)': + '@kiloscribe/inscription-sdk@1.0.60(9028d95770a3f5dd81322f0ebc68427b)': dependencies: - '@hashgraph/hedera-wallet-connect': 1.5.1(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@walletconnect/qrcode-modal@1.8.0)(@walletconnect/types@2.23.0(ioredis@5.8.0))(@walletconnect/utils@2.22.3(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76))(@walletconnect/web3wallet@1.16.1(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@hashgraph/hedera-wallet-connect': 1.5.1(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@walletconnect/qrcode-modal@1.8.0)(@walletconnect/types@2.23.0(ioredis@5.8.0))(@walletconnect/utils@2.23.0(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76))(@walletconnect/web3wallet@1.16.1(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) - axios: 1.12.2(debug@4.4.3) + '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + axios: 1.12.2(debug@4.4.1) date-fns: 4.1.0 file-type: 21.0.0 mime-types: 3.0.1 @@ -11742,12 +11723,12 @@ snapshots: - uploadthing - utf-8-validate - '@kiloscribe/inscription-sdk@2.0.8(fcfb749de57453c7419c12c861670091)': + '@kiloscribe/inscription-sdk@2.0.8(86651e015bcc3ab997ed7b99a04b8037)': dependencies: '@hashgraph/hedera-wallet-connect': 2.0.4-canary.3ca04e9.0(@hashgraph/sdk@2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ethers@6.15.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) - '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) - axios: 1.12.2(debug@4.4.3) + '@hashgraphonline/standards-sdk': 0.1.145(@reown/appkit-controllers@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/appkit@1.8.10(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@reown/walletkit@1.4.1(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(@walletconnect/modal@2.7.0(@types/react@19.2.0)(react@19.2.0))(ansi-regex@6.2.2)(ansi-styles@6.2.3)(bn.js@5.2.2)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(graphql@16.11.0)(ioredis@5.8.0)(protobufjs@7.5.4)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(strip-ansi@7.1.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + axios: 1.12.2(debug@4.4.1) date-fns: 4.1.0 file-type: 21.0.0 mime-types: 3.0.1 @@ -11770,7 +11751,7 @@ snapshots: transitivePeerDependencies: - zod - '@langchain/community@0.3.57(a2e85460a9cfdc407f389aae11d1cd38)': + '@langchain/community@0.3.57(0c9c5c1b879415680493bd06aa819827)': dependencies: '@browserbasehq/stagehand': 1.14.0(@playwright/test@1.55.1)(bufferutil@4.1.0)(deepmerge@4.3.1)(dotenv@17.2.3)(encoding@0.1.13)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(utf-8-validate@5.0.10)(zod@3.25.76) '@ibm-cloud/watsonx-ai': 1.6.13 @@ -11782,7 +11763,7 @@ snapshots: flat: 5.0.2 ibm-cloud-sdk-core: 5.4.3 js-yaml: 4.1.0 - langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.3))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.1))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) langsmith: 0.3.72(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)) openai: 5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76) uuid: 10.0.0 @@ -11958,8 +11939,6 @@ snapshots: multiformats: 11.0.2 uint8arrays: 4.0.10 - '@lit-labs/ssr-dom-shim@1.4.0': {} - '@lit-labs/ssr-dom-shim@1.5.1': {} '@lit/react@1.0.8(@types/react@19.2.0)': @@ -11969,7 +11948,7 @@ snapshots: '@lit/reactive-element@1.6.3': dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 + '@lit-labs/ssr-dom-shim': 1.5.1 '@lit/reactive-element@2.1.2': dependencies: @@ -15026,9 +15005,9 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 - '@wagmi/connectors@6.2.0(87b6018daee14322f771eac2f1b92b76)': + '@wagmi/connectors@6.2.0(62eb9a5b52f6b2e40d0bc18c56179def)': dependencies: - '@base-org/account': 2.4.0(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@3.25.76) + '@base-org/account': 2.4.0(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@3.25.76) '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@3.25.76) '@gemini-wallet/core': 0.3.2(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -15037,7 +15016,7 @@ snapshots: '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.18)(@types/react@19.2.0)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.0)(bufferutil@4.1.0)(encoding@0.1.13)(ioredis@5.8.0)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.35(fa135fac2f18cafb10e38f7f8c187c38) + porto: 0.2.35(350d394c64005f91130dfb2fc8699ba5) viem: 2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: typescript: 5.9.3 @@ -15114,13 +15093,13 @@ snapshots: '@ethersproject/transactions': 5.8.0 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 - '@walletconnect/core': 2.21.10(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.23.0(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/utils': 2.22.3(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/utils': 2.23.0(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76) events: 3.3.0 isomorphic-unfetch: 3.1.0(encoding@0.1.13) transitivePeerDependencies: @@ -15287,50 +15266,6 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.10(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': - dependencies: - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.0) - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.1.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.10(ioredis@5.8.0) - '@walletconnect/utils': 2.21.10(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76) - '@walletconnect/window-getters': 1.0.1 - es-toolkit: 1.39.3 - events: 3.3.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - typescript - - uploadthing - - utf-8-validate - - zod - '@walletconnect/core@2.22.3(bufferutil@4.1.0)(ioredis@5.8.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 @@ -15890,35 +15825,6 @@ snapshots: - ioredis - uploadthing - '@walletconnect/types@2.21.10(ioredis@5.8.0)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.0) - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - '@walletconnect/types@2.22.3(ioredis@5.8.0)': dependencies: '@walletconnect/events': 1.0.1 @@ -16228,50 +16134,6 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.10(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76)': - dependencies: - '@msgpack/msgpack': 3.1.2 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.7 - '@noble/hashes': 1.8.0 - '@scure/base': 1.2.6 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.0) - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.1.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.10(ioredis@5.8.0) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - blakejs: 1.2.1 - bs58: 6.0.0 - detect-browser: 5.3.0 - ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - typescript - - uploadthing - - zod - '@walletconnect/utils@2.22.3(ioredis@5.8.0)(typescript@5.9.3)(zod@3.25.76)': dependencies: '@msgpack/msgpack': 3.1.2 @@ -16669,9 +16531,9 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios-retry@4.5.0(axios@1.12.2(debug@4.4.3)): + axios-retry@4.5.0(axios@1.12.2(debug@4.4.1)): dependencies: - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) is-retry-allowed: 2.2.0 axios@0.30.2(debug@4.4.3): @@ -16682,6 +16544,14 @@ snapshots: transitivePeerDependencies: - debug + axios@1.12.2(debug@4.4.1): + dependencies: + follow-redirects: 1.15.11(debug@4.4.1) + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axios@1.12.2(debug@4.4.3): dependencies: follow-redirects: 1.15.11(debug@4.4.3) @@ -18189,6 +18059,10 @@ snapshots: flow-enums-runtime@0.0.6: {} + follow-redirects@1.15.11(debug@4.4.1): + optionalDependencies: + debug: 4.4.1 + follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: debug: 4.4.3 @@ -18411,20 +18285,20 @@ snapshots: dependencies: function-bind: 1.1.2 - hedera-agent-kit@2.0.3(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(bn.js@5.2.2)(debug@4.4.3)(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod-to-json-schema@3.24.6(zod@3.25.76)): + hedera-agent-kit@2.0.3(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(bn.js@5.2.2)(debug@4.4.1)(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(react-dom@19.2.0(react@19.2.0))(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod-to-json-schema@3.24.6(zod@3.25.76)): dependencies: '@hashgraph/sdk': 2.77.0(bn.js@5.2.2)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10)) '@langchain/core': 0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)) '@langchain/langgraph': 0.3.12(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(zod-to-json-schema@3.24.6(zod@3.25.76)) '@langchain/openai': 0.5.18(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@modelcontextprotocol/sdk': 1.19.1 - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) bignumber.js: 9.3.1 chalk: 5.6.2 date-fns: 4.1.0 dotenv: 17.2.3 gradient-string: 3.0.0 - langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.3))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + langchain: 0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.1))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) pino: 9.13.1 zod: 3.25.76 transitivePeerDependencies: @@ -18529,7 +18403,7 @@ snapshots: isstream: 0.1.2 jsonwebtoken: 9.0.2 mime-types: 2.1.35 - retry-axios: 2.6.0(axios@1.12.2(debug@4.4.3)) + retry-axios: 2.6.0(axios@1.12.2(debug@4.4.1)) tough-cookie: 4.1.4 transitivePeerDependencies: - supports-color @@ -19194,7 +19068,7 @@ snapshots: keyvaluestorage-interface@1.0.0: {} - langchain@0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.3))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + langchain@0.3.35(@langchain/anthropic@0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76))(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(axios@1.12.2(debug@4.4.1))(handlebars@4.7.8)(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)): dependencies: '@langchain/core': 0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)) '@langchain/openai': 0.6.14(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) @@ -19210,7 +19084,7 @@ snapshots: zod: 3.25.76 optionalDependencies: '@langchain/anthropic': 0.3.30(@langchain/core@0.3.78(openai@5.23.2(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))(zod@3.25.76)))(zod@3.25.76) - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) handlebars: 4.7.8 transitivePeerDependencies: - '@opentelemetry/api' @@ -19292,7 +19166,7 @@ snapshots: lit-element@3.3.3: dependencies: - '@lit-labs/ssr-dom-shim': 1.4.0 + '@lit-labs/ssr-dom-shim': 1.5.1 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 @@ -20276,7 +20150,7 @@ snapshots: pony-cause@2.1.11: {} - porto@0.2.35(fa135fac2f18cafb10e38f7f8c187c38): + porto@0.2.35(350d394c64005f91130dfb2fc8699ba5): dependencies: '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.18)(@types/react@19.2.0)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) hono: 4.11.4 @@ -20291,7 +20165,7 @@ snapshots: react: 19.2.0 react-native: 0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10) typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - immer @@ -20743,9 +20617,9 @@ snapshots: retimer@3.0.0: {} - retry-axios@2.6.0(axios@1.12.2(debug@4.4.3)): + retry-axios@2.6.0(axios@1.12.2(debug@4.4.1)): dependencies: - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) retry@0.13.1: {} @@ -21880,10 +21754,10 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wagmi@2.19.5(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): + wagmi@2.19.5(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): dependencies: '@tanstack/react-query': 5.90.18(react@19.2.0) - '@wagmi/connectors': 6.2.0(87b6018daee14322f771eac2f1b92b76) + '@wagmi/connectors': 6.2.0(62eb9a5b52f6b2e40d0bc18c56179def) '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.18)(@types/react@19.2.0)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) react: 19.2.0 use-sync-external-store: 1.4.0(react@19.2.0) @@ -22081,11 +21955,11 @@ snapshots: bufferutil: 4.1.0 utf-8-validate: 5.0.10 - x402-axios@0.7.2(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10): + x402-axios@0.7.2(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10): dependencies: - axios: 1.12.2(debug@4.4.3) + axios: 1.12.2(debug@4.4.1) viem: 2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - x402: 0.7.3(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + x402: 0.7.3(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10) zod: 3.25.76 transitivePeerDependencies: - '@azure/app-configuration' @@ -22125,7 +21999,7 @@ snapshots: - uploadthing - utf-8-validate - x402@0.7.3(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10): + x402@0.7.3(@solana/sysvars@5.4.0(typescript@5.9.3))(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10): dependencies: '@scure/base': 1.2.6 '@solana-program/compute-budget': 0.11.0(@solana/kit@5.4.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) @@ -22138,7 +22012,7 @@ snapshots: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 viem: 2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.3)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.90.18)(@tanstack/react-query@5.90.18(react@19.2.0))(@types/react@19.2.0)(bufferutil@4.1.0)(debug@4.4.1)(encoding@0.1.13)(ioredis@5.8.0)(react-native@0.81.4(@babel/core@7.28.4)(@types/react@19.2.0)(bufferutil@4.1.0)(react@19.2.0)(utf-8-validate@5.0.10))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.44.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) zod: 3.25.76 transitivePeerDependencies: - '@azure/app-configuration' diff --git a/public/privacy.md b/public/privacy.md index e16c39b..4a1192b 100644 --- a/public/privacy.md +++ b/public/privacy.md @@ -22,6 +22,7 @@ This application interacts with: - Hedera Network - OpenAI API - Anthropic API (optional) +- Swarm Infrastructure (optional) ## Your Rights diff --git a/setup.sh b/setup.sh index b41054c..b5d4412 100755 --- a/setup.sh +++ b/setup.sh @@ -160,6 +160,7 @@ This application interacts with: - Hedera Network - OpenAI API - Anthropic API (optional) +- Swarm Infrastructure (optional) ## Your Rights diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 4fc64ce..8847530 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -32,6 +32,7 @@ once_cell = "1.19" tokio = { version = "1.37", features = ["macros", "rt-multi-thread", "process", "io-util", "sync", "fs"] } rmcp = { version = "0.7.0", features = ["client", "transport-child-process"] } dotenvy = "0.15" +thiserror = "1.0" [target.'cfg(target_os = "macos")'.dependencies] block2 = "0.6" diff --git a/src-tauri/bridge/agent/runtime.ts b/src-tauri/bridge/agent/runtime.ts index 424e885..dfa2fd8 100644 --- a/src-tauri/bridge/agent/runtime.ts +++ b/src-tauri/bridge/agent/runtime.ts @@ -1,6 +1,9 @@ import { AttachmentProcessor, + BasePlugin, ConversationalAgent, + SwarmConfig, + SwarmPlugin, } from '@hashgraphonline/conversational-agent'; import type { AttachmentData, @@ -401,6 +404,16 @@ export class BridgeRuntime { payload.openRouterBaseURL.trim().length > 0 ? payload.openRouterBaseURL : undefined; + + const additionalPlugins: BasePlugin[] = []; + if (Array.isArray(payload.additionalPlugins)) { + for (const pluginConfig of payload.additionalPlugins) { + if (pluginConfig.pluginType === 'swarm') { + additionalPlugins.push(new SwarmPlugin(pluginConfig.config as unknown as SwarmConfig)); + } + // Add other plugin types here + } + } const options: ConversationalAgentOptions = { accountId, @@ -415,6 +428,7 @@ export class BridgeRuntime { disableLogging, openRouterApiKey, openRouterBaseURL, + additionalPlugins, }; const mcpServers = Array.isArray(payload.mcpServers) diff --git a/src-tauri/bridge/agent/types.ts b/src-tauri/bridge/agent/types.ts index ea240b6..9853bee 100644 --- a/src-tauri/bridge/agent/types.ts +++ b/src-tauri/bridge/agent/types.ts @@ -1,4 +1,5 @@ import type { + BasePlugin, ConversationalAgentOptions, StartInscriptionResult, WalletBridgeProvider, @@ -43,6 +44,7 @@ export interface AgentInitializePayload { readonly openRouterApiKey?: string; readonly openRouterBaseURL?: string; readonly disabledPlugins?: ReadonlyArray; + readonly additionalPlugins?: Array<{ pluginType: string; config: Record}>; } export interface AgentMessagePayload { diff --git a/src-tauri/gen/schemas/linux-schema.json b/src-tauri/gen/schemas/linux-schema.json new file mode 100644 index 0000000..072f596 --- /dev/null +++ b/src-tauri/gen/schemas/linux-schema.json @@ -0,0 +1,2346 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Allow renderer to interact with the conversational agent backend.", + "type": "string", + "const": "agent", + "markdownDescription": "Allow renderer to interact with the conversational agent backend." + }, + { + "description": "Allow renderer access to native browser view commands.", + "type": "string", + "const": "browser", + "markdownDescription": "Allow renderer access to native browser view commands." + }, + { + "description": "Allow renderer to manage chat sessions and messages.", + "type": "string", + "const": "chat", + "markdownDescription": "Allow renderer to manage chat sessions and messages." + }, + { + "description": "Allow renderer to manage application configuration.", + "type": "string", + "const": "config", + "markdownDescription": "Allow renderer to manage application configuration." + }, + { + "description": "Allow renderer to execute connection tests.", + "type": "string", + "const": "connections", + "markdownDescription": "Allow renderer to execute connection tests." + }, + { + "description": "Allow renderer to manage secure credentials.", + "type": "string", + "const": "credentials", + "markdownDescription": "Allow renderer to manage secure credentials." + }, + { + "description": "Allow renderer to manage entity associations.", + "type": "string", + "const": "entities", + "markdownDescription": "Allow renderer to manage entity associations." + }, + { + "description": "Allow renderer to subscribe to browser and MCP events.", + "type": "string", + "const": "event-listen", + "markdownDescription": "Allow renderer to subscribe to browser and MCP events." + }, + { + "description": "Allow renderer access to MCP server management commands.", + "type": "string", + "const": "mcp", + "markdownDescription": "Allow renderer access to MCP server management commands." + }, + { + "description": "Allow renderer access to mirror node bridge commands.", + "type": "string", + "const": "mirror-node", + "markdownDescription": "Allow renderer access to mirror node bridge commands." + }, + { + "description": "Allow renderer to fetch mirror node token info.", + "type": "string", + "const": "mirror-node-token", + "markdownDescription": "Allow renderer to fetch mirror node token info." + }, + { + "description": "Allow renderer to query desktop plugins.", + "type": "string", + "const": "plugins", + "markdownDescription": "Allow renderer to query desktop plugins." + }, + { + "description": "Allow renderer access to transaction parser commands.", + "type": "string", + "const": "transaction-parser", + "markdownDescription": "Allow renderer access to transaction parser commands." + }, + { + "description": "Allow renderer to manage wallet state.", + "type": "string", + "const": "wallet", + "markdownDescription": "Allow renderer to manage wallet state." + }, + { + "description": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n\n#### This default permission set includes:\n\n- `allow-enable`\n- `allow-disable`\n- `allow-is-enabled`", + "type": "string", + "const": "autostart:default", + "markdownDescription": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n\n#### This default permission set includes:\n\n- `allow-enable`\n- `allow-disable`\n- `allow-is-enabled`" + }, + { + "description": "Enables the disable command without any pre-configured scope.", + "type": "string", + "const": "autostart:allow-disable", + "markdownDescription": "Enables the disable command without any pre-configured scope." + }, + { + "description": "Enables the enable command without any pre-configured scope.", + "type": "string", + "const": "autostart:allow-enable", + "markdownDescription": "Enables the enable command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "autostart:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the disable command without any pre-configured scope.", + "type": "string", + "const": "autostart:deny-disable", + "markdownDescription": "Denies the disable command without any pre-configured scope." + }, + { + "description": "Denies the enable command without any pre-configured scope.", + "type": "string", + "const": "autostart:deny-enable", + "markdownDescription": "Denies the enable command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "autostart:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src-tauri/permissions/desktop.json b/src-tauri/permissions/desktop.json index d930252..71583f0 100644 --- a/src-tauri/permissions/desktop.json +++ b/src-tauri/permissions/desktop.json @@ -127,14 +127,19 @@ "identifier": "mirror-node-token", "description": "Allow renderer to fetch mirror node token info.", "commands": { - "allow": ["mirror_node_get_token_info"] + "allow": [ + "mirror_node_get_token_info" + ] } }, { "identifier": "transaction-parser", "description": "Allow renderer access to transaction parser commands.", "commands": { - "allow": ["transaction_parser_validate", "transaction_parser_parse"] + "allow": [ + "transaction_parser_validate", + "transaction_parser_parse" + ] } }, { @@ -165,10 +170,14 @@ }, { "identifier": "plugins", - "description": "Allow renderer to query desktop plugins.", + "description": "Allow renderer to manage desktop plugins.", "commands": { - "allow": ["plugin_search"] + "allow": [ + "plugin_search", + "plugin_enable", + "plugin_disable" + ] } } ] -} +} \ No newline at end of file diff --git a/src-tauri/resources/agent/runtime.js b/src-tauri/resources/agent/runtime.js index de48072..b77a8c3 100644 --- a/src-tauri/resources/agent/runtime.js +++ b/src-tauri/resources/agent/runtime.js @@ -306,6 +306,15 @@ class BridgeRuntime { payload.openRouterBaseURL.trim().length > 0 ? payload.openRouterBaseURL : undefined; + const additionalPlugins = []; + if (Array.isArray(payload.additionalPlugins)) { + for (const pluginConfig of payload.additionalPlugins) { + if (pluginConfig.pluginType === 'swarm') { + additionalPlugins.push(new conversational_agent_1.SwarmPlugin(pluginConfig.config)); + } + // Add other plugin types here + } + } const options = { accountId, privateKey, @@ -319,6 +328,7 @@ class BridgeRuntime { disableLogging, openRouterApiKey, openRouterBaseURL, + additionalPlugins, }; const mcpServers = Array.isArray(payload.mcpServers) ? payload.mcpServers diff --git a/src-tauri/src/agent.rs b/src-tauri/src/agent.rs index e66634b..91aecde 100644 --- a/src-tauri/src/agent.rs +++ b/src-tauri/src/agent.rs @@ -10,7 +10,14 @@ use crate::agent_services::{InitializationService, MessageService}; use crate::session::SessionService; use crate::wallet_bridge::{WalletBridgeInfo, WalletBridgeState}; -#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "camelCase")] +pub struct AdditionalPluginConfig { + pub plugin_type: String, // "swarm", "custom", etc. + pub config: Value, // Plugin-specific config as JSON +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct AgentInitializeConfig { pub account_id: String, @@ -34,6 +41,8 @@ pub struct AgentInitializeConfig { pub disable_logging: Option, #[serde(default)] pub disabled_plugins: Option>, + #[serde(default)] + pub additional_plugins: Option>, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] @@ -271,6 +280,7 @@ mod tests { verbose: None, disable_logging: None, disabled_plugins: None, + additional_plugins: None, } } diff --git a/src-tauri/src/agent_backend.rs b/src-tauri/src/agent_backend.rs index dd71021..9b4a042 100644 --- a/src-tauri/src/agent_backend.rs +++ b/src-tauri/src/agent_backend.rs @@ -1,5 +1,5 @@ use async_trait::async_trait; - +use thiserror::Error; use crate::agent::{AgentMessageData, AgentMessageRequest}; use serde_json::Value; use uuid::Uuid; diff --git a/src-tauri/src/agent_services.rs b/src-tauri/src/agent_services.rs index 0d7da20..42d3c9d 100644 --- a/src-tauri/src/agent_services.rs +++ b/src-tauri/src/agent_services.rs @@ -378,6 +378,7 @@ mod tests { verbose: None, disable_logging: None, disabled_plugins: None, + additional_plugins: None, } } diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs index cd7d0d7..6be93e4 100644 --- a/src-tauri/src/config.rs +++ b/src-tauri/src/config.rs @@ -27,6 +27,17 @@ pub struct HederaConfig { pub network: Network, } +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SwarmConfig { + pub bee_api_url: String, + #[serde(rename = "beeFeedPK")] + pub bee_feed_pk: String, + pub auto_assign_stamp: bool, + #[serde(rename = "deferredUploadSizeThresholdMB")] + pub deferred_upload_size_threshold_mb: i32, +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProviderConfig { @@ -42,6 +53,8 @@ pub struct AdvancedConfig { pub log_level: LogLevel, #[serde(default = "default_true")] pub web_browser_plugin_enabled: bool, + #[serde(default = "default_true")] + pub swarm_plugin_enabled: bool, #[serde(default)] pub operational_mode: OperationalMode, } @@ -106,6 +119,8 @@ impl Default for ProfileStatus { #[serde(rename_all = "camelCase")] pub struct AppConfig { pub hedera: HederaConfig, + #[serde(skip_serializing_if = "Option::is_none")] + pub swarm: Option, pub openai: ProviderConfig, pub anthropic: ProviderConfig, pub advanced: AdvancedConfig, @@ -209,6 +224,17 @@ impl Default for HederaConfig { } } +impl Default for SwarmConfig { + fn default() -> Self { + Self { + bee_api_url: String::new(), + bee_feed_pk: String::new(), + auto_assign_stamp: true, + deferred_upload_size_threshold_mb: 5, + } + } +} + impl Default for ProviderConfig { fn default() -> Self { Self { @@ -222,6 +248,7 @@ impl Default for AppConfig { fn default() -> Self { Self { hedera: HederaConfig::default(), + swarm: Some(SwarmConfig::default()), openai: ProviderConfig { model: "gpt-5".to_string(), ..ProviderConfig::default() @@ -235,6 +262,7 @@ impl Default for AppConfig { auto_start: false, log_level: LogLevel::Info, web_browser_plugin_enabled: true, + swarm_plugin_enabled: true, operational_mode: OperationalMode::ProvideBytes, }, llm_provider: LlmProvider::Openai, @@ -319,6 +347,12 @@ fn encrypt_sensitive_fields(config: &mut AppConfig, master_password: &str) -> Re config.hedera.private_key = encrypted; } + if let Some(swarm) = config.swarm.as_mut() + && let Some(encrypted) = encrypt_value(&swarm.bee_feed_pk, master_password)? + { + swarm.bee_feed_pk = encrypted; + } + if let Some(encrypted) = encrypt_value(&config.openai.api_key, master_password)? { config.openai.api_key = encrypted; } @@ -335,6 +369,12 @@ fn decrypt_sensitive_fields(config: &mut AppConfig, master_password: &str) -> Re config.hedera.private_key = decrypted; } + if let Some(swarm) = config.swarm.as_mut() + && let Some(decrypted) = decrypt_value(&swarm.bee_feed_pk, master_password)? + { + swarm.bee_feed_pk = decrypted; + } + if let Some(decrypted) = decrypt_value(&config.openai.api_key, master_password)? { config.openai.api_key = decrypted; } @@ -518,19 +558,31 @@ pub fn save_config( Ok(()) } -fn update_web_browser_plugin_state( +fn update_plugin_state( app_handle: &AppHandle, state: &State, + plugin_id: &str, enabled: bool, ) -> Result<(), String> { let response = load_config(app_handle.clone(), state.clone())?; let mut config = response.config; - if config.advanced.web_browser_plugin_enabled == enabled { + let current_enabled = match plugin_id { + "web-browser" => config.advanced.web_browser_plugin_enabled, + "swarm" => config.advanced.swarm_plugin_enabled, + _ => return Err(format!("Unknown plugin: {}", plugin_id)), + }; + + if current_enabled == enabled { return Ok(()); } - config.advanced.web_browser_plugin_enabled = enabled; + match plugin_id { + "web-browser" => config.advanced.web_browser_plugin_enabled = enabled, + "swarm" => config.advanced.swarm_plugin_enabled = enabled, + _ => unreachable!(), // Safe due to prior validation + } + save_config(app_handle.clone(), state.clone(), config)?; Ok(()) } @@ -541,7 +593,7 @@ pub fn plugin_enable( state: State, plugin_id: String, ) -> Result { - if plugin_id != "web-browser" { + if !["web-browser", "swarm"].contains(&plugin_id.as_str()) { return Ok(PluginToggleResponse { success: false, data: None, @@ -549,7 +601,7 @@ pub fn plugin_enable( }); } - update_web_browser_plugin_state(&app_handle, &state, true)?; + update_plugin_state(&app_handle, &state, &plugin_id, true)?; Ok(PluginToggleResponse { success: true, data: None, @@ -563,7 +615,7 @@ pub fn plugin_disable( state: State, plugin_id: String, ) -> Result { - if plugin_id != "web-browser" { + if !["web-browser", "swarm"].contains(&plugin_id.as_str()) { return Ok(PluginToggleResponse { success: false, data: None, @@ -571,7 +623,7 @@ pub fn plugin_disable( }); } - update_web_browser_plugin_state(&app_handle, &state, false)?; + update_plugin_state(&app_handle, &state, &plugin_id, false)?; Ok(PluginToggleResponse { success: true, data: None, @@ -646,6 +698,8 @@ pub struct EnvironmentConfig { #[serde(skip_serializing_if = "Option::is_none")] pub hedera: Option, #[serde(skip_serializing_if = "Option::is_none")] + pub swarm: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub openai: Option, #[serde(skip_serializing_if = "Option::is_none")] pub anthropic: Option, @@ -668,6 +722,19 @@ pub struct HederaEnvironment { pub network: Option, } +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct SwarmEnvironment { + #[serde(skip_serializing_if = "Option::is_none")] + pub bee_api_url: Option, + #[serde(rename = "beeFeedPK", skip_serializing_if = "Option::is_none")] + pub bee_feed_pk: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub auto_assign_stamp: Option, + #[serde(rename = "deferredUploadSizeThresholdMB", skip_serializing_if = "Option::is_none")] + pub deferred_upload_size_threshold_mb: Option, +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ProviderEnvironment { @@ -729,7 +796,26 @@ pub fn get_environment_config() -> Result { network: hedera_network, }); } - + + let swarm_bee_api_url = std::env::var("SWARM_BEE_API_URL").ok(); + let swarm_bee_feed_pk = std::env::var("SWARM_BEE_FEED_PK").ok(); + let swarm_auto_assign_stamp = std::env::var("SWARM_AUTO_ASSIGN_STAMP") + .ok() + .and_then(|v| v.parse().ok()); + let swarm_threshold_mb = std::env::var("SWARM_DEFERRED_UPLOAD_SIZE_THRESHOLD_MB") + .ok() + .and_then(|v| v.parse().ok()); + + if swarm_bee_api_url.is_some() || swarm_bee_feed_pk.is_some() || + swarm_auto_assign_stamp.is_some() || swarm_threshold_mb.is_some() { + env_config.swarm = Some(SwarmEnvironment { + bee_api_url: swarm_bee_api_url, + bee_feed_pk: swarm_bee_feed_pk, + auto_assign_stamp: swarm_auto_assign_stamp, + deferred_upload_size_threshold_mb: swarm_threshold_mb, + }); + } + let openai_api_key = std::env::var("OPENAI_API_KEY").ok(); let openai_model = std::env::var("OPENAI_MODEL").ok(); if openai_api_key.is_some() || openai_model.is_some() { diff --git a/src-tauri/src/node_agent.rs b/src-tauri/src/node_agent.rs index 237938f..ac50465 100644 --- a/src-tauri/src/node_agent.rs +++ b/src-tauri/src/node_agent.rs @@ -369,6 +369,8 @@ pub struct AgentInitializeConfigPayload { pub disable_logging: Option, #[serde(rename = "disabledPlugins", skip_serializing_if = "Option::is_none")] pub disabled_plugins: Option>, + #[serde(rename = "additionalPlugins", skip_serializing_if = "Option::is_none")] + pub additional_plugins: Option>, } #[derive(Deserialize)] @@ -474,6 +476,7 @@ impl From for AgentInitializeConfigPayload verbose: value.verbose, disable_logging: value.disable_logging, disabled_plugins: value.disabled_plugins, + additional_plugins: value.additional_plugins, } } } @@ -498,6 +501,7 @@ mod tests { verbose: None, disable_logging: None, disabled_plugins: None, + additional_plugins: None, }; let payload = AgentInitializeConfigPayload::from(config); @@ -506,4 +510,40 @@ mod tests { assert!(payload.mcp_servers.is_some()); assert!(payload.mcp_servers.unwrap().is_array()); } + + #[test] + fn payload_includes_additional_plugins() { + let config = crate::agent::AgentInitializeConfig { + account_id: "0.0.1001".to_string(), + private_key: "302e020100300506032b657004220420".to_string(), + network: "testnet".to_string(), + open_ai_api_key: "sk-test".to_string(), + model_name: Some("gpt-test".to_string()), + llm_provider: Some("openai".to_string()), + user_account_id: Some("0.0.2002".to_string()), + operational_mode: Some("provideBytes".to_string()), + mcp_servers: None, + verbose: None, + disable_logging: None, + disabled_plugins: None, + additional_plugins: Some(vec![ + crate::agent::AdditionalPluginConfig { + plugin_type: "swarm".to_string(), + config: json!({ + "beeApiUrl": "http://localhost:1633", + "beeFeedPK": "test-feed-pk", + "autoAssignStamp": true, + "deferredUploadSizeThresholdMB": 10 + }), + }, + ]), + }; + + let payload = AgentInitializeConfigPayload::from(config); + assert!(payload.additional_plugins.is_some()); + let plugins = payload.additional_plugins.unwrap(); + assert_eq!(plugins.len(), 1); + assert_eq!(plugins[0].plugin_type, "swarm"); + assert!(plugins[0].config.get("beeApiUrl").is_some()); + } } diff --git a/src-tauri/vite.config.bridge.ts b/src-tauri/vite.config.bridge.ts index d923070..651fc94 100644 --- a/src-tauri/vite.config.bridge.ts +++ b/src-tauri/vite.config.bridge.ts @@ -32,7 +32,7 @@ export default defineConfig({ formats: ['es'], }, rollupOptions: { - external: ['@tauri-apps/api'], + external: ['@tauri-apps/api', '@hashgraph/proto', '@hashgraph/sdk'], }, }, }); diff --git a/src/__tests__/agent-store.connection.test.ts b/src/__tests__/agent-store.connection.test.ts index 79f84be..2a7af84 100644 --- a/src/__tests__/agent-store.connection.test.ts +++ b/src/__tests__/agent-store.connection.test.ts @@ -96,7 +96,159 @@ describe('AgentStore configuration bridge', () => { expect(loadConfigSpy).toHaveBeenCalledTimes(1); expect(initializeAgent).toHaveBeenCalledWith( - expect.objectContaining({ openAIApiKey: 'sk-live-test-key' }) + expect.objectContaining({ + openAIApiKey: 'sk-live-test-key', + additionalPlugins: undefined, // No swarm config in mock + }) + ); + }); + + it('includes swarm plugin config when enabled', async () => { + const loadConfigSpy = vi + .spyOn(configService, 'loadConfig') + .mockResolvedValue({ + hedera: { + accountId: '0.0.2001', + privateKey: 'PRIVATE_KEY', + network: 'testnet', + }, + openai: { + apiKey: 'sk-live-test-key', + model: 'gpt-5', + }, + anthropic: { + apiKey: '', + model: 'claude-sonnet-4-20250514', + }, + advanced: { + autoStart: false, + logLevel: 'info', + theme: 'light', + operationalMode: 'provideBytes', + webBrowserPluginEnabled: true, + swarmPluginEnabled: true, + }, + swarm: { + beeApiUrl: 'http://localhost:1633', + beeFeedPK: 'test-feed-pk', + autoAssignStamp: true, + deferredUploadSizeThresholdMB: 10, + }, + llmProvider: 'openai', + autonomousMode: false, + operationalMode: 'provideBytes', + legalAcceptance: { + termsAccepted: false, + privacyAccepted: false, + }, + } satisfies AppConfig); + + const initializeAgent = vi + .fn() + .mockResolvedValue({ success: true, data: { sessionId: 'session-123' } }); + + const desktopStub = { + initializeAgent, + loadConfig: vi.fn().mockResolvedValue({ success: true, config: null }), + getEnvironmentConfig: vi.fn().mockResolvedValue({ enableMainnet: false }), + } as unknown as Window['desktop']; + + (window as Window).desktop = desktopStub; + + useWalletStore.setState({ + isConnected: false, + accountId: null, + network: 'testnet', + } as Partial); + + await expect(useAgentStore.getState().connect()).resolves.not.toThrow(); + + expect(loadConfigSpy).toHaveBeenCalledTimes(1); + expect(initializeAgent).toHaveBeenCalledWith( + expect.objectContaining({ + openAIApiKey: 'sk-live-test-key', + additionalPlugins: [ + { + pluginType: 'swarm', + config: { + beeApiUrl: 'http://localhost:1633', + beeFeedPK: 'test-feed-pk', + autoAssignStamp: true, + deferredUploadSizeThresholdMB: 10, + }, + }, + ], + }) + ); + }); + + it('excludes swarm plugin when disabled', async () => { + const loadConfigSpy = vi + .spyOn(configService, 'loadConfig') + .mockResolvedValue({ + hedera: { + accountId: '0.0.2001', + privateKey: 'PRIVATE_KEY', + network: 'testnet', + }, + openai: { + apiKey: 'sk-live-test-key', + model: 'gpt-5', + }, + anthropic: { + apiKey: '', + model: 'claude-3-7-sonnet-latest', + }, + advanced: { + autoStart: false, + logLevel: 'info', + theme: 'light', + operationalMode: 'provideBytes', + webBrowserPluginEnabled: true, + swarmPluginEnabled: false, + }, + swarm: { + beeApiUrl: 'http://localhost:1633', + beeFeedPK: 'test-feed-pk', + autoAssignStamp: true, + deferredUploadSizeThresholdMB: 10, + }, + llmProvider: 'openai', + autonomousMode: false, + operationalMode: 'provideBytes', + legalAcceptance: { + termsAccepted: false, + privacyAccepted: false, + }, + } satisfies AppConfig); + + const initializeAgent = vi + .fn() + .mockResolvedValue({ success: true, data: { sessionId: 'session-123' } }); + + const desktopStub = { + initializeAgent, + loadConfig: vi.fn().mockResolvedValue({ success: true, config: null }), + getEnvironmentConfig: vi.fn().mockResolvedValue({ enableMainnet: false }), + } as unknown as Window['desktop']; + + (window as Window).desktop = desktopStub; + + useWalletStore.setState({ + isConnected: false, + accountId: null, + network: 'testnet', + } as Partial); + + await expect(useAgentStore.getState().connect()).resolves.not.toThrow(); + + expect(loadConfigSpy).toHaveBeenCalledTimes(1); + expect(initializeAgent).toHaveBeenCalledWith( + expect.objectContaining({ + openAIApiKey: 'sk-live-test-key', + disabledPlugins: ['swarm'], // Disabled plugins list + additionalPlugins: undefined, // Empty array becomes undefined + }) ); }); }); diff --git a/src/renderer/constants/swarm.ts b/src/renderer/constants/swarm.ts new file mode 100644 index 0000000..de5f7cc --- /dev/null +++ b/src/renderer/constants/swarm.ts @@ -0,0 +1 @@ +export const DEFAULT_SWARM_GATEWAY_URL = "https://api.gateway.ethswarm.org"; diff --git a/src/renderer/pages/PluginsPage.tsx b/src/renderer/pages/PluginsPage.tsx index b8e9bf8..263f33f 100644 --- a/src/renderer/pages/PluginsPage.tsx +++ b/src/renderer/pages/PluginsPage.tsx @@ -21,7 +21,7 @@ const PluginsPage: React.FC = () => { } = usePluginStore() useEffect(() => { - loadInstalledPlugins().catch(() => {}) + loadInstalledPlugins().catch(() => { }) }, [loadInstalledPlugins]) const orderedPlugins = useMemo(() => { diff --git a/src/renderer/pages/SettingsPage.tsx b/src/renderer/pages/SettingsPage.tsx index 80bb02f..897cbbc 100644 --- a/src/renderer/pages/SettingsPage.tsx +++ b/src/renderer/pages/SettingsPage.tsx @@ -23,10 +23,11 @@ import { } from '../components/ui/tabs'; import Typography from '../components/ui/Typography'; import { cn } from '../lib/utils'; +import { SwarmSettings } from './settings/SwarmSettings'; -interface SettingsPageProps {} +interface SettingsPageProps { } -type TabKey = 'hedera' | 'wallet' | 'llm' | 'advanced'; +type TabKey = 'hedera' | 'wallet' | 'swarm' | 'llm' | 'advanced'; interface Tab { key: TabKey; @@ -38,6 +39,7 @@ interface Tab { const tabs: Tab[] = [ { key: 'hedera', label: 'Hedera', icon: FiServer, component: HederaSettings }, { key: 'wallet', label: 'Wallet', icon: FiServer, component: WalletSettings }, + { key: 'swarm', label: 'Swarm', icon: FiServer, component: SwarmSettings }, { key: 'llm', label: 'AI Models', icon: FiCpu, component: LLMSettings }, { key: 'advanced', @@ -94,7 +96,7 @@ const SettingsPage: React.FC = () => { const changed = JSON.stringify(state.config) !== JSON.stringify(prevState.config); if (changed) { - try { console.debug('[SettingsPage] config changed; scheduling save debounce'); } catch {} + try { console.debug('[SettingsPage] config changed; scheduling save debounce'); } catch { } setHasChanges(true); if (saveTimeout) { @@ -113,10 +115,10 @@ const SettingsPage: React.FC = () => { if (shouldAutoSave) { const timeout = setTimeout(async () => { try { - try { console.debug('[SettingsPage] auto-saving config'); } catch {} + try { console.debug('[SettingsPage] auto-saving config'); } catch { } await saveConfig(); setHasChanges(false); - } catch (error) {} + } catch (error) { } }, 2000); setSaveTimeout(timeout); } @@ -139,7 +141,6 @@ const SettingsPage: React.FC = () => { await saveConfig(); setHasChanges(false); setConfigNeverSaved(false); - const newConfig = localStorage.getItem('app-config'); if (oldConfig && newConfig) { const oldParsed = JSON.parse(oldConfig); @@ -156,7 +157,7 @@ const SettingsPage: React.FC = () => { }, 500); } } - } catch (error) {} + } catch (error) { } }; const handleCancel = async () => { @@ -239,7 +240,7 @@ const SettingsPage: React.FC = () => { onValueChange={(value) => setActiveTab(value as TabKey)} >
- + {tabs.map((tab) => { const Icon = tab.icon; return ( @@ -290,6 +291,16 @@ const SettingsPage: React.FC = () => { + + + + + + = () => { - const { config, setTheme, setAutoStart, setLogLevel, setWebBrowserPluginEnabled } = useConfigStore() + const { + config, + setTheme, + setAutoStart, + setLogLevel, + setWebBrowserPluginEnabled, + setSwarmPluginEnabled, + } = useConfigStore() const { reset: resetLegal, legalAcceptance } = useLegalStore() const [showResetConfirm, setShowResetConfirm] = useState(false) @@ -29,7 +36,8 @@ export const AdvancedSettings: React.FC = () => { theme: config?.advanced?.theme || 'light', autoStart: config?.advanced?.autoStart || false, logLevel: config?.advanced?.logLevel || 'info', - webBrowserPluginEnabled: config?.advanced?.webBrowserPluginEnabled ?? true + webBrowserPluginEnabled: config?.advanced?.webBrowserPluginEnabled ?? true, + swarmPluginEnabled: config?.advanced?.swarmPluginEnabled ?? true } }) @@ -39,7 +47,8 @@ export const AdvancedSettings: React.FC = () => { theme: config.advanced.theme || 'light', autoStart: config.advanced.autoStart || false, logLevel: config.advanced.logLevel || 'info', - webBrowserPluginEnabled: config.advanced.webBrowserPluginEnabled ?? true + webBrowserPluginEnabled: config.advanced.webBrowserPluginEnabled ?? true, + swarmPluginEnabled: config.advanced.swarmPluginEnabled ?? true }) } }, [config, reset]) @@ -48,6 +57,7 @@ export const AdvancedSettings: React.FC = () => { const watchAutoStart = watch('autoStart') const watchLogLevel = watch('logLevel') const watchWebBrowserPluginEnabled = watch('webBrowserPluginEnabled') + const watchSwarmPluginEnabled = watch('swarmPluginEnabled') useEffect(() => { const next = watchTheme || 'light' @@ -81,6 +91,14 @@ export const AdvancedSettings: React.FC = () => { } }, [watchWebBrowserPluginEnabled, setWebBrowserPluginEnabled, config?.advanced?.webBrowserPluginEnabled]) + useEffect(() => { + const next = watchSwarmPluginEnabled ?? true + const current = config?.advanced?.swarmPluginEnabled ?? true + if (current !== next) { + setSwarmPluginEnabled(next) + } + }, [watchSwarmPluginEnabled, setSwarmPluginEnabled, config?.advanced?.swarmPluginEnabled]) + return (
@@ -135,7 +153,7 @@ export const AdvancedSettings: React.FC = () => { Automatically launch the application when your computer starts
- { @@ -195,6 +213,27 @@ export const AdvancedSettings: React.FC = () => {
+
+
+
+ + + Swarm operations: tools for interacting with the Swarm decentralized storage. + +
+ { + setValue('swarmPluginEnabled', checked, { + shouldDirty: true, + shouldTouch: true + }) + }} + /> +
+
+
diff --git a/src/renderer/pages/settings/SwarmSettings.tsx b/src/renderer/pages/settings/SwarmSettings.tsx new file mode 100644 index 0000000..352a8c4 --- /dev/null +++ b/src/renderer/pages/settings/SwarmSettings.tsx @@ -0,0 +1,198 @@ +import React, { useState, useEffect } from 'react' +import { useForm } from 'react-hook-form' +import { zodResolver } from '@hookform/resolvers/zod' +import { DEFAULT_SWARM_GATEWAY_URL } from '../../constants/swarm' +import { useConfigStore } from '../../stores/configStore' +import { swarmConfigSchema } from '../../schemas/configuration' +import { Input } from '../../components/ui' +import { Switch } from '../../components/ui/switch' +import Typography from '../../components/ui/Typography' + +interface SwarmSettingsProps { } + +export const SwarmSettings: React.FC = () => { + const { + config, + setSwarmBeeApiUrl, + setSwarmBeeFeedPK, + setSwarmAutoAssignStamp, + setSwarmDeferredUploadSizeThresholdMB, + isSwarmConfigValid + } = useConfigStore() + + const isSwarmEnabled = config?.advanced.swarmPluginEnabled ?? true + + const { + register, + handleSubmit, + formState: { errors }, + watch, + reset + } = useForm({ + resolver: zodResolver(swarmConfigSchema), + defaultValues: { + beeApiUrl: config?.swarm?.beeApiUrl ?? DEFAULT_SWARM_GATEWAY_URL, + beeFeedPK: config?.swarm?.beeFeedPK ?? '', + autoAssignStamp: config?.swarm?.autoAssignStamp ?? true, + deferredUploadSizeThresholdMB: config?.swarm?.deferredUploadSizeThresholdMB ?? 5 + } + }) + + useEffect(() => { + if (config?.swarm) { + reset({ + beeApiUrl: config.swarm.beeApiUrl ?? DEFAULT_SWARM_GATEWAY_URL, + beeFeedPK: config.swarm.beeFeedPK ?? '', + autoAssignStamp: config.swarm.autoAssignStamp ?? true, + deferredUploadSizeThresholdMB: config.swarm.deferredUploadSizeThresholdMB ?? 5 + }); + } + }, [config, reset]) + + const watchBeeApiUrl = watch('beeApiUrl') + const watchBeeFeedPK = watch('beeFeedPK') + const watchAutoAssignStamp = watch('autoAssignStamp') + const watchDeferredUploadSizeThresholdMB = watch('deferredUploadSizeThresholdMB') + + useEffect(() => { + const next = watchBeeApiUrl || '' + if (config?.swarm?.beeApiUrl !== next) { + setSwarmBeeApiUrl(next) + } + }, [watchBeeApiUrl, setSwarmBeeApiUrl, config?.swarm?.beeApiUrl]) + + useEffect(() => { + const next = watchBeeFeedPK || '' + if (config?.swarm?.beeFeedPK !== next) { + setSwarmBeeFeedPK(next) + } + }, [watchBeeFeedPK, setSwarmBeeFeedPK, config?.swarm?.beeFeedPK]) + + useEffect(() => { + const next = !!watchAutoAssignStamp + if (config?.swarm?.autoAssignStamp !== next) { + setSwarmAutoAssignStamp(next) + } + }, [watchAutoAssignStamp, setSwarmAutoAssignStamp, config?.swarm?.autoAssignStamp]) + + useEffect(() => { + const next = Number(watchDeferredUploadSizeThresholdMB) || 0 + if (config?.swarm?.deferredUploadSizeThresholdMB !== next) { + setSwarmDeferredUploadSizeThresholdMB(next) + } + }, [watchDeferredUploadSizeThresholdMB, setSwarmDeferredUploadSizeThresholdMB, config?.swarm?.deferredUploadSizeThresholdMB]) + + return ( +
+
+ Swarm Configuration +
+ + Configure the Swarm plugin to access the decentralized storage infrastructure of Swarm. + +
+
+ + {!isSwarmEnabled && ( +
+ + Swarm plugin is currently disabled + +
+ + To use Swarm features, please enable the plugin in the Advanced settings section. + +
+
+ )} + + {isSwarmEnabled && ( +
+
+ + Bee API URL + + + {errors.beeApiUrl && ( +
+ {errors.beeApiUrl.message} +
+ )} +
+ +
+ + Feed Private Key + + + {errors.beeFeedPK && ( +
+ {errors.beeFeedPK.message} +
+ )} +
+ + Your private key is encrypted and stored securely using the system keychain. + +
+
+ +
+
+ + Auto-assign postage stamp batch + + + Automatically select a usable postage stamp batch for uploads when available. + +
+ + reset({ ...watch(), autoAssignStamp: value }) + } + /> +
+ +
+ + Deferred upload size threshold (MB) + + + {errors.deferredUploadSizeThresholdMB && ( +
+ + {errors.deferredUploadSizeThresholdMB.message} + +
+ )} +
+ + Files larger than this size will be uploaded in the background. + +
+
+
+ )} +
+ ) +} diff --git a/src/renderer/schemas/configuration.ts b/src/renderer/schemas/configuration.ts index f91e90b..157d8ef 100644 --- a/src/renderer/schemas/configuration.ts +++ b/src/renderer/schemas/configuration.ts @@ -12,6 +12,18 @@ export const hederaConfigSchema = z.object({ network: z.enum(['mainnet', 'testnet']) }) +export const swarmConfigSchema = z.object({ + beeApiUrl: z + .string() + .min(1, 'Bee node or Gateway API URL is required'), + beeFeedPK: z + .string() + .min(1, 'Private key is required') + .length(64, 'Invalid private key format'), + autoAssignStamp: z.boolean().default(true), + deferredUploadSizeThresholdMB: z.coerce.number().min(0).default(5), +}) + export const openAIConfigSchema = z.object({ apiKey: z .string() @@ -32,11 +44,13 @@ export const advancedConfigSchema = z.object({ theme: z.enum(['light', 'dark']), autoStart: z.boolean(), logLevel: z.enum(['debug', 'info', 'warn', 'error']), - webBrowserPluginEnabled: z.boolean().optional().default(true) + webBrowserPluginEnabled: z.boolean().optional().default(true), + swarmPluginEnabled: z.boolean().optional().default(true) }) export const appConfigSchema = z.object({ hedera: hederaConfigSchema, + swarm: swarmConfigSchema, openai: openAIConfigSchema, anthropic: anthropicConfigSchema, advanced: advancedConfigSchema, @@ -44,5 +58,7 @@ export const appConfigSchema = z.object({ }) export type HederaConfigForm = z.infer -export type AdvancedConfigForm = z.infer +export type SwarmConfigForm = z.infer +export type AdvancedConfigForm = z.input export type AppConfigForm = z.infer + diff --git a/src/renderer/stores/agentStore.ts b/src/renderer/stores/agentStore.ts index a232a43..593025a 100644 --- a/src/renderer/stores/agentStore.ts +++ b/src/renderer/stores/agentStore.ts @@ -5,6 +5,11 @@ import { Logger, HCSMessage, } from '@hashgraphonline/standards-sdk'; +import { + SwarmPlugin, + SwarmConfig, + BasePlugin, +} from '@hashgraphonline/conversational-agent'; import { useNotificationStore } from './notificationStore'; import { useWalletStore } from './walletStore'; import { BrowserHCSClient } from '@hashgraphonline/standards-sdk'; @@ -1079,6 +1084,12 @@ export const useAgentStore = create((set, get) => { disabledPlugins.push('web-browser'); } + const swarmPluginEnabled = + rawConfig.advanced?.swarmPluginEnabled ?? true; + if (!swarmPluginEnabled) { + disabledPlugins.push('swarm'); + } + const initTimeout = 90000; if (walletConnected) { try { @@ -1097,6 +1108,19 @@ export const useAgentStore = create((set, get) => { } catch {} } + const additionalPluginConfigs = []; + if (swarmPluginEnabled && rawConfig.swarm) { + additionalPluginConfigs.push({ + pluginType: 'swarm', + config: { + beeApiUrl: rawConfig.swarm.beeApiUrl, + beeFeedPK: rawConfig.swarm.beeFeedPK, + autoAssignStamp: rawConfig.swarm.autoAssignStamp, + deferredUploadSizeThresholdMB: rawConfig.swarm.deferredUploadSizeThresholdMB, + } + }); + } + const initPromise = window?.desktop?.initializeAgent({ accountId, privateKey: walletConnected ? '' : privateKey, @@ -1109,6 +1133,7 @@ export const useAgentStore = create((set, get) => { ? walletState.accountId ?? accountId : accountId, disabledPlugins: disabledPlugins.length ? disabledPlugins : undefined, + additionalPlugins: additionalPluginConfigs.length ? additionalPluginConfigs : undefined, }); const timeoutPromise = new Promise((_, reject) => { @@ -2356,4 +2381,4 @@ function normalizeMetadata(raw: unknown): Message['metadata'] { } return undefined; -} +} \ No newline at end of file diff --git a/src/renderer/stores/configStore.ts b/src/renderer/stores/configStore.ts index dfc3269..a46959c 100644 --- a/src/renderer/stores/configStore.ts +++ b/src/renderer/stores/configStore.ts @@ -1,5 +1,6 @@ import { create } from 'zustand'; import { configService } from '../services/configService'; +import { DEFAULT_SWARM_GATEWAY_URL } from '../constants/swarm'; /** * Helper to wait for desktop bridge to be available @@ -41,12 +42,20 @@ export interface AnthropicConfig { model: string; } +export interface SwarmConfig { + beeApiUrl: string; + beeFeedPK: string; + autoAssignStamp: boolean; + deferredUploadSizeThresholdMB: number; +} + export interface AdvancedConfig { theme: 'light' | 'dark'; autoStart: boolean; logLevel: 'debug' | 'info' | 'warn' | 'error'; operationalMode?: 'autonomous' | 'provideBytes' | 'returnBytes'; webBrowserPluginEnabled?: boolean; + swarmPluginEnabled?: boolean; } export interface LegalAcceptanceConfig { @@ -63,6 +72,7 @@ interface WalletConnectionState { export interface AppConfig { hedera: HederaConfig; + swarm: SwarmConfig; openai: OpenAIConfig; anthropic: AnthropicConfig; advanced: AdvancedConfig; @@ -84,6 +94,13 @@ export interface ConfigStore { setHederaPrivateKey: (privateKey: string) => void; setHederaNetwork: (network: 'mainnet' | 'testnet') => void; + setSwarmBeeApiUrl: (beeApiUrl: string) => void; + setSwarmBeeFeedPK: (beeFeedPK: string) => void; + setSwarmAutoAssignStamp: (autoAssignStamp: boolean) => void; + setSwarmDeferredUploadSizeThresholdMB: ( + deferredUploadSizeThresholdMB: number + ) => void; + setOpenAIApiKey: (apiKey: string) => void; setOpenAIModel: (model: string) => void; @@ -96,6 +113,7 @@ export interface ConfigStore { setAutoStart: (autoStart: boolean) => void; setLogLevel: (logLevel: 'debug' | 'info' | 'warn' | 'error') => void; setWebBrowserPluginEnabled: (enabled: boolean) => void; + setSwarmPluginEnabled: (enabled: boolean) => void; setOperationalMode: ( mode: 'autonomous' | 'provideBytes' | 'returnBytes' ) => void; @@ -112,6 +130,7 @@ export interface ConfigStore { testAnthropicConnection: () => Promise<{ success: boolean; error?: string }>; isHederaConfigValid: () => boolean; + isSwarmConfigValid: () => boolean; isOpenAIConfigValid: () => boolean; isAnthropicConfigValid: () => boolean; isLLMConfigValid: () => boolean; @@ -125,6 +144,12 @@ const defaultConfig: AppConfig = { privateKey: '', network: 'testnet', }, + swarm: { + beeApiUrl: DEFAULT_SWARM_GATEWAY_URL, + beeFeedPK: '', + autoAssignStamp: true, + deferredUploadSizeThresholdMB: 5, + }, openai: { apiKey: '', model: 'gpt-5', @@ -139,6 +164,7 @@ const defaultConfig: AppConfig = { logLevel: 'info', operationalMode: 'provideBytes', webBrowserPluginEnabled: true, + swarmPluginEnabled: true }, llmProvider: 'openai', autonomousMode: false, @@ -152,6 +178,7 @@ const defaultConfig: AppConfig = { const cloneConfig = (config: AppConfig): AppConfig => ({ ...config, hedera: { ...config.hedera }, + swarm: { ...config.swarm }, openai: { ...config.openai }, anthropic: { ...config.anthropic }, advanced: { ...config.advanced }, @@ -224,6 +251,46 @@ export const useConfigStore = create((set, get) => ({ : null, })), + setSwarmBeeApiUrl: (beeApiUrl) => + set((state) => ({ + config: state.config + ? { + ...state.config, + swarm: { ...state.config.swarm, beeApiUrl }, + } + : null, + })), + + setSwarmBeeFeedPK: (beeFeedPK) => + set((state) => ({ + config: state.config + ? { + ...state.config, + swarm: { ...state.config.swarm, beeFeedPK }, + } + : null, + })), + + setSwarmAutoAssignStamp: (autoAssignStamp) => + set((state) => ({ + config: state.config + ? { + ...state.config, + swarm: { ...state.config.swarm, autoAssignStamp }, + } + : null, + })), + + setSwarmDeferredUploadSizeThresholdMB: (deferredUploadSizeThresholdMB) => + set((state) => ({ + config: state.config + ? { + ...state.config, + swarm: { ...state.config.swarm, deferredUploadSizeThresholdMB }, + } + : null, + })), + setOpenAIApiKey: (apiKey) => { try { console.debug('[ConfigStore] setOpenAIApiKey()', { @@ -378,6 +445,25 @@ export const useConfigStore = create((set, get) => ({ } }, + setSwarmPluginEnabled: (enabled) => { + set((state) => ({ + config: state.config + ? { + ...state.config, + advanced: { + ...state.config.advanced, + swarmPluginEnabled: enabled, + }, + } + : null, + })); + + const state = get(); + if (state.config && state.hasLoadedInitialConfig) { + persistConfig(cloneConfig(state.config)); + } + }, + setOperationalMode: (mode) => set((state) => ({ config: state.config @@ -540,9 +626,7 @@ export const useConfigStore = create((set, get) => ({ } const effectiveMode: 'autonomous' | 'provideBytes' | 'returnBytes' = - normalizedMode === 'returnBytes' - ? 'provideBytes' - : normalizedMode; + normalizedMode === 'returnBytes' ? 'provideBytes' : normalizedMode; finalConfig = { ...defaultConfig, @@ -563,6 +647,12 @@ export const useConfigStore = create((set, get) => ({ ...finalConfig.hedera, }; } + if (envConfig.swarm) { + finalConfig.swarm = { + ...envConfig.swarm, + ...finalConfig.swarm, + }; + } if (envConfig.openai) { finalConfig.openai = { ...envConfig.openai, @@ -585,6 +675,7 @@ export const useConfigStore = create((set, get) => ({ isLoading: false, hasLoadedInitialConfig: true, }); + localStorage.setItem('app-config', JSON.stringify(finalConfig)); try { @@ -722,6 +813,15 @@ export const useConfigStore = create((set, get) => ({ return false; }, + isSwarmConfigValid: () => { + const { config } = get(); + if (!config || !config.swarm) { + return false; + } + + return true; + }, + isOpenAIConfigValid: () => { const { config } = get(); if (!config || !config.openai) { @@ -775,3 +875,4 @@ function isValidAccountId(accountId: string): boolean { function isValidPrivateKey(privateKey: string): boolean { return !!privateKey && privateKey.length > 0; } + diff --git a/src/renderer/stores/pluginStore.ts b/src/renderer/stores/pluginStore.ts index 90c2ba0..6066fd6 100644 --- a/src/renderer/stores/pluginStore.ts +++ b/src/renderer/stores/pluginStore.ts @@ -32,7 +32,17 @@ export const builtinPluginDefinitions: ReadonlyArray = keywords: ['browser', 'assistant', 'context'], author: 'Hashgraph Online', homepage: 'https://hashgraph.online/' - } + }, + { + id: 'swarm', + name: 'Swarm Plugin', + version: '0.1.0', + description: + 'Swarm operations: tools for interacting with the Swarm decentralized storage.', + keywords: ['Swarm', 'storage'], + author: 'Solar Punk', + homepage: 'https://solarpunk.buzz/', + }, ] const buildBuiltinPluginConfig = ( @@ -72,7 +82,8 @@ const computeBuiltinPlugins = (enabledMap: Record): Record { const { config } = useConfigStore.getState() return { - 'web-browser': config?.advanced?.webBrowserPluginEnabled ?? true + 'web-browser': config?.advanced?.webBrowserPluginEnabled ?? true, + swarm: config?.advanced?.swarmPluginEnabled ?? true } } @@ -152,6 +163,27 @@ export const usePluginStore = create((set, get) => { }) } ) + + useConfigStore.subscribe( + state => state.config?.advanced?.swarmPluginEnabled ?? true, + (enabled) => { + set(current => { + const definition = builtinPluginDefinitions.find(def => def.id === 'swarm')! + const existing = current.plugins['swarm'] ?? buildBuiltinPluginConfig(definition, enabled) + return { + plugins: { + ...current.plugins, + 'swarm': { + ...existing, + status: enabled ? 'enabled' : 'disabled', + enabled, + updatedAt: new Date() + } + } + } + }) + } + ) } const initialPlugins = computeBuiltinPlugins(getBuiltinEnabledState()) @@ -246,6 +278,9 @@ export const usePluginStore = create((set, get) => { if (pluginId === 'web-browser') { const configStore = useConfigStore.getState() configStore.setWebBrowserPluginEnabled(true) + } else if (pluginId === 'swarm') { + const configStore = useConfigStore.getState() + configStore.setSwarmPluginEnabled(true) } if (result?.data) { @@ -275,6 +310,7 @@ export const usePluginStore = create((set, get) => { disablePlugin: async (pluginId: string) => { const plugin = get().plugins[pluginId] + if (!plugin || !plugin.enabled) { return } @@ -301,6 +337,9 @@ export const usePluginStore = create((set, get) => { if (pluginId === 'web-browser') { const configStore = useConfigStore.getState() configStore.setWebBrowserPluginEnabled(false) + } else if (pluginId === 'swarm') { + const configStore = useConfigStore.getState() + configStore.setSwarmPluginEnabled(false) } set(state => ({ diff --git a/src/renderer/tauri/desktop-bridge.ts b/src/renderer/tauri/desktop-bridge.ts index 84ca330..ba88d64 100644 --- a/src/renderer/tauri/desktop-bridge.ts +++ b/src/renderer/tauri/desktop-bridge.ts @@ -318,9 +318,9 @@ if (typeof window !== 'undefined') { uninstallPlugin: () => notImplemented('uninstallPlugin'), updatePlugin: () => notImplemented('updatePlugin'), enablePlugin: (pluginId: string) => - invoke('plugin_enable', { plugin_id: pluginId }), + invoke('plugin_enable', { pluginId }), disablePlugin: (pluginId: string) => - invoke('plugin_disable', { plugin_id: pluginId }), + invoke('plugin_disable', { pluginId }), configurePlugin: () => notImplemented('configurePlugin'), grantPluginPermissions: () => notImplemented('grantPluginPermissions'), revokePluginPermissions: () => notImplemented('revokePluginPermissions'), diff --git a/src/renderer/types/desktop-bridge.d.ts b/src/renderer/types/desktop-bridge.d.ts index ec1ee05..2f9d97a 100644 --- a/src/renderer/types/desktop-bridge.d.ts +++ b/src/renderer/types/desktop-bridge.d.ts @@ -10,6 +10,7 @@ import { PluginUpdateInfo, PluginRuntimeContext, } from '../../shared/types/plugin' +import { BasePlugin } from '@hashgraphonline/standards-agent-kit' type CommandResponse = { success: boolean @@ -29,6 +30,7 @@ interface AgentConfig { verbose?: boolean; disableLogging?: boolean; disabledPlugins?: string[]; + additionalPlugins?: Array<{ pluginType: string; config: Record}>; } interface ChatSession { @@ -122,6 +124,7 @@ declare global { getEnvironmentConfig: () => Promise<{ enableMainnet: boolean hedera?: { accountId?: string; privateKey?: string; network?: 'mainnet' | 'testnet' } + swarm?: { beeApiUrl?: string; beeFeedPK?: string; autoAssignStamp?: boolean; deferredUploadSizeThresholdMB?: number; } openai?: { apiKey?: string; model?: string } anthropic?: { apiKey?: string; model?: string } llmProvider?: 'openai' | 'anthropic'