{"_id":"@beremaran/godot-agent-loop","_rev":"10-5e705e720e7bc72e7ad86718d4fe21b6","name":"@beremaran/godot-agent-loop","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@beremaran/godot-agent-loop","version":"1.0.0","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","evidence-first","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.0.0","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"2a881925f0421e93f2d1f0dd7b5ebd1e51140e7c","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.0.0.tgz","fileCount":70,"integrity":"sha512-LbTSasVOISjpglBupUw4EDV4KLkDQ4zSPMjdjtGedejVYpYmsQyGxKnCOUtiexgvZ6dWohOzRloW8nxdpr6MJQ==","signatures":[{"sig":"MEQCIAiA7NHT9S4GMEUgVJ8+sBEG5izdXwjilmzp7nL3leYyAiBj4aMZ8RxOFBwObF/88001d1DyC+2XrdPe+6tfWrQy7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8041757},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.0.0.tgz","engines":{"node":">=18.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"beremaran","email":"beremaran@gmail.com"},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.0.0.tgz","_integrity":"sha512-LbTSasVOISjpglBupUw4EDV4KLkDQ4zSPMjdjtGedejVYpYmsQyGxKnCOUtiexgvZ6dWohOzRloW8nxdpr6MJQ==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"Evidence-first MCP automation loop with 167 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pngjs":"^7.0.0","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.0.0_1784044557135_0.2515492593841182","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@beremaran/godot-agent-loop","version":"1.0.1","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.0.1","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"d3628bc7d4af0ddcf1688a7a9a1f56c1a25bd4ff","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.0.1.tgz","fileCount":70,"integrity":"sha512-fsc7NCpOa3bntUFflKCImC4KBO2U2lPElDjx8nu6dynSOWNSlE6OY26wJzy64sTrFiwoaKaEkW6/iqKxeSIT2w==","signatures":[{"sig":"MEUCIHb2RBqlQATcZagESndt4rzFgyx/Di4tRHBNN6c/J1uZAiEAnfCuzlTPssJJQ68MuhAoFQFkMmasieh8WqEf/JrMQmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8016605},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.0.1.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.0.1.tgz","_integrity":"sha512-fsc7NCpOa3bntUFflKCImC4KBO2U2lPElDjx8nu6dynSOWNSlE6OY26wJzy64sTrFiwoaKaEkW6/iqKxeSIT2w==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 167 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pngjs":"^7.0.0","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.0.1_1784102843854_0.7960669874033286","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@beremaran/godot-agent-loop","version":"1.1.0","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.0","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"040b032e2cfbf723e732f762c884b913e51f10be","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.0.tgz","fileCount":74,"integrity":"sha512-177diMvd/AvO7YU7D+IrsVESuQVQ5+ullQyWKhnXVIvxcO+ob8MbuwAyBM/umxtGUAnRDUXKOk+hWS3ebVi3ow==","signatures":[{"sig":"MEUCIQCLGDK+ym5Qd3MjOAmIWUMZggQst2ONTcVQKdtfmSFi6gIgM6UoaXSmHUzfpJ6k/N3YhkIq5SZgqAK45rYJED9jxNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8189332},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.0.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:editor-bridge && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:editor-bridge":"tests/godot/run-editor-bridge-tests.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.0.tgz","_integrity":"sha512-177diMvd/AvO7YU7D+IrsVESuQVQ5+ullQyWKhnXVIvxcO+ob8MbuwAyBM/umxtGUAnRDUXKOk+hWS3ebVi3ow==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 171 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pngjs":"^7.0.0","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.0_1784145477286_0.9221154193730361","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@beremaran/godot-agent-loop","version":"1.1.1","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.1","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"05c5aa8e2036a5a6e4178b1634365172f1e606e1","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.1.tgz","fileCount":73,"integrity":"sha512-uysMpwhNyVBavRIIB9OaxWqeZqkKg3ZnSfQEamXeWd3zcq6/92dXrGG4D0qZBKZzT+P8ku/24CtpS4xwt5FlZg==","signatures":[{"sig":"MEUCIQCbxu7ty3PRe0F413AA37w/vHxRuVwHSSGzF7fB2jsELwIgNRchS3DvJE9R9hWvrTkc9cwfxeO4LSP1mX6HyqJhOEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1224277},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.1.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:editor-bridge && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:editor-bridge":"tests/godot/run-editor-bridge-tests.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.1.tgz","_integrity":"sha512-uysMpwhNyVBavRIIB9OaxWqeZqkKg3ZnSfQEamXeWd3zcq6/92dXrGG4D0qZBKZzT+P8ku/24CtpS4xwt5FlZg==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 171 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pngjs":"^7.0.0","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.1_1784147436943_0.8747292084158083","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@beremaran/godot-agent-loop","version":"1.1.2","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.2","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"af7f3e9a53a8c74272bf34f58fcb67164d2631b6","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.2.tgz","fileCount":81,"integrity":"sha512-2JA/8OzpLOElyg+rqDl9ISF5/64S9jS4ymfLd8i/V/BWMa26S9VsybqV6aLSeFpJsg9J38YNW5FsvwVgKXbTYQ==","signatures":[{"sig":"MEQCIAmA06n9KN/v/MgaGyyCbA1wnjtMyN3/+OUJN9juUaETAiBeO1yd3IddmymdzeGprTKvK72VSdUUXu9b+qFTIeN/zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1396829},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.2.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:editor-bridge && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:editor-bridge":"tests/godot/run-editor-bridge-tests.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.2.tgz","_integrity":"sha512-2JA/8OzpLOElyg+rqDl9ISF5/64S9jS4ymfLd8i/V/BWMa26S9VsybqV6aLSeFpJsg9J38YNW5FsvwVgKXbTYQ==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 173 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.18.0","pngjs":"^7.0.0","ajv-formats":"^3.0.1","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.2_1784287476635_0.6106344272248017","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@beremaran/godot-agent-loop","version":"1.1.3","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.3","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"12a2d112955f52563042337b9536e5d38ef88437","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.3.tgz","fileCount":82,"integrity":"sha512-9N1ld0OmfroXopK91ZR9n6KyxRIicw1BoHKTk6ckUt292+5bSY6/Rm5oFmsHuPbKfU/XEaopnwLYv5IgH+JA5g==","signatures":[{"sig":"MEUCIHKmXlBanqEyiW/hlE5fpI9V8TQxnzm4sHTp5yZjhu+kAiEAnCp8PPmDkf010SdvZ3ctCkO+zSePFEUYJyN8p1c9aoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1404359},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.3.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:editor-bridge && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:editor-bridge":"tests/godot/run-editor-bridge-tests.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.3.tgz","_integrity":"sha512-9N1ld0OmfroXopK91ZR9n6KyxRIicw1BoHKTk6ckUt292+5bSY6/Rm5oFmsHuPbKfU/XEaopnwLYv5IgH+JA5g==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 173 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.18.0","pngjs":"^7.0.0","ajv-formats":"^3.0.1","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.3_1784474335900_0.16322011422836868","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@beremaran/godot-agent-loop","version":"1.1.4","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.4","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"6c742fdbe9245cb5d5669a9b0c6aaecee88be068","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.4.tgz","fileCount":82,"integrity":"sha512-UBP9/RsTlvFGq0C93lq8SAioB4+bxvLzSij3lhSDtAsgBFd6zDp3GEtCm/SQ+omc/W6sPW6NMK+3UVz7D8dTGg==","signatures":[{"sig":"MEMCH2o3P+4lZoQugctX+4f6XWCzfenVmmI4IpSnGZtcm6YCIG2N4IaaIvAmn3vjwIcnuMhPCl5s/VL33FqnLo5pie8t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1427166},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.4.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","inspector":"npx @modelcontextprotocol/inspector build/index.js","test:godot":"npm run test:godot:typecheck && npm run test:godot:editor-bridge && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:editor-bridge":"tests/godot/run-editor-bridge-tests.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.4.tgz","_integrity":"sha512-UBP9/RsTlvFGq0C93lq8SAioB4+bxvLzSij3lhSDtAsgBFd6zDp3GEtCm/SQ+omc/W6sPW6NMK+3UVz7D8dTGg==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 173 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.18.0","pngjs":"^7.0.0","ajv-formats":"^3.0.1","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"^0.23.0","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.4_1784524923375_0.6050237874769937","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@beremaran/godot-agent-loop","version":"1.1.5","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.5","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"9aa0b33897c248efce16cf1d43a833686192505b","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.5.tgz","fileCount":82,"integrity":"sha512-as5JqC8DCUNKT0BhgSbcOmZvahX5xdBsT+3T7VpoNB7+bFwqxGkmuJQcUeqSEB1tML4YYnXtWYaLNCjZFffLRQ==","signatures":[{"sig":"MEQCIF4/sqoZINIDkSWlMiDNGce42PluUfM9XH8ennRv30KPAiBxjvG4E2YcLEieSPNVM8YGZfaiL8mqpxVIf7kMkFG1iQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1430556},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.5.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm test && npm run lint && npm run coverage:check","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","eval:view":"cd evals/inspect && uv run inspect view --log-dir ../reports/inspect","inspector":"node scripts/run-inspector-cli.mjs node build/index.js --method tools/list","eval:smoke":"npm run eval:corpus && npm run eval:protocol && npm run eval:inspect:check","test:godot":"npm run test:godot:typecheck && npm run test:godot:editor-bridge && npm run test:godot:validate-script && npm run test:godot:operations && npm run test:godot:runtime && npm run test:godot:launch-demo","test:watch":"vitest","eval:corpus":"vitest run tests/agent-evaluations.test.ts","eval:paired":"node scripts/run-paired-behavioral-evaluation.mjs","eval:select":"node scripts/select-evaluation-cases.mjs","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","eval:compare":"node scripts/compare-evaluation-results.mjs","eval:inspect":"cd evals/inspect && uv run godot-agent-loop-eval run","eval:nightly":"cd evals/inspect && uv run godot-agent-loop-eval run --epochs 3","eval:release":"cd evals/inspect && uv run godot-agent-loop-eval run --epochs 3","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","eval:baseline":"node scripts/prepare-evaluation-baseline.mjs","eval:protocol":"npm run build && node scripts/run-protocol-evaluation.mjs","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs && npm run coverage:report","coverage:check":"npm run build && node scripts/generate-coverage-report.js --check && npm run coverage:engine -- --check","eval:calibrate":"node scripts/run-aa-calibration.mjs","coverage:engine":"node scripts/engine-surface-audit.js","coverage:report":"npm run build && node scripts/generate-coverage-report.js","assetlib:preview":"node scripts/capture-addon-preview.js","eval:inspect:sync":"cd evals/inspect && uv sync --frozen","release:candidate":"node scripts/build-release-candidate.js","test:golden-agent":"npm run build && vitest run --config vitest.e2e.config.ts tests/e2e/golden-agent-game.test.ts","eval:inspect:check":"cd evals/inspect && uv run godot-agent-loop-eval check","eval:inspect:smoke":"cd evals/inspect && uv run godot-agent-loop-eval smoke","test:godot:runtime":"tests/godot/run-integration-tests.sh","assetlib:submission":"node scripts/build-assetlib-submission.js","test:godot:typecheck":"tests/godot/run-typecheck.sh","test:godot:operations":"tests/godot/run-headless-operations.sh","test:godot:launch-demo":"tests/godot/run-launch-demo.sh","test:godot:editor-bridge":"tests/godot/run-editor-bridge-tests.sh","test:godot:validate-script":"tests/godot/run-validate-script.sh"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.5.tgz","overrides":{"js-yaml":"5.2.2"},"_integrity":"sha512-as5JqC8DCUNKT0BhgSbcOmZvahX5xdBsT+3T7VpoNB7+bFwqxGkmuJQcUeqSEB1tML4YYnXtWYaLNCjZFffLRQ==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 173 tested tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.18.0","pngjs":"^7.0.0","ajv-formats":"^3.0.1","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"0.23.1","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0","@modelcontextprotocol/conformance":"0.1.16","@modelcontextprotocol/inspector-cli":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.5_1785081713133_0.40161532087975527","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@beremaran/godot-agent-loop","version":"1.1.6","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"author":{"name":"Berke Arslan"},"license":"MIT","_id":"@beremaran/godot-agent-loop@1.1.6","maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"contributors":[{"url":"https://github.com/tugcantopaloglu","name":"Tuğcan Topaloğlu"},{"url":"https://github.com/Coding-Solo","name":"Solomon Elias","email":"solomon@sippy.ai"}],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"pi":{"skills":["./agent-plugin/skills"],"extensions":["./agent-plugin/pi/extension.ts"]},"bin":{"godot-agent-loop":"build/index.js"},"dist":{"shasum":"328ab1a861e373ae5f9da632b9350bb90fe8251d","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-1.1.6.tgz","fileCount":85,"integrity":"sha512-2SDK6QPtSmazLRh8V9FnC5CyD4a39DaWFOn0oCJFOFvJWZSzSpp4w9URaJLY33a5ACHQb3XqUeWWRB+B71zYWw==","signatures":[{"sig":"MEUCIEHLm9hn2oWUQN5xgO+mJpgFsSH8X1oDbgkrEThV8OVrAiEAqG0KM9vau7f9mlKsLXKTj7j4Y0FWGGAzUU4PT7WHniY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@1.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1453799},"type":"module","_from":"file:dist/beremaran-godot-agent-loop-1.1.6.tgz","engines":{"node":">=22.0.0"},"mcpName":"io.github.beremaran/godot-agent-loop","scripts":{"lint":"eslint . && npm run lint:md","test":"vitest run","build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","check":"npm run lint && npm run build && npm test","watch":"tsc --watch","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","prepare":"node scripts/prepare-package.js","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","eval:view":"cd evals/inspect && uv run inspect view --log-dir ../reports/inspect","inspector":"node scripts/run-inspector-cli.mjs node build/index.js --method tools/list","typecheck":"tsc --noEmit","check:fast":"npm run lint && npm run typecheck","eval:smoke":"npm run eval:protocol && npm run eval:inspect:check","test:watch":"vitest","check:built":"npm run lint && npm test","eval:paired":"node scripts/run-paired-behavioral-evaluation.mjs","eval:select":"node scripts/select-evaluation-cases.mjs","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","eval:compare":"node scripts/compare-evaluation-results.mjs","eval:inspect":"cd evals/inspect && uv run godot-agent-loop-eval run","eval:nightly":"cd evals/inspect && uv run godot-agent-loop-eval run --epochs 3","eval:release":"cd evals/inspect && uv run godot-agent-loop-eval run --epochs 3","launch:video":"node scripts/build-launch-video.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","assetlib:pack":"node scripts/build-assetlib-archive.js","eval:baseline":"node scripts/prepare-evaluation-baseline.mjs","eval:protocol":"npm run build && node scripts/run-protocol-evaluation.mjs","product:check":"node scripts/sync-product-metadata.js","adapters:check":"node scripts/sync-agent-adapters.js","benchmark:loop":"npm run build && node scripts/benchmark-authoring-loop.mjs","eval:calibrate":"node scripts/run-aa-calibration.mjs","coverage:engine":"node scripts/engine-surface-audit.js","test:e2e:docker":"bash scripts/run-e2e-docker.sh","assetlib:preview":"node scripts/capture-addon-preview.js","eval:inspect:sync":"cd evals/inspect && uv sync --frozen","release:candidate":"node scripts/build-release-candidate.js","eval:inspect:check":"cd evals/inspect && uv run godot-agent-loop-eval check","eval:inspect:smoke":"cd evals/inspect && uv run godot-agent-loop-eval smoke","assetlib:submission":"node scripts/build-assetlib-submission.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-1.1.6.tgz","overrides":{"js-yaml":"5.2.2"},"_integrity":"sha512-2SDK6QPtSmazLRh8V9FnC5CyD4a39DaWFOn0oCJFOFvJWZSzSpp4w9URaJLY33a5ACHQb3XqUeWWRB+B71zYWw==","repository":{"url":"git+https://github.com/beremaran/godot-agent-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP automation loop with 173 tools for Godot 4","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ajv":"^8.18.0","pngjs":"^7.0.0","ajv-formats":"^3.0.1","jsonc-parser":"^3.3.1","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"yazl":"^3.3.1","husky":"^9.1.7","eslint":"^10.7.0","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.3.3","@types/node":"^20.19.43","@types/yazl":"^3.3.1","@types/pngjs":"^6.0.5","markdownlint-cli2":"0.23.1","typescript-eslint":"^8.63.0","@typescript-eslint/parser":"^8.63.0","@typescript-eslint/eslint-plugin":"^8.63.0","@modelcontextprotocol/conformance":"0.1.16","@modelcontextprotocol/inspector-cli":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/godot-agent-loop_1.1.6_1785653722635_0.7238130187127465","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@beremaran/godot-agent-loop","version":"3.0.0","description":"Lean MCP feedback loop for Godot 4 — run, observe, interact, verify","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"homepage":"https://github.com/beremaran/godot-agent-loop","bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"repository":{"type":"git","url":"git+https://github.com/beremaran/godot-agent-loop.git"},"mcpName":"io.github.beremaran/godot-agent-loop","license":"MIT","author":{"name":"Berke Arslan"},"contributors":[{"name":"Tuğcan Topaloğlu","url":"https://github.com/tugcantopaloglu"},{"name":"Solomon Elias","email":"solomon@sippy.ai","url":"https://github.com/Coding-Solo"}],"type":"module","bin":{"godot-agent-loop":"build/index.js"},"scripts":{"build":"tsc && node scripts/sync-product-metadata.js && node scripts/sync-agent-adapters.js && node scripts/build.js","product:sync":"node scripts/sync-product-metadata.js --write && npm run adapters:sync","product:check":"node scripts/sync-product-metadata.js","adapters:sync":"node scripts/sync-agent-adapters.js --write && npm install --package-lock-only --ignore-scripts","adapters:check":"node scripts/sync-agent-adapters.js","inspector":"node scripts/run-inspector-cli.mjs node build/index.js --method tools/list","eval:protocol":"npm run build && node scripts/run-protocol-evaluation.mjs","eval:inspect:sync":"cd evals/inspect && uv sync --frozen","eval:inspect:check":"cd evals/inspect && uv run godot-agent-loop-eval check","eval:inspect:smoke":"cd evals/inspect && uv run godot-agent-loop-eval smoke","eval:inspect":"cd evals/inspect && uv run godot-agent-loop-eval run","eval:compare":"node scripts/compare-evaluation-results.mjs","eval:view":"cd evals/inspect && uv run inspect view --log-dir ../reports/inspect","eval:baseline":"node scripts/prepare-evaluation-baseline.mjs","eval:smoke":"npm run eval:protocol && npm run eval:inspect:check","eval:nightly":"cd evals/inspect && uv run godot-agent-loop-eval run --epochs 3","eval:release":"cd evals/inspect && uv run godot-agent-loop-eval run --epochs 3","eval:paired":"node scripts/run-paired-behavioral-evaluation.mjs","eval:calibrate":"node scripts/run-aa-calibration.mjs","eval:select":"node scripts/select-evaluation-cases.mjs","prepare":"node scripts/prepare-package.js","check":"npm run lint && npm run build && npm test","check:built":"npm run lint && npm test","check:fast":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","coverage:engine":"node scripts/engine-surface-audit.js","coverage:surface":"node scripts/generate-tool-surface-report.mjs","watch":"tsc --watch","test":"vitest run","test:watch":"vitest","lint":"eslint . && npm run lint:md","lint:md":"markdownlint-cli2 \"**/*.md\" \"#node_modules\"","lint:md:fix":"markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\"","test:e2e":"npm run build && vitest run --config vitest.e2e.config.ts","test:e2e:docker":"bash scripts/run-e2e-docker.sh","assetlib:pack":"node scripts/build-assetlib-archive.js","assetlib:preview":"node scripts/capture-addon-preview.js","assetlib:submission":"node scripts/build-assetlib-submission.js","launch:video":"node scripts/build-launch-video.js","release:candidate":"node scripts/build-release-candidate.js"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","ajv":"^8.18.0","ajv-formats":"^3.0.1","jsonc-parser":"^3.3.1","pngjs":"^7.0.0"},"devDependencies":{"@eslint/js":"^10.0.1","@modelcontextprotocol/conformance":"0.1.16","@modelcontextprotocol/inspector-cli":"1.0.0","@types/node":"^20.19.43","@types/pngjs":"^6.0.5","@types/yazl":"^3.3.1","@typescript-eslint/eslint-plugin":"^8.63.0","@typescript-eslint/parser":"^8.63.0","eslint":"^10.7.0","husky":"^9.1.7","markdownlint-cli2":"0.23.1","typescript":"^5.3.3","typescript-eslint":"^8.63.0","vitest":"^4.1.10","yazl":"^3.3.1"},"overrides":{"js-yaml":"5.2.2"},"engines":{"node":">=22.0.0"},"pi":{"extensions":["./agent-plugin/pi/extension.ts"],"skills":["./agent-plugin/skills"]},"_id":"@beremaran/godot-agent-loop@3.0.0","_integrity":"sha512-M/lUNHR/njFW7QUCstBZDfXoNR29uvulZ2q7iFQO701E7XxVYI/Sax+/MPeTYguiWezLlHfmnWtJCTL2pLoMEA==","_resolved":"/home/runner/work/godot-agent-loop/godot-agent-loop/dist/beremaran-godot-agent-loop-3.0.0.tgz","_from":"file:dist/beremaran-godot-agent-loop-3.0.0.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-M/lUNHR/njFW7QUCstBZDfXoNR29uvulZ2q7iFQO701E7XxVYI/Sax+/MPeTYguiWezLlHfmnWtJCTL2pLoMEA==","shasum":"ad6275d772ce55adab11573fbd2adfdd49f0fef5","tarball":"https://registry.npmjs.org/@beremaran/godot-agent-loop/-/godot-agent-loop-3.0.0.tgz","fileCount":74,"unpackedSize":860584,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@beremaran%2fgodot-agent-loop@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCRjMEeP2hBjSEQ2Fmo7fh9EXpf3Tlbp9voHN+TyAVB1QIhAO/dhK+hkTV2Tncy8bvwlEQASMpPzEIyx9KPJG1n5WnD"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b869bce-6202-4ab3-8f94-717a4f078984"}},"directories":{},"maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/godot-agent-loop_3.0.0_1785826786318_0.8055090570655785"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-14T15:55:56.976Z","modified":"2026-08-04T06:59:46.816Z","1.0.0":"2026-07-14T15:55:57.339Z","1.0.1":"2026-07-15T08:07:24.032Z","1.1.0":"2026-07-15T19:57:57.477Z","1.1.1":"2026-07-15T20:30:37.101Z","1.1.2":"2026-07-17T11:24:36.822Z","1.1.3":"2026-07-19T15:18:56.057Z","1.1.4":"2026-07-20T05:22:03.541Z","1.1.5":"2026-07-26T16:01:53.346Z","1.1.6":"2026-08-02T06:55:22.839Z","3.0.0":"2026-08-04T06:59:46.511Z"},"bugs":{"url":"https://github.com/beremaran/godot-agent-loop/issues"},"author":{"name":"Berke Arslan"},"license":"MIT","homepage":"https://github.com/beremaran/godot-agent-loop","keywords":["godot","mcp","ai","claude","cline","game-engine","gdscript","runtime","agent-workflows","model-context-protocol","pi-package"],"repository":{"type":"git","url":"git+https://github.com/beremaran/godot-agent-loop.git"},"description":"Lean MCP feedback loop for Godot 4 — run, observe, interact, verify","contributors":[{"name":"Tuğcan Topaloğlu","url":"https://github.com/tugcantopaloglu"},{"name":"Solomon Elias","email":"solomon@sippy.ai","url":"https://github.com/Coding-Solo"}],"maintainers":[{"name":"beremaran","email":"beremaran@gmail.com"}],"readme":"# Godot Agent Loop\n\n**Build it. Play it. Prove it.**\n\nAn MCP automation loop for Godot 4.\n\n[![npm version](https://img.shields.io/npm/v/%40beremaran%2Fgodot-agent-loop)](https://www.npmjs.com/package/@beremaran/godot-agent-loop)\n[![Godot integration tests](https://github.com/beremaran/godot-agent-loop/actions/workflows/godot-integration.yml/badge.svg)](https://github.com/beremaran/godot-agent-loop/actions/workflows/godot-integration.yml)\n[![MCP Server](https://badge.mcpx.dev?type=server 'MCP Server')](https://modelcontextprotocol.io/introduction)\n[![Made with Godot](https://img.shields.io/badge/Made%20with-Godot-478CBF?style=flat&logo=godot%20engine&logoColor=white)](https://godotengine.org)\n[![MIT License](https://img.shields.io/badge/License-MIT-blue.svg 'MIT License')](LICENSE)\n\nOther integrations give agents tools. Godot Agent Loop gives them a\nfeedback loop to author, run, observe, playtest, and independently verify Godot\ngames:\n\n```text\nauthor → validate → run → observe → playtest → verify → refine\n```\n\n[![Watch the 65-second cold-agent demo](assets/demo/godot-agent-loop-launch-poster.png)](assets/demo/godot-agent-loop-launch.mp4)\n\n<img src=\"assets/demo/launch-playing.png\" alt=\"Agent-built game during play\" width=\"32%\"> <img src=\"assets/demo/launch-win.png\" alt=\"Win screen\" width=\"32%\"> <img src=\"assets/demo/launch-lose.png\" alt=\"Lose screen\" width=\"32%\">\n\n[Watch the 65-second demo](assets/demo/godot-agent-loop-launch.mp4) ·\n[Read the exact run evidence](docs/launch/launch-evidence.md) ·\n[Inspect the resulting project](examples/launch-demo)\n\n## Quickstart\n\n```bash\nclaude mcp add godot-agent-loop -- npx -y @beremaran/godot-agent-loop\n```\n\nThen point the agent at a project directory—or an empty directory—and describe\nthe playable result. The default `core` surface is kept within the generated\n[tool-surface budget](docs/coverage/tool-surface.json). Use read-only\n`godot_catalog` to find and inspect a hidden capability, then `godot_call` to\nexecute it. Runtime injection is transient; watched projects can use the optional\npersistent editor addon.\n\nUsing Cline, Cursor, or another MCP client? See\n[Configuration](#configuration).\n\n## Proof before claims\n\n- The [evaluation guide](docs/evaluation.md) documents the pinned conformance,\n  Inspector, Inspect AI, real-client, scorer, baseline, and paired-comparison\n  lanes, including exactly which agent and model each lane uses.\n- A retained representative real-Godot path is enforced in CI.\n- Historically, a cold agent demonstrated MCP-only operation by building and\n  independently verifying a playable win/lose game with zero human corrections\n  in under seven minutes, using 103 MCP calls and no built-in tools. That\n  launch pre-dates the lean surface reduction, which deliberately removed\n  file, scene-authoring, and project-settings tools whose work host editors and\n  shells do better; see the [launch evidence](docs/launch/launch-evidence.md)\n  and the [changelog](CHANGELOG.md).\n- Privileged reflection and code-execution groups are denied by default, and\n  the editor provides a human **Pause Agent** control.\n\nSupport is deliberately bounded: Godot 4.7 is both the compatibility floor and\nthe primary target. Editor attachment is verified on Linux CI and in a headed\nmacOS 4.7.1 acceptance run; Windows retains the documented portable acceptance\npath but not an editor-UI claim. Full debugger automation, native extension\nbuilds, and unbounded engine control are not claimed. Details in the\n[verified support boundary](#verified-support-boundary).\n\n## Highlights\n\n- **A lean task-oriented core** — the default surface advertises 16 tools that\n  cover the whole loop: catalog and dispatch (`godot_catalog`, `godot_call`),\n  lifecycle (`run_project`, `stop_project`), the editor session and\n  compound scene transactions (`editor_session`, `editor_transaction`),\n  observation (`game_screenshot`, `game_get_scene_tree`, `game_get_ui`,\n  `game_get_node_info`, `game_get_errors`, `game_get_logs`), structured\n  interaction and waiting (`game_scenario`, `game_wait_until`), and independent\n  verification (`run_project_tests`, `verify_project`).\n- **Everything else is one search away** — 40 more tools remain callable through\n  `godot_catalog` + `godot_call`: input primitives (mouse, keyboard, key-hold,\n  drag, scroll, touch, gamepad), runtime reflection (privileged, opt-in),\n  node and signal generics, observation extras (performance, visual regression,\n  camera, audio), editor control, and ship tooling (export readiness, import\n  pipeline, .NET, add-ons).\n- **Author with your own file tools** — coding agents edit\n  `.gd`/`.tscn`/`.tres`/`project.godot` directly and validate them with\n  `run_project_tests` or headless checks; with an editor attached,\n  `editor_transaction` applies undoable\n  compound scene edits through `EditorUndoRedoManager`.\n- **Run and observe** — launch the game, capture logs and errors\n  incrementally, take screenshots, and run visual-regression comparisons with\n  baselines, masks, and retained diffs.\n- **Playtest like a player** — mouse, keyboard, key-hold, drag, scroll, touch,\n  and gamepad input against the running game, composed deterministically with\n  `game_scenario`.\n- **Verify independently** — test runners for native/GUT/GdUnit4\n  (`run_project_tests`), bounded runtime\n  evidence (`verify_project`), export checks (`verify_export_readiness`), and\n  static integrity analysis (`analyze_project_integrity`).\n- **Reach into the runtime** — with `reflection` and `code-execution` opted in,\n  inspect and manipulate any node, signal, or property through `game_eval` and\n  the generic node tools.\n- **Drive the editor** — `editor_session ensure` discovers the matching\n  project, `editor_transaction` applies reversible edits through\n  `EditorUndoRedoManager`, and the Agent Activity dock replays the bounded\n  correlated trace with a human **Pause Agent** lock.\n- **.NET / C# support** — inspect, restore, build, and run .NET projects with a\n  `Godot.NET.Sdk` matched to your installed Godot via `verify_dotnet_project`.\n- **Bounded by design** — deterministic pagination and size caps on large\n  responses, structured correlated diagnostics, and least-privilege security\n  defaults.\n\n## Tool catalog\n\nThe full inventory—the 16 advertised core tools plus the hidden catalog of 40\nmore—lives in [docs/tools.md](docs/tools.md).\n\n## Requirements\n\n- [Godot Engine](https://godotengine.org/download) 4.7 or later\n- (Optional) [.NET SDK](https://dotnet.microsoft.com/download) 8.0+ and the\n  Godot .NET (C#) build, only if you use `verify_dotnet_project`\n- [Node.js](https://nodejs.org/) >= 22.0.0 (active LTS)\n- An AI assistant that supports MCP (Claude Code, Cline, Cursor, etc.)\n\n### Godot compatibility policy\n\nDevelopment targets the latest stable Godot release. Godot 4.7 is the current\ncompatibility floor and primary target, and CI covers that exact release. The\nfloor may be raised when it blocks useful features or creates meaningful\nmaintenance cost.\nIn that case, the last compatible release remains available, and an\nolder-version maintenance branch will be created only when user demand\njustifies maintaining it. Such a branch would receive critical fixes rather\nthan new features.\n\n### Verified support boundary\n\n| Area | Status | Evidence or limitation |\n| --- | --- | --- |\n| Linux headed (desktop or Xvfb), Godot 4.7 | Verified in CI | Retained MCP E2E under Xvfb covers representative authoring, runtime, editor attachment, and teardown paths |\n| GDScript project and running-game workflows | Representative coverage retained | Scene creation, runtime mutation, process ownership, security, and editor discovery remain in the E2E smoke suite |\n| Privileged runtime commands | Opt-in only | Disabled by default; intended for trusted localhost development |\n| Godot .NET/C# | Scaffold, compile, and editor-load verification | Godot .NET 4.7 with .NET SDK 8 |\n| Linux exports | Release/debug template export and smoke-run verification | Godot 4.7 installed templates; other targets are not claimed |\n| Rendering and screenshots | A headed rendering context is required | Compatibility and Forward+ on Linux software rendering; display-less sessions fail fast with desktop/Xvfb remediation |\n| Windows | Portable acceptance verified | Godot 4.7 process, Unicode path, runtime input, window query, and teardown workflows; editor UI, rendering, and exports are not claimed |\n| macOS | Portable acceptance and attached-editor workflow verified | Godot 4.7.1 headed replay opens Godot normally, reconnects the MCP, authors and synchronizes without focus switching/manual reload, exercises undoable transactions, and cleans the discovery record; see the [interactive acceptance record](docs/coverage/interactive-golden-agent-run.json) |\n| Editor state and undo/redo bridge | Verified on Linux CI and headed macOS 4.7.1 | Protocol 2 uses private per-project discovery, `EditorInterface`, and `EditorUndoRedoManager`; Windows editor UI remains outside the claimed boundary |\n| Full debugger control | Not claimed | Breakpoints, stack inspection, and frame-local evaluation remain outside the supported boundary |\n| Profiler, leak, asset, localization, and accessibility audits | Verified in MCP E2E | `game_performance` and `analyze_project_integrity` return bounded live/static evidence; native extension builds remain unsupported |\n| GDExtension builds | Not claimed | `analyze_project_integrity` inspects declarations and libraries without invoking arbitrary native toolchains |\n\n## Configuration\n\nThe [quickstart](#quickstart) `npx` command is all most setups need. The\nsections below cover other clients and a source checkout.\n\n### Interactive editor setup\n\nFor a project the user watches, copy\n[`addons/godot_agent_loop`](addons/godot_agent_loop) into the project at that\nsame path, enable **Godot Agent Loop** under **Project > Project Settings >\nPlugins**, and restart Godot once. Thereafter Godot may be opened normally;\n`editor_session` discovers the matching project without launching a duplicate.\nThe dock remains visible and waits cleanly when no agent is connected.\n\nThe addon publishes a private, untracked record at\n`.godot/godot_agent_loop/editor-session.json` with a fresh token and ephemeral\nloopback port for each editor start. The token is never returned or logged.\nMultiple editors are routed by canonical project path. To uninstall, disable\nthe plugin, close Godot, remove `addons/godot_agent_loop`, and optionally remove\na stale `.godot/godot_agent_loop` directory. MCP cleanup removes only its own\nunmodified transient bridge, never this persistent addon.\n\nAn editor already started without an enabled compatible addon cannot receive a\nnew `EditorPlugin` safely at runtime. Install/enable once and restart. See the\n[interaction architecture](docs/architecture/editor-interaction.md) for states,\nprotocol migration, unsaved-conflict recovery, and fallback semantics.\n\n### Portable agent bundle\n\nThe repository ships one neutral bundle that starts the matching npm MCP server\nand provides the same build, debug, verify, and ship skills to Claude Code,\nCodex, OpenCode, and Pi. For Claude Code:\n\n```text\n/plugin marketplace add beremaran/godot-agent-loop\n/plugin install godot-agent-loop@godot-agent-loop\n```\n\nFor a local checkout, use `claude --plugin-dir ./agent-plugin`. See the\n[portable agent bundle guide](docs/agent-plugin.md) for verified Claude Code,\nCodex, OpenCode, and Pi install paths.\n\n### MCP client configuration\n\n<details>\n<summary>Claude Code (manual settings)</summary>\n\nAdd to your Claude Code MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@beremaran/godot-agent-loop\"],\n      \"env\": {\n        \"GODOT_PATH\": \"/path/to/godot\",\n        \"DEBUG\": \"true\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Cline (VS Code)</summary>\n\nAdd to your Cline MCP settings (`cline_mcp_settings.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@beremaran/godot-agent-loop\"],\n      \"disabled\": false\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Cursor</summary>\n\nCreate `.cursor/mcp.json` in your project:\n\n```json\n{\n  \"mcpServers\": {\n    \"godot\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@beremaran/godot-agent-loop\"]\n    }\n  }\n}\n```\n\n</details>\n\nFor a source checkout, use `node` as the executable and pass the built server\npath as a separate argument:\n\n```json\n{\n  \"command\": \"node\",\n  \"args\": [\"/absolute/path/to/godot-agent-loop/build/index.js\"]\n}\n```\n\n### Installation from source\n\n```bash\ngit clone https://github.com/beremaran/godot-agent-loop.git\ncd godot-agent-loop\nnpm install\nnpm run build\n```\n\n## Runtime Tools Setup\n\nNo setup is required when the game is started through `run_project`: the server\ninstalls the interaction autoload automatically by generating an `override.cfg`\n(which Godot merges over `project.godot` at startup) and copying the runtime\nscripts into the project, then removes them again on `stop_project`, game exit,\nor server shutdown. `project.godot` is never modified. If an earlier server\ncrashed or was killed before cleaning up, the next server detects and removes\nthe leftover files on first contact with the project; an installation you\nmanage yourself (declared in `project.godot`) is never touched.\n\nTo run the interaction server without `run_project`, copy\n`build/scripts/mcp_interaction_server.gd` to your project and register it as an\nautoload:\n\n1. Copy `build/scripts/mcp_interaction_server.gd` to your project's scripts folder\n2. In Godot: **Project > Project Settings > Autoload**\n3. Add the script with the name `McpInteractionServer`\n\nThe server listens on `127.0.0.1:9090`. Each MCP server launch generates a\ncryptographic runtime secret, passes it only to the Godot child process, and\nauthenticates it during capability negotiation before any runtime command is\naccepted. A manually managed runtime should set the same\n`GODOT_MCP_RUNTIME_SECRET` value in both processes. A runtime without a shared\nsecret refuses unauthenticated sessions unless `GODOT_MCP_ALLOW_INSECURE_RUNTIME`\nis set explicitly; use that only on a trusted machine.\n\nCommands that execute arbitrary GDScript or invoke arbitrary node properties or\nmethods remain disabled by default even after authentication. Grant only the\nrequired group with `GODOT_MCP_PRIVILEGED_GROUPS`: `reflection` enables\narbitrary property/method access and `code-execution` enables eval/script\ncontrol. The legacy `GODOT_MCP_ALLOW_PRIVILEGED_COMMANDS=true` grants both\ngroups. Use either only for a trusted local developer workflow. Authentication\nand policy denials never echo secrets, source, property values, URLs, headers,\nor engine errors.\nAuthentication success/failure emits a structured audit event containing only\nthe event name, runtime component, numeric session ID, and timestamp.\n\n## Environment Variables\n\n| Variable | Description |\n| ---------- | ------------- |\n| `GODOT_PATH` | Path to the Godot executable (overrides auto-detection) |\n| `DEBUG` | Set to `\"true\"` for detailed server-side logging. Parameter values are summarized by type and size in server logs, never printed. |\n| `GODOT_MCP_ALLOWED_DIRS` | Optional. Restrict `run_project` to projects under these roots (`;`, `,`, or `:` separated). When unset and no MCP client roots are provided, filesystem access is denied unless `GODOT_MCP_ALLOW_UNRESTRICTED` is set. |\n| `GODOT_MCP_HEADLESS` | Optional, default `false`. Set to `true` (or `1`) to run `run_project` with Godot's `--headless` flag so no window opens. Rendering-dependent operations such as screenshots fail fast with a headed-display remediation; intended for CI and headless workstations. The E2E suite honors it too: `GODOT_MCP_HEADLESS=1 npm run test:e2e` skips its pixel assertions, which stay covered by the virtual-display renderer jobs. |\n| `GODOT_MCP_RUNTIME_SECRET` | Optional explicit shared runtime secret. The MCP server generates a fresh 256-bit value when omitted and passes it only to Godot processes it launches. Set the same value manually only when connecting to a separately launched runtime. |\n| `GODOT_MCP_EDITOR_START_PAUSED` | Optional, default `false`. Start the editor addon's cooperative lock in human-editing mode so mutating MCP tools are refused until **Resume Agent** is pressed. |\n| `GODOT_MCP_TOOL_SURFACE` | Optional, default `core`. `compact` is a compatibility alias for `core`; `full` advertises the complete 56-tool static catalog. Unknown values are rejected. Use `godot_catalog` plus `godot_call` for hidden tools. |\n| `GODOT_MCP_LEGACY_JSON_TEXT` | Optional, default `true`. Set to `false` for clients that read MCP `structuredContent` to omit the extra compatibility JSON text block and reduce repeated output. Bundled adapters set this to `false`. |\n| `GODOT_MCP_PRIVILEGED_GROUPS` | Optional comma-separated least-privilege grants: `reflection` and/or `code-execution`. All are denied by default. |\n| `GODOT_MCP_ALLOW_PRIVILEGED_COMMANDS` | Optional, default `false`. Explicitly enable runtime `eval`, arbitrary property/method access, and script control for a trusted localhost developer workflow. |\n| `GODOT_MCP_ALLOW_UNRESTRICTED` | Optional, default `false`. Explicitly re-enable the legacy open path mode when neither `GODOT_MCP_ALLOWED_DIRS` nor MCP client roots are configured. Without roots and without this flag, filesystem access is denied. |\n| `GODOT_MCP_ALLOW_INSECURE_RUNTIME` | Optional, default `false`. Set in the Godot runtime process to restore the legacy unauthenticated handshake for a separately launched runtime that cannot receive `GODOT_MCP_RUNTIME_SECRET`. Keep off whenever the runtime can receive the shared secret. |\n\n### Structured runtime evidence\n\nWith `DEBUG=true`, the MCP server emits JSON request lifecycle events to\nstderr. The Godot runtime emits matching events to its captured stdout. Both\nuse an internal `mcp_<number>` correlation ID and controlled event fields;\nparameters, response values, secrets, source, URLs, and malformed payloads are\nnever copied into logs. Runtime process output is capped at the latest 1,000\nstdout and stderr lines. Stable JSON-RPC error codes remain the authoritative\nmachine-readable failure classification.\n\n### Large-project response limits\n\nLarge responses are bounded rather than allowed to grow with project size.\n`game_get_scene_tree` returns deterministic pre-order trees of 1,000 nodes by\ndefault (configurable up to 10,000) and reports truncation, and\n`game_get_ui` bounds visible controls. `game_get_logs` and\n`game_get_errors` return at most 1,000 unread lines per call with `hasMore` and\n`remaining`, while retaining the latest 1,000 lines per stream. Runtime JSON\nresponses are capped at 8 MiB, screenshots additionally enforce pixel and\n6 MiB PNG limits, and short-lived subprocess/import commands cap captured output\nat 16 MiB. Limit failures are explicit; callers can narrow resource/import\nqueries instead of receiving partial unlabelled data.\n\n## Architecture\n\nThe server uses three bounded execution paths:\n\n1. **Scene and resource authoring** - coding agents are expected to author\n   `.gd`/`.tscn`/`.tres`/`project.godot` with their own file tools. When a\n   compatible editor session is attached, `editor_transaction` applies compound\n   scene edits as one undo step through `EditorUndoRedoManager`; detached and\n   CI projects are authored directly on disk.\n\n2. **Running-game socket** - `run_project` launches the user's game headed and\n   injects the authenticated `mcp_interaction_server.gd` autoload through\n   `override.cfg` for high-fidelity runtime interaction.\n\n3. **Other one-shot subprocess work** - Validation, import, and export operations\n   may invoke Godot once and exit. Running games, screenshots, and visual checks\n   still require a desktop display, Xvfb, or another reachable rendering context.\n\n### Source layout\n\n| Path | Description |\n| ------ | ------------- |\n| `src/index.ts` | MCP server entry point |\n| `src/tool-definitions.ts` | Tool names and JSON schemas |\n| `src/tool-manifest.ts` | Per-tool domain, backend, and action declarations |\n| `src/tool-surface.ts` | Reviewed core membership, discovery ranking, compatibility modes, and generated size budgets |\n| `src/tool-handlers/` | Lifecycle, project, and game handler implementations |\n| `src/scripts/mcp_interaction_server.gd` | TCP interaction server autoload |\n| `tests/` | Retained Vitest unit and MCP-to-Godot smoke suites |\n\n## Testing\n\nThe project uses Vitest for a deliberately small unit and MCP-to-Godot smoke\nsuite.\n\n```bash\nnpm run check       # lint, build, and retained unit suite\nnpm run test:e2e    # built MCP server through a real client and Godot\nnpm run test:e2e:docker # same suite inside a containerized xvfb+Godot 4.7 environment,\n                        # so no Godot windows open on the host; use -- to pass file filters\nnpm run test:watch  # watch mode\n```\n\nEvery `npm run test:e2e` run ends with an `[e2e-metrics]` summary of wall-clock\ntime and MCP/Godot startup counts, so suite overhead can be compared across\nruns and CI jobs. The containerized runner (`scripts/run-e2e-docker.sh`, image\nbuilt from `tests/e2e/docker/Dockerfile`) mirrors the primary Godot 4.7 CI job:\nUbuntu + xvfb + the official Godot build, with `node_modules` kept in a named\nvolume so the host install is never touched.\n\nThe shipped build, debug, verify, and ship skill scenarios are versioned under\n`evals/`. Their committed status is intentionally `not_run` until a deliberate\ncurrent-model client run records versioned inputs and schema-valid metrics; the\ndeterministic golden replay is not presented as a substitute for that run.\n\n## Example Prompts\n\n```text\n\"Author scripts/player.gd and scenes/level.tscn with your file tools, then\nvalidate them with run_project_tests before launching\"\n\n\"Run my Godot project and check for errors with game_get_errors\"\n\n\"Check all my changed GDScript files for syntax errors before I run the game\"\n\n\"Run the project, wait until the main menu is up, and take a screenshot\"\n\n\"Hold down the W key for 2 seconds to test walking (find game_key_hold in the\ncatalog)\"\n\n\"Run a game_scenario that presses Enter on the title screen and asserts the\nscene changed to res://scenes/level.tscn\"\n\n\"Use verify_project to run bounded assertions and capture evidence\"\n\n\"Sample performance - what's my FPS and draw call count? (game_performance)\"\n\n\"Export the project for Linux with verify_export_readiness\"\n\n\"Restore, build, and run the .NET project with verify_dotnet_project\"\n```\n\n## Community\n\n- [Contributing guide](CONTRIBUTING.md) — development workflow, checks, and\n  PR expectations\n- [Security policy](SECURITY.md) — how to report vulnerabilities\n- [Code of conduct](CODE_OF_CONDUCT.md)\n- [Changelog](CHANGELOG.md) and\n  [release notes](docs/releases)\n- [Issues](https://github.com/beremaran/godot-agent-loop/issues) — bug reports\n  and feature requests\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Lineage\n\n- **Original project:** [godot-mcp](https://github.com/Coding-Solo/godot-mcp)\n  by [Solomon Elias (Coding-Solo)](https://github.com/Coding-Solo), which\n  provided the foundational TypeScript MCP server, headless GDScript operations,\n  and TCP runtime interaction architecture.\n- **Inherited from:** [Tugcan Topaloglu](https://github.com/tugcantopaloglu)'s\n  [godot-mcp](https://github.com/tugcantopaloglu/godot-mcp), which extended the\n  original project across networking, 3D/2D rendering, UI controls, audio,\n  animation, file I/O, runtime code execution, project creation, and physics\n  while preserving the MIT license.\n- **Godot Agent Loop:** maintained and substantially extended by\n  [Berke Arslan](https://github.com/beremaran), preserving the complete Git\n  history and every inherited MIT notice.\n","readmeFilename":"README.md"}