clawatch 1.0.22 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/alertChecker.d.ts.map +1 -1
- package/backend/dist/alertChecker.js +44 -0
- package/backend/dist/alertChecker.js.map +1 -1
- package/backend/dist/db.d.ts +33 -3
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +140 -10
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.js +41 -34
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes.d.ts.map +1 -1
- package/backend/dist/routes.js +118 -11
- package/backend/dist/routes.js.map +1 -1
- package/backend/dist/seed.js +115 -109
- package/backend/dist/seed.js.map +1 -1
- package/backend/dist/sessions.d.ts +2 -0
- package/backend/dist/sessions.d.ts.map +1 -1
- package/backend/dist/sessions.js +9 -0
- package/backend/dist/sessions.js.map +1 -1
- package/backend/dist/sync.d.ts +1 -4
- package/backend/dist/sync.d.ts.map +1 -1
- package/backend/dist/sync.js +4 -0
- package/backend/dist/sync.js.map +1 -1
- package/backend/node_modules/.package-lock.json +4 -380
- package/backend/node_modules/sql.js/.devcontainer/Dockerfile +76 -0
- package/backend/node_modules/sql.js/.devcontainer/devcontainer.json +20 -0
- package/backend/node_modules/sql.js/.jsdoc.config.json +38 -0
- package/backend/node_modules/sql.js/.nojekyll +0 -0
- package/backend/node_modules/sql.js/AUTHORS +8 -0
- package/backend/node_modules/sql.js/dist/sql-asm-debug.js +140890 -0
- package/backend/node_modules/sql.js/dist/sql-asm-memory-growth.js +204 -0
- package/backend/node_modules/sql.js/dist/sql-asm.js +202 -0
- package/backend/node_modules/sql.js/dist/sql-wasm-browser-debug.js +7157 -0
- package/backend/node_modules/sql.js/dist/sql-wasm-browser-debug.wasm +0 -0
- package/backend/node_modules/sql.js/dist/sql-wasm-browser.js +183 -0
- package/backend/node_modules/sql.js/dist/sql-wasm-browser.wasm +0 -0
- package/backend/node_modules/sql.js/dist/sql-wasm-debug.js +7265 -0
- package/backend/node_modules/sql.js/dist/sql-wasm-debug.wasm +0 -0
- package/backend/node_modules/sql.js/dist/sql-wasm.js +185 -0
- package/backend/node_modules/sql.js/dist/sql-wasm.wasm +0 -0
- package/backend/node_modules/sql.js/dist/worker.sql-asm-debug.js +141011 -0
- package/backend/node_modules/sql.js/dist/worker.sql-asm.js +323 -0
- package/backend/node_modules/sql.js/dist/worker.sql-wasm-debug.js +7386 -0
- package/backend/node_modules/sql.js/dist/worker.sql-wasm.js +306 -0
- package/backend/node_modules/sql.js/eslint.config.cjs +57 -0
- package/backend/node_modules/sql.js/logo.svg +13 -0
- package/backend/node_modules/sql.js/package.json +58 -0
- package/backend/package-lock.json +5 -392
- package/backend/package.json +1 -2
- package/dist/cli.js +0 -38
- package/dist/cli.js.map +1 -1
- package/frontend/.env +1 -0
- package/frontend/.next/BUILD_ID +1 -1
- package/frontend/.next/app-path-routes-manifest.json +1 -0
- package/frontend/.next/build-manifest.json +2 -2
- package/frontend/.next/prerender-manifest.json +24 -0
- package/frontend/.next/routes-manifest.json +6 -0
- package/frontend/.next/server/app/_global-error.html +2 -2
- package/frontend/.next/server/app/_global-error.rsc +1 -1
- package/frontend/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/frontend/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/frontend/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/frontend/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/frontend/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/frontend/.next/server/app/_not-found.html +1 -1
- package/frontend/.next/server/app/_not-found.rsc +2 -2
- package/frontend/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/frontend/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/frontend/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/frontend/.next/server/app/dashboard/costs/page/app-paths-manifest.json +3 -0
- package/frontend/.next/server/app/dashboard/costs/page/build-manifest.json +17 -0
- package/frontend/.next/server/app/dashboard/costs/page/next-font-manifest.json +11 -0
- package/frontend/.next/server/app/dashboard/costs/page/react-loadable-manifest.json +1 -0
- package/frontend/.next/server/app/dashboard/costs/page/server-reference-manifest.json +4 -0
- package/frontend/.next/server/app/dashboard/costs/page.js +16 -0
- package/frontend/.next/server/app/dashboard/costs/page.js.map +5 -0
- package/frontend/.next/server/app/dashboard/costs/page.js.nft.json +1 -0
- package/frontend/.next/server/app/dashboard/costs/page_client-reference-manifest.js +2 -0
- package/frontend/.next/server/app/dashboard/costs.html +1 -0
- package/frontend/.next/server/app/dashboard/costs.meta +16 -0
- package/frontend/.next/server/app/dashboard/costs.rsc +20 -0
- package/frontend/.next/server/app/dashboard/costs.segments/_full.segment.rsc +20 -0
- package/frontend/.next/server/app/dashboard/costs.segments/_head.segment.rsc +6 -0
- package/frontend/.next/server/app/dashboard/costs.segments/_index.segment.rsc +5 -0
- package/frontend/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +4 -0
- package/frontend/.next/server/app/dashboard/costs.segments/dashboard/costs/__PAGE__.segment.rsc +9 -0
- package/frontend/.next/server/app/dashboard/costs.segments/dashboard/costs.segment.rsc +4 -0
- package/frontend/.next/server/app/dashboard/costs.segments/dashboard.segment.rsc +4 -0
- package/frontend/.next/server/app/dashboard/page.js.nft.json +1 -1
- package/frontend/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
- package/frontend/.next/server/app/dashboard/projects/[id]/page.js.nft.json +1 -1
- package/frontend/.next/server/app/dashboard/projects/[id]/page_client-reference-manifest.js +1 -1
- package/frontend/.next/server/app/dashboard/sessions/[id]/page.js.nft.json +1 -1
- package/frontend/.next/server/app/dashboard/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/frontend/.next/server/app/dashboard.html +1 -1
- package/frontend/.next/server/app/dashboard.rsc +3 -3
- package/frontend/.next/server/app/dashboard.segments/_full.segment.rsc +3 -3
- package/frontend/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/dashboard.segments/_index.segment.rsc +2 -2
- package/frontend/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/frontend/.next/server/app/dashboard.segments/dashboard/__PAGE__.segment.rsc +2 -2
- package/frontend/.next/server/app/dashboard.segments/dashboard.segment.rsc +1 -1
- package/frontend/.next/server/app/index.html +1 -1
- package/frontend/.next/server/app/index.rsc +3 -3
- package/frontend/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/frontend/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/frontend/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/frontend/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/frontend/.next/server/app/page.js.nft.json +1 -1
- package/frontend/.next/server/app/page_client-reference-manifest.js +1 -1
- package/frontend/.next/server/app-paths-manifest.json +1 -0
- package/frontend/.next/server/chunks/ssr/[root-of-the-server]__96998d39._.js +3 -0
- package/frontend/.next/server/chunks/ssr/[root-of-the-server]__ad9c7c6a._.js +3 -0
- package/frontend/.next/server/chunks/ssr/[root-of-the-server]__cb471d02._.js +3 -0
- package/frontend/.next/server/chunks/ssr/[root-of-the-server]__f99f8278._.js +3 -0
- package/frontend/.next/server/chunks/ssr/{_2bfdd77b._.js → _7062b9c0._.js} +2 -2
- package/frontend/.next/server/chunks/ssr/_81435076._.js +3 -0
- package/frontend/.next/server/chunks/ssr/_8f399861._.js +4 -0
- package/frontend/.next/server/chunks/ssr/{_f26b1aca._.js → _aa02b285._.js} +2 -2
- package/frontend/.next/server/chunks/ssr/_b0ae6d33._.js +1 -1
- package/frontend/.next/server/chunks/ssr/_next-internal_server_app_dashboard_costs_page_actions_b5efa95e.js +3 -0
- package/frontend/.next/server/chunks/ssr/node_modules_09eef5ec._.js +3 -0
- package/frontend/.next/server/chunks/ssr/node_modules_b4c16e3a._.js +3 -0
- package/frontend/.next/server/chunks/ssr/src_app_dashboard_page_tsx_196c74b5._.js +3 -0
- package/frontend/.next/server/chunks/ssr/src_app_page_tsx_a7111f3e._.js +1 -1
- package/frontend/.next/server/chunks/ssr/src_components_ui_button_tsx_d75cfe12._.js +3 -0
- package/frontend/.next/server/next-font-manifest.js +1 -1
- package/frontend/.next/server/next-font-manifest.json +4 -0
- package/frontend/.next/server/pages/404.html +1 -1
- package/frontend/.next/server/pages/500.html +2 -2
- package/frontend/.next/static/chunks/139d48bcbc462224.js +1 -0
- package/frontend/.next/static/chunks/25c0d885ca7bcbe1.js +1 -0
- package/frontend/.next/static/chunks/31f0905710e3dfc3.js +1 -0
- package/frontend/.next/static/chunks/34b822c87d271e34.js +1 -0
- package/frontend/.next/static/chunks/790649543cff1084.js +1 -0
- package/frontend/.next/static/chunks/88a2c1056ccf4825.js +1 -0
- package/frontend/.next/static/chunks/9dc87ca9ab86c348.css +3 -0
- package/frontend/.next/static/chunks/b1b1c7e52e2182c7.js +1 -0
- package/frontend/.next/static/chunks/be5e61723b600d44.js +1 -0
- package/frontend/.next/static/chunks/c3af0c75d8e1b7b4.js +1 -0
- package/frontend/.next/static/chunks/f5dbb90939b55e4f.js +1 -0
- package/frontend/public/providers/nanobot.png +0 -0
- package/frontend/public/providers/nanoclaw.webp +0 -0
- package/frontend/public/providers/picoclaw.ico +0 -0
- package/frontend/public/providers/trustclaw.svg +1 -0
- package/frontend/public/providers/zeroclaw.png +0 -0
- package/package.json +2 -2
- package/backend/node_modules/base64-js/base64js.min.js +0 -1
- package/backend/node_modules/base64-js/index.d.ts +0 -3
- package/backend/node_modules/base64-js/index.js +0 -150
- package/backend/node_modules/base64-js/package.json +0 -47
- package/backend/node_modules/better-sqlite3/binding.gyp +0 -38
- package/backend/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/backend/node_modules/better-sqlite3/deps/common.gypi +0 -68
- package/backend/node_modules/better-sqlite3/deps/copy.js +0 -31
- package/backend/node_modules/better-sqlite3/deps/defines.gypi +0 -41
- package/backend/node_modules/better-sqlite3/deps/download.sh +0 -122
- package/backend/node_modules/better-sqlite3/deps/patches/1208.patch +0 -15
- package/backend/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +0 -261480
- package/backend/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +0 -13715
- package/backend/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +0 -719
- package/backend/node_modules/better-sqlite3/deps/sqlite3.gyp +0 -80
- package/backend/node_modules/better-sqlite3/deps/test_extension.c +0 -21
- package/backend/node_modules/better-sqlite3/lib/database.js +0 -90
- package/backend/node_modules/better-sqlite3/lib/index.js +0 -3
- package/backend/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
- package/backend/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
- package/backend/node_modules/better-sqlite3/lib/methods/function.js +0 -31
- package/backend/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
- package/backend/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
- package/backend/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
- package/backend/node_modules/better-sqlite3/lib/methods/table.js +0 -189
- package/backend/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
- package/backend/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
- package/backend/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
- package/backend/node_modules/better-sqlite3/lib/util.js +0 -12
- package/backend/node_modules/better-sqlite3/package.json +0 -54
- package/backend/node_modules/better-sqlite3/src/better_sqlite3.cpp +0 -2186
- package/backend/node_modules/better-sqlite3/src/better_sqlite3.hpp +0 -1036
- package/backend/node_modules/bindings/bindings.js +0 -221
- package/backend/node_modules/bindings/package.json +0 -28
- package/backend/node_modules/buffer/index.d.ts +0 -186
- package/backend/node_modules/buffer/index.js +0 -1817
- package/backend/node_modules/buffer/package.json +0 -96
- package/backend/node_modules/chownr/chownr.js +0 -167
- package/backend/node_modules/chownr/package.json +0 -29
- package/backend/node_modules/decompress-response/index.d.ts +0 -22
- package/backend/node_modules/decompress-response/index.js +0 -58
- package/backend/node_modules/decompress-response/license +0 -9
- package/backend/node_modules/decompress-response/package.json +0 -56
- package/backend/node_modules/deep-extend/index.js +0 -1
- package/backend/node_modules/deep-extend/lib/deep-extend.js +0 -150
- package/backend/node_modules/deep-extend/package.json +0 -62
- package/backend/node_modules/detect-libc/index.d.ts +0 -14
- package/backend/node_modules/detect-libc/lib/detect-libc.js +0 -313
- package/backend/node_modules/detect-libc/lib/elf.js +0 -39
- package/backend/node_modules/detect-libc/lib/filesystem.js +0 -51
- package/backend/node_modules/detect-libc/lib/process.js +0 -24
- package/backend/node_modules/detect-libc/package.json +0 -44
- package/backend/node_modules/expand-template/.travis.yml +0 -6
- package/backend/node_modules/expand-template/index.js +0 -26
- package/backend/node_modules/expand-template/package.json +0 -29
- package/backend/node_modules/expand-template/test.js +0 -67
- package/backend/node_modules/file-uri-to-path/.travis.yml +0 -30
- package/backend/node_modules/file-uri-to-path/index.d.ts +0 -2
- package/backend/node_modules/file-uri-to-path/index.js +0 -66
- package/backend/node_modules/file-uri-to-path/package.json +0 -32
- package/backend/node_modules/fs-constants/browser.js +0 -1
- package/backend/node_modules/fs-constants/index.js +0 -1
- package/backend/node_modules/fs-constants/package.json +0 -19
- package/backend/node_modules/github-from-package/.travis.yml +0 -4
- package/backend/node_modules/github-from-package/index.js +0 -17
- package/backend/node_modules/github-from-package/package.json +0 -30
- package/backend/node_modules/github-from-package/readme.markdown +0 -53
- package/backend/node_modules/ieee754/index.d.ts +0 -10
- package/backend/node_modules/ieee754/index.js +0 -85
- package/backend/node_modules/ieee754/package.json +0 -52
- package/backend/node_modules/ini/ini.js +0 -206
- package/backend/node_modules/ini/package.json +0 -33
- package/backend/node_modules/mimic-response/index.d.ts +0 -17
- package/backend/node_modules/mimic-response/index.js +0 -77
- package/backend/node_modules/mimic-response/license +0 -9
- package/backend/node_modules/mimic-response/package.json +0 -42
- package/backend/node_modules/minimist/.github/FUNDING.yml +0 -12
- package/backend/node_modules/minimist/.nycrc +0 -14
- package/backend/node_modules/minimist/index.js +0 -263
- package/backend/node_modules/minimist/package.json +0 -75
- package/backend/node_modules/mkdirp-classic/index.js +0 -98
- package/backend/node_modules/mkdirp-classic/package.json +0 -18
- package/backend/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
- package/backend/node_modules/napi-build-utils/index.js +0 -214
- package/backend/node_modules/napi-build-utils/package.json +0 -42
- package/backend/node_modules/node-abi/abi_registry.json +0 -432
- package/backend/node_modules/node-abi/index.js +0 -179
- package/backend/node_modules/node-abi/package.json +0 -45
- package/backend/node_modules/prebuild-install/asset.js +0 -44
- package/backend/node_modules/prebuild-install/bin.js +0 -78
- package/backend/node_modules/prebuild-install/download.js +0 -142
- package/backend/node_modules/prebuild-install/error.js +0 -14
- package/backend/node_modules/prebuild-install/help.txt +0 -16
- package/backend/node_modules/prebuild-install/index.js +0 -1
- package/backend/node_modules/prebuild-install/log.js +0 -33
- package/backend/node_modules/prebuild-install/node_modules/pump/.github/FUNDING.yml +0 -2
- package/backend/node_modules/prebuild-install/node_modules/pump/.travis.yml +0 -5
- package/backend/node_modules/prebuild-install/node_modules/pump/LICENSE +0 -21
- package/backend/node_modules/prebuild-install/node_modules/pump/README.md +0 -74
- package/backend/node_modules/prebuild-install/node_modules/pump/SECURITY.md +0 -5
- package/backend/node_modules/prebuild-install/node_modules/pump/empty.js +0 -1
- package/backend/node_modules/prebuild-install/node_modules/pump/index.js +0 -86
- package/backend/node_modules/prebuild-install/node_modules/pump/package.json +0 -30
- package/backend/node_modules/prebuild-install/node_modules/pump/test-browser.js +0 -66
- package/backend/node_modules/prebuild-install/node_modules/pump/test-node.js +0 -53
- package/backend/node_modules/prebuild-install/package.json +0 -67
- package/backend/node_modules/prebuild-install/proxy.js +0 -35
- package/backend/node_modules/prebuild-install/rc.js +0 -64
- package/backend/node_modules/prebuild-install/util.js +0 -143
- package/backend/node_modules/rc/browser.js +0 -7
- package/backend/node_modules/rc/cli.js +0 -4
- package/backend/node_modules/rc/index.js +0 -53
- package/backend/node_modules/rc/lib/utils.js +0 -104
- package/backend/node_modules/rc/package.json +0 -29
- package/backend/node_modules/semver/bin/semver.js +0 -191
- package/backend/node_modules/semver/classes/comparator.js +0 -143
- package/backend/node_modules/semver/classes/index.js +0 -7
- package/backend/node_modules/semver/classes/range.js +0 -557
- package/backend/node_modules/semver/classes/semver.js +0 -333
- package/backend/node_modules/semver/functions/clean.js +0 -8
- package/backend/node_modules/semver/functions/cmp.js +0 -54
- package/backend/node_modules/semver/functions/coerce.js +0 -62
- package/backend/node_modules/semver/functions/compare-build.js +0 -9
- package/backend/node_modules/semver/functions/compare-loose.js +0 -5
- package/backend/node_modules/semver/functions/compare.js +0 -7
- package/backend/node_modules/semver/functions/diff.js +0 -60
- package/backend/node_modules/semver/functions/eq.js +0 -5
- package/backend/node_modules/semver/functions/gt.js +0 -5
- package/backend/node_modules/semver/functions/gte.js +0 -5
- package/backend/node_modules/semver/functions/inc.js +0 -21
- package/backend/node_modules/semver/functions/lt.js +0 -5
- package/backend/node_modules/semver/functions/lte.js +0 -5
- package/backend/node_modules/semver/functions/major.js +0 -5
- package/backend/node_modules/semver/functions/minor.js +0 -5
- package/backend/node_modules/semver/functions/neq.js +0 -5
- package/backend/node_modules/semver/functions/parse.js +0 -18
- package/backend/node_modules/semver/functions/patch.js +0 -5
- package/backend/node_modules/semver/functions/prerelease.js +0 -8
- package/backend/node_modules/semver/functions/rcompare.js +0 -5
- package/backend/node_modules/semver/functions/rsort.js +0 -5
- package/backend/node_modules/semver/functions/satisfies.js +0 -12
- package/backend/node_modules/semver/functions/sort.js +0 -5
- package/backend/node_modules/semver/functions/valid.js +0 -8
- package/backend/node_modules/semver/index.js +0 -91
- package/backend/node_modules/semver/internal/constants.js +0 -37
- package/backend/node_modules/semver/internal/debug.js +0 -11
- package/backend/node_modules/semver/internal/identifiers.js +0 -29
- package/backend/node_modules/semver/internal/lrucache.js +0 -42
- package/backend/node_modules/semver/internal/parse-options.js +0 -17
- package/backend/node_modules/semver/internal/re.js +0 -223
- package/backend/node_modules/semver/package.json +0 -78
- package/backend/node_modules/semver/preload.js +0 -4
- package/backend/node_modules/semver/range.bnf +0 -16
- package/backend/node_modules/semver/ranges/gtr.js +0 -6
- package/backend/node_modules/semver/ranges/intersects.js +0 -9
- package/backend/node_modules/semver/ranges/ltr.js +0 -6
- package/backend/node_modules/semver/ranges/max-satisfying.js +0 -27
- package/backend/node_modules/semver/ranges/min-satisfying.js +0 -26
- package/backend/node_modules/semver/ranges/min-version.js +0 -63
- package/backend/node_modules/semver/ranges/outside.js +0 -82
- package/backend/node_modules/semver/ranges/simplify.js +0 -49
- package/backend/node_modules/semver/ranges/subset.js +0 -249
- package/backend/node_modules/semver/ranges/to-comparators.js +0 -10
- package/backend/node_modules/semver/ranges/valid.js +0 -13
- package/backend/node_modules/simple-concat/.travis.yml +0 -3
- package/backend/node_modules/simple-concat/index.js +0 -15
- package/backend/node_modules/simple-concat/package.json +0 -47
- package/backend/node_modules/simple-get/.github/dependabot.yml +0 -15
- package/backend/node_modules/simple-get/.github/workflows/ci.yml +0 -23
- package/backend/node_modules/simple-get/index.js +0 -108
- package/backend/node_modules/simple-get/package.json +0 -67
- package/backend/node_modules/strip-json-comments/index.js +0 -70
- package/backend/node_modules/strip-json-comments/license +0 -21
- package/backend/node_modules/strip-json-comments/package.json +0 -42
- package/backend/node_modules/tar-fs/.travis.yml +0 -6
- package/backend/node_modules/tar-fs/index.js +0 -363
- package/backend/node_modules/tar-fs/node_modules/pump/.github/FUNDING.yml +0 -2
- package/backend/node_modules/tar-fs/node_modules/pump/.travis.yml +0 -5
- package/backend/node_modules/tar-fs/node_modules/pump/LICENSE +0 -21
- package/backend/node_modules/tar-fs/node_modules/pump/README.md +0 -74
- package/backend/node_modules/tar-fs/node_modules/pump/SECURITY.md +0 -5
- package/backend/node_modules/tar-fs/node_modules/pump/empty.js +0 -1
- package/backend/node_modules/tar-fs/node_modules/pump/index.js +0 -86
- package/backend/node_modules/tar-fs/node_modules/pump/package.json +0 -30
- package/backend/node_modules/tar-fs/node_modules/pump/test-browser.js +0 -66
- package/backend/node_modules/tar-fs/node_modules/pump/test-node.js +0 -53
- package/backend/node_modules/tar-fs/package.json +0 -41
- package/backend/node_modules/tar-stream/extract.js +0 -257
- package/backend/node_modules/tar-stream/headers.js +0 -295
- package/backend/node_modules/tar-stream/index.js +0 -2
- package/backend/node_modules/tar-stream/node_modules/bl/.travis.yml +0 -17
- package/backend/node_modules/tar-stream/node_modules/bl/BufferList.js +0 -396
- package/backend/node_modules/tar-stream/node_modules/bl/LICENSE.md +0 -13
- package/backend/node_modules/tar-stream/node_modules/bl/README.md +0 -247
- package/backend/node_modules/tar-stream/node_modules/bl/bl.js +0 -84
- package/backend/node_modules/tar-stream/node_modules/bl/package.json +0 -37
- package/backend/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/backend/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/backend/node_modules/tar-stream/node_modules/readable-stream/LICENSE +0 -47
- package/backend/node_modules/tar-stream/node_modules/readable-stream/README.md +0 -106
- package/backend/node_modules/tar-stream/node_modules/readable-stream/errors-browser.js +0 -127
- package/backend/node_modules/tar-stream/node_modules/readable-stream/errors.js +0 -116
- package/backend/node_modules/tar-stream/node_modules/readable-stream/experimentalWarning.js +0 -17
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +0 -190
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +0 -641
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/backend/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/backend/node_modules/tar-stream/node_modules/readable-stream/package.json +0 -68
- package/backend/node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +0 -9
- package/backend/node_modules/tar-stream/node_modules/readable-stream/readable.js +0 -16
- package/backend/node_modules/tar-stream/pack.js +0 -255
- package/backend/node_modules/tar-stream/package.json +0 -58
- package/backend/node_modules/tar-stream/sandbox.js +0 -11
- package/frontend/.next/server/chunks/ssr/[root-of-the-server]__008d27c3._.js +0 -3
- package/frontend/.next/server/chunks/ssr/[root-of-the-server]__69cb56c5._.js +0 -3
- package/frontend/.next/server/chunks/ssr/_e17fe96b._.js +0 -3
- package/frontend/.next/static/chunks/641e855850e79de9.css +0 -3
- package/frontend/.next/static/chunks/88faea50dcf8f778.js +0 -1
- package/frontend/.next/static/chunks/8ffedcb68f4a998f.js +0 -1
- package/frontend/.next/static/chunks/a909e37955d0604e.js +0 -1
- package/frontend/.next/static/chunks/ba72b58eb8cb3f4e.js +0 -1
- package/frontend/.next/static/chunks/c8ee4845be50f9b7.js +0 -1
- package/frontend/.next/static/chunks/e975763f7a359fb5.js +0 -1
- /package/frontend/.next/static/{3i-dBEEyQLocTNHX5oPZn → w4h18_Clp_ODehKO0HkwI}/_buildManifest.js +0 -0
- /package/frontend/.next/static/{3i-dBEEyQLocTNHX5oPZn → w4h18_Clp_ODehKO0HkwI}/_clientMiddlewareManifest.json +0 -0
- /package/frontend/.next/static/{3i-dBEEyQLocTNHX5oPZn → w4h18_Clp_ODehKO0HkwI}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alertChecker.d.ts","sourceRoot":"","sources":["../src/alertChecker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alertChecker.d.ts","sourceRoot":"","sources":["../src/alertChecker.ts"],"names":[],"mappings":"AAqRA,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAGlD"}
|
|
@@ -197,11 +197,55 @@ function checkCostThresholds() {
|
|
|
197
197
|
createAndSendAlert(agent.id, "cost_spike", "warning", `Agent *${agent.name}* exceeded cost threshold — $${agent.costUsd.toFixed(2)} spent (threshold: $${COST_THRESHOLD_USD})`);
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
|
+
function checkSpendLimits() {
|
|
201
|
+
const limitsRow = db_1.default.prepare("SELECT value FROM settings WHERE key = ?").get("cost-limits");
|
|
202
|
+
if (!limitsRow)
|
|
203
|
+
return;
|
|
204
|
+
const limits = JSON.parse(limitsRow.value);
|
|
205
|
+
if (!limits.type || !limits.amount)
|
|
206
|
+
return;
|
|
207
|
+
// Import listSessions dynamically to avoid circular deps
|
|
208
|
+
const { listSessionsSync } = require("./sessions");
|
|
209
|
+
const sessions = listSessionsSync();
|
|
210
|
+
const now = new Date();
|
|
211
|
+
const periodKey = limits.type === "daily" ? now.toISOString().slice(0, 10) : now.toISOString().slice(0, 7);
|
|
212
|
+
const sliceLen = limits.type === "daily" ? 10 : 7;
|
|
213
|
+
// Total spend for period
|
|
214
|
+
const periodSessions = sessions.filter((s) => s.startedAt.slice(0, sliceLen) === periodKey);
|
|
215
|
+
const totalSpend = periodSessions.reduce((sum, s) => sum + s.costUsd, 0);
|
|
216
|
+
const pct = (totalSpend / limits.amount) * 100;
|
|
217
|
+
const periodLabel = limits.type === "daily" ? "today" : "this month";
|
|
218
|
+
// Alert at 80% (warning) — once per period
|
|
219
|
+
if (pct >= 80 && pct < 100) {
|
|
220
|
+
if (!recentAlertExists("_global", "spend_warning", limits.type === "daily" ? 86400000 : 2592000000)) {
|
|
221
|
+
createAndSendAlert("_global", "cost_spike", "warning", `Spend alert: $${totalSpend.toFixed(2)} ${periodLabel} — ${pct.toFixed(0)}% of $${limits.amount} ${limits.type} limit`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Alert at 100% (critical) — once per period
|
|
225
|
+
if (pct >= 100) {
|
|
226
|
+
if (!recentAlertExists("_global", "spend_critical", limits.type === "daily" ? 86400000 : 2592000000)) {
|
|
227
|
+
createAndSendAlert("_global", "cost_spike", "critical", `Spend limit exceeded: $${totalSpend.toFixed(2)} ${periodLabel} — ${pct.toFixed(0)}% of $${limits.amount} ${limits.type} limit`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Per-agent limits
|
|
231
|
+
const agentSpend = {};
|
|
232
|
+
for (const s of periodSessions) {
|
|
233
|
+
agentSpend[s.agentId] = (agentSpend[s.agentId] || 0) + s.costUsd;
|
|
234
|
+
}
|
|
235
|
+
for (const [agentId, agentLimit] of Object.entries(limits.agentLimits)) {
|
|
236
|
+
const spent = agentSpend[agentId] || 0;
|
|
237
|
+
const agentPct = (spent / agentLimit) * 100;
|
|
238
|
+
if (agentPct >= 100 && !recentAlertExists(agentId, "spend_critical", limits.type === "daily" ? 86400000 : 2592000000)) {
|
|
239
|
+
createAndSendAlert(agentId, "cost_spike", "critical", `Agent *${agentId}* exceeded ${limits.type} limit: $${spent.toFixed(2)} / $${agentLimit} ${periodLabel}`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
200
243
|
function runAlertChecker() {
|
|
201
244
|
try {
|
|
202
245
|
checkStuckAgents();
|
|
203
246
|
checkErrorSpikes();
|
|
204
247
|
checkCostThresholds();
|
|
248
|
+
checkSpendLimits();
|
|
205
249
|
}
|
|
206
250
|
catch (err) {
|
|
207
251
|
console.error("[AlertChecker] Error:", err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alertChecker.js","sourceRoot":"","sources":["../src/alertChecker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alertChecker.js","sourceRoot":"","sources":["../src/alertChecker.ts"],"names":[],"mappings":"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"}
|
package/backend/dist/db.d.ts
CHANGED
|
@@ -1,6 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* PreparedStatement mimics better-sqlite3's prepared statement API
|
|
3
|
+
* using sql.js under the hood. Statements are lazy — they only touch
|
|
4
|
+
* the database when run/get/all is called, not at creation time.
|
|
5
|
+
*/
|
|
6
|
+
declare class PreparedStatement {
|
|
7
|
+
private readonly sql;
|
|
8
|
+
constructor(sql: string);
|
|
9
|
+
run(...params: any[]): {
|
|
10
|
+
changes: number;
|
|
11
|
+
};
|
|
12
|
+
get(...params: any[]): any;
|
|
13
|
+
all(...params: any[]): any[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Database wrapper providing a better-sqlite3-compatible API
|
|
17
|
+
* backed by sql.js (pure WASM SQLite — no native compilation needed).
|
|
18
|
+
*
|
|
19
|
+
* Why: better-sqlite3 requires native C++ compilation (node-gyp, make, gcc).
|
|
20
|
+
* This fails on locked-down environments like Synology NAS. sql.js runs
|
|
21
|
+
* everywhere Node.js runs with zero native dependencies.
|
|
22
|
+
*/
|
|
23
|
+
declare const db: {
|
|
24
|
+
prepare(sql: string): PreparedStatement;
|
|
25
|
+
exec(sql: string): void;
|
|
26
|
+
pragma(pragma: string): void;
|
|
27
|
+
transaction<T>(fn: (...args: any[]) => T): (...args: any[]) => T;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the sql.js database. Must be called (and awaited) before
|
|
31
|
+
* any DB operations. Loads existing data from disk or creates a new DB.
|
|
32
|
+
*/
|
|
33
|
+
declare function initDb(): Promise<void>;
|
|
4
34
|
export { initDb };
|
|
5
35
|
export default db;
|
|
6
36
|
//# sourceMappingURL=db.d.ts.map
|
package/backend/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AA0BA;;;;GAIG;AACH,cAAM,iBAAiB;IACT,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAExC,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAY1C,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG;IAW1B,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;CAY7B;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,EAAE;iBACO,MAAM,GAAG,iBAAiB;cAI7B,MAAM,GAAG,IAAI;mBAKR,MAAM,GAAG,IAAI;gBAQhB,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;CAkBjE,CAAC;AAEF;;;GAGG;AACH,iBAAe,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA+ErC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,eAAe,EAAE,CAAC"}
|
package/backend/dist/db.js
CHANGED
|
@@ -4,7 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.initDb = initDb;
|
|
7
|
-
|
|
7
|
+
// @ts-ignore — sql.js ships without declaration files; types are inferred at runtime
|
|
8
|
+
const sql_js_1 = __importDefault(require("sql.js"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
9
10
|
const os_1 = __importDefault(require("os"));
|
|
10
11
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -14,13 +15,136 @@ if (!fs_1.default.existsSync(CLAWATCH_DIR)) {
|
|
|
14
15
|
fs_1.default.mkdirSync(CLAWATCH_DIR, { recursive: true });
|
|
15
16
|
}
|
|
16
17
|
const DB_PATH = path_1.default.join(CLAWATCH_DIR, "clawatch.db");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
let sqlDb = null;
|
|
19
|
+
let _inTransaction = false;
|
|
20
|
+
function requireDb() {
|
|
21
|
+
if (!sqlDb)
|
|
22
|
+
throw new Error("Database not initialized — call initDb() first");
|
|
23
|
+
return sqlDb;
|
|
24
|
+
}
|
|
25
|
+
function persistDb() {
|
|
26
|
+
if (!sqlDb)
|
|
27
|
+
return;
|
|
28
|
+
fs_1.default.writeFileSync(DB_PATH, Buffer.from(sqlDb.export()));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* PreparedStatement mimics better-sqlite3's prepared statement API
|
|
32
|
+
* using sql.js under the hood. Statements are lazy — they only touch
|
|
33
|
+
* the database when run/get/all is called, not at creation time.
|
|
34
|
+
*/
|
|
35
|
+
class PreparedStatement {
|
|
36
|
+
sql;
|
|
37
|
+
constructor(sql) {
|
|
38
|
+
this.sql = sql;
|
|
39
|
+
}
|
|
40
|
+
run(...params) {
|
|
41
|
+
const db = requireDb();
|
|
42
|
+
if (params.length > 0) {
|
|
43
|
+
db.run(this.sql, params);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
db.run(this.sql);
|
|
47
|
+
}
|
|
48
|
+
const changes = db.getRowsModified();
|
|
49
|
+
if (!_inTransaction)
|
|
50
|
+
persistDb();
|
|
51
|
+
return { changes };
|
|
52
|
+
}
|
|
53
|
+
get(...params) {
|
|
54
|
+
const db = requireDb();
|
|
55
|
+
const stmt = db.prepare(this.sql);
|
|
56
|
+
try {
|
|
57
|
+
if (params.length > 0)
|
|
58
|
+
stmt.bind(params);
|
|
59
|
+
return stmt.step() ? stmt.getAsObject() : undefined;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
stmt.free();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
all(...params) {
|
|
66
|
+
const db = requireDb();
|
|
67
|
+
const stmt = db.prepare(this.sql);
|
|
68
|
+
try {
|
|
69
|
+
if (params.length > 0)
|
|
70
|
+
stmt.bind(params);
|
|
71
|
+
const rows = [];
|
|
72
|
+
while (stmt.step())
|
|
73
|
+
rows.push(stmt.getAsObject());
|
|
74
|
+
return rows;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
stmt.free();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Database wrapper providing a better-sqlite3-compatible API
|
|
83
|
+
* backed by sql.js (pure WASM SQLite — no native compilation needed).
|
|
84
|
+
*
|
|
85
|
+
* Why: better-sqlite3 requires native C++ compilation (node-gyp, make, gcc).
|
|
86
|
+
* This fails on locked-down environments like Synology NAS. sql.js runs
|
|
87
|
+
* everywhere Node.js runs with zero native dependencies.
|
|
88
|
+
*/
|
|
89
|
+
const db = {
|
|
90
|
+
prepare(sql) {
|
|
91
|
+
return new PreparedStatement(sql);
|
|
92
|
+
},
|
|
93
|
+
exec(sql) {
|
|
94
|
+
requireDb().exec(sql);
|
|
95
|
+
if (!_inTransaction)
|
|
96
|
+
persistDb();
|
|
97
|
+
},
|
|
98
|
+
pragma(pragma) {
|
|
99
|
+
try {
|
|
100
|
+
requireDb().exec(`PRAGMA ${pragma}`);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Some pragmas (e.g. journal_mode=WAL) are not supported in WASM — ignore gracefully
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
transaction(fn) {
|
|
107
|
+
return (...args) => {
|
|
108
|
+
const db = requireDb();
|
|
109
|
+
db.exec("BEGIN");
|
|
110
|
+
_inTransaction = true;
|
|
111
|
+
try {
|
|
112
|
+
const result = fn(...args);
|
|
113
|
+
db.exec("COMMIT");
|
|
114
|
+
_inTransaction = false;
|
|
115
|
+
persistDb();
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
_inTransaction = false;
|
|
120
|
+
try {
|
|
121
|
+
db.exec("ROLLBACK");
|
|
122
|
+
}
|
|
123
|
+
catch { /* best effort */ }
|
|
124
|
+
throw err;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Initialize the sql.js database. Must be called (and awaited) before
|
|
131
|
+
* any DB operations. Loads existing data from disk or creates a new DB.
|
|
132
|
+
*/
|
|
133
|
+
async function initDb() {
|
|
134
|
+
const SQL = await (0, sql_js_1.default)();
|
|
135
|
+
// Load existing DB file or create a new one
|
|
136
|
+
if (fs_1.default.existsSync(DB_PATH)) {
|
|
137
|
+
const fileBuffer = fs_1.default.readFileSync(DB_PATH);
|
|
138
|
+
sqlDb = new SQL.Database(fileBuffer);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
sqlDb = new SQL.Database();
|
|
142
|
+
}
|
|
143
|
+
// Enable foreign keys (WAL mode is not applicable for sql.js — it uses
|
|
144
|
+
// in-memory storage with manual persist to disk)
|
|
145
|
+
sqlDb.exec("PRAGMA foreign_keys = ON");
|
|
146
|
+
// Create tables
|
|
147
|
+
sqlDb.exec(`
|
|
24
148
|
CREATE TABLE IF NOT EXISTS agents (
|
|
25
149
|
id TEXT PRIMARY KEY,
|
|
26
150
|
name TEXT NOT NULL,
|
|
@@ -73,9 +197,15 @@ function initDb() {
|
|
|
73
197
|
PRIMARY KEY (projectId, sessionId),
|
|
74
198
|
FOREIGN KEY (projectId) REFERENCES projects(id) ON DELETE CASCADE
|
|
75
199
|
);
|
|
200
|
+
|
|
201
|
+
CREATE TABLE IF NOT EXISTS settings (
|
|
202
|
+
key TEXT PRIMARY KEY,
|
|
203
|
+
value TEXT NOT NULL,
|
|
204
|
+
updatedAt TEXT NOT NULL
|
|
205
|
+
);
|
|
76
206
|
`);
|
|
207
|
+
persistDb();
|
|
208
|
+
console.log("[DB] sql.js initialized (pure WASM SQLite — no native deps)");
|
|
77
209
|
}
|
|
78
|
-
// Run immediately so tables exist before other modules call db.prepare()
|
|
79
|
-
initDb();
|
|
80
210
|
exports.default = db;
|
|
81
211
|
//# sourceMappingURL=db.js.map
|
package/backend/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/backend/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const dotenv_1 = __importDefault(require("dotenv"));
|
|
|
7
7
|
dotenv_1.default.config();
|
|
8
8
|
const express_1 = __importDefault(require("express"));
|
|
9
9
|
const cors_1 = __importDefault(require("cors"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
10
11
|
const db_1 = require("./db");
|
|
11
12
|
const telegram_1 = require("./telegram");
|
|
12
13
|
const alertChecker_1 = require("./alertChecker");
|
|
@@ -14,41 +15,47 @@ const routes_1 = __importDefault(require("./routes"));
|
|
|
14
15
|
const sync_1 = require("./sync");
|
|
15
16
|
const PORT = parseInt(process.env.PORT || "3001", 10);
|
|
16
17
|
const API_KEY = process.env.API_KEY || "";
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
app.use(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
async function main() {
|
|
19
|
+
// Initialize sql.js database (must complete before any DB operations)
|
|
20
|
+
await (0, db_1.initDb)();
|
|
21
|
+
const app = (0, express_1.default)();
|
|
22
|
+
app.use((0, cors_1.default)());
|
|
23
|
+
app.use(express_1.default.json());
|
|
24
|
+
// API key auth middleware (skip if no API_KEY configured)
|
|
25
|
+
if (API_KEY) {
|
|
26
|
+
app.use("/api", (req, res, next) => {
|
|
27
|
+
const key = req.headers["x-clawatch-key"];
|
|
28
|
+
if (key !== API_KEY) {
|
|
29
|
+
res.status(401).json({ error: "Invalid or missing API key" });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
next();
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
app.use("/api", routes_1.default);
|
|
36
|
+
// Health check
|
|
37
|
+
app.get("/health", (_req, res) => {
|
|
38
|
+
res.json({ status: "ok", timestamp: new Date().toISOString() });
|
|
29
39
|
});
|
|
30
|
-
|
|
31
|
-
app.use("
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
app.get("*", (_req, res) => {
|
|
40
|
-
res.sendFile(path_1.default.join(__dirname, "..", "public", "index.html"));
|
|
41
|
-
});
|
|
42
|
-
// Init
|
|
43
|
-
(0, db_1.initDb)();
|
|
44
|
-
(0, telegram_1.initTelegram)();
|
|
45
|
-
// Sync all data from ~/.openclaw JSONL files into DB on startup
|
|
46
|
-
(0, sync_1.syncAllData)().then(() => {
|
|
40
|
+
// Serve embedded dashboard
|
|
41
|
+
app.use(express_1.default.static(path_1.default.join(__dirname, "..", "public")));
|
|
42
|
+
app.get("*", (_req, res) => {
|
|
43
|
+
res.sendFile(path_1.default.join(__dirname, "..", "public", "index.html"));
|
|
44
|
+
});
|
|
45
|
+
// Init services
|
|
46
|
+
(0, telegram_1.initTelegram)();
|
|
47
|
+
// Sync all data from ~/.openclaw JSONL files into DB on startup
|
|
48
|
+
await (0, sync_1.syncAllData)();
|
|
47
49
|
(0, alertChecker_1.startAlertChecker)();
|
|
48
|
-
// Re-sync periodically (every
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
app.listen(PORT, () => {
|
|
52
|
-
|
|
50
|
+
// Re-sync periodically (every 15s) to keep DB in sync with JSONL
|
|
51
|
+
// Reduced from 60s to match session freshness and keep agents tab in sync
|
|
52
|
+
setInterval(() => (0, sync_1.syncAllData)(), 15_000);
|
|
53
|
+
app.listen(PORT, () => {
|
|
54
|
+
console.log(`[ClaWatch] Backend running on http://localhost:${PORT}`);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
main().catch((err) => {
|
|
58
|
+
console.error("[ClaWatch] Fatal startup error:", err);
|
|
59
|
+
process.exit(1);
|
|
53
60
|
});
|
|
54
61
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,sDAA8B;AAC9B,gDAAwB;AACxB,6BAA8B;AAC9B,yCAA0C;AAC1C,iDAAmD;AACnD,sDAA8B;AAC9B,iCAAqC;AAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AACtD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;AAE1C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,sDAA8B;AAC9B,gDAAwB;AACxB,gDAAwB;AACxB,6BAA8B;AAC9B,yCAA0C;AAC1C,iDAAmD;AACnD,sDAA8B;AAC9B,iCAAqC;AAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AACtD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;AAE1C,KAAK,UAAU,IAAI;IACjB,sEAAsE;IACtE,MAAM,IAAA,WAAM,GAAE,CAAC;IAEf,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,0DAA0D;IAC1D,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC1C,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAM,CAAC,CAAC;IAExB,eAAe;IACf,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzB,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,gBAAgB;IAChB,IAAA,uBAAY,GAAE,CAAC;IAEf,gEAAgE;IAChE,MAAM,IAAA,kBAAW,GAAE,CAAC;IACpB,IAAA,gCAAiB,GAAE,CAAC;IAEpB,iEAAiE;IACjE,0EAA0E;IAC1E,WAAW,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAW,GAAE,EAAE,MAAM,CAAC,CAAC;IAEzC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuiCxB,eAAe,MAAM,CAAC"}
|
package/backend/dist/routes.js
CHANGED
|
@@ -41,8 +41,12 @@ const fs = __importStar(require("fs"));
|
|
|
41
41
|
const path = __importStar(require("path"));
|
|
42
42
|
const db_1 = __importDefault(require("./db"));
|
|
43
43
|
const sessions_1 = require("./sessions");
|
|
44
|
+
const sync_1 = require("./sync");
|
|
44
45
|
const projects_1 = require("./projects");
|
|
45
46
|
const router = (0, express_1.Router)();
|
|
47
|
+
// ---------- Shared prepared statements ----------
|
|
48
|
+
const getSetting = db_1.default.prepare("SELECT value FROM settings WHERE key = ?");
|
|
49
|
+
const upsertSetting = db_1.default.prepare("INSERT INTO settings (key, value, updatedAt) VALUES (?, ?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value, updatedAt = excluded.updatedAt");
|
|
46
50
|
// ---------- Profiles ----------
|
|
47
51
|
router.get("/profiles", (_req, res) => {
|
|
48
52
|
const profiles = (0, sessions_1.discoverProfiles)();
|
|
@@ -73,6 +77,13 @@ router.get("/version", (_req, res) => {
|
|
|
73
77
|
});
|
|
74
78
|
// ---------- Agents ----------
|
|
75
79
|
router.get("/agents", async (_req, res) => {
|
|
80
|
+
// Trigger sync if last sync was >10s ago (keeps agents fresh with sessions)
|
|
81
|
+
if (Date.now() - (0, sync_1.getLastSyncTime)() > 10_000) {
|
|
82
|
+
try {
|
|
83
|
+
await (0, sync_1.syncAllData)();
|
|
84
|
+
}
|
|
85
|
+
catch { /* non-fatal */ }
|
|
86
|
+
}
|
|
76
87
|
const statusFilter = _req.query.status || "active";
|
|
77
88
|
const profileFilter = _req.query.profile;
|
|
78
89
|
const agents = db_1.default.prepare("SELECT * FROM agents ORDER BY costUsd DESC").all();
|
|
@@ -81,17 +92,40 @@ router.get("/agents", async (_req, res) => {
|
|
|
81
92
|
? agents
|
|
82
93
|
: agents.filter((a) => a.status === statusFilter);
|
|
83
94
|
// Filter by profile: only return agents that have sessions in the selected profile
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const agentIdsInProfile = new Set(sessions.map((s) => s.agentId));
|
|
88
|
-
filtered = filtered.filter((a) => agentIdsInProfile.has(a.id));
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
// If profile lookup fails, return unfiltered
|
|
92
|
-
}
|
|
95
|
+
let sessions = [];
|
|
96
|
+
try {
|
|
97
|
+
sessions = await (0, sessions_1.listSessions)(profileFilter);
|
|
93
98
|
}
|
|
94
|
-
|
|
99
|
+
catch { /* ignore */ }
|
|
100
|
+
if (profileFilter) {
|
|
101
|
+
const agentIdsInProfile = new Set(sessions.map((s) => s.agentId));
|
|
102
|
+
filtered = filtered.filter((a) => agentIdsInProfile.has(a.id));
|
|
103
|
+
}
|
|
104
|
+
// Enrich with spend data
|
|
105
|
+
const now = new Date();
|
|
106
|
+
const todayStr = now.toISOString().slice(0, 10);
|
|
107
|
+
const monthStr = now.toISOString().slice(0, 7);
|
|
108
|
+
const limitsRow = getSetting?.get("cost-limits");
|
|
109
|
+
const limits = limitsRow ? JSON.parse(limitsRow.value) : { type: null, amount: null, agentLimits: {} };
|
|
110
|
+
const enriched = filtered.map((a) => {
|
|
111
|
+
const agentSessions = sessions.filter((s) => s.agentId === a.id);
|
|
112
|
+
const todaySpend = agentSessions.filter((s) => s.startedAt.slice(0, 10) === todayStr).reduce((sum, s) => sum + s.costUsd, 0);
|
|
113
|
+
const mtdSpend = agentSessions.filter((s) => s.startedAt.slice(0, 7) === monthStr).reduce((sum, s) => sum + s.costUsd, 0);
|
|
114
|
+
const agentLimit = limits.agentLimits?.[a.id] ?? limits.amount;
|
|
115
|
+
const limitType = limits.type;
|
|
116
|
+
const currentSpend = limitType === "daily" ? todaySpend : limitType === "monthly" ? mtdSpend : null;
|
|
117
|
+
const usagePercent = agentLimit && currentSpend !== null ? (currentSpend / agentLimit) * 100 : null;
|
|
118
|
+
return {
|
|
119
|
+
...a,
|
|
120
|
+
todaySpend: +todaySpend.toFixed(2),
|
|
121
|
+
mtdSpend: +mtdSpend.toFixed(2),
|
|
122
|
+
limit: agentLimit ?? null,
|
|
123
|
+
limitType,
|
|
124
|
+
usagePercent: usagePercent !== null ? +usagePercent.toFixed(1) : null,
|
|
125
|
+
overLimit: usagePercent !== null && usagePercent >= 100,
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
res.json({ agents: enriched, limits });
|
|
95
129
|
});
|
|
96
130
|
router.get("/agents/:id", (req, res) => {
|
|
97
131
|
const agent = db_1.default.prepare("SELECT * FROM agents WHERE id = ?").get(req.params.id);
|
|
@@ -827,7 +861,10 @@ router.get("/analytics", async (req, res) => {
|
|
|
827
861
|
...(bMap.get(date) || zeroBucket),
|
|
828
862
|
})),
|
|
829
863
|
}));
|
|
830
|
-
|
|
864
|
+
// Include cost limits for chart reference lines
|
|
865
|
+
const limitsRow2 = getSetting.get("cost-limits");
|
|
866
|
+
const costLimits = limitsRow2 ? JSON.parse(limitsRow2.value) : null;
|
|
867
|
+
res.json({ buckets, byAgent, byProject, limits: costLimits });
|
|
831
868
|
}
|
|
832
869
|
catch (err) {
|
|
833
870
|
res.status(500).json({ error: err.message || "Failed to get analytics" });
|
|
@@ -891,5 +928,75 @@ router.delete("/projects/:id/sessions/:sessionId", (req, res) => {
|
|
|
891
928
|
}
|
|
892
929
|
res.json({ ok: true });
|
|
893
930
|
});
|
|
931
|
+
// ---------- Settings ----------
|
|
932
|
+
router.get("/settings/cost-limits", (_req, res) => {
|
|
933
|
+
const row = getSetting.get("cost-limits");
|
|
934
|
+
if (!row) {
|
|
935
|
+
res.json({ type: null, amount: null, agentLimits: {} });
|
|
936
|
+
return;
|
|
937
|
+
}
|
|
938
|
+
res.json(JSON.parse(row.value));
|
|
939
|
+
});
|
|
940
|
+
router.put("/settings/cost-limits", (req, res) => {
|
|
941
|
+
const { type, amount, agentLimits } = req.body;
|
|
942
|
+
if (type && !["daily", "monthly"].includes(type)) {
|
|
943
|
+
res.status(400).json({ error: "type must be 'daily' or 'monthly'" });
|
|
944
|
+
return;
|
|
945
|
+
}
|
|
946
|
+
const config = {
|
|
947
|
+
type: type || null,
|
|
948
|
+
amount: typeof amount === "number" ? amount : null,
|
|
949
|
+
agentLimits: agentLimits || {},
|
|
950
|
+
};
|
|
951
|
+
upsertSetting.run("cost-limits", JSON.stringify(config), new Date().toISOString());
|
|
952
|
+
res.json({ ok: true, ...config });
|
|
953
|
+
});
|
|
954
|
+
// ---------- Spend ----------
|
|
955
|
+
router.get("/spend", async (req, res) => {
|
|
956
|
+
try {
|
|
957
|
+
const profile = req.query.profile;
|
|
958
|
+
const sessions = await (0, sessions_1.listSessions)(profile);
|
|
959
|
+
const now = new Date();
|
|
960
|
+
// Today's spend (UTC day)
|
|
961
|
+
const todayStr = now.toISOString().slice(0, 10);
|
|
962
|
+
const todaySessions = sessions.filter((s) => s.startedAt.slice(0, 10) === todayStr);
|
|
963
|
+
const todaySpend = todaySessions.reduce((sum, s) => sum + s.costUsd, 0);
|
|
964
|
+
// MTD spend (current month)
|
|
965
|
+
const monthStr = now.toISOString().slice(0, 7); // "2026-03"
|
|
966
|
+
const mtdSessions = sessions.filter((s) => s.startedAt.slice(0, 7) === monthStr);
|
|
967
|
+
const mtdSpend = mtdSessions.reduce((sum, s) => sum + s.costUsd, 0);
|
|
968
|
+
// Per-agent breakdown for today and MTD
|
|
969
|
+
const byAgent = {};
|
|
970
|
+
for (const s of sessions) {
|
|
971
|
+
if (!byAgent[s.agentId])
|
|
972
|
+
byAgent[s.agentId] = { today: 0, mtd: 0 };
|
|
973
|
+
if (s.startedAt.slice(0, 10) === todayStr)
|
|
974
|
+
byAgent[s.agentId].today += s.costUsd;
|
|
975
|
+
if (s.startedAt.slice(0, 7) === monthStr)
|
|
976
|
+
byAgent[s.agentId].mtd += s.costUsd;
|
|
977
|
+
}
|
|
978
|
+
// Get cost limits
|
|
979
|
+
const limitsRow = getSetting.get("cost-limits");
|
|
980
|
+
const limits = limitsRow ? JSON.parse(limitsRow.value) : { type: null, amount: null, agentLimits: {} };
|
|
981
|
+
// Calculate usage percentage
|
|
982
|
+
let usagePercent = null;
|
|
983
|
+
if (limits.type && limits.amount) {
|
|
984
|
+
const currentSpend = limits.type === "daily" ? todaySpend : mtdSpend;
|
|
985
|
+
usagePercent = (currentSpend / limits.amount) * 100;
|
|
986
|
+
}
|
|
987
|
+
res.json({
|
|
988
|
+
today: +todaySpend.toFixed(2),
|
|
989
|
+
mtd: +mtdSpend.toFixed(2),
|
|
990
|
+
byAgent,
|
|
991
|
+
limits,
|
|
992
|
+
usagePercent: usagePercent !== null ? +usagePercent.toFixed(1) : null,
|
|
993
|
+
periodLabel: limits.type === "daily" ? "Daily" : limits.type === "monthly" ? "Monthly" : null,
|
|
994
|
+
currentSpend: limits.type === "daily" ? +todaySpend.toFixed(2) : limits.type === "monthly" ? +mtdSpend.toFixed(2) : null,
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
catch (err) {
|
|
998
|
+
res.status(500).json({ error: err.message || "Failed to get spend data" });
|
|
999
|
+
}
|
|
1000
|
+
});
|
|
894
1001
|
exports.default = router;
|
|
895
1002
|
//# sourceMappingURL=routes.js.map
|