{ "name": "@whyour/qinglong", "packageManager": "pnpm@8.3.1", "version": "2.21.0-14", "description": "Timed task management platform supporting Python3, JavaScript, Shell, Typescript", "repository": { "type": "git", "url": "https://github.com/whyour/qinglong.git" }, "author": "whyour", "license": "Apache License 2.0", "bugs": { "url": "https://github.com/whyour/qinglong/issues" }, "scripts": { "start": "concurrently -n w: npm:start:*", "start:back": "nodemon ./back/app.ts", "start:front": "max dev", "build:front": "max build", "build:back": "tsc -p back/tsconfig.json", "build:packages:ql3": "node scripts/ql3-clean-package-artifacts.cjs && pnpm -r --workspace-concurrency=1 --filter './packages/ql3-*' run build", "test:back": "node --test test/back/*.test.cjs", "test:packages:ql3": "pnpm run build:packages:ql3 && pnpm -r --workspace-concurrency=1 --filter './packages/ql3-*' exec sh -c 'node --test test/*.test.cjs'", "test:postgres-ha:ql3": "pnpm --filter @qinglong/ai build && pnpm --filter @qinglong/cluster-admin check && pnpm --filter @qinglong/cluster-control check && node scripts/ql3-postgres-ha-contract.cjs", "audit:postgres-ha-evidence:ql3": "node scripts/ql3-postgres-ha-evidence-audit.cjs", "test:automation-postgres-integration:ql3": "pnpm --filter @qinglong/cluster-admin test:automation-integration", "test:worker-postgres-live:ql3": "pnpm --filter @qinglong/cluster-admin check && pnpm --filter @qinglong/cluster-control check && pnpm --filter @qinglong/worker-runtime check && node scripts/ql3-worker-postgres-live-contract.cjs", "test:worker-kubernetes-rollout-live:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-worker-kubernetes-rollout-live-contract.cjs", "audit:worker-kubernetes-rollout-live:ql3": "node scripts/ql3-worker-kubernetes-rollout-live-audit.cjs", "test:worker-management-kubernetes-live:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-worker-credential-management-kubernetes-live-contract.cjs", "test:postgres-tls-rotation:ql3": "pnpm --filter @qinglong/cluster-postgres build && node scripts/ql3-postgres-tls-rotation-contract.cjs", "test:cloudnativepg-live:ql3": "node scripts/ql3-cloudnativepg-live-contract.cjs", "test:cloudnativepg-barman-live:ql3": "node scripts/ql3-cloudnativepg-barman-live-contract.cjs", "test:automation-management-kubernetes-live:ql3": "node scripts/ql3-automation-management-kubernetes-live-contract.cjs", "audit:automation-management-kubernetes-live:ql3": "node scripts/ql3-automation-management-kubernetes-live-audit.cjs", "test:approval-management-kubernetes-live:ql3": "pnpm --filter @qinglong/runtime-core build && node scripts/ql3-approval-management-kubernetes-live-contract.cjs", "audit:approval-management-kubernetes-live:ql3": "node scripts/ql3-approval-management-kubernetes-live-audit.cjs", "test:run-management-kubernetes-live:ql3": "pnpm --filter @qinglong/cluster-admin build && pnpm --filter @qinglong/cluster-control build && node scripts/ql3-run-management-kubernetes-live-contract.cjs", "audit:run-management-kubernetes-live:ql3": "node scripts/ql3-run-management-kubernetes-live-audit.cjs", "test:local-api-cancellation-live:ql3": "node scripts/ql3-local-api-cancellation-live-contract.cjs", "audit:local-api-cancellation-live:ql3": "node scripts/ql3-local-api-cancellation-live-audit.cjs", "test:provider-credential-test-kubernetes-live:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-provider-credential-test-kubernetes-live-contract.cjs", "audit:provider-credential-test-kubernetes-live:ql3": "node scripts/ql3-provider-credential-test-kubernetes-live-audit.cjs", "test:prompt-output-key-retirement-kubernetes-live:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-prompt-output-key-retirement-kubernetes-live-contract.cjs", "audit:prompt-output-key-retirement-kubernetes-live:ql3": "node scripts/ql3-prompt-output-key-retirement-kubernetes-live-audit.cjs", "test:prompt-output-key-rotation-kubernetes-live:ql3": "pnpm --filter @qinglong/cluster-admin build && pnpm --filter @qinglong/cluster-control build && node scripts/ql3-prompt-output-key-rotation-kubernetes-live-contract.cjs", "audit:prompt-output-key-rotation-kubernetes-live:ql3": "node scripts/ql3-prompt-output-key-rotation-kubernetes-live-audit.cjs", "test:prompt-output-projection-kubernetes-live:ql3": "pnpm --filter @qinglong/ai build && node scripts/ql3-prompt-output-projection-kubernetes-live-contract.cjs", "audit:prompt-output-projection-kubernetes-live:ql3": "node scripts/ql3-prompt-output-projection-kubernetes-live-audit.cjs", "test:plugin-package-kubernetes-live:ql3": "node scripts/ql3-plugin-package-kubernetes-live-contract.cjs", "test:plugin-package-kubernetes-k3s-live:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-plugin-package-kubernetes-k3s-live-contract.cjs", "test:plugin-package-secret-binding-kubernetes-live:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-plugin-package-secret-binding-kubernetes-live-contract.cjs", "audit:plugin-package-secret-binding-kubernetes-live:ql3": "node scripts/ql3-plugin-package-secret-binding-kubernetes-live-audit.cjs", "test:plugin-package-recovery-e2e:ql3": "pnpm --filter @qinglong/cluster-admin check && pnpm --filter @qinglong/cluster-control check && node scripts/ql3-plugin-package-recovery-e2e-live-contract.cjs", "audit:plugin-package-recovery-e2e:ql3": "node scripts/ql3-plugin-package-recovery-e2e-live-audit.cjs", "benchmark:edge": "node scripts/ql3-edge-benchmark.cjs", "benchmark:cluster-control": "node scripts/ql3-cluster-control-benchmark.cjs", "benchmark:worker": "node scripts/ql3-worker-resource-benchmark.cjs", "benchmark:ai-profile": "node scripts/ql3-ai-profile-benchmark.cjs", "evidence:physical-edge": "node scripts/ql3-physical-edge-evidence.cjs", "evidence:plugin-package-recovery-edge": "node scripts/ql3-plugin-package-recovery-edge-benchmark.cjs", "evidence:physical-edge-idle": "node scripts/ql3-physical-edge-idle-sampler.cjs", "evidence:physical-edge-fault": "node scripts/ql3-physical-edge-fault-probe.cjs", "evidence:physical-edge-task-scale": "node scripts/ql3-physical-edge-task-scale.cjs", "evidence:physical-edge-adoption-scale": "node scripts/ql3-physical-edge-adoption-scale.cjs", "evidence:physical-edge-compose-storage": "node scripts/ql3-physical-edge-compose-storage.cjs", "evidence:physical-edge-application-start": "node scripts/ql3-physical-edge-application-start.cjs", "evidence:physical-edge-service-start": "node scripts/ql3-physical-edge-service-start.cjs", "evidence:physical-edge-direct-service-start": "node scripts/ql3-physical-edge-direct-service-start.cjs", "evidence:physical-edge-direct-service-stop": "node scripts/ql3-physical-edge-direct-service-stop.cjs", "evidence:physical-edge-release": "node scripts/ql3-physical-edge-release-evidence.cjs", "benchmark:db:node-sqlite": "node scripts/ql3-node-sqlite-benchmark.cjs", "audit:schema:ql3": "pnpm --filter @qinglong/local-owner-cli run readiness", "audit:legacy-schema:ql3": "node scripts/ql3-schema-audit.cjs", "audit:receipts:ql3": "node scripts/ql3-receipt-audit.cjs", "audit:edge-imports:ql3": "node scripts/ql3-edge-import-audit.cjs", "audit:cluster-dependencies:ql3": "node scripts/ql3-cluster-dependency-audit.cjs", "audit:package-boundaries:ql3": "node scripts/ql3-package-boundary-audit.cjs", "test:service-manager-bridge:ql3": "node scripts/ql3-service-manager-bridge-docker-gate.cjs", "audit:service-manager-bridge-imports:ql3": "node scripts/ql3-service-bridge-import-audit.cjs", "audit:prompt-output-external-recovery-deployment:ql3": "node scripts/ql3-prompt-output-external-recovery-deployment-audit.cjs", "custody:vault-transit:ql3": "node scripts/ql3-vault-transit-prompt-output-custody.cjs", "test:vault-transit-custody-live:ql3": "pnpm --filter @qinglong/ai build && pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-vault-transit-prompt-output-custody-live-contract.cjs", "test:postgres-backup-prompt-output-recovery-live:ql3": "pnpm --filter @qinglong/ai build && pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-postgres-prompt-output-recovery-live-contract.cjs", "audit:cluster-deployment:ql3": "node scripts/ql3-cluster-deployment-audit.cjs", "audit:cluster-copilot-console:ql3": "node scripts/ql3-cluster-copilot-console-audit.cjs", "test:cluster-admin-product-live:ql3": "node scripts/ql3-cluster-admin-product-live-contract.cjs", "audit:provider-credential-management-deployment:ql3": "node scripts/ql3-provider-credential-management-deployment-audit.cjs", "audit:provider-credential-test-deployment:ql3": "node scripts/ql3-provider-credential-test-deployment-audit.cjs", "audit:worker-deployment:ql3": "node scripts/ql3-worker-deployment-audit.cjs", "audit:cloudnativepg:ql3": "node scripts/ql3-cloudnativepg-deployment-audit.cjs", "audit:cloudnativepg-backup:ql3": "node scripts/ql3-cloudnativepg-backup-audit.cjs", "audit:barman-cloud-supply-chain:ql3": "node scripts/ql3-barman-cloud-supply-chain-audit.cjs", "audit:cert-manager-selection:ql3": "node scripts/ql3-cert-manager-selection-audit.cjs", "audit:cloudnativepg-dr-evidence:ql3": "node scripts/ql3-cloudnativepg-dr-evidence-audit.cjs", "gate:cloudnativepg-dr-release:ql3": "node scripts/ql3-cloudnativepg-dr-release-gate.cjs", "evidence:plugin-package-management-live-exercise:ql3": "node scripts/ql3-plugin-package-management-live-exercise.cjs", "evidence:plugin-package-management-live:ql3": "node scripts/ql3-plugin-package-management-live-evidence-collect.cjs", "audit:plugin-package-management-live-evidence:ql3": "node scripts/ql3-plugin-package-management-live-evidence-audit.cjs", "evidence:worker-management-live-ceremony:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-worker-credential-management-live-ceremony.cjs", "audit:worker-management-live-ceremony:ql3": "node scripts/ql3-worker-credential-management-live-ceremony-audit.cjs", "evidence:worker-management-durable-audit:ql3": "node scripts/ql3-worker-credential-management-durable-audit-evidence.cjs", "audit:worker-management-durable-audit:ql3": "node scripts/ql3-worker-credential-management-durable-audit-evidence-audit.cjs", "evidence:worker-management-pki-rotation:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-worker-credential-management-pki-rotation-evidence.cjs", "audit:worker-management-pki-rotation:ql3": "node scripts/ql3-worker-credential-management-pki-rotation-evidence-audit.cjs", "evidence:worker-management-ca-rollover:ql3": "pnpm --filter @qinglong/cluster-admin build && node scripts/ql3-worker-credential-management-ca-rollover-evidence.cjs", "audit:worker-management-ca-rollover:ql3": "node scripts/ql3-worker-credential-management-ca-rollover-evidence-audit.cjs", "evidence:worker-management-release:ql3": "node scripts/ql3-worker-credential-management-release-evidence.cjs", "audit:worker-management-release:ql3": "node scripts/ql3-worker-credential-management-release-evidence-audit.cjs", "gate:worker-management-release:ql3": "node scripts/ql3-worker-credential-management-release-gate.cjs", "audit:image-release:ql3": "node scripts/ql3-cluster-image-release-audit.cjs", "audit:image-os-vulnerability-policy:ql3": "node scripts/ql3-image-os-vulnerability-policy.cjs", "audit:cluster-image-release:ql3": "node scripts/ql3-cluster-image-release-audit.cjs", "audit:cluster-oci-layout:ql3": "node scripts/ql3-cluster-oci-layout-audit.cjs", "audit:cluster-remote-manifest:ql3": "node scripts/ql3-cluster-remote-manifest-audit.cjs", "audit:postgres-ca-overlap:ql3": "pnpm --filter @qinglong/cluster-postgres build && node scripts/ql3-postgres-ca-overlap-audit.cjs", "sbom:cluster-image:ql3": "node scripts/ql3-cluster-image-sbom.cjs", "sbom:local-image:ql3": "node scripts/ql3-cluster-image-sbom.cjs --image=local", "audit:profiles:ql3": "pnpm audit --prod --json | node scripts/ql3-profile-vulnerability-audit.cjs", "audit:artifact:edge:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge", "audit:artifact:standalone:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone", "audit:artifact:edge-adopted:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge-adopted", "audit:artifact:standalone-adopted:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone-adopted", "audit:artifact:edge-application:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge-application", "audit:artifact:standalone-application:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone-application", "audit:artifact:edge-application-api:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge-application-api", "audit:artifact:standalone-application-api:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone-application-api", "audit:artifact:edge-ai:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge-ai", "audit:artifact:standalone-ai:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone-ai", "audit:artifact:edge-application-ai:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge-application-ai", "audit:artifact:standalone-application-ai:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone-application-ai", "audit:artifact:edge-mcp:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs edge-mcp", "audit:artifact:standalone-mcp:ql3": "node scripts/ql3-local-profile-artifact-audit.cjs standalone-mcp", "audit:local-image:ql3": "node scripts/ql3-local-image-audit.cjs", "test:local-compose-preflight:ql3": "node scripts/ql3-local-compose-preflight-live-contract.cjs", "test:local-compose-rollout:ql3": "node scripts/ql3-local-compose-rollout-live-contract.cjs", "test:worker-runtime:ql3": "pnpm --filter @qinglong/worker-runtime test", "panel": "npm run build:back && node static/build/app.js", "gen:proto": "protoc --experimental_allow_proto3_optional --plugin=./node_modules/.bin/protoc-gen-ts_proto ./back/protos/*.proto --ts_proto_out=./ --ts_proto_opt=outputServices=grpc-js,env=node,esModuleInterop=true,snakeToCamel=false", "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", "postinstall": "max setup 2>/dev/null || true" }, "gitHooks": { "pre-commit": "lint-staged" }, "lint-staged": { "*.{js,jsx,less,md,json}": [ "prettier --write" ], "*.ts?(x)": [ "prettier --parser=typescript --write" ] }, "bin": { "ql": "shell/update.sh", "task": "shell/task.sh", "qinglong": "shell/start.sh" }, "pnpm": { "peerDependencyRules": { "ignoreMissing": [ "react", "react-dom", "antd", "dva", "postcss", "webpack", "eslint", "stylelint", "redux", "@babel/core", "monaco-editor", "rc-field-form", "@types/lodash.merge", "rollup", "styled-components" ], "allowedVersions": { "react": "18", "react-dom": "18", "dva-core": "2" } }, "overrides": { "sqlite3": "npm:@whyour/sqlite3@1.1.0", "@types/pg>@types/node": "24.13.3", "@whyour/sqlite3>tar": "7.5.20", "@mapbox/node-pre-gyp>tar": "7.5.20", "@kubernetes/client-node>form-data": "4.0.6", "@kubernetes/client-node>js-yaml": "4.3.0", "celebrate>lodash": "4.18.1", "express>path-to-regexp": "0.1.13", "faye-websocket>websocket-driver": "0.7.5", "micromatch>picomatch": "2.3.2", "sequelize>validator": "13.15.35", "sockjs>websocket-driver": "0.7.5", "@codemirror/state": "6.5.4", "@codemirror/view": "6.39.16" } }, "dependencies": { "@ant-design/plots": "^2.6.8", "@bufbuild/protobuf": "^2.10.0", "@grpc/grpc-js": "^1.14.4", "@grpc/proto-loader": "^0.8.1", "@keyv/sqlite": "^4.0.1", "@otplib/preset-default": "^12.0.1", "body-parser": "^1.20.3", "celebrate": "^15.0.3", "chokidar": "^4.0.1", "compression": "^1.7.4", "cors": "^2.8.5", "cron-parser": "^5.4.0", "cross-spawn": "^7.0.6", "dayjs": "^1.11.13", "dotenv": "^16.4.6", "express": "^4.22.2", "express-jwt": "^8.4.1", "express-rate-limit": "^7.4.1", "express-urlrewrite": "^2.0.3", "helmet": "^8.1.0", "hpagent": "^1.2.0", "http-proxy-middleware": "^3.0.7", "iconv-lite": "^0.6.3", "ip2region": "2.3.0", "js-yaml": "^4.1.0", "jsonwebtoken": "^9.0.3", "keyv": "^5.2.3", "lodash": "^4.18.1", "multer": "2.2.0", "node-schedule": "^2.1.0", "nodemailer": "^9.0.3", "p-queue-cjs": "7.3.4", "proper-lockfile": "^4.1.2", "ps-tree": "^1.2.0", "reflect-metadata": "^0.2.2", "request-ip": "3.3.0", "semver": "7.7.4", "sequelize": "^6.37.8", "sockjs": "^0.3.24", "sqlite3": "npm:@whyour/sqlite3@1.1.0", "toad-scheduler": "^3.0.1", "typedi": "^0.10.0", "undici": "^7.28.0", "uuid": "^11.0.3", "winston": "^3.17.0", "winston-daily-rotate-file": "^5.0.0" }, "devDependencies": { "@ant-design/icons": "^5.0.1", "@ant-design/pro-layout": "6.38.22", "@codemirror/state": "6.5.4", "@codemirror/view": "6.39.16", "@monaco-editor/react": "4.2.1", "@react-hook/resize-observer": "^2.0.2", "@types/body-parser": "^1.19.2", "@types/compression": "^1.7.2", "@types/cors": "^2.8.12", "@types/cross-spawn": "^6.0.2", "@types/express": "^4.17.13", "@types/express-jwt": "^6.0.4", "@types/file-saver": "2.0.2", "@types/helmet": "^4.0.0", "@types/js-yaml": "^4.0.5", "@types/jsonwebtoken": "^8.5.8", "@types/lodash": "^4.14.185", "@types/multer": "^1.4.7", "@types/node": "^17.0.21", "@types/node-schedule": "^1.3.2", "@types/nodemailer": "^6.4.4", "@types/proper-lockfile": "^4.1.4", "@types/ps-tree": "^1.1.6", "@types/qrcode.react": "^1.0.2", "@types/react": "^18.0.20", "@types/react-copy-to-clipboard": "^5.0.4", "@types/react-dom": "^18.0.6", "@types/request-ip": "0.0.41", "@types/semver": "7.5.8", "@types/serve-handler": "^6.1.1", "@types/sockjs": "^0.3.33", "@types/sockjs-client": "^1.5.1", "@types/uuid": "^8.3.4", "@uiw/codemirror-extensions-langs": "^4.21.9", "@uiw/react-codemirror": "^4.21.9", "@umijs/max": "^4.4.4", "@umijs/ssr-darkreader": "^4.9.45", "ahooks": "^3.7.8", "ansi-to-react": "^6.1.6", "antd": "^4.24.16", "antd-img-crop": "^4.23.0", "axios": "^1.4.0", "compression-webpack-plugin": "9.2.0", "concurrently": "^7.0.0", "file-saver": "2.0.2", "lint-staged": "^13.0.3", "moment": "2.30.1", "monaco-editor": "0.33.0", "nodemon": "^3.0.1", "prettier": "^2.5.1", "pretty-bytes": "6.1.1", "qiniu": "^7.4.0", "qrcode.react": "^1.0.1", "query-string": "^7.1.1", "rc-tween-one": "^3.0.6", "rc-virtual-list": "3.15.0", "react": "18.3.1", "react-copy-to-clipboard": "^5.1.0", "react-diff-viewer": "^3.1.1", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "18.3.1", "react-hotkeys-hook": "^4.6.1", "react-intl-universal": "^2.12.0", "react-router-dom": "6.26.1", "react-split-pane": "^0.1.92", "sockjs-client": "^1.6.0", "ts-node": "^10.9.2", "ts-proto": "^2.6.1", "tslib": "^2.4.0", "typescript": "5.2.2", "vh-check": "^2.0.5", "virtualizedtableforantd4": "1.3.0" } }