@cc-monitoring/proxy-core 0.1.0
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/LICENSE +202 -0
- package/README.md +149 -0
- package/dist/cli/__tests__/commands.test.d.ts +2 -0
- package/dist/cli/__tests__/commands.test.d.ts.map +1 -0
- package/dist/cli/__tests__/commands.test.js +287 -0
- package/dist/cli/__tests__/commands.test.js.map +1 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +40 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +6 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +12 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/reload.d.ts +2 -0
- package/dist/cli/commands/reload.d.ts.map +1 -0
- package/dist/cli/commands/reload.js +54 -0
- package/dist/cli/commands/reload.js.map +1 -0
- package/dist/cli/commands/start.d.ts +5 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +70 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +15 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +2 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +7 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/test.d.ts +2 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +16 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +5 -0
- package/dist/cli/commands/ui.d.ts.map +1 -0
- package/dist/cli/commands/ui.js +35 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +70 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/__tests__/config.test.d.ts +2 -0
- package/dist/config/__tests__/config.test.d.ts.map +1 -0
- package/dist/config/__tests__/config.test.js +160 -0
- package/dist/config/__tests__/config.test.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +64 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +132 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +42 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/logger/__tests__/logger.test.d.ts +2 -0
- package/dist/logger/__tests__/logger.test.d.ts.map +1 -0
- package/dist/logger/__tests__/logger.test.js +123 -0
- package/dist/logger/__tests__/logger.test.js.map +1 -0
- package/dist/logger/index.d.ts +12 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +120 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/server/__tests__/providers-route.test.d.ts +2 -0
- package/dist/server/__tests__/providers-route.test.d.ts.map +1 -0
- package/dist/server/__tests__/providers-route.test.js +225 -0
- package/dist/server/__tests__/providers-route.test.js.map +1 -0
- package/dist/server/__tests__/proxy.test.d.ts +2 -0
- package/dist/server/__tests__/proxy.test.d.ts.map +1 -0
- package/dist/server/__tests__/proxy.test.js +96 -0
- package/dist/server/__tests__/proxy.test.js.map +1 -0
- package/dist/server/__tests__/server.test.d.ts +2 -0
- package/dist/server/__tests__/server.test.d.ts.map +1 -0
- package/dist/server/__tests__/server.test.js +124 -0
- package/dist/server/__tests__/server.test.js.map +1 -0
- package/dist/server/__tests__/ui-route.test.d.ts +2 -0
- package/dist/server/__tests__/ui-route.test.d.ts.map +1 -0
- package/dist/server/__tests__/ui-route.test.js +368 -0
- package/dist/server/__tests__/ui-route.test.js.map +1 -0
- package/dist/server/auth.d.ts +3 -0
- package/dist/server/auth.d.ts.map +1 -0
- package/dist/server/auth.js +16 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/data-push.d.ts +6 -0
- package/dist/server/data-push.d.ts.map +1 -0
- package/dist/server/data-push.js +33 -0
- package/dist/server/data-push.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +50 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/__tests__/request-id.test.d.ts +2 -0
- package/dist/server/middleware/__tests__/request-id.test.d.ts.map +1 -0
- package/dist/server/middleware/__tests__/request-id.test.js +29 -0
- package/dist/server/middleware/__tests__/request-id.test.js.map +1 -0
- package/dist/server/middleware/request-id.d.ts +3 -0
- package/dist/server/middleware/request-id.d.ts.map +1 -0
- package/dist/server/middleware/request-id.js +13 -0
- package/dist/server/middleware/request-id.js.map +1 -0
- package/dist/server/providers-route.d.ts +3 -0
- package/dist/server/providers-route.d.ts.map +1 -0
- package/dist/server/providers-route.js +54 -0
- package/dist/server/providers-route.js.map +1 -0
- package/dist/server/proxy.d.ts +25 -0
- package/dist/server/proxy.d.ts.map +1 -0
- package/dist/server/proxy.js +400 -0
- package/dist/server/proxy.js.map +1 -0
- package/dist/server/ui-route.d.ts +3 -0
- package/dist/server/ui-route.d.ts.map +1 -0
- package/dist/server/ui-route.js +375 -0
- package/dist/server/ui-route.js.map +1 -0
- package/dist/tools/curl.tool.d.ts +3 -0
- package/dist/tools/curl.tool.d.ts.map +1 -0
- package/dist/tools/curl.tool.js +31 -0
- package/dist/tools/curl.tool.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/probe.tool.d.ts +9 -0
- package/dist/tools/probe.tool.d.ts.map +1 -0
- package/dist/tools/probe.tool.js +26 -0
- package/dist/tools/probe.tool.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +23 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +29 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +10 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/api.d.ts +21 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +28 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/log.d.ts +14 -0
- package/dist/types/log.d.ts.map +1 -0
- package/dist/types/log.js +2 -0
- package/dist/types/log.js.map +1 -0
- package/dist/types/pm2.d.ts +10 -0
- package/dist/types/pm2.d.ts.map +1 -0
- package/dist/types/pm2.js +2 -0
- package/dist/types/pm2.js.map +1 -0
- package/dist/ui/assets/abap-BdImnpbu.js +2 -0
- package/dist/ui/assets/abap-BdImnpbu.js.map +1 -0
- package/dist/ui/assets/actionscript-3-CoDkCxhg.js +2 -0
- package/dist/ui/assets/actionscript-3-CoDkCxhg.js.map +1 -0
- package/dist/ui/assets/ada-bCR0ucgS.js +2 -0
- package/dist/ui/assets/ada-bCR0ucgS.js.map +1 -0
- package/dist/ui/assets/andromeeda-C4gqWexZ.js +2 -0
- package/dist/ui/assets/andromeeda-C4gqWexZ.js.map +1 -0
- package/dist/ui/assets/angular-html-DA-rfuFy.js +2 -0
- package/dist/ui/assets/angular-html-DA-rfuFy.js.map +1 -0
- package/dist/ui/assets/angular-ts-BrjP3tb8.js +2 -0
- package/dist/ui/assets/angular-ts-BrjP3tb8.js.map +1 -0
- package/dist/ui/assets/apache-Pmp26Uib.js +2 -0
- package/dist/ui/assets/apache-Pmp26Uib.js.map +1 -0
- package/dist/ui/assets/apex-Dqspr-GT.js +2 -0
- package/dist/ui/assets/apex-Dqspr-GT.js.map +1 -0
- package/dist/ui/assets/apl-CORt7UWP.js +2 -0
- package/dist/ui/assets/apl-CORt7UWP.js.map +1 -0
- package/dist/ui/assets/applescript-Co6uUVPk.js +2 -0
- package/dist/ui/assets/applescript-Co6uUVPk.js.map +1 -0
- package/dist/ui/assets/ara-BRHolxvo.js +2 -0
- package/dist/ui/assets/ara-BRHolxvo.js.map +1 -0
- package/dist/ui/assets/asciidoc-Ve4PFQV2.js +2 -0
- package/dist/ui/assets/asciidoc-Ve4PFQV2.js.map +1 -0
- package/dist/ui/assets/asm-D_Q5rh1f.js +2 -0
- package/dist/ui/assets/asm-D_Q5rh1f.js.map +1 -0
- package/dist/ui/assets/astro-HNnZUWAn.js +2 -0
- package/dist/ui/assets/astro-HNnZUWAn.js.map +1 -0
- package/dist/ui/assets/aurora-x-D-2ljcwZ.js +2 -0
- package/dist/ui/assets/aurora-x-D-2ljcwZ.js.map +1 -0
- package/dist/ui/assets/awk-DMzUqQB5.js +2 -0
- package/dist/ui/assets/awk-DMzUqQB5.js.map +1 -0
- package/dist/ui/assets/ayu-dark-DYE7WIF3.js +2 -0
- package/dist/ui/assets/ayu-dark-DYE7WIF3.js.map +1 -0
- package/dist/ui/assets/ayu-light-BA47KaF1.js +2 -0
- package/dist/ui/assets/ayu-light-BA47KaF1.js.map +1 -0
- package/dist/ui/assets/ayu-mirage-32ctXXKs.js +2 -0
- package/dist/ui/assets/ayu-mirage-32ctXXKs.js.map +1 -0
- package/dist/ui/assets/ballerina-BFfxhgS-.js +2 -0
- package/dist/ui/assets/ballerina-BFfxhgS-.js.map +1 -0
- package/dist/ui/assets/bat-BkioyH1T.js +2 -0
- package/dist/ui/assets/bat-BkioyH1T.js.map +1 -0
- package/dist/ui/assets/beancount-k_qm7-4y.js +2 -0
- package/dist/ui/assets/beancount-k_qm7-4y.js.map +1 -0
- package/dist/ui/assets/berry-uYugtg8r.js +2 -0
- package/dist/ui/assets/berry-uYugtg8r.js.map +1 -0
- package/dist/ui/assets/bibtex-CHM0blh-.js +2 -0
- package/dist/ui/assets/bibtex-CHM0blh-.js.map +1 -0
- package/dist/ui/assets/bicep-Bmn6On1c.js +2 -0
- package/dist/ui/assets/bicep-Bmn6On1c.js.map +1 -0
- package/dist/ui/assets/bird2-BIv1doCn.js +2 -0
- package/dist/ui/assets/bird2-BIv1doCn.js.map +1 -0
- package/dist/ui/assets/blade-2xfisSek.js +2 -0
- package/dist/ui/assets/blade-2xfisSek.js.map +1 -0
- package/dist/ui/assets/bsl-BO_Y6i37.js +2 -0
- package/dist/ui/assets/bsl-BO_Y6i37.js.map +1 -0
- package/dist/ui/assets/c-BIGW1oBm.js +2 -0
- package/dist/ui/assets/c-BIGW1oBm.js.map +1 -0
- package/dist/ui/assets/c3-MRO5bC_T.js +2 -0
- package/dist/ui/assets/c3-MRO5bC_T.js.map +1 -0
- package/dist/ui/assets/cadence-Bv_4Rxtq.js +2 -0
- package/dist/ui/assets/cadence-Bv_4Rxtq.js.map +1 -0
- package/dist/ui/assets/cairo-KRGpt6FW.js +2 -0
- package/dist/ui/assets/cairo-KRGpt6FW.js.map +1 -0
- package/dist/ui/assets/catppuccin-frappe-DFWUc33u.js +2 -0
- package/dist/ui/assets/catppuccin-frappe-DFWUc33u.js.map +1 -0
- package/dist/ui/assets/catppuccin-latte-C9dUb6Cb.js +2 -0
- package/dist/ui/assets/catppuccin-latte-C9dUb6Cb.js.map +1 -0
- package/dist/ui/assets/catppuccin-macchiato-DQyhUUbL.js +2 -0
- package/dist/ui/assets/catppuccin-macchiato-DQyhUUbL.js.map +1 -0
- package/dist/ui/assets/catppuccin-mocha-D87Tk5Gz.js +2 -0
- package/dist/ui/assets/catppuccin-mocha-D87Tk5Gz.js.map +1 -0
- package/dist/ui/assets/clarity-D53aC0YG.js +2 -0
- package/dist/ui/assets/clarity-D53aC0YG.js.map +1 -0
- package/dist/ui/assets/clojure-P80f7IUj.js +2 -0
- package/dist/ui/assets/clojure-P80f7IUj.js.map +1 -0
- package/dist/ui/assets/cmake-D1j8_8rp.js +2 -0
- package/dist/ui/assets/cmake-D1j8_8rp.js.map +1 -0
- package/dist/ui/assets/cobol-nBiQ_Alo.js +2 -0
- package/dist/ui/assets/cobol-nBiQ_Alo.js.map +1 -0
- package/dist/ui/assets/codeowners-Bp6g37R7.js +2 -0
- package/dist/ui/assets/codeowners-Bp6g37R7.js.map +1 -0
- package/dist/ui/assets/codeql-DsOJ9woJ.js +2 -0
- package/dist/ui/assets/codeql-DsOJ9woJ.js.map +1 -0
- package/dist/ui/assets/coffee-Ch7k5sss.js +2 -0
- package/dist/ui/assets/coffee-Ch7k5sss.js.map +1 -0
- package/dist/ui/assets/common-lisp-Cg-RD9OK.js +2 -0
- package/dist/ui/assets/common-lisp-Cg-RD9OK.js.map +1 -0
- package/dist/ui/assets/coq-DkFqJrB1.js +2 -0
- package/dist/ui/assets/coq-DkFqJrB1.js.map +1 -0
- package/dist/ui/assets/cpp-UfJy6YNI.js +2 -0
- package/dist/ui/assets/cpp-UfJy6YNI.js.map +1 -0
- package/dist/ui/assets/crystal-DGywbUpC.js +2 -0
- package/dist/ui/assets/crystal-DGywbUpC.js.map +1 -0
- package/dist/ui/assets/csharp-DSvCPggb.js +2 -0
- package/dist/ui/assets/csharp-DSvCPggb.js.map +1 -0
- package/dist/ui/assets/css-CLj8gQPS.js +2 -0
- package/dist/ui/assets/css-CLj8gQPS.js.map +1 -0
- package/dist/ui/assets/csv-fuZLfV_i.js +2 -0
- package/dist/ui/assets/csv-fuZLfV_i.js.map +1 -0
- package/dist/ui/assets/cue-D82EKSYY.js +2 -0
- package/dist/ui/assets/cue-D82EKSYY.js.map +1 -0
- package/dist/ui/assets/cypher-COkxafJQ.js +2 -0
- package/dist/ui/assets/cypher-COkxafJQ.js.map +1 -0
- package/dist/ui/assets/d-85-TOEBH.js +2 -0
- package/dist/ui/assets/d-85-TOEBH.js.map +1 -0
- package/dist/ui/assets/dark-plus-C3mMm8J8.js +2 -0
- package/dist/ui/assets/dark-plus-C3mMm8J8.js.map +1 -0
- package/dist/ui/assets/dart-bE4Kk8sk.js +2 -0
- package/dist/ui/assets/dart-bE4Kk8sk.js.map +1 -0
- package/dist/ui/assets/dax-CEL-wOlO.js +2 -0
- package/dist/ui/assets/dax-CEL-wOlO.js.map +1 -0
- package/dist/ui/assets/desktop-BmXAJ9_W.js +2 -0
- package/dist/ui/assets/desktop-BmXAJ9_W.js.map +1 -0
- package/dist/ui/assets/diff-D97Zzqfu.js +2 -0
- package/dist/ui/assets/diff-D97Zzqfu.js.map +1 -0
- package/dist/ui/assets/docker-BcOcwvcX.js +2 -0
- package/dist/ui/assets/docker-BcOcwvcX.js.map +1 -0
- package/dist/ui/assets/dotenv-Da5cRb03.js +2 -0
- package/dist/ui/assets/dotenv-Da5cRb03.js.map +1 -0
- package/dist/ui/assets/dracula-BzJJZx-M.js +2 -0
- package/dist/ui/assets/dracula-BzJJZx-M.js.map +1 -0
- package/dist/ui/assets/dracula-soft-BXkSAIEj.js +2 -0
- package/dist/ui/assets/dracula-soft-BXkSAIEj.js.map +1 -0
- package/dist/ui/assets/dream-maker-BtqSS_iP.js +2 -0
- package/dist/ui/assets/dream-maker-BtqSS_iP.js.map +1 -0
- package/dist/ui/assets/edge-FbVlp4U3.js +2 -0
- package/dist/ui/assets/edge-FbVlp4U3.js.map +1 -0
- package/dist/ui/assets/elixir-CkH2-t6x.js +2 -0
- package/dist/ui/assets/elixir-CkH2-t6x.js.map +1 -0
- package/dist/ui/assets/elm-DbKCFpqz.js +2 -0
- package/dist/ui/assets/elm-DbKCFpqz.js.map +1 -0
- package/dist/ui/assets/emacs-lisp-CXvaQtF9.js +2 -0
- package/dist/ui/assets/emacs-lisp-CXvaQtF9.js.map +1 -0
- package/dist/ui/assets/erb-Dm6A9KJ5.js +2 -0
- package/dist/ui/assets/erb-Dm6A9KJ5.js.map +1 -0
- package/dist/ui/assets/erlang-DsQrWhSR.js +2 -0
- package/dist/ui/assets/erlang-DsQrWhSR.js.map +1 -0
- package/dist/ui/assets/everforest-dark-BgDCqdQA.js +2 -0
- package/dist/ui/assets/everforest-dark-BgDCqdQA.js.map +1 -0
- package/dist/ui/assets/everforest-light-C8M2exoo.js +2 -0
- package/dist/ui/assets/everforest-light-C8M2exoo.js.map +1 -0
- package/dist/ui/assets/fennel-BYunw83y.js +2 -0
- package/dist/ui/assets/fennel-BYunw83y.js.map +1 -0
- package/dist/ui/assets/fish-BvzEVeQv.js +2 -0
- package/dist/ui/assets/fish-BvzEVeQv.js.map +1 -0
- package/dist/ui/assets/fluent-C4IJs8-o.js +2 -0
- package/dist/ui/assets/fluent-C4IJs8-o.js.map +1 -0
- package/dist/ui/assets/fortran-fixed-form-CkoXwp7k.js +2 -0
- package/dist/ui/assets/fortran-fixed-form-CkoXwp7k.js.map +1 -0
- package/dist/ui/assets/fortran-free-form-BxgE0vQu.js +2 -0
- package/dist/ui/assets/fortran-free-form-BxgE0vQu.js.map +1 -0
- package/dist/ui/assets/fsharp-CXgrBDvD.js +2 -0
- package/dist/ui/assets/fsharp-CXgrBDvD.js.map +1 -0
- package/dist/ui/assets/gdresource-BOOCDP_w.js +2 -0
- package/dist/ui/assets/gdresource-BOOCDP_w.js.map +1 -0
- package/dist/ui/assets/gdscript-C5YyOfLZ.js +2 -0
- package/dist/ui/assets/gdscript-C5YyOfLZ.js.map +1 -0
- package/dist/ui/assets/gdshader-DkwncUOv.js +2 -0
- package/dist/ui/assets/gdshader-DkwncUOv.js.map +1 -0
- package/dist/ui/assets/genie-D0YGMca9.js +2 -0
- package/dist/ui/assets/genie-D0YGMca9.js.map +1 -0
- package/dist/ui/assets/gherkin-DyxjwDmM.js +2 -0
- package/dist/ui/assets/gherkin-DyxjwDmM.js.map +1 -0
- package/dist/ui/assets/git-commit-F4YmCXRG.js +2 -0
- package/dist/ui/assets/git-commit-F4YmCXRG.js.map +1 -0
- package/dist/ui/assets/git-rebase-r7XF79zn.js +2 -0
- package/dist/ui/assets/git-rebase-r7XF79zn.js.map +1 -0
- package/dist/ui/assets/github-dark-DHJKELXO.js +2 -0
- package/dist/ui/assets/github-dark-DHJKELXO.js.map +1 -0
- package/dist/ui/assets/github-dark-default-Cuk6v7N8.js +2 -0
- package/dist/ui/assets/github-dark-default-Cuk6v7N8.js.map +1 -0
- package/dist/ui/assets/github-dark-dimmed-DH5Ifo-i.js +2 -0
- package/dist/ui/assets/github-dark-dimmed-DH5Ifo-i.js.map +1 -0
- package/dist/ui/assets/github-dark-high-contrast-E3gJ1_iC.js +2 -0
- package/dist/ui/assets/github-dark-high-contrast-E3gJ1_iC.js.map +1 -0
- package/dist/ui/assets/github-light-DAi9KRSo.js +2 -0
- package/dist/ui/assets/github-light-DAi9KRSo.js.map +1 -0
- package/dist/ui/assets/github-light-default-D7oLnXFd.js +2 -0
- package/dist/ui/assets/github-light-default-D7oLnXFd.js.map +1 -0
- package/dist/ui/assets/github-light-high-contrast-BfjtVDDH.js +2 -0
- package/dist/ui/assets/github-light-high-contrast-BfjtVDDH.js.map +1 -0
- package/dist/ui/assets/gleam-BspZqrRM.js +2 -0
- package/dist/ui/assets/gleam-BspZqrRM.js.map +1 -0
- package/dist/ui/assets/glimmer-js-ByusRIyA.js +2 -0
- package/dist/ui/assets/glimmer-js-ByusRIyA.js.map +1 -0
- package/dist/ui/assets/glimmer-ts-BfAWNZQY.js +2 -0
- package/dist/ui/assets/glimmer-ts-BfAWNZQY.js.map +1 -0
- package/dist/ui/assets/glsl-DplSGwfg.js +2 -0
- package/dist/ui/assets/glsl-DplSGwfg.js.map +1 -0
- package/dist/ui/assets/gn-n2N0HUVH.js +2 -0
- package/dist/ui/assets/gn-n2N0HUVH.js.map +1 -0
- package/dist/ui/assets/gnuplot-DdkO51Og.js +2 -0
- package/dist/ui/assets/gnuplot-DdkO51Og.js.map +1 -0
- package/dist/ui/assets/go-C27-OAKa.js +2 -0
- package/dist/ui/assets/go-C27-OAKa.js.map +1 -0
- package/dist/ui/assets/graphql-ChdNCCLP.js +2 -0
- package/dist/ui/assets/graphql-ChdNCCLP.js.map +1 -0
- package/dist/ui/assets/groovy-gcz8RCvz.js +2 -0
- package/dist/ui/assets/groovy-gcz8RCvz.js.map +1 -0
- package/dist/ui/assets/gruvbox-dark-hard-CFHQjOhq.js +2 -0
- package/dist/ui/assets/gruvbox-dark-hard-CFHQjOhq.js.map +1 -0
- package/dist/ui/assets/gruvbox-dark-medium-GsRaNv29.js +2 -0
- package/dist/ui/assets/gruvbox-dark-medium-GsRaNv29.js.map +1 -0
- package/dist/ui/assets/gruvbox-dark-soft-CVdnzihN.js +2 -0
- package/dist/ui/assets/gruvbox-dark-soft-CVdnzihN.js.map +1 -0
- package/dist/ui/assets/gruvbox-light-hard-CH1njM8p.js +2 -0
- package/dist/ui/assets/gruvbox-light-hard-CH1njM8p.js.map +1 -0
- package/dist/ui/assets/gruvbox-light-medium-DRw_LuNl.js +2 -0
- package/dist/ui/assets/gruvbox-light-medium-DRw_LuNl.js.map +1 -0
- package/dist/ui/assets/gruvbox-light-soft-hJgmCMqR.js +2 -0
- package/dist/ui/assets/gruvbox-light-soft-hJgmCMqR.js.map +1 -0
- package/dist/ui/assets/hack-DbPARsA_.js +2 -0
- package/dist/ui/assets/hack-DbPARsA_.js.map +1 -0
- package/dist/ui/assets/haml-D5jkg6IW.js +2 -0
- package/dist/ui/assets/haml-D5jkg6IW.js.map +1 -0
- package/dist/ui/assets/handlebars-BpdQsYii.js +2 -0
- package/dist/ui/assets/handlebars-BpdQsYii.js.map +1 -0
- package/dist/ui/assets/haskell-Df6bDoY_.js +2 -0
- package/dist/ui/assets/haskell-Df6bDoY_.js.map +1 -0
- package/dist/ui/assets/haxe-CzTSHFRz.js +2 -0
- package/dist/ui/assets/haxe-CzTSHFRz.js.map +1 -0
- package/dist/ui/assets/hcl-BWvSN4gD.js +2 -0
- package/dist/ui/assets/hcl-BWvSN4gD.js.map +1 -0
- package/dist/ui/assets/hjson-D5-asLiD.js +2 -0
- package/dist/ui/assets/hjson-D5-asLiD.js.map +1 -0
- package/dist/ui/assets/hlsl-D3lLCCz7.js +2 -0
- package/dist/ui/assets/hlsl-D3lLCCz7.js.map +1 -0
- package/dist/ui/assets/horizon-BUw7H-hv.js +2 -0
- package/dist/ui/assets/horizon-BUw7H-hv.js.map +1 -0
- package/dist/ui/assets/horizon-bright-CUuTKBJd.js +2 -0
- package/dist/ui/assets/horizon-bright-CUuTKBJd.js.map +1 -0
- package/dist/ui/assets/houston-DnULxvSX.js +2 -0
- package/dist/ui/assets/houston-DnULxvSX.js.map +1 -0
- package/dist/ui/assets/html-derivative-DlHx6ybY.js +2 -0
- package/dist/ui/assets/html-derivative-DlHx6ybY.js.map +1 -0
- package/dist/ui/assets/html-pp8916En.js +2 -0
- package/dist/ui/assets/html-pp8916En.js.map +1 -0
- package/dist/ui/assets/http-jrhK8wxY.js +2 -0
- package/dist/ui/assets/http-jrhK8wxY.js.map +1 -0
- package/dist/ui/assets/hurl-irOxFIW8.js +2 -0
- package/dist/ui/assets/hurl-irOxFIW8.js.map +1 -0
- package/dist/ui/assets/hxml-Bvhsp5Yf.js +2 -0
- package/dist/ui/assets/hxml-Bvhsp5Yf.js.map +1 -0
- package/dist/ui/assets/hy-DFXneXwc.js +2 -0
- package/dist/ui/assets/hy-DFXneXwc.js.map +1 -0
- package/dist/ui/assets/imba-DGztddWO.js +2 -0
- package/dist/ui/assets/imba-DGztddWO.js.map +1 -0
- package/dist/ui/assets/index-Bm8Gh3sG.css +1 -0
- package/dist/ui/assets/index-DJGbAwr0.js +1791 -0
- package/dist/ui/assets/index-DJGbAwr0.js.map +1 -0
- package/dist/ui/assets/ini-BEwlwnbL.js +2 -0
- package/dist/ui/assets/ini-BEwlwnbL.js.map +1 -0
- package/dist/ui/assets/java-CylS5w8V.js +2 -0
- package/dist/ui/assets/java-CylS5w8V.js.map +1 -0
- package/dist/ui/assets/javascript-wDzz0qaB.js +2 -0
- package/dist/ui/assets/javascript-wDzz0qaB.js.map +1 -0
- package/dist/ui/assets/jinja-f2NsQr07.js +2 -0
- package/dist/ui/assets/jinja-f2NsQr07.js.map +1 -0
- package/dist/ui/assets/jison-wvAkD_A8.js +2 -0
- package/dist/ui/assets/jison-wvAkD_A8.js.map +1 -0
- package/dist/ui/assets/json-Cp-IABpG.js +2 -0
- package/dist/ui/assets/json-Cp-IABpG.js.map +1 -0
- package/dist/ui/assets/json5-C9tS-k6U.js +2 -0
- package/dist/ui/assets/json5-C9tS-k6U.js.map +1 -0
- package/dist/ui/assets/jsonc-Des-eS-w.js +2 -0
- package/dist/ui/assets/jsonc-Des-eS-w.js.map +1 -0
- package/dist/ui/assets/jsonl-DcaNXYhu.js +2 -0
- package/dist/ui/assets/jsonl-DcaNXYhu.js.map +1 -0
- package/dist/ui/assets/jsonnet-DFQXde-d.js +2 -0
- package/dist/ui/assets/jsonnet-DFQXde-d.js.map +1 -0
- package/dist/ui/assets/jssm-C2t-YnRu.js +2 -0
- package/dist/ui/assets/jssm-C2t-YnRu.js.map +1 -0
- package/dist/ui/assets/jsx-g9-lgVsj.js +2 -0
- package/dist/ui/assets/jsx-g9-lgVsj.js.map +1 -0
- package/dist/ui/assets/julia-D7OTSIA_.js +2 -0
- package/dist/ui/assets/julia-D7OTSIA_.js.map +1 -0
- package/dist/ui/assets/just-CUsbIsdP.js +2 -0
- package/dist/ui/assets/just-CUsbIsdP.js.map +1 -0
- package/dist/ui/assets/kanagawa-dragon-CkXjmgJE.js +2 -0
- package/dist/ui/assets/kanagawa-dragon-CkXjmgJE.js.map +1 -0
- package/dist/ui/assets/kanagawa-lotus-CfQXZHmo.js +2 -0
- package/dist/ui/assets/kanagawa-lotus-CfQXZHmo.js.map +1 -0
- package/dist/ui/assets/kanagawa-wave-DWedfzmr.js +2 -0
- package/dist/ui/assets/kanagawa-wave-DWedfzmr.js.map +1 -0
- package/dist/ui/assets/kdl-DV7GczEv.js +2 -0
- package/dist/ui/assets/kdl-DV7GczEv.js.map +1 -0
- package/dist/ui/assets/kotlin-BdnUsdx6.js +2 -0
- package/dist/ui/assets/kotlin-BdnUsdx6.js.map +1 -0
- package/dist/ui/assets/kusto-wEQ09or8.js +2 -0
- package/dist/ui/assets/kusto-wEQ09or8.js.map +1 -0
- package/dist/ui/assets/laserwave-DUszq2jm.js +2 -0
- package/dist/ui/assets/laserwave-DUszq2jm.js.map +1 -0
- package/dist/ui/assets/latex-CaSxy8MP.js +2 -0
- package/dist/ui/assets/latex-CaSxy8MP.js.map +1 -0
- package/dist/ui/assets/lean-BZvkOJ9d.js +2 -0
- package/dist/ui/assets/lean-BZvkOJ9d.js.map +1 -0
- package/dist/ui/assets/less-B1dDrJ26.js +2 -0
- package/dist/ui/assets/less-B1dDrJ26.js.map +1 -0
- package/dist/ui/assets/light-plus-B7mTdjB0.js +2 -0
- package/dist/ui/assets/light-plus-B7mTdjB0.js.map +1 -0
- package/dist/ui/assets/liquid-C0sCDyMI.js +2 -0
- package/dist/ui/assets/liquid-C0sCDyMI.js.map +1 -0
- package/dist/ui/assets/llvm-DjAJT7YJ.js +2 -0
- package/dist/ui/assets/llvm-DjAJT7YJ.js.map +1 -0
- package/dist/ui/assets/log-2UxHyX5q.js +2 -0
- package/dist/ui/assets/log-2UxHyX5q.js.map +1 -0
- package/dist/ui/assets/logo-BtOb2qkB.js +2 -0
- package/dist/ui/assets/logo-BtOb2qkB.js.map +1 -0
- package/dist/ui/assets/lua-BaeVxFsk.js +2 -0
- package/dist/ui/assets/lua-BaeVxFsk.js.map +1 -0
- package/dist/ui/assets/luau-KW6xsasC.js +2 -0
- package/dist/ui/assets/luau-KW6xsasC.js.map +1 -0
- package/dist/ui/assets/make-CHLpvVh8.js +2 -0
- package/dist/ui/assets/make-CHLpvVh8.js.map +1 -0
- package/dist/ui/assets/markdown-Cvjx9yec.js +2 -0
- package/dist/ui/assets/markdown-Cvjx9yec.js.map +1 -0
- package/dist/ui/assets/marko-DjSrsDqO.js +2 -0
- package/dist/ui/assets/marko-DjSrsDqO.js.map +1 -0
- package/dist/ui/assets/material-theme-D5KoaKCx.js +2 -0
- package/dist/ui/assets/material-theme-D5KoaKCx.js.map +1 -0
- package/dist/ui/assets/material-theme-darker-BfHTSMKl.js +2 -0
- package/dist/ui/assets/material-theme-darker-BfHTSMKl.js.map +1 -0
- package/dist/ui/assets/material-theme-lighter-B0m2ddpp.js +2 -0
- package/dist/ui/assets/material-theme-lighter-B0m2ddpp.js.map +1 -0
- package/dist/ui/assets/material-theme-ocean-CyktbL80.js +2 -0
- package/dist/ui/assets/material-theme-ocean-CyktbL80.js.map +1 -0
- package/dist/ui/assets/material-theme-palenight-Csfq5Kiy.js +2 -0
- package/dist/ui/assets/material-theme-palenight-Csfq5Kiy.js.map +1 -0
- package/dist/ui/assets/matlab-D7o27uSR.js +2 -0
- package/dist/ui/assets/matlab-D7o27uSR.js.map +1 -0
- package/dist/ui/assets/mdc-DTYItulj.js +2 -0
- package/dist/ui/assets/mdc-DTYItulj.js.map +1 -0
- package/dist/ui/assets/mdx-Cmh6b_Ma.js +2 -0
- package/dist/ui/assets/mdx-Cmh6b_Ma.js.map +1 -0
- package/dist/ui/assets/mermaid-mWjccvbQ.js +2 -0
- package/dist/ui/assets/mermaid-mWjccvbQ.js.map +1 -0
- package/dist/ui/assets/min-dark-CafNBF8u.js +2 -0
- package/dist/ui/assets/min-dark-CafNBF8u.js.map +1 -0
- package/dist/ui/assets/min-light-CTRr51gU.js +2 -0
- package/dist/ui/assets/min-light-CTRr51gU.js.map +1 -0
- package/dist/ui/assets/mipsasm-CKIfxQSi.js +2 -0
- package/dist/ui/assets/mipsasm-CKIfxQSi.js.map +1 -0
- package/dist/ui/assets/mojo-rZm6bMo-.js +2 -0
- package/dist/ui/assets/mojo-rZm6bMo-.js.map +1 -0
- package/dist/ui/assets/monokai-D4h5O-jR.js +2 -0
- package/dist/ui/assets/monokai-D4h5O-jR.js.map +1 -0
- package/dist/ui/assets/moonbit-_H4v1dQx.js +2 -0
- package/dist/ui/assets/moonbit-_H4v1dQx.js.map +1 -0
- package/dist/ui/assets/move-IF9eRakj.js +2 -0
- package/dist/ui/assets/move-IF9eRakj.js.map +1 -0
- package/dist/ui/assets/narrat-DRg8JJMk.js +2 -0
- package/dist/ui/assets/narrat-DRg8JJMk.js.map +1 -0
- package/dist/ui/assets/nextflow-C-mBbutL.js +2 -0
- package/dist/ui/assets/nextflow-C-mBbutL.js.map +1 -0
- package/dist/ui/assets/nextflow-groovy-vE_lwT2v.js +2 -0
- package/dist/ui/assets/nextflow-groovy-vE_lwT2v.js.map +1 -0
- package/dist/ui/assets/nginx-BpAMiNFr.js +2 -0
- package/dist/ui/assets/nginx-BpAMiNFr.js.map +1 -0
- package/dist/ui/assets/night-owl-C39BiMTA.js +2 -0
- package/dist/ui/assets/night-owl-C39BiMTA.js.map +1 -0
- package/dist/ui/assets/night-owl-light-CMTm3GFP.js +2 -0
- package/dist/ui/assets/night-owl-light-CMTm3GFP.js.map +1 -0
- package/dist/ui/assets/nim-BIad80T-.js +2 -0
- package/dist/ui/assets/nim-BIad80T-.js.map +1 -0
- package/dist/ui/assets/nix-CwoSXNpI.js +2 -0
- package/dist/ui/assets/nix-CwoSXNpI.js.map +1 -0
- package/dist/ui/assets/nord-Ddv68eIx.js +2 -0
- package/dist/ui/assets/nord-Ddv68eIx.js.map +1 -0
- package/dist/ui/assets/nushell-Cz2AlsmD.js +2 -0
- package/dist/ui/assets/nushell-Cz2AlsmD.js.map +1 -0
- package/dist/ui/assets/objective-c-DXmwc3jG.js +2 -0
- package/dist/ui/assets/objective-c-DXmwc3jG.js.map +1 -0
- package/dist/ui/assets/objective-cpp-CLxacb5B.js +2 -0
- package/dist/ui/assets/objective-cpp-CLxacb5B.js.map +1 -0
- package/dist/ui/assets/ocaml-C0hk2d4L.js +2 -0
- package/dist/ui/assets/ocaml-C0hk2d4L.js.map +1 -0
- package/dist/ui/assets/odin-BBf5iR-q.js +2 -0
- package/dist/ui/assets/odin-BBf5iR-q.js.map +1 -0
- package/dist/ui/assets/one-dark-pro-DVMEJ2y_.js +2 -0
- package/dist/ui/assets/one-dark-pro-DVMEJ2y_.js.map +1 -0
- package/dist/ui/assets/one-light-C3Wv6jpd.js +2 -0
- package/dist/ui/assets/one-light-C3Wv6jpd.js.map +1 -0
- package/dist/ui/assets/openscad-C4EeE6gA.js +2 -0
- package/dist/ui/assets/openscad-C4EeE6gA.js.map +1 -0
- package/dist/ui/assets/pascal-D93ZcfNL.js +2 -0
- package/dist/ui/assets/pascal-D93ZcfNL.js.map +1 -0
- package/dist/ui/assets/perl-B9cMNwum.js +2 -0
- package/dist/ui/assets/perl-B9cMNwum.js.map +1 -0
- package/dist/ui/assets/php-Csjmro_R.js +2 -0
- package/dist/ui/assets/php-Csjmro_R.js.map +1 -0
- package/dist/ui/assets/pierre-dark-CyvmCCZW.js +2 -0
- package/dist/ui/assets/pierre-dark-CyvmCCZW.js.map +1 -0
- package/dist/ui/assets/pierre-dark-protanopia-deuteranopia-Rgc0TwpF.js +2 -0
- package/dist/ui/assets/pierre-dark-protanopia-deuteranopia-Rgc0TwpF.js.map +1 -0
- package/dist/ui/assets/pierre-dark-soft-BHGpRqa4.js +2 -0
- package/dist/ui/assets/pierre-dark-soft-BHGpRqa4.js.map +1 -0
- package/dist/ui/assets/pierre-dark-tritanopia-Beq2gCRQ.js +2 -0
- package/dist/ui/assets/pierre-dark-tritanopia-Beq2gCRQ.js.map +1 -0
- package/dist/ui/assets/pierre-dark-vibrant-BWBVywrn.js +2 -0
- package/dist/ui/assets/pierre-dark-vibrant-BWBVywrn.js.map +1 -0
- package/dist/ui/assets/pierre-light-480U9XYS.js +2 -0
- package/dist/ui/assets/pierre-light-480U9XYS.js.map +1 -0
- package/dist/ui/assets/pierre-light-protanopia-deuteranopia-CaVOBURG.js +2 -0
- package/dist/ui/assets/pierre-light-protanopia-deuteranopia-CaVOBURG.js.map +1 -0
- package/dist/ui/assets/pierre-light-soft-CVdyfjmI.js +2 -0
- package/dist/ui/assets/pierre-light-soft-CVdyfjmI.js.map +1 -0
- package/dist/ui/assets/pierre-light-tritanopia-B4_gpKOM.js +2 -0
- package/dist/ui/assets/pierre-light-tritanopia-B4_gpKOM.js.map +1 -0
- package/dist/ui/assets/pierre-light-vibrant-DdTDNdfJ.js +2 -0
- package/dist/ui/assets/pierre-light-vibrant-DdTDNdfJ.js.map +1 -0
- package/dist/ui/assets/pkl-u5AG7uiY.js +2 -0
- package/dist/ui/assets/pkl-u5AG7uiY.js.map +1 -0
- package/dist/ui/assets/plastic-3e1v2bzS.js +2 -0
- package/dist/ui/assets/plastic-3e1v2bzS.js.map +1 -0
- package/dist/ui/assets/plsql-ChMvpjG-.js +2 -0
- package/dist/ui/assets/plsql-ChMvpjG-.js.map +1 -0
- package/dist/ui/assets/po-BTJTHyun.js +2 -0
- package/dist/ui/assets/po-BTJTHyun.js.map +1 -0
- package/dist/ui/assets/poimandres-CS3Unz2-.js +2 -0
- package/dist/ui/assets/poimandres-CS3Unz2-.js.map +1 -0
- package/dist/ui/assets/polar-C0HS_06l.js +2 -0
- package/dist/ui/assets/polar-C0HS_06l.js.map +1 -0
- package/dist/ui/assets/postcss-CXtECtnM.js +2 -0
- package/dist/ui/assets/postcss-CXtECtnM.js.map +1 -0
- package/dist/ui/assets/powerquery-CEu0bR-o.js +2 -0
- package/dist/ui/assets/powerquery-CEu0bR-o.js.map +1 -0
- package/dist/ui/assets/powershell-Dpen1YoG.js +2 -0
- package/dist/ui/assets/powershell-Dpen1YoG.js.map +1 -0
- package/dist/ui/assets/prisma-Dd19v3D-.js +2 -0
- package/dist/ui/assets/prisma-Dd19v3D-.js.map +1 -0
- package/dist/ui/assets/prolog-CbFg5uaA.js +2 -0
- package/dist/ui/assets/prolog-CbFg5uaA.js.map +1 -0
- package/dist/ui/assets/proto-C7zT0LnQ.js +2 -0
- package/dist/ui/assets/proto-C7zT0LnQ.js.map +1 -0
- package/dist/ui/assets/pug-DKIMFp6K.js +2 -0
- package/dist/ui/assets/pug-DKIMFp6K.js.map +1 -0
- package/dist/ui/assets/puppet-BMWR74SV.js +2 -0
- package/dist/ui/assets/puppet-BMWR74SV.js.map +1 -0
- package/dist/ui/assets/purescript-CklMAg4u.js +2 -0
- package/dist/ui/assets/purescript-CklMAg4u.js.map +1 -0
- package/dist/ui/assets/python-B6aJPvgy.js +2 -0
- package/dist/ui/assets/python-B6aJPvgy.js.map +1 -0
- package/dist/ui/assets/qml-3beO22l8.js +2 -0
- package/dist/ui/assets/qml-3beO22l8.js.map +1 -0
- package/dist/ui/assets/qmldir-C8lEn-DE.js +2 -0
- package/dist/ui/assets/qmldir-C8lEn-DE.js.map +1 -0
- package/dist/ui/assets/qss-IeuSbFQv.js +2 -0
- package/dist/ui/assets/qss-IeuSbFQv.js.map +1 -0
- package/dist/ui/assets/r-Dspwwk_N.js +2 -0
- package/dist/ui/assets/r-Dspwwk_N.js.map +1 -0
- package/dist/ui/assets/racket-BqYA7rlc.js +2 -0
- package/dist/ui/assets/racket-BqYA7rlc.js.map +1 -0
- package/dist/ui/assets/raku-DXvB9xmW.js +2 -0
- package/dist/ui/assets/raku-DXvB9xmW.js.map +1 -0
- package/dist/ui/assets/razor-BjBPvh-w.js +2 -0
- package/dist/ui/assets/razor-BjBPvh-w.js.map +1 -0
- package/dist/ui/assets/red-bN70gL4F.js +2 -0
- package/dist/ui/assets/red-bN70gL4F.js.map +1 -0
- package/dist/ui/assets/reg-C-SQnVFl.js +2 -0
- package/dist/ui/assets/reg-C-SQnVFl.js.map +1 -0
- package/dist/ui/assets/regexp-CDVJQ6XC.js +2 -0
- package/dist/ui/assets/regexp-CDVJQ6XC.js.map +1 -0
- package/dist/ui/assets/rel-C3B-1QV4.js +2 -0
- package/dist/ui/assets/rel-C3B-1QV4.js.map +1 -0
- package/dist/ui/assets/riscv-BM1_JUlF.js +2 -0
- package/dist/ui/assets/riscv-BM1_JUlF.js.map +1 -0
- package/dist/ui/assets/ron-D8l8udqQ.js +2 -0
- package/dist/ui/assets/ron-D8l8udqQ.js.map +1 -0
- package/dist/ui/assets/rose-pine-dawn-DHQR4-dF.js +2 -0
- package/dist/ui/assets/rose-pine-dawn-DHQR4-dF.js.map +1 -0
- package/dist/ui/assets/rose-pine-moon-D4_iv3hh.js +2 -0
- package/dist/ui/assets/rose-pine-moon-D4_iv3hh.js.map +1 -0
- package/dist/ui/assets/rose-pine-qdsjHGoJ.js +2 -0
- package/dist/ui/assets/rose-pine-qdsjHGoJ.js.map +1 -0
- package/dist/ui/assets/rosmsg-BJDFO7_C.js +2 -0
- package/dist/ui/assets/rosmsg-BJDFO7_C.js.map +1 -0
- package/dist/ui/assets/rst-CpCqk9r5.js +2 -0
- package/dist/ui/assets/rst-CpCqk9r5.js.map +1 -0
- package/dist/ui/assets/ruby-DyJCeAvU.js +2 -0
- package/dist/ui/assets/ruby-DyJCeAvU.js.map +1 -0
- package/dist/ui/assets/rust-B1yitclQ.js +2 -0
- package/dist/ui/assets/rust-B1yitclQ.js.map +1 -0
- package/dist/ui/assets/sas-DEy46yEz.js +2 -0
- package/dist/ui/assets/sas-DEy46yEz.js.map +1 -0
- package/dist/ui/assets/sass-Cj5Yp3dK.js +2 -0
- package/dist/ui/assets/sass-Cj5Yp3dK.js.map +1 -0
- package/dist/ui/assets/scala-C151Ov-r.js +2 -0
- package/dist/ui/assets/scala-C151Ov-r.js.map +1 -0
- package/dist/ui/assets/scheme-C98Dy4si.js +2 -0
- package/dist/ui/assets/scheme-C98Dy4si.js.map +1 -0
- package/dist/ui/assets/scss-D5BDwBP9.js +2 -0
- package/dist/ui/assets/scss-D5BDwBP9.js.map +1 -0
- package/dist/ui/assets/sdbl-DVxCFoDh.js +2 -0
- package/dist/ui/assets/sdbl-DVxCFoDh.js.map +1 -0
- package/dist/ui/assets/shaderlab-Dg9Lc6iA.js +2 -0
- package/dist/ui/assets/shaderlab-Dg9Lc6iA.js.map +1 -0
- package/dist/ui/assets/shellscript-Yzrsuije.js +2 -0
- package/dist/ui/assets/shellscript-Yzrsuije.js.map +1 -0
- package/dist/ui/assets/shellsession-BADoaaVG.js +2 -0
- package/dist/ui/assets/shellsession-BADoaaVG.js.map +1 -0
- package/dist/ui/assets/slack-dark-BthQWCQV.js +2 -0
- package/dist/ui/assets/slack-dark-BthQWCQV.js.map +1 -0
- package/dist/ui/assets/slack-ochin-DqwNpetd.js +2 -0
- package/dist/ui/assets/slack-ochin-DqwNpetd.js.map +1 -0
- package/dist/ui/assets/smalltalk-BERRCDM3.js +2 -0
- package/dist/ui/assets/smalltalk-BERRCDM3.js.map +1 -0
- package/dist/ui/assets/snazzy-light-Bw305WKR.js +2 -0
- package/dist/ui/assets/snazzy-light-Bw305WKR.js.map +1 -0
- package/dist/ui/assets/solarized-dark-DXbdFlpD.js +2 -0
- package/dist/ui/assets/solarized-dark-DXbdFlpD.js.map +1 -0
- package/dist/ui/assets/solarized-light-L9t79GZl.js +2 -0
- package/dist/ui/assets/solarized-light-L9t79GZl.js.map +1 -0
- package/dist/ui/assets/solidity-rGO070M0.js +2 -0
- package/dist/ui/assets/solidity-rGO070M0.js.map +1 -0
- package/dist/ui/assets/soy-8wufbnw4.js +2 -0
- package/dist/ui/assets/soy-8wufbnw4.js.map +1 -0
- package/dist/ui/assets/sparql-rVzFXLq3.js +2 -0
- package/dist/ui/assets/sparql-rVzFXLq3.js.map +1 -0
- package/dist/ui/assets/splunk-BtCnVYZw.js +2 -0
- package/dist/ui/assets/splunk-BtCnVYZw.js.map +1 -0
- package/dist/ui/assets/sql-CRqJ_cUM.js +2 -0
- package/dist/ui/assets/sql-CRqJ_cUM.js.map +1 -0
- package/dist/ui/assets/ssh-config-_ykCGR6B.js +2 -0
- package/dist/ui/assets/ssh-config-_ykCGR6B.js.map +1 -0
- package/dist/ui/assets/stata-DI20mbqo.js +2 -0
- package/dist/ui/assets/stata-DI20mbqo.js.map +1 -0
- package/dist/ui/assets/stylus-BEDo0Tqx.js +2 -0
- package/dist/ui/assets/stylus-BEDo0Tqx.js.map +1 -0
- package/dist/ui/assets/surrealql-Bq5Q-fJD.js +2 -0
- package/dist/ui/assets/surrealql-Bq5Q-fJD.js.map +1 -0
- package/dist/ui/assets/svelte-Cy7k_4gC.js +2 -0
- package/dist/ui/assets/svelte-Cy7k_4gC.js.map +1 -0
- package/dist/ui/assets/swift-D82vCrfD.js +2 -0
- package/dist/ui/assets/swift-D82vCrfD.js.map +1 -0
- package/dist/ui/assets/synthwave-84-CbfX1IO0.js +2 -0
- package/dist/ui/assets/synthwave-84-CbfX1IO0.js.map +1 -0
- package/dist/ui/assets/system-verilog-CnnmHF94.js +2 -0
- package/dist/ui/assets/system-verilog-CnnmHF94.js.map +1 -0
- package/dist/ui/assets/systemd-4A_iFExJ.js +2 -0
- package/dist/ui/assets/systemd-4A_iFExJ.js.map +1 -0
- package/dist/ui/assets/talonscript-CkByrt1z.js +2 -0
- package/dist/ui/assets/talonscript-CkByrt1z.js.map +1 -0
- package/dist/ui/assets/tasl-QIJgUcNo.js +2 -0
- package/dist/ui/assets/tasl-QIJgUcNo.js.map +1 -0
- package/dist/ui/assets/tcl-dwOrl1Do.js +2 -0
- package/dist/ui/assets/tcl-dwOrl1Do.js.map +1 -0
- package/dist/ui/assets/templ-DhtptRzy.js +2 -0
- package/dist/ui/assets/templ-DhtptRzy.js.map +1 -0
- package/dist/ui/assets/terraform-BETggiCN.js +2 -0
- package/dist/ui/assets/terraform-BETggiCN.js.map +1 -0
- package/dist/ui/assets/tex-idrVyKtj.js +2 -0
- package/dist/ui/assets/tex-idrVyKtj.js.map +1 -0
- package/dist/ui/assets/tokyo-night-hegEt444.js +2 -0
- package/dist/ui/assets/tokyo-night-hegEt444.js.map +1 -0
- package/dist/ui/assets/toml-vGWfd6FD.js +2 -0
- package/dist/ui/assets/toml-vGWfd6FD.js.map +1 -0
- package/dist/ui/assets/ts-tags-D351s5mN.js +2 -0
- package/dist/ui/assets/ts-tags-D351s5mN.js.map +1 -0
- package/dist/ui/assets/tsv-B_m7g4N7.js +2 -0
- package/dist/ui/assets/tsv-B_m7g4N7.js.map +1 -0
- package/dist/ui/assets/tsx-COt5Ahok.js +2 -0
- package/dist/ui/assets/tsx-COt5Ahok.js.map +1 -0
- package/dist/ui/assets/turtle-BsS91CYL.js +2 -0
- package/dist/ui/assets/turtle-BsS91CYL.js.map +1 -0
- package/dist/ui/assets/twig-CW1WmMYd.js +2 -0
- package/dist/ui/assets/twig-CW1WmMYd.js.map +1 -0
- package/dist/ui/assets/typescript-BPQ3VLAy.js +2 -0
- package/dist/ui/assets/typescript-BPQ3VLAy.js.map +1 -0
- package/dist/ui/assets/typespec-CAFt9gP4.js +2 -0
- package/dist/ui/assets/typespec-CAFt9gP4.js.map +1 -0
- package/dist/ui/assets/typst-DHCkPAjA.js +2 -0
- package/dist/ui/assets/typst-DHCkPAjA.js.map +1 -0
- package/dist/ui/assets/v-BcVCzyr7.js +2 -0
- package/dist/ui/assets/v-BcVCzyr7.js.map +1 -0
- package/dist/ui/assets/vala-CsfeWuGM.js +2 -0
- package/dist/ui/assets/vala-CsfeWuGM.js.map +1 -0
- package/dist/ui/assets/vb-D17OF-Vu.js +2 -0
- package/dist/ui/assets/vb-D17OF-Vu.js.map +1 -0
- package/dist/ui/assets/verilog-BQ8w6xss.js +2 -0
- package/dist/ui/assets/verilog-BQ8w6xss.js.map +1 -0
- package/dist/ui/assets/vesper-DRje8inN.js +2 -0
- package/dist/ui/assets/vesper-DRje8inN.js.map +1 -0
- package/dist/ui/assets/vhdl-CeAyd5Ju.js +2 -0
- package/dist/ui/assets/vhdl-CeAyd5Ju.js.map +1 -0
- package/dist/ui/assets/viml-CJc9bBzg.js +2 -0
- package/dist/ui/assets/viml-CJc9bBzg.js.map +1 -0
- package/dist/ui/assets/vitesse-black-Bkuqu6BP.js +2 -0
- package/dist/ui/assets/vitesse-black-Bkuqu6BP.js.map +1 -0
- package/dist/ui/assets/vitesse-dark-D0r3Knsf.js +2 -0
- package/dist/ui/assets/vitesse-dark-D0r3Knsf.js.map +1 -0
- package/dist/ui/assets/vitesse-light-CVO1_9PV.js +2 -0
- package/dist/ui/assets/vitesse-light-CVO1_9PV.js.map +1 -0
- package/dist/ui/assets/vue-D2xRrEX4.js +2 -0
- package/dist/ui/assets/vue-D2xRrEX4.js.map +1 -0
- package/dist/ui/assets/vue-html-AaS7Mt5G.js +2 -0
- package/dist/ui/assets/vue-html-AaS7Mt5G.js.map +1 -0
- package/dist/ui/assets/vue-vine-BoDAl6tE.js +2 -0
- package/dist/ui/assets/vue-vine-BoDAl6tE.js.map +1 -0
- package/dist/ui/assets/vyper-CDx5xZoG.js +2 -0
- package/dist/ui/assets/vyper-CDx5xZoG.js.map +1 -0
- package/dist/ui/assets/wasm-CG6Dc4jp.js +2 -0
- package/dist/ui/assets/wasm-CG6Dc4jp.js.map +1 -0
- package/dist/ui/assets/wasm-MzD3tlZU.js +2 -0
- package/dist/ui/assets/wasm-MzD3tlZU.js.map +1 -0
- package/dist/ui/assets/wenyan-BV7otONQ.js +2 -0
- package/dist/ui/assets/wenyan-BV7otONQ.js.map +1 -0
- package/dist/ui/assets/wgsl-Dx-B1_4e.js +2 -0
- package/dist/ui/assets/wgsl-Dx-B1_4e.js.map +1 -0
- package/dist/ui/assets/wikitext-BhOHFoWU.js +2 -0
- package/dist/ui/assets/wikitext-BhOHFoWU.js.map +1 -0
- package/dist/ui/assets/wit-5i3qLPDT.js +2 -0
- package/dist/ui/assets/wit-5i3qLPDT.js.map +1 -0
- package/dist/ui/assets/wolfram-lXgVvXCa.js +2 -0
- package/dist/ui/assets/wolfram-lXgVvXCa.js.map +1 -0
- package/dist/ui/assets/xml-sdJ4AIDG.js +2 -0
- package/dist/ui/assets/xml-sdJ4AIDG.js.map +1 -0
- package/dist/ui/assets/xsl-CtQFsRM5.js +2 -0
- package/dist/ui/assets/xsl-CtQFsRM5.js.map +1 -0
- package/dist/ui/assets/yaml-Buea-lGh.js +2 -0
- package/dist/ui/assets/yaml-Buea-lGh.js.map +1 -0
- package/dist/ui/assets/zenscript-DVFEvuxE.js +2 -0
- package/dist/ui/assets/zenscript-DVFEvuxE.js.map +1 -0
- package/dist/ui/assets/zig-VOosw3JB.js +2 -0
- package/dist/ui/assets/zig-VOosw3JB.js.map +1 -0
- package/dist/ui/index.html +13 -0
- package/dist/utils/__mocks__/esm-dirname.d.ts +11 -0
- package/dist/utils/__mocks__/esm-dirname.d.ts.map +1 -0
- package/dist/utils/__mocks__/esm-dirname.js +19 -0
- package/dist/utils/__mocks__/esm-dirname.js.map +1 -0
- package/dist/utils/__mocks__/pm2-helpers.d.ts +31 -0
- package/dist/utils/__mocks__/pm2-helpers.d.ts.map +1 -0
- package/dist/utils/__mocks__/pm2-helpers.js +87 -0
- package/dist/utils/__mocks__/pm2-helpers.js.map +1 -0
- package/dist/utils/__tests__/db-migration.test.d.ts +2 -0
- package/dist/utils/__tests__/db-migration.test.d.ts.map +1 -0
- package/dist/utils/__tests__/db-migration.test.js +85 -0
- package/dist/utils/__tests__/db-migration.test.js.map +1 -0
- package/dist/utils/__tests__/inject-loop.test.d.ts +2 -0
- package/dist/utils/__tests__/inject-loop.test.d.ts.map +1 -0
- package/dist/utils/__tests__/inject-loop.test.js +113 -0
- package/dist/utils/__tests__/inject-loop.test.js.map +1 -0
- package/dist/utils/__tests__/net.test.d.ts +2 -0
- package/dist/utils/__tests__/net.test.d.ts.map +1 -0
- package/dist/utils/__tests__/net.test.js +26 -0
- package/dist/utils/__tests__/net.test.js.map +1 -0
- package/dist/utils/__tests__/pm2.test.d.ts +2 -0
- package/dist/utils/__tests__/pm2.test.d.ts.map +1 -0
- package/dist/utils/__tests__/pm2.test.js +114 -0
- package/dist/utils/__tests__/pm2.test.js.map +1 -0
- package/dist/utils/__tests__/providers-db.test.d.ts +2 -0
- package/dist/utils/__tests__/providers-db.test.d.ts.map +1 -0
- package/dist/utils/__tests__/providers-db.test.js +239 -0
- package/dist/utils/__tests__/providers-db.test.js.map +1 -0
- package/dist/utils/__tests__/request-writer.test.d.ts +2 -0
- package/dist/utils/__tests__/request-writer.test.d.ts.map +1 -0
- package/dist/utils/__tests__/request-writer.test.js +49 -0
- package/dist/utils/__tests__/request-writer.test.js.map +1 -0
- package/dist/utils/__tests__/sse-accumulator.test.d.ts +2 -0
- package/dist/utils/__tests__/sse-accumulator.test.d.ts.map +1 -0
- package/dist/utils/__tests__/sse-accumulator.test.js +84 -0
- package/dist/utils/__tests__/sse-accumulator.test.js.map +1 -0
- package/dist/utils/__tests__/sse-writer.test.d.ts +2 -0
- package/dist/utils/__tests__/sse-writer.test.d.ts.map +1 -0
- package/dist/utils/__tests__/sse-writer.test.js +92 -0
- package/dist/utils/__tests__/sse-writer.test.js.map +1 -0
- package/dist/utils/__tests__/tool-injector.test.d.ts +2 -0
- package/dist/utils/__tests__/tool-injector.test.d.ts.map +1 -0
- package/dist/utils/__tests__/tool-injector.test.js +59 -0
- package/dist/utils/__tests__/tool-injector.test.js.map +1 -0
- package/dist/utils/db.d.ts +9 -0
- package/dist/utils/db.d.ts.map +1 -0
- package/dist/utils/db.js +199 -0
- package/dist/utils/db.js.map +1 -0
- package/dist/utils/esm-dirname.d.ts +37 -0
- package/dist/utils/esm-dirname.d.ts.map +1 -0
- package/dist/utils/esm-dirname.js +51 -0
- package/dist/utils/esm-dirname.js.map +1 -0
- package/dist/utils/inject-loop.d.ts +44 -0
- package/dist/utils/inject-loop.d.ts.map +1 -0
- package/dist/utils/inject-loop.js +121 -0
- package/dist/utils/inject-loop.js.map +1 -0
- package/dist/utils/migrate-files-to-db.d.ts +2 -0
- package/dist/utils/migrate-files-to-db.d.ts.map +1 -0
- package/dist/utils/migrate-files-to-db.js +139 -0
- package/dist/utils/migrate-files-to-db.js.map +1 -0
- package/dist/utils/net.d.ts +7 -0
- package/dist/utils/net.d.ts.map +1 -0
- package/dist/utils/net.js +39 -0
- package/dist/utils/net.js.map +1 -0
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +23 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/pm2.d.ts +7 -0
- package/dist/utils/pm2.d.ts.map +1 -0
- package/dist/utils/pm2.js +125 -0
- package/dist/utils/pm2.js.map +1 -0
- package/dist/utils/providers-db.d.ts +45 -0
- package/dist/utils/providers-db.d.ts.map +1 -0
- package/dist/utils/providers-db.js +92 -0
- package/dist/utils/providers-db.js.map +1 -0
- package/dist/utils/request-writer.d.ts +50 -0
- package/dist/utils/request-writer.d.ts.map +1 -0
- package/dist/utils/request-writer.js +110 -0
- package/dist/utils/request-writer.js.map +1 -0
- package/dist/utils/sse-accumulator.d.ts +10 -0
- package/dist/utils/sse-accumulator.d.ts.map +1 -0
- package/dist/utils/sse-accumulator.js +60 -0
- package/dist/utils/sse-accumulator.js.map +1 -0
- package/dist/utils/sse-writer.d.ts +25 -0
- package/dist/utils/sse-writer.d.ts.map +1 -0
- package/dist/utils/sse-writer.js +63 -0
- package/dist/utils/sse-writer.js.map +1 -0
- package/dist/utils/stats-aggregator.d.ts +16 -0
- package/dist/utils/stats-aggregator.d.ts.map +1 -0
- package/dist/utils/stats-aggregator.js +149 -0
- package/dist/utils/stats-aggregator.js.map +1 -0
- package/dist/utils/status-history.d.ts +20 -0
- package/dist/utils/status-history.d.ts.map +1 -0
- package/dist/utils/status-history.js +34 -0
- package/dist/utils/status-history.js.map +1 -0
- package/dist/utils/tool-injector.d.ts +15 -0
- package/dist/utils/tool-injector.d.ts.map +1 -0
- package/dist/utils/tool-injector.js +32 -0
- package/dist/utils/tool-injector.js.map +1 -0
- package/dist/utils/version.d.ts +20 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +101 -0
- package/dist/utils/version.js.map +1 -0
- package/ecosystem.config.cjs +34 -0
- package/package.json +74 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { findEnabledTool } from '../tools/index.js';
|
|
2
|
+
/** 解析上游 SSE 全文 -> 事件数组(收集 data: 行的 JSON) */
|
|
3
|
+
export function parseSSEText(text) {
|
|
4
|
+
const events = [];
|
|
5
|
+
for (const line of text.split('\n')) {
|
|
6
|
+
if (line.startsWith('data:')) {
|
|
7
|
+
const d = line.slice(5).trim();
|
|
8
|
+
if (d && d !== '[DONE]') {
|
|
9
|
+
try {
|
|
10
|
+
events.push(JSON.parse(d));
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// 非 JSON 行跳过
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return events;
|
|
19
|
+
}
|
|
20
|
+
/** 从事件数组重建有序内容块 + stop_reason + usage */
|
|
21
|
+
export function parseUpstreamEvents(events) {
|
|
22
|
+
const blocks = new Map();
|
|
23
|
+
let stopReason = '';
|
|
24
|
+
let usage = undefined;
|
|
25
|
+
for (const e of events) {
|
|
26
|
+
if (e?.type === 'content_block_start') {
|
|
27
|
+
const cb = e.content_block || {};
|
|
28
|
+
blocks.set(e.index, {
|
|
29
|
+
type: cb.type,
|
|
30
|
+
text: cb.type === 'text' ? '' : undefined,
|
|
31
|
+
id: cb.id,
|
|
32
|
+
name: cb.name,
|
|
33
|
+
input: cb.type === 'tool_use' ? '' : undefined
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else if (e?.type === 'content_block_delta') {
|
|
37
|
+
const b = blocks.get(e.index);
|
|
38
|
+
if (!b)
|
|
39
|
+
continue;
|
|
40
|
+
const d = e.delta || {};
|
|
41
|
+
if (d.type === 'text_delta')
|
|
42
|
+
b.text = (b.text || '') + d.text;
|
|
43
|
+
if (d.type === 'thinking_delta')
|
|
44
|
+
b.text = (b.text || '') + d.thinking;
|
|
45
|
+
if (d.type === 'input_json_delta')
|
|
46
|
+
b.input = (b.input || '') + (d.partial_json || '');
|
|
47
|
+
}
|
|
48
|
+
else if (e?.type === 'message_delta') {
|
|
49
|
+
stopReason = e.delta?.stop_reason || stopReason;
|
|
50
|
+
usage = e.usage;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const ordered = Array.from(blocks.entries())
|
|
54
|
+
.sort((a, b) => a[0] - b[0])
|
|
55
|
+
.map(([, b]) => {
|
|
56
|
+
if (b.type === 'tool_use') {
|
|
57
|
+
let input = {};
|
|
58
|
+
try {
|
|
59
|
+
input = b.input ? JSON.parse(b.input) : {};
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
input = {};
|
|
63
|
+
}
|
|
64
|
+
return { ...b, input };
|
|
65
|
+
}
|
|
66
|
+
return b;
|
|
67
|
+
});
|
|
68
|
+
return { blocks: ordered, stopReason, usage };
|
|
69
|
+
}
|
|
70
|
+
/** 找出命中的、已启用的注入 tool 调用块 */
|
|
71
|
+
export function findInjectedCall(parsed) {
|
|
72
|
+
return parsed.blocks.find((b) => b.type === 'tool_use' && !!b.name && !!findEnabledTool(b.name));
|
|
73
|
+
}
|
|
74
|
+
/** 把有序块转成 API assistant content(仅 text + tool_use,跳过 thinking 避免 signature 问题) */
|
|
75
|
+
function blocksToAssistantContent(blocks) {
|
|
76
|
+
const content = [];
|
|
77
|
+
for (const b of blocks) {
|
|
78
|
+
if (b.type === 'text' && b.text)
|
|
79
|
+
content.push({ type: 'text', text: b.text });
|
|
80
|
+
if (b.type === 'tool_use')
|
|
81
|
+
content.push({ type: 'tool_use', id: b.id, name: b.name, input: b.input });
|
|
82
|
+
}
|
|
83
|
+
return content;
|
|
84
|
+
}
|
|
85
|
+
function collectText(parsed) {
|
|
86
|
+
return parsed.blocks
|
|
87
|
+
.filter((b) => b.type === 'text' && b.text)
|
|
88
|
+
.map((b) => b.text)
|
|
89
|
+
.join('');
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 内部循环:命中已启用 tool -> 执行 exec -> 追加对话 -> 再调上游 -> 直到 end_turn。
|
|
93
|
+
* opts.body 会被原地追加 messages。
|
|
94
|
+
*
|
|
95
|
+
* @param opts.events 首次上游响应事件(已确认命中注入 tool)
|
|
96
|
+
* @param opts.callUpstream 用给定 body 再次调上游,返回事件数组
|
|
97
|
+
* @param opts.maxIterations 死循环护栏(tool 描述可能诱导模型反复调用)
|
|
98
|
+
*/
|
|
99
|
+
export async function runInjectLoop(opts) {
|
|
100
|
+
const maxIterations = opts.maxIterations ?? 3;
|
|
101
|
+
let parsed = parseUpstreamEvents(opts.events);
|
|
102
|
+
let iterations = 0;
|
|
103
|
+
while (iterations < maxIterations) {
|
|
104
|
+
const call = findInjectedCall(parsed);
|
|
105
|
+
if (!call || parsed.stopReason !== 'tool_use') {
|
|
106
|
+
return { text: collectText(parsed), iterations, stoppedByLimit: false };
|
|
107
|
+
}
|
|
108
|
+
const tool = findEnabledTool(call.name); // findInjectedCall 已保证存在
|
|
109
|
+
const result = await tool.exec(call.input);
|
|
110
|
+
opts.body.messages.push({ role: 'assistant', content: blocksToAssistantContent(parsed.blocks) });
|
|
111
|
+
opts.body.messages.push({
|
|
112
|
+
role: 'user',
|
|
113
|
+
content: [{ type: 'tool_result', tool_use_id: call.id, content: result }]
|
|
114
|
+
});
|
|
115
|
+
const nextEvents = await opts.callUpstream(opts.body);
|
|
116
|
+
parsed = parseUpstreamEvents(nextEvents);
|
|
117
|
+
iterations++;
|
|
118
|
+
}
|
|
119
|
+
return { text: collectText(parsed) || '(内部循环达到最大轮次)', iterations, stoppedByLimit: true };
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=inject-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-loop.js","sourceRoot":"","sources":["../../src/utils/inject-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-files-to-db.d.ts","sourceRoot":"","sources":["../../src/utils/migrate-files-to-db.ts"],"names":[],"mappings":"AAgCA,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqH5D"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
const REQUESTS_DIR = path.resolve('../../logs/requests'); // Relative to packages/core
|
|
5
|
+
const DB_PATH = path.resolve('../../logs/proxy.db'); // Use root directory database
|
|
6
|
+
// Extract token usage from events (same logic as request-writer.ts)
|
|
7
|
+
function extractTokenUsage(events) {
|
|
8
|
+
if (!events)
|
|
9
|
+
return undefined;
|
|
10
|
+
const messageDelta = events.find((e) => e?.type === 'message_delta');
|
|
11
|
+
return messageDelta?.usage;
|
|
12
|
+
}
|
|
13
|
+
// Extract API key from headers
|
|
14
|
+
function extractApiKey(headers) {
|
|
15
|
+
const auth = headers['authorization'] || headers['Authorization'];
|
|
16
|
+
if (!auth)
|
|
17
|
+
return undefined;
|
|
18
|
+
// Extract Bearer token
|
|
19
|
+
if (auth.startsWith('Bearer ')) {
|
|
20
|
+
return auth.slice(7);
|
|
21
|
+
}
|
|
22
|
+
return auth;
|
|
23
|
+
}
|
|
24
|
+
// Migrate all historical files to SQLite
|
|
25
|
+
export async function migrateFilesToDatabase() {
|
|
26
|
+
// Use root directory database directly (not packages/core/logs/proxy.db)
|
|
27
|
+
const db = Database(DB_PATH);
|
|
28
|
+
console.log('Starting migration from files to SQLite...');
|
|
29
|
+
console.log('Database path:', DB_PATH);
|
|
30
|
+
// Get all session directories
|
|
31
|
+
const sessionDirs = fs.readdirSync(REQUESTS_DIR);
|
|
32
|
+
let totalFiles = 0;
|
|
33
|
+
let successCount = 0;
|
|
34
|
+
let errorCount = 0;
|
|
35
|
+
const insertStmt = db.prepare(`
|
|
36
|
+
INSERT OR IGNORE INTO requests (
|
|
37
|
+
request_id, session_id, timestamp, method, path, status_code, response_time,
|
|
38
|
+
api_key, proxy_api_key, base_url, model,
|
|
39
|
+
input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens,
|
|
40
|
+
request_headers, request_body, response_headers, response_events,
|
|
41
|
+
completed_at, closed_at, error
|
|
42
|
+
) VALUES (
|
|
43
|
+
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
|
|
44
|
+
)
|
|
45
|
+
`);
|
|
46
|
+
const transaction = db.transaction((requests) => {
|
|
47
|
+
for (const req of requests) {
|
|
48
|
+
try {
|
|
49
|
+
insertStmt.run(...req);
|
|
50
|
+
successCount++;
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
errorCount++;
|
|
54
|
+
console.error(`Failed to insert ${req[0]}: ${err}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const allRequests = [];
|
|
59
|
+
for (const sessionId of sessionDirs) {
|
|
60
|
+
const sessionPath = path.join(REQUESTS_DIR, sessionId);
|
|
61
|
+
const sessionStat = fs.statSync(sessionPath);
|
|
62
|
+
if (!sessionStat.isDirectory())
|
|
63
|
+
continue;
|
|
64
|
+
const files = fs.readdirSync(sessionPath);
|
|
65
|
+
for (const file of files) {
|
|
66
|
+
if (!file.startsWith('req-') || !file.endsWith('.json'))
|
|
67
|
+
continue;
|
|
68
|
+
totalFiles++;
|
|
69
|
+
const filePath = path.join(sessionPath, file);
|
|
70
|
+
try {
|
|
71
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
72
|
+
const data = JSON.parse(content);
|
|
73
|
+
// Extract requestId from filename
|
|
74
|
+
const requestId = file.slice(4, -5);
|
|
75
|
+
// Extract fields
|
|
76
|
+
const usage = extractTokenUsage(data.response?.events);
|
|
77
|
+
const apiKey = extractApiKey(data.request?.headers || {});
|
|
78
|
+
const model = data.request?.body?.model;
|
|
79
|
+
// Calculate response time
|
|
80
|
+
const responseTime = data.response?.completedAt && data.timestamp
|
|
81
|
+
? Math.round((new Date(data.response.completedAt).getTime() - new Date(data.timestamp).getTime()))
|
|
82
|
+
: 0;
|
|
83
|
+
// Prepare insert data (22 fields)
|
|
84
|
+
const insertData = [
|
|
85
|
+
requestId, // request_id
|
|
86
|
+
sessionId, // session_id
|
|
87
|
+
data.timestamp, // timestamp
|
|
88
|
+
data.request?.method || 'POST', // method
|
|
89
|
+
data.request?.path || '', // path
|
|
90
|
+
data.response?.statusCode || 0, // status_code
|
|
91
|
+
responseTime, // response_time
|
|
92
|
+
apiKey || null, // api_key
|
|
93
|
+
null, // proxy_api_key (unknown in files)
|
|
94
|
+
null, // base_url (unknown in files)
|
|
95
|
+
model || null, // model
|
|
96
|
+
usage?.input_tokens || null, // input_tokens
|
|
97
|
+
usage?.output_tokens || null, // output_tokens
|
|
98
|
+
usage?.cache_read_input_tokens || null, // cache_read_tokens (correct field name)
|
|
99
|
+
usage?.cache_creation_input_tokens || null, // cache_creation_tokens (correct field name)
|
|
100
|
+
data.request?.headers ? JSON.stringify(data.request.headers) : null, // request_headers
|
|
101
|
+
data.request?.body ? JSON.stringify(data.request.body) : null, // request_body
|
|
102
|
+
data.response?.headers ? JSON.stringify(data.response.headers) : null, // response_headers
|
|
103
|
+
data.response?.events ? JSON.stringify(data.response.events) : null, // response_events
|
|
104
|
+
data.response?.completedAt || null, // completed_at
|
|
105
|
+
data.response?.closedAt || null, // closed_at
|
|
106
|
+
data.response?.error || null // error
|
|
107
|
+
];
|
|
108
|
+
allRequests.push(insertData);
|
|
109
|
+
if (totalFiles % 100 === 0) {
|
|
110
|
+
console.log(`Processed ${totalFiles} files...`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
errorCount++;
|
|
115
|
+
console.error(`Failed to parse ${filePath}: ${err}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Batch insert in transaction
|
|
120
|
+
console.log(`Inserting ${allRequests.length} records into database...`);
|
|
121
|
+
transaction(allRequests);
|
|
122
|
+
console.log(`Migration completed:`);
|
|
123
|
+
console.log(` Total files: ${totalFiles}`);
|
|
124
|
+
console.log(` Success: ${successCount}`);
|
|
125
|
+
console.log(` Errors: ${errorCount}`);
|
|
126
|
+
console.log(` Database: logs/proxy.db`);
|
|
127
|
+
}
|
|
128
|
+
// Run migration if executed directly (using ES module entry point check)
|
|
129
|
+
// Note: This script should be run via: node dist/utils/migrate-files-to-db.js
|
|
130
|
+
migrateFilesToDatabase()
|
|
131
|
+
.then(() => {
|
|
132
|
+
console.log('Migration finished');
|
|
133
|
+
process.exit(0);
|
|
134
|
+
})
|
|
135
|
+
.catch((err) => {
|
|
136
|
+
console.error('Migration failed:', err);
|
|
137
|
+
process.exit(1);
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=migrate-files-to-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-files-to-db.js","sourceRoot":"","sources":["../../src/utils/migrate-files-to-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 递增退避端口探测:共 5 次,每次尝试前等待 1s→2s→3s→4s→5s(累计约 15s)。
|
|
3
|
+
* 探测到端口监听即返回 true;5 次均失败返回 false。
|
|
4
|
+
* host 为 0.0.0.0 / :: / 空时探测回环地址 127.0.0.1。
|
|
5
|
+
*/
|
|
6
|
+
export declare function waitForPort(host: string, port: number, onAttempt?: (attempt: number, max: number) => void): Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=net.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../../src/utils/net.ts"],"names":[],"mappings":"AAwBA;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,GACjD,OAAO,CAAC,OAAO,CAAC,CASlB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import net from 'net';
|
|
2
|
+
function sleep(ms) {
|
|
3
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
4
|
+
}
|
|
5
|
+
// 单次 TCP 连接探测:能建立连接即视为端口在监听
|
|
6
|
+
function tryConnect(host, port, timeout = 1000) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
const socket = net.createConnection({ host, port });
|
|
9
|
+
let settled = false;
|
|
10
|
+
const done = (ok) => {
|
|
11
|
+
if (settled)
|
|
12
|
+
return;
|
|
13
|
+
settled = true;
|
|
14
|
+
socket.destroy();
|
|
15
|
+
resolve(ok);
|
|
16
|
+
};
|
|
17
|
+
socket.setTimeout(timeout);
|
|
18
|
+
socket.once('connect', () => done(true));
|
|
19
|
+
socket.once('timeout', () => done(false));
|
|
20
|
+
socket.once('error', () => done(false));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 递增退避端口探测:共 5 次,每次尝试前等待 1s→2s→3s→4s→5s(累计约 15s)。
|
|
25
|
+
* 探测到端口监听即返回 true;5 次均失败返回 false。
|
|
26
|
+
* host 为 0.0.0.0 / :: / 空时探测回环地址 127.0.0.1。
|
|
27
|
+
*/
|
|
28
|
+
export async function waitForPort(host, port, onAttempt) {
|
|
29
|
+
const target = !host || host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host;
|
|
30
|
+
const MAX_ATTEMPTS = 5;
|
|
31
|
+
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
|
|
32
|
+
await sleep(attempt * 1000);
|
|
33
|
+
onAttempt?.(attempt, MAX_ATTEMPTS);
|
|
34
|
+
if (await tryConnect(target, port))
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=net.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/utils/net.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,4BAA4B;AAC5B,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,OAAO,GAAG,IAAI;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,EAAE;YAC3B,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,OAAO,CAAC,EAAE,CAAC,CAAA;QACb,CAAC,CAAA;QACD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAAY,EACZ,SAAkD;IAElD,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;IAChF,MAAM,YAAY,GAAG,CAAC,CAAA;IACtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;QACzD,MAAM,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;QAC3B,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAClC,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IACjD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const dataDir: string;
|
|
2
|
+
export declare const logsDir: string;
|
|
3
|
+
export declare function setConfigPathOverride(absPath: string): void;
|
|
4
|
+
export declare function getConfigPath(): string;
|
|
5
|
+
export declare function ensureDataDirs(): void;
|
|
6
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,QAA4C,CAAA;AAChE,eAAO,MAAM,OAAO,QAA6B,CAAA;AAKjD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D;AAGD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAGD,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import os from 'os';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
// 统一数据目录:三平台一致,锚定到用户主目录下的 .cc-monitoring
|
|
5
|
+
// 作为 npm 包全局安装后,config/logs/db 不再依赖 process.cwd()
|
|
6
|
+
export const dataDir = path.join(os.homedir(), '.cc-monitoring');
|
|
7
|
+
export const logsDir = path.join(dataDir, 'logs');
|
|
8
|
+
// CLI 全局 --config 选项写入的覆盖路径(运行时设置)
|
|
9
|
+
let configPathOverride = null;
|
|
10
|
+
export function setConfigPathOverride(absPath) {
|
|
11
|
+
configPathOverride = absPath;
|
|
12
|
+
}
|
|
13
|
+
// config 路径优先级:--config > CONFIG_PATH 环境变量 > 默认数据目录
|
|
14
|
+
export function getConfigPath() {
|
|
15
|
+
return configPathOverride || process.env.CONFIG_PATH || path.join(dataDir, 'config.json');
|
|
16
|
+
}
|
|
17
|
+
// 确保数据目录与日志目录存在
|
|
18
|
+
export function ensureDataDirs() {
|
|
19
|
+
if (!fs.existsSync(logsDir)) {
|
|
20
|
+
fs.mkdirSync(logsDir, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,yCAAyC;AACzC,kDAAkD;AAClD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAEjD,mCAAmC;AACnC,IAAI,kBAAkB,GAAkB,IAAI,CAAA;AAE5C,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,kBAAkB,GAAG,OAAO,CAAA;AAC9B,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,aAAa;IAC3B,OAAO,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AAC3F,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Pm2ProcessStatus } from '../types/pm2.js';
|
|
2
|
+
export declare function startProcess(ecosystemPath: string): Promise<void>;
|
|
3
|
+
export declare function stopProcess(name: string): Promise<void>;
|
|
4
|
+
export declare function reloadProcess(name: string): Promise<void>;
|
|
5
|
+
export declare function waitForOnline(name: string, timeoutMs?: number, intervalMs?: number): Promise<boolean>;
|
|
6
|
+
export declare function getProcessStatus(name: string): Promise<Pm2ProcessStatus | null>;
|
|
7
|
+
//# sourceMappingURL=pm2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../src/utils/pm2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAwEvD,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAGD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,EAAE,UAAU,SAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CActG;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBrF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { createRequire } from 'module';
|
|
2
|
+
import { getCurrentModuleUrl } from './esm-dirname.js';
|
|
3
|
+
// PM2 is a CJS package, use createRequire for ESM compatibility.
|
|
4
|
+
// getCurrentModuleUrl() wraps import.meta.url so this file has no bare
|
|
5
|
+
// import.meta syntax (which fails to parse under ts-jest's CJS compilation).
|
|
6
|
+
const requireCjs = (() => {
|
|
7
|
+
try {
|
|
8
|
+
return createRequire(getCurrentModuleUrl());
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return require;
|
|
12
|
+
}
|
|
13
|
+
})();
|
|
14
|
+
const pm2 = requireCjs('pm2');
|
|
15
|
+
async function pm2Connect() {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
pm2.connect((err) => {
|
|
18
|
+
if (err)
|
|
19
|
+
reject(err);
|
|
20
|
+
else
|
|
21
|
+
resolve();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async function pm2Disconnect() {
|
|
26
|
+
return new Promise((resolve) => {
|
|
27
|
+
pm2.disconnect();
|
|
28
|
+
resolve();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async function pm2Start(options) {
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
pm2.start(options, (err) => {
|
|
34
|
+
if (err) {
|
|
35
|
+
// PM2 sometimes returns an array of errors
|
|
36
|
+
const error = Array.isArray(err)
|
|
37
|
+
? new Error(err.map(e => e.message).join('; '))
|
|
38
|
+
: err;
|
|
39
|
+
reject(error);
|
|
40
|
+
}
|
|
41
|
+
else
|
|
42
|
+
resolve();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async function pm2Stop(name) {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
pm2.stop(name, (err) => {
|
|
49
|
+
if (err)
|
|
50
|
+
reject(err);
|
|
51
|
+
else
|
|
52
|
+
resolve();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async function pm2Reload(name) {
|
|
57
|
+
return new Promise((resolve, reject) => {
|
|
58
|
+
pm2.reload(name, (err) => {
|
|
59
|
+
if (err)
|
|
60
|
+
reject(err);
|
|
61
|
+
else
|
|
62
|
+
resolve();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async function pm2List() {
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
pm2.list((err, list) => {
|
|
69
|
+
if (err)
|
|
70
|
+
reject(err);
|
|
71
|
+
else
|
|
72
|
+
resolve(list);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
export async function startProcess(ecosystemPath) {
|
|
77
|
+
await pm2Connect();
|
|
78
|
+
await pm2Start(ecosystemPath);
|
|
79
|
+
await pm2Disconnect();
|
|
80
|
+
}
|
|
81
|
+
export async function stopProcess(name) {
|
|
82
|
+
await pm2Connect();
|
|
83
|
+
await pm2Stop(name);
|
|
84
|
+
await pm2Disconnect();
|
|
85
|
+
}
|
|
86
|
+
export async function reloadProcess(name) {
|
|
87
|
+
await pm2Connect();
|
|
88
|
+
await pm2Reload(name);
|
|
89
|
+
await pm2Disconnect();
|
|
90
|
+
}
|
|
91
|
+
// 轮询 pm2 list,直到目标进程状态为 online 或超时
|
|
92
|
+
export async function waitForOnline(name, timeoutMs = 8000, intervalMs = 300) {
|
|
93
|
+
await pm2Connect();
|
|
94
|
+
try {
|
|
95
|
+
const deadline = Date.now() + timeoutMs;
|
|
96
|
+
while (Date.now() < deadline) {
|
|
97
|
+
const list = await pm2List();
|
|
98
|
+
const proc = list.find(p => p.name === name);
|
|
99
|
+
if (proc?.pm2_env?.status === 'online')
|
|
100
|
+
return true;
|
|
101
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
await pm2Disconnect();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export async function getProcessStatus(name) {
|
|
110
|
+
await pm2Connect();
|
|
111
|
+
const list = await pm2List();
|
|
112
|
+
await pm2Disconnect();
|
|
113
|
+
const proc = list.find(p => p.name === name);
|
|
114
|
+
if (!proc)
|
|
115
|
+
return null;
|
|
116
|
+
return {
|
|
117
|
+
name: proc.name ?? name,
|
|
118
|
+
status: (proc.pm2_env?.status ?? 'stopped'),
|
|
119
|
+
cpu: proc.monit?.cpu ?? 0,
|
|
120
|
+
memory: proc.monit?.memory ?? 0,
|
|
121
|
+
uptime: proc.pm2_env?.pm_uptime ?? 0,
|
|
122
|
+
restarts: proc.pm2_env?.restart_time ?? 0
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=pm2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../src/utils/pm2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
export interface Provider {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
base_url: string | null;
|
|
6
|
+
api_key: string | null;
|
|
7
|
+
model: string | null;
|
|
8
|
+
haiku_model: string | null;
|
|
9
|
+
sonnet_model: string | null;
|
|
10
|
+
opus_model: string | null;
|
|
11
|
+
subagent_model: string | null;
|
|
12
|
+
provider: string;
|
|
13
|
+
default: boolean;
|
|
14
|
+
created_at: string;
|
|
15
|
+
updated_at: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ProviderInput {
|
|
18
|
+
name: string;
|
|
19
|
+
base_url?: string;
|
|
20
|
+
api_key?: string;
|
|
21
|
+
model?: string;
|
|
22
|
+
haiku_model?: string;
|
|
23
|
+
sonnet_model?: string;
|
|
24
|
+
opus_model?: string;
|
|
25
|
+
subagent_model?: string;
|
|
26
|
+
provider: string;
|
|
27
|
+
default?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface ProviderValidationError {
|
|
30
|
+
index?: number;
|
|
31
|
+
field: string;
|
|
32
|
+
message: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function listProviders(db: Database.Database): Provider[];
|
|
35
|
+
/**
|
|
36
|
+
* Destructive full replacement: deletes ALL existing providers then inserts the given list.
|
|
37
|
+
* Passing an empty array will wipe all provider data with no replacement.
|
|
38
|
+
* Prepared statements are created per-call since this is a low-volume admin operation
|
|
39
|
+
* (called only when user saves config via UI). Caching would add complexity with no
|
|
40
|
+
* measurable benefit for this use case.
|
|
41
|
+
*/
|
|
42
|
+
export declare function saveProviders(db: Database.Database, providers: ProviderInput[]): void;
|
|
43
|
+
export declare function validateProvider(input: ProviderInput): ProviderValidationError[];
|
|
44
|
+
export declare function validateProviders(inputs: ProviderInput[]): ProviderValidationError[];
|
|
45
|
+
//# sourceMappingURL=providers-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers-db.d.ts","sourceRoot":"","sources":["../../src/utils/providers-db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAErC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAID,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAQ/D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CA0BrF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,uBAAuB,EAAE,CAyChF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,uBAAuB,EAAE,CA4BpF"}
|