e2411e5c54
Per FR1 of test_sandbox_hardening_20260619 spec, all writes must be under <project_root>/tests/. Tests that create an AppController + call init_state() trigger session_logger.open_session() at src/session_logger.py:85 which writes to paths.get_logs_dir() - by default logs/ at project root, outside tests/. This was triggered by tests/test_context_composition_decoupled.py and surfaced in the latest batched test run. Add a function-scoped autouse fixture in tests/conftest.py that monkeypatches src.paths.get_logs_dir to return a per-run tests/-allowed path. Per-run subdirectory prevents log_registry.toml collisions across test runs. Skips test_paths.py, test_test_sandbox.py, and test_app_controller_offloading.py which directly assert on paths.get_logs_dir() behavior or set up their own session via tmp_session_dir (overriding get_logs_dir at the module level breaks those tests' assertions). No production code is modified.
381 lines
13 KiB
JSON
381 lines
13 KiB
JSON
{
|
|
"name": ".opencode",
|
|
"lockfileVersion": 3,
|
|
"requires": true,
|
|
"packages": {
|
|
"": {
|
|
"dependencies": {
|
|
"@opencode-ai/plugin": "1.17.8"
|
|
}
|
|
},
|
|
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.4.tgz",
|
|
"integrity": "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==",
|
|
"cpu": [
|
|
"arm64"
|
|
],
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"darwin"
|
|
]
|
|
},
|
|
"node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.4.tgz",
|
|
"integrity": "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"darwin"
|
|
]
|
|
},
|
|
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.4.tgz",
|
|
"integrity": "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==",
|
|
"cpu": [
|
|
"arm"
|
|
],
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
]
|
|
},
|
|
"node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.4.tgz",
|
|
"integrity": "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==",
|
|
"cpu": [
|
|
"arm64"
|
|
],
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
]
|
|
},
|
|
"node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.4.tgz",
|
|
"integrity": "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
]
|
|
},
|
|
"node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.4.tgz",
|
|
"integrity": "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"win32"
|
|
]
|
|
},
|
|
"node_modules/@opencode-ai/plugin": {
|
|
"version": "1.17.8",
|
|
"resolved": "https://registry.npmjs.org/@opencode-ai/plugin/-/plugin-1.17.8.tgz",
|
|
"integrity": "sha512-pkmnYQz5d+xf0h6fAjgplSSJKLqgYKOXr+x6y40GRPdW+/IfndFkMGq7CDsG2SieGD84qv4zYDMyolGo06IMpw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@opencode-ai/sdk": "1.17.8",
|
|
"effect": "4.0.0-beta.74",
|
|
"zod": "4.1.8"
|
|
},
|
|
"peerDependencies": {
|
|
"@opentui/core": ">=0.3.4",
|
|
"@opentui/keymap": ">=0.3.4",
|
|
"@opentui/solid": ">=0.3.4"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"@opentui/core": {
|
|
"optional": true
|
|
},
|
|
"@opentui/keymap": {
|
|
"optional": true
|
|
},
|
|
"@opentui/solid": {
|
|
"optional": true
|
|
}
|
|
}
|
|
},
|
|
"node_modules/@opencode-ai/sdk": {
|
|
"version": "1.17.8",
|
|
"resolved": "https://registry.npmjs.org/@opencode-ai/sdk/-/sdk-1.17.8.tgz",
|
|
"integrity": "sha512-6MKmsj2ujZyL44jy+12dpwWYDYKPS9fUr+0wVQxaIlPYQ/eAt8T8T3QrybplJ5ZtHfZUX+esXZ02x2UYYm7oEw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"cross-spawn": "7.0.6"
|
|
}
|
|
},
|
|
"node_modules/@standard-schema/spec": {
|
|
"version": "1.1.0",
|
|
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
|
|
"integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/cross-spawn": {
|
|
"version": "7.0.6",
|
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
|
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"path-key": "^3.1.0",
|
|
"shebang-command": "^2.0.0",
|
|
"which": "^2.0.1"
|
|
},
|
|
"engines": {
|
|
"node": ">= 8"
|
|
}
|
|
},
|
|
"node_modules/detect-libc": {
|
|
"version": "2.1.2",
|
|
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
|
"license": "Apache-2.0",
|
|
"optional": true,
|
|
"engines": {
|
|
"node": ">=8"
|
|
}
|
|
},
|
|
"node_modules/effect": {
|
|
"version": "4.0.0-beta.74",
|
|
"resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-beta.74.tgz",
|
|
"integrity": "sha512-Yx+Kh12U+i2FmjwEfKs+ePFmpMd43RPD1oGqc/VraSS9bYzvF0Ff3PojwEFEVEewp8xc92Uxu28gTspU4qyvHA==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@standard-schema/spec": "^1.1.0",
|
|
"fast-check": "^4.8.0",
|
|
"find-my-way-ts": "^0.1.6",
|
|
"ini": "^7.0.0",
|
|
"kubernetes-types": "^1.30.0",
|
|
"msgpackr": "^2.0.1",
|
|
"multipasta": "^0.2.7",
|
|
"toml": "^4.1.1",
|
|
"uuid": "^14.0.0",
|
|
"yaml": "^2.9.0"
|
|
}
|
|
},
|
|
"node_modules/fast-check": {
|
|
"version": "4.8.0",
|
|
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-4.8.0.tgz",
|
|
"integrity": "sha512-GOJ158CUMnN6cSahsv4+ExARvIDuzzinFjkp0E9WtiBa5zcVeLozVkWaE4IzFcc+Y48Wp1EDlUZsXRyAztQcSg==",
|
|
"funding": [
|
|
{
|
|
"type": "individual",
|
|
"url": "https://github.com/sponsors/dubzzz"
|
|
},
|
|
{
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/fast-check"
|
|
}
|
|
],
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"pure-rand": "^8.0.0"
|
|
},
|
|
"engines": {
|
|
"node": ">=12.17.0"
|
|
}
|
|
},
|
|
"node_modules/find-my-way-ts": {
|
|
"version": "0.1.6",
|
|
"resolved": "https://registry.npmjs.org/find-my-way-ts/-/find-my-way-ts-0.1.6.tgz",
|
|
"integrity": "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/ini": {
|
|
"version": "7.0.0",
|
|
"resolved": "https://registry.npmjs.org/ini/-/ini-7.0.0.tgz",
|
|
"integrity": "sha512-ifK0CgjALofS5bkrcTy4RaQ9Vx2Knf/eLeIO+NaswQEpH1UblrtTSCIvN71qQDMq0PeQ/SSPojvEJp9vvvfr+w==",
|
|
"license": "ISC",
|
|
"engines": {
|
|
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
}
|
|
},
|
|
"node_modules/isexe": {
|
|
"version": "2.0.0",
|
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
|
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
|
"license": "ISC"
|
|
},
|
|
"node_modules/kubernetes-types": {
|
|
"version": "1.30.0",
|
|
"resolved": "https://registry.npmjs.org/kubernetes-types/-/kubernetes-types-1.30.0.tgz",
|
|
"integrity": "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==",
|
|
"license": "Apache-2.0"
|
|
},
|
|
"node_modules/msgpackr": {
|
|
"version": "2.0.4",
|
|
"resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.4.tgz",
|
|
"integrity": "sha512-o1C5KRmuRt+apqMr1HuGSqWStZoRBUpEsCsl15uM9VdAF1qHLtvMOU2En747EnTyEl6c4pzPewRMFF31s1CNbA==",
|
|
"license": "MIT",
|
|
"optionalDependencies": {
|
|
"msgpackr-extract": "^3.0.4"
|
|
}
|
|
},
|
|
"node_modules/msgpackr-extract": {
|
|
"version": "3.0.4",
|
|
"resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.4.tgz",
|
|
"integrity": "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==",
|
|
"hasInstallScript": true,
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"dependencies": {
|
|
"node-gyp-build-optional-packages": "5.2.2"
|
|
},
|
|
"bin": {
|
|
"download-msgpackr-prebuilds": "bin/download-prebuilds.js"
|
|
},
|
|
"optionalDependencies": {
|
|
"@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4",
|
|
"@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4",
|
|
"@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4",
|
|
"@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4",
|
|
"@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4",
|
|
"@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4"
|
|
}
|
|
},
|
|
"node_modules/multipasta": {
|
|
"version": "0.2.7",
|
|
"resolved": "https://registry.npmjs.org/multipasta/-/multipasta-0.2.7.tgz",
|
|
"integrity": "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/node-gyp-build-optional-packages": {
|
|
"version": "5.2.2",
|
|
"resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
|
|
"integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"dependencies": {
|
|
"detect-libc": "^2.0.1"
|
|
},
|
|
"bin": {
|
|
"node-gyp-build-optional-packages": "bin.js",
|
|
"node-gyp-build-optional-packages-optional": "optional.js",
|
|
"node-gyp-build-optional-packages-test": "build-test.js"
|
|
}
|
|
},
|
|
"node_modules/path-key": {
|
|
"version": "3.1.1",
|
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=8"
|
|
}
|
|
},
|
|
"node_modules/pure-rand": {
|
|
"version": "8.4.0",
|
|
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-8.4.0.tgz",
|
|
"integrity": "sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==",
|
|
"funding": [
|
|
{
|
|
"type": "individual",
|
|
"url": "https://github.com/sponsors/dubzzz"
|
|
},
|
|
{
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/fast-check"
|
|
}
|
|
],
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/shebang-command": {
|
|
"version": "2.0.0",
|
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"shebang-regex": "^3.0.0"
|
|
},
|
|
"engines": {
|
|
"node": ">=8"
|
|
}
|
|
},
|
|
"node_modules/shebang-regex": {
|
|
"version": "3.0.0",
|
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=8"
|
|
}
|
|
},
|
|
"node_modules/toml": {
|
|
"version": "4.1.1",
|
|
"resolved": "https://registry.npmjs.org/toml/-/toml-4.1.1.tgz",
|
|
"integrity": "sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw==",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=20"
|
|
}
|
|
},
|
|
"node_modules/uuid": {
|
|
"version": "14.0.1",
|
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.1.tgz",
|
|
"integrity": "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==",
|
|
"funding": [
|
|
"https://github.com/sponsors/broofa",
|
|
"https://github.com/sponsors/ctavan"
|
|
],
|
|
"license": "MIT",
|
|
"bin": {
|
|
"uuid": "dist-node/bin/uuid"
|
|
}
|
|
},
|
|
"node_modules/which": {
|
|
"version": "2.0.2",
|
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
|
"license": "ISC",
|
|
"dependencies": {
|
|
"isexe": "^2.0.0"
|
|
},
|
|
"bin": {
|
|
"node-which": "bin/node-which"
|
|
},
|
|
"engines": {
|
|
"node": ">= 8"
|
|
}
|
|
},
|
|
"node_modules/yaml": {
|
|
"version": "2.9.0",
|
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
|
|
"integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
|
|
"license": "ISC",
|
|
"bin": {
|
|
"yaml": "bin.mjs"
|
|
},
|
|
"engines": {
|
|
"node": ">= 14.6"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/eemeli"
|
|
}
|
|
},
|
|
"node_modules/zod": {
|
|
"version": "4.1.8",
|
|
"license": "MIT",
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/colinhacks"
|
|
}
|
|
}
|
|
}
|
|
}
|