groove-dev 0.27.93 → 0.27.94
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/moe-training/package.json +2 -1
- package/node_modules/@groove-dev/cli/package.json +1 -1
- package/node_modules/@groove-dev/daemon/package.json +1 -1
- package/node_modules/@groove-dev/daemon/src/api.js +17 -9
- package/node_modules/@groove-dev/daemon/src/process.js +2 -0
- package/node_modules/@groove-dev/gui/dist/assets/{index-VB4_k5Pz.js → index-B3GUKInH.js} +339 -339
- package/node_modules/@groove-dev/gui/dist/assets/{index-Bo6AeNmM.css → index-C1k-GuDg.css} +1 -1
- package/node_modules/@groove-dev/gui/dist/index.html +2 -2
- package/node_modules/@groove-dev/gui/package.json +1 -1
- package/node_modules/@groove-dev/gui/src/components/agents/agent-panel.jsx +2 -0
- package/node_modules/@groove-dev/gui/src/stores/groove.js +14 -10
- package/node_modules/@groove-dev/gui/src/views/agents.jsx +10 -68
- package/node_modules/base64-js/LICENSE +21 -0
- package/node_modules/base64-js/README.md +34 -0
- package/node_modules/base64-js/base64js.min.js +1 -0
- package/node_modules/base64-js/index.d.ts +3 -0
- package/node_modules/base64-js/index.js +150 -0
- package/node_modules/base64-js/package.json +47 -0
- package/node_modules/better-sqlite3/LICENSE +21 -0
- package/node_modules/better-sqlite3/README.md +99 -0
- package/node_modules/better-sqlite3/binding.gyp +38 -0
- package/node_modules/better-sqlite3/deps/common.gypi +68 -0
- package/node_modules/better-sqlite3/deps/copy.js +31 -0
- package/node_modules/better-sqlite3/deps/defines.gypi +41 -0
- package/node_modules/better-sqlite3/deps/download.sh +122 -0
- package/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +268845 -0
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +14335 -0
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +739 -0
- package/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
- package/node_modules/better-sqlite3/deps/test_extension.c +21 -0
- package/node_modules/better-sqlite3/lib/database.js +90 -0
- package/node_modules/better-sqlite3/lib/index.js +3 -0
- package/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
- package/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
- package/node_modules/better-sqlite3/lib/methods/function.js +31 -0
- package/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
- package/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
- package/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
- package/node_modules/better-sqlite3/lib/methods/table.js +189 -0
- package/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
- package/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
- package/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
- package/node_modules/better-sqlite3/lib/util.js +12 -0
- package/node_modules/better-sqlite3/package.json +59 -0
- package/node_modules/better-sqlite3/src/addon.cpp +47 -0
- package/node_modules/better-sqlite3/src/better_sqlite3.cpp +74 -0
- package/node_modules/better-sqlite3/src/objects/backup.cpp +120 -0
- package/node_modules/better-sqlite3/src/objects/backup.hpp +36 -0
- package/node_modules/better-sqlite3/src/objects/database.cpp +417 -0
- package/node_modules/better-sqlite3/src/objects/database.hpp +103 -0
- package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +113 -0
- package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +50 -0
- package/node_modules/better-sqlite3/src/objects/statement.cpp +383 -0
- package/node_modules/better-sqlite3/src/objects/statement.hpp +58 -0
- package/node_modules/better-sqlite3/src/util/bind-map.cpp +73 -0
- package/node_modules/better-sqlite3/src/util/binder.cpp +193 -0
- package/node_modules/better-sqlite3/src/util/constants.cpp +172 -0
- package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +121 -0
- package/node_modules/better-sqlite3/src/util/custom-function.cpp +59 -0
- package/node_modules/better-sqlite3/src/util/custom-table.cpp +409 -0
- package/node_modules/better-sqlite3/src/util/data-converter.cpp +17 -0
- package/node_modules/better-sqlite3/src/util/data.cpp +194 -0
- package/node_modules/better-sqlite3/src/util/helpers.cpp +109 -0
- package/node_modules/better-sqlite3/src/util/macros.cpp +83 -0
- package/node_modules/better-sqlite3/src/util/query-macros.cpp +71 -0
- package/node_modules/better-sqlite3/src/util/row-builder.cpp +49 -0
- package/node_modules/bindings/LICENSE.md +22 -0
- package/node_modules/bindings/README.md +98 -0
- package/node_modules/bindings/bindings.js +221 -0
- package/node_modules/bindings/package.json +28 -0
- package/node_modules/bl/.travis.yml +17 -0
- package/node_modules/bl/BufferList.js +396 -0
- package/node_modules/bl/LICENSE.md +13 -0
- package/node_modules/bl/README.md +247 -0
- package/node_modules/bl/bl.js +84 -0
- package/node_modules/bl/package.json +37 -0
- package/node_modules/bl/test/convert.js +21 -0
- package/node_modules/bl/test/indexOf.js +492 -0
- package/node_modules/bl/test/isBufferList.js +32 -0
- package/node_modules/bl/test/test.js +869 -0
- package/node_modules/buffer/AUTHORS.md +70 -0
- package/node_modules/buffer/LICENSE +21 -0
- package/node_modules/buffer/README.md +410 -0
- package/node_modules/buffer/index.d.ts +186 -0
- package/node_modules/buffer/index.js +1817 -0
- package/node_modules/buffer/package.json +96 -0
- package/node_modules/decompress-response/index.d.ts +22 -0
- package/node_modules/decompress-response/index.js +58 -0
- package/node_modules/decompress-response/license +9 -0
- package/node_modules/decompress-response/node_modules/mimic-response/index.d.ts +17 -0
- package/node_modules/decompress-response/node_modules/mimic-response/index.js +77 -0
- package/node_modules/decompress-response/node_modules/mimic-response/license +9 -0
- package/node_modules/decompress-response/node_modules/mimic-response/package.json +42 -0
- package/node_modules/decompress-response/node_modules/mimic-response/readme.md +78 -0
- package/node_modules/decompress-response/package.json +56 -0
- package/node_modules/decompress-response/readme.md +48 -0
- package/node_modules/deep-extend/LICENSE +20 -0
- package/node_modules/deep-extend/README.md +91 -0
- package/node_modules/deep-extend/index.js +1 -0
- package/node_modules/deep-extend/lib/deep-extend.js +150 -0
- package/node_modules/deep-extend/package.json +62 -0
- package/node_modules/end-of-stream/LICENSE +21 -0
- package/node_modules/end-of-stream/README.md +54 -0
- package/node_modules/end-of-stream/index.js +96 -0
- package/node_modules/end-of-stream/package.json +37 -0
- package/node_modules/expand-template/.travis.yml +6 -0
- package/node_modules/expand-template/LICENSE +21 -0
- package/node_modules/expand-template/README.md +43 -0
- package/node_modules/expand-template/index.js +26 -0
- package/node_modules/expand-template/package.json +29 -0
- package/node_modules/expand-template/test.js +67 -0
- package/node_modules/file-uri-to-path/.npmignore +1 -0
- package/node_modules/file-uri-to-path/.travis.yml +30 -0
- package/node_modules/file-uri-to-path/History.md +21 -0
- package/node_modules/file-uri-to-path/LICENSE +20 -0
- package/node_modules/file-uri-to-path/README.md +74 -0
- package/node_modules/file-uri-to-path/index.d.ts +2 -0
- package/node_modules/file-uri-to-path/index.js +66 -0
- package/node_modules/file-uri-to-path/package.json +32 -0
- package/node_modules/file-uri-to-path/test/test.js +24 -0
- package/node_modules/file-uri-to-path/test/tests.json +13 -0
- package/node_modules/fs-constants/LICENSE +21 -0
- package/node_modules/fs-constants/README.md +26 -0
- package/node_modules/fs-constants/browser.js +1 -0
- package/node_modules/fs-constants/index.js +1 -0
- package/node_modules/fs-constants/package.json +19 -0
- package/node_modules/github-from-package/.travis.yml +4 -0
- package/node_modules/github-from-package/LICENSE +18 -0
- package/node_modules/github-from-package/example/package.json +8 -0
- package/node_modules/github-from-package/example/url.js +3 -0
- package/node_modules/github-from-package/index.js +17 -0
- package/node_modules/github-from-package/package.json +30 -0
- package/node_modules/github-from-package/readme.markdown +53 -0
- package/node_modules/github-from-package/test/a.json +8 -0
- package/node_modules/github-from-package/test/b.json +5 -0
- package/node_modules/github-from-package/test/c.json +5 -0
- package/node_modules/github-from-package/test/d.json +7 -0
- package/node_modules/github-from-package/test/e.json +5 -0
- package/node_modules/github-from-package/test/url.js +19 -0
- package/node_modules/ieee754/LICENSE +11 -0
- package/node_modules/ieee754/README.md +51 -0
- package/node_modules/ieee754/index.d.ts +10 -0
- package/node_modules/ieee754/index.js +85 -0
- package/node_modules/ieee754/package.json +52 -0
- package/node_modules/ini/LICENSE +15 -0
- package/node_modules/ini/README.md +102 -0
- package/node_modules/ini/ini.js +206 -0
- package/node_modules/ini/package.json +33 -0
- package/node_modules/minimist/.eslintrc +29 -0
- package/node_modules/minimist/.github/FUNDING.yml +12 -0
- package/node_modules/minimist/.nycrc +14 -0
- package/node_modules/minimist/CHANGELOG.md +298 -0
- package/node_modules/minimist/LICENSE +18 -0
- package/node_modules/minimist/README.md +121 -0
- package/node_modules/minimist/example/parse.js +4 -0
- package/node_modules/minimist/index.js +263 -0
- package/node_modules/minimist/package.json +75 -0
- package/node_modules/minimist/test/all_bool.js +34 -0
- package/node_modules/minimist/test/bool.js +177 -0
- package/node_modules/minimist/test/dash.js +43 -0
- package/node_modules/minimist/test/default_bool.js +37 -0
- package/node_modules/minimist/test/dotted.js +24 -0
- package/node_modules/minimist/test/kv_short.js +32 -0
- package/node_modules/minimist/test/long.js +33 -0
- package/node_modules/minimist/test/num.js +38 -0
- package/node_modules/minimist/test/parse.js +209 -0
- package/node_modules/minimist/test/parse_modified.js +11 -0
- package/node_modules/minimist/test/proto.js +64 -0
- package/node_modules/minimist/test/short.js +69 -0
- package/node_modules/minimist/test/stop_early.js +17 -0
- package/node_modules/minimist/test/unknown.js +104 -0
- package/node_modules/minimist/test/whitespace.js +10 -0
- package/node_modules/mkdirp-classic/LICENSE +21 -0
- package/node_modules/mkdirp-classic/README.md +18 -0
- package/node_modules/mkdirp-classic/index.js +98 -0
- package/node_modules/mkdirp-classic/package.json +18 -0
- package/node_modules/moe-training/DEPLOY_CENTRAL_COMMAND.md +413 -0
- package/node_modules/moe-training/client/consent.js +96 -0
- package/node_modules/moe-training/client/envelope-builder.js +56 -0
- package/node_modules/moe-training/client/index.js +10 -0
- package/node_modules/moe-training/client/parsers/claude-code.js +108 -0
- package/node_modules/moe-training/client/parsers/codex.js +80 -0
- package/node_modules/moe-training/client/parsers/gemini.js +80 -0
- package/node_modules/moe-training/client/parsers/grok.js +16 -0
- package/node_modules/moe-training/client/parsers/index.js +20 -0
- package/node_modules/moe-training/client/scrubber.js +128 -0
- package/node_modules/moe-training/client/session-attestation.js +115 -0
- package/node_modules/moe-training/client/step-classifier.js +68 -0
- package/node_modules/moe-training/client/trajectory-capture.js +307 -0
- package/node_modules/moe-training/client/transmission-queue.js +104 -0
- package/node_modules/moe-training/package.json +21 -0
- package/node_modules/moe-training/server/enrichment.js +24 -0
- package/node_modules/moe-training/server/index.js +119 -0
- package/node_modules/moe-training/server/ledger.js +110 -0
- package/node_modules/moe-training/server/routes/ingest.js +96 -0
- package/node_modules/moe-training/server/routes/sessions.js +43 -0
- package/node_modules/moe-training/server/routes/stats.js +31 -0
- package/node_modules/moe-training/server/scoring.js +63 -0
- package/node_modules/moe-training/server/session-registry.js +156 -0
- package/node_modules/moe-training/server/stats.js +129 -0
- package/node_modules/moe-training/server/stitcher.js +69 -0
- package/node_modules/moe-training/server/storage.js +147 -0
- package/node_modules/moe-training/server/verifier.js +102 -0
- package/node_modules/moe-training/shared/constants.js +30 -0
- package/node_modules/moe-training/shared/crypto.js +45 -0
- package/node_modules/moe-training/shared/envelope-schema.js +220 -0
- package/node_modules/moe-training/test/client/consent.test.js +121 -0
- package/node_modules/moe-training/test/client/envelope-builder.test.js +107 -0
- package/node_modules/moe-training/test/client/parsers/claude-code.test.js +119 -0
- package/node_modules/moe-training/test/client/parsers/codex.test.js +83 -0
- package/node_modules/moe-training/test/client/parsers/gemini.test.js +99 -0
- package/node_modules/moe-training/test/client/scrubber.test.js +143 -0
- package/node_modules/moe-training/test/client/session-attestation-security.test.js +95 -0
- package/node_modules/moe-training/test/client/step-classifier.test.js +135 -0
- package/node_modules/moe-training/test/client/transmission-queue.test.js +33 -0
- package/node_modules/moe-training/test/integration/handshake.test.js +260 -0
- package/node_modules/moe-training/test/server/ingest-security.test.js +166 -0
- package/node_modules/moe-training/test/server/ledger.test.js +131 -0
- package/node_modules/moe-training/test/server/scoring.test.js +242 -0
- package/node_modules/moe-training/test/server/session-registry.test.js +125 -0
- package/node_modules/moe-training/test/server/stitcher.test.js +157 -0
- package/node_modules/moe-training/test/server/verifier.test.js +232 -0
- package/node_modules/moe-training/test/shared/crypto.test.js +87 -0
- package/node_modules/moe-training/test/shared/envelope-schema.test.js +351 -0
- package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
- package/node_modules/napi-build-utils/LICENSE +21 -0
- package/node_modules/napi-build-utils/README.md +52 -0
- package/node_modules/napi-build-utils/index.js +214 -0
- package/node_modules/napi-build-utils/index.md +0 -0
- package/node_modules/napi-build-utils/package.json +42 -0
- package/node_modules/prebuild-install/CHANGELOG.md +131 -0
- package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
- package/node_modules/prebuild-install/LICENSE +21 -0
- package/node_modules/prebuild-install/README.md +163 -0
- package/node_modules/prebuild-install/asset.js +44 -0
- package/node_modules/prebuild-install/bin.js +78 -0
- package/node_modules/prebuild-install/download.js +142 -0
- package/node_modules/prebuild-install/error.js +14 -0
- package/node_modules/prebuild-install/help.txt +16 -0
- package/node_modules/prebuild-install/index.js +1 -0
- package/node_modules/prebuild-install/log.js +33 -0
- package/node_modules/prebuild-install/node_modules/node-abi/LICENSE +21 -0
- package/node_modules/prebuild-install/node_modules/node-abi/README.md +54 -0
- package/node_modules/prebuild-install/node_modules/node-abi/abi_registry.json +439 -0
- package/node_modules/prebuild-install/node_modules/node-abi/index.js +179 -0
- package/node_modules/prebuild-install/node_modules/node-abi/package.json +45 -0
- package/node_modules/prebuild-install/node_modules/semver/LICENSE +15 -0
- package/node_modules/prebuild-install/node_modules/semver/README.md +665 -0
- package/node_modules/prebuild-install/node_modules/semver/bin/semver.js +191 -0
- package/node_modules/prebuild-install/node_modules/semver/classes/comparator.js +143 -0
- package/node_modules/prebuild-install/node_modules/semver/classes/index.js +7 -0
- package/node_modules/prebuild-install/node_modules/semver/classes/range.js +557 -0
- package/node_modules/prebuild-install/node_modules/semver/classes/semver.js +333 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/clean.js +8 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/cmp.js +54 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/coerce.js +62 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/compare-build.js +9 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/compare-loose.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/compare.js +7 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/diff.js +60 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/eq.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/gt.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/gte.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/inc.js +21 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/lt.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/lte.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/major.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/minor.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/neq.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/parse.js +18 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/patch.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/prerelease.js +8 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/rcompare.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/rsort.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/satisfies.js +12 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/sort.js +5 -0
- package/node_modules/prebuild-install/node_modules/semver/functions/valid.js +8 -0
- package/node_modules/prebuild-install/node_modules/semver/index.js +91 -0
- package/node_modules/prebuild-install/node_modules/semver/internal/constants.js +37 -0
- package/node_modules/prebuild-install/node_modules/semver/internal/debug.js +11 -0
- package/node_modules/prebuild-install/node_modules/semver/internal/identifiers.js +29 -0
- package/node_modules/prebuild-install/node_modules/semver/internal/lrucache.js +42 -0
- package/node_modules/prebuild-install/node_modules/semver/internal/parse-options.js +17 -0
- package/node_modules/prebuild-install/node_modules/semver/internal/re.js +223 -0
- package/node_modules/prebuild-install/node_modules/semver/package.json +78 -0
- package/node_modules/prebuild-install/node_modules/semver/preload.js +4 -0
- package/node_modules/prebuild-install/node_modules/semver/range.bnf +16 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/gtr.js +6 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/intersects.js +9 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/ltr.js +6 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/min-version.js +63 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/outside.js +82 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/simplify.js +49 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/subset.js +249 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/to-comparators.js +10 -0
- package/node_modules/prebuild-install/node_modules/semver/ranges/valid.js +13 -0
- package/node_modules/prebuild-install/package.json +67 -0
- package/node_modules/prebuild-install/proxy.js +35 -0
- package/node_modules/prebuild-install/rc.js +64 -0
- package/node_modules/prebuild-install/util.js +143 -0
- package/node_modules/pump/.github/FUNDING.yml +2 -0
- package/node_modules/pump/.travis.yml +5 -0
- package/node_modules/pump/LICENSE +21 -0
- package/node_modules/pump/README.md +74 -0
- package/node_modules/pump/SECURITY.md +5 -0
- package/node_modules/pump/empty.js +1 -0
- package/node_modules/pump/index.js +86 -0
- package/node_modules/pump/package.json +30 -0
- package/node_modules/pump/test-browser.js +66 -0
- package/node_modules/pump/test-node.js +53 -0
- package/node_modules/rc/LICENSE.APACHE2 +15 -0
- package/node_modules/rc/LICENSE.BSD +26 -0
- package/node_modules/rc/LICENSE.MIT +24 -0
- package/node_modules/rc/README.md +227 -0
- package/node_modules/rc/browser.js +7 -0
- package/node_modules/rc/cli.js +4 -0
- package/node_modules/rc/index.js +53 -0
- package/node_modules/rc/lib/utils.js +104 -0
- package/node_modules/rc/package.json +29 -0
- package/node_modules/rc/test/ini.js +16 -0
- package/node_modules/rc/test/nested-env-vars.js +50 -0
- package/node_modules/rc/test/test.js +59 -0
- package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
- package/node_modules/readable-stream/GOVERNANCE.md +136 -0
- package/node_modules/readable-stream/LICENSE +47 -0
- package/node_modules/readable-stream/README.md +106 -0
- package/node_modules/readable-stream/errors-browser.js +127 -0
- package/node_modules/readable-stream/errors.js +116 -0
- package/node_modules/readable-stream/experimentalWarning.js +17 -0
- package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
- package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
- package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
- package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
- package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
- package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
- package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
- package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
- package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
- package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
- package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
- package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- package/node_modules/readable-stream/package.json +68 -0
- package/node_modules/readable-stream/readable-browser.js +9 -0
- package/node_modules/readable-stream/readable.js +16 -0
- package/node_modules/simple-concat/.travis.yml +3 -0
- package/node_modules/simple-concat/LICENSE +20 -0
- package/node_modules/simple-concat/README.md +44 -0
- package/node_modules/simple-concat/index.js +15 -0
- package/node_modules/simple-concat/package.json +47 -0
- package/node_modules/simple-concat/test/basic.js +41 -0
- package/node_modules/simple-get/.github/dependabot.yml +15 -0
- package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
- package/node_modules/simple-get/LICENSE +20 -0
- package/node_modules/simple-get/README.md +333 -0
- package/node_modules/simple-get/index.js +108 -0
- package/node_modules/simple-get/package.json +67 -0
- package/node_modules/string_decoder/LICENSE +48 -0
- package/node_modules/string_decoder/README.md +47 -0
- package/node_modules/string_decoder/lib/string_decoder.js +296 -0
- package/node_modules/string_decoder/package.json +34 -0
- package/node_modules/strip-json-comments/index.js +70 -0
- package/node_modules/strip-json-comments/license +21 -0
- package/node_modules/strip-json-comments/package.json +42 -0
- package/node_modules/strip-json-comments/readme.md +64 -0
- package/node_modules/tar-fs/.travis.yml +6 -0
- package/node_modules/tar-fs/LICENSE +21 -0
- package/node_modules/tar-fs/README.md +165 -0
- package/node_modules/tar-fs/index.js +363 -0
- package/node_modules/tar-fs/node_modules/chownr/LICENSE +15 -0
- package/node_modules/tar-fs/node_modules/chownr/README.md +3 -0
- package/node_modules/tar-fs/node_modules/chownr/chownr.js +167 -0
- package/node_modules/tar-fs/node_modules/chownr/package.json +29 -0
- package/node_modules/tar-fs/package.json +41 -0
- package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
- package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
- package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/node_modules/tar-fs/test/index.js +346 -0
- package/node_modules/tar-stream/LICENSE +21 -0
- package/node_modules/tar-stream/README.md +168 -0
- package/node_modules/tar-stream/extract.js +257 -0
- package/node_modules/tar-stream/headers.js +295 -0
- package/node_modules/tar-stream/index.js +2 -0
- package/node_modules/tar-stream/pack.js +255 -0
- package/node_modules/tar-stream/package.json +58 -0
- package/node_modules/tar-stream/sandbox.js +11 -0
- package/node_modules/tunnel-agent/LICENSE +55 -0
- package/node_modules/tunnel-agent/README.md +4 -0
- package/node_modules/tunnel-agent/index.js +244 -0
- package/node_modules/tunnel-agent/package.json +22 -0
- package/node_modules/util-deprecate/History.md +16 -0
- package/node_modules/util-deprecate/LICENSE +24 -0
- package/node_modules/util-deprecate/README.md +53 -0
- package/node_modules/util-deprecate/browser.js +67 -0
- package/node_modules/util-deprecate/node.js +6 -0
- package/node_modules/util-deprecate/package.json +27 -0
- package/node_modules/uuid/CHANGELOG.md +274 -0
- package/node_modules/uuid/CONTRIBUTING.md +18 -0
- package/node_modules/uuid/LICENSE.md +9 -0
- package/node_modules/uuid/README.md +466 -0
- package/node_modules/uuid/dist/bin/uuid +2 -0
- package/node_modules/uuid/dist/commonjs-browser/index.js +79 -0
- package/node_modules/uuid/dist/commonjs-browser/md5.js +223 -0
- package/node_modules/uuid/dist/commonjs-browser/native.js +11 -0
- package/node_modules/uuid/dist/commonjs-browser/nil.js +8 -0
- package/node_modules/uuid/dist/commonjs-browser/parse.js +45 -0
- package/node_modules/uuid/dist/commonjs-browser/regex.js +8 -0
- package/node_modules/uuid/dist/commonjs-browser/rng.js +25 -0
- package/node_modules/uuid/dist/commonjs-browser/sha1.js +104 -0
- package/node_modules/uuid/dist/commonjs-browser/stringify.js +44 -0
- package/node_modules/uuid/dist/commonjs-browser/v1.js +107 -0
- package/node_modules/uuid/dist/commonjs-browser/v3.js +16 -0
- package/node_modules/uuid/dist/commonjs-browser/v35.js +80 -0
- package/node_modules/uuid/dist/commonjs-browser/v4.js +43 -0
- package/node_modules/uuid/dist/commonjs-browser/v5.js +16 -0
- package/node_modules/uuid/dist/commonjs-browser/validate.js +17 -0
- package/node_modules/uuid/dist/commonjs-browser/version.js +21 -0
- package/node_modules/uuid/dist/esm-browser/index.js +9 -0
- package/node_modules/uuid/dist/esm-browser/md5.js +215 -0
- package/node_modules/uuid/dist/esm-browser/native.js +4 -0
- package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
- package/node_modules/uuid/dist/esm-browser/parse.js +35 -0
- package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
- package/node_modules/uuid/dist/esm-browser/rng.js +18 -0
- package/node_modules/uuid/dist/esm-browser/sha1.js +96 -0
- package/node_modules/uuid/dist/esm-browser/stringify.js +33 -0
- package/node_modules/uuid/dist/esm-browser/v1.js +95 -0
- package/node_modules/uuid/dist/esm-browser/v3.js +4 -0
- package/node_modules/uuid/dist/esm-browser/v35.js +66 -0
- package/node_modules/uuid/dist/esm-browser/v4.js +29 -0
- package/node_modules/uuid/dist/esm-browser/v5.js +4 -0
- package/node_modules/uuid/dist/esm-browser/validate.js +7 -0
- package/node_modules/uuid/dist/esm-browser/version.js +11 -0
- package/node_modules/uuid/dist/esm-node/index.js +9 -0
- package/node_modules/uuid/dist/esm-node/md5.js +13 -0
- package/node_modules/uuid/dist/esm-node/native.js +4 -0
- package/node_modules/uuid/dist/esm-node/nil.js +1 -0
- package/node_modules/uuid/dist/esm-node/parse.js +35 -0
- package/node_modules/uuid/dist/esm-node/regex.js +1 -0
- package/node_modules/uuid/dist/esm-node/rng.js +12 -0
- package/node_modules/uuid/dist/esm-node/sha1.js +13 -0
- package/node_modules/uuid/dist/esm-node/stringify.js +33 -0
- package/node_modules/uuid/dist/esm-node/v1.js +95 -0
- package/node_modules/uuid/dist/esm-node/v3.js +4 -0
- package/node_modules/uuid/dist/esm-node/v35.js +66 -0
- package/node_modules/uuid/dist/esm-node/v4.js +29 -0
- package/node_modules/uuid/dist/esm-node/v5.js +4 -0
- package/node_modules/uuid/dist/esm-node/validate.js +7 -0
- package/node_modules/uuid/dist/esm-node/version.js +11 -0
- package/node_modules/uuid/dist/index.js +79 -0
- package/node_modules/uuid/dist/md5-browser.js +223 -0
- package/node_modules/uuid/dist/md5.js +23 -0
- package/node_modules/uuid/dist/native-browser.js +11 -0
- package/node_modules/uuid/dist/native.js +15 -0
- package/node_modules/uuid/dist/nil.js +8 -0
- package/node_modules/uuid/dist/parse.js +45 -0
- package/node_modules/uuid/dist/regex.js +8 -0
- package/node_modules/uuid/dist/rng-browser.js +25 -0
- package/node_modules/uuid/dist/rng.js +24 -0
- package/node_modules/uuid/dist/sha1-browser.js +104 -0
- package/node_modules/uuid/dist/sha1.js +23 -0
- package/node_modules/uuid/dist/stringify.js +44 -0
- package/node_modules/uuid/dist/uuid-bin.js +85 -0
- package/node_modules/uuid/dist/v1.js +107 -0
- package/node_modules/uuid/dist/v3.js +16 -0
- package/node_modules/uuid/dist/v35.js +80 -0
- package/node_modules/uuid/dist/v4.js +43 -0
- package/node_modules/uuid/dist/v5.js +16 -0
- package/node_modules/uuid/dist/validate.js +17 -0
- package/node_modules/uuid/dist/version.js +21 -0
- package/node_modules/uuid/package.json +135 -0
- package/node_modules/uuid/wrapper.mjs +10 -0
- package/package.json +5 -3
- package/packages/cli/package.json +1 -1
- package/packages/daemon/package.json +1 -1
- package/packages/daemon/src/api.js +17 -9
- package/packages/daemon/src/process.js +2 -0
- package/packages/gui/dist/assets/{index-VB4_k5Pz.js → index-B3GUKInH.js} +339 -339
- package/packages/gui/dist/assets/{index-Bo6AeNmM.css → index-C1k-GuDg.css} +1 -1
- package/packages/gui/dist/index.html +2 -2
- package/packages/gui/package.json +1 -1
- package/packages/gui/src/components/agents/agent-panel.jsx +2 -0
- package/packages/gui/src/stores/groove.js +14 -10
- package/packages/gui/src/views/agents.jsx +10 -68
- package/workspace.png +0 -0
|
@@ -80,11 +80,13 @@ function InlineName({ agent }) {
|
|
|
80
80
|
export function AgentPanel() {
|
|
81
81
|
const detailPanel = useGrooveStore((s) => s.detailPanel);
|
|
82
82
|
const agents = useGrooveStore((s) => s.agents);
|
|
83
|
+
const activeTeamId = useGrooveStore((s) => s.activeTeamId);
|
|
83
84
|
const [activeTab, setActiveTab] = useState('command');
|
|
84
85
|
|
|
85
86
|
if (detailPanel?.type !== 'agent') return null;
|
|
86
87
|
const agent = agents.find((a) => a.id === detailPanel.agentId);
|
|
87
88
|
if (!agent) return null;
|
|
89
|
+
if (activeTeamId && agent.teamId && agent.teamId !== activeTeamId) return null;
|
|
88
90
|
|
|
89
91
|
const isAlive = agent.status === 'running' || agent.status === 'starting';
|
|
90
92
|
const ctxPct = Math.round((agent.contextUsage || 0) * 100);
|
|
@@ -70,7 +70,6 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
70
70
|
teamBuilderRoles: [],
|
|
71
71
|
teamBuilderSettings: { provider: null, model: null, reasoningEffort: 50, temperature: 0.5 },
|
|
72
72
|
teamBuilderTask: '',
|
|
73
|
-
teamBuilderLaunchMode: 'plan',
|
|
74
73
|
teamTemplates: { builtIn: [], custom: [] },
|
|
75
74
|
|
|
76
75
|
// ── Navigation ────────────────────────────────────────────
|
|
@@ -1201,6 +1200,8 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
1201
1200
|
},
|
|
1202
1201
|
selectAgent(id) {
|
|
1203
1202
|
const tid = get().activeTeamId;
|
|
1203
|
+
const match = get().agents.find((a) => a.id === id);
|
|
1204
|
+
if (tid && match && match.teamId && match.teamId !== tid) return;
|
|
1204
1205
|
const panel = { type: 'agent', agentId: id };
|
|
1205
1206
|
set((s) => ({ detailPanel: panel, teamDetailPanels: { ...s.teamDetailPanels, [tid]: panel } }));
|
|
1206
1207
|
},
|
|
@@ -1619,7 +1620,6 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
1619
1620
|
teamBuilderRoles: [],
|
|
1620
1621
|
teamBuilderSettings: { provider: null, model: null, reasoningEffort: 50, temperature: 0.5 },
|
|
1621
1622
|
teamBuilderTask: '',
|
|
1622
|
-
teamBuilderLaunchMode: 'plan',
|
|
1623
1623
|
});
|
|
1624
1624
|
},
|
|
1625
1625
|
addTeamBuilderRole(role) {
|
|
@@ -1651,12 +1651,18 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
1651
1651
|
set((s) => ({ teamBuilderSettings: { ...s.teamBuilderSettings, ...settings } }));
|
|
1652
1652
|
},
|
|
1653
1653
|
setTeamBuilderTask(task) { set({ teamBuilderTask: task }); },
|
|
1654
|
-
setTeamBuilderLaunchMode(mode) { set({ teamBuilderLaunchMode: mode }); },
|
|
1655
1654
|
|
|
1656
1655
|
async fetchTeamTemplates() {
|
|
1657
1656
|
try {
|
|
1658
1657
|
const data = await api.get('/team-templates');
|
|
1659
|
-
|
|
1658
|
+
const builtIn = [];
|
|
1659
|
+
const custom = [];
|
|
1660
|
+
for (const [key, tmpl] of Object.entries(data || {})) {
|
|
1661
|
+
const entry = { ...tmpl, name: key };
|
|
1662
|
+
if (tmpl.builtIn) builtIn.push(entry);
|
|
1663
|
+
else custom.push(entry);
|
|
1664
|
+
}
|
|
1665
|
+
set({ teamTemplates: { builtIn, custom } });
|
|
1660
1666
|
} catch { /* endpoint may not exist yet */ }
|
|
1661
1667
|
},
|
|
1662
1668
|
|
|
@@ -1686,21 +1692,19 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
1686
1692
|
},
|
|
1687
1693
|
|
|
1688
1694
|
async launchTeamBuilder() {
|
|
1689
|
-
const { teamBuilderRoles, teamBuilderSettings, teamBuilderTask,
|
|
1695
|
+
const { teamBuilderRoles, teamBuilderSettings, teamBuilderTask, activeTeamId } = get();
|
|
1690
1696
|
if (teamBuilderRoles.length === 0) return;
|
|
1697
|
+
get().closeTeamBuilder();
|
|
1691
1698
|
try {
|
|
1692
|
-
get().addToast('info', 'Launching team...');
|
|
1693
1699
|
const body = {
|
|
1694
1700
|
task: teamBuilderTask,
|
|
1695
1701
|
roles: teamBuilderRoles,
|
|
1696
1702
|
settings: teamBuilderSettings,
|
|
1697
|
-
launchMode:
|
|
1703
|
+
launchMode: 'plan-first',
|
|
1698
1704
|
teamId: activeTeamId,
|
|
1699
1705
|
};
|
|
1700
1706
|
const result = await api.post('/team-builder/launch', body);
|
|
1701
|
-
|
|
1702
|
-
get().addToast('success', `Launched ${count} agent${count !== 1 ? 's' : ''}`);
|
|
1703
|
-
get().closeTeamBuilder();
|
|
1707
|
+
get().addToast('success', 'Planner spawned — team will build automatically');
|
|
1704
1708
|
return result;
|
|
1705
1709
|
} catch (err) {
|
|
1706
1710
|
get().addToast('error', 'Team launch failed', err.message);
|
|
@@ -10,7 +10,7 @@ import { RootNode } from '../components/agents/root-node';
|
|
|
10
10
|
import { cn } from '../lib/cn';
|
|
11
11
|
import { Button } from '../components/ui/button';
|
|
12
12
|
import { Badge } from '../components/ui/badge';
|
|
13
|
-
import { Plus, Users, UserPlus, Zap, X, Check, Rocket, Server, Monitor, Code2, TestTube, Shield, Pencil, Copy, Trash2, ChevronDown, ChevronLeft, ChevronRight, FolderOpen, Eye, Settings2, Search, GripVertical, Cloud, FileText, Database, Megaphone, Calculator, UserCheck, Headphones, BarChart3, Pen, Presentation, Globe, MessageCircle, Save,
|
|
13
|
+
import { Plus, Users, UserPlus, Zap, X, Check, Rocket, Server, Monitor, Code2, TestTube, Shield, Pencil, Copy, Trash2, ChevronDown, ChevronLeft, ChevronRight, FolderOpen, Eye, Settings2, Search, GripVertical, Cloud, FileText, Database, Megaphone, Calculator, UserCheck, Headphones, BarChart3, Pen, Presentation, Globe, MessageCircle, Save, Layers } from 'lucide-react';
|
|
14
14
|
import { PreviewWorkspace } from '../components/preview/preview-workspace';
|
|
15
15
|
import { WorkspaceMode } from '../components/agents/workspace-mode';
|
|
16
16
|
import { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuSeparator } from '../components/ui/context-menu';
|
|
@@ -750,7 +750,6 @@ function TeamBuilder() {
|
|
|
750
750
|
const roles = useGrooveStore((s) => s.teamBuilderRoles);
|
|
751
751
|
const settings = useGrooveStore((s) => s.teamBuilderSettings);
|
|
752
752
|
const task = useGrooveStore((s) => s.teamBuilderTask);
|
|
753
|
-
const launchMode = useGrooveStore((s) => s.teamBuilderLaunchMode);
|
|
754
753
|
const templates = useGrooveStore((s) => s.teamTemplates);
|
|
755
754
|
const closeTeamBuilder = useGrooveStore((s) => s.closeTeamBuilder);
|
|
756
755
|
const addRole = useGrooveStore((s) => s.addTeamBuilderRole);
|
|
@@ -759,7 +758,6 @@ function TeamBuilder() {
|
|
|
759
758
|
const applyTemplate = useGrooveStore((s) => s.applyTemplate);
|
|
760
759
|
const setSettings = useGrooveStore((s) => s.setTeamBuilderSettings);
|
|
761
760
|
const setTask = useGrooveStore((s) => s.setTeamBuilderTask);
|
|
762
|
-
const setLaunchMode = useGrooveStore((s) => s.setTeamBuilderLaunchMode);
|
|
763
761
|
const launchTeamBuilder = useGrooveStore((s) => s.launchTeamBuilder);
|
|
764
762
|
const saveTeamTemplate = useGrooveStore((s) => s.saveTeamTemplate);
|
|
765
763
|
const fetchTeamTemplates = useGrooveStore((s) => s.fetchTeamTemplates);
|
|
@@ -789,8 +787,6 @@ function TeamBuilder() {
|
|
|
789
787
|
|
|
790
788
|
const selectedProvider = providers.find((p) => p.id === settings.provider);
|
|
791
789
|
const settingsModels = (selectedProvider?.models || []).filter((m) => m.type !== 'image' && !m.disabled);
|
|
792
|
-
const showTemp = PROVIDER_TEMP_SUPPORT.has(settings.provider);
|
|
793
|
-
|
|
794
790
|
function handleSettingsProviderChange(id) {
|
|
795
791
|
setSettings({ provider: id });
|
|
796
792
|
const p = providers.find((x) => x.id === id);
|
|
@@ -829,8 +825,8 @@ function TeamBuilder() {
|
|
|
829
825
|
{/* Top Bar */}
|
|
830
826
|
<div className="flex items-center justify-between px-6 py-4 border-b border-border-subtle">
|
|
831
827
|
<div className="flex items-center gap-3">
|
|
832
|
-
<div className="w-8 h-8 rounded-lg bg-
|
|
833
|
-
<Users size={16} className="text-
|
|
828
|
+
<div className="w-8 h-8 rounded-lg bg-info/15 flex items-center justify-center">
|
|
829
|
+
<Users size={16} className="text-info" />
|
|
834
830
|
</div>
|
|
835
831
|
<h2 className="text-lg font-bold text-text-0 font-sans">Team Builder</h2>
|
|
836
832
|
</div>
|
|
@@ -1017,16 +1013,6 @@ function TeamBuilder() {
|
|
|
1017
1013
|
formatValue={(v) => v.toFixed(2)}
|
|
1018
1014
|
/>
|
|
1019
1015
|
)}
|
|
1020
|
-
<div className="space-y-1">
|
|
1021
|
-
<label className="text-2xs text-text-3 font-sans">Custom Prompt</label>
|
|
1022
|
-
<textarea
|
|
1023
|
-
value={r.prompt || ''}
|
|
1024
|
-
onChange={(e) => updateRole(i, { prompt: e.target.value })}
|
|
1025
|
-
placeholder="Optional instructions for this agent..."
|
|
1026
|
-
rows={2}
|
|
1027
|
-
className="w-full px-2.5 py-1.5 text-xs bg-surface-3 border border-border-subtle rounded-md text-text-0 font-sans placeholder:text-text-4 focus:outline-none focus:ring-1 focus:ring-accent resize-none"
|
|
1028
|
-
/>
|
|
1029
|
-
</div>
|
|
1030
1016
|
</div>
|
|
1031
1017
|
)}
|
|
1032
1018
|
</div>
|
|
@@ -1040,38 +1026,9 @@ function TeamBuilder() {
|
|
|
1040
1026
|
{/* Bottom Bar */}
|
|
1041
1027
|
<div className="border-t border-border-subtle px-6 py-4">
|
|
1042
1028
|
<div className="flex gap-4">
|
|
1043
|
-
{/* Task
|
|
1044
|
-
<div className="flex-1 space-y-
|
|
1045
|
-
<
|
|
1046
|
-
value={task}
|
|
1047
|
-
onChange={(e) => setTask(e.target.value)}
|
|
1048
|
-
placeholder="Describe what this team should work on..."
|
|
1049
|
-
rows={2}
|
|
1050
|
-
className="w-full px-3 py-2 text-sm bg-surface-3 border border-border-subtle rounded-lg text-text-0 font-sans placeholder:text-text-4 focus:outline-none focus:ring-1 focus:ring-accent resize-none"
|
|
1051
|
-
/>
|
|
1052
|
-
<div className="flex items-center gap-2">
|
|
1053
|
-
<span className="text-2xs text-text-3 font-sans mr-1">Launch Mode:</span>
|
|
1054
|
-
{[
|
|
1055
|
-
{ id: 'direct', label: 'Direct', icon: Play, tip: 'Agents start working immediately' },
|
|
1056
|
-
{ id: 'plan', label: 'Plan First', icon: ListChecks, tip: 'Planner designs prompts, then team launches' },
|
|
1057
|
-
{ id: 'await', label: 'Await', icon: Clock, tip: 'Agents spawn idle, await instructions' },
|
|
1058
|
-
].map((m) => (
|
|
1059
|
-
<Tooltip key={m.id} content={m.tip}>
|
|
1060
|
-
<button
|
|
1061
|
-
onClick={() => setLaunchMode(m.id)}
|
|
1062
|
-
className={cn(
|
|
1063
|
-
'flex items-center gap-1.5 px-2.5 py-1 rounded-md text-2xs font-semibold font-sans transition-colors cursor-pointer',
|
|
1064
|
-
launchMode === m.id
|
|
1065
|
-
? 'bg-accent/15 text-accent border border-accent/30'
|
|
1066
|
-
: 'bg-surface-3 text-text-3 border border-border-subtle hover:text-text-1 hover:border-border',
|
|
1067
|
-
)}
|
|
1068
|
-
>
|
|
1069
|
-
<m.icon size={11} />
|
|
1070
|
-
{m.label}
|
|
1071
|
-
</button>
|
|
1072
|
-
</Tooltip>
|
|
1073
|
-
))}
|
|
1074
|
-
</div>
|
|
1029
|
+
{/* Task */}
|
|
1030
|
+
<div className="flex-1 space-y-2">
|
|
1031
|
+
<p className="text-xs text-text-3 font-sans italic">Planner will design agent prompts automatically</p>
|
|
1075
1032
|
</div>
|
|
1076
1033
|
|
|
1077
1034
|
{/* Team Settings + Launch */}
|
|
@@ -1102,21 +1059,6 @@ function TeamBuilder() {
|
|
|
1102
1059
|
</Select>
|
|
1103
1060
|
</div>
|
|
1104
1061
|
</div>
|
|
1105
|
-
<TuningSlider
|
|
1106
|
-
label="Reasoning"
|
|
1107
|
-
value={settings.reasoningEffort}
|
|
1108
|
-
onChange={(v) => setSettings({ reasoningEffort: v })}
|
|
1109
|
-
min={0} max={100} step={1}
|
|
1110
|
-
/>
|
|
1111
|
-
{showTemp && (
|
|
1112
|
-
<TuningSlider
|
|
1113
|
-
label="Temperature"
|
|
1114
|
-
value={settings.temperature}
|
|
1115
|
-
onChange={(v) => setSettings({ temperature: v })}
|
|
1116
|
-
min={0} max={1} step={0.01}
|
|
1117
|
-
formatValue={(v) => v.toFixed(2)}
|
|
1118
|
-
/>
|
|
1119
|
-
)}
|
|
1120
1062
|
<Button
|
|
1121
1063
|
variant="primary"
|
|
1122
1064
|
size="md"
|
|
@@ -1197,10 +1139,10 @@ function EmptyState({ onPlanner, onSpawn, onTeamBuilder }) {
|
|
|
1197
1139
|
<div className="grid grid-cols-2 gap-3">
|
|
1198
1140
|
<button
|
|
1199
1141
|
onClick={onTeamBuilder}
|
|
1200
|
-
className="flex items-center gap-3 p-4 rounded-lg border border-
|
|
1142
|
+
className="flex items-center gap-3 p-4 rounded-lg border border-info/25 bg-gradient-to-r from-info/6 to-info/2 hover:from-info/12 hover:to-info/5 hover:border-info/35 transition-all cursor-pointer group text-left"
|
|
1201
1143
|
>
|
|
1202
|
-
<div className="w-10 h-10 rounded-lg bg-
|
|
1203
|
-
<UserPlus size={20} className="text-
|
|
1144
|
+
<div className="w-10 h-10 rounded-lg bg-info/15 flex items-center justify-center group-hover:scale-110 transition-transform flex-shrink-0">
|
|
1145
|
+
<UserPlus size={20} className="text-info" />
|
|
1204
1146
|
</div>
|
|
1205
1147
|
<div className="min-w-0">
|
|
1206
1148
|
<div className="text-sm font-semibold text-text-0 font-sans">Build a Team</div>
|
|
@@ -1558,7 +1500,7 @@ export default function AgentsView() {
|
|
|
1558
1500
|
className={cn(
|
|
1559
1501
|
'absolute bottom-4 z-40 flex items-center gap-1.5 h-8 px-4 rounded-md text-xs font-semibold font-sans transition-colors cursor-pointer select-none shadow-lg shadow-black/10',
|
|
1560
1502
|
previewState.url && previewState.teamId === activeTeamId ? 'right-32' : 'right-4',
|
|
1561
|
-
'bg-
|
|
1503
|
+
'bg-accent/15 text-accent hover:bg-accent/25',
|
|
1562
1504
|
)}
|
|
1563
1505
|
>
|
|
1564
1506
|
<Code2 size={14} /> Workspace
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014 Jameson Little
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
base64-js
|
|
2
|
+
=========
|
|
3
|
+
|
|
4
|
+
`base64-js` does basic base64 encoding/decoding in pure JS.
|
|
5
|
+
|
|
6
|
+
[](http://travis-ci.org/beatgammit/base64-js)
|
|
7
|
+
|
|
8
|
+
Many browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data.
|
|
9
|
+
|
|
10
|
+
Sometimes encoding/decoding binary data in the browser is useful, and that is what this module does.
|
|
11
|
+
|
|
12
|
+
## install
|
|
13
|
+
|
|
14
|
+
With [npm](https://npmjs.org) do:
|
|
15
|
+
|
|
16
|
+
`npm install base64-js` and `var base64js = require('base64-js')`
|
|
17
|
+
|
|
18
|
+
For use in web browsers do:
|
|
19
|
+
|
|
20
|
+
`<script src="base64js.min.js"></script>`
|
|
21
|
+
|
|
22
|
+
[Get supported base64-js with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-base64-js?utm_source=npm-base64-js&utm_medium=referral&utm_campaign=readme)
|
|
23
|
+
|
|
24
|
+
## methods
|
|
25
|
+
|
|
26
|
+
`base64js` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument.
|
|
27
|
+
|
|
28
|
+
* `byteLength` - Takes a base64 string and returns length of byte array
|
|
29
|
+
* `toByteArray` - Takes a base64 string and returns a byte array
|
|
30
|
+
* `fromByteArray` - Takes a byte array and returns a base64 string
|
|
31
|
+
|
|
32
|
+
## license
|
|
33
|
+
|
|
34
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window,b.base64js=a()}})(function(){return function(){function b(d,e,g){function a(j,i){if(!e[j]){if(!d[j]){var f="function"==typeof require&&require;if(!i&&f)return f(j,!0);if(h)return h(j,!0);var c=new Error("Cannot find module '"+j+"'");throw c.code="MODULE_NOT_FOUND",c}var k=e[j]={exports:{}};d[j][0].call(k.exports,function(b){var c=d[j][1][b];return a(c||b)},k,k.exports,b,d,e,g)}return e[j].exports}for(var h="function"==typeof require&&require,c=0;c<g.length;c++)a(g[c]);return a}return b}()({"/":[function(a,b,c){'use strict';function d(a){var b=a.length;if(0<b%4)throw new Error("Invalid string. Length must be a multiple of 4");var c=a.indexOf("=");-1===c&&(c=b);var d=c===b?0:4-c%4;return[c,d]}function e(a,b,c){return 3*(b+c)/4-c}function f(a){var b,c,f=d(a),g=f[0],h=f[1],j=new m(e(a,g,h)),k=0,n=0<h?g-4:g;for(c=0;c<n;c+=4)b=l[a.charCodeAt(c)]<<18|l[a.charCodeAt(c+1)]<<12|l[a.charCodeAt(c+2)]<<6|l[a.charCodeAt(c+3)],j[k++]=255&b>>16,j[k++]=255&b>>8,j[k++]=255&b;return 2===h&&(b=l[a.charCodeAt(c)]<<2|l[a.charCodeAt(c+1)]>>4,j[k++]=255&b),1===h&&(b=l[a.charCodeAt(c)]<<10|l[a.charCodeAt(c+1)]<<4|l[a.charCodeAt(c+2)]>>2,j[k++]=255&b>>8,j[k++]=255&b),j}function g(a){return k[63&a>>18]+k[63&a>>12]+k[63&a>>6]+k[63&a]}function h(a,b,c){for(var d,e=[],f=b;f<c;f+=3)d=(16711680&a[f]<<16)+(65280&a[f+1]<<8)+(255&a[f+2]),e.push(g(d));return e.join("")}function j(a){for(var b,c=a.length,d=c%3,e=[],f=16383,g=0,j=c-d;g<j;g+=f)e.push(h(a,g,g+f>j?j:g+f));return 1===d?(b=a[c-1],e.push(k[b>>2]+k[63&b<<4]+"==")):2===d&&(b=(a[c-2]<<8)+a[c-1],e.push(k[b>>10]+k[63&b>>4]+k[63&b<<2]+"=")),e.join("")}c.byteLength=function(a){var b=d(a),c=b[0],e=b[1];return 3*(c+e)/4-e},c.toByteArray=f,c.fromByteArray=j;for(var k=[],l=[],m="undefined"==typeof Uint8Array?Array:Uint8Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,p=n.length;o<p;++o)k[o]=n[o],l[n.charCodeAt(o)]=o;l[45]=62,l[95]=63},{}]},{},[])("/")});
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
exports.byteLength = byteLength
|
|
4
|
+
exports.toByteArray = toByteArray
|
|
5
|
+
exports.fromByteArray = fromByteArray
|
|
6
|
+
|
|
7
|
+
var lookup = []
|
|
8
|
+
var revLookup = []
|
|
9
|
+
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
|
|
10
|
+
|
|
11
|
+
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
12
|
+
for (var i = 0, len = code.length; i < len; ++i) {
|
|
13
|
+
lookup[i] = code[i]
|
|
14
|
+
revLookup[code.charCodeAt(i)] = i
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Support decoding URL-safe base64 strings, as Node.js does.
|
|
18
|
+
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
|
|
19
|
+
revLookup['-'.charCodeAt(0)] = 62
|
|
20
|
+
revLookup['_'.charCodeAt(0)] = 63
|
|
21
|
+
|
|
22
|
+
function getLens (b64) {
|
|
23
|
+
var len = b64.length
|
|
24
|
+
|
|
25
|
+
if (len % 4 > 0) {
|
|
26
|
+
throw new Error('Invalid string. Length must be a multiple of 4')
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Trim off extra bytes after placeholder bytes are found
|
|
30
|
+
// See: https://github.com/beatgammit/base64-js/issues/42
|
|
31
|
+
var validLen = b64.indexOf('=')
|
|
32
|
+
if (validLen === -1) validLen = len
|
|
33
|
+
|
|
34
|
+
var placeHoldersLen = validLen === len
|
|
35
|
+
? 0
|
|
36
|
+
: 4 - (validLen % 4)
|
|
37
|
+
|
|
38
|
+
return [validLen, placeHoldersLen]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// base64 is 4/3 + up to two characters of the original data
|
|
42
|
+
function byteLength (b64) {
|
|
43
|
+
var lens = getLens(b64)
|
|
44
|
+
var validLen = lens[0]
|
|
45
|
+
var placeHoldersLen = lens[1]
|
|
46
|
+
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function _byteLength (b64, validLen, placeHoldersLen) {
|
|
50
|
+
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function toByteArray (b64) {
|
|
54
|
+
var tmp
|
|
55
|
+
var lens = getLens(b64)
|
|
56
|
+
var validLen = lens[0]
|
|
57
|
+
var placeHoldersLen = lens[1]
|
|
58
|
+
|
|
59
|
+
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
|
|
60
|
+
|
|
61
|
+
var curByte = 0
|
|
62
|
+
|
|
63
|
+
// if there are placeholders, only get up to the last complete 4 chars
|
|
64
|
+
var len = placeHoldersLen > 0
|
|
65
|
+
? validLen - 4
|
|
66
|
+
: validLen
|
|
67
|
+
|
|
68
|
+
var i
|
|
69
|
+
for (i = 0; i < len; i += 4) {
|
|
70
|
+
tmp =
|
|
71
|
+
(revLookup[b64.charCodeAt(i)] << 18) |
|
|
72
|
+
(revLookup[b64.charCodeAt(i + 1)] << 12) |
|
|
73
|
+
(revLookup[b64.charCodeAt(i + 2)] << 6) |
|
|
74
|
+
revLookup[b64.charCodeAt(i + 3)]
|
|
75
|
+
arr[curByte++] = (tmp >> 16) & 0xFF
|
|
76
|
+
arr[curByte++] = (tmp >> 8) & 0xFF
|
|
77
|
+
arr[curByte++] = tmp & 0xFF
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (placeHoldersLen === 2) {
|
|
81
|
+
tmp =
|
|
82
|
+
(revLookup[b64.charCodeAt(i)] << 2) |
|
|
83
|
+
(revLookup[b64.charCodeAt(i + 1)] >> 4)
|
|
84
|
+
arr[curByte++] = tmp & 0xFF
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (placeHoldersLen === 1) {
|
|
88
|
+
tmp =
|
|
89
|
+
(revLookup[b64.charCodeAt(i)] << 10) |
|
|
90
|
+
(revLookup[b64.charCodeAt(i + 1)] << 4) |
|
|
91
|
+
(revLookup[b64.charCodeAt(i + 2)] >> 2)
|
|
92
|
+
arr[curByte++] = (tmp >> 8) & 0xFF
|
|
93
|
+
arr[curByte++] = tmp & 0xFF
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return arr
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function tripletToBase64 (num) {
|
|
100
|
+
return lookup[num >> 18 & 0x3F] +
|
|
101
|
+
lookup[num >> 12 & 0x3F] +
|
|
102
|
+
lookup[num >> 6 & 0x3F] +
|
|
103
|
+
lookup[num & 0x3F]
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function encodeChunk (uint8, start, end) {
|
|
107
|
+
var tmp
|
|
108
|
+
var output = []
|
|
109
|
+
for (var i = start; i < end; i += 3) {
|
|
110
|
+
tmp =
|
|
111
|
+
((uint8[i] << 16) & 0xFF0000) +
|
|
112
|
+
((uint8[i + 1] << 8) & 0xFF00) +
|
|
113
|
+
(uint8[i + 2] & 0xFF)
|
|
114
|
+
output.push(tripletToBase64(tmp))
|
|
115
|
+
}
|
|
116
|
+
return output.join('')
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function fromByteArray (uint8) {
|
|
120
|
+
var tmp
|
|
121
|
+
var len = uint8.length
|
|
122
|
+
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
|
|
123
|
+
var parts = []
|
|
124
|
+
var maxChunkLength = 16383 // must be multiple of 3
|
|
125
|
+
|
|
126
|
+
// go through the array every three bytes, we'll deal with trailing stuff later
|
|
127
|
+
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
|
128
|
+
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// pad the end with zeros, but make sure to not forget the extra bytes
|
|
132
|
+
if (extraBytes === 1) {
|
|
133
|
+
tmp = uint8[len - 1]
|
|
134
|
+
parts.push(
|
|
135
|
+
lookup[tmp >> 2] +
|
|
136
|
+
lookup[(tmp << 4) & 0x3F] +
|
|
137
|
+
'=='
|
|
138
|
+
)
|
|
139
|
+
} else if (extraBytes === 2) {
|
|
140
|
+
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
|
|
141
|
+
parts.push(
|
|
142
|
+
lookup[tmp >> 10] +
|
|
143
|
+
lookup[(tmp >> 4) & 0x3F] +
|
|
144
|
+
lookup[(tmp << 2) & 0x3F] +
|
|
145
|
+
'='
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return parts.join('')
|
|
150
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "base64-js",
|
|
3
|
+
"description": "Base64 encoding/decoding in pure JS",
|
|
4
|
+
"version": "1.5.1",
|
|
5
|
+
"author": "T. Jameson Little <t.jameson.little@gmail.com>",
|
|
6
|
+
"typings": "index.d.ts",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"url": "https://github.com/beatgammit/base64-js/issues"
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"babel-minify": "^0.5.1",
|
|
12
|
+
"benchmark": "^2.1.4",
|
|
13
|
+
"browserify": "^16.3.0",
|
|
14
|
+
"standard": "*",
|
|
15
|
+
"tape": "4.x"
|
|
16
|
+
},
|
|
17
|
+
"homepage": "https://github.com/beatgammit/base64-js",
|
|
18
|
+
"keywords": [
|
|
19
|
+
"base64"
|
|
20
|
+
],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"main": "index.js",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git://github.com/beatgammit/base64-js.git"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "browserify -s base64js -r ./ | minify > base64js.min.js",
|
|
29
|
+
"lint": "standard",
|
|
30
|
+
"test": "npm run lint && npm run unit",
|
|
31
|
+
"unit": "tape test/*.js"
|
|
32
|
+
},
|
|
33
|
+
"funding": [
|
|
34
|
+
{
|
|
35
|
+
"type": "github",
|
|
36
|
+
"url": "https://github.com/sponsors/feross"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "patreon",
|
|
40
|
+
"url": "https://www.patreon.com/feross"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "consulting",
|
|
44
|
+
"url": "https://feross.org/support"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 Joshua Wise
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# better-sqlite3 [](https://github.com/JoshuaWise/better-sqlite3/actions/workflows/build.yml?query=branch%3Amaster)
|
|
2
|
+
|
|
3
|
+
The fastest and simplest library for SQLite in Node.js.
|
|
4
|
+
|
|
5
|
+
- Full transaction support
|
|
6
|
+
- High performance, efficiency, and safety
|
|
7
|
+
- Easy-to-use synchronous API *(better concurrency than an asynchronous API... yes, you read that correctly)*
|
|
8
|
+
- Support for user-defined functions, aggregates, virtual tables, and extensions
|
|
9
|
+
- 64-bit integers *(invisible until you need them)*
|
|
10
|
+
- Worker thread support *(for large/slow queries)*
|
|
11
|
+
|
|
12
|
+
## Help this project stay strong! 💪
|
|
13
|
+
|
|
14
|
+
`better-sqlite3` is used by thousands of developers and engineers on a daily basis. Long nights and weekends were spent keeping this project strong and dependable, with no ask for compensation or funding, until now. If your company uses `better-sqlite3`, ask your manager to consider supporting the project:
|
|
15
|
+
|
|
16
|
+
- [Become a GitHub sponsor](https://github.com/sponsors/JoshuaWise)
|
|
17
|
+
- [Become a backer on Patreon](https://www.patreon.com/joshuawise)
|
|
18
|
+
- [Make a one-time donation on PayPal](https://www.paypal.me/joshuathomaswise)
|
|
19
|
+
|
|
20
|
+
## How other libraries compare
|
|
21
|
+
|
|
22
|
+
| |select 1 row `get()` |select 100 rows `all()` |select 100 rows `iterate()` 1-by-1|insert 1 row `run()`|insert 100 rows in a transaction|
|
|
23
|
+
|---|---|---|---|---|---|
|
|
24
|
+
|better-sqlite3|1x|1x|1x|1x|1x|
|
|
25
|
+
|[sqlite](https://www.npmjs.com/package/sqlite) and [sqlite3](https://www.npmjs.com/package/sqlite3)|11.7x slower|2.9x slower|24.4x slower|2.8x slower|15.6x slower|
|
|
26
|
+
|
|
27
|
+
> You can verify these results by [running the benchmark yourself](./docs/benchmark.md).
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install better-sqlite3
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> Requires a [currently supported Node.js](https://nodejs.org/en/about/previous-releases) version. Prebuilt binaries are available for [LTS versions](https://nodejs.org/en/about/previous-releases). If you have trouble installing, check the [troubleshooting guide](./docs/troubleshooting.md).
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
const db = require('better-sqlite3')('foobar.db', options);
|
|
41
|
+
|
|
42
|
+
const row = db.prepare('SELECT * FROM users WHERE id = ?').get(userId);
|
|
43
|
+
console.log(row.firstName, row.lastName, row.email);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Though not required, [it is generally important to set the WAL pragma for performance reasons](https://github.com/WiseLibs/better-sqlite3/blob/master/docs/performance.md).
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
db.pragma('journal_mode = WAL');
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
##### In ES6 module notation:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
import Database from 'better-sqlite3';
|
|
56
|
+
const db = new Database('foobar.db', options);
|
|
57
|
+
db.pragma('journal_mode = WAL');
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Why should I use this instead of [node-sqlite3](https://github.com/mapbox/node-sqlite3)?
|
|
61
|
+
|
|
62
|
+
- `node-sqlite3` uses asynchronous APIs for tasks that are either CPU-bound or serialized. That's not only bad design, but it wastes tons of resources. It also causes [mutex thrashing](https://en.wikipedia.org/wiki/Resource_contention) which has devastating effects on performance.
|
|
63
|
+
- `node-sqlite3` exposes low-level (C language) memory management functions. `better-sqlite3` does it the JavaScript way, allowing the garbage collector to worry about memory management.
|
|
64
|
+
- `better-sqlite3` is simpler to use, and it provides nice utilities for some operations that are very difficult or impossible in `node-sqlite3`.
|
|
65
|
+
- `better-sqlite3` is much faster than `node-sqlite3` in most cases, and just as fast in all other cases.
|
|
66
|
+
|
|
67
|
+
#### When is this library not appropriate?
|
|
68
|
+
|
|
69
|
+
In most cases, if you're attempting something that cannot be reasonably accomplished with `better-sqlite3`, it probably cannot be reasonably accomplished with SQLite in general. For example, if you're executing queries that take one second to complete, and you expect to have many concurrent users executing those queries, no amount of asynchronicity will save you from SQLite's serialized nature. Fortunately, SQLite is very *very* fast. With proper indexing, we've been able to achieve upward of 2000 queries per second with 5-way-joins in a 60 GB database, where each query was handling 5–50 kilobytes of real data.
|
|
70
|
+
|
|
71
|
+
If you have a performance problem, the most likely causes are inefficient queries, improper indexing, or a lack of [WAL mode](./docs/performance.md)—not `better-sqlite3` itself. However, there are some cases where `better-sqlite3` could be inappropriate:
|
|
72
|
+
|
|
73
|
+
- If you expect a high volume of concurrent reads each returning many megabytes of data (i.e., videos)
|
|
74
|
+
- If you expect a high volume of concurrent writes (i.e., a social media site)
|
|
75
|
+
- If your database's size is near the terabyte range
|
|
76
|
+
|
|
77
|
+
For these situations, you should probably use a full-fledged RDBMS such as [PostgreSQL](https://www.postgresql.org/).
|
|
78
|
+
|
|
79
|
+
## Upgrading
|
|
80
|
+
|
|
81
|
+
Upgrading your `better-sqlite3` dependency can potentially introduce breaking changes, either in the `better-sqlite3` API (if you upgrade to a new [major version](https://semver.org/)), or between your existing database(s) and the underlying version of SQLite. Before upgrading, review:
|
|
82
|
+
|
|
83
|
+
* [`better-sqlite3` release notes](https://github.com/WiseLibs/better-sqlite3/releases)
|
|
84
|
+
* [SQLite release history](https://www.sqlite.org/changes.html)
|
|
85
|
+
|
|
86
|
+
# Documentation
|
|
87
|
+
|
|
88
|
+
- [API documentation](./docs/api.md)
|
|
89
|
+
- [Performance](./docs/performance.md) (also see [benchmark results](./docs/benchmark.md))
|
|
90
|
+
- [64-bit integer support](./docs/integer.md)
|
|
91
|
+
- [Worker thread support](./docs/threads.md)
|
|
92
|
+
- [Unsafe mode (advanced)](./docs/unsafe.md)
|
|
93
|
+
- [SQLite compilation (advanced)](./docs/compilation.md)
|
|
94
|
+
- [Contribution rules](./docs/contribution.md)
|
|
95
|
+
- [Code of conduct](./docs/conduct.md)
|
|
96
|
+
|
|
97
|
+
# License
|
|
98
|
+
|
|
99
|
+
[MIT](./LICENSE)
|