From d4998311d9403229b92e526622ffd2a77848fe19 Mon Sep 17 00:00:00 2001 From: Soushi888 Date: Tue, 3 Nov 2026 20:17:57 -0500 Subject: [PATCH] feat(ui): run Nondominium as a Moss tool in weave dev mode Adds weave/ (dev config with two agents and one group, kept outside the root workspaces so CI never installs Electron), bun run tool-dev, @theweave/api in ui/, and ui/src/lib/moss/: host detection, the Moss connection mode and an empty AppletServices. The standalone connection modes are unchanged. Documents the Moss integration in documentation/specifications/moss-integration.md. --- CHANGELOG.md | 4 + bun.lock | 133 +++- documentation/DOCUMENTATION_INDEX.md | 1 + documentation/IMPLEMENTATION_STATUS.md | 12 + documentation/SUMMARY.md | 1 + .../specifications/lobby-architecture.md | 2 + .../specifications/moss-integration.md | 61 ++ .../specifications/ui_architecture.md | 3 + package.json | 3 + ui/package.json | 1 + ui/src/lib/moss/applet-services.spec.ts | 25 + ui/src/lib/moss/applet-services.ts | 9 + ui/src/lib/moss/connect.spec.ts | 69 ++ ui/src/lib/moss/connect.ts | 54 ++ ui/src/lib/moss/host.spec.ts | 53 ++ ui/src/lib/moss/host.ts | 53 ++ .../lib/services/holochain.service.svelte.ts | 18 +- ui/src/lib/utils/hc-connect.spec.ts | 61 ++ ui/src/lib/utils/hc-connect.ts | 18 +- ui/static/icon.png | Bin 0 -> 16159 bytes ui/static/weave.config.json | 3 + weave/.gitignore | 6 + weave/bun.lock | 680 ++++++++++++++++++ weave/package.json | 20 + weave/tsconfig.json | 12 + weave/weave.dev.config.ts | 60 ++ workdir/moss.yaml | 2 +- 27 files changed, 1355 insertions(+), 9 deletions(-) create mode 100644 documentation/specifications/moss-integration.md create mode 100644 ui/src/lib/moss/applet-services.spec.ts create mode 100644 ui/src/lib/moss/applet-services.ts create mode 100644 ui/src/lib/moss/connect.spec.ts create mode 100644 ui/src/lib/moss/connect.ts create mode 100644 ui/src/lib/moss/host.spec.ts create mode 100644 ui/src/lib/moss/host.ts create mode 100644 ui/src/lib/utils/hc-connect.spec.ts create mode 100644 ui/static/icon.png create mode 100644 ui/static/weave.config.json create mode 100644 weave/.gitignore create mode 100644 weave/bun.lock create mode 100644 weave/package.json create mode 100644 weave/tsconfig.json create mode 100644 weave/weave.dev.config.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index fbc5b6dc..eb36f1dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,10 @@ NDO over a live DHT. ### Added +- **Moss tool scaffold.** Nondominium runs as a Moss tool in `weave` dev mode: a dev config + with two agents and one group (`bun run tool-dev`), `@theweave/api` in the UI, and a + connection mode that takes the conductor client from Moss. The standalone build is + unchanged. See `documentation/specifications/moss-integration.md`. - **Lobby DNA** as the entry point. Groups are announced here for discovery, and NDOs are browsed and filtered across every group the agent belongs to. - **Group DNA, one cloned cell per group.** Each group is its own DHT with its own diff --git a/bun.lock b/bun.lock index 99255e74..fc549f5b 100644 --- a/bun.lock +++ b/bun.lock @@ -48,6 +48,7 @@ "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^3.0.0", "@nondominium/shared-types": "workspace:*", + "@theweave/api": "0.7.0-rc.3", "@valueflows/vf-graphql-holochain": "file:../vendor/valueflows-vf-graphql-holochain-0.700.0-rc.0.tgz", "effect": "4.0.0", "melt": "^0.44.0", @@ -85,6 +86,8 @@ }, }, "packages": { + "@alenaksu/json-viewer": ["@alenaksu/json-viewer@2.1.2", "", { "dependencies": { "lit": "^3.2.0" } }, "sha512-hyR5EUc0GZMTjlSULJZlMzEYB896ICbCf1+5YLQRSAczGRWy42UWac5PcXM4spuyTkrEHHlOZBTVEq34f9+JVQ=="], + "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], @@ -109,6 +112,8 @@ "@colors/colors": ["@colors/colors@1.6.0", "", {}, "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA=="], + "@ctrl/tinycolor": ["@ctrl/tinycolor@4.2.2", "", {}, "sha512-9rQHijqB2Rq6qOEC/xHaA6aPlsKGi5kmCQW50O1asn9g63XFeD5NmBwysriistW5Xx0JPafyD/TA7yk2S3pXGQ=="], + "@dabh/diagnostics": ["@dabh/diagnostics@2.0.3", "", { "dependencies": { "colorspace": "1.1.x", "enabled": "2.0.x", "kuler": "^2.0.0" } }, "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA=="], "@electron-internal/extract-zip": ["@electron-internal/extract-zip@1.0.5", "", {}, "sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA=="], @@ -211,6 +216,16 @@ "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], + "@holo-host/identicon": ["@holo-host/identicon@0.1.0", "", {}, "sha512-Dn5pTV/m3XaK1Zvq3liw/vQUt7goM7Y84x2zUyH8cb9CNMs4kPCNHs3kalbJZ/ymzFvwcdiLwwNW8AKk+WWN5A=="], + + "@holochain-open-dev/elements": ["@holochain-open-dev/elements@0.701.0", "", { "dependencies": { "@holo-host/identicon": "^0.1.0", "@holochain/client": "^0.21.1", "@lit/localize": "^0.12.2", "@mdi/js": "^7.4.47", "@shoelace-style/shoelace": "^2.20.1", "lit": "^3.0.2", "prosemirror-commands": "^1.5.2", "prosemirror-keymap": "^1.2.2", "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.31.3" } }, "sha512-7VmZg5zVSrxXhx0T71a8K4Q4ijtNvZPoJ3S1KWhRbSNWvwFjsUR4Oihod9dq0EZonE3o7qjxPrDwh0eiGXGRiA=="], + + "@holochain-open-dev/profiles": ["@holochain-open-dev/profiles@0.702.0", "", { "dependencies": { "@holochain-open-dev/elements": "^0.701.0", "@holochain-open-dev/stores": "^0.701.0", "@holochain-open-dev/utils": "^0.701.0", "@holochain/client": "^0.21.1", "@lit/context": "^1.0.1", "@lit/localize": "^0.12.0", "@mdi/js": "^7.1.96", "@shoelace-style/shoelace": "^2.11.0", "lit": "^3.0.2" } }, "sha512-jfqbJewEqMDcZ8pZ/1lULPxwqkFQ33P/MFJXxIhAdfONcJVRA2687AP6Z6pN4397ohvnDQ8T0cLRJx2XgtMErw=="], + + "@holochain-open-dev/stores": ["@holochain-open-dev/stores@0.701.0", "", { "dependencies": { "@alenaksu/json-viewer": "^2.1.2", "@holochain-open-dev/utils": "^0.701.0", "@holochain/client": "^0.21.1", "@scoped-elements/cytoscape": "^0.2.7", "@shoelace-style/shoelace": "^2.20.1", "lit": "^3.0.2", "lit-svelte-stores": "^0.3.3", "svelte": "^3.53.1" } }, "sha512-7xaKlegPwEXKhPaBwxakaCSJeO5JTgdVsCi4dJ9OlseLc6B1N+jHKgkm2mbJQUCUNEVYegFgInAHwosQCi/gIQ=="], + + "@holochain-open-dev/utils": ["@holochain-open-dev/utils@0.701.0", "", { "dependencies": { "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^3.1.3", "blakejs": "^1.2.1", "emittery": "^1.2.0", "lodash-es": "^4.17.21", "sort-keys": "^5.0.0" } }, "sha512-Zku/njCKimPd2G/ufZvtNLea8XqgG5EcrlCwrxJt37yQ5wNtc/8C0iCg+U8Cg+zBwQezF4LdT8qzgtNvQgYwhA=="], + "@holochain/client": ["@holochain/client@0.21.1", "", { "dependencies": { "@bitgo/blake2b": "^3.2.4", "@msgpack/msgpack": "^3.1.2", "emittery": "^1.2.0", "isomorphic-ws": "^5.0.0", "js-base64": "^3.7.8", "js-sha512": "^0.9.0", "libsodium-wrappers": "^0.8", "lodash-es": "^4.17.21", "ws": "^8.18.3" } }, "sha512-Y+x3vO5Rgl++SUS20ZzG7jsmO/yp1bfkR4fiKfHfjL/NUr5s7lBn/N+ZrZbAHZ+3jFU+gPKWzukMtLzHx9bbLg=="], "@holochain/hc-spin": ["@holochain/hc-spin@0.700.1", "", { "dependencies": { "@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/utils": "^4.0.0", "@holochain/client": "^0.21.1", "@holochain/hc-spin-rust-utils": "0.700.1", "@msgpack/msgpack": "^3.1.3", "bufferutil": "4.1.0", "commander": "15.0.0", "electron": "^42.5.0", "electron-context-menu": "4.1.2", "get-port": "7.2.0", "js-sha512": "^0.9.0", "nanoid": "5.1.15", "split": "1.0.1" }, "bin": { "hc-spin": "dist/cli.js" } }, "sha512-wIY+MZ44KkVHJTkeQ0IChyBVNUT/89rfsC0pDBwqVpUR2ipQOCj7cqTPcdIyjDa9r/ES+NfSC8jy0RjkEo3RDg=="], @@ -257,6 +272,18 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.29", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ=="], + "@lit-labs/ssr-dom-shim": ["@lit-labs/ssr-dom-shim@1.6.0", "", {}, "sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ=="], + + "@lit/context": ["@lit/context@1.1.6", "", { "dependencies": { "@lit/reactive-element": "^1.6.2 || ^2.1.0" } }, "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A=="], + + "@lit/localize": ["@lit/localize@0.12.2", "", { "dependencies": { "lit": "^3.2.0" } }, "sha512-Qv9kvgJKDq/JVSwXOxuWvQnnOBysHA99ti9im9a4fImCmx+fto+XXcUYQbjZHqiueEEc4V20PcRDPO+1g/6seQ=="], + + "@lit/react": ["@lit/react@1.0.8", "", { "peerDependencies": { "@types/react": "17 || 18 || 19" } }, "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw=="], + + "@lit/reactive-element": ["@lit/reactive-element@2.1.2", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.5.0" } }, "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A=="], + + "@mdi/js": ["@mdi/js@7.4.47", "", {}, "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ=="], + "@msgpack/msgpack": ["@msgpack/msgpack@2.8.0", "", {}, "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="], "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ=="], @@ -269,6 +296,10 @@ "@nondominium/shared-types": ["@nondominium/shared-types@workspace:packages/shared-types"], + "@open-wc/dedupe-mixin": ["@open-wc/dedupe-mixin@1.4.0", "", {}, "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA=="], + + "@open-wc/scoped-elements": ["@open-wc/scoped-elements@2.2.4", "", { "dependencies": { "@lit/reactive-element": "^1.0.0 || ^2.0.0", "@open-wc/dedupe-mixin": "^1.4.0" } }, "sha512-12X4F4QGPWcvPbxAiJ4v8wQFCOu+laZHRGfTrkoj+3JzACCtuxHG49YbuqVzQ135QPKCuhP9wA0kpGGEfUegyg=="], + "@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.124.0", "", { "os": "android", "cpu": "arm" }, "sha512-+R9zCafSL8ovjokdPtorUp3sXrh8zQ2AC2L0ivXNvlLR0WS+5WdPkNVrnENq5UvzagM4Xgl0NPsJKz3Hv9+y8g=="], "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.124.0", "", { "os": "android", "cpu": "arm64" }, "sha512-ULHC/gVZ+nP4pd3kNNQTYaQ/e066BW/KuY5qUsvwkVWwOUQGDg+WpfyVOmQ4xfxoue6cMlkKkJ+ntdzfDXpNlg=="], @@ -359,6 +390,14 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.45.1", "", { "os": "win32", "cpu": "x64" }, "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA=="], + "@scoped-elements/cytoscape": ["@scoped-elements/cytoscape@0.2.7", "", { "dependencies": { "@open-wc/scoped-elements": "^2.0.1", "@types/cytoscape": "^3.19.0", "cytoscape": "^3.20.0", "cytoscape-cola": "^2.5.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-dagre": "^2.3.2", "cytoscape-klay": "^3.1.4", "lit": "^2.0.2", "lodash-es": "^4.17.21" } }, "sha512-hvb33z021Jg01oTyWfsvOf6LK5SAqh8u8iJVCyeC4zCoro6CBfwNjbLCLgUMRtXnkVkQQkD979vAu8E+hCojJQ=="], + + "@shoelace-style/animations": ["@shoelace-style/animations@1.2.0", "", {}, "sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw=="], + + "@shoelace-style/localize": ["@shoelace-style/localize@3.2.3", "", {}, "sha512-pWoZywizMilenLfQcpE9bjaqi7WKiQXJB42cxvmSPwYS76U776wJ7B5QQ0P28yVit1vpHuFZzq1CtfVFv32jaQ=="], + + "@shoelace-style/shoelace": ["@shoelace-style/shoelace@2.20.1", "", { "dependencies": { "@ctrl/tinycolor": "^4.1.0", "@floating-ui/dom": "^1.6.12", "@lit/react": "^1.0.6", "@shoelace-style/animations": "^1.2.0", "@shoelace-style/localize": "^3.2.1", "composed-offset-position": "^0.0.6", "lit": "^3.2.1", "qr-creator": "^1.0.0" } }, "sha512-FSghU95jZPGbwr/mybVvk66qRZYpx5FkXL+vLNpy1Vp8UsdwSxXjIHE3fsvMbKWTKi9UFfewHTkc5e7jAqRYoQ=="], + "@sinclair/typebox": ["@sinclair/typebox@0.27.10", "", {}, "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA=="], "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], @@ -377,6 +416,8 @@ "@testing-library/user-event": ["@testing-library/user-event@14.6.1", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw=="], + "@theweave/api": ["@theweave/api@0.7.0-rc.3", "", { "dependencies": { "@holochain-open-dev/profiles": "^0.702.0", "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^2.8.0", "js-base64": "^3.7.2" } }, "sha512-yBt8SmTzjg0bdPRyJAoRRV42oshE8JqgoabxcUZlacFDZ1rSaoKZLDia64Knx9xEsNi5ToSxw9RExYaO6rDK3w=="], + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], @@ -385,6 +426,8 @@ "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], + "@types/cytoscape": ["@types/cytoscape@3.31.0", "", { "dependencies": { "cytoscape": "*" } }, "sha512-EXHOHxqQjGxLDEh5cP4te6J0bi7LbCzmZkzsR6f703igUac8UGMdEohMyU3GHAayCTZrLQOMnaE/lqB2Ekh8Ww=="], + "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], @@ -399,8 +442,12 @@ "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="], + "@types/react": ["@types/react@19.3.0", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg=="], + "@types/triple-beam": ["@types/triple-beam@1.3.5", "", {}, "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="], + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.41.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.41.0", "@typescript-eslint/type-utils": "8.41.0", "@typescript-eslint/utils": "8.41.0", "@typescript-eslint/visitor-keys": "8.41.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.41.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw=="], @@ -523,6 +570,8 @@ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "blakejs": ["blakejs@1.2.1", "", {}, "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ=="], + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -569,6 +618,8 @@ "commander": ["commander@15.0.0", "", {}, "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg=="], + "composed-offset-position": ["composed-offset-position@0.0.6", "", { "peerDependencies": { "@floating-ui/utils": "^0.2.5" } }, "sha512-Q7dLompI6lUwd7LWyIcP66r4WcS9u7AL2h8HaeipiRfCRPLMWqRx8fYsjb4OHi6UQFifO7XtNC2IlEJ1ozIFxw=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], "concurrently": ["concurrently@6.5.1", "", { "dependencies": { "chalk": "^4.1.0", "date-fns": "^2.16.1", "lodash": "^4.17.21", "rxjs": "^6.6.3", "spawn-command": "^0.0.2-1", "supports-color": "^8.1.0", "tree-kill": "^1.2.2", "yargs": "^16.2.0" }, "bin": { "concurrently": "bin/concurrently.js" } }, "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag=="], @@ -579,6 +630,8 @@ "cookie": ["cookie@0.6.0", "", {}, "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="], + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], + "cross-inspect": ["cross-inspect@1.0.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], @@ -587,6 +640,32 @@ "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "cytoscape": ["cytoscape@3.34.4", "", {}, "sha512-msY99tMY8iWTg+sIPGfSqDcPNOt4xcj+v/K/7qUFaCUxxlqnMkUYLBjRUzn9W5CU/R2hrmtJa5+UtovrEM2ctg=="], + + "cytoscape-cola": ["cytoscape-cola@2.5.1", "", { "dependencies": { "webcola": "^3.4.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-4/2S9bW1LvdsEPmxXN1OEAPFPbk7DvCx2c9d+TblkQAAvptGaSgtPWCByTEGgT8UxCxcVqes2aFPO5pzwo7R2w=="], + + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], + + "cytoscape-dagre": ["cytoscape-dagre@2.5.0", "", { "dependencies": { "dagre": "^0.8.5" }, "peerDependencies": { "cytoscape": "^3.2.22" } }, "sha512-VG2Knemmshop4kh5fpLO27rYcyUaaDkRw+6PiX4bstpB+QFt0p2oauMrsjVbUamGWQ6YNavh7x2em2uZlzV44g=="], + + "cytoscape-klay": ["cytoscape-klay@3.1.4", "", { "dependencies": { "klayjs": "^0.4.1" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-VwPj0VR25GPfy6qXVQRi/MYlZM/zkdvRhHlgqbM//lSvstgM6fhp3ik/uM8Wr8nlhskfqz/M1fIDmR6UckbS2A=="], + + "d3-dispatch": ["d3-dispatch@1.0.6", "", {}, "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="], + + "d3-drag": ["d3-drag@1.2.5", "", { "dependencies": { "d3-dispatch": "1", "d3-selection": "1" } }, "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w=="], + + "d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], + + "d3-selection": ["d3-selection@1.4.2", "", {}, "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg=="], + + "d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + + "d3-timer": ["d3-timer@1.0.10", "", {}, "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="], + + "dagre": ["dagre@0.8.5", "", { "dependencies": { "graphlib": "^2.1.8", "lodash": "^4.17.15" } }, "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw=="], + "date-fns": ["date-fns@2.30.0", "", { "dependencies": { "@babel/runtime": "^7.21.0" } }, "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw=="], "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], @@ -737,6 +816,8 @@ "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], + "graphlib": ["graphlib@2.1.8", "", { "dependencies": { "lodash": "^4.17.15" } }, "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A=="], + "graphql": ["graphql@15.8.0", "", {}, "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw=="], "graphql-tag": ["graphql-tag@2.12.6", "", { "dependencies": { "tslib": "^2.1.0" }, "peerDependencies": { "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg=="], @@ -825,12 +906,16 @@ "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], + "klayjs": ["klayjs@0.4.1", "", {}, "sha512-WUNxuO7O79TEkxCj6OIaK5TJBkaWaR/IKNTakgV9PwDn+mrr63MLHed34AcE2yTaDntgO6l0zGFIzhcoTeroTA=="], + "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], "known-css-properties": ["known-css-properties@0.37.0", "", {}, "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ=="], "kuler": ["kuler@2.0.0", "", {}, "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="], + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], "libsodium": ["libsodium@0.8.4", "", {}, "sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw=="], @@ -863,6 +948,14 @@ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + "lit": ["lit@3.3.3", "", { "dependencies": { "@lit/reactive-element": "^2.1.0", "lit-element": "^4.2.0", "lit-html": "^3.3.0" } }, "sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw=="], + + "lit-element": ["lit-element@4.2.2", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.5.0", "@lit/reactive-element": "^2.1.0", "lit-html": "^3.3.0" } }, "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w=="], + + "lit-html": ["lit-html@3.3.3", "", { "dependencies": { "@types/trusted-types": "^2.0.2" } }, "sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA=="], + + "lit-svelte-stores": ["lit-svelte-stores@0.3.3", "", { "dependencies": { "lit": "^3.0.0", "lodash-es": "^4.17.21", "svelte": "^3.38.3" } }, "sha512-jtaHfgSlDuiwzmKHr6iF9uW6wV/CMRkj6QRCOnKrtRdb+uAUIiqhhNhBV2JXDO0OpCcTpqkM8kOEnotlLAYEAQ=="], + "locate-character": ["locate-character@3.0.0", "", {}, "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="], "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], @@ -941,6 +1034,8 @@ "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], + "oxc-parser": ["oxc-parser@0.124.0", "", { "dependencies": { "@oxc-project/types": "^0.124.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.124.0", "@oxc-parser/binding-android-arm64": "0.124.0", "@oxc-parser/binding-darwin-arm64": "0.124.0", "@oxc-parser/binding-darwin-x64": "0.124.0", "@oxc-parser/binding-freebsd-x64": "0.124.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.124.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.124.0", "@oxc-parser/binding-linux-arm64-gnu": "0.124.0", "@oxc-parser/binding-linux-arm64-musl": "0.124.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.124.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.124.0", "@oxc-parser/binding-linux-riscv64-musl": "0.124.0", "@oxc-parser/binding-linux-s390x-gnu": "0.124.0", "@oxc-parser/binding-linux-x64-gnu": "0.124.0", "@oxc-parser/binding-linux-x64-musl": "0.124.0", "@oxc-parser/binding-openharmony-arm64": "0.124.0", "@oxc-parser/binding-wasm32-wasi": "0.124.0", "@oxc-parser/binding-win32-arm64-msvc": "0.124.0", "@oxc-parser/binding-win32-ia32-msvc": "0.124.0", "@oxc-parser/binding-win32-x64-msvc": "0.124.0" } }, "sha512-h07SFj/tp2U3cf3+LFX6MmOguQiM9ahwpGs0ZK5CGhgL8p4kk24etrJKsEzhXAvo7mfvoKTZooZ5MLKAPRmJ1g=="], "oxc-walker": ["oxc-walker@0.7.0", "", { "dependencies": { "magic-regexp": "^0.10.0" }, "peerDependencies": { "oxc-parser": ">=0.98.0" } }, "sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A=="], @@ -1001,10 +1096,24 @@ "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], + "prosemirror-commands": ["prosemirror-commands@1.7.2", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="], + + "prosemirror-model": ["prosemirror-model@1.25.12", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-Ue2gTmXMa7EhpLNhC7J+h4+ykD8ha12K6rrZFFKKJHBForfIStw5gJ6Zrf1mqqAa9NmpmEB4wp9bKmA4eUVjWg=="], + + "prosemirror-state": ["prosemirror-state@1.4.4", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw=="], + + "prosemirror-transform": ["prosemirror-transform@1.12.4", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-2/WuPum3pn+O/Vi2vzpi8210ICUe2kIPXdLYjQ09Pv5DtT5bcKWMJhAKPBwvpPjpp5iOYUVwVEr0gOM1BY1Mgw=="], + + "prosemirror-view": ["prosemirror-view@1.42.9", "", { "dependencies": { "prosemirror-model": "^1.25.12", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-bKbfzeKZOu2H2JQU2TaJmYu6EBcor3VnGIR4jR31cbEt1ztUnfUB6bKGV1+fJzOJdrVWR+tRU0208zM3oQx4wA=="], + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "pupa": ["pupa@3.3.0", "", { "dependencies": { "escape-goat": "^4.0.0" } }, "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA=="], + "qr-creator": ["qr-creator@1.0.0", "", {}, "sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ=="], + "quansync": ["quansync@1.0.0", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="], "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], @@ -1067,7 +1176,7 @@ "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="], - "sort-keys": ["sort-keys@1.1.2", "", { "dependencies": { "is-plain-obj": "^1.0.0" } }, "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg=="], + "sort-keys": ["sort-keys@5.1.0", "", { "dependencies": { "is-plain-obj": "^4.0.0" } }, "sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ=="], "sort-keys-length": ["sort-keys-length@1.0.1", "", { "dependencies": { "sort-keys": "^1.0.0" } }, "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw=="], @@ -1203,6 +1312,10 @@ "vitest-browser-svelte": ["vitest-browser-svelte@0.1.0", "", { "peerDependencies": { "@vitest/browser": "^2.1.0 || ^3.0.0-0", "svelte": ">3.0.0", "vitest": "^2.1.0 || ^3.0.0-0" } }, "sha512-YB6ZUZZQNqU1T9NzvTEDpwpPv35Ng1NZMPBh81zDrLEdOgROGE6nJb79NWb1Eu/a8VkHifqArpOZfJfALge6xQ=="], + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + + "webcola": ["webcola@3.4.0", "", { "dependencies": { "d3-dispatch": "^1.0.3", "d3-drag": "^1.0.4", "d3-shape": "^1.3.5", "d3-timer": "^1.0.5" } }, "sha512-4BiLXjXw3SJHo3Xd+rF+7fyClT6n7I+AR6TkBqyQ4kTsePSAMDLRCXY1f3B/kXJeP9tYn4G1TblxTO+jAt0gaw=="], + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -1259,6 +1372,10 @@ "@graphql-tools/utils/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@holochain-open-dev/stores/svelte": ["svelte@3.59.2", "", {}, "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA=="], + + "@holochain-open-dev/utils/@msgpack/msgpack": ["@msgpack/msgpack@3.1.3", "", {}, "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA=="], + "@holochain/client/@msgpack/msgpack": ["@msgpack/msgpack@3.1.3", "", {}, "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA=="], "@holochain/hc-spin/@msgpack/msgpack": ["@msgpack/msgpack@3.1.3", "", {}, "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA=="], @@ -1275,6 +1392,8 @@ "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + "@scoped-elements/cytoscape/lit": ["lit@2.8.0", "", { "dependencies": { "@lit/reactive-element": "^1.6.0", "lit-element": "^3.3.0", "lit-html": "^2.8.0" } }, "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA=="], + "@testing-library/dom/aria-query": ["aria-query@5.3.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A=="], "@tybys/wasm-util/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -1337,6 +1456,8 @@ "jest-matcher-utils/pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], + "lit-svelte-stores/svelte": ["svelte@3.59.2", "", {}, "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA=="], + "magic-regexp/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -1357,6 +1478,10 @@ "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="], + "sort-keys/is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + + "sort-keys-length/sort-keys": ["sort-keys@1.1.2", "", { "dependencies": { "is-plain-obj": "^1.0.0" } }, "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg=="], + "test-exclude/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "ui/@msgpack/msgpack": ["@msgpack/msgpack@3.1.3", "", {}, "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA=="], @@ -1389,6 +1514,12 @@ "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + "@scoped-elements/cytoscape/lit/@lit/reactive-element": ["@lit/reactive-element@1.6.3", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.0.0" } }, "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ=="], + + "@scoped-elements/cytoscape/lit/lit-element": ["lit-element@3.3.3", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", "lit-html": "^2.8.0" } }, "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA=="], + + "@scoped-elements/cytoscape/lit/lit-html": ["lit-html@2.8.0", "", { "dependencies": { "@types/trusted-types": "^2.0.2" } }, "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q=="], + "@types/ws/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], diff --git a/documentation/DOCUMENTATION_INDEX.md b/documentation/DOCUMENTATION_INDEX.md index 7f6dd85a..49b05281 100644 --- a/documentation/DOCUMENTATION_INDEX.md +++ b/documentation/DOCUMENTATION_INDEX.md @@ -149,6 +149,7 @@ nondominium implements a **Governance-as-Operator** architecture that separates | **[Private Participation Receipts](specifications/governance/private-participation-receipt.md)** | PPR system full specification | โœ… Complete | | **[Governance Model (Legacy)](specifications/governance/governance.md)** | Legacy governance model and decision-making processes | ๐Ÿ“ฆ Reference | | **[UI Architecture](specifications/ui_architecture.md)** | Frontend design patterns & component structure | โœ… Complete | +| **[Moss Integration](specifications/moss-integration.md)** | Running Nondominium as a Moss tool (v0.1.0 pilot): dev config, host seam, what Moss does to our roles | ๐Ÿ”„ In progress (#163 to #165) | | **[ValueFlows Action Usage](specifications/VfAction_Usage.md)** | ValueFlows implementation with governance examples | โœ… Complete | | **[Protocol Bridge Specifications](specifications/protocol-bridge-specifications.md)** | Bun Protocol Bridge architecture for platform integration (Tiki, Odoo) | โœ… Complete | | **[API Reference](API_REFERENCE.md)** | Complete function reference across all zomes | โœ… Complete | diff --git a/documentation/IMPLEMENTATION_STATUS.md b/documentation/IMPLEMENTATION_STATUS.md index 0245f330..969d2790 100644 --- a/documentation/IMPLEMENTATION_STATUS.md +++ b/documentation/IMPLEMENTATION_STATUS.md @@ -291,6 +291,18 @@ There is no `get_all_groups` extern in a Group cell; each cell represents one is --- +## Moss Tool ๐Ÿ”„ In progress (v0.1.0 pilot, #163 to #165) + +Nondominium runs as a Moss tool in `weave` dev mode. Standalone (Lobby, Group DNA, invite codes) is unchanged. + +- โœ… **Scaffold (#163).** `weave/weave.dev.config.ts` (two agents, one group, tool served from `localhost:8888`), `bun run tool-dev`, `@theweave/api` in `ui/`, host detection and the Moss connection mode in `ui/src/lib/moss/`, an empty `AppletServices`. The UI connects through the applet client Moss hands it. +- โŒ **Moss group context (#164).** Profiles from Moss, roles from `myAccountabilitiesPerGroup()`, the instance's `group` cell as the Nondominium group, NDO clones through the `WeaveClient`. Not yet implemented: inside Moss the Lobby and invite-code flows are not adapted. +- โŒ **NDOs as assets (#165).** WAL, `getAssetInfo`, `search`, asset view. + +See [moss-integration.md](specifications/moss-integration.md). + +--- + ## NDO Federation Extensions โœ… Implemented (PR #103) The governance zome includes three additional public entry families: diff --git a/documentation/SUMMARY.md b/documentation/SUMMARY.md index 0de91756..132a214f 100644 --- a/documentation/SUMMARY.md +++ b/documentation/SUMMARY.md @@ -43,6 +43,7 @@ - [NDO v1 Architecture Design](specifications/ndo-v1-architecture-design.md) - [Architecture Components](ARCHITECTURE_COMPONENTS.md) - [UI Architecture](specifications/ui_architecture.md) +- [Moss Integration](specifications/moss-integration.md) - [VfAction Usage](specifications/VfAction_Usage.md) - [Protocol Bridge Specifications](specifications/protocol-bridge-specifications.md) - [API Reference](API_REFERENCE.md) diff --git a/documentation/specifications/lobby-architecture.md b/documentation/specifications/lobby-architecture.md index d7496ae1..79f0b32c 100644 --- a/documentation/specifications/lobby-architecture.md +++ b/documentation/specifications/lobby-architecture.md @@ -802,6 +802,8 @@ NdoView.svelte > **Superseded in part (2026-11-03).** The feature map below assumes Moss replaces the Group DNA and the Lobby. The Group DNA now stays in both modes, and in Moss there is one Nondominium group per Moss group, the group cell of the tool instance, joined automatically. Read the group rows of the table through ADR-014 (`adr/ADR-014-work-contexts-in-group-dht.md`) and REQ-GROUP-19 to REQ-GROUP-23 in `../requirements/lobby-dna.md`. +> **Partly superseded (v0.1.0 Moss pilot).** [moss-integration.md](moss-integration.md) is authoritative. Differences from the table and the sketch below: there is no Nondominium Lobby Tool DHT in Moss (every tool instance in every Moss group is its own network, so the Lobby DNA's global seed does not survive as an inter-group lobby), the Moss group is the federation layer, the instance's provisioned `group` cell is the one Nondominium group of that Moss group, and `AppletServices` in `@theweave/api` `0.7.0-rc.3` has `search`, `getAssetInfo` and `creatables` only (opening an asset is a render view, not a method). The entry-point sketch below calls `get_all_ndo_descriptors` on `lobby`, which does not exist; NDOs come from the group cell's `NdoAnchor` entries. + When deployed inside Moss, Nondominium appears as **one Tool applet**. Moss handles: group invites, agent identity at the surface, and the app sidebar. Nondominium owns its internal complexity (Group DHTs, NDO DHTs, hard links, smart agreements). diff --git a/documentation/specifications/moss-integration.md b/documentation/specifications/moss-integration.md new file mode 100644 index 00000000..fd9e816f --- /dev/null +++ b/documentation/specifications/moss-integration.md @@ -0,0 +1,61 @@ +# Moss Integration + +**Status:** v0.1.0 pilot, in progress. The tool scaffold and dev config are implemented (#163). The Moss group context (#164) and NDOs as assets (#165) follow. Supersedes the "Moss Integration Contract" in [lobby-architecture.md](lobby-architecture.md) ยง9 where they differ. + +Moss is the Weave host (lightningrodlabs/moss). In the v0.1.0 pilot Nondominium runs as a **tool** inside Moss, started with the `weave` CLI in dev mode. The standalone build (Lobby DNA, Group DNA, invite codes) keeps compiling and running unchanged; the pilot ships Moss only. + +## Decisions + +- The pilot runs `@theweave/cli` in dev mode with a shared dev config and our own bootstrap and relay. Not the Moss app, not a curation list. +- Inside Moss the Moss group is the federation layer. There is one Nondominium group per Moss group: the tool instance's `group` cell. +- Each NDO is a clone cell of the `ndo` role. Profiles come from Moss, roles from `myAccountabilitiesPerGroup()`, NDOs are exposed as Moss assets. +- v0.1.0 ships no work context. + +## Running the tool in dev mode + +Moss is built on Holochain 0.7.1 only in its `0.16` release candidates. The pilot uses `@theweave/cli` `0.16.0-rc.5`, which downloads a patched Holochain `0.7.1-mdns.8` that cannot see stock Holochain peers. + +```bash +bun run build:happ # inside nix develop, produces workdir/nondominium.happ +bun run moss:install # installs weave/ (Electron and the weave CLI), once +bun run tool-dev # Vite on :8888 plus two Moss windows, Alice and Bob +bun run tool-dev-1 # the same with Alice only +``` + +`weave/` is a separate package outside the root workspaces so that CI and the standalone build never install Electron. `weave/weave.dev.config.ts` defines one group, `Nondominium Pilot`, created by agent 1 and joined by agent 2, with the tool served from `localhost:8888` and the `.happ` from `workdir/`. + +Click the group in the Moss sidebar, then the Nondominium tool. + +**Two machines.** Every `weave` call must pass the same `--bootstrap-url` and `--relay-url` of a server both machines reach (`kitsune2-bootstrap-srv` serves the relay on `/relay`), and the same CLI version. The group `networkSeed` in the shared config is what puts both agents in the same group. + +### Gotchas + +- `weave` loads the config through `ts-node` inside Electron. It needs TypeScript 5.x (TypeScript 7 has no JS API and the CLI crashes), `tslib` (not declared by the CLI) and a tsconfig with `"module": "commonjs"`. `weave/package.json` and `weave/tsconfig.json` carry all three. +- A tool served from localhost must call `initializeHotReload()` before `WeaveClient.connect()`, or `connect()` waits forever. `ui/src/lib/moss/connect.ts` does it when `detectHost` sees the dev-mode iframe. +- The group icon is limited to about 200 KB. `ui/static/icon.png` is a 128 px version of the logo. +- `weave` opens an Electron window per agent. On a shared desktop, a nested X server keeps them contained: `Xephyr :99 -screen 1500x950 &` then `DISPLAY=:99 bun run tool-dev`. + +## What the Moss manifest does to our roles + +Verified in the #162 spike (see [issue #162](https://github.com/Sensorica/nondominium/issues/162)). Moss installs `workdir/happ.yaml` unchanged, deferred roles included, but it installs `group` and `ndo` as **provisioned** cells next to `lobby`, `nondominium` and `hrea`. So every tool instance already has its own `group` cell, which is the instance's group DHT and the one Nondominium group of that Moss group, and an unused `ndo` cell. NDO clones come on top. Clone limits of 64 and 512 were not refused. + +## The UI seam + +``` +hc-connect.ts connectHolochainClient() + detectCurrentHost() moss/host.ts standalone, or Moss (with or without hot reload) + connectMoss() moss/connect.ts WeaveClient.connect + applet client + standalone modes launcher, manifest, env (unchanged) +``` + +- `moss/host.ts` decides from the page itself: the `applet://` protocol or an injected `__WEAVE_API__` is a packaged tool; a dev-build iframe carrying Moss's iframe-kind hash is a tool in dev mode; anything else is standalone. The standalone path is not touched when the host is not Moss. +- `moss/connect.ts` runs hot reload when needed, connects the `WeaveClient` with our `AppletServices`, and returns the applet client Moss hands the tool, the group hash and the applet hash. Inside Moss the client signs through Moss, so none of the standalone signing-credential code runs. +- `moss/applet-services.ts` is the `AppletServices` object. In #163 it declares no creatables and no assets; #165 fills `search` and `getAssetInfo`. +- The connection result carries `moss` so later slices reach the `WeaveClient` through the client service (`holochainClient.moss`). + +Moss mode is a connection mode (`HolochainConnectionMode` gains `'moss'`). The cross-group view is not implemented: a cross-group render throws. + +## Open items + +- `weaveClient.createCloneCell(req, true)` fails whenever `req.modifiers.properties` is set, which NDO clones need. See the #162 result and #164. +- `AppletServices` in `@theweave/api` `0.7.0-rc.3` has `getAssetInfo`, `search` and `creatables`. Opening an asset is not a method on it: Moss renders the tool with an `asset` view (`renderInfo.view.type === 'asset'`), and the tool calls `weaveClient.openAsset` to open other assets. diff --git a/documentation/specifications/ui_architecture.md b/documentation/specifications/ui_architecture.md index 4ae6cdf9..fc7ae813 100644 --- a/documentation/specifications/ui_architecture.md +++ b/documentation/specifications/ui_architecture.md @@ -102,6 +102,8 @@ On top of this hierarchy, the **next** UI iteration adds a cross-cutting **Persp Dependencies only point down: routes render components, components read stores, stores call services, services call the Holochain client. The domain layer sits beside the services and is imported by stores and components. The three rules that keep it that way are enforced by a script (see [ยง17](#17-architecture-invariants)). +**Moss host (`lib/moss/`).** When the UI runs inside Moss it is a tool, not a page that owns its conductor connection. `lib/moss/` holds that seam as plain TypeScript beside the service layer: `host.ts` (pure host detection), `connect.ts` (the `WeaveClient` connection, injectable for tests) and `applet-services.ts` (what the tool tells Moss about itself). Only `utils/hc-connect.ts` imports it, as one more connection mode (ยง15.4), so components, stores and services see the same `AppClient` whether the host is Moss or a standalone conductor. Details in [moss-integration.md](moss-integration.md). + --- @@ -740,6 +742,7 @@ Each agent gets a **dedicated port = dedicated origin**, which yields fully isol | `launcher` | `window.__HC_LAUNCHER_ENV__` present | hc-spin Electron path (legacy/optional) | | `manifest` | `/hc-connection.json` has agents | **Primary web path**; picks the entry matching `getDevAgentIndex()`; polls up to 5 min while conductors install | | `env` | `VITE_HC_ADMIN_WS_URL` + `VITE_HC_APP_WS_URL` | manual override | +| `moss` | `detectCurrentHost()` reports Moss | Checked first. The UI runs as a Moss tool: `connectMoss()` returns the applet client Moss hands the tool; Moss owns the conductor and signing, so there is no admin URL and no credential authorization. See [moss-integration.md](moss-integration.md) | In `manifest`/`env` modes the result carries the `adminWsUrl` so the UI can authorize signing credentials for **runtime-created group clone cells**. diff --git a/package.json b/package.json index d34505ae..0f62ab3f 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,9 @@ "sweettest:verbose": "bun run build:happ && CARGO_TARGET_DIR=target/native-tests cargo test -p nondominium_sweettest -- --nocapture", "sweettest:only": "CARGO_TARGET_DIR=target/native-tests cargo test -p nondominium_sweettest", "launch:happ": "node scripts/launch-happ.mjs", + "moss:install": "bun install --cwd weave", + "tool-dev": "concurrently -k \"UI_PORT=8888 bun run --filter ui start\" \"bun run --cwd weave agent1\" \"bun run --cwd weave agent2\"", + "tool-dev-1": "concurrently -k \"UI_PORT=8888 bun run --filter ui start\" \"bun run --cwd weave agent1\"", "e2e": "bun run --filter ui test:e2e", "e2e:ui": "bun run --filter ui test:e2e:ui", "package": "npm run build:happ && npm run --filter ui package && hc web-app pack workdir --recursive", diff --git a/ui/package.json b/ui/package.json index aa6ca3ae..6d397002 100644 --- a/ui/package.json +++ b/ui/package.json @@ -50,6 +50,7 @@ "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^3.0.0", "@nondominium/shared-types": "workspace:*", + "@theweave/api": "0.7.0-rc.3", "@valueflows/vf-graphql-holochain": "file:../vendor/valueflows-vf-graphql-holochain-0.700.0-rc.0.tgz", "effect": "4.0.0", "melt": "^0.44.0" diff --git a/ui/src/lib/moss/applet-services.spec.ts b/ui/src/lib/moss/applet-services.spec.ts new file mode 100644 index 00000000..b460b35d --- /dev/null +++ b/ui/src/lib/moss/applet-services.spec.ts @@ -0,0 +1,25 @@ +import { describe, it, expect } from 'vitest'; +import { AppletServices } from '@theweave/api'; +import { createAppletServices } from './applet-services'; + +describe('createAppletServices', () => { + it('builds a Weave AppletServices object', () => { + expect(createAppletServices()).toBeInstanceOf(AppletServices); + }); + + it('declares no creatables in v0.1.0', () => { + expect(createAppletServices().creatables).toEqual({}); + }); + + it('answers search with no assets until NDOs are exposed as assets', async () => { + const services = createAppletServices(); + const result = await services.search({} as never, new Uint8Array(), {} as never, 'anything'); + expect(result).toEqual([]); + }); + + it('answers getAssetInfo with nothing until NDOs are exposed as assets', async () => { + const services = createAppletServices(); + const result = await services.getAssetInfo({} as never, { hrl: [new Uint8Array(), new Uint8Array()] }); + expect(result).toBeUndefined(); + }); +}); diff --git a/ui/src/lib/moss/applet-services.ts b/ui/src/lib/moss/applet-services.ts new file mode 100644 index 00000000..fac6498d --- /dev/null +++ b/ui/src/lib/moss/applet-services.ts @@ -0,0 +1,9 @@ +import { AppletServices } from '@theweave/api'; + +/** + * What Nondominium tells Moss about itself. v0.1.0 scaffold: no creatables and + * no assets. NDOs become assets (`search`, `getAssetInfo`) in the asset slice. + */ +export function createAppletServices(): AppletServices { + return new AppletServices(); +} diff --git a/ui/src/lib/moss/connect.spec.ts b/ui/src/lib/moss/connect.spec.ts new file mode 100644 index 00000000..4758721b --- /dev/null +++ b/ui/src/lib/moss/connect.spec.ts @@ -0,0 +1,69 @@ +import { describe, it, expect, vi } from 'vitest'; +import type { AppClient } from '@holochain/client'; +import { connectMoss, type MossDeps } from './connect'; + +function fakeDeps(renderInfo: unknown): { deps: MossDeps; calls: string[] } { + const calls: string[] = []; + const deps: MossDeps = { + initializeHotReload: vi.fn(async () => { + calls.push('hot-reload'); + }), + connect: vi.fn(async () => { + calls.push('connect'); + return { renderInfo } as never; + }), + createAppletServices: vi.fn(() => ({ marker: 'services' }) as never) + }; + return { deps, calls }; +} + +const appletClient = { appInfo: vi.fn() } as unknown as AppClient; +const appletView = { + type: 'applet-view', + view: { type: 'main' }, + appletClient, + groupHash: new Uint8Array([1, 2, 3]), + appletHash: new Uint8Array([4, 5, 6]) +}; + +describe('connectMoss', () => { + it('runs hot reload before connecting when the host asks for it', async () => { + const { deps, calls } = fakeDeps(appletView); + await connectMoss({ hotReload: true }, deps); + expect(calls).toEqual(['hot-reload', 'connect']); + }); + + it('skips hot reload in a packaged tool', async () => { + const { deps, calls } = fakeDeps(appletView); + await connectMoss({ hotReload: false }, deps); + expect(calls).toEqual(['connect']); + }); + + it('hands the applet services to the Weave client', async () => { + const { deps } = fakeDeps(appletView); + await connectMoss({ hotReload: false }, deps); + expect(deps.connect).toHaveBeenCalledWith({ marker: 'services' }); + }); + + it('returns the applet client and the group the tool instance lives in', async () => { + const { deps } = fakeDeps(appletView); + const connection = await connectMoss({ hotReload: false }, deps); + expect(connection.appClient).toBe(appletClient); + expect(connection.groupHash).toEqual(new Uint8Array([1, 2, 3])); + expect(connection.appletHash).toEqual(new Uint8Array([4, 5, 6])); + }); + + it('refuses a cross-group render, which this tool does not implement', async () => { + const { deps } = fakeDeps({ type: 'cross-group-view', view: { type: 'main' }, applets: new Map() }); + await expect(connectMoss({ hotReload: false }, deps)).rejects.toThrow(/cross-group/i); + }); + + it('surfaces a hot reload failure instead of hanging on connect', async () => { + const { deps } = fakeDeps(appletView); + deps.initializeHotReload = vi.fn(async () => { + throw new Error('no parent frame'); + }); + await expect(connectMoss({ hotReload: true }, deps)).rejects.toThrow(/no parent frame/); + expect(deps.connect).not.toHaveBeenCalled(); + }); +}); diff --git a/ui/src/lib/moss/connect.ts b/ui/src/lib/moss/connect.ts new file mode 100644 index 00000000..2b063f82 --- /dev/null +++ b/ui/src/lib/moss/connect.ts @@ -0,0 +1,54 @@ +import type { AppClient, DnaHash, EntryHash } from '@holochain/client'; +import { + initializeHotReload as weaveInitializeHotReload, + WeaveClient, + type AppletServices +} from '@theweave/api'; +import { createAppletServices } from './applet-services'; + +export interface MossConnection { + weaveClient: WeaveClient; + /** The conductor client Moss hands the tool. Signing is handled by Moss. */ + appClient: AppClient; + /** Hash of the Moss group this tool instance is installed in. */ + groupHash: DnaHash | null; + appletHash: EntryHash; +} + +/** The Weave calls this module makes, injectable so the seam is testable. */ +export interface MossDeps { + initializeHotReload: () => Promise; + connect: (services: AppletServices) => Promise; + createAppletServices: () => AppletServices; +} + +const defaultDeps: MossDeps = { + initializeHotReload: weaveInitializeHotReload, + connect: (services) => WeaveClient.connect(services), + createAppletServices +}; + +/** + * Connects to Moss. `hotReload` is true in `weave` dev mode, where the tool is + * served from localhost: Moss only injects its API after the tool asks for the + * iframe script, and `WeaveClient.connect` waits for that forever otherwise. + */ +export async function connectMoss( + options: { hotReload: boolean }, + deps: MossDeps = defaultDeps +): Promise { + if (options.hotReload) { + await deps.initializeHotReload(); + } + const weaveClient = await deps.connect(deps.createAppletServices()); + const info = weaveClient.renderInfo; + if (info.type !== 'applet-view') { + throw new Error('Nondominium does not implement the Moss cross-group view.'); + } + return { + weaveClient, + appClient: info.appletClient, + groupHash: info.groupHash, + appletHash: info.appletHash + }; +} diff --git a/ui/src/lib/moss/host.spec.ts b/ui/src/lib/moss/host.spec.ts new file mode 100644 index 00000000..714fc439 --- /dev/null +++ b/ui/src/lib/moss/host.spec.ts @@ -0,0 +1,53 @@ +import { describe, it, expect } from 'vitest'; +import { detectHost, type HostEnv } from './host'; + +const standaloneEnv: HostEnv = { + protocol: 'http:', + hasWeaveApi: false, + isTopWindow: true, + hash: '', + dev: true +}; + +describe('detectHost', () => { + it('reports standalone for a top-level page with no Weave marker', () => { + expect(detectHost(standaloneEnv)).toEqual({ mode: 'standalone' }); + }); + + it('reports Moss without hot reload when served from the applet:// protocol', () => { + expect(detectHost({ ...standaloneEnv, protocol: 'applet:', isTopWindow: false, dev: false })).toEqual({ + mode: 'moss', + hotReload: false + }); + }); + + it('reports Moss without hot reload once the Weave API is already injected', () => { + expect(detectHost({ ...standaloneEnv, hasWeaveApi: true, isTopWindow: false })).toEqual({ + mode: 'moss', + hotReload: false + }); + }); + + it('reports Moss with hot reload for a dev-server iframe carrying the iframe-kind hash', () => { + expect(detectHost({ ...standaloneEnv, isTopWindow: false, hash: '#gqR0eXBlpWFwcGxldA' })).toEqual({ + mode: 'moss', + hotReload: true + }); + }); + + it('stays standalone for an iframe with no hash (some other embedder)', () => { + expect(detectHost({ ...standaloneEnv, isTopWindow: false, hash: '' })).toEqual({ + mode: 'standalone' + }); + }); + + it('stays standalone for a top-level page that happens to carry a hash', () => { + expect(detectHost({ ...standaloneEnv, hash: '#section' })).toEqual({ mode: 'standalone' }); + }); + + it('stays standalone for an iframe with a hash outside dev mode', () => { + expect( + detectHost({ ...standaloneEnv, isTopWindow: false, hash: '#gqR0eXBlpWFwcGxldA', dev: false }) + ).toEqual({ mode: 'standalone' }); + }); +}); diff --git a/ui/src/lib/moss/host.ts b/ui/src/lib/moss/host.ts new file mode 100644 index 00000000..ae0530b7 --- /dev/null +++ b/ui/src/lib/moss/host.ts @@ -0,0 +1,53 @@ +/** + * Detects whether the UI runs inside Moss (the Weave host) or standalone. + * + * Pure on purpose: `detectHost` takes the facts about the page as data so the + * decision is unit-testable. `currentHostEnv` reads them from `window`. + * + * Moss loads a tool in an iframe. A packaged tool is served from the + * `applet://` protocol and Moss injects `window.__WEAVE_API__`. In `weave` + * dev mode the tool is served from localhost instead, and Moss appends the + * encoded iframe kind to the URL as a hash (`@theweave/api` reads it in + * `initializeHotReload`). That hash, inside an iframe, in a dev build, is the + * only marker available before the Weave script is loaded. + */ +export type Host = { mode: 'standalone' } | { mode: 'moss'; hotReload: boolean }; + +export interface HostEnv { + protocol: string; + /** `window.__WEAVE_API__` is already injected. */ + hasWeaveApi: boolean; + /** The page is the top-level browsing context, not an iframe. */ + isTopWindow: boolean; + /** `location.hash`, including the leading `#`, or an empty string. */ + hash: string; + /** A Vite dev build (`import.meta.env.DEV`). */ + dev: boolean; +} + +export function detectHost(env: HostEnv): Host { + if (env.protocol === 'applet:' || env.hasWeaveApi) { + return { mode: 'moss', hotReload: false }; + } + if (env.dev && !env.isTopWindow && env.hash.length > 1) { + return { mode: 'moss', hotReload: true }; + } + return { mode: 'standalone' }; +} + +export function currentHostEnv(): HostEnv { + if (typeof window === 'undefined') { + return { protocol: '', hasWeaveApi: false, isTopWindow: true, hash: '', dev: false }; + } + return { + protocol: window.location.protocol, + hasWeaveApi: '__WEAVE_API__' in window && !!window.__WEAVE_API__, + isTopWindow: window.self === window.top, + hash: window.location.hash, + dev: import.meta.env.DEV + }; +} + +export function detectCurrentHost(): Host { + return detectHost(currentHostEnv()); +} diff --git a/ui/src/lib/services/holochain.service.svelte.ts b/ui/src/lib/services/holochain.service.svelte.ts index 8e0554d7..d3a6aeb5 100644 --- a/ui/src/lib/services/holochain.service.svelte.ts +++ b/ui/src/lib/services/holochain.service.svelte.ts @@ -1,4 +1,5 @@ -import { type AgentPubKey, type AppInfoResponse, type CellId, type ClonedCell, AppWebsocket } from '@holochain/client'; +import type { AgentPubKey, AppClient, AppInfoResponse, CellId, ClonedCell } from '@holochain/client'; +import type { MossConnection } from '../moss/connect'; import { Context, Layer } from 'effect'; import { authorizeCellSigning, @@ -14,7 +15,9 @@ export type RoleName = 'nondominium' | 'lobby'; export interface HolochainClientService { readonly appId: string; - readonly client: AppWebsocket | null; + readonly client: AppClient | null; + /** Set only when hosted by Moss. */ + readonly moss: MossConnection | null; readonly isConnected: boolean; readonly connectionUrl: string | null; readonly connectionMode: HolochainConnectionMode | null; @@ -71,7 +74,8 @@ export interface HolochainClientService { function createHolochainClientService(): HolochainClientService { // State const appId: string = 'nondominium'; - let client: AppWebsocket | null = $state(null); + let client: AppClient | null = $state(null); + let moss: MossConnection | null = $state(null); let isConnected: boolean = $state(false); let connectionUrl: string | null = $state(null); let connectionMode: HolochainConnectionMode | null = $state(null); @@ -96,11 +100,13 @@ function createHolochainClientService(): HolochainClientService { connectionUrl = null; connectionMode = null; adminWsUrl = null; + moss = null; try { console.log('Attempting to connect to Holochain conductor...'); const result = await connectHolochainClient(appId); client = result.client; + moss = result.moss ?? null; connectionUrl = result.connectionUrl; connectionMode = result.connectionMode; adminWsUrl = result.adminWsUrl ?? null; @@ -213,7 +219,8 @@ function createHolochainClientService(): HolochainClientService { * private cache field itself. */ function invalidateAppInfoCache(): void { - if (client) client.cachedAppInfo = undefined; + // Only the websocket client memoizes AppInfo; the applet client Moss hands a tool does not. + if (client && 'cachedAppInfo' in client) client.cachedAppInfo = undefined; } async function enableGroupCloneCell(dnaHash: Uint8Array): Promise { @@ -327,6 +334,9 @@ function createHolochainClientService(): HolochainClientService { get connectionUrl() { return connectionUrl; }, + get moss() { + return moss; + }, get connectionMode() { return connectionMode; }, diff --git a/ui/src/lib/utils/hc-connect.spec.ts b/ui/src/lib/utils/hc-connect.spec.ts new file mode 100644 index 00000000..1aff3a90 --- /dev/null +++ b/ui/src/lib/utils/hc-connect.spec.ts @@ -0,0 +1,61 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; + +const detectCurrentHost = vi.fn(); +const connectMoss = vi.fn(); +const appWebsocketConnect = vi.fn(); + +vi.mock('@holochain/client', async (importOriginal) => ({ + ...(await importOriginal()), + AppWebsocket: { connect: (...args: unknown[]) => appWebsocketConnect(...args) } +})); + +vi.mock('../moss/host', () => ({ detectCurrentHost: () => detectCurrentHost() })); +vi.mock('../moss/connect', () => ({ + connectMoss: (options: { hotReload: boolean }) => connectMoss(options) +})); + +import { connectHolochainClient } from './hc-connect'; + +describe('connectHolochainClient', () => { + beforeEach(() => { + detectCurrentHost.mockReset(); + connectMoss.mockReset(); + }); + + it('connects through Moss, not through the sandbox manifest, when hosted by Moss', async () => { + const appClient = { appInfo: vi.fn() }; + const weaveClient = { renderInfo: {} }; + detectCurrentHost.mockReturnValue({ mode: 'moss', hotReload: true }); + connectMoss.mockResolvedValue({ + appClient, + weaveClient, + groupHash: new Uint8Array([9]), + appletHash: new Uint8Array([8]) + }); + + const result = await connectHolochainClient('nondominium'); + + expect(connectMoss).toHaveBeenCalledWith({ hotReload: true }); + expect(result.connectionMode).toBe('moss'); + expect(result.client).toBe(appClient); + expect(result.moss?.weaveClient).toBe(weaveClient); + expect(result.adminWsUrl).toBeUndefined(); + }); + + it('never touches Moss when running standalone', async () => { + detectCurrentHost.mockReturnValue({ mode: 'standalone' }); + const standaloneClient = { appInfo: vi.fn() }; + appWebsocketConnect.mockResolvedValue(standaloneClient); + vi.stubGlobal('window', { + __HC_LAUNCHER_ENV__: { APP_INTERFACE_PORT: 4242, INSTALLED_APP_ID: 'nondominium', APP_INTERFACE_TOKEN: [1] } + }); + + const result = await connectHolochainClient('nondominium'); + + expect(connectMoss).not.toHaveBeenCalled(); + expect(result.connectionMode).toBe('launcher'); + expect(result.client).toBe(standaloneClient); + expect(result.moss).toBeUndefined(); + vi.unstubAllGlobals(); + }); +}); diff --git a/ui/src/lib/utils/hc-connect.ts b/ui/src/lib/utils/hc-connect.ts index a0458594..2061e312 100644 --- a/ui/src/lib/utils/hc-connect.ts +++ b/ui/src/lib/utils/hc-connect.ts @@ -1,4 +1,6 @@ -import { AdminWebsocket, AppWebsocket, type CellId } from '@holochain/client'; +import { AdminWebsocket, AppWebsocket, type AppClient, type CellId } from '@holochain/client'; +import { detectCurrentHost } from '../moss/host'; +import { connectMoss, type MossConnection } from '../moss/connect'; const DEV_AGENT_STORAGE_KEY = 'ndo_dev_agent'; const DEV_WS_ORIGIN = 'nondominium-ui'; @@ -23,10 +25,11 @@ export interface HcConnectionManifest { updatedAt?: string; } -export type HolochainConnectionMode = 'launcher' | 'manifest' | 'env'; +export type HolochainConnectionMode = 'launcher' | 'manifest' | 'env' | 'moss'; export interface HolochainConnectResult { - client: AppWebsocket; + /** An `AppWebsocket` standalone, the applet client Moss hands the tool inside Moss. */ + client: AppClient; connectionUrl: string; connectionMode: HolochainConnectionMode; /** @@ -35,6 +38,8 @@ export interface HolochainConnectResult { * are created at runtime. Undefined in launcher mode (the launcher signs). */ adminWsUrl?: string; + /** Set only in Moss mode: the Weave client, the group and the tool instance. */ + moss?: MossConnection; } export class HolochainConnectionError extends Error { @@ -219,6 +224,7 @@ const BROWSER_DEV_HINTS = [ /** * Connect to the local Holochain conductor. + * 0. Moss (the Weave host), detected from the page itself; Moss owns the conductor and signing * 1. hc-spin Electron launcher env (when using hc-spin directly) * 2. /hc-connection.json written by scripts/launch-happ.mjs (`bun run network`) * 3. VITE_HC_ADMIN_WS_URL + VITE_HC_APP_WS_URL (manual override) @@ -226,6 +232,12 @@ const BROWSER_DEV_HINTS = [ export async function connectHolochainClient( defaultAppId: string ): Promise { + const host = detectCurrentHost(); + if (host.mode === 'moss') { + const moss = await connectMoss({ hotReload: host.hotReload }); + return { client: moss.appClient, connectionUrl: 'moss://applet', connectionMode: 'moss', moss }; + } + const launcherEnv = getLauncherEnvironment(); if (launcherEnv?.APP_INTERFACE_PORT) { const connectionUrl = `ws://localhost:${launcherEnv.APP_INTERFACE_PORT}`; diff --git a/ui/static/icon.png b/ui/static/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2213a1442c349e62d41a99d58d2b93cfb43054d1 GIT binary patch literal 16159 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.0.0" } }, "sha512-zpZDzbqJTZQC5d4LRs2EKruKWnqah+T75s+niBYFemYLtiW5TTZcWi3Q8UxHqnwTudDMuWJb233aaS2yjx3Xiw=="], + + "@electron-toolkit/utils": ["@electron-toolkit/utils@2.0.1", "", { "peerDependencies": { "electron": ">=13.0.0" } }, "sha512-3nnjd3D1NIjxdzNrvR5fkJ3kbJNbRkpHppv0/pSbMX6I0DaBzpPXeSfDYuJJKzZrAc3CmGcJa0MU4+AjEOlT4g=="], + + "@electron/get": ["@electron/get@2.0.3", "", { "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "optionalDependencies": { "global-agent": "^3.0.0" } }, "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ=="], + + "@floating-ui/core": ["@floating-ui/core@1.8.0", "", { "dependencies": { "@floating-ui/utils": "^0.2.12" } }, "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], + + "@holo-host/identicon": ["@holo-host/identicon@0.1.0", "", {}, "sha512-Dn5pTV/m3XaK1Zvq3liw/vQUt7goM7Y84x2zUyH8cb9CNMs4kPCNHs3kalbJZ/ymzFvwcdiLwwNW8AKk+WWN5A=="], + + "@holochain-open-dev/elements": ["@holochain-open-dev/elements@0.701.0", "", { "dependencies": { "@holo-host/identicon": "^0.1.0", "@holochain/client": "^0.21.1", "@lit/localize": "^0.12.2", "@mdi/js": "^7.4.47", "@shoelace-style/shoelace": "^2.20.1", "lit": "^3.0.2", "prosemirror-commands": "^1.5.2", "prosemirror-keymap": "^1.2.2", "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.31.3" } }, "sha512-7VmZg5zVSrxXhx0T71a8K4Q4ijtNvZPoJ3S1KWhRbSNWvwFjsUR4Oihod9dq0EZonE3o7qjxPrDwh0eiGXGRiA=="], + + "@holochain-open-dev/profiles": ["@holochain-open-dev/profiles@0.702.0", "", { "dependencies": { "@holochain-open-dev/elements": "^0.701.0", "@holochain-open-dev/stores": "^0.701.0", "@holochain-open-dev/utils": "^0.701.0", "@holochain/client": "^0.21.1", "@lit/context": "^1.0.1", "@lit/localize": "^0.12.0", "@mdi/js": "^7.1.96", "@shoelace-style/shoelace": "^2.11.0", "lit": "^3.0.2" } }, "sha512-jfqbJewEqMDcZ8pZ/1lULPxwqkFQ33P/MFJXxIhAdfONcJVRA2687AP6Z6pN4397ohvnDQ8T0cLRJx2XgtMErw=="], + + "@holochain-open-dev/stores": ["@holochain-open-dev/stores@0.701.0", "", { "dependencies": { "@alenaksu/json-viewer": "^2.1.2", "@holochain-open-dev/utils": "^0.701.0", "@holochain/client": "^0.21.1", "@scoped-elements/cytoscape": "^0.2.7", "@shoelace-style/shoelace": "^2.20.1", "lit": "^3.0.2", "lit-svelte-stores": "^0.3.3", "svelte": "^3.53.1" } }, "sha512-7xaKlegPwEXKhPaBwxakaCSJeO5JTgdVsCi4dJ9OlseLc6B1N+jHKgkm2mbJQUCUNEVYegFgInAHwosQCi/gIQ=="], + + "@holochain-open-dev/utils": ["@holochain-open-dev/utils@0.701.0", "", { "dependencies": { "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^3.1.3", "blakejs": "^1.2.1", "emittery": "^1.2.0", "lodash-es": "^4.17.21", "sort-keys": "^5.0.0" } }, "sha512-Zku/njCKimPd2G/ufZvtNLea8XqgG5EcrlCwrxJt37yQ5wNtc/8C0iCg+U8Cg+zBwQezF4LdT8qzgtNvQgYwhA=="], + + "@holochain/client": ["@holochain/client@0.21.1", "", { "dependencies": { "@bitgo/blake2b": "^3.2.4", "@msgpack/msgpack": "^3.1.2", "emittery": "^1.2.0", "isomorphic-ws": "^5.0.0", "js-base64": "^3.7.8", "js-sha512": "^0.9.0", "libsodium-wrappers": "^0.8", "lodash-es": "^4.17.21", "ws": "^8.18.3" } }, "sha512-Y+x3vO5Rgl++SUS20ZzG7jsmO/yp1bfkR4fiKfHfjL/NUr5s7lBn/N+ZrZbAHZ+3jFU+gPKWzukMtLzHx9bbLg=="], + + "@jimp/core": ["@jimp/core@1.6.0", "", { "dependencies": { "@jimp/file-ops": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "await-to-js": "^3.0.0", "exif-parser": "^0.1.12", "file-type": "^16.0.0", "mime": "3" } }, "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w=="], + + "@jimp/diff": ["@jimp/diff@1.6.0", "", { "dependencies": { "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "pixelmatch": "^5.3.0" } }, "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw=="], + + "@jimp/file-ops": ["@jimp/file-ops@1.6.0", "", {}, "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ=="], + + "@jimp/js-bmp": ["@jimp/js-bmp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "bmp-ts": "^1.0.9" } }, "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw=="], + + "@jimp/js-gif": ["@jimp/js-gif@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "gifwrap": "^0.10.1", "omggif": "^1.0.10" } }, "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g=="], + + "@jimp/js-jpeg": ["@jimp/js-jpeg@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "jpeg-js": "^0.4.4" } }, "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA=="], + + "@jimp/js-png": ["@jimp/js-png@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "pngjs": "^7.0.0" } }, "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg=="], + + "@jimp/js-tiff": ["@jimp/js-tiff@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "utif2": "^4.1.0" } }, "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw=="], + + "@jimp/plugin-blit": ["@jimp/plugin-blit@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA=="], + + "@jimp/plugin-blur": ["@jimp/plugin-blur@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw=="], + + "@jimp/plugin-circle": ["@jimp/plugin-circle@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw=="], + + "@jimp/plugin-color": ["@jimp/plugin-color@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "tinycolor2": "^1.6.0", "zod": "^3.23.8" } }, "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA=="], + + "@jimp/plugin-contain": ["@jimp/plugin-contain@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ=="], + + "@jimp/plugin-cover": ["@jimp/plugin-cover@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA=="], + + "@jimp/plugin-crop": ["@jimp/plugin-crop@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang=="], + + "@jimp/plugin-displace": ["@jimp/plugin-displace@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q=="], + + "@jimp/plugin-dither": ["@jimp/plugin-dither@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0" } }, "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ=="], + + "@jimp/plugin-fisheye": ["@jimp/plugin-fisheye@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA=="], + + "@jimp/plugin-flip": ["@jimp/plugin-flip@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg=="], + + "@jimp/plugin-hash": ["@jimp/plugin-hash@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "any-base": "^1.1.0" } }, "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q=="], + + "@jimp/plugin-mask": ["@jimp/plugin-mask@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA=="], + + "@jimp/plugin-print": ["@jimp/plugin-print@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/types": "1.6.0", "parse-bmfont-ascii": "^1.0.6", "parse-bmfont-binary": "^1.0.6", "parse-bmfont-xml": "^1.1.6", "simple-xml-to-json": "^1.2.2", "zod": "^3.23.8" } }, "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A=="], + + "@jimp/plugin-quantize": ["@jimp/plugin-quantize@1.6.0", "", { "dependencies": { "image-q": "^4.0.0", "zod": "^3.23.8" } }, "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg=="], + + "@jimp/plugin-resize": ["@jimp/plugin-resize@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/types": "1.6.0", "zod": "^3.23.8" } }, "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA=="], + + "@jimp/plugin-rotate": ["@jimp/plugin-rotate@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw=="], + + "@jimp/plugin-threshold": ["@jimp/plugin-threshold@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0", "zod": "^3.23.8" } }, "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w=="], + + "@jimp/types": ["@jimp/types@1.6.0", "", { "dependencies": { "zod": "^3.23.8" } }, "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg=="], + + "@jimp/utils": ["@jimp/utils@1.6.0", "", { "dependencies": { "@jimp/types": "1.6.0", "tinycolor2": "^1.6.0" } }, "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], + + "@lightningrodlabs/we-rust-utils": ["@lightningrodlabs/we-rust-utils@0.700.1", "", { "optionalDependencies": { "@lightningrodlabs/we-rust-utils-darwin-arm64": "0.700.1", "@lightningrodlabs/we-rust-utils-darwin-x64": "0.700.1", "@lightningrodlabs/we-rust-utils-linux-arm64-gnu": "0.700.1", "@lightningrodlabs/we-rust-utils-linux-x64-gnu": "0.700.1", "@lightningrodlabs/we-rust-utils-win32-x64-msvc": "0.700.1" } }, "sha512-/BxnFZd7HecyTuBzT0YxxavUiB0PZM2/qwwyXXpjJsM2j28rclhGG3ouyAqFVvxRUIE6j75a3ktDOG4TwPvAtg=="], + + "@lightningrodlabs/we-rust-utils-darwin-arm64": ["@lightningrodlabs/we-rust-utils-darwin-arm64@0.700.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gxfEDUps5wdpS4qBMAxqjk+kN22MAQkaQPbaRK0/0u+F7DldbqEIEgxP9CZ2jUsKiW/ST5MOLnYwqqvYo5wSCg=="], + + "@lightningrodlabs/we-rust-utils-darwin-x64": ["@lightningrodlabs/we-rust-utils-darwin-x64@0.700.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-iUHjhUXej8aIjJuBPFqnkqHUa6rDssqY/MFcuGqZi1ecHAJgOkwWwGZRLQ0KDIdoOJCPwcDllRCvizQ9F1lYHw=="], + + "@lightningrodlabs/we-rust-utils-linux-arm64-gnu": ["@lightningrodlabs/we-rust-utils-linux-arm64-gnu@0.700.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WQWUnX1DP+oXC8XPDEhQSCgU9ht/x85dMVIiaf+8u4w/h8OPxhu41u5tVBTBlAD6r7rBH6jnF0V/8RTkpwIJKQ=="], + + "@lightningrodlabs/we-rust-utils-linux-x64-gnu": ["@lightningrodlabs/we-rust-utils-linux-x64-gnu@0.700.1", "", { "os": "linux", "cpu": "x64" }, "sha512-dX1oCu3+JuGUtLdyZQ/tLnQYvZcs1XufIXuUyfIFriwtDbhA9rdJp5xnefk0xHnLnRsw/eFYbrbrjmmlcki0ng=="], + + "@lightningrodlabs/we-rust-utils-win32-x64-msvc": ["@lightningrodlabs/we-rust-utils-win32-x64-msvc@0.700.1", "", { "os": "win32", "cpu": "x64" }, "sha512-/mwWPXcLqcECFszt1p16LZTeg8o9YCWYmDlJT9AV501tfzOYcU9h+uozvyaUKc1hmh5GJsmx9G7XsMp8ZE87cA=="], + + "@lit-labs/ssr-dom-shim": ["@lit-labs/ssr-dom-shim@1.6.0", "", {}, "sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ=="], + + "@lit/context": ["@lit/context@1.1.6", "", { "dependencies": { "@lit/reactive-element": "^1.6.2 || ^2.1.0" } }, "sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A=="], + + "@lit/localize": ["@lit/localize@0.12.2", "", { "dependencies": { "lit": "^3.2.0" } }, "sha512-Qv9kvgJKDq/JVSwXOxuWvQnnOBysHA99ti9im9a4fImCmx+fto+XXcUYQbjZHqiueEEc4V20PcRDPO+1g/6seQ=="], + + "@lit/react": ["@lit/react@1.0.8", "", { "peerDependencies": { "@types/react": "17 || 18 || 19" } }, "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw=="], + + "@lit/reactive-element": ["@lit/reactive-element@2.1.2", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.5.0" } }, "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A=="], + + "@mdi/js": ["@mdi/js@7.4.47", "", {}, "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ=="], + + "@msgpack/msgpack": ["@msgpack/msgpack@2.8.0", "", {}, "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="], + + "@open-wc/dedupe-mixin": ["@open-wc/dedupe-mixin@1.4.0", "", {}, "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA=="], + + "@open-wc/scoped-elements": ["@open-wc/scoped-elements@2.2.4", "", { "dependencies": { "@lit/reactive-element": "^1.0.0 || ^2.0.0", "@open-wc/dedupe-mixin": "^1.4.0" } }, "sha512-12X4F4QGPWcvPbxAiJ4v8wQFCOu+laZHRGfTrkoj+3JzACCtuxHG49YbuqVzQ135QPKCuhP9wA0kpGGEfUegyg=="], + + "@scoped-elements/cytoscape": ["@scoped-elements/cytoscape@0.2.7", "", { "dependencies": { "@open-wc/scoped-elements": "^2.0.1", "@types/cytoscape": "^3.19.0", "cytoscape": "^3.20.0", "cytoscape-cola": "^2.5.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-dagre": "^2.3.2", "cytoscape-klay": "^3.1.4", "lit": "^2.0.2", "lodash-es": "^4.17.21" } }, "sha512-hvb33z021Jg01oTyWfsvOf6LK5SAqh8u8iJVCyeC4zCoro6CBfwNjbLCLgUMRtXnkVkQQkD979vAu8E+hCojJQ=="], + + "@shoelace-style/animations": ["@shoelace-style/animations@1.2.0", "", {}, "sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw=="], + + "@shoelace-style/localize": ["@shoelace-style/localize@3.2.3", "", {}, "sha512-pWoZywizMilenLfQcpE9bjaqi7WKiQXJB42cxvmSPwYS76U776wJ7B5QQ0P28yVit1vpHuFZzq1CtfVFv32jaQ=="], + + "@shoelace-style/shoelace": ["@shoelace-style/shoelace@2.20.1", "", { "dependencies": { "@ctrl/tinycolor": "^4.1.0", "@floating-ui/dom": "^1.6.12", "@lit/react": "^1.0.6", "@shoelace-style/animations": "^1.2.0", "@shoelace-style/localize": "^3.2.1", "composed-offset-position": "^0.0.6", "lit": "^3.2.1", "qr-creator": "^1.0.0" } }, "sha512-FSghU95jZPGbwr/mybVvk66qRZYpx5FkXL+vLNpy1Vp8UsdwSxXjIHE3fsvMbKWTKi9UFfewHTkc5e7jAqRYoQ=="], + + "@sinclair/typebox": ["@sinclair/typebox@0.33.12", "", {}, "sha512-d5KrXIdPolLp8VpGpZAQvEz8ioVtFlUQSyCIS2sEBi7FKhceIB7nj9BlNfqqvp5wmOfg8v8bP1rAvYYkjz21/Q=="], + + "@sindresorhus/is": ["@sindresorhus/is@4.6.0", "", {}, "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="], + + "@so-ric/colorspace": ["@so-ric/colorspace@1.1.6", "", { "dependencies": { "color": "^5.0.2", "text-hex": "1.0.x" } }, "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw=="], + + "@szmarczak/http-timer": ["@szmarczak/http-timer@4.0.6", "", { "dependencies": { "defer-to-connect": "^2.0.0" } }, "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w=="], + + "@theweave/api": ["@theweave/api@0.7.0-rc.3", "", { "dependencies": { "@holochain-open-dev/profiles": "^0.702.0", "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^2.8.0", "js-base64": "^3.7.2" } }, "sha512-yBt8SmTzjg0bdPRyJAoRRV42oshE8JqgoabxcUZlacFDZ1rSaoKZLDia64Knx9xEsNi5ToSxw9RExYaO6rDK3w=="], + + "@theweave/cli": ["@theweave/cli@0.16.0-rc.5", "", { "dependencies": { "@electron-toolkit/preload": "^2.0.0", "@electron-toolkit/utils": "^2.0.0", "@holochain-open-dev/elements": "^0.701.0", "@holochain-open-dev/profiles": "^0.702.0", "@holochain-open-dev/stores": "^0.701.0", "@holochain-open-dev/utils": "^0.701.0", "@holochain/client": "^0.21.1", "@lightningrodlabs/we-rust-utils": "^0.700.1", "@msgpack/msgpack": "^2.8.0", "@sinclair/typebox": "0.33.12", "@theweave/api": "^0.7.0-rc.1", "@theweave/moss-types": "^0.7.0-rc.1", "@theweave/utils": "^0.7.0-rc.1", "adm-zip": "0.5.14", "bufferutil": "4.0.8", "commander": "11.1.0", "electron": "^32.3.3", "electron-context-menu": "3.6.1", "electron-updater": "6.6.2", "jimp": "1.6.0", "js-sha512": "^0.9.0", "mime": "4.0.0", "nanoid": "5.0.4", "semver": "^7.6.2", "split": "1.0.1", "ts-node": "10.9.2", "utf-8-validate": "^6.0.3", "uuid": "9.0.1", "winston": "3.11.0" }, "bin": { "weave": "cli.js" } }, "sha512-QoBB+SEhVD3lC3f1XgIy0TbgL5I+bb2RJLRBnzMQazMAoVKVn06KvsITPg5Cv3pY36sFXu6rM0cao+/unkwcLA=="], + + "@theweave/moss-types": ["@theweave/moss-types@0.7.0-rc.2", "", { "dependencies": { "@holochain/client": "^0.21.1", "@sinclair/typebox": "0.33.12", "@theweave/api": "^0.7.0-rc.1" } }, "sha512-DQ4oQMoflP89vtWjpphba+lGTiRUgJN9gPQOlDAUGf8jnr2FDAjmUPro63bRvTTc3+jzX7m+6i1o2/6Tq6bL2w=="], + + "@theweave/utils": ["@theweave/utils@0.7.0-rc.3", "", { "dependencies": { "@holochain/client": "^0.21.1", "@msgpack/msgpack": "^2.7.2", "@theweave/api": "^0.7.0-rc.1", "@theweave/moss-types": "^0.7.0-rc.1", "compare-versions": "6.1.1", "js-base64": "^3.7.2", "ts-md5": "1.3.1" } }, "sha512-dVhV6QZtTBhPkonL7np5GsSh7xBchhbMhmCz9CcSMWrH2tO55VpTZsLfDBkhlzuCySPu7V6S4YR5VHZgjRl2mQ=="], + + "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], + + "@tsconfig/node10": ["@tsconfig/node10@1.0.13", "", {}, "sha512-gcLdvR9HO1ZJBypsOGqaP6TFEzb6vIta0KSTLt9NAQ6pXQO3cRgSVyCN6pzYqI9DlJgY71XKO0dpDhCf08b3pg=="], + + "@tsconfig/node12": ["@tsconfig/node12@1.0.11", "", {}, "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="], + + "@tsconfig/node14": ["@tsconfig/node14@1.0.3", "", {}, "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="], + + "@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="], + + "@types/cacheable-request": ["@types/cacheable-request@6.0.3", "", { "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", "@types/node": "*", "@types/responselike": "^1.0.0" } }, "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw=="], + + "@types/cytoscape": ["@types/cytoscape@3.31.0", "", { "dependencies": { "cytoscape": "*" } }, "sha512-EXHOHxqQjGxLDEh5cP4te6J0bi7LbCzmZkzsR6f703igUac8UGMdEohMyU3GHAayCTZrLQOMnaE/lqB2Ekh8Ww=="], + + "@types/http-cache-semantics": ["@types/http-cache-semantics@4.2.0", "", {}, "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q=="], + + "@types/keyv": ["@types/keyv@3.1.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg=="], + + "@types/node": ["@types/node@22.20.5", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA=="], + + "@types/react": ["@types/react@19.3.0", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg=="], + + "@types/responselike": ["@types/responselike@1.0.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw=="], + + "@types/triple-beam": ["@types/triple-beam@1.3.5", "", {}, "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="], + + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + + "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], + + "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], + + "acorn": ["acorn@8.19.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw=="], + + "acorn-walk": ["acorn-walk@8.3.5", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw=="], + + "adm-zip": ["adm-zip@0.5.14", "", {}, "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "any-base": ["any-base@1.1.0", "", {}, "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="], + + "arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="], + + "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], + + "await-to-js": ["await-to-js@3.0.0", "", {}, "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "blakejs": ["blakejs@1.2.1", "", {}, "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ=="], + + "bmp-ts": ["bmp-ts@1.0.9", "", {}, "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw=="], + + "boolean": ["boolean@3.2.0", "", {}, "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw=="], + + "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], + + "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + + "bufferutil": ["bufferutil@4.0.8", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw=="], + + "builder-util-runtime": ["builder-util-runtime@9.3.1", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ=="], + + "cacheable-lookup": ["cacheable-lookup@5.0.4", "", {}, "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="], + + "cacheable-request": ["cacheable-request@7.0.4", "", { "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^6.0.1", "responselike": "^2.0.0" } }, "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg=="], + + "cli-truncate": ["cli-truncate@2.1.0", "", { "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" } }, "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg=="], + + "clone-response": ["clone-response@1.0.3", "", { "dependencies": { "mimic-response": "^1.0.0" } }, "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA=="], + + "color": ["color@5.0.3", "", { "dependencies": { "color-convert": "^3.1.3", "color-string": "^2.1.3" } }, "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "color-string": ["color-string@2.1.4", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg=="], + + "commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], + + "compare-versions": ["compare-versions@6.1.1", "", {}, "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg=="], + + "composed-offset-position": ["composed-offset-position@0.0.6", "", { "peerDependencies": { "@floating-ui/utils": "^0.2.5" } }, "sha512-Q7dLompI6lUwd7LWyIcP66r4WcS9u7AL2h8HaeipiRfCRPLMWqRx8fYsjb4OHi6UQFifO7XtNC2IlEJ1ozIFxw=="], + + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], + + "create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "cytoscape": ["cytoscape@3.34.4", "", {}, "sha512-msY99tMY8iWTg+sIPGfSqDcPNOt4xcj+v/K/7qUFaCUxxlqnMkUYLBjRUzn9W5CU/R2hrmtJa5+UtovrEM2ctg=="], + + "cytoscape-cola": ["cytoscape-cola@2.5.1", "", { "dependencies": { "webcola": "^3.4.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-4/2S9bW1LvdsEPmxXN1OEAPFPbk7DvCx2c9d+TblkQAAvptGaSgtPWCByTEGgT8UxCxcVqes2aFPO5pzwo7R2w=="], + + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], + + "cytoscape-dagre": ["cytoscape-dagre@2.5.0", "", { "dependencies": { "dagre": "^0.8.5" }, "peerDependencies": { "cytoscape": "^3.2.22" } }, "sha512-VG2Knemmshop4kh5fpLO27rYcyUaaDkRw+6PiX4bstpB+QFt0p2oauMrsjVbUamGWQ6YNavh7x2em2uZlzV44g=="], + + "cytoscape-klay": ["cytoscape-klay@3.1.4", "", { "dependencies": { "klayjs": "^0.4.1" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-VwPj0VR25GPfy6qXVQRi/MYlZM/zkdvRhHlgqbM//lSvstgM6fhp3ik/uM8Wr8nlhskfqz/M1fIDmR6UckbS2A=="], + + "d3-dispatch": ["d3-dispatch@1.0.6", "", {}, "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="], + + "d3-drag": ["d3-drag@1.2.5", "", { "dependencies": { "d3-dispatch": "1", "d3-selection": "1" } }, "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w=="], + + "d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], + + "d3-selection": ["d3-selection@1.4.2", "", {}, "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg=="], + + "d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + + "d3-timer": ["d3-timer@1.0.10", "", {}, "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="], + + "dagre": ["dagre@0.8.5", "", { "dependencies": { "graphlib": "^2.1.8", "lodash": "^4.17.15" } }, "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], + + "defer-to-connect": ["defer-to-connect@2.0.1", "", {}, "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg=="], + + "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + + "detect-node": ["detect-node@2.1.0", "", {}, "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="], + + "diff": ["diff@4.0.4", "", {}, "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ=="], + + "electron": ["electron@32.3.3", "", { "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^20.9.0", "extract-zip": "^2.0.1" }, "bin": { "electron": "cli.js" } }, "sha512-7FT8tDg+MueAw8dBn5LJqDvlM4cZkKJhXfgB3w7P5gvSoUQVAY6LIQcXJxgL+vw2rIRY/b9ak7ZBFbCMF2Bk4w=="], + + "electron-context-menu": ["electron-context-menu@3.6.1", "", { "dependencies": { "cli-truncate": "^2.1.0", "electron-dl": "^3.2.1", "electron-is-dev": "^2.0.0" } }, "sha512-lcpO6tzzKUROeirhzBjdBWNqayEThmdW+2I2s6H6QMrwqTVyT3EK47jW3Nxm60KTxl5/bWfEoIruoUNn57/QkQ=="], + + "electron-dl": ["electron-dl@3.5.2", "", { "dependencies": { "ext-name": "^5.0.0", "pupa": "^2.0.1", "unused-filename": "^2.1.0" } }, "sha512-i104cl+u8yJ0lhpRAtUWfeGuWuL1PL6TBiw2gLf0MMIBjfgE485Ags2mcySx4uWU9P9uj/vsD3jd7X+w1lzZxw=="], + + "electron-is-dev": ["electron-is-dev@2.0.0", "", {}, "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA=="], + + "electron-updater": ["electron-updater@6.6.2", "", { "dependencies": { "builder-util-runtime": "9.3.1", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", "semver": "^7.6.3", "tiny-typed-emitter": "^2.1.0" } }, "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw=="], + + "emittery": ["emittery@1.2.1", "", {}, "sha512-sFz64DCRjirhwHLxofFqxYQm6DCp6o0Ix7jwKQvuCHPn4GMRZNuBZyLPu9Ccmk/QSCAMZt6FOUqA8JZCQvA9fw=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "enabled": ["enabled@2.0.0", "", {}, "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="], + + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es6-error": ["es6-error@4.1.1", "", {}, "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="], + + "escape-goat": ["escape-goat@2.1.1", "", {}, "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], + + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + + "exif-parser": ["exif-parser@0.1.12", "", {}, "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="], + + "ext-list": ["ext-list@2.2.2", "", { "dependencies": { "mime-db": "^1.28.0" } }, "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA=="], + + "ext-name": ["ext-name@5.0.0", "", { "dependencies": { "ext-list": "^2.0.0", "sort-keys-length": "^1.0.0" } }, "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ=="], + + "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], + + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], + + "fecha": ["fecha@4.2.3", "", {}, "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="], + + "file-type": ["file-type@16.5.4", "", { "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", "token-types": "^4.1.1" } }, "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw=="], + + "fn.name": ["fn.name@1.1.0", "", {}, "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="], + + "fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], + + "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + + "gifwrap": ["gifwrap@0.10.1", "", { "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" } }, "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw=="], + + "global-agent": ["global-agent@3.0.0", "", { "dependencies": { "boolean": "^3.0.1", "es6-error": "^4.1.1", "matcher": "^3.0.0", "roarr": "^2.15.3", "semver": "^7.3.2", "serialize-error": "^7.0.1" } }, "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q=="], + + "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "got": ["got@11.8.6", "", { "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", "@types/cacheable-request": "^6.0.1", "@types/responselike": "^1.0.0", "cacheable-lookup": "^5.0.3", "cacheable-request": "^7.0.2", "decompress-response": "^6.0.0", "http2-wrapper": "^1.0.0-beta.5.2", "lowercase-keys": "^2.0.0", "p-cancelable": "^2.0.0", "responselike": "^2.0.0" } }, "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "graphlib": ["graphlib@2.1.8", "", { "dependencies": { "lodash": "^4.17.15" } }, "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A=="], + + "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], + + "http-cache-semantics": ["http-cache-semantics@4.3.0", "", {}, "sha512-M5t5LlJpS1UHMjvwRQVdFHvPISGeLAxNcrWuJkeGh0KxsqCHZ1O3NXZU/8x7cD0BDcGW8kapxMKTvwlqrNkHkA=="], + + "http2-wrapper": ["http2-wrapper@1.0.3", "", { "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" } }, "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "image-q": ["image-q@4.0.0", "", { "dependencies": { "@types/node": "16.9.1" } }, "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "isomorphic-ws": ["isomorphic-ws@5.0.0", "", { "peerDependencies": { "ws": "*" } }, "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw=="], + + "jimp": ["jimp@1.6.0", "", { "dependencies": { "@jimp/core": "1.6.0", "@jimp/diff": "1.6.0", "@jimp/js-bmp": "1.6.0", "@jimp/js-gif": "1.6.0", "@jimp/js-jpeg": "1.6.0", "@jimp/js-png": "1.6.0", "@jimp/js-tiff": "1.6.0", "@jimp/plugin-blit": "1.6.0", "@jimp/plugin-blur": "1.6.0", "@jimp/plugin-circle": "1.6.0", "@jimp/plugin-color": "1.6.0", "@jimp/plugin-contain": "1.6.0", "@jimp/plugin-cover": "1.6.0", "@jimp/plugin-crop": "1.6.0", "@jimp/plugin-displace": "1.6.0", "@jimp/plugin-dither": "1.6.0", "@jimp/plugin-fisheye": "1.6.0", "@jimp/plugin-flip": "1.6.0", "@jimp/plugin-hash": "1.6.0", "@jimp/plugin-mask": "1.6.0", "@jimp/plugin-print": "1.6.0", "@jimp/plugin-quantize": "1.6.0", "@jimp/plugin-resize": "1.6.0", "@jimp/plugin-rotate": "1.6.0", "@jimp/plugin-threshold": "1.6.0", "@jimp/types": "1.6.0", "@jimp/utils": "1.6.0" } }, "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg=="], + + "jpeg-js": ["jpeg-js@0.4.4", "", {}, "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="], + + "js-base64": ["js-base64@3.9.6", "", {}, "sha512-LjkzbLtU6Lx6fjXMYGEACEB7rdtqZtxkBe9aS1ZpDNUyWgUivw3yBEIhQ37OVygJYRt+C+9e9fVT8PpFzH2Hww=="], + + "js-sha512": ["js-sha512@0.9.0", "", {}, "sha512-mirki9WS/SUahm+1TbAPkqvbCiCfOAAsyXeHxK1UkullnJVVqoJG2pL9ObvT05CN+tM7fxhfYm0NbXn+1hWoZg=="], + + "js-yaml": ["js-yaml@4.3.2", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-stringify-safe": ["json-stringify-safe@5.0.1", "", {}, "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="], + + "jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "klayjs": ["klayjs@0.4.1", "", {}, "sha512-WUNxuO7O79TEkxCj6OIaK5TJBkaWaR/IKNTakgV9PwDn+mrr63MLHed34AcE2yTaDntgO6l0zGFIzhcoTeroTA=="], + + "kuler": ["kuler@2.0.0", "", {}, "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="], + + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + + "lazy-val": ["lazy-val@1.0.5", "", {}, "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q=="], + + "libsodium": ["libsodium@0.8.4", "", {}, "sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw=="], + + "libsodium-wrappers": ["libsodium-wrappers@0.8.4", "", { "dependencies": { "libsodium": "^0.8.0" } }, "sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw=="], + + "lit": ["lit@3.3.3", "", { "dependencies": { "@lit/reactive-element": "^2.1.0", "lit-element": "^4.2.0", "lit-html": "^3.3.0" } }, "sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw=="], + + "lit-element": ["lit-element@4.2.2", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.5.0", "@lit/reactive-element": "^2.1.0", "lit-html": "^3.3.0" } }, "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w=="], + + "lit-html": ["lit-html@3.3.3", "", { "dependencies": { "@types/trusted-types": "^2.0.2" } }, "sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA=="], + + "lit-svelte-stores": ["lit-svelte-stores@0.3.3", "", { "dependencies": { "lit": "^3.0.0", "lodash-es": "^4.17.21", "svelte": "^3.38.3" } }, "sha512-jtaHfgSlDuiwzmKHr6iF9uW6wV/CMRkj6QRCOnKrtRdb+uAUIiqhhNhBV2JXDO0OpCcTpqkM8kOEnotlLAYEAQ=="], + + "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], + + "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], + + "lodash.escaperegexp": ["lodash.escaperegexp@4.1.2", "", {}, "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw=="], + + "lodash.isequal": ["lodash.isequal@4.5.0", "", {}, "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="], + + "logform": ["logform@2.7.0", "", { "dependencies": { "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" } }, "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ=="], + + "lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="], + + "make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="], + + "matcher": ["matcher@3.0.0", "", { "dependencies": { "escape-string-regexp": "^4.0.0" } }, "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng=="], + + "mime": ["mime@4.0.0", "", { "bin": { "mime": "bin/cli.js" } }, "sha512-pzhgdeqU5pJ9t5WK9m4RT4GgGWqYJylxUf62Yb9datXRwdcw5MjiD1BYI5evF8AgTXN9gtKX3CFLvCUL5fAhEA=="], + + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], + + "modify-filename": ["modify-filename@1.1.0", "", {}, "sha512-EickqnKq3kVVaZisYuCxhtKbZjInCuwgwZWyAmRIp1NTMhri7r3380/uqwrUHfaDiPzLVTuoNy4whX66bxPVog=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nanoassert": ["nanoassert@2.0.0", "", {}, "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA=="], + + "nanoid": ["nanoid@5.0.4", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig=="], + + "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], + + "normalize-url": ["normalize-url@6.1.0", "", {}, "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="], + + "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + + "omggif": ["omggif@1.0.10", "", {}, "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "one-time": ["one-time@1.0.0", "", { "dependencies": { "fn.name": "1.x.x" } }, "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g=="], + + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], + + "p-cancelable": ["p-cancelable@2.1.1", "", {}, "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="], + + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + + "parse-bmfont-ascii": ["parse-bmfont-ascii@1.0.6", "", {}, "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="], + + "parse-bmfont-binary": ["parse-bmfont-binary@1.0.6", "", {}, "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="], + + "parse-bmfont-xml": ["parse-bmfont-xml@1.1.6", "", { "dependencies": { "xml-parse-from-string": "^1.0.0", "xml2js": "^0.5.0" } }, "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "peek-readable": ["peek-readable@4.1.0", "", {}, "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg=="], + + "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + + "pixelmatch": ["pixelmatch@5.3.0", "", { "dependencies": { "pngjs": "^6.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q=="], + + "pngjs": ["pngjs@7.0.0", "", {}, "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow=="], + + "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], + + "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], + + "prosemirror-commands": ["prosemirror-commands@1.7.2", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="], + + "prosemirror-model": ["prosemirror-model@1.25.12", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-Ue2gTmXMa7EhpLNhC7J+h4+ykD8ha12K6rrZFFKKJHBForfIStw5gJ6Zrf1mqqAa9NmpmEB4wp9bKmA4eUVjWg=="], + + "prosemirror-state": ["prosemirror-state@1.4.4", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw=="], + + "prosemirror-transform": ["prosemirror-transform@1.12.4", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-2/WuPum3pn+O/Vi2vzpi8210ICUe2kIPXdLYjQ09Pv5DtT5bcKWMJhAKPBwvpPjpp5iOYUVwVEr0gOM1BY1Mgw=="], + + "prosemirror-view": ["prosemirror-view@1.42.9", "", { "dependencies": { "prosemirror-model": "^1.25.12", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-bKbfzeKZOu2H2JQU2TaJmYu6EBcor3VnGIR4jR31cbEt1ztUnfUB6bKGV1+fJzOJdrVWR+tRU0208zM3oQx4wA=="], + + "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], + + "pupa": ["pupa@2.1.1", "", { "dependencies": { "escape-goat": "^2.0.0" } }, "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A=="], + + "qr-creator": ["qr-creator@1.0.0", "", {}, "sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ=="], + + "quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="], + + "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "readable-web-to-node-stream": ["readable-web-to-node-stream@3.0.4", "", { "dependencies": { "readable-stream": "^4.7.0" } }, "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw=="], + + "resolve-alpn": ["resolve-alpn@1.2.1", "", {}, "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="], + + "responselike": ["responselike@2.0.1", "", { "dependencies": { "lowercase-keys": "^2.0.0" } }, "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw=="], + + "roarr": ["roarr@2.15.4", "", { "dependencies": { "boolean": "^3.0.1", "detect-node": "^2.0.4", "globalthis": "^1.0.1", "json-stringify-safe": "^5.0.1", "semver-compare": "^1.0.0", "sprintf-js": "^1.1.2" } }, "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], + + "sax": ["sax@1.6.1", "", {}, "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q=="], + + "semver": ["semver@7.8.6", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw=="], + + "semver-compare": ["semver-compare@1.0.0", "", {}, "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="], + + "serialize-error": ["serialize-error@7.0.1", "", { "dependencies": { "type-fest": "^0.13.1" } }, "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw=="], + + "simple-xml-to-json": ["simple-xml-to-json@1.2.7", "", {}, "sha512-mz9VXphOxQWX3eQ/uXCtm6upltoN0DLx8Zb5T4TFC4FHB7S9FDPGre8CfLWqPWQQH/GrQYd2AXhhVM5LDpYx6Q=="], + + "slice-ansi": ["slice-ansi@3.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ=="], + + "sort-keys": ["sort-keys@5.1.0", "", { "dependencies": { "is-plain-obj": "^4.0.0" } }, "sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ=="], + + "sort-keys-length": ["sort-keys-length@1.0.1", "", { "dependencies": { "sort-keys": "^1.0.0" } }, "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw=="], + + "split": ["split@1.0.1", "", { "dependencies": { "through": "2" } }, "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg=="], + + "sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], + + "stack-trace": ["stack-trace@0.0.10", "", {}, "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strtok3": ["strtok3@6.3.0", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^4.1.0" } }, "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw=="], + + "sumchecker": ["sumchecker@3.0.1", "", { "dependencies": { "debug": "^4.1.0" } }, "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg=="], + + "svelte": ["svelte@3.59.2", "", {}, "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA=="], + + "text-hex": ["text-hex@1.0.0", "", {}, "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="], + + "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="], + + "tiny-typed-emitter": ["tiny-typed-emitter@2.1.0", "", {}, "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA=="], + + "tinycolor2": ["tinycolor2@1.6.0", "", {}, "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="], + + "token-types": ["token-types@4.2.1", "", { "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ=="], + + "triple-beam": ["triple-beam@1.4.1", "", {}, "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg=="], + + "ts-md5": ["ts-md5@1.3.1", "", {}, "sha512-DiwiXfwvcTeZ5wCE0z+2A9EseZsztaiZtGrtSaY5JOD7ekPnR/GoIVD5gXZAlK9Na9Kvpo9Waz5rW64WKAWApg=="], + + "ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "optionalPeers": ["@swc/core", "@swc/wasm"], "bin": { "ts-node": "dist/bin.js", "ts-script": "dist/bin-script-deprecated.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="], + + "tslib": ["tslib@2.9.1", "", {}, "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA=="], + + "type-fest": ["type-fest@0.13.1", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + + "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "unused-filename": ["unused-filename@2.1.0", "", { "dependencies": { "modify-filename": "^1.1.0", "path-exists": "^4.0.0" } }, "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg=="], + + "utf-8-validate": ["utf-8-validate@6.0.6", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA=="], + + "utif2": ["utif2@4.1.0", "", { "dependencies": { "pako": "^1.0.11" } }, "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + + "v8-compile-cache-lib": ["v8-compile-cache-lib@3.0.1", "", {}, "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="], + + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + + "webcola": ["webcola@3.4.0", "", { "dependencies": { "d3-dispatch": "^1.0.3", "d3-drag": "^1.0.4", "d3-shape": "^1.3.5", "d3-timer": "^1.0.5" } }, "sha512-4BiLXjXw3SJHo3Xd+rF+7fyClT6n7I+AR6TkBqyQ4kTsePSAMDLRCXY1f3B/kXJeP9tYn4G1TblxTO+jAt0gaw=="], + + "winston": ["winston@3.11.0", "", { "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", "logform": "^2.4.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", "winston-transport": "^4.5.0" } }, "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g=="], + + "winston-transport": ["winston-transport@4.9.0", "", { "dependencies": { "logform": "^2.7.0", "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" } }, "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "ws": ["ws@8.22.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-oyL6OPYme/CmiFvNuGzeoxCJ4nOrZE2O1FwM9MWM1AsGri6nLXB2pg+lNA8aLeXMSav0J6eIVS1j6vUPzUtK9g=="], + + "xml-parse-from-string": ["xml-parse-from-string@1.0.1", "", {}, "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="], + + "xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="], + + "xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], + + "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + + "yn": ["yn@3.1.1", "", {}, "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="], + + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + + "@bitgo/blake2b-wasm/nanoassert": ["nanoassert@1.1.0", "", {}, "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ=="], + + "@electron/get/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + + "@electron/get/semver": ["semver@6.3.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-GYrCADwpu6yV5OAvchkQ27Z5wwMxWAEMg5NNWjyHh/5DboFFqbdbvYNIvZouQpxXyeMPoTOh0vdPYKlf0ZswdQ=="], + + "@holochain-open-dev/utils/@msgpack/msgpack": ["@msgpack/msgpack@3.1.3", "", {}, "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA=="], + + "@holochain/client/@msgpack/msgpack": ["@msgpack/msgpack@3.1.3", "", {}, "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA=="], + + "@jimp/core/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], + + "@scoped-elements/cytoscape/lit": ["lit@2.8.0", "", { "dependencies": { "@lit/reactive-element": "^1.6.0", "lit-element": "^3.3.0", "lit-html": "^2.8.0" } }, "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA=="], + + "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], + + "color/color-convert": ["color-convert@3.1.3", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg=="], + + "color-string/color-name": ["color-name@2.1.1", "", {}, "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg=="], + + "electron/@types/node": ["@types/node@20.19.43", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA=="], + + "image-q/@types/node": ["@types/node@16.9.1", "", {}, "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g=="], + + "logform/@colors/colors": ["@colors/colors@1.6.0", "", {}, "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA=="], + + "pixelmatch/pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="], + + "readable-web-to-node-stream/readable-stream": ["readable-stream@4.8.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-2jhTTU3Eilp/2DMT71gbcoqC35eQHasMJH0RHkYxwlxIv3+FR6Y5xAFZIwEGLxKkjZYEFlsiMNIdwUqjK2lLHQ=="], + + "sort-keys-length/sort-keys": ["sort-keys@1.1.2", "", { "dependencies": { "is-plain-obj": "^1.0.0" } }, "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg=="], + + "@electron/get/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], + + "@electron/get/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + + "@scoped-elements/cytoscape/lit/@lit/reactive-element": ["@lit/reactive-element@1.6.3", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.0.0" } }, "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ=="], + + "@scoped-elements/cytoscape/lit/lit-element": ["lit-element@3.3.3", "", { "dependencies": { "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", "lit-html": "^2.8.0" } }, "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA=="], + + "@scoped-elements/cytoscape/lit/lit-html": ["lit-html@2.8.0", "", { "dependencies": { "@types/trusted-types": "^2.0.2" } }, "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q=="], + + "color/color-convert/color-name": ["color-name@2.1.1", "", {}, "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg=="], + + "sort-keys-length/sort-keys/is-plain-obj": ["is-plain-obj@1.1.0", "", {}, "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg=="], + } +} diff --git a/weave/package.json b/weave/package.json new file mode 100644 index 00000000..dfc9cd75 --- /dev/null +++ b/weave/package.json @@ -0,0 +1,20 @@ +{ + "name": "nondominium-weave", + "private": true, + "version": "0.0.0", + "description": "Runs Nondominium as a Moss tool in weave dev mode. Kept out of the root workspaces so CI and the standalone build never install Electron.", + "scripts": { + "agent1": "weave --agent-idx 1 --dev-config ./weave.dev.config.ts", + "agent2": "sleep 5 && weave --agent-idx 2 --dev-config ./weave.dev.config.ts --sync-time 20000" + }, + "devDependencies": { + "@theweave/cli": "0.16.0-rc.5", + "@types/node": "^22.0.0", + "tslib": "^2.8.1", + "typescript": "~5.9.3" + }, + "trustedDependencies": [ + "@theweave/cli", + "electron" + ] +} diff --git a/weave/tsconfig.json b/weave/tsconfig.json new file mode 100644 index 00000000..44603fbb --- /dev/null +++ b/weave/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "skipLibCheck": true, + "strict": true, + "types": ["node"] + }, + "include": ["weave.dev.config.ts"] +} diff --git a/weave/weave.dev.config.ts b/weave/weave.dev.config.ts new file mode 100644 index 00000000..dcf777f5 --- /dev/null +++ b/weave/weave.dev.config.ts @@ -0,0 +1,60 @@ +import * as path from 'node:path'; +import { defineConfig } from '@theweave/cli'; + +/** + * Dev-mode setup for the Moss pilot: two agents, one group, Nondominium served + * from the local Vite dev server. `weave` loads this file through ts-node inside + * Electron, so it is CommonJS (see tsconfig.json next to it). + * + * Both agents must use the same config: the group `networkSeed` is what puts + * them in the same group. To run on two machines, pass the same + * `--bootstrap-url` and `--relay-url` to every `weave` call (see + * documentation/specifications/moss-integration.md). + */ +const repoRoot = path.resolve(__dirname, '..'); +const icon = { type: 'filesystem', path: path.join(repoRoot, 'ui/static/icon.png') } as const; + +/** Port the Vite dev server of `ui/` listens on, matched by `bun run tool-dev`. */ +const UI_PORT = 8888; + +export default defineConfig({ + groups: [ + { + name: 'Nondominium Pilot', + networkSeed: 'nondominium-moss-pilot-dev-v1', + icon, + creatingAgent: { + agentIdx: 1, + agentProfile: { nickname: 'Alice' } + }, + joiningAgents: [ + { + agentIdx: 2, + agentProfile: { nickname: 'Bob' } + } + ], + tools: [ + { + name: 'Nondominium', + instanceName: 'Nondominium', + registeringAgent: 1, + joiningAgents: [2] + } + ] + } + ], + tools: [ + { + name: 'Nondominium', + subtitle: 'Commons-based resource sharing', + description: 'Resource sharing for open value networks, built on Valueflows.', + icon, + source: { + type: 'localhost', + happPath: path.join(repoRoot, 'workdir/nondominium.happ'), + uiPort: UI_PORT + } + } + ], + toolCurations: [] +}); diff --git a/workdir/moss.yaml b/workdir/moss.yaml index 3e510596..35c9b807 100644 --- a/workdir/moss.yaml +++ b/workdir/moss.yaml @@ -1,7 +1,7 @@ manifest_version: "1" name: nondominium description: Nondominium OVN resource sharing network with Lobby federation layer -icon: ../ui/src/assets/favicon.png +icon: ../ui/static/icon.png source: type: local path: ./nondominium.happ