clawatch 1.0.22 → 1.0.23
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/db.d.ts +33 -3
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +134 -10
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/index.js +38 -32
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/seed.js +115 -109
- package/backend/dist/seed.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/.next/BUILD_ID +1 -1
- package/frontend/.next/build-manifest.json +2 -2
- 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.html +1 -1
- package/frontend/.next/server/app/_not-found.rsc +1 -1
- package/frontend/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/frontend/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- 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 +1 -1
- package/frontend/.next/server/app/dashboard.html +1 -1
- package/frontend/.next/server/app/dashboard.rsc +1 -1
- package/frontend/.next/server/app/dashboard.segments/_full.segment.rsc +1 -1
- package/frontend/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/dashboard.segments/_index.segment.rsc +1 -1
- package/frontend/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/frontend/.next/server/app/dashboard.segments/dashboard/__PAGE__.segment.rsc +1 -1
- 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 +1 -1
- package/frontend/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/frontend/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/frontend/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/frontend/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/frontend/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/frontend/.next/server/pages/404.html +1 -1
- package/frontend/.next/server/pages/500.html +2 -2
- 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/static/{3i-dBEEyQLocTNHX5oPZn → a36G8G-fn_tjHP7E62qvj}/_buildManifest.js +0 -0
- /package/frontend/.next/static/{3i-dBEEyQLocTNHX5oPZn → a36G8G-fn_tjHP7E62qvj}/_clientMiddlewareManifest.json +0 -0
- /package/frontend/.next/static/{3i-dBEEyQLocTNHX5oPZn → a36G8G-fn_tjHP7E62qvj}/_ssgManifest.js +0 -0
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,CAyErC;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,
|
|
@@ -74,8 +198,8 @@ function initDb() {
|
|
|
74
198
|
FOREIGN KEY (projectId) REFERENCES projects(id) ON DELETE CASCADE
|
|
75
199
|
);
|
|
76
200
|
`);
|
|
201
|
+
persistDb();
|
|
202
|
+
console.log("[DB] sql.js initialized (pure WASM SQLite — no native deps)");
|
|
77
203
|
}
|
|
78
|
-
// Run immediately so tables exist before other modules call db.prepare()
|
|
79
|
-
initDb();
|
|
80
204
|
exports.default = db;
|
|
81
205
|
//# 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,46 @@ 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
50
|
// Re-sync periodically (every 60s) to keep DB in sync with JSONL
|
|
49
51
|
setInterval(() => (0, sync_1.syncAllData)(), 60_000);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
app.listen(PORT, () => {
|
|
53
|
+
console.log(`[ClaWatch] Backend running on http://localhost:${PORT}`);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
main().catch((err) => {
|
|
57
|
+
console.error("[ClaWatch] Fatal startup error:", err);
|
|
58
|
+
process.exit(1);
|
|
53
59
|
});
|
|
54
60
|
//# 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,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"}
|
package/backend/dist/seed.js
CHANGED
|
@@ -7,117 +7,123 @@ const dotenv_1 = __importDefault(require("dotenv"));
|
|
|
7
7
|
dotenv_1.default.config();
|
|
8
8
|
const db_1 = require("./db");
|
|
9
9
|
const db_2 = __importDefault(require("./db"));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
// Generate error events for error-prone agents
|
|
101
|
-
if (a.errorCount > 0) {
|
|
102
|
-
for (let i = 0; i < a.errorCount; i++) {
|
|
103
|
-
const ts = new Date(now - i * 10 * min).toISOString();
|
|
104
|
-
insertEvent.run(a.id, "error", ts, JSON.stringify({
|
|
105
|
-
error: i === 0 ? "Rate limit exceeded: 429 Too Many Requests" : "Timeout waiting for tool response",
|
|
106
|
-
message: "Agent encountered an error",
|
|
10
|
+
async function main() {
|
|
11
|
+
await (0, db_1.initDb)();
|
|
12
|
+
// Clear existing data
|
|
13
|
+
db_2.default.exec("DELETE FROM events; DELETE FROM alerts; DELETE FROM agents;");
|
|
14
|
+
const now = Date.now();
|
|
15
|
+
const min = 60000;
|
|
16
|
+
const hour = 3600000;
|
|
17
|
+
const agents = [
|
|
18
|
+
{
|
|
19
|
+
id: "agent_code01",
|
|
20
|
+
name: "code-reviewer",
|
|
21
|
+
host: "dev-macbook",
|
|
22
|
+
status: "running",
|
|
23
|
+
costUsd: 4.52,
|
|
24
|
+
tokenCount: 185000,
|
|
25
|
+
errorCount: 1,
|
|
26
|
+
createdHoursAgo: 6,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "agent_deploy02",
|
|
30
|
+
name: "deploy-assistant",
|
|
31
|
+
host: "ci-runner-1",
|
|
32
|
+
status: "running",
|
|
33
|
+
costUsd: 2.18,
|
|
34
|
+
tokenCount: 92000,
|
|
35
|
+
errorCount: 0,
|
|
36
|
+
createdHoursAgo: 3,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "agent_research03",
|
|
40
|
+
name: "research-bot",
|
|
41
|
+
host: "cloud-vm-east",
|
|
42
|
+
status: "error",
|
|
43
|
+
costUsd: 8.73,
|
|
44
|
+
tokenCount: 340000,
|
|
45
|
+
errorCount: 5,
|
|
46
|
+
createdHoursAgo: 12,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "agent_qa04",
|
|
50
|
+
name: "qa-tester",
|
|
51
|
+
host: "dev-macbook",
|
|
52
|
+
status: "paused",
|
|
53
|
+
costUsd: 1.05,
|
|
54
|
+
tokenCount: 41000,
|
|
55
|
+
errorCount: 0,
|
|
56
|
+
createdHoursAgo: 2,
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
const insertAgent = db_2.default.prepare(`
|
|
60
|
+
INSERT INTO agents (id, name, host, status, lastHeartbeat, createdAt, costUsd, tokenCount, errorCount)
|
|
61
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
62
|
+
`);
|
|
63
|
+
const insertEvent = db_2.default.prepare(`
|
|
64
|
+
INSERT INTO events (agentId, type, timestamp, data) VALUES (?, ?, ?, ?)
|
|
65
|
+
`);
|
|
66
|
+
const insertAlert = db_2.default.prepare(`
|
|
67
|
+
INSERT INTO alerts (id, agentId, type, severity, message, timestamp, acknowledged) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
68
|
+
`);
|
|
69
|
+
const insertAll = db_2.default.transaction(() => {
|
|
70
|
+
for (const a of agents) {
|
|
71
|
+
const createdAt = new Date(now - a.createdHoursAgo * hour).toISOString();
|
|
72
|
+
const lastHeartbeat = a.status === "running"
|
|
73
|
+
? new Date(now - 30000).toISOString() // 30s ago
|
|
74
|
+
: a.status === "error"
|
|
75
|
+
? new Date(now - 8 * min).toISOString() // 8 min ago (stuck)
|
|
76
|
+
: new Date(now - 45 * min).toISOString(); // paused 45 min ago
|
|
77
|
+
insertAgent.run(a.id, a.name, a.host, a.status, lastHeartbeat, createdAt, a.costUsd, a.tokenCount, a.errorCount);
|
|
78
|
+
// Generate heartbeat events
|
|
79
|
+
for (let i = 0; i < 10; i++) {
|
|
80
|
+
const ts = new Date(now - i * 2 * min).toISOString();
|
|
81
|
+
insertEvent.run(a.id, "heartbeat", ts, JSON.stringify({ message: "alive" }));
|
|
82
|
+
}
|
|
83
|
+
// Generate cost events
|
|
84
|
+
const models = ["claude-sonnet-4-20250514", "claude-haiku-4-5-20251001"];
|
|
85
|
+
for (let i = 0; i < 5; i++) {
|
|
86
|
+
const ts = new Date(now - i * 30 * min).toISOString();
|
|
87
|
+
const model = models[i % 2];
|
|
88
|
+
const cost = +(Math.random() * 1.5 + 0.1).toFixed(3);
|
|
89
|
+
const tokens = Math.floor(Math.random() * 30000 + 5000);
|
|
90
|
+
insertEvent.run(a.id, "cost", ts, JSON.stringify({ model, costUsd: cost, tokenCount: tokens }));
|
|
91
|
+
}
|
|
92
|
+
// Generate tool_call events
|
|
93
|
+
const tools = ["exec", "file_read", "web_search", "code_edit", "test_run"];
|
|
94
|
+
for (let i = 0; i < 8; i++) {
|
|
95
|
+
const ts = new Date(now - i * 5 * min).toISOString();
|
|
96
|
+
insertEvent.run(a.id, "tool_call", ts, JSON.stringify({
|
|
97
|
+
toolName: tools[i % tools.length],
|
|
98
|
+
message: `Called ${tools[i % tools.length]}`,
|
|
107
99
|
}));
|
|
108
100
|
}
|
|
101
|
+
// Generate error events for error-prone agents
|
|
102
|
+
if (a.errorCount > 0) {
|
|
103
|
+
for (let i = 0; i < a.errorCount; i++) {
|
|
104
|
+
const ts = new Date(now - i * 10 * min).toISOString();
|
|
105
|
+
insertEvent.run(a.id, "error", ts, JSON.stringify({
|
|
106
|
+
error: i === 0 ? "Rate limit exceeded: 429 Too Many Requests" : "Timeout waiting for tool response",
|
|
107
|
+
message: "Agent encountered an error",
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
109
111
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
// Seed some alerts
|
|
113
|
+
insertAlert.run("alert_seed01", "agent_research03", "error", "critical", "Error spike detected — 5 errors in the last 1 minute(s)", new Date(now - 10 * min).toISOString(), 0);
|
|
114
|
+
insertAlert.run("alert_seed02", "agent_research03", "stuck", "critical", "Agent research-bot is stuck — no heartbeat for 5 minutes", new Date(now - 5 * min).toISOString(), 0);
|
|
115
|
+
insertAlert.run("alert_seed03", "agent_code01", "cost_spike", "warning", "Agent code-reviewer exceeded cost threshold — $4.52 spent (threshold: $10)", new Date(now - 2 * hour).toISOString(), 1);
|
|
116
|
+
});
|
|
117
|
+
insertAll();
|
|
118
|
+
console.log("[Seed] Done! Created:");
|
|
119
|
+
console.log(` - ${agents.length} agents`);
|
|
120
|
+
const eventCount = db_2.default.prepare("SELECT COUNT(*) as cnt FROM events").get();
|
|
121
|
+
const alertCount = db_2.default.prepare("SELECT COUNT(*) as cnt FROM alerts").get();
|
|
122
|
+
console.log(` - ${eventCount.cnt} events`);
|
|
123
|
+
console.log(` - ${alertCount.cnt} alerts`);
|
|
124
|
+
}
|
|
125
|
+
main().catch((err) => {
|
|
126
|
+
console.error("[Seed] Error:", err);
|
|
127
|
+
process.exit(1);
|
|
115
128
|
});
|
|
116
|
-
insertAll();
|
|
117
|
-
console.log("[Seed] Done! Created:");
|
|
118
|
-
console.log(` - ${agents.length} agents`);
|
|
119
|
-
const eventCount = db_2.default.prepare("SELECT COUNT(*) as cnt FROM events").get();
|
|
120
|
-
const alertCount = db_2.default.prepare("SELECT COUNT(*) as cnt FROM alerts").get();
|
|
121
|
-
console.log(` - ${eventCount.cnt} events`);
|
|
122
|
-
console.log(` - ${alertCount.cnt} alerts`);
|
|
123
129
|
//# sourceMappingURL=seed.js.map
|
package/backend/dist/seed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,6BAA8B;AAC9B,8CAAsB;AAEtB,IAAA,WAAM,GAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"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"}
|