mirror of
https://github.com/TianyiDataScience/openclaw-control-center.git
synced 2026-08-14 00:47:58 +00:00
* fix: harden test suite for Windows/CRLF cross-platform compatibility
- oss-readiness: use \r?\n in .gitignore regex boundaries for CRLF support
- oss-readiness: update PUBLIC_FILES to match actual repo filenames
- phase9-routes-commands: invoke node directly instead of spawn('npm')
to avoid ENOENT on Windows where npm requires .cmd extension
- phase9-routes-commands: normalize path separators in export path assertion
- ui-render-smoke: normalize CRLF to LF before multiline source includes()
- usage-cost: normalize backslashes in sourcePath before glob assertion
All 87 tests now pass on Windows.
* fix: add cross-platform Node.js UI smoke script for Windows compatibility
* fix: improve session polling performance and add cross-platform script support (#13)
- Reduce monitor polling interval from 5s to 30s to cut background I/O by 83%
- Add incremental status queries in snapshot() — only refresh active/new sessions instead of all 500+
- Replace O(n) usage-cost cache key serialization with O(1) generatedAt-based key
- Use cross-env for all env-prefixed npm scripts to fix Windows cmd compatibility
- Reduce default session preview historyLimit and pageSize for faster dashboard loads
* fix: add final status refresh for sessions leaving active state
When a session transitions from running/blocked to idle/error, perform
one last status query to capture final usage metrics (cost, tokens).
Without this, cachedStatuses would retain pre-completion values
permanently, causing stale aggregate usage/budget totals.
Addresses review feedback on PR #17.
* fix: tune polling interval to 10s and use content-based cache key
- Change sessionsList polling from 30s to 10s as a compromise between
the original 5s (too aggressive) and the PR's 30s (too slow for
near real-time UX).
- Replace generatedAt-based cache key in buildUsageCostCacheKey with
content-based fingerprint using session.state and status.updatedAt,
so the cache only invalidates when data actually changes.
399 lines
12 KiB
YAML
399 lines
12 KiB
YAML
lockfileVersion: '9.0'
|
|
|
|
settings:
|
|
autoInstallPeers: true
|
|
excludeLinksFromLockfile: false
|
|
|
|
importers:
|
|
|
|
.:
|
|
devDependencies:
|
|
'@types/node':
|
|
specifier: ^22.13.10
|
|
version: 22.19.15
|
|
cross-env:
|
|
specifier: ^7.0.3
|
|
version: 7.0.3
|
|
tsx:
|
|
specifier: ^4.20.0
|
|
version: 4.21.0
|
|
typescript:
|
|
specifier: ^5.8.2
|
|
version: 5.9.3
|
|
|
|
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]
|
|
|
|
'@types/node@22.19.15':
|
|
resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==}
|
|
|
|
cross-env@7.0.3:
|
|
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
|
|
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
|
|
hasBin: true
|
|
|
|
cross-spawn@7.0.6:
|
|
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
|
engines: {node: '>= 8'}
|
|
|
|
esbuild@0.27.4:
|
|
resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==}
|
|
engines: {node: '>=18'}
|
|
hasBin: 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]
|
|
|
|
get-tsconfig@4.13.6:
|
|
resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==}
|
|
|
|
isexe@2.0.0:
|
|
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
|
|
|
path-key@3.1.1:
|
|
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
|
|
engines: {node: '>=8'}
|
|
|
|
resolve-pkg-maps@1.0.0:
|
|
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
|
|
|
shebang-command@2.0.0:
|
|
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
|
engines: {node: '>=8'}
|
|
|
|
shebang-regex@3.0.0:
|
|
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
|
engines: {node: '>=8'}
|
|
|
|
tsx@4.21.0:
|
|
resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
|
|
engines: {node: '>=18.0.0'}
|
|
hasBin: true
|
|
|
|
typescript@5.9.3:
|
|
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
|
|
engines: {node: '>=14.17'}
|
|
hasBin: true
|
|
|
|
undici-types@6.21.0:
|
|
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
|
|
|
which@2.0.2:
|
|
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
|
engines: {node: '>= 8'}
|
|
hasBin: true
|
|
|
|
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
|
|
|
|
'@types/node@22.19.15':
|
|
dependencies:
|
|
undici-types: 6.21.0
|
|
|
|
cross-env@7.0.3:
|
|
dependencies:
|
|
cross-spawn: 7.0.6
|
|
|
|
cross-spawn@7.0.6:
|
|
dependencies:
|
|
path-key: 3.1.1
|
|
shebang-command: 2.0.0
|
|
which: 2.0.2
|
|
|
|
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
|
|
|
|
fsevents@2.3.3:
|
|
optional: true
|
|
|
|
get-tsconfig@4.13.6:
|
|
dependencies:
|
|
resolve-pkg-maps: 1.0.0
|
|
|
|
isexe@2.0.0: {}
|
|
|
|
path-key@3.1.1: {}
|
|
|
|
resolve-pkg-maps@1.0.0: {}
|
|
|
|
shebang-command@2.0.0:
|
|
dependencies:
|
|
shebang-regex: 3.0.0
|
|
|
|
shebang-regex@3.0.0: {}
|
|
|
|
tsx@4.21.0:
|
|
dependencies:
|
|
esbuild: 0.27.4
|
|
get-tsconfig: 4.13.6
|
|
optionalDependencies:
|
|
fsevents: 2.3.3
|
|
|
|
typescript@5.9.3: {}
|
|
|
|
undici-types@6.21.0: {}
|
|
|
|
which@2.0.2:
|
|
dependencies:
|
|
isexe: 2.0.0
|