From 55a8c9432e5ac7dd66b7fb81ae672ffd977fca0e Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Sun, 15 Mar 2026 20:08:10 -0400 Subject: [PATCH] v0 --- plugin-agent-permissions/.gitignore | 5 + .../paperclipai-plugin-sdk-1.0.0.tgz | Bin 0 -> 94045 bytes .../paperclipai-shared-0.3.1.tgz | Bin 0 -> 70066 bytes plugin-agent-permissions/SUBTASKS.md | 62 + plugin-agent-permissions/esbuild.config.mjs | 17 + plugin-agent-permissions/package.json | 48 + plugin-agent-permissions/pnpm-lock.yaml | 1217 +++++++++++++++++ plugin-agent-permissions/src/manifest.ts | 39 + .../src/ui/AgentPermissionsTab.tsx | 88 ++ .../src/ui/PermissionsNav.tsx | 54 + plugin-agent-permissions/src/ui/index.tsx | 2 + plugin-agent-permissions/src/worker.ts | 99 ++ plugin-agent-permissions/tsconfig.json | 23 + plugin-agent-permissions/vitest.config.ts | 10 + plugin-log-viewer/.gitignore | 3 + plugin-log-viewer/README.md | 41 + plugin-log-viewer/esbuild.config.mjs | 17 + plugin-log-viewer/package.json | 48 + plugin-log-viewer/pnpm-lock.yaml | 1217 +++++++++++++++++ plugin-log-viewer/rollup.config.mjs | 28 + plugin-log-viewer/src/manifest.ts | 53 + plugin-log-viewer/src/ui/index.tsx | 187 +++ plugin-log-viewer/src/worker.ts | 130 ++ plugin-log-viewer/tests/plugin.spec.ts | 26 + plugin-log-viewer/tsconfig.json | 27 + plugin-log-viewer/vitest.config.ts | 8 + 26 files changed, 3449 insertions(+) create mode 100644 plugin-agent-permissions/.gitignore create mode 100644 plugin-agent-permissions/.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz create mode 100644 plugin-agent-permissions/.paperclip-sdk/paperclipai-shared-0.3.1.tgz create mode 100644 plugin-agent-permissions/SUBTASKS.md create mode 100644 plugin-agent-permissions/esbuild.config.mjs create mode 100644 plugin-agent-permissions/package.json create mode 100644 plugin-agent-permissions/pnpm-lock.yaml create mode 100644 plugin-agent-permissions/src/manifest.ts create mode 100644 plugin-agent-permissions/src/ui/AgentPermissionsTab.tsx create mode 100644 plugin-agent-permissions/src/ui/PermissionsNav.tsx create mode 100644 plugin-agent-permissions/src/ui/index.tsx create mode 100644 plugin-agent-permissions/src/worker.ts create mode 100644 plugin-agent-permissions/tsconfig.json create mode 100644 plugin-agent-permissions/vitest.config.ts create mode 100644 plugin-log-viewer/.gitignore create mode 100644 plugin-log-viewer/README.md create mode 100644 plugin-log-viewer/esbuild.config.mjs create mode 100644 plugin-log-viewer/package.json create mode 100644 plugin-log-viewer/pnpm-lock.yaml create mode 100644 plugin-log-viewer/rollup.config.mjs create mode 100644 plugin-log-viewer/src/manifest.ts create mode 100644 plugin-log-viewer/src/ui/index.tsx create mode 100644 plugin-log-viewer/src/worker.ts create mode 100644 plugin-log-viewer/tests/plugin.spec.ts create mode 100644 plugin-log-viewer/tsconfig.json create mode 100644 plugin-log-viewer/vitest.config.ts diff --git a/plugin-agent-permissions/.gitignore b/plugin-agent-permissions/.gitignore new file mode 100644 index 0000000..0e64b01 --- /dev/null +++ b/plugin-agent-permissions/.gitignore @@ -0,0 +1,5 @@ +node_modules +dist +.pnpm-debug.log +*.log +.DS_Store diff --git a/plugin-agent-permissions/.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz b/plugin-agent-permissions/.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..5771390837c3a19578cc32c61bb0339341a1629b GIT binary patch literal 94045 zcmV)7K*zryiwFP!000001MI!)cH=g(D7=5?DG*IoBK63W-M8#f$MJN!oy3#wwm;jQ zoPDyhEn0*mwkcA>i`^c_Ywch2`&+ZlGo14t=TYWK&Z-MQfCMSYm!4Z|t)xv7C=?1n zp-`yH!XKacQ#lC2EFYW}aS+Kg^WJ6uc89;s&CREe9}D<*b91x$@8*-ITVIOJM^Bz^ zZf!k%y7^daZaw<)34FgxB$|Fjmiy_yZQi=AYUlnzeuD=OJ`oSZH!$*HJQa&nW-`yj zBuT}AzmVxT3KwD#71J=zyiWv{KAy=;ikXZSGR;IP^CFGKBJ#snjFWg0PDOJ1PLA_T zWC_<5ev!|TG!tV#7DXmSK9h5RbrI$>A+ysWi~^CQB2A*GSm5iV$VDnQ!ucYSa~bD= z-z>>;Xe3YlaV`Qm@rx)�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 M0n)(lEdV?R0EA<%@c;k- literal 0 HcmV?d00001 diff --git a/plugin-agent-permissions/.paperclip-sdk/paperclipai-shared-0.3.1.tgz b/plugin-agent-permissions/.paperclip-sdk/paperclipai-shared-0.3.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..91e835eb77f1eb1ac202eaf1c94411a5f74b17c9 GIT binary patch literal 70066 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

R}?daup6xRZO#SSD&zt^^KJ9bIZK7EbLG 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" + } +} diff --git a/plugin-agent-permissions/pnpm-lock.yaml b/plugin-agent-permissions/pnpm-lock.yaml new file mode 100644 index 0000000..1ba45ef --- /dev/null +++ b/plugin-agent-permissions/pnpm-lock.yaml @@ -0,0 +1,1217 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + '@paperclipai/shared': file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + +importers: + + .: + dependencies: + react: + specifier: '>=18' + version: 19.2.4 + devDependencies: + '@paperclipai/plugin-sdk': + specifier: file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz + version: file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz(react@19.2.4) + '@paperclipai/shared': + specifier: file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + version: file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + '@rollup/plugin-node-resolve': + specifier: ^16.0.1 + version: 16.0.3(rollup@4.59.0) + '@rollup/plugin-typescript': + specifier: ^12.1.2 + version: 12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@5.9.3) + '@types/node': + specifier: ^24.6.0 + version: 24.12.0 + '@types/react': + specifier: ^19.0.8 + version: 19.2.14 + esbuild: + specifier: ^0.27.3 + version: 0.27.4 + rollup: + specifier: ^4.38.0 + version: 4.59.0 + tslib: + specifier: ^2.8.1 + version: 2.8.1 + typescript: + specifier: ^5.7.3 + version: 5.9.3 + vitest: + specifier: ^3.0.5 + version: 3.2.4(@types/node@24.12.0) + +packages: + + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@paperclipai/plugin-sdk@file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz': + resolution: {integrity: sha512-B7I6UrYh2f9AI+8ebvmj5VLHDBhlw0/op6qBpKTvWluUec8lLJbnUVp/NMWZrshy3R51PfHsavaSz1NlBpCb3w==, tarball: file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz} + version: 1.0.0 + hasBin: true + peerDependencies: + react: '>=18' + peerDependenciesMeta: + react: + optional: true + + '@paperclipai/shared@file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz': + resolution: {integrity: sha512-xIzx/jO2GwmhRCGvtSeKLcm7pl5wesxpLHFzkZqAI8lW/evLSy7cgUcFZFuhFCvWbARp3QAoiAHCAc3UU5yPUA==, tarball: file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz} + version: 0.3.1 + + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-typescript@12.3.0': + resolution: {integrity: sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + cpu: [x64] + os: [win32] + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + engines: {node: '>= 16'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + engines: {node: '>=14.0.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + +snapshots: + + '@esbuild/aix-ppc64@0.27.4': + optional: true + + '@esbuild/android-arm64@0.27.4': + optional: true + + '@esbuild/android-arm@0.27.4': + optional: true + + '@esbuild/android-x64@0.27.4': + optional: true + + '@esbuild/darwin-arm64@0.27.4': + optional: true + + '@esbuild/darwin-x64@0.27.4': + optional: true + + '@esbuild/freebsd-arm64@0.27.4': + optional: true + + '@esbuild/freebsd-x64@0.27.4': + optional: true + + '@esbuild/linux-arm64@0.27.4': + optional: true + + '@esbuild/linux-arm@0.27.4': + optional: true + + '@esbuild/linux-ia32@0.27.4': + optional: true + + '@esbuild/linux-loong64@0.27.4': + optional: true + + '@esbuild/linux-mips64el@0.27.4': + optional: true + + '@esbuild/linux-ppc64@0.27.4': + optional: true + + '@esbuild/linux-riscv64@0.27.4': + optional: true + + '@esbuild/linux-s390x@0.27.4': + optional: true + + '@esbuild/linux-x64@0.27.4': + optional: true + + '@esbuild/netbsd-arm64@0.27.4': + optional: true + + '@esbuild/netbsd-x64@0.27.4': + optional: true + + '@esbuild/openbsd-arm64@0.27.4': + optional: true + + '@esbuild/openbsd-x64@0.27.4': + optional: true + + '@esbuild/openharmony-arm64@0.27.4': + optional: true + + '@esbuild/sunos-x64@0.27.4': + optional: true + + '@esbuild/win32-arm64@0.27.4': + optional: true + + '@esbuild/win32-ia32@0.27.4': + optional: true + + '@esbuild/win32-x64@0.27.4': + optional: true + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@paperclipai/plugin-sdk@file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz(react@19.2.4)': + dependencies: + '@paperclipai/shared': file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + zod: 3.25.76 + optionalDependencies: + react: 19.2.4 + + '@paperclipai/shared@file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz': + dependencies: + zod: 3.25.76 + + '@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.11 + optionalDependencies: + rollup: 4.59.0 + + '@rollup/plugin-typescript@12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@5.9.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + resolve: 1.22.11 + typescript: 5.9.3 + optionalDependencies: + rollup: 4.59.0 + tslib: 2.8.1 + + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.59.0 + + '@rollup/rollup-android-arm-eabi@4.59.0': + optional: true + + '@rollup/rollup-android-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-x64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.59.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.59.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.59.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.59.0': + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/node@24.12.0': + dependencies: + undici-types: 7.16.0 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/resolve@1.20.2': {} + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@24.12.0))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.1(@types/node@24.12.0) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.2.4': + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.1.0 + + '@vitest/snapshot@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@3.2.4': + dependencies: + tinyspy: 4.0.4 + + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 + + assertion-error@2.0.1: {} + + cac@6.7.14: {} + + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.3 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + + check-error@2.1.3: {} + + csstype@3.2.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-eql@5.0.2: {} + + deepmerge@4.3.1: {} + + es-module-lexer@1.7.0: {} + + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + expect-type@1.3.0: {} + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-module@1.0.0: {} + + js-tokens@9.0.1: {} + + loupe@3.2.1: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + path-parse@1.0.7: {} + + pathe@2.0.3: {} + + pathval@2.0.1: {} + + picocolors@1.1.1: {} + + picomatch@4.0.3: {} + + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + react@19.2.4: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup@4.59.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 + fsevents: 2.3.3 + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@3.10.0: {} + + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + + supports-preserve-symlinks-flag@1.0.0: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tinypool@1.1.1: {} + + tinyrainbow@2.0.0: {} + + tinyspy@4.0.4: {} + + tslib@2.8.1: {} + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + vite-node@3.2.4(@types/node@24.12.0): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.1(@types/node@24.12.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@7.3.1(@types/node@24.12.0): + dependencies: + esbuild: 0.27.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.8 + rollup: 4.59.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.12.0 + fsevents: 2.3.3 + + vitest@3.2.4(@types/node@24.12.0): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.12.0)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.1(@types/node@24.12.0) + vite-node: 3.2.4(@types/node@24.12.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + zod@3.25.76: {} diff --git a/plugin-agent-permissions/src/manifest.ts b/plugin-agent-permissions/src/manifest.ts new file mode 100644 index 0000000..de11546 --- /dev/null +++ b/plugin-agent-permissions/src/manifest.ts @@ -0,0 +1,39 @@ +import type { PaperclipPluginManifestV1 } from "@paperclipai/plugin-sdk"; + +const manifest: PaperclipPluginManifestV1 = { + id: "paperclipai.plugin-agent-permissions", + apiVersion: 1, + version: "0.1.0", + displayName: "Agent Permissions", + description: "Per-agent permission toggling for fine-grained access control", + author: "FrenoCorp", + categories: ["ui", "automation"], + capabilities: [ + "agents.read", + "ui.detailTab.register", + "ui.sidebar.register" + ], + entrypoints: { + worker: "./dist/worker.js", + ui: "./dist/ui" + }, + ui: { + slots: [ + { + type: "detailTab", + id: "permissions", + displayName: "Permissions", + exportName: "AgentPermissionsTab", + entityTypes: ["agent"] + }, + { + type: "sidebar", + id: "permissions-nav", + displayName: "Permissions", + exportName: "PermissionsNav" + } + ] + } +}; + +export default manifest; diff --git a/plugin-agent-permissions/src/ui/AgentPermissionsTab.tsx b/plugin-agent-permissions/src/ui/AgentPermissionsTab.tsx new file mode 100644 index 0000000..1947bf0 --- /dev/null +++ b/plugin-agent-permissions/src/ui/AgentPermissionsTab.tsx @@ -0,0 +1,88 @@ +import { useState } from "react"; +import { usePluginData, usePluginAction } from "@paperclipai/plugin-sdk/ui"; +import type { PluginDetailTabProps } from "@paperclipai/plugin-sdk/ui"; + +const PERMISSION_KEYS = [ + "agents:create", + "users:invite", + "users:manage_permissions", + "tasks:assign", + "tasks:assign_scope", + "joins:approve" +] as const; + +const PERMISSION_LABELS: Record = { + "agents:create": "Create Agents", + "users:invite": "Invite Users", + "users:manage_permissions": "Manage Permissions", + "tasks:assign": "Assign Tasks", + "tasks:assign_scope": "Task Assignment Scope", + "joins:approve": "Approve Join Requests" +}; + +export function AgentPermissionsTab({ context }: PluginDetailTabProps) { + const { entityId: agentId } = context; + + const { data, loading, error, refresh } = usePluginData<{ + agentId: string; + permissions: Record; + }>("agent-permissions", { agentId }); + + const togglePermission = usePluginAction("toggle-agent-permission"); + const [updating, setUpdating] = useState(null); + + if (loading) return

; + if (error) return
Error: {error.message}
; + if (!data) return
No permissions data available
; + + async function handleToggle(permissionKey: string, currentEnabled: boolean) { + setUpdating(permissionKey); + try { + await togglePermission({ agentId, permissionKey, enabled: !currentEnabled }); + await refresh(); + } catch (err) { + console.error("Failed to toggle permission:", err); + } finally { + setUpdating(null); + } + } + + return ( +
+

Agent Permissions

+

+ Control what actions this agent can perform. +

+ +
+ {PERMISSION_KEYS.map((key) => { + const enabled = data.permissions[key] ?? false; + const isUpdating = updating === key; + + return ( + + ); + })} +
+
+ ); +} diff --git a/plugin-agent-permissions/src/ui/PermissionsNav.tsx b/plugin-agent-permissions/src/ui/PermissionsNav.tsx new file mode 100644 index 0000000..6fb1b15 --- /dev/null +++ b/plugin-agent-permissions/src/ui/PermissionsNav.tsx @@ -0,0 +1,54 @@ +import { usePluginData } from "@paperclipai/plugin-sdk/ui"; +import type { PluginSidebarProps } from "@paperclipai/plugin-sdk/ui"; + +interface AgentPermissionsSummary { + agentId: string; + agentName: string; + permissions: Record; +} + +export function PermissionsNav({ context }: PluginSidebarProps) { + const { data: agentsData, loading, error } = usePluginData("all-agents-permissions"); + + if (loading) return
Loading...
; + if (error) return
Error: {error.message}
; + if (!agentsData || agentsData.length === 0) { + return ( +
+

Permissions

+

No agents found

+
+ ); + } + + const agentsWithPermissions = agentsData.filter(a => + Object.values(a.permissions).some(v => v) + ); + + return ( +
+

Permissions

+

+ {agentsWithPermissions.length} agent(s) with custom permissions +

+
+ {agentsData.slice(0, 5).map(agent => { + const permCount = Object.values(agent.permissions).filter(Boolean).length; + return ( +
+
{agent.agentName}
+
+ {permCount} permission(s) granted +
+
+ ); + })} +
+
+ ); +} diff --git a/plugin-agent-permissions/src/ui/index.tsx b/plugin-agent-permissions/src/ui/index.tsx new file mode 100644 index 0000000..ff54f99 --- /dev/null +++ b/plugin-agent-permissions/src/ui/index.tsx @@ -0,0 +1,2 @@ +export { AgentPermissionsTab } from './AgentPermissionsTab'; +export { PermissionsNav } from './PermissionsNav'; diff --git a/plugin-agent-permissions/src/worker.ts b/plugin-agent-permissions/src/worker.ts new file mode 100644 index 0000000..0cbc4ae --- /dev/null +++ b/plugin-agent-permissions/src/worker.ts @@ -0,0 +1,99 @@ +import { definePlugin, runWorker } from "@paperclipai/plugin-sdk"; + +const PERMISSION_KEYS = [ + "agents:create", + "users:invite", + "users:manage_permissions", + "tasks:assign", + "tasks:assign_scope", + "joins:approve" +] as const; + +type PermissionKey = typeof PERMISSION_KEYS[number]; + +interface AgentPermissions { + agentId: string; + permissions: Record; +} + +interface AllAgentsPermissions { + agentId: string; + agentName: string; + permissions: Record; +} + +type AgentPermissionsMap = Record>; + +const plugin = definePlugin({ + async setup(ctx) { + ctx.data.register("agent-permissions", async (params) => { + const { agentId } = params as { agentId: string }; + + const allPerms = (await ctx.state.get( + { scopeKind: "instance", stateKey: "agent_permissions" } + ) as AgentPermissionsMap) ?? {}; + + const agentPerms = allPerms[agentId] ?? {}; + + return { + agentId, + permissions: PERMISSION_KEYS.reduce((acc, key) => ({ + ...acc, + [key]: agentPerms[key] ?? false + }), {} as Record) + }; + }); + + ctx.actions.register("toggle-agent-permission", async (params) => { + const { agentId, permissionKey, enabled } = params as { + agentId: string; + permissionKey: PermissionKey; + enabled: boolean; + }; + + const allPerms = (await ctx.state.get( + { scopeKind: "instance", stateKey: "agent_permissions" } + ) as AgentPermissionsMap) ?? {}; + + const agentPerms = allPerms[agentId] ?? {}; + const updated = { ...agentPerms, [permissionKey]: enabled }; + + await ctx.state.set( + { scopeKind: "instance", stateKey: "agent_permissions" }, + { ...allPerms, [agentId]: updated } + ); + + return { success: true }; + }); + + ctx.data.register("all-agents-permissions", async (params) => { + const companyId = typeof params.companyId === "string" ? params.companyId : ""; + + const agents = companyId + ? await ctx.agents.list({ companyId, limit: 100, offset: 0 }) + : []; + + const allPerms = (await ctx.state.get( + { scopeKind: "instance", stateKey: "agent_permissions" } + ) as AgentPermissionsMap) ?? {}; + + const result: AllAgentsPermissions[] = agents.map(agent => ({ + agentId: agent.id, + agentName: agent.name, + permissions: PERMISSION_KEYS.reduce((acc, key) => ({ + ...acc, + [key]: allPerms[agent.id]?.[key] ?? false + }), {} as Record) + })); + + return result; + }); + }, + + async onHealth() { + return { status: "ok", message: "Agent permissions plugin running" }; + } +}); + +export default plugin; +runWorker(plugin, import.meta.url); diff --git a/plugin-agent-permissions/tsconfig.json b/plugin-agent-permissions/tsconfig.json new file mode 100644 index 0000000..9375c17 --- /dev/null +++ b/plugin-agent-permissions/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "jsx": "react-jsx", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "noEmit": true, + "isolatedModules": true, + "allowSyntheticDefaultImports": true, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*", "tests/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/plugin-agent-permissions/vitest.config.ts b/plugin-agent-permissions/vitest.config.ts new file mode 100644 index 0000000..3074ae3 --- /dev/null +++ b/plugin-agent-permissions/vitest.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "node", + globals: true, + include: ["tests/**/*.spec.ts"], + exclude: ["node_modules", "dist"] + } +}); diff --git a/plugin-log-viewer/.gitignore b/plugin-log-viewer/.gitignore new file mode 100644 index 0000000..0430cc3 --- /dev/null +++ b/plugin-log-viewer/.gitignore @@ -0,0 +1,3 @@ +dist +node_modules +.paperclip-sdk diff --git a/plugin-log-viewer/README.md b/plugin-log-viewer/README.md new file mode 100644 index 0000000..95d67ac --- /dev/null +++ b/plugin-log-viewer/README.md @@ -0,0 +1,41 @@ +# Log Viewer Plugin + +A Paperclip plugin that monitors and displays agent run logs and activity in real-time. + +## Features + +- **Dashboard Widget**: Shows recent log activity on the main dashboard +- **Full Log Page**: View all captured events with filtering +- **Event Tracking**: Captures: + - Agent run started/finished/failed + - Issue created/updated + - Goal created + - Agent created + +## Development + +```bash +pnpm install +pnpm dev # watch builds +pnpm dev:ui # local dev server with hot-reload events +pnpm test +``` + +This scaffold snapshots `@paperclipai/plugin-sdk` and `@paperclipai/shared` from a local Paperclip checkout at: + +`/home/mike/code/paperclip/packages/plugins/sdk` + +The packed tarballs live in `.paperclip-sdk/` for local development. Before publishing this plugin, switch those dependencies to published package versions once they are available on npm. + +## Install Into Paperclip + +```bash +curl -X POST http://127.0.0.1:3100/api/plugins/install \ + -H "Content-Type: application/json" \ + -d '{"packageName":"/home/mike/code/paperclip_plugins/plugin-log-viewer","isLocalPath":true}' +``` + +## Build Options + +- `pnpm build` uses esbuild presets from `@paperclipai/plugin-sdk/bundlers`. +- `pnpm build:rollup` uses rollup presets from the same SDK. diff --git a/plugin-log-viewer/esbuild.config.mjs b/plugin-log-viewer/esbuild.config.mjs new file mode 100644 index 0000000..b5cfd36 --- /dev/null +++ b/plugin-log-viewer/esbuild.config.mjs @@ -0,0 +1,17 @@ +import esbuild from "esbuild"; +import { createPluginBundlerPresets } from "@paperclipai/plugin-sdk/bundlers"; + +const presets = createPluginBundlerPresets({ uiEntry: "src/ui/index.tsx" }); +const watch = process.argv.includes("--watch"); + +const workerCtx = await esbuild.context(presets.esbuild.worker); +const manifestCtx = await esbuild.context(presets.esbuild.manifest); +const uiCtx = await esbuild.context(presets.esbuild.ui); + +if (watch) { + await Promise.all([workerCtx.watch(), manifestCtx.watch(), uiCtx.watch()]); + console.log("esbuild watch mode enabled for worker, manifest, and ui"); +} else { + await Promise.all([workerCtx.rebuild(), manifestCtx.rebuild(), uiCtx.rebuild()]); + await Promise.all([workerCtx.dispose(), manifestCtx.dispose(), uiCtx.dispose()]); +} diff --git a/plugin-log-viewer/package.json b/plugin-log-viewer/package.json new file mode 100644 index 0000000..ede0594 --- /dev/null +++ b/plugin-log-viewer/package.json @@ -0,0 +1,48 @@ +{ + "name": "@paperclipai/plugin-log-viewer", + "version": "0.1.0", + "type": "module", + "private": true, + "description": "A Paperclip plugin", + "scripts": { + "build": "node ./esbuild.config.mjs", + "build:rollup": "rollup -c", + "dev": "node ./esbuild.config.mjs --watch", + "dev:ui": "paperclip-plugin-dev-server --root . --ui-dir dist/ui --port 4177", + "test": "vitest run --config ./vitest.config.ts", + "typecheck": "tsc --noEmit" + }, + "paperclipPlugin": { + "manifest": "./dist/manifest.js", + "worker": "./dist/worker.js", + "ui": "./dist/ui/" + }, + "keywords": [ + "paperclip", + "plugin", + "connector" + ], + "author": "Plugin Author", + "license": "MIT", + "pnpm": { + "overrides": { + "@paperclipai/shared": "file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz" + } + }, + "devDependencies": { + "@paperclipai/shared": "file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz", + "@paperclipai/plugin-sdk": "file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz", + "@rollup/plugin-node-resolve": "^16.0.1", + "@rollup/plugin-typescript": "^12.1.2", + "@types/node": "^24.6.0", + "@types/react": "^19.0.8", + "esbuild": "^0.27.3", + "rollup": "^4.38.0", + "tslib": "^2.8.1", + "typescript": "^5.7.3", + "vitest": "^3.0.5" + }, + "peerDependencies": { + "react": ">=18" + } +} diff --git a/plugin-log-viewer/pnpm-lock.yaml b/plugin-log-viewer/pnpm-lock.yaml new file mode 100644 index 0000000..1ba45ef --- /dev/null +++ b/plugin-log-viewer/pnpm-lock.yaml @@ -0,0 +1,1217 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + '@paperclipai/shared': file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + +importers: + + .: + dependencies: + react: + specifier: '>=18' + version: 19.2.4 + devDependencies: + '@paperclipai/plugin-sdk': + specifier: file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz + version: file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz(react@19.2.4) + '@paperclipai/shared': + specifier: file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + version: file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + '@rollup/plugin-node-resolve': + specifier: ^16.0.1 + version: 16.0.3(rollup@4.59.0) + '@rollup/plugin-typescript': + specifier: ^12.1.2 + version: 12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@5.9.3) + '@types/node': + specifier: ^24.6.0 + version: 24.12.0 + '@types/react': + specifier: ^19.0.8 + version: 19.2.14 + esbuild: + specifier: ^0.27.3 + version: 0.27.4 + rollup: + specifier: ^4.38.0 + version: 4.59.0 + tslib: + specifier: ^2.8.1 + version: 2.8.1 + typescript: + specifier: ^5.7.3 + version: 5.9.3 + vitest: + specifier: ^3.0.5 + version: 3.2.4(@types/node@24.12.0) + +packages: + + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@paperclipai/plugin-sdk@file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz': + resolution: {integrity: sha512-B7I6UrYh2f9AI+8ebvmj5VLHDBhlw0/op6qBpKTvWluUec8lLJbnUVp/NMWZrshy3R51PfHsavaSz1NlBpCb3w==, tarball: file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz} + version: 1.0.0 + hasBin: true + peerDependencies: + react: '>=18' + peerDependenciesMeta: + react: + optional: true + + '@paperclipai/shared@file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz': + resolution: {integrity: sha512-xIzx/jO2GwmhRCGvtSeKLcm7pl5wesxpLHFzkZqAI8lW/evLSy7cgUcFZFuhFCvWbARp3QAoiAHCAc3UU5yPUA==, tarball: file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz} + version: 0.3.1 + + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-typescript@12.3.0': + resolution: {integrity: sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0||^4.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + cpu: [x64] + os: [win32] + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + engines: {node: '>= 16'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + engines: {node: '>=14.0.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + +snapshots: + + '@esbuild/aix-ppc64@0.27.4': + optional: true + + '@esbuild/android-arm64@0.27.4': + optional: true + + '@esbuild/android-arm@0.27.4': + optional: true + + '@esbuild/android-x64@0.27.4': + optional: true + + '@esbuild/darwin-arm64@0.27.4': + optional: true + + '@esbuild/darwin-x64@0.27.4': + optional: true + + '@esbuild/freebsd-arm64@0.27.4': + optional: true + + '@esbuild/freebsd-x64@0.27.4': + optional: true + + '@esbuild/linux-arm64@0.27.4': + optional: true + + '@esbuild/linux-arm@0.27.4': + optional: true + + '@esbuild/linux-ia32@0.27.4': + optional: true + + '@esbuild/linux-loong64@0.27.4': + optional: true + + '@esbuild/linux-mips64el@0.27.4': + optional: true + + '@esbuild/linux-ppc64@0.27.4': + optional: true + + '@esbuild/linux-riscv64@0.27.4': + optional: true + + '@esbuild/linux-s390x@0.27.4': + optional: true + + '@esbuild/linux-x64@0.27.4': + optional: true + + '@esbuild/netbsd-arm64@0.27.4': + optional: true + + '@esbuild/netbsd-x64@0.27.4': + optional: true + + '@esbuild/openbsd-arm64@0.27.4': + optional: true + + '@esbuild/openbsd-x64@0.27.4': + optional: true + + '@esbuild/openharmony-arm64@0.27.4': + optional: true + + '@esbuild/sunos-x64@0.27.4': + optional: true + + '@esbuild/win32-arm64@0.27.4': + optional: true + + '@esbuild/win32-ia32@0.27.4': + optional: true + + '@esbuild/win32-x64@0.27.4': + optional: true + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@paperclipai/plugin-sdk@file:.paperclip-sdk/paperclipai-plugin-sdk-1.0.0.tgz(react@19.2.4)': + dependencies: + '@paperclipai/shared': file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz + zod: 3.25.76 + optionalDependencies: + react: 19.2.4 + + '@paperclipai/shared@file:.paperclip-sdk/paperclipai-shared-0.3.1.tgz': + dependencies: + zod: 3.25.76 + + '@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.11 + optionalDependencies: + rollup: 4.59.0 + + '@rollup/plugin-typescript@12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@5.9.3)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + resolve: 1.22.11 + typescript: 5.9.3 + optionalDependencies: + rollup: 4.59.0 + tslib: 2.8.1 + + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.59.0 + + '@rollup/rollup-android-arm-eabi@4.59.0': + optional: true + + '@rollup/rollup-android-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.59.0': + optional: true + + '@rollup/rollup-darwin-x64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.59.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.59.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.59.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.59.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.59.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.59.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.59.0': + optional: true + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/node@24.12.0': + dependencies: + undici-types: 7.16.0 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/resolve@1.20.2': {} + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@24.12.0))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.1(@types/node@24.12.0) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.2.4': + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.1.0 + + '@vitest/snapshot@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@3.2.4': + dependencies: + tinyspy: 4.0.4 + + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 + + assertion-error@2.0.1: {} + + cac@6.7.14: {} + + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.3 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + + check-error@2.1.3: {} + + csstype@3.2.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-eql@5.0.2: {} + + deepmerge@4.3.1: {} + + es-module-lexer@1.7.0: {} + + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + expect-type@1.3.0: {} + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-module@1.0.0: {} + + js-tokens@9.0.1: {} + + loupe@3.2.1: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + path-parse@1.0.7: {} + + pathe@2.0.3: {} + + pathval@2.0.1: {} + + picocolors@1.1.1: {} + + picomatch@4.0.3: {} + + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + react@19.2.4: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup@4.59.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 + fsevents: 2.3.3 + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + stackback@0.0.2: {} + + std-env@3.10.0: {} + + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + + supports-preserve-symlinks-flag@1.0.0: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tinypool@1.1.1: {} + + tinyrainbow@2.0.0: {} + + tinyspy@4.0.4: {} + + tslib@2.8.1: {} + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + vite-node@3.2.4(@types/node@24.12.0): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.1(@types/node@24.12.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@7.3.1(@types/node@24.12.0): + dependencies: + esbuild: 0.27.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.8 + rollup: 4.59.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.12.0 + fsevents: 2.3.3 + + vitest@3.2.4(@types/node@24.12.0): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.12.0)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.1(@types/node@24.12.0) + vite-node: 3.2.4(@types/node@24.12.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + zod@3.25.76: {} diff --git a/plugin-log-viewer/rollup.config.mjs b/plugin-log-viewer/rollup.config.mjs new file mode 100644 index 0000000..ccee40a --- /dev/null +++ b/plugin-log-viewer/rollup.config.mjs @@ -0,0 +1,28 @@ +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import typescript from "@rollup/plugin-typescript"; +import { createPluginBundlerPresets } from "@paperclipai/plugin-sdk/bundlers"; + +const presets = createPluginBundlerPresets({ uiEntry: "src/ui/index.tsx" }); + +function withPlugins(config) { + if (!config) return null; + return { + ...config, + plugins: [ + nodeResolve({ + extensions: [".ts", ".tsx", ".js", ".jsx", ".mjs"], + }), + typescript({ + tsconfig: "./tsconfig.json", + declaration: false, + declarationMap: false, + }), + ], + }; +} + +export default [ + withPlugins(presets.rollup.manifest), + withPlugins(presets.rollup.worker), + withPlugins(presets.rollup.ui), +].filter(Boolean); diff --git a/plugin-log-viewer/src/manifest.ts b/plugin-log-viewer/src/manifest.ts new file mode 100644 index 0000000..893407a --- /dev/null +++ b/plugin-log-viewer/src/manifest.ts @@ -0,0 +1,53 @@ +import type { PaperclipPluginManifestV1 } from "@paperclipai/plugin-sdk"; + +const manifest: PaperclipPluginManifestV1 = { + id: "paperclipai.plugin-log-viewer", + apiVersion: 1, + version: "0.1.0", + displayName: "Log Viewer", + description: "Monitor and view agent run logs and activity in real-time", + author: "FrenoCorp", + categories: ["automation", "ui"], + capabilities: [ + "events.subscribe", + "plugin.state.read", + "plugin.state.write", + "activity.read" + ], + entrypoints: { + worker: "./dist/worker.js", + ui: "./dist/ui" + }, + ui: { + slots: [ + { + type: "dashboardWidget", + id: "log-viewer-widget", + displayName: "Log Activity", + exportName: "DashboardWidget" + }, + { + type: "page", + id: "logs", + displayName: "Log Viewer", + exportName: "LogsPage" + } + ], + launchers: [ + { + id: "open-logs", + displayName: "View Logs", + placementZone: "globalToolbarButton", + action: { + type: "navigate", + target: "/plugins/log-viewer" + }, + render: { + environment: "hostRoute" + } + } + ] + } +}; + +export default manifest; diff --git a/plugin-log-viewer/src/ui/index.tsx b/plugin-log-viewer/src/ui/index.tsx new file mode 100644 index 0000000..1fc0e97 --- /dev/null +++ b/plugin-log-viewer/src/ui/index.tsx @@ -0,0 +1,187 @@ +import { usePluginData, usePluginAction, type PluginWidgetProps, type PluginPageProps } from "@paperclipai/plugin-sdk/ui"; + +interface LogEntry { + id: string; + eventType: string; + entityId: string; + entityType: string; + timestamp: string; + data?: Record; +} + +interface HealthData { + status: "ok" | "degraded" | "error"; + checkedAt: string; + logCount: number; +} + +export function DashboardWidget(_props: PluginWidgetProps) { + const { data, loading, error, refresh } = usePluginData("health"); + const { data: logs } = usePluginData("logs"); + + if (loading) return
Loading...
; + if (error) return
Error: {error.message}
; + + const recentLogs = logs?.slice(0, 3) ?? []; + + return ( +
+
+ Log Activity + + {data?.logCount ?? 0} events + +
+ {recentLogs.length === 0 ? ( +
No recent activity
+ ) : ( +
+ {recentLogs.map((log) => ( +
+ {formatEventType(log.eventType)} + {formatTime(log.timestamp)} +
+ ))} +
+ )} + +
+ ); +} + +export function LogsPage(_props: PluginPageProps) { + const { data: logs, loading, error, refresh } = usePluginData("logs"); + const clearLogs = usePluginAction("clear-logs"); + + const handleClear = async () => { + await clearLogs(); + void refresh(); + }; + + if (loading) return
Loading logs...
; + if (error) return
Error: {error.message}
; + + return ( +
+
+

Log Viewer

+
+ + +
+
+ +
+ {!logs || logs.length === 0 ? ( +
+ No log entries yet. Activity will appear here as events occur. +
+ ) : ( + logs.map((log) => ( +
+ + {formatEventType(log.eventType)} + +
+
+ {log.entityType}: {log.entityId.slice(0, 8)}... +
+ {log.data?.companyId ? ( +
+ Company: {String(log.data.companyId as string).slice(0, 8)}... +
+ ) : null} +
+ + {formatTime(log.timestamp)} + +
+ )) + )} +
+
+ ); +} + +function formatEventType(eventType: string): string { + const parts = eventType.split("."); + return parts[parts.length - 1] ?? eventType; +} + +function formatTime(timestamp: string): string { + const date = new Date(timestamp); + return date.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }); +} + +function getEventColor(eventType: string): string { + if (eventType.includes("failed")) return "#c00"; + if (eventType.includes("finished")) return "#4a4"; + if (eventType.includes("started")) return "#48a"; + if (eventType.includes("created")) return "#4a8"; + if (eventType.includes("updated")) return "#888"; + return "#666"; +} diff --git a/plugin-log-viewer/src/worker.ts b/plugin-log-viewer/src/worker.ts new file mode 100644 index 0000000..29d15d1 --- /dev/null +++ b/plugin-log-viewer/src/worker.ts @@ -0,0 +1,130 @@ +import { definePlugin, runWorker } from "@paperclipai/plugin-sdk"; + +interface LogEntry { + id: string; + eventType: string; + entityId: string; + entityType: string; + timestamp: string; + data?: Record; +} + +const MAX_LOG_ENTRIES = 100; + +const plugin = definePlugin({ + async setup(ctx) { + const recentLogs: LogEntry[] = []; + + async function addLogEntry(eventType: string, entityId: string, entityType: string, data?: Record) { + const entry: LogEntry = { + id: `log_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, + eventType, + entityId, + entityType, + timestamp: new Date().toISOString(), + data + }; + recentLogs.unshift(entry); + if (recentLogs.length > MAX_LOG_ENTRIES) { + recentLogs.pop(); + } + await ctx.state.set( + { scopeKind: "instance", stateKey: "recent_logs" }, + recentLogs + ); + } + + ctx.events.on("agent.run.started", async (event) => { + const runId = event.entityId ?? "unknown"; + await addLogEntry("agent.run.started", runId, "run", { + companyId: event.companyId + }); + ctx.logger.info("Agent run started", { runId }); + }); + + ctx.events.on("agent.run.finished", async (event) => { + const runId = event.entityId ?? "unknown"; + await addLogEntry("agent.run.finished", runId, "run", { + companyId: event.companyId + }); + ctx.logger.info("Agent run finished", { runId }); + }); + + ctx.events.on("agent.run.failed", async (event) => { + const runId = event.entityId ?? "unknown"; + await addLogEntry("agent.run.failed", runId, "run", { + companyId: event.companyId + }); + ctx.logger.info("Agent run failed", { runId }); + }); + + ctx.events.on("issue.created", async (event) => { + const issueId = event.entityId ?? "unknown"; + await addLogEntry("issue.created", issueId, "issue", { + companyId: event.companyId + }); + ctx.logger.info("Issue created", { issueId }); + }); + + ctx.events.on("issue.updated", async (event) => { + const issueId = event.entityId ?? "unknown"; + await addLogEntry("issue.updated", issueId, "issue", { + companyId: event.companyId + }); + ctx.logger.info("Issue updated", { issueId }); + }); + + ctx.events.on("goal.created", async (event) => { + const goalId = event.entityId ?? "unknown"; + await addLogEntry("goal.created", goalId, "goal", { + companyId: event.companyId + }); + ctx.logger.info("Goal created", { goalId }); + }); + + ctx.events.on("agent.created", async (event) => { + const agentId = event.entityId ?? "unknown"; + await addLogEntry("agent.created", agentId, "agent", { + companyId: event.companyId + }); + ctx.logger.info("Agent created", { agentId }); + }); + + ctx.data.register("logs", async () => { + const stored = await ctx.state.get( + { scopeKind: "instance", stateKey: "recent_logs" } + ); + return (stored as LogEntry[] | null) ?? recentLogs; + }); + + ctx.data.register("health", async () => { + return { + status: "ok", + checkedAt: new Date().toISOString(), + logCount: recentLogs.length + }; + }); + + ctx.actions.register("clear-logs", async () => { + recentLogs.length = 0; + await ctx.state.set( + { scopeKind: "instance", stateKey: "recent_logs" }, + [] + ); + ctx.logger.info("Logs cleared"); + return { success: true }; + }); + + ctx.actions.register("ping", async () => { + ctx.logger.info("Ping action invoked"); + return { pong: true, at: new Date().toISOString() }; + }); + }, + + async onHealth() { + return { status: "ok", message: "Plugin worker is running" }; + } +}); + +export default plugin; +runWorker(plugin, import.meta.url); diff --git a/plugin-log-viewer/tests/plugin.spec.ts b/plugin-log-viewer/tests/plugin.spec.ts new file mode 100644 index 0000000..2fc8e90 --- /dev/null +++ b/plugin-log-viewer/tests/plugin.spec.ts @@ -0,0 +1,26 @@ +import { describe, expect, it } from "vitest"; +import { createTestHarness } from "@paperclipai/plugin-sdk/testing"; +import manifest from "../src/manifest.js"; +import plugin from "../src/worker.js"; + +describe("plugin log viewer", () => { + it("registers data + actions and handles events", async () => { + const harness = createTestHarness({ manifest, capabilities: [...manifest.capabilities, "events.emit"] }); + await plugin.definition.setup(harness.ctx); + + await harness.emit("issue.created", { companyId: "comp_1" }, { entityId: "iss_1", entityType: "issue", companyId: "comp_1" }); + + const logs = await harness.getData>("logs"); + expect(logs).toBeDefined(); + expect(logs.length).toBeGreaterThan(0); + expect(logs[0].eventType).toBe("issue.created"); + expect(logs[0].entityId).toBe("iss_1"); + + const health = await harness.getData<{ status: string; logCount: number }>("health"); + expect(health.status).toBe("ok"); + expect(health.logCount).toBe(1); + + const action = await harness.performAction<{ pong: boolean }>("ping"); + expect(action.pong).toBe(true); + }); +}); diff --git a/plugin-log-viewer/tsconfig.json b/plugin-log-viewer/tsconfig.json new file mode 100644 index 0000000..a697519 --- /dev/null +++ b/plugin-log-viewer/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": [ + "ES2022", + "DOM" + ], + "jsx": "react-jsx", + "strict": true, + "skipLibCheck": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist", + "rootDir": "." + }, + "include": [ + "src", + "tests" + ], + "exclude": [ + "dist", + "node_modules" + ] +} diff --git a/plugin-log-viewer/vitest.config.ts b/plugin-log-viewer/vitest.config.ts new file mode 100644 index 0000000..649a293 --- /dev/null +++ b/plugin-log-viewer/vitest.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["tests/**/*.spec.ts"], + environment: "node", + }, +});