diff --git a/.changeset/issue-1946-docker-isolation-session-visibility.md b/.changeset/issue-1946-docker-isolation-session-visibility.md new file mode 100644 index 000000000..640110e82 --- /dev/null +++ b/.changeset/issue-1946-docker-isolation-session-visibility.md @@ -0,0 +1,23 @@ +--- +'@link-assistant/hive-mind': patch +--- + +Surface the docker-isolation session id + isolation backend immediately when the +Telegram bot launches a task, instead of only after the (potentially hour-long) +image pull / container startup finishes (#1946). `formatStartingWorkSessionMessage` +now renders the `Session:` and `πŸ”’ Isolation:` lines on the `πŸ”„ Starting...` +message, and `buildExecuteAndUpdateMessage` tracks the session up front (before +awaiting the launch) so the run is addressable by `/watch`, `/log` and `/status` +during the whole startup window. A new `untrackSession` helper removes the +optimistically-tracked session if the launch fails, so a phantom session is never +monitored or resumed. Fix applies to every caller of the shared execution path +(`/solve`, `/hive`, `/task`). + +The image-preparation log gap and host-image re-download were reported upstream, +fixed there, and are now pinned in this repo's images: `Dockerfile` / +`Dockerfile.dind` bump `start-command` `0.29.1` β†’ `0.29.2` (link-foundation/start#138 +β€” the `docker pull`/dind-boot phase is now recorded in the `$` session log), and +`Dockerfile.dind` bumps its base from `konard/box-dind:2.3.2` β†’ `2.3.5` +(link-foundation/box#106 β€” the dind entrypoint now verifies host-image passthrough +actually seeded the nested daemon instead of silently re-downloading ~30 GB). A +deep case study is in `docs/case-studies/issue-1946/`. diff --git a/Dockerfile b/Dockerfile index 4c2c87472..6088f4089 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ # # Build: docker build -t konard/hive-mind . -FROM konard/box:2.3.2 +FROM konard/box:2.3.5 ARG HIVE_MIND_VERSION=latest # Release builds pass the exact published package version here. Bake it as the # default child isolation image tag so a parent started via :latest still runs @@ -116,10 +116,13 @@ RUN bun install -g @openai/codex && \ # Note: start-command provides `$` CLI for isolation modes (--isolation screen/tmux/docker) # The Box base image includes screen. For tmux/docker isolation, ensure they are # available in the base image or install them separately. -# start-command is pinned to 0.29.1: that release fixes detached docker +# start-command is pinned to 0.29.2: 0.29.1 fixed detached docker # `--status`/`--list` reporting a terminal status (`executed`) with the `-1` -# sentinel while the container is still running. See link-foundation/start#136 -# and link-assistant/hive-mind#1939. +# sentinel while the container is still running (link-foundation/start#136, +# link-assistant/hive-mind#1939); 0.29.2 (start#138 / start PR #139) records the +# docker image-preparation phase (the `docker pull`/dind boot) in the session log, +# so `$ --upload-log` no longer returns a near-empty log while a multi-GB image is +# still pulling β€” the missing-image-prep-logs half of issue #1946. RUN echo "Installing @link-assistant/hive-mind@${HIVE_MIND_VERSION}" && \ bun install -g "@link-assistant/hive-mind@${HIVE_MIND_VERSION}" && \ if [ "${HIVE_MIND_VERSION}" != "latest" ]; then \ @@ -127,7 +130,7 @@ RUN echo "Installing @link-assistant/hive-mind@${HIVE_MIND_VERSION}" && \ fi && \ bun install -g @link-assistant/claude-profiles && \ bun install -g @link-assistant/agent && \ - bun install -g start-command@0.29.1 && \ + bun install -g start-command@0.29.2 && \ bun install -g gh-setup-git-identity && \ bun install -g gh-pull-all && \ bun install -g gh-load-issue && \ diff --git a/Dockerfile.dind b/Dockerfile.dind index 2d46087f2..d2635e7ef 100644 --- a/Dockerfile.dind +++ b/Dockerfile.dind @@ -8,13 +8,20 @@ # # Box image version: pinned to a specific release for stable, reproducible builds. # To upgrade: update the dind version tag below. -# Box 2.3.2 includes the host-image passthrough allowlist used by the issue #1879 +# Box 2.3.2 introduced the host-image passthrough allowlist used by the issue #1879 # runbook, plus the box#102 fix: the dind entrypoint now WARNS when passthrough is # opted into (DIND_HOST_PASSTHROUGH_IMAGES set) but no host docker socket is mounted, # instead of silently leaving the nested daemon empty (issue #1914). +# Box 2.3.4 (box#106 / box PR #107) goes further for issue #1946: the dind +# entrypoint now VERIFIES (via `docker image inspect` against the nested daemon) +# that each concrete passthrough allowlist entry was actually seeded, and reports +# `image preload/passthrough finished WITH WARNINGS` instead of a misleading +# `complete` when it was not β€” so a misconfigured deploy can no longer silently +# trigger a ~30 GB re-download of the host image on the first nested `docker run`. +# We pin 2.3.5 (latest patch on top of that fix). # Latest Box releases: https://github.com/link-foundation/box/releases -FROM konard/box-dind:2.3.2 +FROM konard/box-dind:2.3.5 ARG HIVE_MIND_VERSION=latest # --- Environment variables --- @@ -118,10 +125,13 @@ RUN bun install -g @openai/codex && \ bun install -g @github/copilot && \ bun install -g opencode-ai -# start-command is pinned to 0.29.1: that release fixes detached docker +# start-command is pinned to 0.29.2: 0.29.1 fixed detached docker # `--status`/`--list` reporting a terminal status (`executed`) with the `-1` -# sentinel while the container is still running. See link-foundation/start#136 -# and link-assistant/hive-mind#1939. +# sentinel while the container is still running (link-foundation/start#136, +# link-assistant/hive-mind#1939); 0.29.2 (start#138 / start PR #139) records the +# docker image-preparation phase (the `docker pull`/dind boot) in the session log, +# so `$ --upload-log` no longer returns a near-empty 546-byte log while a multi-GB +# image is still pulling β€” the missing-image-prep-logs half of issue #1946. RUN echo "Installing @link-assistant/hive-mind@${HIVE_MIND_VERSION}" && \ bun install -g "@link-assistant/hive-mind@${HIVE_MIND_VERSION}" && \ if [ "${HIVE_MIND_VERSION}" != "latest" ]; then \ @@ -129,7 +139,7 @@ RUN echo "Installing @link-assistant/hive-mind@${HIVE_MIND_VERSION}" && \ fi && \ bun install -g @link-assistant/claude-profiles && \ bun install -g @link-assistant/agent && \ - bun install -g start-command@0.29.1 && \ + bun install -g start-command@0.29.2 && \ bun install -g gh-setup-git-identity && \ bun install -g gh-pull-all && \ bun install -g gh-load-issue && \ diff --git a/bun.lock b/bun.lock new file mode 100644 index 000000000..649096f87 --- /dev/null +++ b/bun.lock @@ -0,0 +1,1033 @@ +{ + "lockfileVersion": 1, + "configVersion": 0, + "workspaces": { + "": { + "name": "@link-assistant/hive-mind", + "dependencies": { + "@secretlint/core": "^11.2.5", + "@secretlint/secretlint-rule-preset-recommend": "^11.2.5", + "@sentry/node": "^10.15.0", + "@sentry/profiling-node": "^10.15.0", + "agent-commander": "^0.6.1", + "dayjs": "^1.11.19", + "decimal.js-light": "^2.5.1", + "lino-arguments": "^0.3.0", + "lino-i18n": "^0.1.1", + "lino-objects-codec": "^0.3.6", + "secretlint": "^11.2.5", + "semver": "^7.7.3", + "tinyld": "^1.3.4", + }, + "devDependencies": { + "@changesets/cli": "^2.27.0", + "@eslint/js": "^9.35.0", + "eslint": "^9.35.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "husky": "^9.1.7", + "jscpd": "^4.0.5", + "lint-staged": "^16.2.7", + "prettier": "^3.6.2", + "test-anywhere": "^0.9.1", + }, + }, + }, + "packages": { + "@azu/format-text": ["@azu/format-text@1.0.2", "", {}, "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg=="], + + "@azu/style-format": ["@azu/style-format@1.0.1", "", { "dependencies": { "@azu/format-text": "^1.0.1" } }, "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g=="], + + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" } }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="], + + "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], + + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + + "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.0.14", "", { "dependencies": { "@changesets/config": "^3.1.2", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA=="], + + "@changesets/assemble-release-plan": ["@changesets/assemble-release-plan@6.0.9", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "semver": "^7.5.3" } }, "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ=="], + + "@changesets/changelog-git": ["@changesets/changelog-git@0.2.1", "", { "dependencies": { "@changesets/types": "^6.1.0" } }, "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q=="], + + "@changesets/cli": ["@changesets/cli@2.29.8", "", { "dependencies": { "@changesets/apply-release-plan": "^7.0.14", "@changesets/assemble-release-plan": "^6.0.9", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.2", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/get-release-plan": "^4.0.14", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.6", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", "@inquirer/external-editor": "^1.0.2", "@manypkg/get-packages": "^1.1.3", "ansi-colors": "^4.1.3", "ci-info": "^3.7.0", "enquirer": "^2.4.1", "fs-extra": "^7.0.1", "mri": "^1.2.0", "p-limit": "^2.2.0", "package-manager-detector": "^0.2.0", "picocolors": "^1.1.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^3.0.1", "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, "sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA=="], + + "@changesets/config": ["@changesets/config@3.1.2", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/logger": "^0.1.1", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1", "micromatch": "^4.0.8" } }, "sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog=="], + + "@changesets/errors": ["@changesets/errors@0.2.0", "", { "dependencies": { "extendable-error": "^0.1.5" } }, "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow=="], + + "@changesets/get-dependents-graph": ["@changesets/get-dependents-graph@2.1.3", "", { "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "picocolors": "^1.1.0", "semver": "^7.5.3" } }, "sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ=="], + + "@changesets/get-release-plan": ["@changesets/get-release-plan@4.0.14", "", { "dependencies": { "@changesets/assemble-release-plan": "^6.0.9", "@changesets/config": "^3.1.2", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.6", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g=="], + + "@changesets/get-version-range-type": ["@changesets/get-version-range-type@0.4.0", "", {}, "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ=="], + + "@changesets/git": ["@changesets/git@3.0.4", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@manypkg/get-packages": "^1.1.3", "is-subdir": "^1.1.1", "micromatch": "^4.0.8", "spawndamnit": "^3.0.1" } }, "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw=="], + + "@changesets/logger": ["@changesets/logger@0.1.1", "", { "dependencies": { "picocolors": "^1.1.0" } }, "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg=="], + + "@changesets/parse": ["@changesets/parse@0.4.2", "", { "dependencies": { "@changesets/types": "^6.1.0", "js-yaml": "^4.1.1" } }, "sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA=="], + + "@changesets/pre": ["@changesets/pre@2.0.2", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1" } }, "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug=="], + + "@changesets/read": ["@changesets/read@0.6.6", "", { "dependencies": { "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/parse": "^0.4.2", "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "p-filter": "^2.1.0", "picocolors": "^1.1.0" } }, "sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg=="], + + "@changesets/should-skip-package": ["@changesets/should-skip-package@0.1.2", "", { "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw=="], + + "@changesets/types": ["@changesets/types@6.1.0", "", {}, "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA=="], + + "@changesets/write": ["@changesets/write@0.4.0", "", { "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "human-id": "^4.1.1", "prettier": "^2.7.1" } }, "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q=="], + + "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], + + "@eslint/config-array": ["@eslint/config-array@0.21.0", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ=="], + + "@eslint/config-helpers": ["@eslint/config-helpers@0.3.1", "", {}, "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA=="], + + "@eslint/core": ["@eslint/core@0.15.2", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg=="], + + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], + + "@eslint/js": ["@eslint/js@9.35.0", "", {}, "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw=="], + + "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], + + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.5", "", { "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" } }, "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w=="], + + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], + + "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], + + "@inquirer/external-editor": ["@inquirer/external-editor@1.0.3", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" } }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="], + + "@jscpd/badge-reporter": ["@jscpd/badge-reporter@4.0.4", "", { "dependencies": { "badgen": "^3.2.3", "colors": "^1.4.0", "fs-extra": "^11.2.0" } }, "sha512-I9b4MmLXPM2vo0SxSUWnNGKcA4PjQlD3GzXvFK60z43cN/EIdLbOq3FVwCL+dg2obUqGXKIzAm7EsDFTg0D+mQ=="], + + "@jscpd/core": ["@jscpd/core@4.0.4", "", { "dependencies": { "eventemitter3": "^5.0.1" } }, "sha512-QGMT3iXEX1fI6lgjPH+x8eyJwhwr2KkpSF5uBpjC0Z5Xloj0yFTFLtwJT+RhxP/Ob4WYrtx2jvpKB269oIwgMQ=="], + + "@jscpd/finder": ["@jscpd/finder@4.0.4", "", { "dependencies": { "@jscpd/core": "4.0.4", "@jscpd/tokenizer": "4.0.4", "blamer": "^1.0.6", "bytes": "^3.1.2", "cli-table3": "^0.6.5", "colors": "^1.4.0", "fast-glob": "^3.3.2", "fs-extra": "^11.2.0", "markdown-table": "^2.0.0", "pug": "^3.0.3" } }, "sha512-qVUWY7Nzuvfd5OIk+n7/5CM98LmFroLqblRXAI2gDABwZrc7qS+WH2SNr0qoUq0f4OqwM+piiwKvwL/VDNn/Cg=="], + + "@jscpd/html-reporter": ["@jscpd/html-reporter@4.0.4", "", { "dependencies": { "colors": "1.4.0", "fs-extra": "^11.2.0", "pug": "^3.0.3" } }, "sha512-YiepyeYkeH74Kx59PJRdUdonznct0wHPFkf6FLQN+mCBoy6leAWCcOfHtcexnp+UsBFDlItG5nRdKrDSxSH+Kg=="], + + "@jscpd/tokenizer": ["@jscpd/tokenizer@4.0.4", "", { "dependencies": { "@jscpd/core": "4.0.4", "reprism": "^0.0.11", "spark-md5": "^3.0.2" } }, "sha512-xxYYY/qaLah/FlwogEbGIxx9CjDO+G9E6qawcy26WwrflzJb6wsnhjwdneN6Wb0RNCDsqvzY+bzG453jsin4UQ=="], + + "@manypkg/find-root": ["@manypkg/find-root@1.1.0", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@types/node": "^12.7.1", "find-up": "^4.1.0", "fs-extra": "^8.1.0" } }, "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA=="], + + "@manypkg/get-packages": ["@manypkg/get-packages@1.1.3", "", { "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", "@manypkg/find-root": "^1.1.0", "fs-extra": "^8.1.0", "globby": "^11.0.0", "read-yaml-file": "^1.1.0" } }, "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], + + "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.204.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw=="], + + "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.1.0", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg=="], + + "@opentelemetry/core": ["@opentelemetry/core@2.1.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ=="], + + "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.204.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.204.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g=="], + + "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.51.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-XGmjYwjVRktD4agFnWBWQXo9SiYHKBxR6Ag3MLXwtLE4R99N3a08kGKM5SC1qOFKIELcQDGFEFT9ydXMH00Luw=="], + + "@opentelemetry/instrumentation-connect": ["@opentelemetry/instrumentation-connect@0.48.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-OMjc3SFL4pC16PeK+tDhwP7MRvDPalYCGSvGqUhX5rASkI2H0RuxZHOWElYeXkV0WP+70Gw6JHWac/2Zqwmhdw=="], + + "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/instrumentation-dataloader@0.22.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-bXnTcwtngQsI1CvodFkTemrrRSQjAjZxqHVc+CJZTDnidT0T6wt3jkKhnsjU/Kkkc0lacr6VdRpCu2CUWa0OKw=="], + + "@opentelemetry/instrumentation-express": ["@opentelemetry/instrumentation-express@0.53.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-r/PBafQmFYRjuxLYEHJ3ze1iBnP2GDA1nXOSS6E02KnYNZAVjj6WcDA1MSthtdAUUK0XnotHvvWM8/qz7DMO5A=="], + + "@opentelemetry/instrumentation-fs": ["@opentelemetry/instrumentation-fs@0.24.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-HjIxJ6CBRD770KNVaTdMXIv29Sjz4C1kPCCK5x1Ujpc6SNnLGPqUVyJYZ3LUhhnHAqdbrl83ogVWjCgeT4Q0yw=="], + + "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/instrumentation-generic-pool@0.48.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-TLv/On8pufynNR+pUbpkyvuESVASZZKMlqCm4bBImTpXKTpqXaJJ3o/MUDeMlM91rpen+PEv2SeyOKcHCSlgag=="], + + "@opentelemetry/instrumentation-graphql": ["@opentelemetry/instrumentation-graphql@0.52.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-3fEJ8jOOMwopvldY16KuzHbRhPk8wSsOTSF0v2psmOCGewh6ad+ZbkTx/xyUK9rUdUMWAxRVU0tFpj4Wx1vkPA=="], + + "@opentelemetry/instrumentation-hapi": ["@opentelemetry/instrumentation-hapi@0.51.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-qyf27DaFNL1Qhbo/da+04MSCw982B02FhuOS5/UF+PMhM61CcOiu7fPuXj8TvbqyReQuJFljXE6UirlvoT/62g=="], + + "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.204.0", "", { "dependencies": { "@opentelemetry/core": "2.1.0", "@opentelemetry/instrumentation": "0.204.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw=="], + + "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/instrumentation-ioredis@0.52.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-rUvlyZwI90HRQPYicxpDGhT8setMrlHKokCtBtZgYxQWRF5RBbG4q0pGtbZvd7kyseuHbFpA3I/5z7M8b/5ywg=="], + + "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/instrumentation-kafkajs@0.14.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-kbB5yXS47dTIdO/lfbbXlzhvHFturbux4EpP0+6H78Lk0Bn4QXiZQW7rmZY1xBCY16mNcCb8Yt0mhz85hTnSVA=="], + + "@opentelemetry/instrumentation-knex": ["@opentelemetry/instrumentation-knex@0.49.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.33.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-NKsRRT27fbIYL4Ix+BjjP8h4YveyKc+2gD6DMZbr5R5rUeDqfC8+DTfIt3c3ex3BIc5Vvek4rqHnN7q34ZetLQ=="], + + "@opentelemetry/instrumentation-koa": ["@opentelemetry/instrumentation-koa@0.52.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-JJSBYLDx/mNSy8Ibi/uQixu2rH0bZODJa8/cz04hEhRaiZQoeJ5UrOhO/mS87IdgVsHrnBOsZ6vDu09znupyuA=="], + + "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/instrumentation-lru-memoizer@0.49.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ctXu+O/1HSadAxtjoEg2w307Z5iPyLOMM8IRNwjaKrIpNAthYGSOanChbk1kqY6zU5CrpkPHGdAT6jk8dXiMqw=="], + + "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/instrumentation-mongodb@0.57.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-KD6Rg0KSHWDkik+qjIOWoksi1xqSpix8TSPfquIK1DTmd9OTFb5PHmMkzJe16TAPVEuElUW8gvgP59cacFcrMQ=="], + + "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/instrumentation-mongoose@0.51.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-gwWaAlhhV2By7XcbyU3DOLMvzsgeaymwP/jktDC+/uPkCmgB61zurwqOQdeiRq9KAf22Y2dtE5ZLXxytJRbEVA=="], + + "@opentelemetry/instrumentation-mysql": ["@opentelemetry/instrumentation-mysql@0.50.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.27" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-duKAvMRI3vq6u9JwzIipY9zHfikN20bX05sL7GjDeLKr2qV0LQ4ADtKST7KStdGcQ+MTN5wghWbbVdLgNcB3rA=="], + + "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/instrumentation-mysql2@0.51.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.41.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-zT2Wg22Xn43RyfU3NOUmnFtb5zlDI0fKcijCj9AcK9zuLZ4ModgtLXOyBJSSfO+hsOCZSC1v/Fxwj+nZJFdzLQ=="], + + "@opentelemetry/instrumentation-pg": ["@opentelemetry/instrumentation-pg@0.57.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.34.0", "@opentelemetry/sql-common": "^0.41.0", "@types/pg": "8.15.5", "@types/pg-pool": "2.0.6" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-dWLGE+r5lBgm2A8SaaSYDE3OKJ/kwwy5WLyGyzor8PLhUL9VnJRiY6qhp4njwhnljiLtzeffRtG2Mf/YyWLeTw=="], + + "@opentelemetry/instrumentation-redis": ["@opentelemetry/instrumentation-redis@0.53.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-WUHV8fr+8yo5RmzyU7D5BIE1zwiaNQcTyZPwtxlfr7px6NYYx7IIpSihJK7WA60npWynfxxK1T67RAVF0Gdfjg=="], + + "@opentelemetry/instrumentation-tedious": ["@opentelemetry/instrumentation-tedious@0.23.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-3TMTk/9VtlRonVTaU4tCzbg4YqW+Iq/l5VnN2e5whP6JgEg/PKfrGbqQ+CxQWNLfLaQYIUgEZqAn5gk/inh1uQ=="], + + "@opentelemetry/instrumentation-undici": ["@opentelemetry/instrumentation-undici@0.15.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" } }, "sha512-sNFGA/iCDlVkNjzTzPRcudmI11vT/WAfAguRdZY9IspCw02N4WSC72zTuQhSMheh2a1gdeM9my1imnKRvEEvEg=="], + + "@opentelemetry/redis-common": ["@opentelemetry/redis-common@0.38.0", "", {}, "sha512-4Wc0AWURII2cfXVVoZ6vDqK+s5n4K5IssdrlVrvGsx6OEOKdghKtJZqXAHWFiZv4nTDLH2/2fldjIHY8clMOjQ=="], + + "@opentelemetry/resources": ["@opentelemetry/resources@2.1.0", "", { "dependencies": { "@opentelemetry/core": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw=="], + + "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.1.0", "", { "dependencies": { "@opentelemetry/core": "2.1.0", "@opentelemetry/resources": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ=="], + + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.37.0", "", {}, "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA=="], + + "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.41.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-pmzXctVbEERbqSfiAgdes9Y63xjoOyXcD7B6IXBkVb+vbM7M9U98mn33nGXxPf4dfYR0M+vhcKRZmbSJ7HfqFA=="], + + "@pkgr/core": ["@pkgr/core@0.2.9", "", {}, "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA=="], + + "@prisma/instrumentation": ["@prisma/instrumentation@6.15.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.8" } }, "sha512-6TXaH6OmDkMOQvOxwLZ8XS51hU2v4A3vmE2pSijCIiGRJYyNeMcL6nMHQMyYdZRD8wl7LF3Wzc+AMPMV/9Oo7A=="], + + "@secretlint/config-creator": ["@secretlint/config-creator@11.2.5", "", { "dependencies": { "@secretlint/types": "11.2.5" } }, "sha512-PR+xh8tK2jMlf+ynjBFq7MVBhQR869HtQWZTCSsRSBHoBQBgeoLmEqrgTgCyAt1KT4mtNs7/ReHmKc3K7G62Yg=="], + + "@secretlint/config-loader": ["@secretlint/config-loader@11.2.5", "", { "dependencies": { "@secretlint/profiler": "11.2.5", "@secretlint/resolver": "11.2.5", "@secretlint/types": "11.2.5", "ajv": "^8.17.1", "debug": "^4.4.3", "rc-config-loader": "^4.1.3" } }, "sha512-pUiH5xc3x8RLEDq+0dCz65v4kohtfp68I7qmYPuymTwHodzjyJ089ZbNdN1ZX8SZV4xZLQsFIrRLn1lJ55QyyQ=="], + + "@secretlint/core": ["@secretlint/core@11.2.5", "", { "dependencies": { "@secretlint/profiler": "11.2.5", "@secretlint/types": "11.2.5", "debug": "^4.4.3", "structured-source": "^4.0.0" } }, "sha512-PZNpBd6+KVya2tA3o1oC2kTWYKju8lZG9phXyQY7geWKf+a+fInN4/HSYfCQS495oyTSjhc9qI0mNQEw83PY2Q=="], + + "@secretlint/formatter": ["@secretlint/formatter@11.2.5", "", { "dependencies": { "@secretlint/resolver": "11.2.5", "@secretlint/types": "11.2.5", "@textlint/linter-formatter": "^15.2.2", "@textlint/module-interop": "^15.2.2", "@textlint/types": "^15.2.2", "chalk": "^5.6.2", "debug": "^4.4.3", "pluralize": "^8.0.0", "strip-ansi": "^7.1.2", "table": "^6.9.0", "terminal-link": "^4.0.0" } }, "sha512-9XBMeveo1eKXMC9zLjA6nd2lb5JjUgjj8NUpCo1Il8jO4YJ12k7qXZk3T/QJup+Kh0ThpHO03D9C1xLDIPIEPQ=="], + + "@secretlint/node": ["@secretlint/node@11.2.5", "", { "dependencies": { "@secretlint/config-loader": "11.2.5", "@secretlint/core": "11.2.5", "@secretlint/formatter": "11.2.5", "@secretlint/profiler": "11.2.5", "@secretlint/source-creator": "11.2.5", "@secretlint/types": "11.2.5", "debug": "^4.4.3", "p-map": "^7.0.3" } }, "sha512-nPdtUsTzDzBJzFiKh80/H5+2ZRRogtDuHhnNiGtF7LSHp8YsQHU5piAVbESdV0AmUjbWijAjscIsWqvtU+2JUQ=="], + + "@secretlint/profiler": ["@secretlint/profiler@11.2.5", "", {}, "sha512-evQ2PeO3Ub0apWIPaXJy8lMDO1OFgvgQhZd+MhYLcLHgR559EtJ9V02Sh5c10wTLkLAtJ+czlJg2kmlt0nm8fw=="], + + "@secretlint/resolver": ["@secretlint/resolver@11.2.5", "", {}, "sha512-Zn9+Gj7cRNjEDX8d1NYZNjTG9/Wjlc8N+JvARFYYYu6JxfbtkabhFxzwxBLkRZ2ZCkPCCnuXJwepcgfVXSPsng=="], + + "@secretlint/secretlint-rule-preset-recommend": ["@secretlint/secretlint-rule-preset-recommend@11.2.5", "", {}, "sha512-FAnp/dPdbvHEw50aF9JMPF/OwW58ULvVXEsk+mXTtBD09VJZhG0vFum8WzxMbB98Eo4xDddGzYtE3g27pBOaQA=="], + + "@secretlint/source-creator": ["@secretlint/source-creator@11.2.5", "", { "dependencies": { "@secretlint/types": "11.2.5", "istextorbinary": "^9.5.0" } }, "sha512-+ApoNDS4uIaLb2PG9PPEP9Zu1HDBWpxSd/+Qlb3MzKTwp2BG9sbUhvpGgxuIHFn7pMWQU60DhzYJJUBpbXZEHQ=="], + + "@secretlint/types": ["@secretlint/types@11.2.5", "", {}, "sha512-iA7E+uXuiEydOwv8glEYM4tCHnl8C7wTgLxg+3upHhH/iSSnefWfoRqrJwVBhwxPg4MDoypVI7Oal7bX7/ne+w=="], + + "@sentry-internal/node-cpu-profiler": ["@sentry-internal/node-cpu-profiler@2.2.0", "", { "dependencies": { "detect-libc": "^2.0.3", "node-abi": "^3.73.0" } }, "sha512-oLHVYurqZfADPh5hvmQYS5qx8t0UZzT2u6+/68VXsFruQEOnYJTODKgU3BVLmemRs3WE6kCJjPeFdHVYOQGSzQ=="], + + "@sentry/core": ["@sentry/core@10.15.0", "", {}, "sha512-J7WsQvb9G6nsVgWkTHwyX7wR2djtEACYCx19hAnRbSGIg+ysVG+7Ti3RL4bz9/VXfcxsz346cleKc7ljhynYlQ=="], + + "@sentry/node": ["@sentry/node@10.15.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^2.1.0", "@opentelemetry/core": "^2.1.0", "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/instrumentation-amqplib": "0.51.0", "@opentelemetry/instrumentation-connect": "0.48.0", "@opentelemetry/instrumentation-dataloader": "0.22.0", "@opentelemetry/instrumentation-express": "0.53.0", "@opentelemetry/instrumentation-fs": "0.24.0", "@opentelemetry/instrumentation-generic-pool": "0.48.0", "@opentelemetry/instrumentation-graphql": "0.52.0", "@opentelemetry/instrumentation-hapi": "0.51.0", "@opentelemetry/instrumentation-http": "0.204.0", "@opentelemetry/instrumentation-ioredis": "0.52.0", "@opentelemetry/instrumentation-kafkajs": "0.14.0", "@opentelemetry/instrumentation-knex": "0.49.0", "@opentelemetry/instrumentation-koa": "0.52.0", "@opentelemetry/instrumentation-lru-memoizer": "0.49.0", "@opentelemetry/instrumentation-mongodb": "0.57.0", "@opentelemetry/instrumentation-mongoose": "0.51.0", "@opentelemetry/instrumentation-mysql": "0.50.0", "@opentelemetry/instrumentation-mysql2": "0.51.0", "@opentelemetry/instrumentation-pg": "0.57.0", "@opentelemetry/instrumentation-redis": "0.53.0", "@opentelemetry/instrumentation-tedious": "0.23.0", "@opentelemetry/instrumentation-undici": "0.15.0", "@opentelemetry/resources": "^2.1.0", "@opentelemetry/sdk-trace-base": "^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.15.0", "@sentry/core": "10.15.0", "@sentry/node-core": "10.15.0", "@sentry/opentelemetry": "10.15.0", "import-in-the-middle": "^1.14.2", "minimatch": "^9.0.0" } }, "sha512-5V9BX55DEIscU/S5+AEIQuIMKKbSd+MVo1/x5UkOceBxfiA0KUmgQ0POIpUEZqGCS9rpQ5fEajByRXAQ7bjaWA=="], + + "@sentry/node-core": ["@sentry/node-core@10.15.0", "", { "dependencies": { "@sentry/core": "10.15.0", "@sentry/opentelemetry": "10.15.0", "import-in-the-middle": "^1.14.2" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/instrumentation": ">=0.57.1 <1", "@opentelemetry/resources": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-X6QAHulgfkpONYrXNK2QXfW02ja5FS31sn5DWfCDO8ggHej/u2mrf5nwnUU8vilSwbInHmiMpkUswGEKYDEKTA=="], + + "@sentry/opentelemetry": ["@sentry/opentelemetry@10.15.0", "", { "dependencies": { "@sentry/core": "10.15.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0" } }, "sha512-j+uk3bfxGgsBejwpq78iRZ+aBOKR/fWcJi72MBTboTEK3B4LINO65PyJqwOhcZOJVVAPL6IK1+sWQp4RL24GTg=="], + + "@sentry/profiling-node": ["@sentry/profiling-node@10.15.0", "", { "dependencies": { "@sentry-internal/node-cpu-profiler": "^2.2.0", "@sentry/core": "10.15.0", "@sentry/node": "10.15.0" }, "bin": { "sentry-prune-profiler-binaries": "scripts/prune-profiler-binaries.js" } }, "sha512-W75RnJI8VPJHLmf6TzqcUaJo16/hljzWn1PmTeZnyTNviISQvkzAw1Sk1iTwQt/4FHJEmziFwP1iZOZExfq78A=="], + + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@2.3.0", "", {}, "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg=="], + + "@textlint/ast-node-types": ["@textlint/ast-node-types@15.5.0", "", {}, "sha512-K0LEuuTo4rza8yDrlYkRdXLao8Iz/QBMsQdIxRrOOrLYb4HAtZaypZ78c+J6rDA1UlGxadZVLmkkiv4KV5fMKQ=="], + + "@textlint/linter-formatter": ["@textlint/linter-formatter@15.5.0", "", { "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", "@textlint/module-interop": "15.5.0", "@textlint/resolver": "15.5.0", "@textlint/types": "15.5.0", "chalk": "^4.1.2", "debug": "^4.4.3", "js-yaml": "^4.1.1", "lodash": "^4.17.21", "pluralize": "^2.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "table": "^6.9.0", "text-table": "^0.2.0" } }, "sha512-DPTm2+VXKID41qKQWagg/4JynM6hEEpvbq0PlGsEoC4Xm7IqXIxFym3mSf5+ued0cuiIV1hR9kgXjqGdP035tw=="], + + "@textlint/module-interop": ["@textlint/module-interop@15.5.0", "", {}, "sha512-rqfouEhBEgZlR9umswWXXRBcmmSM28Trpr9b0duzgehKYVc7wSQCuQMagr6YBJa2NRMfRNinupusbJXMg0ij2A=="], + + "@textlint/resolver": ["@textlint/resolver@15.5.0", "", {}, "sha512-kK5nFbg5N3kVoZExQI/dnYjCInmTltvXDnuCRrBxHI01i6kO/o8R7Lc2aFkAZ6/NUZuRPalkyDdwZJke4/R2wg=="], + + "@textlint/types": ["@textlint/types@15.5.0", "", { "dependencies": { "@textlint/ast-node-types": "15.5.0" } }, "sha512-EjAPbuA+3NyQ9WyFP7iUlddi35F3mGrf4tb4cZM0nWywbtEJ3+XAYqL+5RsF0qFeSguxGir09NdZOWrG9wVOUQ=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/mysql": ["@types/mysql@2.15.27", "", { "dependencies": { "@types/node": "*" } }, "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA=="], + + "@types/node": ["@types/node@24.5.2", "", { "dependencies": { "undici-types": "~7.12.0" } }, "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ=="], + + "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="], + + "@types/pg": ["@types/pg@8.15.5", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ=="], + + "@types/pg-pool": ["@types/pg-pool@2.0.6", "", { "dependencies": { "@types/pg": "*" } }, "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ=="], + + "@types/sarif": ["@types/sarif@2.1.7", "", {}, "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ=="], + + "@types/shimmer": ["@types/shimmer@1.2.0", "", {}, "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="], + + "@types/tedious": ["@types/tedious@4.0.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw=="], + + "acorn": ["acorn@8.15.0", "", { "bin": "bin/acorn" }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "agent-commander": ["agent-commander@0.6.1", "", { "bin": { "start-agent": "bin/start-agent.mjs", "stop-agent": "bin/stop-agent.mjs" } }, "sha512-DVW7Y5CRuadOvQCKmwijoMkC2D3+BWwu5gEkThgMWLt0pVwtMT4laOFEeg8O2gYB61boMMKfmW/RwyX13sokwA=="], + + "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], + + "ansi-escapes": ["ansi-escapes@7.2.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], + + "asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="], + + "assert-never": ["assert-never@1.4.0", "", {}, "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA=="], + + "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="], + + "babel-walk": ["babel-walk@3.0.0-canary-5", "", { "dependencies": { "@babel/types": "^7.9.6" } }, "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw=="], + + "badgen": ["badgen@3.2.3", "", {}, "sha512-svDuwkc63E/z0ky3drpUppB83s/nlgDciH9m+STwwQoWyq7yCgew1qEfJ+9axkKdNq7MskByptWUN9j1PGMwFA=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "better-path-resolve": ["better-path-resolve@1.0.0", "", { "dependencies": { "is-windows": "^1.0.0" } }, "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g=="], + + "binaryextensions": ["binaryextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw=="], + + "blamer": ["blamer@1.0.7", "", { "dependencies": { "execa": "^4.0.0", "which": "^2.0.2" } }, "sha512-GbBStl/EVlSWkiJQBZps3H1iARBrC7vt++Jb/TTmCNu/jZ04VW7tSN1nScbFXBUy1AN+jzeL7Zep9sbQxLhXKA=="], + + "boundary": ["boundary@2.0.0", "", {}, "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA=="], + + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "character-parser": ["character-parser@2.2.0", "", { "dependencies": { "is-regex": "^1.0.3" } }, "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw=="], + + "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], + + "ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], + + "cjs-module-lexer": ["cjs-module-lexer@1.4.3", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="], + + "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], + + "cli-table3": ["cli-table3@0.6.5", "", { "dependencies": { "string-width": "^4.2.0" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ=="], + + "cli-truncate": ["cli-truncate@5.1.1", "", { "dependencies": { "slice-ansi": "^7.1.0", "string-width": "^8.0.0" } }, "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], + + "colors": ["colors@1.4.0", "", {}, "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="], + + "commander": ["commander@5.1.0", "", {}, "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="], + + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "constantinople": ["constantinople@4.0.1", "", { "dependencies": { "@babel/parser": "^7.6.0", "@babel/types": "^7.6.1" } }, "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "dayjs": ["dayjs@1.11.19", "", {}, "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], + + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "detect-indent": ["detect-indent@6.1.0", "", {}, "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA=="], + + "detect-libc": ["detect-libc@2.1.0", "", {}, "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg=="], + + "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + + "doctypes": ["doctypes@1.1.0", "", {}, "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "editions": ["editions@6.22.0", "", { "dependencies": { "version-range": "^4.15.0" } }, "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ=="], + + "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + + "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], + + "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "eslint": ["eslint@9.35.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.35.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": "bin/eslint.js" }, "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg=="], + + "eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": "bin/cli.js" }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="], + + "eslint-plugin-prettier": ["eslint-plugin-prettier@5.5.4", "", { "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.11.7" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "optionalPeers": ["@types/eslint"] }, "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg=="], + + "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], + + "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], + + "execa": ["execa@4.1.0", "", { "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", "human-signals": "^1.1.1", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.0", "onetime": "^5.1.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" } }, "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA=="], + + "extendable-error": ["extendable-error@0.1.7", "", {}, "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-diff": ["fast-diff@1.3.0", "", {}, "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], + + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + + "forwarded-parse": ["forwarded-parse@2.1.2", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="], + + "fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + + "getenv": ["getenv@2.0.0", "", {}, "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ=="], + + "gitignore-to-glob": ["gitignore-to-glob@0.3.0", "", {}, "sha512-mk74BdnK7lIwDHnotHddx1wsjMOFIThpLY3cPNniJ/2fA/tlLzHnFxIdR+4sLOu5KGgQJdij4kjJ2RoUNnCNMA=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], + + "globby": ["globby@14.1.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.3", "ignore": "^7.0.3", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hosted-git-info": ["hosted-git-info@7.0.2", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w=="], + + "human-id": ["human-id@4.1.3", "", { "bin": "dist/cli.js" }, "sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q=="], + + "human-signals": ["human-signals@1.1.1", "", {}, "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="], + + "husky": ["husky@9.1.7", "", { "bin": "bin.js" }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], + + "iconv-lite": ["iconv-lite@0.7.1", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw=="], + + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "import-in-the-middle": ["import-in-the-middle@1.14.2", "", { "dependencies": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } }, "sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw=="], + + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "index-to-position": ["index-to-position@1.2.0", "", {}, "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-expression": ["is-expression@4.0.0", "", { "dependencies": { "acorn": "^7.1.1", "object-assign": "^4.1.1" } }, "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-promise": ["is-promise@2.2.2", "", {}, "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="], + + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], + + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "is-subdir": ["is-subdir@1.2.0", "", { "dependencies": { "better-path-resolve": "1.0.0" } }, "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw=="], + + "is-windows": ["is-windows@1.0.2", "", {}, "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "istextorbinary": ["istextorbinary@9.5.0", "", { "dependencies": { "binaryextensions": "^6.11.0", "editions": "^6.21.0", "textextensions": "^6.11.0" } }, "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw=="], + + "js-stringify": ["js-stringify@1.0.2", "", {}, "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": "bin/js-yaml.js" }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + + "jscpd": ["jscpd@4.0.8", "", { "dependencies": { "@jscpd/badge-reporter": "4.0.4", "@jscpd/core": "4.0.4", "@jscpd/finder": "4.0.4", "@jscpd/html-reporter": "4.0.4", "@jscpd/tokenizer": "4.0.4", "colors": "^1.4.0", "commander": "^5.0.0", "fs-extra": "^11.2.0", "gitignore-to-glob": "^0.3.0", "jscpd-sarif-reporter": "4.0.6" }, "bin": "bin/jscpd" }, "sha512-d2VNT/2Hv4dxT2/59He8Lyda4DYOxPRyRG9zBaOpTZAqJCVf2xLrBlZkT8Va6Lo9u3X2qz8Bpq4HrDi4JsrQhA=="], + + "jscpd-sarif-reporter": ["jscpd-sarif-reporter@4.0.6", "", { "dependencies": { "colors": "^1.4.0", "fs-extra": "^11.2.0", "node-sarif-builder": "^3.4.0" } }, "sha512-b9Sm3IPZ3+m8Lwa4gZa+4/LhDhlc/ZLEsLXKSOy1DANQ6kx0ueqZT+fUHWEdQ6m0o3+RIVIa7DmvLSojQD05ng=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "json5": ["json5@2.2.3", "", { "bin": "lib/cli.js" }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], + + "jstransformer": ["jstransformer@1.0.0", "", { "dependencies": { "is-promise": "^2.0.0", "promise": "^7.0.1" } }, "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "links-notation": ["links-notation@0.11.2", "", {}, "sha512-VPyELWBXpaCCiNPVeZhMbG7RuvOQR51nhqELK+s/rbSzKYhSs+tyiSOdQ7z8I7Kh3PLABF3bZETtWSFwx3vFfg=="], + + "lino-arguments": ["lino-arguments@0.3.0", "", { "dependencies": { "getenv": "^2.0.0", "links-notation": "^0.11.2", "lino-env": "^0.2.6", "yargs": "^17.7.2" }, "peerDependencies": { "@dotenvx/dotenvx": "^1.0.0" }, "optionalPeers": ["@dotenvx/dotenvx"] }, "sha512-46RbNaq0kpDxjyzBqhiCjPypHy9tuL0ITC9LgEolFH65PKtwl0/kRxryleG+5HnqS1JLnUUypZ2GoHWhLWH/PQ=="], + + "lino-env": ["lino-env@0.2.8", "", { "dependencies": { "links-notation": "^0.11.2" } }, "sha512-j9JcPo8LWCSlWCO7B1SSL3OlpRc/bGaR/OYnH22DTiANaMaLWan7ebRIo2Pwaw/apcIzdV+UD5EXamdapbn6kA=="], + + "lino-i18n": ["lino-i18n@0.1.1", "", { "dependencies": { "links-notation": "^0.13.0", "lino-arguments": "^0.3.0", "lino-objects-codec": "^0.4.0" }, "bin": "bin/lino-i18n.js" }, "sha512-sVLcGOP8Qh4EyxCc92sONJGthdT8anrFBV++ziGRzzJjmpzJMEZeH9ENlc52JJ3gTdu1TWsp4yMzlB/DDKsvIQ=="], + + "lino-objects-codec": ["lino-objects-codec@0.3.6", "", { "dependencies": { "links-notation": "^0.11.0" } }, "sha512-6OUHLUf2XAvz3C4neg9/oyB5DK+EXCJsUEbU81gvA34uOJuHFX/Fh47bLLhwbkIQF/7IVsKjQeZIEBUjScz8uw=="], + + "lint-staged": ["lint-staged@16.2.7", "", { "dependencies": { "commander": "^14.0.2", "listr2": "^9.0.5", "micromatch": "^4.0.8", "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": "bin/lint-staged.js" }, "sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow=="], + + "listr2": ["listr2@9.0.5", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + + "lodash.startcase": ["lodash.startcase@4.4.0", "", {}, "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg=="], + + "lodash.truncate": ["lodash.truncate@4.4.2", "", {}, "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="], + + "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], + + "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "markdown-table": ["markdown-table@2.0.0", "", { "dependencies": { "repeat-string": "^1.0.0" } }, "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], + + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + + "module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="], + + "mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nano-spawn": ["nano-spawn@2.0.0", "", {}, "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw=="], + + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "node-abi": ["node-abi@3.77.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ=="], + + "node-sarif-builder": ["node-sarif-builder@3.4.0", "", { "dependencies": { "@types/sarif": "^2.1.7", "fs-extra": "^11.1.1" } }, "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg=="], + + "normalize-package-data": ["normalize-package-data@6.0.2", "", { "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } }, "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g=="], + + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "outdent": ["outdent@0.5.0", "", {}, "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q=="], + + "p-filter": ["p-filter@2.1.0", "", { "dependencies": { "p-map": "^2.0.0" } }, "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw=="], + + "p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "p-map": ["p-map@7.0.4", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="], + + "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], + + "package-manager-detector": ["package-manager-detector@0.2.11", "", { "dependencies": { "quansync": "^0.2.7" } }, "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ=="], + + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-json": ["parse-json@8.3.0", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "index-to-position": "^1.1.0", "type-fest": "^4.39.1" } }, "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="], + + "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], + + "pg-protocol": ["pg-protocol@1.10.3", "", {}, "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ=="], + + "pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "pidtree": ["pidtree@0.6.0", "", { "bin": "bin/pidtree.js" }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], + + "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], + + "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="], + + "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], + + "postgres-bytea": ["postgres-bytea@1.0.0", "", {}, "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w=="], + + "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], + + "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], + + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "prettier": ["prettier@3.7.4", "", { "bin": "bin/prettier.cjs" }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="], + + "prettier-linter-helpers": ["prettier-linter-helpers@1.0.0", "", { "dependencies": { "fast-diff": "^1.1.2" } }, "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w=="], + + "promise": ["promise@7.3.1", "", { "dependencies": { "asap": "~2.0.3" } }, "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="], + + "pug": ["pug@3.0.3", "", { "dependencies": { "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", "pug-load": "^3.0.0", "pug-parser": "^6.0.0", "pug-runtime": "^3.0.1", "pug-strip-comments": "^2.0.0" } }, "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g=="], + + "pug-attrs": ["pug-attrs@3.0.0", "", { "dependencies": { "constantinople": "^4.0.1", "js-stringify": "^1.0.2", "pug-runtime": "^3.0.0" } }, "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA=="], + + "pug-code-gen": ["pug-code-gen@3.0.3", "", { "dependencies": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", "pug-error": "^2.1.0", "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw=="], + + "pug-error": ["pug-error@2.1.0", "", {}, "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg=="], + + "pug-filters": ["pug-filters@4.0.0", "", { "dependencies": { "constantinople": "^4.0.1", "jstransformer": "1.0.0", "pug-error": "^2.0.0", "pug-walk": "^2.0.0", "resolve": "^1.15.1" } }, "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A=="], + + "pug-lexer": ["pug-lexer@5.0.1", "", { "dependencies": { "character-parser": "^2.2.0", "is-expression": "^4.0.0", "pug-error": "^2.0.0" } }, "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w=="], + + "pug-linker": ["pug-linker@4.0.0", "", { "dependencies": { "pug-error": "^2.0.0", "pug-walk": "^2.0.0" } }, "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw=="], + + "pug-load": ["pug-load@3.0.0", "", { "dependencies": { "object-assign": "^4.1.1", "pug-walk": "^2.0.0" } }, "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ=="], + + "pug-parser": ["pug-parser@6.0.0", "", { "dependencies": { "pug-error": "^2.0.0", "token-stream": "1.0.0" } }, "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw=="], + + "pug-runtime": ["pug-runtime@3.0.1", "", {}, "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="], + + "pug-strip-comments": ["pug-strip-comments@2.0.0", "", { "dependencies": { "pug-error": "^2.0.0" } }, "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ=="], + + "pug-walk": ["pug-walk@2.0.0", "", {}, "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="], + + "pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "rc-config-loader": ["rc-config-loader@4.1.3", "", { "dependencies": { "debug": "^4.3.4", "js-yaml": "^4.1.0", "json5": "^2.2.2", "require-from-string": "^2.0.2" } }, "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w=="], + + "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="], + + "read-yaml-file": ["read-yaml-file@1.1.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA=="], + + "repeat-string": ["repeat-string@1.6.1", "", {}, "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w=="], + + "reprism": ["reprism@0.0.11", "", {}, "sha512-VsxDR5QxZo08M/3nRypNlScw5r3rKeSOPdU/QhDmu3Ai3BJxHn/qgfXGWQp/tAxUtzwYNo9W6997JZR0tPLZsA=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + + "require-in-the-middle": ["require-in-the-middle@7.5.2", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", "resolve": "^1.22.8" } }, "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ=="], + + "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": "bin/resolve" }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], + + "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "secretlint": ["secretlint@11.2.5", "", { "dependencies": { "@secretlint/config-creator": "11.2.5", "@secretlint/formatter": "11.2.5", "@secretlint/node": "11.2.5", "@secretlint/profiler": "11.2.5", "@secretlint/resolver": "11.2.5", "debug": "^4.4.3", "globby": "^14.1.0", "read-pkg": "^9.0.1" }, "bin": "bin/secretlint.js" }, "sha512-Vumt2+t2QXPYb5Yu3OLXMTq7drshE3fbzGGzUn//S9fMEl9sp053O0C3lhTIOsWeJJegy06xxIKP5s0QSmsEtA=="], + + "semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "shimmer": ["shimmer@1.2.1", "", {}, "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], + + "slice-ansi": ["slice-ansi@7.1.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w=="], + + "spark-md5": ["spark-md5@3.0.2", "", {}, "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw=="], + + "spawndamnit": ["spawndamnit@3.0.1", "", { "dependencies": { "cross-spawn": "^7.0.5", "signal-exit": "^4.0.1" } }, "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg=="], + + "spdx-correct": ["spdx-correct@3.2.0", "", { "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="], + + "spdx-exceptions": ["spdx-exceptions@2.5.0", "", {}, "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="], + + "spdx-expression-parse": ["spdx-expression-parse@3.0.1", "", { "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="], + + "spdx-license-ids": ["spdx-license-ids@3.0.22", "", {}, "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ=="], + + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], + + "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], + + "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "structured-source": ["structured-source@4.0.0", "", { "dependencies": { "boundary": "^2.0.0" } }, "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "supports-hyperlinks": ["supports-hyperlinks@3.2.0", "", { "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" } }, "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "synckit": ["synckit@0.11.11", "", { "dependencies": { "@pkgr/core": "^0.2.9" } }, "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw=="], + + "table": ["table@6.9.0", "", { "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1" } }, "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A=="], + + "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="], + + "terminal-link": ["terminal-link@4.0.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "supports-hyperlinks": "^3.2.0" } }, "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA=="], + + "test-anywhere": ["test-anywhere@0.9.1", "", { "bin": "bin/test-anywhere.js" }, "sha512-sx5hEF2NqFE3VnFK0LMoVlaV/kHO5q2Tu1fHQOXH1ZTu3XRLgQBSoH+cuAODjSvz1LZNlhxfbI/lZRUP7Dfckg=="], + + "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], + + "textextensions": ["textextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ=="], + + "tinyld": ["tinyld@1.3.4", "", { "bin": { "tinyld": "bin/tinyld.js", "tinyld-heavy": "bin/tinyld-heavy.js", "tinyld-light": "bin/tinyld-light.js" } }, "sha512-u26CNoaInA4XpDU+8s/6Cq8xHc2T5M4fXB3ICfXPokUQoLzmPgSZU02TAkFwFMJCWTjk53gtkS8pETTreZwCqw=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "token-stream": ["token-stream@1.0.0", "", {}, "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="], + + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + + "undici-types": ["undici-types@7.12.0", "", {}, "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ=="], + + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], + + "universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="], + + "version-range": ["version-range@4.15.0", "", {}, "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg=="], + + "void-elements": ["void-elements@3.1.0", "", {}, "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "with": ["with@7.0.2", "", { "dependencies": { "@babel/parser": "^7.9.6", "@babel/types": "^7.9.6", "assert-never": "^1.2.1", "babel-walk": "3.0.0-canary-5" } }, "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w=="], + + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yaml": ["yaml@2.8.2", "", { "bin": "bin.mjs" }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], + + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "@changesets/apply-release-plan/prettier": ["prettier@2.8.8", "", { "bin": "bin-prettier.js" }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + + "@changesets/apply-release-plan/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@changesets/write/prettier": ["prettier@2.8.8", "", { "bin": "bin-prettier.js" }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], + + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "@jscpd/badge-reporter/fs-extra": ["fs-extra@11.3.3", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="], + + "@jscpd/finder/fs-extra": ["fs-extra@11.3.3", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="], + + "@jscpd/html-reporter/fs-extra": ["fs-extra@11.3.3", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="], + + "@manypkg/find-root/@types/node": ["@types/node@12.20.55", "", {}, "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ=="], + + "@manypkg/find-root/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + + "@manypkg/find-root/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + + "@manypkg/get-packages/@changesets/types": ["@changesets/types@4.1.0", "", {}, "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw=="], + + "@manypkg/get-packages/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + + "@manypkg/get-packages/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + + "@prisma/instrumentation/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg=="], + + "@secretlint/config-loader/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + + "@secretlint/formatter/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + + "@secretlint/formatter/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "@sentry/node/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "@textlint/linter-formatter/pluralize": ["pluralize@2.0.0", "", {}, "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw=="], + + "@textlint/linter-formatter/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "cli-table3/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "cli-truncate/string-width": ["string-width@8.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.0", "strip-ansi": "^7.1.0" } }, "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg=="], + + "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "dir-glob/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + + "execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "globby/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "is-expression/acorn": ["acorn@7.4.1", "", { "bin": "bin/acorn" }, "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="], + + "jscpd/fs-extra": ["fs-extra@11.3.3", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="], + + "jscpd-sarif-reporter/fs-extra": ["fs-extra@11.3.3", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="], + + "lino-i18n/links-notation": ["links-notation@0.13.0", "", {}, "sha512-52FoUAVOhjfC23bdvrxv6b4Eosp02WeM3qTN9Rsb3ouPof5YVQ5fOMlRPMJmKMmdseVzEnewNLFq3lADRpWTFg=="], + + "lino-i18n/lino-objects-codec": ["lino-objects-codec@0.4.0", "", { "dependencies": { "links-notation": "^0.11.0" } }, "sha512-LFSI8rrjyVp8raEsaoFNxnY9oS2SCz0UTYbeZXms+iHF1hGWuLk57kcKCk4KXnFf+/Z7kKz52oYYtII6JrpbBQ=="], + + "lint-staged/commander": ["commander@14.0.2", "", {}, "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ=="], + + "log-update/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "node-sarif-builder/fs-extra": ["fs-extra@11.3.3", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg=="], + + "p-filter/p-map": ["p-map@2.1.0", "", {}, "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="], + + "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "read-pkg/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="], + + "read-yaml-file/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": "bin/js-yaml.js" }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + + "restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], + + "slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], + + "table/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + + "table/slice-ansi": ["slice-ansi@4.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ=="], + + "table/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + + "wrap-ansi/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "@jscpd/badge-reporter/fs-extra/jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "@jscpd/badge-reporter/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "@jscpd/finder/fs-extra/jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "@jscpd/finder/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "@jscpd/html-reporter/fs-extra/jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "@jscpd/html-reporter/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "@manypkg/find-root/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + + "@manypkg/get-packages/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + + "@prisma/instrumentation/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A=="], + + "@secretlint/config-loader/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "@secretlint/formatter/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "@sentry/node/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + + "@textlint/linter-formatter/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "@textlint/linter-formatter/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "cli-table3/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "cli-table3/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "cli-truncate/string-width/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], + + "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "cliui/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "jscpd-sarif-reporter/fs-extra/jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "jscpd-sarif-reporter/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "jscpd/fs-extra/jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "jscpd/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "lino-i18n/lino-objects-codec/links-notation": ["links-notation@0.11.2", "", {}, "sha512-VPyELWBXpaCCiNPVeZhMbG7RuvOQR51nhqELK+s/rbSzKYhSs+tyiSOdQ7z8I7Kh3PLABF3bZETtWSFwx3vFfg=="], + + "log-update/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "node-sarif-builder/fs-extra/jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + + "node-sarif-builder/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "read-yaml-file/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "table/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "table/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "table/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "table/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "@manypkg/find-root/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + + "cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "@manypkg/find-root/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + } +} diff --git a/coolify/Dockerfile b/coolify/Dockerfile index e612a1dfc..a3d6cd13c 100644 --- a/coolify/Dockerfile +++ b/coolify/Dockerfile @@ -18,7 +18,7 @@ # # Build: docker build -f coolify/Dockerfile -t konard/hive-mind . -FROM konard/box:2.3.2 +FROM konard/box:2.3.5 ARG HIVE_MIND_VERSION=latest # Release builds pass the exact published package version here. Bake it as the # default child isolation image tag so a parent started via :latest still runs diff --git a/docs/case-studies/issue-1946/README.md b/docs/case-studies/issue-1946/README.md new file mode 100644 index 000000000..abf7cbcbb --- /dev/null +++ b/docs/case-studies/issue-1946/README.md @@ -0,0 +1,321 @@ +# Issue 1946 Case Study: `--isolation docker` Issues (async / session visibility / image-prep logs / passthrough) + +## Summary + +Issue [#1946](https://github.com/link-assistant/hive-mind/issues/1946) is the +next iteration of the `--isolation docker` work that began in +[#1860](https://github.com/link-assistant/hive-mind/issues/1860), +[#1914](https://github.com/link-assistant/hive-mind/issues/1914) and +[#1939](https://github.com/link-assistant/hive-mind/issues/1939). An operator +ran `/solve … --isolation docker` from the Telegram bot (host +`konard/hive-mind-dind:2.0.6`). The previously-reported premature-status bug was +gone β€” `$ --list`/`$ --status` correctly reported `status executing` with the +session ids visible β€” but **five** distinct problems remained: + +1. **No early session id / isolation in the bot message (and the bot felt + "blocked").** While the container was starting, the Telegram message stayed an + info-less `πŸ”„ Starting...`. The session UUID and `Isolation: docker` only + appeared once the launch returned, so for the whole startup window the run was + not addressable by `/watch`, `/log` or `/status`, and the operator had to fall + back to `$ --list` to discover the id. (Screenshots: `raw/img1-initial.png` + has no session info; `raw/img2-uuid-isolation.png` finally shows it; it "took a + long time to get there".) +2. **The image-preparation phase is missing from the session log.** Seven + minutes into the run, `$ --upload-log` produced a **546-byte** log β€” only the + header. The multi-GB `docker pull` / image-load output that the run was busy + with was nowhere in the session log file. This is the exact gap flagged + previously in [#1939](https://github.com/link-assistant/hive-mind/issues/1939). +3. **`$` does not preserve the full log of "preparing image + execution" in one + file.** The reason the `$` wrapper exists at all is the guarantee that _every_ + step that ran is captured; the image-prep phase breaks that guarantee + (a superset of problem 2). +4. **The host image is re-downloaded inside DinD (~30 GB, ~1 hour).** The nested + Docker daemon started with an empty image store and re-pulled + `konard/hive-mind-dind:2.0.6` instead of reusing the copy the host already had + β€” the host-image passthrough gap from + [#1914](https://github.com/link-assistant/hive-mind/issues/1914) / + [link-foundation/box#94](https://github.com/link-foundation/box/issues/94). +5. **It eventually worked** (`raw/img3-worked.png`: `βœ… Work session finished +successfully`, duration 54m 49s) β€” but only after spending an hour and ~30 GB + re-downloading an image the host already had. + +This study reconstructs the timeline from the captured terminal transcript and +the three screenshots, enumerates every requirement, pins each problem to log +evidence, records the downstream fix applied in this repository (problems 1 & the +diagnostics for 2), and the upstream follow-ups for `$` (link-foundation/start β€” +problems 2/3) and `box` (link-foundation/box β€” problem 4). + +## Evidence Collected + +All raw evidence lives under [`raw/`](./raw): + +| File | What it is | +| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| `issue-1946.json` | Issue body, labels, metadata (`gh issue view --json`). | +| `issue-1946-body.md` | Issue body as Markdown, including the full terminal transcript. | +| `issue-comments.json` | Issue comments (empty at capture time). | +| `pr-1948.json` | The pull request that carries this fix. | +| `failed-session-terminal.log` | **Primary evidence.** The operator transcript: `$ --list`, `$ --status`, `$ --upload-log` (546 B), `$ --version`, and the `cat` of the session log. | +| `img1-initial.png` | Telegram message during startup: `⏳ Starting...` with **no** session id / isolation. | +| `img2-uuid-isolation.png` | Telegram message later: `⏳ Executing...` finally showing `Session:` + `Isolation: docker`. | +| `img3-worked.png` | Final message: `βœ… Work session finished successfully`, duration `54m 49s`. | +| `start-command-npm.json` | npm metadata for `start-command` (latest `0.29.1`). | +| `start-command-repo.json` | start-command (link-foundation/start) repo metadata (for the upstream report). | +| `box-repo.json` | box (link-foundation/box) repo metadata (for the upstream report). | + +## Timeline + +Reconstructed from `raw/failed-session-terminal.log` and the screenshots (UTC). + +| Time | Event | Evidence | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | +| `05:36:11.618Z` | `$` launches the detached docker session (execution `08ec853a…`, container/session `9ea2993a…`, image `konard/hive-mind-dind:2.0.6`). | log `startTime` (lines 13, 38) | +| (startup) | Telegram message shows `⏳ Starting...` with **no** session id / isolation β€” the run is not yet addressable by `/watch`/`/log`/`/status`. | `raw/img1-initial.png` | +| `05:43:25.701Z` | `$ --list`: `status executing`, both ids present. The #1939 premature `executed/-1` bug does **not** recur. | log lines 1–28 | +| `05:43:41.496Z` | `$ --status 08ec853a…`: still `executing`. | log lines 29–53 | +| `~05:43:??Z` | `$ --upload-log 08ec853a…`: **546 B** uploaded β€” ~7 min in, the session log holds only the header; the image pull is **not** logged. | log lines 54–60 | +| `05:44:24.362Z` | Inside the container, `solve` finally writes its own log (`solve-2026-06-19T05-44-24-362Z.log`) β€” i.e. the image pull/dind-boot took until here before `solve` even began. | log (session-log `cat`) | +| (later) | Telegram message advances to `⏳ Executing...` and finally shows `Session: 9ea2993a…` + `Isolation: docker` β€” but "it took a long time to get there". | `raw/img2-uuid-isolation.png` | +| `+54m 49s` | `βœ… Work session finished successfully` β€” after ~1 hour and a full ~30 GB re-download. | `raw/img3-worked.png` | +| `2026-06-19` | Issue #1946 opened by `konard`. | `issue-1946.json` `createdAt` | + +The **546-byte log seven minutes in** (lines 54–60) is the smoking gun for +problems 2 & 3: while the run was busy pulling a multi-GB image, the session log +captured nothing but its own header. The screenshots are the evidence for +problem 1: `img1` (no session info) β†’ `img2` (session info, late). + +## Requirements From The Issue + +**Bug-fix requirements** + +- **R1 β€” Async / non-blocking + early session visibility.** Launching + `--isolation docker` must not leave the bot message info-less and the session + unaddressable while the container starts. Surface the session id + isolation + immediately and do not block other commands. +- **R2 β€” Show session id + isolation like `--isolation screen`.** `/watch`, + `/log`, `/status` need the UUID; it must be in the message from the start, not + only after the launch finishes. +- **R3 β€” Image-download logs in the session log** (continuation of #1939): the + `docker pull` / image-preparation output must be captured in the session log. +- **R4 β€” Host-image passthrough** so the multi-GB `konard/hive-mind-dind` image + is reused inside DinD instead of re-downloaded. +- **R5 β€” `$` must preserve the full log of "preparing image + execution" in one + file** β€” the wrapper's core guarantee. +- **R6 β€” Apply fixes across the entire codebase**, not just one call site. + +**Meta / process requirements** + +- **R7** β€” Download all logs/data into `./docs/case-studies/issue-1946/` and + produce this deep analysis (timeline, requirements, root causes, solution + plans), searching online and checking existing components/libraries. +- **R8** β€” If data is insufficient for a root cause, add debug/verbose output for + the next iteration. +- **R9** β€” File issues on implicated upstream repos (link-foundation/start, + link-foundation/box) with a reproducer, a workaround, and a code-level fix + suggestion. +- **R10** β€” Execute everything in the single PR #1948 on branch + `issue-1946-94305ac66541`. + +## Root Causes + +### Root Cause 1 (Problems 1 & 2, definite, fixed here): the bot surfaced the UUID and tracked the session only _after_ the blocking launch returned + +The Telegram bot generates the isolation session UUID **locally**, before +start-command launches anything (`buildExecuteAndUpdateMessage` in +`src/telegram-command-execution.lib.mjs`). But in the old flow the UUID was +generated, then `await iso.runner.executeWithIsolation(...)` ran to completion, +and **only on success** were `trackSession()` and the +`formatExecutingWorkSessionMessage()` edit (which contains the `Session:` and +`Isolation:` lines) performed: + +```js +session = iso.runner.generateSessionId(); +result = await iso.runner.executeWithIsolation(...); // <-- blocks for the whole image pull +if (result.success) { + sessionInfo = { ...baseSessionInfo, isolationBackend: iso.backend, sessionId: session }; + trackSession(session, sessionInfo, VERBOSE); // <-- only now is it addressable +} +// ... +await safeEdit(formatExecutingWorkSessionMessage({ sessionName: session, ... })); // <-- only now is it shown +``` + +Because start-command's detached docker backend does not return until the image +is pulled and the container is running, `executeWithIsolation` blocked for the +entire ~1-hour pull. During that window: + +- the message stayed `πŸ”„ Starting...` with no session info (`img1`), and +- the session was **not tracked**, so `/watch`, `/log` and `/status` could not + find it β€” the operator had to use `$ --list` to recover the id. + +This is why `--isolation screen` "felt fine" but docker did not: screen launches +in milliseconds, so the post-launch edit appears instantly; docker's hour-long +pull made the same post-launch timing pathological. The session id was _known the +whole time_ β€” it just wasn't shown or tracked until the launch returned. + +> Note on "blocked execution": the bot uses Telegraf with +> `handlerTimeout: Infinity` and dispatches each update independently, and the +> launch is async I/O (`spawn` + awaited promise), so the Node event loop is not +> hard-blocked. The operator's "other commands are not working" symptom was the +> session being unaddressable plus the static message β€” both fixed by surfacing +> and tracking the session up front. + +### Root Cause 2 (Problems 2, 3 & 5, upstream `$`): the image-prep phase is not written to the session log file + +start-command owns the session log file (`/tmp/start-command/logs/isolation/ +docker/.log`). For the detached docker backend it writes a header, then +captures the container's output once the container is running. The +**image-preparation phase** β€” `docker pull` of `konard/hive-mind-dind:2.0.6` and +the dind daemon boot β€” happens _before_ the container's command stream is +attached, and its output is not appended to the session log. The 546-byte log at +the 7-minute mark (lines 54–60) is direct proof: the pull produced nothing in the +file. Hive Mind's own `runStartCommand()` does capture the `$` process's +stdout/stderr in memory, but it is a detached launch that returns once the +session is registered, and that buffer is not the persisted session log either. + +The `$` wrapper's entire reason for existing is the guarantee that _everything +that ran is in one log file_ (problem 5). The fix has to live in start-command: +the detached docker session log must stream the image-preparation phase from the +first byte. This is the precise, file-level continuation of #1939's problem 2 and +relates to the (closed) [link-foundation/start#89](https://github.com/link-foundation/start/issues/89) +("better output for the virtual docker pull command") and +[#103](https://github.com/link-foundation/start/issues/103) ("Log is not being +recorded in real time"). + +### Root Cause 3 (Problem 4, deployment/upstream `box`): the nested daemon starts with an empty image store + +Inside DinD the nested daemon begins with no images, so an image that is neither +preloaded nor passed through from the host is pulled on demand β€” ~30 GB for the +dind variant. This is the host-image passthrough gap diagnosed in #1914 and in +[link-foundation/box#94](https://github.com/link-foundation/box/issues/94) / +[#102](https://github.com/link-foundation/box/issues/102) (passthrough silently +no-ops when `DIND_HOST_PASSTHROUGH_IMAGES` is set but no host docker socket is +mounted). Hive Mind already detects and warns about this in +`preflightDockerIsolation` (`src/isolation-runner.lib.mjs`) and logs a +post-launch image-presence diagnostic (`logDockerIsolationPostLaunchDiagnostics`, +verbose). The actual passthrough must be wired up in the deployment / box. The +silent-no-op half was **fixed in `box-dind` 2.3.4** (link-foundation/box#106): the +dind entrypoint now verifies each concrete passthrough allowlist entry actually +seeded the nested daemon and reports `finished WITH WARNINGS` instead of a +misleading `complete`. `Dockerfile.dind` now bases on `konard/box-dind:2.3.5`. + +## Online And Source Facts + +- At capture time `start-command` latest published version was `0.29.1` + (`raw/start-command-npm.json`); this is the release that fixed the #1939 + premature-status bug, and the #1946 transcript confirms that fix held + (`status executing`, both ids present β€” no `executed/-1`). The image-prep + logging gap (R3/R5) was a separate behaviour, **since fixed in `0.29.2`** + (link-foundation/start#138) and now pinned by this repo's images. +- The transcript's `$ --version` block shows `start-command version: 0.29.1`, + `tmux: not installed`, `docker: 29.5.3` β€” i.e. the run used the fixed `$` + (the image-prep logging fix landed one patch later, in `0.29.2`). +- `docker run` uses Docker's default "missing" pull policy, so a host image + seeded into the nested daemon (box passthrough) is reused, not re-pulled β€” no + `--pull` plumbing is required on the Hive Mind side (issue #1879). The + re-download is therefore a passthrough/deployment gap, not a Hive Mind pull + flag. + +## Solution Applied (this repository) + +All changes are in PR #1948 on branch `issue-1946-94305ac66541`. + +### Surface the session id + isolation immediately, and track the session up front (R1, R2, R6) + +`src/work-session-formatting.lib.mjs` β€” `formatStartingWorkSessionMessage()` now +optionally takes `sessionName` + `isolationBackend` and renders the `Session:` / +`πŸ”’ Isolation:` lines on the `πŸ”„ Starting...` message (backward compatible: with +no `sessionName` it renders exactly as before). + +`src/telegram-command-execution.lib.mjs` β€” `buildExecuteAndUpdateMessage()` now, +for isolation backends: + +1. generates the UUID (unchanged), +2. **immediately** builds `sessionInfo`, calls `trackSession()`, and edits the + message to the session-aware `Starting...` form β€” _before_ the launch, so the + run is addressable by `/watch`/`/log`/`/status` for the whole startup window, +3. awaits `executeWithIsolation` (start-command runs the container detached, so + this does not block other bot commands), and +4. on launch failure calls the new `untrackSession()` and clears `sessionInfo` + so a phantom session is never monitored or resumed. + +`src/session-monitor.lib.mjs` β€” new exported `untrackSession(sessionName)` drops +an optimistically-tracked session from both the in-memory map and the durable +store without emitting a `session_completed` audit event (the session never ran, +so it has no exit code). Wired into `src/telegram-bot.mjs`'s dependency object. + +Because the fix lives in the single shared `buildExecuteAndUpdateMessage`, every +caller β€” `/solve`, `/hive`, and `/task` (which all route through it) β€” inherits +it (R6). + +### Diagnostics for the image-prep / passthrough gaps (R8) + +The existing verbose diagnostics from #1939 are retained: +`preflightDockerIsolation` warns when the dind image is absent and the host +socket is not mounted, and `logDockerIsolationPostLaunchDiagnostics` logs +`$ --status`, container-running state and image-presence right after launch β€” so +the next iteration can confirm R3/R4 from data. + +## Upstream Follow-ups (R9) + +Both upstream issues were filed, fixed, and released β€” this PR pins the fixed +versions in `Dockerfile` / `Dockerfile.dind`: + +- **link-foundation/start [#138](https://github.com/link-foundation/start/issues/138)** + (βœ… **fixed** in [start PR #139](https://github.com/link-foundation/start/pull/139), + released as **`start-command@0.29.2`**) β€” the detached docker session log must + capture the image-preparation phase (`docker pull` / dind boot) from the first + byte so the `$` "one complete log" guarantee holds (problems 2/3/5). Reproducer: + the 546-byte `$ --upload-log` at the 7-minute mark; workaround: read the host + `docker logs ` separately; fix: tee the pull/prepare stage into the + session log before attaching the container command stream. **Hive Mind now pins + `start-command@0.29.2`** (was `0.29.1`). +- **link-foundation/box [#106](https://github.com/link-foundation/box/issues/106)** + (βœ… **fixed** in [box PR #107](https://github.com/link-foundation/box/pull/107), + released as **`konard/box-dind:2.3.4`**) β€” the nested DinD daemon re-downloads + `konard/hive-mind-dind:2.0.6` (~30 GB) despite host passthrough (problem 4), + continuing #94/#102. Reproducer: `df -h` before/after shows ~30 GB consumed and + the run takes ~1 hour; workaround: mount + `-v /var/run/docker.sock:/var/run/host-docker.sock:ro` and set + `DIND_HOST_PASSTHROUGH_IMAGES`; fix: the dind entrypoint now verifies (via + `docker image inspect` against the nested daemon) that each concrete passthrough + allowlist entry was actually seeded and reports + `image preload/passthrough finished WITH WARNINGS` instead of a misleading + `complete` when it was not, so a misconfigured deploy can no longer silently + trigger the re-download. **`Dockerfile.dind` now bases on `konard/box-dind:2.3.5`** + (was `2.3.2`). + +See [`upstream/`](./upstream) for the exact issue bodies filed (those reflect the +state at filing time, when both still reproduced on `start-command 0.29.1`). + +## Alternatives Considered + +- **Fire-and-forget the launch (don't await it at all).** Rejected: we still need + the launch result to detect a failed start and untrack the phantom session and + show the error. Awaiting is fine β€” the session is already visible/tracked and + Telegraf dispatches other updates concurrently. +- **Only fix the message text, not the tracking.** Rejected: showing the UUID + without tracking the session would still leave `/watch`/`/log`/`/status` + unable to find it during startup. Both are needed. +- **Pull the image from the Hive Mind side / pass `--pull`.** Rejected: the + re-download is a passthrough/deployment gap (#1879 established that + `docker run` reuses a present image); the right fix is box passthrough, not a + pull flag. +- **Write the image-prep log on the Hive Mind side.** Rejected: start-command + owns the session log file; duplicating that in the consumer would diverge from + the `$` "single source of truth" design. Reported upstream instead. + +## Regression Coverage + +`tests/test-issue-1946-docker-isolation-async.mjs` (`@hive-mind-test-suite +default`): + +- `formatStartingWorkSessionMessage` omits the session block with no session, + renders `Session:` + `πŸ”’ Isolation:` when both are known, and renders the + session alone when no backend is given. +- `buildExecuteAndUpdateMessage`: the session is **tracked and shown before** the + (deferred) launch resolves; a successful launch keeps it tracked and advances + to executing; a failed launch **untracks** the optimistic session and surfaces + the error. + +`tests/test-issue-1860-docker-isolation.mjs` (33 assertions) updated for the new +deps and continues to pass, confirming the #1860 native-docker guarantees hold. diff --git a/docs/case-studies/issue-1946/raw/box-repo.json b/docs/case-studies/issue-1946/raw/box-repo.json new file mode 100644 index 000000000..f5edc080b --- /dev/null +++ b/docs/case-studies/issue-1946/raw/box-repo.json @@ -0,0 +1 @@ +{"description":"A docker container image, that contains most popular language runtimes and tools to be reused for software development environments","name":"box","pushedAt":"2026-06-15T08:02:47Z"} diff --git a/docs/case-studies/issue-1946/raw/failed-session-terminal.log b/docs/case-studies/issue-1946/raw/failed-session-terminal.log new file mode 100644 index 000000000..742056c75 --- /dev/null +++ b/docs/case-studies/issue-1946/raw/failed-session-terminal.log @@ -0,0 +1,270 @@ +box@b597fbc0ca99:~$ $ --list +executions + count 1 + records + 08ec853a-158a-4314-83e9-c6365670fe4c + uuid 08ec853a-158a-4314-83e9-c6365670fe4c + pid 3496 + processIds + wrapperPid 3496 + status executing + command "'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'" + logPath /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log + startTime "2026-06-19T05:36:11.618Z" + currentTime "2026-06-19T05:43:25.701Z" + workingDirectory /home/box + shell /bin/sh + platform linux + options + isolated docker + isolationMode detached + sessionName 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 + image "konard/hive-mind-dind:2.0.6" + volumes "/home/box/.config/gh:/home/box/.config/gh,/home/box/.gitconfig:/home/box/.gitconfig,/home/box/.claude:/home/box/.claude,/home/box/.claude.json:/home/box/.claude.json" + env HOME=/home/box,HIVE_MIND_PARENT_SESSION_ID=9ea2993a-5d0f-4554-9c94-80142ccc3ed6,HIVE_MIND_IMAGE_VARIANT=dind + privileged true + user false + keepAlive false + useCommandStream false +box@b597fbc0ca99:~$ $ --status 08ec853a-158a-4314-83e9-c6365670fe4c +08ec853a-158a-4314-83e9-c6365670fe4c + uuid 08ec853a-158a-4314-83e9-c6365670fe4c + pid 3496 + processIds + wrapperPid 3496 + status executing + command "'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'" + logPath /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log + startTime "2026-06-19T05:36:11.618Z" + currentTime "2026-06-19T05:43:41.496Z" + workingDirectory /home/box + shell /bin/sh + platform linux + options + isolated docker + isolationMode detached + sessionName 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 + image "konard/hive-mind-dind:2.0.6" + volumes "/home/box/.config/gh:/home/box/.config/gh,/home/box/.gitconfig:/home/box/.gitconfig,/home/box/.claude:/home/box/.claude,/home/box/.claude.json:/home/box/.claude.json" + env HOME=/home/box,HIVE_MIND_PARENT_SESSION_ID=9ea2993a-5d0f-4554-9c94-80142ccc3ed6,HIVE_MIND_IMAGE_VARIANT=dind + privileged true + user false + keepAlive false + useCommandStream false +box@b597fbc0ca99:~$ $ --upload-log 08ec853a-158a-4314-83e9-c6365670fe4c +⏳ Uploading 546 B (πŸ”’ private)... +- Creating gist 08ec853a-158a-4314-83e9-c6365670fe4c.log +βœ“ Created secret gist 08ec853a-158a-4314-83e9-c6365670fe4c.log +https://gist.github.com/konard/3784d58056d623f6d657fcb7204ae6df +βœ… Gist created (πŸ”’ private) +πŸ”— https://gist.github.com/konard/3784d58056d623f6d657fcb7204ae6df +πŸ“„ https://gist.githubusercontent.com/konard/3784d58056d623f6d657fcb7204ae6df/raw/b57480a5d019947efa1a285eb576705914211dc5/08ec853a-158a-4314-83e9-c6365670fe4c.log +box@b597fbc0ca99:~$ $ --version +start-command version: 0.29.1 + +OS: linux +OS Version: 6.8.0-124-generic +Bun Version: 1.3.14 +Architecture: x64 + +Isolation tools: + screen: Screen version 4.09.01 (GNU) 20-Aug-23 + tmux: not installed + docker: Docker version 29.5.3, build d1c06ef +box@b597fbc0ca99:~$ cat /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log +=== Start Command Log === +Execution ID: 08ec853a-158a-4314-83e9-c6365670fe4c +Timestamp: 2026-06-19 05:36:11.616 +Command: 'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en' +Environment: docker +Mode: detached +Session: 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +Image: konard/hive-mind-dind:2.0.6 +Platform: linux +Node Version: v24.3.0 +Working Directory: /home/box +================================================== + +Command started in detached docker container: 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +Container ID: 357b7f1f9516 +Container will exit automatically after command completes. +Container filesystem will be preserved after exit. +Attach with: docker attach 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +View logs: docker logs 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +Live log: /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log +[dind-entrypoint] Starting dockerd (storage-driver=fuse-overlayfs, data-root=/var/lib/docker) +[dind-entrypoint] dockerd is ready after 1s +[dind-entrypoint] image preload/passthrough complete +πŸ“ Log file: /home/box/solve-2026-06-19T05-44-24-362Z.log + (All output will be logged here) + +πŸš€ solve v2.0.6 +πŸ”§ Raw command executed: + /home/box/.nvm/versions/node/v20.20.2/bin/node /home/box/.bun/bin/solve https://github.com/link-assistant/hive-mind/issues/1945 --model opus --tool claude --attach-logs --verbose --no-tool-check --disable-report-issue --language en + + +⚠️ SECURITY WARNING: --attach-logs is ENABLED + + This option will upload the complete solution draft log file to the Pull Request. + The log may contain sensitive information such as: + β€’ API keys, tokens, or secrets + β€’ File paths and directory structures + β€’ Command outputs and error messages + β€’ Internal system information + + ⚠️ DO NOT use this option with public repositories or if the log + might contain sensitive data that should not be shared publicly. + + Continuing in 5 seconds... (Press Ctrl+C to abort) + + Proceeding with log attachment enabled. + +πŸ’Ύ Disk space check: 38746MB available (2048MB required) βœ… +🧠 Memory check: 11303MB available, swap: none, total: 11303MB (256MB required) βœ… +⏩ Skipping tool connection validation (dry-run mode or skip-tool-connection-check enabled) +⏩ Skipping GitHub authentication check (dry-run mode or skip-tool-connection-check enabled) +🎭 Checking Playwright MCP preflight for Claude Code... +Checking MCP server health… + +playwright: npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080 - βœ” Connected +🎭 Playwright MCP probe: 'mcp list' exit=0, playwright rows=1 [playwright: npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080 - βœ” Connected] +🎭 Playwright MCP reported as connected by mcp list +🎭 Playwright MCP ready for Claude Code +πŸ“‹ URL validation: + Input URL: https://github.com/link-assistant/hive-mind/issues/1945 + Is Issue URL: true + Is PR URL: false +πŸ” --auto-accept-invite: Checking for pending invitation to link-assistant/hive-mind... + Found 1 total pending repo invitation(s) + No pending repository invitation found for link-assistant/hive-mind + Found 0 total pending org invitation(s) + No pending organization invitation found for link-assistant +ℹ️ --auto-accept-invite: No pending invitation found for link-assistant/hive-mind or organization link-assistant +πŸ” Checking repository access for auto-fork... +{"admin":true,"maintain":true,"pull":true,"push":true,"triage":true} +public + Repository visibility: public +βœ… Auto-fork: Write access detected to public repository, working directly on repository +πŸ” Checking repository write permissions... +{"admin":true,"maintain":true,"pull":true,"push":true,"triage":true} +βœ… Repository write access: Confirmed +link-assistant +link-assistant/hive-mind +{"number":1945,"title":"DIsk space diagnostics logs in /solve command"} +public + Repository visibility: public + Auto-cleanup default: false (repository is public) +πŸ” Auto-continue enabled: Checking for existing PRs for issue #1945... +πŸ” Checking for existing branches in link-assistant/hive-mind... +codex-fix-1 +codex-support-update +dockerize-claude-code +gh-pages +issue-1-11cdb480 +issue-1-0596ba61 +issue-1-606bfad6 +issue-1-5251c297 +issue-5-1836843a +issue-6-f93e5123 +issue-7-df36d075 +issue-9-d11b7360 +issue-10-c0ca07d1 +issue-11-9f0014ca +issue-12-016317fd +issue-18-d10b6877 +issue-19-89d34aa9 +issue-22-0176893b +issue-22-d850e880 +issue-25-0a0348b2 +issue-27-ee05e990 +issue-28-648c48ab +issue-29-66f135d6 +issue-30-80afb12c +issue-30-34574b59 +issue-31-3877df14 +issue-32-137a71b8 +issue-33-20cededb +issue-33-e7258f3c +issue-34-3af5eda0 +issue-34-8ec11228 +issue-35-a8a31cd8 +issue-35-e9a78c06 +issue-48-b5c56870 +issue-49-2f1d52c6 +issue-51-a3b0ebb2 +issue-52-8dec70fa +issue-54-826f837c +issue-55-dbd1a6dd +issue-65-3408ebd0 +issue-66-08bd4e27 +issue-70-38ad0fd6 +issue-71-145a3af2 +issue-73-879e42eb +issue-76-15469630 +issue-77-cb85705a +issue-79-3e7d742a +issue-79-82c251ff +issue-84-4eeaa00e +issue-84-bbf405d4 +issue-85-c46a294a +issue-88-1b2f0813 +issue-90-cc02bea4 +issue-94-37533683 +issue-94-a9039c87 +issue-96-23d6fff5 +issue-98-2311d116 +issue-101-2579944d +issue-103-f2ace4c7 +issue-105-c470c833 +issue-107-727bbefe +issue-107-da9f66d5 +issue-107-ffe58b65 +issue-108-33029b6d +issue-110-0aee8df9 +issue-110-3abd51b4 +issue-110-5db43e39 +issue-110-7d817089 +issue-110-7556b140 +issue-110-c3bb5bad +issue-110-dc56cec1 +issue-110-e19ccdc1 +issue-124-43dcc83a +issue-126-83a009e9 +issue-127-77157b26 +issue-129-eedb3d27 +issue-131-84895788 +issue-132-ba104fe5 +issue-132-c48ad165 +issue-137-8f611c04 +issue-139-07192172 +issue-141-dfa6be40 +issue-143-70ae7212 +issue-144-0d07e5e3 +issue-145-cea37c66 +issue-146-05906414 +issue-147-1f1e98a8 +issue-148-ecc674ac +issue-155-5439babd +issue-157-154a072a +issue-159-64d50000 +issue-159-d0e57a9f +issue-162-3eb0c720 +issue-163-219b7547 +issue-166-ffe782f0 +issue-168-113ce685 +issue-170-13dc08f1 +issue-171-ee7e5df9 +issue-172-7b94f3c2 +issue-178-393f128a +box@b597fbc0ca99:~$ + + +=== NEXT BLOCK === + +box@b597fbc0ca99:~$ df -h +Filesystem Size Used Avail Use% Mounted on +overlay 96G 60G 37G 62% / +tmpfs 64M 0 64M 0% /dev +shm 64M 8.0K 64M 1% /dev/shm +/dev/sda1 96G 60G 37G 62% /etc/hosts +box@b597fbc0ca99:~$ diff --git a/docs/case-studies/issue-1946/raw/img1-initial.png b/docs/case-studies/issue-1946/raw/img1-initial.png new file mode 100644 index 000000000..a0c411628 Binary files /dev/null and b/docs/case-studies/issue-1946/raw/img1-initial.png differ diff --git a/docs/case-studies/issue-1946/raw/img2-uuid-isolation.png b/docs/case-studies/issue-1946/raw/img2-uuid-isolation.png new file mode 100644 index 000000000..2e6d84be2 Binary files /dev/null and b/docs/case-studies/issue-1946/raw/img2-uuid-isolation.png differ diff --git a/docs/case-studies/issue-1946/raw/img3-worked.png b/docs/case-studies/issue-1946/raw/img3-worked.png new file mode 100644 index 000000000..a4ec15ab7 Binary files /dev/null and b/docs/case-studies/issue-1946/raw/img3-worked.png differ diff --git a/docs/case-studies/issue-1946/raw/issue-1946-body.md b/docs/case-studies/issue-1946/raw/issue-1946-body.md new file mode 100644 index 000000000..24d2f799a --- /dev/null +++ b/docs/case-studies/issue-1946/raw/issue-1946-body.md @@ -0,0 +1,311 @@ +Image + + +While it is starting other commands are not working (looks like we have have blocked execution, need async), also we don't display session id and isolation like with `--isolation screen`, so it is not possible just from the message alone get idea where to get logs for the task, like we did for screen isolation. Also /watch, /log and other commands will not work without UUID for `$ --status`. + +Also there still no docker image download logs included in the session logs, as asked previously in https://github.com/link-assistant/hive-mind/issues/1939 + +``` +box@b597fbc0ca99:~$ $ --list +executions + count 1 + records + 08ec853a-158a-4314-83e9-c6365670fe4c + uuid 08ec853a-158a-4314-83e9-c6365670fe4c + pid 3496 + processIds + wrapperPid 3496 + status executing + command "'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'" + logPath /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log + startTime "2026-06-19T05:36:11.618Z" + currentTime "2026-06-19T05:43:25.701Z" + workingDirectory /home/box + shell /bin/sh + platform linux + options + isolated docker + isolationMode detached + sessionName 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 + image "konard/hive-mind-dind:2.0.6" + volumes "/home/box/.config/gh:/home/box/.config/gh,/home/box/.gitconfig:/home/box/.gitconfig,/home/box/.claude:/home/box/.claude,/home/box/.claude.json:/home/box/.claude.json" + env HOME=/home/box,HIVE_MIND_PARENT_SESSION_ID=9ea2993a-5d0f-4554-9c94-80142ccc3ed6,HIVE_MIND_IMAGE_VARIANT=dind + privileged true + user false + keepAlive false + useCommandStream false +box@b597fbc0ca99:~$ $ --status 08ec853a-158a-4314-83e9-c6365670fe4c +08ec853a-158a-4314-83e9-c6365670fe4c + uuid 08ec853a-158a-4314-83e9-c6365670fe4c + pid 3496 + processIds + wrapperPid 3496 + status executing + command "'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'" + logPath /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log + startTime "2026-06-19T05:36:11.618Z" + currentTime "2026-06-19T05:43:41.496Z" + workingDirectory /home/box + shell /bin/sh + platform linux + options + isolated docker + isolationMode detached + sessionName 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 + image "konard/hive-mind-dind:2.0.6" + volumes "/home/box/.config/gh:/home/box/.config/gh,/home/box/.gitconfig:/home/box/.gitconfig,/home/box/.claude:/home/box/.claude,/home/box/.claude.json:/home/box/.claude.json" + env HOME=/home/box,HIVE_MIND_PARENT_SESSION_ID=9ea2993a-5d0f-4554-9c94-80142ccc3ed6,HIVE_MIND_IMAGE_VARIANT=dind + privileged true + user false + keepAlive false + useCommandStream false +box@b597fbc0ca99:~$ $ --upload-log 08ec853a-158a-4314-83e9-c6365670fe4c +⏳ Uploading 546 B (πŸ”’ private)... +- Creating gist 08ec853a-158a-4314-83e9-c6365670fe4c.log +βœ“ Created secret gist 08ec853a-158a-4314-83e9-c6365670fe4c.log +https://gist.github.com/konard/3784d58056d623f6d657fcb7204ae6df +βœ… Gist created (πŸ”’ private) +πŸ”— https://gist.github.com/konard/3784d58056d623f6d657fcb7204ae6df +πŸ“„ https://gist.githubusercontent.com/konard/3784d58056d623f6d657fcb7204ae6df/raw/b57480a5d019947efa1a285eb576705914211dc5/08ec853a-158a-4314-83e9-c6365670fe4c.log +box@b597fbc0ca99:~$ $ --version +start-command version: 0.29.1 + +OS: linux +OS Version: 6.8.0-124-generic +Bun Version: 1.3.14 +Architecture: x64 + +Isolation tools: + screen: Screen version 4.09.01 (GNU) 20-Aug-23 + tmux: not installed + docker: Docker version 29.5.3, build d1c06ef +box@b597fbc0ca99:~$ cat /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log +=== Start Command Log === +Execution ID: 08ec853a-158a-4314-83e9-c6365670fe4c +Timestamp: 2026-06-19 05:36:11.616 +Command: 'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en' +Environment: docker +Mode: detached +Session: 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +Image: konard/hive-mind-dind:2.0.6 +Platform: linux +Node Version: v24.3.0 +Working Directory: /home/box +================================================== + +Command started in detached docker container: 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +Container ID: 357b7f1f9516 +Container will exit automatically after command completes. +Container filesystem will be preserved after exit. +Attach with: docker attach 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +View logs: docker logs 9ea2993a-5d0f-4554-9c94-80142ccc3ed6 +Live log: /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log +[dind-entrypoint] Starting dockerd (storage-driver=fuse-overlayfs, data-root=/var/lib/docker) +[dind-entrypoint] dockerd is ready after 1s +[dind-entrypoint] image preload/passthrough complete +πŸ“ Log file: /home/box/solve-2026-06-19T05-44-24-362Z.log + (All output will be logged here) + +πŸš€ solve v2.0.6 +πŸ”§ Raw command executed: + /home/box/.nvm/versions/node/v20.20.2/bin/node /home/box/.bun/bin/solve https://github.com/link-assistant/hive-mind/issues/1945 --model opus --tool claude --attach-logs --verbose --no-tool-check --disable-report-issue --language en + + +⚠️ SECURITY WARNING: --attach-logs is ENABLED + + This option will upload the complete solution draft log file to the Pull Request. + The log may contain sensitive information such as: + β€’ API keys, tokens, or secrets + β€’ File paths and directory structures + β€’ Command outputs and error messages + β€’ Internal system information + + ⚠️ DO NOT use this option with public repositories or if the log + might contain sensitive data that should not be shared publicly. + + Continuing in 5 seconds... (Press Ctrl+C to abort) + + Proceeding with log attachment enabled. + +πŸ’Ύ Disk space check: 38746MB available (2048MB required) βœ… +🧠 Memory check: 11303MB available, swap: none, total: 11303MB (256MB required) βœ… +⏩ Skipping tool connection validation (dry-run mode or skip-tool-connection-check enabled) +⏩ Skipping GitHub authentication check (dry-run mode or skip-tool-connection-check enabled) +🎭 Checking Playwright MCP preflight for Claude Code... +Checking MCP server health… + +playwright: npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080 - βœ” Connected +🎭 Playwright MCP probe: 'mcp list' exit=0, playwright rows=1 [playwright: npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080 - βœ” Connected] +🎭 Playwright MCP reported as connected by mcp list +🎭 Playwright MCP ready for Claude Code +πŸ“‹ URL validation: + Input URL: https://github.com/link-assistant/hive-mind/issues/1945 + Is Issue URL: true + Is PR URL: false +πŸ” --auto-accept-invite: Checking for pending invitation to link-assistant/hive-mind... + Found 1 total pending repo invitation(s) + No pending repository invitation found for link-assistant/hive-mind + Found 0 total pending org invitation(s) + No pending organization invitation found for link-assistant +ℹ️ --auto-accept-invite: No pending invitation found for link-assistant/hive-mind or organization link-assistant +πŸ” Checking repository access for auto-fork... +{"admin":true,"maintain":true,"pull":true,"push":true,"triage":true} +public + Repository visibility: public +βœ… Auto-fork: Write access detected to public repository, working directly on repository +πŸ” Checking repository write permissions... +{"admin":true,"maintain":true,"pull":true,"push":true,"triage":true} +βœ… Repository write access: Confirmed +link-assistant +link-assistant/hive-mind +{"number":1945,"title":"DIsk space diagnostics logs in /solve command"} +public + Repository visibility: public + Auto-cleanup default: false (repository is public) +πŸ” Auto-continue enabled: Checking for existing PRs for issue #1945... +πŸ” Checking for existing branches in link-assistant/hive-mind... +codex-fix-1 +codex-support-update +dockerize-claude-code +gh-pages +issue-1-11cdb480 +issue-1-0596ba61 +issue-1-606bfad6 +issue-1-5251c297 +issue-5-1836843a +issue-6-f93e5123 +issue-7-df36d075 +issue-9-d11b7360 +issue-10-c0ca07d1 +issue-11-9f0014ca +issue-12-016317fd +issue-18-d10b6877 +issue-19-89d34aa9 +issue-22-0176893b +issue-22-d850e880 +issue-25-0a0348b2 +issue-27-ee05e990 +issue-28-648c48ab +issue-29-66f135d6 +issue-30-80afb12c +issue-30-34574b59 +issue-31-3877df14 +issue-32-137a71b8 +issue-33-20cededb +issue-33-e7258f3c +issue-34-3af5eda0 +issue-34-8ec11228 +issue-35-a8a31cd8 +issue-35-e9a78c06 +issue-48-b5c56870 +issue-49-2f1d52c6 +issue-51-a3b0ebb2 +issue-52-8dec70fa +issue-54-826f837c +issue-55-dbd1a6dd +issue-65-3408ebd0 +issue-66-08bd4e27 +issue-70-38ad0fd6 +issue-71-145a3af2 +issue-73-879e42eb +issue-76-15469630 +issue-77-cb85705a +issue-79-3e7d742a +issue-79-82c251ff +issue-84-4eeaa00e +issue-84-bbf405d4 +issue-85-c46a294a +issue-88-1b2f0813 +issue-90-cc02bea4 +issue-94-37533683 +issue-94-a9039c87 +issue-96-23d6fff5 +issue-98-2311d116 +issue-101-2579944d +issue-103-f2ace4c7 +issue-105-c470c833 +issue-107-727bbefe +issue-107-da9f66d5 +issue-107-ffe58b65 +issue-108-33029b6d +issue-110-0aee8df9 +issue-110-3abd51b4 +issue-110-5db43e39 +issue-110-7d817089 +issue-110-7556b140 +issue-110-c3bb5bad +issue-110-dc56cec1 +issue-110-e19ccdc1 +issue-124-43dcc83a +issue-126-83a009e9 +issue-127-77157b26 +issue-129-eedb3d27 +issue-131-84895788 +issue-132-ba104fe5 +issue-132-c48ad165 +issue-137-8f611c04 +issue-139-07192172 +issue-141-dfa6be40 +issue-143-70ae7212 +issue-144-0d07e5e3 +issue-145-cea37c66 +issue-146-05906414 +issue-147-1f1e98a8 +issue-148-ecc674ac +issue-155-5439babd +issue-157-154a072a +issue-159-64d50000 +issue-159-d0e57a9f +issue-162-3eb0c720 +issue-163-219b7547 +issue-166-ffe782f0 +issue-168-113ce685 +issue-170-13dc08f1 +issue-171-ee7e5df9 +issue-172-7b94f3c2 +issue-178-393f128a +box@b597fbc0ca99:~$ +``` + +And the most critical problem is this: + +``` +box@b597fbc0ca99:~$ df -h +Filesystem Size Used Avail Use% Mounted on +overlay 96G 60G 37G 62% / +tmpfs 64M 0 64M 0% /dev +shm 64M 8.0K 64M 1% /dev/shm +/dev/sda1 96G 60G 37G 62% /etc/hosts +box@b597fbc0ca99:~$ +``` + +We still were not able to pass through hive mind dind image from host machine to its docker container as previously asked, so the single task to around 30 GB more space, and took lots of time downloading. + +The good news, that at the moment I write this line, we already have UUID and isolation in the message: + +Image + +But it took a long time to take there, so I had to use `$ --list`. + +We still have a bug in $ command, that does not preserve full log of preparing docker image + execution of container in the same log file. The whole reason $ command exists is to make 100% sure all steps of the logs are preserved, so we have guarantee that if something executed it is logged. + +And after an hour looks like it worked. + +Image + +But anyway we spent too much time and space for redownloading image we already had in host machine. + +https://github.com/link-foundation/box +https://github.com/link-foundation/start + +We need to double check all our dependencies for issues in them, and report issues if this is in their responsibility. + +If we don't have enough logs, we should find a way to add such. For example we may explore `$` command's verbose mode, and ask though issue to support all critical issues for us in this mode. + +We need to download all logs and data related about the issue to this repository, make sure we compile that data to `./docs/case-studies/issue-{id}` folder, and use it to do deep case study analysis (also make sure to search online for additional facts and data), in which we will reconstruct timeline/sequence of events, list of each and all requirements from the issue, find root causes of the each problem, and propose possible solutions and solution plans for each requirement (we should also check known existing components/libraries, that solve similar problem or can help in solutions). + +If there is not enough data to find actual root cause, add debug output and verbose mode if not present, that will allow us to find root cause on next iteration. + +If issue related to any other repository/project, where we can report issues on GitHub, please do so. Each issue must contain reproducible examples, workarounds and suggestions for fix the issue in code. Also double check to fully apply requirements to entire codebase, so if we have issue in multiple places, it should be fixed in all them. + +Please plan and execute everything in this single pull request, you have unlimited time and context, as context auto-compacts and you can continue indefinitely, until it is each and every requirement fully addressed, and everything is totally done. diff --git a/docs/case-studies/issue-1946/raw/issue-1946.json b/docs/case-studies/issue-1946/raw/issue-1946.json new file mode 100644 index 000000000..c8c5aec83 --- /dev/null +++ b/docs/case-studies/issue-1946/raw/issue-1946.json @@ -0,0 +1 @@ +{"author":{"id":"MDQ6VXNlcjE0MzE5MDQ=","is_bot":false,"login":"konard","name":"Konstantin Diachenko"},"body":"\"Image\"\n\n\nWhile it is starting other commands are not working (looks like we have have blocked execution, need async), also we don't display session id and isolation like with `--isolation screen`, so it is not possible just from the message alone get idea where to get logs for the task, like we did for screen isolation. Also /watch, /log and other commands will not work without UUID for `$ --status`.\n\nAlso there still no docker image download logs included in the session logs, as asked previously in https://github.com/link-assistant/hive-mind/issues/1939\n\n```\nbox@b597fbc0ca99:~$ $ --list\nexecutions\n count 1\n records\n 08ec853a-158a-4314-83e9-c6365670fe4c\n uuid 08ec853a-158a-4314-83e9-c6365670fe4c\n pid 3496\n processIds\n wrapperPid 3496\n status executing\n command \"'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'\"\n logPath /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log\n startTime \"2026-06-19T05:36:11.618Z\"\n currentTime \"2026-06-19T05:43:25.701Z\"\n workingDirectory /home/box\n shell /bin/sh\n platform linux\n options\n isolated docker\n isolationMode detached\n sessionName 9ea2993a-5d0f-4554-9c94-80142ccc3ed6\n image \"konard/hive-mind-dind:2.0.6\"\n volumes \"/home/box/.config/gh:/home/box/.config/gh,/home/box/.gitconfig:/home/box/.gitconfig,/home/box/.claude:/home/box/.claude,/home/box/.claude.json:/home/box/.claude.json\"\n env HOME=/home/box,HIVE_MIND_PARENT_SESSION_ID=9ea2993a-5d0f-4554-9c94-80142ccc3ed6,HIVE_MIND_IMAGE_VARIANT=dind\n privileged true\n user false\n keepAlive false\n useCommandStream false\nbox@b597fbc0ca99:~$ $ --status 08ec853a-158a-4314-83e9-c6365670fe4c\n08ec853a-158a-4314-83e9-c6365670fe4c\n uuid 08ec853a-158a-4314-83e9-c6365670fe4c\n pid 3496\n processIds\n wrapperPid 3496\n status executing\n command \"'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'\"\n logPath /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log\n startTime \"2026-06-19T05:36:11.618Z\"\n currentTime \"2026-06-19T05:43:41.496Z\"\n workingDirectory /home/box\n shell /bin/sh\n platform linux\n options\n isolated docker\n isolationMode detached\n sessionName 9ea2993a-5d0f-4554-9c94-80142ccc3ed6\n image \"konard/hive-mind-dind:2.0.6\"\n volumes \"/home/box/.config/gh:/home/box/.config/gh,/home/box/.gitconfig:/home/box/.gitconfig,/home/box/.claude:/home/box/.claude,/home/box/.claude.json:/home/box/.claude.json\"\n env HOME=/home/box,HIVE_MIND_PARENT_SESSION_ID=9ea2993a-5d0f-4554-9c94-80142ccc3ed6,HIVE_MIND_IMAGE_VARIANT=dind\n privileged true\n user false\n keepAlive false\n useCommandStream false\nbox@b597fbc0ca99:~$ $ --upload-log 08ec853a-158a-4314-83e9-c6365670fe4c\n⏳ Uploading 546 B (πŸ”’ private)...\n- Creating gist 08ec853a-158a-4314-83e9-c6365670fe4c.log\nβœ“ Created secret gist 08ec853a-158a-4314-83e9-c6365670fe4c.log\nhttps://gist.github.com/konard/3784d58056d623f6d657fcb7204ae6df\nβœ… Gist created (πŸ”’ private)\nπŸ”— https://gist.github.com/konard/3784d58056d623f6d657fcb7204ae6df\nπŸ“„ https://gist.githubusercontent.com/konard/3784d58056d623f6d657fcb7204ae6df/raw/b57480a5d019947efa1a285eb576705914211dc5/08ec853a-158a-4314-83e9-c6365670fe4c.log\nbox@b597fbc0ca99:~$ $ --version\nstart-command version: 0.29.1\n\nOS: linux\nOS Version: 6.8.0-124-generic\nBun Version: 1.3.14\nArchitecture: x64\n\nIsolation tools:\n screen: Screen version 4.09.01 (GNU) 20-Aug-23\n tmux: not installed\n docker: Docker version 29.5.3, build d1c06ef\nbox@b597fbc0ca99:~$ cat /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log\n=== Start Command Log ===\nExecution ID: 08ec853a-158a-4314-83e9-c6365670fe4c\nTimestamp: 2026-06-19 05:36:11.616\nCommand: 'solve' 'https://github.com/link-assistant/hive-mind/issues/1945' '--model' 'opus' '--tool' 'claude' '--attach-logs' '--verbose' '--no-tool-check' '--disable-report-issue' '--language' 'en'\nEnvironment: docker\nMode: detached\nSession: 9ea2993a-5d0f-4554-9c94-80142ccc3ed6\nImage: konard/hive-mind-dind:2.0.6\nPlatform: linux\nNode Version: v24.3.0\nWorking Directory: /home/box\n==================================================\n\nCommand started in detached docker container: 9ea2993a-5d0f-4554-9c94-80142ccc3ed6\nContainer ID: 357b7f1f9516\nContainer will exit automatically after command completes.\nContainer filesystem will be preserved after exit.\nAttach with: docker attach 9ea2993a-5d0f-4554-9c94-80142ccc3ed6\nView logs: docker logs 9ea2993a-5d0f-4554-9c94-80142ccc3ed6\nLive log: /tmp/start-command/logs/isolation/docker/08ec853a-158a-4314-83e9-c6365670fe4c.log\n[dind-entrypoint] Starting dockerd (storage-driver=fuse-overlayfs, data-root=/var/lib/docker)\n[dind-entrypoint] dockerd is ready after 1s\n[dind-entrypoint] image preload/passthrough complete\nπŸ“ Log file: /home/box/solve-2026-06-19T05-44-24-362Z.log\n (All output will be logged here)\n\nπŸš€ solve v2.0.6\nπŸ”§ Raw command executed:\n /home/box/.nvm/versions/node/v20.20.2/bin/node /home/box/.bun/bin/solve https://github.com/link-assistant/hive-mind/issues/1945 --model opus --tool claude --attach-logs --verbose --no-tool-check --disable-report-issue --language en\n\n\n⚠️ SECURITY WARNING: --attach-logs is ENABLED\n\n This option will upload the complete solution draft log file to the Pull Request.\n The log may contain sensitive information such as:\n β€’ API keys, tokens, or secrets\n β€’ File paths and directory structures\n β€’ Command outputs and error messages\n β€’ Internal system information\n\n ⚠️ DO NOT use this option with public repositories or if the log\n might contain sensitive data that should not be shared publicly.\n\n Continuing in 5 seconds... (Press Ctrl+C to abort)\n\n Proceeding with log attachment enabled. \n\nπŸ’Ύ Disk space check: 38746MB available (2048MB required) βœ…\n🧠 Memory check: 11303MB available, swap: none, total: 11303MB (256MB required) βœ…\n⏩ Skipping tool connection validation (dry-run mode or skip-tool-connection-check enabled)\n⏩ Skipping GitHub authentication check (dry-run mode or skip-tool-connection-check enabled)\n🎭 Checking Playwright MCP preflight for Claude Code...\nChecking MCP server health…\n\nplaywright: npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080 - βœ” Connected\n🎭 Playwright MCP probe: 'mcp list' exit=0, playwright rows=1 [playwright: npx -y @playwright/mcp@latest --isolated --headless --no-sandbox --timeout-action=600000 --viewport-size 1920x1080 - βœ” Connected]\n🎭 Playwright MCP reported as connected by mcp list\n🎭 Playwright MCP ready for Claude Code\nπŸ“‹ URL validation:\n Input URL: https://github.com/link-assistant/hive-mind/issues/1945\n Is Issue URL: true\n Is PR URL: false\nπŸ” --auto-accept-invite: Checking for pending invitation to link-assistant/hive-mind...\n Found 1 total pending repo invitation(s)\n No pending repository invitation found for link-assistant/hive-mind\n Found 0 total pending org invitation(s)\n No pending organization invitation found for link-assistant\nℹ️ --auto-accept-invite: No pending invitation found for link-assistant/hive-mind or organization link-assistant\nπŸ” Checking repository access for auto-fork...\n{\"admin\":true,\"maintain\":true,\"pull\":true,\"push\":true,\"triage\":true}\npublic\n Repository visibility: public\nβœ… Auto-fork: Write access detected to public repository, working directly on repository\nπŸ” Checking repository write permissions...\n{\"admin\":true,\"maintain\":true,\"pull\":true,\"push\":true,\"triage\":true}\nβœ… Repository write access: Confirmed\nlink-assistant\nlink-assistant/hive-mind\n{\"number\":1945,\"title\":\"DIsk space diagnostics logs in /solve command\"}\npublic\n Repository visibility: public\n Auto-cleanup default: false (repository is public)\nπŸ” Auto-continue enabled: Checking for existing PRs for issue #1945...\nπŸ” Checking for existing branches in link-assistant/hive-mind...\ncodex-fix-1\ncodex-support-update\ndockerize-claude-code\ngh-pages\nissue-1-11cdb480\nissue-1-0596ba61\nissue-1-606bfad6\nissue-1-5251c297\nissue-5-1836843a\nissue-6-f93e5123\nissue-7-df36d075\nissue-9-d11b7360\nissue-10-c0ca07d1\nissue-11-9f0014ca\nissue-12-016317fd\nissue-18-d10b6877\nissue-19-89d34aa9\nissue-22-0176893b\nissue-22-d850e880\nissue-25-0a0348b2\nissue-27-ee05e990\nissue-28-648c48ab\nissue-29-66f135d6\nissue-30-80afb12c\nissue-30-34574b59\nissue-31-3877df14\nissue-32-137a71b8\nissue-33-20cededb\nissue-33-e7258f3c\nissue-34-3af5eda0\nissue-34-8ec11228\nissue-35-a8a31cd8\nissue-35-e9a78c06\nissue-48-b5c56870\nissue-49-2f1d52c6\nissue-51-a3b0ebb2\nissue-52-8dec70fa\nissue-54-826f837c\nissue-55-dbd1a6dd\nissue-65-3408ebd0\nissue-66-08bd4e27\nissue-70-38ad0fd6\nissue-71-145a3af2\nissue-73-879e42eb\nissue-76-15469630\nissue-77-cb85705a\nissue-79-3e7d742a\nissue-79-82c251ff\nissue-84-4eeaa00e\nissue-84-bbf405d4\nissue-85-c46a294a\nissue-88-1b2f0813\nissue-90-cc02bea4\nissue-94-37533683\nissue-94-a9039c87\nissue-96-23d6fff5\nissue-98-2311d116\nissue-101-2579944d\nissue-103-f2ace4c7\nissue-105-c470c833\nissue-107-727bbefe\nissue-107-da9f66d5\nissue-107-ffe58b65\nissue-108-33029b6d\nissue-110-0aee8df9\nissue-110-3abd51b4\nissue-110-5db43e39\nissue-110-7d817089\nissue-110-7556b140\nissue-110-c3bb5bad\nissue-110-dc56cec1\nissue-110-e19ccdc1\nissue-124-43dcc83a\nissue-126-83a009e9\nissue-127-77157b26\nissue-129-eedb3d27\nissue-131-84895788\nissue-132-ba104fe5\nissue-132-c48ad165\nissue-137-8f611c04\nissue-139-07192172\nissue-141-dfa6be40\nissue-143-70ae7212\nissue-144-0d07e5e3\nissue-145-cea37c66\nissue-146-05906414\nissue-147-1f1e98a8\nissue-148-ecc674ac\nissue-155-5439babd\nissue-157-154a072a\nissue-159-64d50000\nissue-159-d0e57a9f\nissue-162-3eb0c720\nissue-163-219b7547\nissue-166-ffe782f0\nissue-168-113ce685\nissue-170-13dc08f1\nissue-171-ee7e5df9\nissue-172-7b94f3c2\nissue-178-393f128a\nbox@b597fbc0ca99:~$ \n```\n\nAnd the most critical problem is this:\n\n```\nbox@b597fbc0ca99:~$ df -h\nFilesystem Size Used Avail Use% Mounted on\noverlay 96G 60G 37G 62% /\ntmpfs 64M 0 64M 0% /dev\nshm 64M 8.0K 64M 1% /dev/shm\n/dev/sda1 96G 60G 37G 62% /etc/hosts\nbox@b597fbc0ca99:~$ \n```\n\nWe still were not able to pass through hive mind dind image from host machine to its docker container as previously asked, so the single task to around 30 GB more space, and took lots of time downloading.\n\nThe good news, that at the moment I write this line, we already have UUID and isolation in the message:\n\n\"Image\"\n\nBut it took a long time to take there, so I had to use `$ --list`.\n\nWe still have a bug in $ command, that does not preserve full log of preparing docker image + execution of container in the same log file. The whole reason $ command exists is to make 100% sure all steps of the logs are preserved, so we have guarantee that if something executed it is logged.\n\nAnd after an hour looks like it worked.\n\n\"Image\"\n\nBut anyway we spent too much time and space for redownloading image we already had in host machine.\n\nhttps://github.com/link-foundation/box\nhttps://github.com/link-foundation/start\n\nWe need to double check all our dependencies for issues in them, and report issues if this is in their responsibility.\n\nIf we don't have enough logs, we should find a way to add such. For example we may explore `$` command's verbose mode, and ask though issue to support all critical issues for us in this mode.\n\nWe need to download all logs and data related about the issue to this repository, make sure we compile that data to `./docs/case-studies/issue-{id}` folder, and use it to do deep case study analysis (also make sure to search online for additional facts and data), in which we will reconstruct timeline/sequence of events, list of each and all requirements from the issue, find root causes of the each problem, and propose possible solutions and solution plans for each requirement (we should also check known existing components/libraries, that solve similar problem or can help in solutions).\n\nIf there is not enough data to find actual root cause, add debug output and verbose mode if not present, that will allow us to find root cause on next iteration.\n\nIf issue related to any other repository/project, where we can report issues on GitHub, please do so. Each issue must contain reproducible examples, workarounds and suggestions for fix the issue in code. Also double check to fully apply requirements to entire codebase, so if we have issue in multiple places, it should be fixed in all them.\n\nPlease plan and execute everything in this single pull request, you have unlimited time and context, as context auto-compacts and you can continue indefinitely, until it is each and every requirement fully addressed, and everything is totally done.","createdAt":"2026-06-19T05:37:12Z","labels":[{"id":"LA_kwDOPUU0qc8AAAACGYm6iw","name":"bug","description":"Something isn't working","color":"d73a4a"}],"number":1946,"state":"OPEN","title":"`--isolation docker` issues","updatedAt":"2026-06-19T06:35:08Z"} diff --git a/docs/case-studies/issue-1946/raw/issue-comments.json b/docs/case-studies/issue-1946/raw/issue-comments.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/docs/case-studies/issue-1946/raw/issue-comments.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/docs/case-studies/issue-1946/raw/pr-1948.json b/docs/case-studies/issue-1946/raw/pr-1948.json new file mode 100644 index 000000000..e6bcb42a2 --- /dev/null +++ b/docs/case-studies/issue-1946/raw/pr-1948.json @@ -0,0 +1 @@ +{"body":"## πŸ€– AI-Powered Solution Draft\n\nThis pull request is being automatically generated to solve issue #1946.\n\n### πŸ“‹ Issue Reference\nFixes #1946\n\n### 🚧 Status\n**Work in Progress** - The AI assistant is currently analyzing and implementing the solution draft.\n\n### πŸ“ Implementation Details\n_Details will be added as the solution draft is developed..._\n\n---\n*This PR was created automatically by the AI issue solver*","createdAt":"2026-06-19T06:36:13Z","headRefName":"issue-1946-94305ac66541","number":1948,"state":"OPEN","title":"[WIP] `--isolation docker` issues"} diff --git a/docs/case-studies/issue-1946/raw/start-command-npm.json b/docs/case-studies/issue-1946/raw/start-command-npm.json new file mode 100644 index 000000000..ed894f00f --- /dev/null +++ b/docs/case-studies/issue-1946/raw/start-command-npm.json @@ -0,0 +1,9 @@ +{ + "name": "start-command", + "version": "0.29.1", + "dist-tags": { + "latest": "0.29.1" + }, + "time_modified": "2026-06-17T09:18:26.614Z", + "homepage": "https://github.com/link-foundation/start#readme" +} \ No newline at end of file diff --git a/docs/case-studies/issue-1946/raw/start-command-repo.json b/docs/case-studies/issue-1946/raw/start-command-repo.json new file mode 100644 index 000000000..fbb4a5a94 --- /dev/null +++ b/docs/case-studies/issue-1946/raw/start-command-repo.json @@ -0,0 +1 @@ +{"description":"Gamification of coding, execute any command with ability to auto-report issues on GitHub","name":"start","pushedAt":"2026-06-17T09:20:48Z"} diff --git a/docs/case-studies/issue-1946/upstream/box-dind-host-image-redownload.md b/docs/case-studies/issue-1946/upstream/box-dind-host-image-redownload.md new file mode 100644 index 000000000..d2c327afb --- /dev/null +++ b/docs/case-studies/issue-1946/upstream/box-dind-host-image-redownload.md @@ -0,0 +1,86 @@ +# box-dind: nested daemon still re-downloads host images (~30 GB, ~1 hour) despite passthrough β€” continuation of #94 / #102 + +## Summary + +When `solve`/`hive` runs inside `konard/hive-mind-dind:2.0.6` (docker-in-docker), +the nested Docker daemon starts with an **empty image store** and re-pulls the +multi-GB image that the **host already has**, instead of reusing it via +passthrough. On a recent run this cost ~30 GB of download and ~1 hour of +wall-clock before the actual task started. + +This is the same defect tracked in #94 ("nested daemon starts with empty image +store, forcing re-download of host images") and #102 ("silent no-op when +`DIND_HOST_PASSTHROUGH_IMAGES` is set but no host socket is mounted"), both +closed, but the symptom still reproduces in production with box-dind 2.0.6. + +## Environment + +``` +image: konard/hive-mind-dind:2.0.6 +HIVE_MIND_IMAGE_VARIANT=dind +docker: 29.5.3 +start-command: 0.29.1 (detached docker launch) +``` + +The dind entrypoint reports passthrough "complete", yet the image is still pulled +fresh: + +``` +[dind-entrypoint] Starting dockerd (storage-driver=fuse-overlayfs, data-root=/var/lib/docker) +[dind-entrypoint] dockerd is ready after 1s +[dind-entrypoint] image preload/passthrough complete <-- claims complete… +``` + +…but the overall run still took ~54 minutes and consumed ~30 GB, consistent with +a full re-pull of the dind image inside the nested daemon. + +## Reproduction + +1. Launch a detached docker session using the dind variant on a host that already + has `konard/hive-mind-dind:2.0.6` pulled. +2. Observe wall-clock (~1 hour) and disk delta (`df -h` before/after shows ~30 GB + consumed inside the container's data-root). +3. Note the entrypoint prints `image preload/passthrough complete` even though no + host image was actually copied into the nested store. + +## Expected + +The nested daemon should reuse the host's already-present image (via the +documented passthrough: host docker socket mount + `DIND_HOST_PASSTHROUGH_IMAGES` +allowlist), so no multi-GB re-download occurs and startup is seconds, not an hour. + +## Workaround + +Mount the host docker socket read-only and set the allowlist so passthrough can +actually copy the image: + +``` +docker run ... \ + -v /var/run/docker.sock:/var/run/host-docker.sock:ro \ + -e DIND_HOST_PASSTHROUGH_IMAGES=konard/hive-mind-dind:2.0.6 \ + konard/hive-mind-dind:2.0.6 ... +``` + +## Suggested fix (code level) + +1. **Fail loudly, not silently** (re #102): if `DIND_HOST_PASSTHROUGH_IMAGES` is + set but no host docker socket is mounted/reachable, the entrypoint must log a + clear error and either abort or fall back to pull with an explicit warning β€” + never print `image preload/passthrough complete` when nothing was copied. +2. **Verify the copy**: after passthrough, assert the allowlisted image is + actually present in the nested daemon (`docker image inspect `); if + absent, surface it instead of proceeding to a silent re-pull. +3. **Document the required deployment wiring** (socket mount + allowlist) in the + box-dind README and in the hive-mind deployment so operators get passthrough + by default. + +## References + +- box #94 (empty nested image store β†’ re-download) β€” closed, symptom persists. +- box #102 (silent passthrough no-op) β€” closed, symptom persists. +- Downstream report: link-assistant/hive-mind #1914 and #1946 (full case study + with evidence and screenshots). + +--- + +**Filed as:** https://github.com/link-foundation/box/issues/106 diff --git a/docs/case-studies/issue-1946/upstream/start-detached-docker-image-prep-log.md b/docs/case-studies/issue-1946/upstream/start-detached-docker-image-prep-log.md new file mode 100644 index 000000000..d72a97444 --- /dev/null +++ b/docs/case-studies/issue-1946/upstream/start-detached-docker-image-prep-log.md @@ -0,0 +1,115 @@ +# Detached docker session log omits the image-preparation phase (`docker pull` / dind boot) β€” `$` does not preserve the full log in one file + +## Summary + +When a command is launched with `--isolated docker --detached`, the session log +file (`/tmp/start-command/logs/isolation/docker/.log`) does **not** capture +the **image-preparation phase** β€” the `docker pull` of the image and the +docker-in-docker daemon boot that happen before the container's command stream is +attached. The whole point of `$` is to guarantee that _every_ step that ran ends +up in one log file; this phase is silently missing. + +This is a concrete continuation of #103 ("Log is not being recorded in real +time") and #89 ("better output for the virtual docker pull command"), both of +which are closed but whose symptom still reproduces on `start-command 0.29.1`. + +## Environment + +``` +start-command version: 0.29.1 +OS: linux 6.8.0-124-generic +Bun: 1.3.14 +docker: 29.5.3 +``` + +Launch (detached docker, multi-GB image): + +``` +$ --isolated docker --detached --session \ + --image konard/hive-mind-dind:2.0.6 \ + solve --model opus --tool claude ... +``` + +## Reproduction + +1. Launch any detached docker session whose image is **not** already present, so a + real `docker pull` occurs (a multi-GB image makes the window large enough to + observe). The image pull / dind boot then runs for minutes. +2. While the pull is in progress (e.g. ~7 minutes in), upload the session log: + + ``` + $ --upload-log + ⏳ Uploading 546 B (πŸ”’ private)... + ``` + + The log is **546 bytes** β€” only the header. None of the `docker pull` + progress, layer extraction, or dind-entrypoint output is in the file yet. + +3. After the container finally starts, `cat` the session log. It jumps straight + from the header to: + + ``` + Command started in detached docker container: + Container ID: ... + ... + [dind-entrypoint] Starting dockerd (...) + [dind-entrypoint] dockerd is ready after 1s + [dind-entrypoint] image preload/passthrough complete + πŸ“ Log file: /home/box/solve-...log + ``` + + i.e. the minutes spent pulling/preparing the image left **no trace** in the + log; the first ~7+ minutes are unaccounted for between `Timestamp:` (header) + and the container start line. + +## Expected + +The session log should stream the image-preparation phase from the first byte: +the `docker pull` progress (or at least its start/finish + duration), and the +dind boot, so the single session-log file is a faithful, gap-free record of +everything that ran β€” which is the reason `$` exists. + +## Impact + +- Operators tailing `$ --upload-log` during startup see an empty/header-only log + and cannot tell whether the run is progressing, hung, or pulling a huge image. +- The "one complete log" guarantee is broken precisely for the longest, most + failure-prone phase of a docker run. + +## Workaround + +Read the host docker logs separately during the prep window: + +``` +docker pull # observe progress on the host +docker logs # once the container exists +``` + +…but this defeats the purpose of the unified `$` session log. + +## Suggested fix (code level) + +In the detached-docker backend, before attaching the container command stream, +tee the image-preparation output into the session log file: + +1. When an image pull is required, run it with progress and append its + stdout/stderr (or a periodic progress summary) to the session-log path + instead of discarding it. +2. Append the dind-entrypoint boot lines to the same file as they occur (they + already appear later β€” start them streaming from boot, not only once the + container command stream attaches). +3. Write a `Preparing image …` marker with a timestamp at the start of the + prep phase and an `Image ready ()` marker at the end, so even + without full progress the elapsed prep time is visible in the log. + +## References + +- start-command #103 (log not recorded in real time) β€” closed, symptom persists. +- start-command #89 (better output for virtual docker pull) β€” closed, symptom + persists. +- Downstream report: link-assistant/hive-mind #1946 (full case study with + evidence). + +--- + +**Filed as:** https://github.com/link-foundation/start/issues/138 diff --git a/src/session-monitor.lib.mjs b/src/session-monitor.lib.mjs index 759549811..accff8116 100644 --- a/src/session-monitor.lib.mjs +++ b/src/session-monitor.lib.mjs @@ -194,6 +194,32 @@ export function getTrackedSessionInfo(sessionName) { return activeSessions.get(sessionName) || null; } +/** + * Stop tracking a session that was registered optimistically but never actually + * started (e.g. the start-command launch failed). Removes it from the in-memory + * map and the durable store without emitting a `session_completed` audit event β€” + * the session never ran, so it has no exit code to record (issue #1946). + * + * @param {string} sessionName - Name/UUID of the session to drop + * @param {boolean} verbose - Whether to log verbose output + */ +export function untrackSession(sessionName, verbose = false) { + if (!sessionName) return; + const sessionInfo = activeSessions.get(sessionName) || null; + const existed = activeSessions.delete(sessionName); + if (verbose && existed) { + console.log(`[VERBOSE] Session ${sessionName} untracked (launch failed before it started)`); + } + if (sessionStore && isPersistableSession(sessionInfo)) { + try { + sessionStore.remove(sessionName, { status: 'launch-failed', exitCode: null }); + } catch (error) { + console.error(`[session-monitor] Could not remove untracked session ${sessionName}: ${error.message}`); + } + } + logEvent('session_untracked', { sessionName }); +} + /** * Get the number of active sessions being tracked * @param {boolean} verbose - Whether to log verbose output diff --git a/src/telegram-bot.mjs b/src/telegram-bot.mjs index 32a48ff08..b662c3e49 100755 --- a/src/telegram-bot.mjs +++ b/src/telegram-bot.mjs @@ -328,7 +328,7 @@ const { isOldMessage: _isOldMessage, isGroupChat: _isGroupChat, isChatAuthorized const { installTelegramFormattingFallback, isTelegramFormattingError, isTelegramMessageTooLongError, safeEditMessageText, safeReply, TELEGRAM_TEXT_LIMIT } = await import('./telegram-safe-reply.lib.mjs'); const { registerTerminalWatchCommand, startAutoTerminalWatchForSession } = await import('./telegram-terminal-watch-command.lib.mjs'); const { launchBotWithRetry } = await import('./telegram-bot-launcher.lib.mjs'); -const { trackSession, startSessionMonitoring, hasActiveSessionForUrlAsync, findStoppableSessionByUrl, setSessionStore, setSessionLogger, resumeTrackedSessions, getActiveSessionCount } = await import('./session-monitor.lib.mjs'); +const { trackSession, untrackSession, startSessionMonitoring, hasActiveSessionForUrlAsync, findStoppableSessionByUrl, setSessionStore, setSessionLogger, resumeTrackedSessions, getActiveSessionCount } = await import('./session-monitor.lib.mjs'); const { createBotLogger } = await import('./bot-logger.lib.mjs'); const { createSessionStore } = await import('./session-store.lib.mjs'); const { createHeartbeat, resumeSessionsOnLaunch, createShutdownHandler } = await import('./bot-lifecycle.lib.mjs'); @@ -524,7 +524,7 @@ async function validateGitHubUrl(args, options = {}) { return { valid: true, parsed, normalizedUrl: url }; } -const executeAndUpdateMessage = buildExecuteAndUpdateMessage({ resolveIsolation, ISOLATION_BACKEND, isolationRunner, VERBOSE, executeStartScreen, trackSession, AUTO_WATCH_MESSAGE, startAutoTerminalWatchForSession, bot, formatExecutingWorkSessionMessage }); +const executeAndUpdateMessage = buildExecuteAndUpdateMessage({ resolveIsolation, ISOLATION_BACKEND, isolationRunner, VERBOSE, executeStartScreen, trackSession, untrackSession, AUTO_WATCH_MESSAGE, startAutoTerminalWatchForSession, bot, formatExecutingWorkSessionMessage, formatStartingWorkSessionMessage }); bot.command('help', async ctx => { VERBOSE && console.log('[VERBOSE] /help command received'); diff --git a/src/telegram-command-execution.lib.mjs b/src/telegram-command-execution.lib.mjs index b6ccb12b5..d4350ffa3 100644 --- a/src/telegram-command-execution.lib.mjs +++ b/src/telegram-command-execution.lib.mjs @@ -98,7 +98,7 @@ function executeWithCommand(startScreenCmd, command, args, verbose = false) { * @returns {Function} executeAndUpdateMessage(ctx, startingMessage, commandName, args, infoBlock, perCommandIsolation, tool, urlContext, sessionExtras) */ export function buildExecuteAndUpdateMessage(deps) { - const { resolveIsolation, ISOLATION_BACKEND, isolationRunner, VERBOSE, executeStartScreen, trackSession, AUTO_WATCH_MESSAGE, startAutoTerminalWatchForSession, bot, formatExecutingWorkSessionMessage } = deps; + const { resolveIsolation, ISOLATION_BACKEND, isolationRunner, VERBOSE, executeStartScreen, trackSession, untrackSession, AUTO_WATCH_MESSAGE, startAutoTerminalWatchForSession, bot, formatExecutingWorkSessionMessage, formatStartingWorkSessionMessage } = deps; return async function executeAndUpdateMessage(ctx, startingMessage, commandName, args, infoBlock, perCommandIsolation = null, tool = 'claude', urlContext = null, { showLimits = false, limitsAtStart = null, locale = null } = {}) { const { chat, message_id: msgId } = startingMessage; const safeEdit = async text => { @@ -115,12 +115,23 @@ export function buildExecuteAndUpdateMessage(deps) { const iso = await resolveIsolation(perCommandIsolation, ISOLATION_BACKEND, isolationRunner, VERBOSE); let result, session, sessionInfo; if (iso) { + // Issue #1946: the isolation session UUID is generated locally, *before* + // start-command launches the (potentially multi-GB, slow) container. Show + // the UUID + isolation backend and track the session immediately so it is + // addressable by /watch, /log and /status during the whole startup window + // instead of only after the blocking launch returns. start-command runs the + // container detached, so the await below does not block other bot commands. session = iso.runner.generateSessionId(); VERBOSE && console.log(`[VERBOSE] Using isolation (${iso.backend}), session: ${session}`); + sessionInfo = { ...baseSessionInfo, isolationBackend: iso.backend, sessionId: session }; + trackSession(session, sessionInfo, VERBOSE); + await safeEdit(formatStartingWorkSessionMessage({ sessionName: session, isolationBackend: iso.backend, infoBlock, locale })); result = await iso.runner.executeWithIsolation(commandName, args, { backend: iso.backend, sessionId: session, tool, verbose: VERBOSE }); - if (result.success) { - sessionInfo = { ...baseSessionInfo, isolationBackend: iso.backend, sessionId: session }; - trackSession(session, sessionInfo, VERBOSE); + if (!result.success) { + // The launch never produced a live container β€” drop the optimistic + // tracking so a phantom session is not monitored or resumed. + if (typeof untrackSession === 'function') untrackSession(session, VERBOSE); + sessionInfo = undefined; } } else { result = await executeStartScreen(commandName, args); diff --git a/src/work-session-formatting.lib.mjs b/src/work-session-formatting.lib.mjs index 783ac23e7..64fb75e63 100644 --- a/src/work-session-formatting.lib.mjs +++ b/src/work-session-formatting.lib.mjs @@ -65,9 +65,19 @@ export function formatSessionDurationSeconds(seconds) { return parts.join(' '); } -export function formatStartingWorkSessionMessage({ infoBlock = '', locale = null } = {}) { +export function formatStartingWorkSessionMessage({ sessionName = null, isolationBackend = null, infoBlock = '', locale = null } = {}) { + const header = text(locale, 'telegram.work_session_starting', 'πŸ”„ Starting...'); const details = infoBlock ? `\n\n${infoBlock}` : ''; - return `${text(locale, 'telegram.work_session_starting', 'πŸ”„ Starting...')}${details}`; + // Issue #1946: for isolation backends the session UUID is known *before* the + // (potentially long, multi-GB) container/image preparation finishes, so + // surface it together with the isolation backend right away. This makes the + // session addressable by /watch, /log and /status while it is still starting, + // instead of leaving an info-less "Starting..." up for the whole image pull. + if (!sessionName) return `${header}${details}`; + const sessionLabel = text(locale, 'telegram.session_label', 'Session'); + const isolationLabel = text(locale, 'telegram.isolation_label', 'Isolation'); + const isolationInfo = isolationBackend ? `\nπŸ”’ ${isolationLabel}: \`${isolationBackend}\`` : ''; + return `${header}\n\nπŸ“Š ${sessionLabel}: \`${sessionName}\`${isolationInfo}${details}`; } export function formatExecutingWorkSessionMessage({ sessionName = 'unknown', isolationBackend = null, infoBlock = '', locale = null } = {}) { diff --git a/tests/test-docker-box-migration.mjs b/tests/test-docker-box-migration.mjs index 85ecf6584..21e1585ca 100644 --- a/tests/test-docker-box-migration.mjs +++ b/tests/test-docker-box-migration.mjs @@ -21,7 +21,7 @@ const dockerfiles = ['Dockerfile', 'coolify/Dockerfile']; for (const filePath of dockerfiles) { const content = await read(filePath); - assertIncludes(content, 'FROM konard/box:2.3.2', filePath); + assertIncludes(content, 'FROM konard/box:2.3.5', filePath); assertIncludes(content, 'Keep this in lockstep with the DinD base-image release.', filePath); assertIncludes(content, 'USER box', filePath); assertIncludes(content, 'WORKDIR /home/box', filePath); diff --git a/tests/test-docker-dind-variant.mjs b/tests/test-docker-dind-variant.mjs index 585ec884e..7143be5dc 100644 --- a/tests/test-docker-dind-variant.mjs +++ b/tests/test-docker-dind-variant.mjs @@ -42,7 +42,7 @@ await assertFileExists('scripts/verify-dind-exec-defaults.sh'); const dindDockerfile = await read('Dockerfile.dind'); const verifyDindExecDefaults = await read('scripts/verify-dind-exec-defaults.sh'); -assertIncludes(dindDockerfile, 'FROM konard/box-dind:2.3.2', 'Dockerfile.dind'); +assertIncludes(dindDockerfile, 'FROM konard/box-dind:2.3.5', 'Dockerfile.dind'); assertIncludes(dindDockerfile, 'host-image passthrough allowlist', 'Dockerfile.dind'); assertIncludes(dindDockerfile, 'ARG HIVE_MIND_VERSION=latest', 'Dockerfile.dind'); assertIncludes(dindDockerfile, 'ENV HIVE_MIND_IMAGE_VARIANT=dind', 'Dockerfile.dind'); diff --git a/tests/test-issue-1860-docker-isolation.mjs b/tests/test-issue-1860-docker-isolation.mjs index 6d2be33f2..8c06e6368 100644 --- a/tests/test-issue-1860-docker-isolation.mjs +++ b/tests/test-issue-1860-docker-isolation.mjs @@ -200,12 +200,15 @@ const executeAndUpdateMessage = buildExecuteAndUpdateMessage({ trackSession: (sessionId, sessionInfo) => { directTrackCalls.push({ sessionId, sessionInfo }); }, + untrackSession: () => {}, AUTO_WATCH_MESSAGE: false, startAutoTerminalWatchForSession: async () => { throw new Error('auto watch should not run in this test'); }, bot: {}, formatExecutingWorkSessionMessage: ({ sessionName, isolationBackend }) => `session=${sessionName} isolation=${isolationBackend}`, + // Issue #1946: the session UUID + isolation are surfaced before the launch. + formatStartingWorkSessionMessage: ({ sessionName = null, isolationBackend = null } = {}) => (sessionName ? `starting session=${sessionName} isolation=${isolationBackend}` : 'starting'), }); await executeAndUpdateMessage( diff --git a/tests/test-issue-1946-docker-isolation-async.mjs b/tests/test-issue-1946-docker-isolation-async.mjs new file mode 100644 index 000000000..d1fbc89c7 --- /dev/null +++ b/tests/test-issue-1946-docker-isolation-async.mjs @@ -0,0 +1,169 @@ +#!/usr/bin/env node + +/** + * @hive-mind-test-suite default + * + * Issue #1946: when the Telegram bot launches a task with `--isolation docker`, + * the session UUID + isolation backend must be surfaced (and the session + * tracked) *immediately* β€” before the potentially hour-long docker image pull / + * container startup finishes β€” so the run is addressable by /watch, /log and + * /status during the whole startup window. Previously the UUID and isolation + * were only shown (and the session only tracked) AFTER the blocking start-command + * launch returned, leaving an info-less "πŸ”„ Starting..." up for the entire pull. + */ + +import assert from 'assert/strict'; +import { formatStartingWorkSessionMessage } from '../src/work-session-formatting.lib.mjs'; +import { buildExecuteAndUpdateMessage } from '../src/telegram-command-execution.lib.mjs'; + +let passed = 0; +let failed = 0; + +async function test(name, fn) { + try { + await fn(); + console.log(`PASS: ${name}`); + passed++; + } catch (error) { + console.log(`FAIL: ${name}`); + console.log(` ${error.stack || error.message}`); + failed++; + } +} + +const SESSION = '08ec853a-158a-4314-83e9-c6365670fe4c'; + +// --- formatStartingWorkSessionMessage ---------------------------------------- + +await test('starting message omits session block when no session is known yet', () => { + const msg = formatStartingWorkSessionMessage({ infoBlock: 'Issue: x' }); + assert.ok(msg.includes('Starting'), 'keeps the Starting header'); + assert.ok(!msg.includes('Session:'), 'no Session line without a session name'); + assert.ok(!msg.includes('Isolation:'), 'no Isolation line without a session name'); + assert.ok(msg.includes('Issue: x'), 'keeps the info block'); +}); + +await test('starting message surfaces session UUID + isolation when known', () => { + const msg = formatStartingWorkSessionMessage({ sessionName: SESSION, isolationBackend: 'docker', infoBlock: 'Issue: x' }); + assert.ok(msg.includes('Starting'), 'keeps the Starting header'); + assert.ok(msg.includes(`\`${SESSION}\``), 'shows the session UUID'); + assert.ok(/Isolation: `docker`/.test(msg), 'shows the isolation backend'); + assert.ok(msg.includes('Issue: x'), 'keeps the info block'); +}); + +await test('starting message shows the session even when no isolation backend is passed', () => { + const msg = formatStartingWorkSessionMessage({ sessionName: SESSION }); + assert.ok(msg.includes(`\`${SESSION}\``), 'shows the session UUID'); + assert.ok(!msg.includes('Isolation:'), 'no Isolation line when backend is null'); +}); + +// --- executeAndUpdateMessage ordering ---------------------------------------- + +function makeHarness({ launchResult, launchDeferred }) { + const edits = []; + const events = []; + const tracked = new Map(); + const untracked = []; + + const ctx = { + from: { id: 7 }, + chat: { id: 42 }, + telegram: { + editMessageText: async (_chatId, _msgId, _inline, text) => { + edits.push(text); + events.push({ type: 'edit', text }); + }, + }, + }; + const startingMessage = { chat: { id: 42 }, message_id: 100 }; + + const iso = { + backend: 'docker', + runner: { + generateSessionId: () => SESSION, + executeWithIsolation: async () => { + events.push({ type: 'launch-start' }); + const res = launchDeferred ? await launchDeferred : launchResult; + events.push({ type: 'launch-end' }); + return res; + }, + }, + }; + + const deps = { + resolveIsolation: async () => iso, + ISOLATION_BACKEND: 'docker', + isolationRunner: {}, + VERBOSE: false, + executeStartScreen: async () => ({ success: false }), + trackSession: (name, info) => { + tracked.set(name, info); + events.push({ type: 'track', name }); + }, + untrackSession: name => { + untracked.push(name); + events.push({ type: 'untrack', name }); + }, + AUTO_WATCH_MESSAGE: false, + startAutoTerminalWatchForSession: async () => {}, + bot: {}, + formatExecutingWorkSessionMessage: ({ sessionName }) => `EXECUTING ${sessionName}`, + formatStartingWorkSessionMessage, + }; + + const run = buildExecuteAndUpdateMessage(deps); + return { ctx, startingMessage, run, edits, events, tracked, untracked }; +} + +await test('session is tracked and shown BEFORE the (blocking) launch resolves', async () => { + let resolveLaunch; + const launchDeferred = new Promise(r => { + resolveLaunch = r; + }); + const h = makeHarness({ launchDeferred }); + + const promise = h.run(h.ctx, h.startingMessage, 'solve', ['https://github.com/o/r/issues/1'], 'Issue: x', 'docker'); + + // Let the synchronous prelude + the first awaited safeEdit run, but do NOT + // resolve the launch yet β€” this models the long image-pull window. + await new Promise(r => setImmediate(r)); + + assert.ok(h.tracked.has(SESSION), 'session is tracked while the container is still starting'); + const startingEdit = h.edits.find(e => e.includes(SESSION)); + assert.ok(startingEdit, 'the message already shows the session UUID during startup'); + assert.ok(/Isolation: `docker`/.test(startingEdit), 'the startup message shows the docker isolation backend'); + + const trackIdx = h.events.findIndex(e => e.type === 'track'); + const launchEndIdx = h.events.findIndex(e => e.type === 'launch-end'); + assert.ok(trackIdx >= 0, 'a track event was emitted'); + assert.ok(launchEndIdx === -1, 'the launch has not finished yet when the session is already visible'); + + resolveLaunch({ success: true, sessionId: SESSION, output: 'ok' }); + await promise; + + // After success the session stays tracked and the message advances to executing. + assert.ok(h.tracked.has(SESSION), 'session remains tracked after a successful launch'); + assert.equal(h.untracked.length, 0, 'a successful launch never untracks the session'); + assert.ok( + h.edits.some(e => e === `EXECUTING ${SESSION}`), + 'message advances to the executing state' + ); +}); + +await test('a failed launch untracks the optimistically tracked session', async () => { + const h = makeHarness({ launchResult: { success: false, sessionId: SESSION, output: '', error: 'boom' } }); + + await h.run(h.ctx, h.startingMessage, 'solve', ['https://github.com/o/r/issues/1'], 'Issue: x', 'docker'); + + assert.deepEqual(h.untracked, [SESSION], 'the phantom session is untracked'); + const trackIdx = h.events.findIndex(e => e.type === 'track'); + const untrackIdx = h.events.findIndex(e => e.type === 'untrack'); + assert.ok(trackIdx >= 0 && untrackIdx > trackIdx, 'untrack happens after the optimistic track'); + assert.ok( + h.edits.some(e => /boom/.test(e)), + 'the error is surfaced to the user' + ); +}); + +console.log(`\n${passed} passed, ${failed} failed`); +if (failed > 0) process.exit(1);