auvrynt 1.0.2 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +366 -233
- package/addons/auvrynt_bridge/auvrynt_bridge.gd +500 -0
- package/addons/auvrynt_bridge/plugin.cfg +7 -0
- package/bin/auvrynt-launcher.cjs +77 -0
- package/dist/artifact-registry.js +1 -0
- package/dist/aseprite-tools.js +1 -0
- package/dist/auth/connection-registry.js +145 -0
- package/dist/auth/connection-status.js +176 -0
- package/dist/auth/oauth-provider.js +617 -0
- package/dist/auth/room-registry.js +131 -0
- package/dist/auth/session-registry.js +531 -0
- package/dist/background-lifecycle.js +1 -0
- package/dist/blender-client.js +1 -109
- package/dist/blender-tools.js +1 -930
- package/dist/browser-stability.js +1 -0
- package/dist/cli/commands/help-command.js +10 -0
- package/dist/cli/commands/init-command.js +190 -0
- package/dist/cli/commands/integration-commands.js +88 -0
- package/dist/cli/commands/serve-command.js +83 -0
- package/dist/cli/commands/setup-command.js +81 -0
- package/dist/cli/commands/status-commands.js +166 -0
- package/dist/cli/commands/tunnel-command.js +127 -0
- package/dist/cli/commands/user-config-commands.js +105 -0
- package/dist/cli/dashboard-actions.js +516 -0
- package/dist/cli/dashboard-native-actions.js +282 -0
- package/dist/cli/foreground-server.js +270 -0
- package/dist/cli/instance-control.js +21 -0
- package/dist/cli/instance-lock.js +123 -0
- package/dist/cli/integration-bootstrap.js +206 -0
- package/dist/cli/lifecycle-manager.js +493 -0
- package/dist/cli/runtime-support.js +74 -0
- package/dist/cli/serena-detected-default.js +27 -0
- package/dist/cli/tunnel-health-monitor.js +182 -0
- package/dist/cli.js +82 -739
- package/dist/config.js +1 -243
- package/dist/connection-registry.js +1 -73
- package/dist/connection-status.js +1 -139
- package/dist/control-retry.js +1 -0
- package/dist/crash-recovery.js +1 -0
- package/dist/db/client.js +16 -3
- package/dist/db/schema.js +30 -0
- package/dist/dotnet-tools.js +1 -223
- package/dist/git-worktrees.js +1 -134
- package/dist/git.js +1 -41
- package/dist/godot-animation-tilemap.js +1 -82
- package/dist/godot-csharp-build.js +1 -93
- package/dist/godot-csharp-project.js +1 -157
- package/dist/godot-csharp-runner.js +1 -146
- package/dist/godot-csharp-semantic.js +1 -161
- package/dist/godot-csharp-validate.js +1 -71
- package/dist/godot-dotnet-env.js +1 -169
- package/dist/godot-editor-bridge.js +1 -140
- package/dist/godot-gdscript.js +1 -824
- package/dist/godot-project-settings.js +1 -223
- package/dist/godot-runtime-testing.js +1 -249
- package/dist/godot-tools.js +1 -183
- package/dist/http-rate-limit.js +1 -0
- package/dist/http-server-hardening.js +1 -0
- package/dist/image-tools.js +1 -157
- package/dist/infrastructure/command-reference.js +32 -0
- package/dist/infrastructure/config.js +424 -0
- package/dist/infrastructure/context7-auth.js +55 -0
- package/dist/infrastructure/http-rate-limit.js +42 -0
- package/dist/infrastructure/http-server-hardening.js +23 -0
- package/dist/infrastructure/integration-queue.js +46 -0
- package/dist/infrastructure/logger.js +129 -0
- package/dist/infrastructure/mcp-event-store.js +103 -0
- package/dist/infrastructure/ngrok-auth-pool.js +208 -0
- package/dist/infrastructure/request-context.js +14 -0
- package/dist/infrastructure/shutdown.js +37 -0
- package/dist/infrastructure/sse-heartbeat.js +47 -0
- package/dist/infrastructure/tool-capabilities.js +67 -0
- package/dist/infrastructure/tool-result-budget.js +175 -0
- package/dist/infrastructure/user-config.js +167 -0
- package/dist/integration-discovery.js +1 -98
- package/dist/integration-queue.js +1 -0
- package/dist/integrations/agent-reach/agent-reach-tools.js +196 -0
- package/dist/integrations/agent-reach/native-channels.js +468 -0
- package/dist/integrations/aseprite/aseprite-analysis-tools.js +368 -0
- package/dist/integrations/aseprite/aseprite-editing-tools.js +647 -0
- package/dist/integrations/aseprite/aseprite-live-tools.js +297 -0
- package/dist/integrations/aseprite/aseprite-safety-tools.js +594 -0
- package/dist/integrations/aseprite/aseprite-specialized-tools.js +289 -0
- package/dist/integrations/aseprite/aseprite-tools.js +837 -0
- package/dist/integrations/blender/blender-catalog-mesh.js +593 -0
- package/dist/integrations/blender/blender-catalog-object.js +906 -0
- package/dist/integrations/blender/blender-catalog-scene.js +266 -0
- package/dist/integrations/blender/blender-catalog-select.js +581 -0
- package/dist/integrations/blender/blender-catalog-stubs.js +7512 -0
- package/dist/integrations/blender/blender-catalog.js +165 -0
- package/dist/integrations/blender/blender-client.js +105 -0
- package/dist/integrations/blender/blender-tools.js +2243 -0
- package/dist/integrations/context7/context7-tools.js +106 -0
- package/dist/integrations/dotnet/dotnet-tools.js +195 -0
- package/dist/integrations/godot/godot-animation-tilemap.js +74 -0
- package/dist/integrations/godot/godot-csharp-build.js +91 -0
- package/dist/integrations/godot/godot-csharp-project.js +155 -0
- package/dist/integrations/godot/godot-csharp-runner.js +118 -0
- package/dist/integrations/godot/godot-csharp-semantic.js +146 -0
- package/dist/integrations/godot/godot-csharp-validate.js +71 -0
- package/dist/integrations/godot/godot-dotnet-env.js +134 -0
- package/dist/integrations/godot/godot-editor-bridge.js +328 -0
- package/dist/integrations/godot/godot-gdscript.js +536 -0
- package/dist/integrations/godot/godot-project-settings.js +178 -0
- package/dist/integrations/godot/godot-runtime-testing.js +263 -0
- package/dist/integrations/godot/godot-tools.js +193 -0
- package/dist/integrations/images/image-tools.js +414 -0
- package/dist/integrations/images/png-codec.js +251 -0
- package/dist/integrations/images/view-image.js +99 -0
- package/dist/integrations/images/window-capture.js +148 -0
- package/dist/integrations/integration-discovery.js +185 -0
- package/dist/integrations/obsidian/obsidian-tools.js +205 -0
- package/dist/integrations/playwright/browser-session.js +516 -0
- package/dist/integrations/playwright/browser-stability.js +36 -0
- package/dist/integrations/playwright/playwright-runtime.js +105 -0
- package/dist/integrations/playwright/web-tools.js +504 -0
- package/dist/integrations/roblox/roblox-helpers.js +381 -0
- package/dist/integrations/roblox/roblox-studio-client.js +112 -0
- package/dist/integrations/roblox/roblox-tools.js +106 -0
- package/dist/integrations/serena/serena-manager.js +464 -0
- package/dist/integrations/serena/serena-tools.js +411 -0
- package/dist/logger.js +1 -76
- package/dist/mcp-event-store.js +1 -0
- package/dist/oauth-provider.js +1 -377
- package/dist/pi-tools.js +1 -81
- package/dist/playwright-runtime.js +1 -0
- package/dist/process/background-lifecycle.js +189 -0
- package/dist/process/control-retry.js +42 -0
- package/dist/process/crash-recovery.js +23 -0
- package/dist/process/processes.js +456 -0
- package/dist/processes.js +1 -218
- package/dist/request-context.js +1 -0
- package/dist/review-checkpoints.js +1 -142
- package/dist/room-registry.js +1 -0
- package/dist/roots.js +1 -53
- package/dist/search-discovery.js +1 -271
- package/dist/serena-manager.js +1 -443
- package/dist/serena-tools.js +1 -411
- package/dist/server/dashboard-page-styles.js +331 -0
- package/dist/server/dashboard-page.js +1509 -0
- package/dist/server/dashboard-routes.js +46 -0
- package/dist/server/dashboard.js +240 -0
- package/dist/server/http-helpers.js +30 -0
- package/dist/server/integration-profile-update.js +37 -0
- package/dist/server/mcp-policy.js +169 -0
- package/dist/server/mcp-server-factory.js +127 -0
- package/dist/server/mcp-tool-registrar.js +182 -0
- package/dist/server/openai-session-hint.js +14 -0
- package/dist/server/tool-groups.js +29 -0
- package/dist/server/tool-logging.js +33 -0
- package/dist/server/tool-registration-shared.js +59 -0
- package/dist/server/tools/aseprite-advanced-tools-registration.js +547 -0
- package/dist/server/tools/aseprite-tools-registration.js +213 -0
- package/dist/server/tools/blender-tools-registration.js +690 -0
- package/dist/server/tools/core-file-tools-registration.js +459 -0
- package/dist/server/tools/dotnet-godot-window-tools-registration.js +120 -0
- package/dist/server/tools/godot-csharp-tools-registration.js +252 -0
- package/dist/server/tools/godot-gdscript-tools-registration.js +189 -0
- package/dist/server/tools/process-project-tools-registration.js +155 -0
- package/dist/server/tools/roblox-tools-registration.js +514 -0
- package/dist/server/tools/web-image-tools-registration.js +326 -0
- package/dist/server/tools/workspace-lifecycle-tools-registration.js +130 -0
- package/dist/server/ui-assets.js +97 -0
- package/dist/server/workspace-analytics.js +92 -0
- package/dist/server.js +453 -2713
- package/dist/session-registry.js +1 -0
- package/dist/shutdown.js +1 -0
- package/dist/skills.js +1 -45
- package/dist/sse-heartbeat.js +1 -0
- package/dist/tool-capabilities.js +1 -0
- package/dist/tool-result-budget.js +1 -0
- package/dist/tools/pi-tools.js +81 -0
- package/dist/tunnels/cloudflare-tunnel.js +217 -0
- package/dist/tunnels/cloudflared-service.js +174 -0
- package/dist/tunnels/ngrok-tunnel.js +220 -0
- package/dist/tunnels/tunnel-manager.js +186 -0
- package/dist/tunnels/tunnel-types.js +1 -0
- package/dist/tunnels/tunnel-utils.js +62 -0
- package/dist/ui/.vite/manifest.json +9 -2487
- package/dist/ui/assets/heavy-payload-D42A9ceL.js +1 -0
- package/dist/ui/assets/lightweight-diff-Cv4g9Hdr.js +13 -0
- package/dist/ui/assets/review-payload-DKIg1cKF.js +1 -0
- package/dist/ui/assets/workspace-app-CeK3NhmB.css +1 -0
- package/dist/ui/assets/{workspace-app-C5QsE314.js → workspace-app-CkUXnpl4.js} +6 -6
- package/dist/ui/brand-theme.js +23 -0
- package/dist/ui/workspace-app.html +15 -15
- package/dist/user-config.js +1 -57
- package/dist/view-image.js +1 -104
- package/dist/web-tools.js +1 -200
- package/dist/window-capture.js +1 -74
- package/dist/workspace/artifact-registry.js +69 -0
- package/dist/workspace/git-worktrees.js +141 -0
- package/dist/workspace/git.js +42 -0
- package/dist/workspace/review-checkpoints.js +142 -0
- package/dist/workspace/roots.js +56 -0
- package/dist/workspace/search-discovery.js +264 -0
- package/dist/workspace/skills.js +45 -0
- package/dist/workspace/workspace-store.js +219 -0
- package/dist/workspace/workspaces.js +314 -0
- package/dist/workspace-store.js +1 -125
- package/dist/workspaces.js +1 -226
- package/docs/CREATOR_STORE_FREE_ASSETS.md +162 -0
- package/docs/DEVELOPMENT_TOOLS.md +136 -93
- package/docs/assets/auvrynt-icon.png +0 -0
- package/docs/assets/auvrynt-icon.svg +20 -0
- package/docs/chatgpt-coding-workflow.md +143 -143
- package/docs/configuration.md +156 -124
- package/docs/diagnostics.md +79 -0
- package/docs/gotchas.md +244 -202
- package/docs/multi-agent-and-long-projects.md +91 -0
- package/docs/security.md +138 -100
- package/docs/setup.md +171 -131
- package/docs/source-layout.md +60 -0
- package/extensions/auvrynt_bridge/auvrynt_bridge.lua +594 -0
- package/extensions/auvrynt_bridge/live_analysis.lua +181 -0
- package/extensions/auvrynt_bridge/live_animation.lua +134 -0
- package/extensions/auvrynt_bridge/live_commands.lua +24 -0
- package/extensions/auvrynt_bridge/live_common.lua +130 -0
- package/extensions/auvrynt_bridge/live_document.lua +78 -0
- package/extensions/auvrynt_bridge/live_drawing.lua +125 -0
- package/extensions/auvrynt_bridge/live_effects.lua +91 -0
- package/extensions/auvrynt_bridge/live_palette_template.lua +167 -0
- package/extensions/auvrynt_bridge/live_selection.lua +110 -0
- package/extensions/auvrynt_bridge/live_structure.lua +129 -0
- package/extensions/auvrynt_bridge/package.json +17 -0
- package/guides/ASEPRITE_AGENT_GUIDE.md +133 -0
- package/guides/BLENDER_AGENT_GUIDE.md +472 -0
- package/guides/GODOT_AGENT_GUIDE.md +298 -0
- package/guides/PROJECT_ROUTER.md +165 -0
- package/guides/ROBLOX_AGENT_GUIDE.md +75 -0
- package/guides/SOFTWARE_AGENT_GUIDE.md +104 -0
- package/guides/WEB_AGENT_GUIDE.md +287 -0
- package/package.json +78 -70
- package/scripts/dev-server.mjs +121 -120
- package/scripts/live-tunnel-smoke.mjs +538 -0
- package/scripts/repo-hygiene.mjs +74 -0
- package/scripts/restart-after-crash.mjs +49 -0
- package/scripts/run-tests.mjs +166 -0
- package/dist/ui/assets/abap-CLvhMVsD.js +0 -1
- package/dist/ui/assets/actionscript-3--17pq3dv.js +0 -1
- package/dist/ui/assets/ada-C5qYipkI.js +0 -1
- package/dist/ui/assets/andromeeda-vGVdxbeo.js +0 -1
- package/dist/ui/assets/angular-html-BJqQFYI6.js +0 -1
- package/dist/ui/assets/angular-ts-CMJECO0Y.js +0 -1
- package/dist/ui/assets/apache-U0d_L8uA.js +0 -1
- package/dist/ui/assets/apex-CGTLDQj6.js +0 -1
- package/dist/ui/assets/apl-DWeXpBBr.js +0 -1
- package/dist/ui/assets/applescript-CCn79oCD.js +0 -1
- package/dist/ui/assets/ara-4CJ0cIlV.js +0 -1
- package/dist/ui/assets/asciidoc-DE70LPWp.js +0 -1
- package/dist/ui/assets/asm-Cmm7eHzH.js +0 -1
- package/dist/ui/assets/astro-CLbttLOq.js +0 -1
- package/dist/ui/assets/aurora-x-CDeNXAV0.js +0 -1
- package/dist/ui/assets/awk-BWXHIvNe.js +0 -1
- package/dist/ui/assets/ayu-dark-DluEY0Gj.js +0 -1
- package/dist/ui/assets/ayu-light-C3h-C4tm.js +0 -1
- package/dist/ui/assets/ayu-mirage-Bqwy1Gya.js +0 -1
- package/dist/ui/assets/ballerina-B7ZEbQpA.js +0 -1
- package/dist/ui/assets/bat-Bo4NYOV-.js +0 -1
- package/dist/ui/assets/beancount-D-usSTwE.js +0 -1
- package/dist/ui/assets/berry-DKpUyyne.js +0 -1
- package/dist/ui/assets/bibtex-Ci_nEsc7.js +0 -1
- package/dist/ui/assets/bicep-CUHmPFLl.js +0 -1
- package/dist/ui/assets/bird2-C2hNVINV.js +0 -1
- package/dist/ui/assets/blade-BOzY0P2V.js +0 -1
- package/dist/ui/assets/bsl-BkkzgIyY.js +0 -1
- package/dist/ui/assets/c-BG-8uJvh.js +0 -1
- package/dist/ui/assets/c3-CnJL0r0V.js +0 -1
- package/dist/ui/assets/cadence-CQ2zXKGN.js +0 -1
- package/dist/ui/assets/cairo-DLTphjLi.js +0 -1
- package/dist/ui/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
- package/dist/ui/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
- package/dist/ui/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
- package/dist/ui/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
- package/dist/ui/assets/clarity-SemFz856.js +0 -1
- package/dist/ui/assets/clojure-DqKBuwfJ.js +0 -1
- package/dist/ui/assets/cmake-Bj61d0ZC.js +0 -1
- package/dist/ui/assets/cobol-I_17IuGe.js +0 -1
- package/dist/ui/assets/codeowners-C8r90Shi.js +0 -1
- package/dist/ui/assets/codeql-oeQT6MSM.js +0 -1
- package/dist/ui/assets/coffee-C0B8hmok.js +0 -1
- package/dist/ui/assets/common-lisp-Cv5bFMCO.js +0 -1
- package/dist/ui/assets/coq-BrsZFFmf.js +0 -1
- package/dist/ui/assets/cpp-DDJXt6Vs.js +0 -1
- package/dist/ui/assets/crystal-Bexqace6.js +0 -1
- package/dist/ui/assets/csharp-Ct8U2NOr.js +0 -1
- package/dist/ui/assets/css-DSQhw_9R.js +0 -1
- package/dist/ui/assets/csv-Dx-8-gkx.js +0 -1
- package/dist/ui/assets/cue-CE9AQfxI.js +0 -1
- package/dist/ui/assets/cypher-ClKdZ_lG.js +0 -1
- package/dist/ui/assets/d-qD-0Kul2.js +0 -1
- package/dist/ui/assets/dark-plus-Cs2F2srj.js +0 -1
- package/dist/ui/assets/dart-DkHntEIa.js +0 -1
- package/dist/ui/assets/dax-BkyTk9wS.js +0 -1
- package/dist/ui/assets/desktop-Dlh5hvp9.js +0 -1
- package/dist/ui/assets/diff-woXpYk--.js +0 -1
- package/dist/ui/assets/docker-IyjqRm3v.js +0 -1
- package/dist/ui/assets/dotenv-_5a1GRtc.js +0 -1
- package/dist/ui/assets/dracula-BHWKrbxM.js +0 -1
- package/dist/ui/assets/dracula-soft-5eyTD99u.js +0 -1
- package/dist/ui/assets/dream-maker-DW3nJb8Q.js +0 -1
- package/dist/ui/assets/edge-Z8YYkHOr.js +0 -1
- package/dist/ui/assets/elixir-CG9uKtAF.js +0 -1
- package/dist/ui/assets/elm-GfWG2IfT.js +0 -1
- package/dist/ui/assets/emacs-lisp-C9PiwqqW.js +0 -1
- package/dist/ui/assets/erb-xe89e73J.js +0 -1
- package/dist/ui/assets/erlang-Cphh6RMH.js +0 -1
- package/dist/ui/assets/everforest-dark-sB-x3p7T.js +0 -1
- package/dist/ui/assets/everforest-light-Df2xbC6M.js +0 -1
- package/dist/ui/assets/fennel-DQxkIbk2.js +0 -1
- package/dist/ui/assets/fish-BJitypiv.js +0 -1
- package/dist/ui/assets/fluent-C03EYrpw.js +0 -1
- package/dist/ui/assets/fortran-fixed-form-DEKoE2YW.js +0 -1
- package/dist/ui/assets/fortran-free-form-CYNrtFtB.js +0 -1
- package/dist/ui/assets/fsharp-D13ZGOAj.js +0 -1
- package/dist/ui/assets/gdresource-C0sCabJj.js +0 -1
- package/dist/ui/assets/gdscript-Cp2uCuqX.js +0 -1
- package/dist/ui/assets/gdshader-CBce3t8t.js +0 -1
- package/dist/ui/assets/genie-CV2tkWYe.js +0 -1
- package/dist/ui/assets/gherkin-DExj1W_8.js +0 -1
- package/dist/ui/assets/git-commit-BSykSTBG.js +0 -1
- package/dist/ui/assets/git-rebase-CoTL_uSE.js +0 -1
- package/dist/ui/assets/github-dark-C-LZuMrd.js +0 -1
- package/dist/ui/assets/github-dark-default-DXG-b-1a.js +0 -1
- package/dist/ui/assets/github-dark-dimmed-Bx1FflLF.js +0 -1
- package/dist/ui/assets/github-dark-high-contrast-B_tTalzw.js +0 -1
- package/dist/ui/assets/github-light-EUqPIrTm.js +0 -1
- package/dist/ui/assets/github-light-default-BXViO-2h.js +0 -1
- package/dist/ui/assets/github-light-high-contrast-B68TUdTA.js +0 -1
- package/dist/ui/assets/gleam-CSRkHgEL.js +0 -1
- package/dist/ui/assets/glimmer-js-DAn4UCSu.js +0 -1
- package/dist/ui/assets/glimmer-ts-Tjyi6Gh5.js +0 -1
- package/dist/ui/assets/glsl-CtTDZoqR.js +0 -1
- package/dist/ui/assets/gn-ilITqXS6.js +0 -1
- package/dist/ui/assets/gnuplot-7GGW24-e.js +0 -1
- package/dist/ui/assets/go-BJwz_mda.js +0 -1
- package/dist/ui/assets/graphql-D5gcC_Jk.js +0 -1
- package/dist/ui/assets/groovy-CacY0gHj.js +0 -1
- package/dist/ui/assets/gruvbox-dark-hard-C820rvS2.js +0 -1
- package/dist/ui/assets/gruvbox-dark-medium-BPjhmG05.js +0 -1
- package/dist/ui/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -1
- package/dist/ui/assets/gruvbox-light-hard-BC_s9l72.js +0 -1
- package/dist/ui/assets/gruvbox-light-medium-BAWPOn9u.js +0 -1
- package/dist/ui/assets/gruvbox-light-soft-BSMLrYjP.js +0 -1
- package/dist/ui/assets/hack-BJXY27dt.js +0 -1
- package/dist/ui/assets/haml-BLfFoZf7.js +0 -1
- package/dist/ui/assets/handlebars-Dw6CWkvN.js +0 -1
- package/dist/ui/assets/haskell-D8IpX4py.js +0 -1
- package/dist/ui/assets/haxe-OTjmBuCE.js +0 -1
- package/dist/ui/assets/hcl-Dh228itO.js +0 -1
- package/dist/ui/assets/heavy-payload-Dcg0-F-S.js +0 -4
- package/dist/ui/assets/hjson-CxZEssPk.js +0 -1
- package/dist/ui/assets/hlsl-Cvrh5tZx.js +0 -1
- package/dist/ui/assets/horizon-CE9ld1lL.js +0 -1
- package/dist/ui/assets/horizon-bright-Br1oVSNq.js +0 -1
- package/dist/ui/assets/houston-CsvMBhTu.js +0 -1
- package/dist/ui/assets/html-CAcAWvoN.js +0 -1
- package/dist/ui/assets/html-derivative-8aSW2E_7.js +0 -1
- package/dist/ui/assets/http-B2YR_3V1.js +0 -1
- package/dist/ui/assets/hurl-BnDJ9Zhf.js +0 -1
- package/dist/ui/assets/hxml-B0Qn7Nwc.js +0 -1
- package/dist/ui/assets/hy-CZbG8q4J.js +0 -1
- package/dist/ui/assets/imba-DsUTQ-LC.js +0 -1
- package/dist/ui/assets/ini-B5eOa1yu.js +0 -1
- package/dist/ui/assets/java-Doxi4W8u.js +0 -1
- package/dist/ui/assets/javascript-BbRdEqti.js +0 -1
- package/dist/ui/assets/jinja-CS3Tpv_Q.js +0 -1
- package/dist/ui/assets/jison-BkPGYVHR.js +0 -1
- package/dist/ui/assets/json-BMt1m3m8.js +0 -1
- package/dist/ui/assets/json5-BR5RXkoi.js +0 -1
- package/dist/ui/assets/jsonc-CYpm1nAK.js +0 -1
- package/dist/ui/assets/jsonl-CmCQp5Yx.js +0 -1
- package/dist/ui/assets/jsonnet-CJTPZ8u_.js +0 -1
- package/dist/ui/assets/jssm-DXw9l8Rf.js +0 -1
- package/dist/ui/assets/jsx-CQKrJXXY.js +0 -1
- package/dist/ui/assets/julia-BuN7i2du.js +0 -1
- package/dist/ui/assets/just-BswEPFPu.js +0 -1
- package/dist/ui/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
- package/dist/ui/assets/kanagawa-lotus-BN08jTvb.js +0 -1
- package/dist/ui/assets/kanagawa-wave-CTweb8Dz.js +0 -1
- package/dist/ui/assets/kdl-CsD5j6eV.js +0 -1
- package/dist/ui/assets/kotlin-DhhofPvG.js +0 -1
- package/dist/ui/assets/kusto-BUv0MjJC.js +0 -1
- package/dist/ui/assets/laserwave-C_8bwKvT.js +0 -1
- package/dist/ui/assets/latex-DU2VyFfA.js +0 -1
- package/dist/ui/assets/lean-CewbzKMR.js +0 -1
- package/dist/ui/assets/less-DVTAwKKz.js +0 -1
- package/dist/ui/assets/light-plus-DVQuIRkW.js +0 -1
- package/dist/ui/assets/liquid-Cmz1L3dq.js +0 -1
- package/dist/ui/assets/llvm-Cm23YOpf.js +0 -1
- package/dist/ui/assets/log-BNLmms1o.js +0 -1
- package/dist/ui/assets/logo-Cluzi2Zq.js +0 -1
- package/dist/ui/assets/lua-CfVXhkaJ.js +0 -1
- package/dist/ui/assets/luau-CNKltnaQ.js +0 -1
- package/dist/ui/assets/make-Dixweg8N.js +0 -1
- package/dist/ui/assets/markdown-BYOwaDjH.js +0 -1
- package/dist/ui/assets/marko-C5bfqGiA.js +0 -1
- package/dist/ui/assets/material-theme-Bm3Qr25_.js +0 -1
- package/dist/ui/assets/material-theme-darker-2IIEA8gg.js +0 -1
- package/dist/ui/assets/material-theme-lighter-uhdI0v04.js +0 -1
- package/dist/ui/assets/material-theme-ocean-CHQ94UKr.js +0 -1
- package/dist/ui/assets/material-theme-palenight-B5W6OYN7.js +0 -1
- package/dist/ui/assets/matlab-D7qyCx1q.js +0 -1
- package/dist/ui/assets/mdc-CVBXYfyq.js +0 -1
- package/dist/ui/assets/mdx-DQZ5AkYe.js +0 -1
- package/dist/ui/assets/mermaid-Bk4SNUv9.js +0 -1
- package/dist/ui/assets/min-dark-BSWPekZh.js +0 -1
- package/dist/ui/assets/min-light-DDpmG2fV.js +0 -1
- package/dist/ui/assets/mipsasm-BMqwQI7S.js +0 -1
- package/dist/ui/assets/mojo-BgCJLMeH.js +0 -1
- package/dist/ui/assets/monokai-CdkpiU2Y.js +0 -1
- package/dist/ui/assets/moonbit-CaWjb8XO.js +0 -1
- package/dist/ui/assets/move-B1IS1UjX.js +0 -1
- package/dist/ui/assets/narrat-_X_XdTYD.js +0 -1
- package/dist/ui/assets/nextflow-Bbiyy34d.js +0 -1
- package/dist/ui/assets/nextflow-groovy-Dc_ddanL.js +0 -1
- package/dist/ui/assets/nginx-CzJafxLa.js +0 -1
- package/dist/ui/assets/night-owl-DhmEMT88.js +0 -1
- package/dist/ui/assets/night-owl-light-eJ-hLW7d.js +0 -1
- package/dist/ui/assets/nim-DABKtHtM.js +0 -1
- package/dist/ui/assets/nix-IvuFDN5E.js +0 -1
- package/dist/ui/assets/nord-Cb4Vim4T.js +0 -1
- package/dist/ui/assets/nushell-DcLAeLz5.js +0 -1
- package/dist/ui/assets/objective-c-D1A_Heim.js +0 -1
- package/dist/ui/assets/objective-cpp-BsSzOQcm.js +0 -1
- package/dist/ui/assets/ocaml-O90oeIOV.js +0 -1
- package/dist/ui/assets/odin-B1RWQWA5.js +0 -1
- package/dist/ui/assets/one-dark-pro-CLwyXe_n.js +0 -1
- package/dist/ui/assets/one-light-D7Lr4KcI.js +0 -1
- package/dist/ui/assets/openscad-BUDT5pXO.js +0 -1
- package/dist/ui/assets/pascal-4ZHwLPI5.js +0 -1
- package/dist/ui/assets/perl-CBh7L3lZ.js +0 -1
- package/dist/ui/assets/php-DFbI9q5p.js +0 -1
- package/dist/ui/assets/pierre-dark-sU4Zdns8.js +0 -1
- package/dist/ui/assets/pierre-dark-soft-HXgun5vs.js +0 -1
- package/dist/ui/assets/pierre-light-DWBk51d8.js +0 -1
- package/dist/ui/assets/pierre-light-soft-CodEzPxf.js +0 -1
- package/dist/ui/assets/pkl-ot-7Btpt.js +0 -1
- package/dist/ui/assets/plastic-DQwYfKfQ.js +0 -1
- package/dist/ui/assets/plsql-DGHpHOYJ.js +0 -1
- package/dist/ui/assets/po-BiJDBrnU.js +0 -1
- package/dist/ui/assets/poimandres-DRFjx7u4.js +0 -1
- package/dist/ui/assets/polar-C7UOKdEL.js +0 -1
- package/dist/ui/assets/postcss-BXeXVLqQ.js +0 -1
- package/dist/ui/assets/powerquery-DNMTfnFr.js +0 -1
- package/dist/ui/assets/powershell-DshXNtvi.js +0 -1
- package/dist/ui/assets/prisma-BsRQq5mF.js +0 -1
- package/dist/ui/assets/prolog-iXnhIJG7.js +0 -1
- package/dist/ui/assets/proto-DB4EqR-F.js +0 -1
- package/dist/ui/assets/pug-C_PxC7gO.js +0 -1
- package/dist/ui/assets/puppet-CDv2pdJW.js +0 -1
- package/dist/ui/assets/purescript-9MfHhQsQ.js +0 -1
- package/dist/ui/assets/python-gzcpVVnB.js +0 -1
- package/dist/ui/assets/qml-DtngoFFK.js +0 -1
- package/dist/ui/assets/qmldir-DCQb3MpD.js +0 -1
- package/dist/ui/assets/qss-Fe1Jh2GI.js +0 -1
- package/dist/ui/assets/r-DohkcevW.js +0 -1
- package/dist/ui/assets/racket-DcIDlBhZ.js +0 -1
- package/dist/ui/assets/raku-B3gFvitq.js +0 -1
- package/dist/ui/assets/razor-C4t8J0_E.js +0 -1
- package/dist/ui/assets/red-CJ3rzSJv.js +0 -1
- package/dist/ui/assets/reg-CRGYupPL.js +0 -1
- package/dist/ui/assets/regexp-OGbTbjgY.js +0 -1
- package/dist/ui/assets/rel-BtDbiS_P.js +0 -1
- package/dist/ui/assets/review-payload-C5Qz60Kq.js +0 -1
- package/dist/ui/assets/riscv-Ckw8ddFX.js +0 -1
- package/dist/ui/assets/ron-VUp2lXgN.js +0 -1
- package/dist/ui/assets/rose-pine-BthvhNj6.js +0 -1
- package/dist/ui/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
- package/dist/ui/assets/rose-pine-moon-hon4tzzS.js +0 -1
- package/dist/ui/assets/rosmsg-CAekHB0j.js +0 -1
- package/dist/ui/assets/rst-CfBbbcvC.js +0 -1
- package/dist/ui/assets/ruby-Bw0mpxHY.js +0 -1
- package/dist/ui/assets/rust-Cfkwpbl8.js +0 -1
- package/dist/ui/assets/sas-Cs3s9JOf.js +0 -1
- package/dist/ui/assets/sass-DXrisJhu.js +0 -1
- package/dist/ui/assets/scala-DKOlJaKm.js +0 -1
- package/dist/ui/assets/scheme-DQCgrYNe.js +0 -1
- package/dist/ui/assets/scss-sRxNJS54.js +0 -1
- package/dist/ui/assets/sdbl-bTVj8UrX.js +0 -1
- package/dist/ui/assets/shaderlab-TOUzSsQk.js +0 -1
- package/dist/ui/assets/shellscript-B0X6wh0R.js +0 -1
- package/dist/ui/assets/shellsession-D2FdOioR.js +0 -1
- package/dist/ui/assets/slack-dark-DnToyrRv.js +0 -1
- package/dist/ui/assets/slack-ochin-B2OO5cIa.js +0 -1
- package/dist/ui/assets/smalltalk-B16xEiuN.js +0 -1
- package/dist/ui/assets/snazzy-light-4G7pJPwS.js +0 -1
- package/dist/ui/assets/solarized-dark-DV17i1UV.js +0 -1
- package/dist/ui/assets/solarized-light-DSh2HLQt.js +0 -1
- package/dist/ui/assets/solidity-CKzVLygQ.js +0 -1
- package/dist/ui/assets/soy-s6g9OjJ1.js +0 -1
- package/dist/ui/assets/sparql-D_iOobhT.js +0 -1
- package/dist/ui/assets/splunk-BC2Px7Mm.js +0 -1
- package/dist/ui/assets/sql-DVTnh5V-.js +0 -1
- package/dist/ui/assets/ssh-config-BgfXC-Er.js +0 -1
- package/dist/ui/assets/stata-DFIDiXF9.js +0 -1
- package/dist/ui/assets/stylus-B6D30XZt.js +0 -1
- package/dist/ui/assets/surrealql-DVfrsLyg.js +0 -1
- package/dist/ui/assets/svelte-D5GsxESq.js +0 -1
- package/dist/ui/assets/swift-DonLKvLd.js +0 -1
- package/dist/ui/assets/synthwave-84-nFMaYfgc.js +0 -1
- package/dist/ui/assets/system-verilog-DJ5XKQeo.js +0 -1
- package/dist/ui/assets/systemd-BxMlprV5.js +0 -1
- package/dist/ui/assets/talonscript-CohzipZa.js +0 -1
- package/dist/ui/assets/tasl-DMoTqEGO.js +0 -1
- package/dist/ui/assets/tcl-CZd0xW_V.js +0 -1
- package/dist/ui/assets/templ-DI-Zyqzd.js +0 -1
- package/dist/ui/assets/terraform-DswuEJGm.js +0 -1
- package/dist/ui/assets/tex-WHHmlbJI.js +0 -1
- package/dist/ui/assets/tokyo-night-oM2G3aXe.js +0 -1
- package/dist/ui/assets/toml-CcmNWLt0.js +0 -1
- package/dist/ui/assets/ts-tags-Dwpo2RFJ.js +0 -1
- package/dist/ui/assets/tsv-sltzmVWM.js +0 -1
- package/dist/ui/assets/tsx-ph_idaAW.js +0 -1
- package/dist/ui/assets/turtle-ByJddavk.js +0 -1
- package/dist/ui/assets/twig-YO17jFjR.js +0 -1
- package/dist/ui/assets/typescript-CbAxjhkl.js +0 -1
- package/dist/ui/assets/typespec-B88KGewJ.js +0 -1
- package/dist/ui/assets/typst-DI99ib-x.js +0 -1
- package/dist/ui/assets/useFileDiffInstance-B2DLX3Vg.js +0 -244
- package/dist/ui/assets/v-DETTlOr0.js +0 -1
- package/dist/ui/assets/vala-zf12oZj6.js +0 -1
- package/dist/ui/assets/vb-Djn5o6TS.js +0 -1
- package/dist/ui/assets/verilog-CiiDBU1e.js +0 -1
- package/dist/ui/assets/vesper-D5bVUKB1.js +0 -1
- package/dist/ui/assets/vhdl-BroJfC0k.js +0 -1
- package/dist/ui/assets/viml-DvXPmvsu.js +0 -1
- package/dist/ui/assets/vitesse-black-fwtXNY1n.js +0 -1
- package/dist/ui/assets/vitesse-dark-BZCL-v6S.js +0 -1
- package/dist/ui/assets/vitesse-light-VbXTXTou.js +0 -1
- package/dist/ui/assets/vue-CraHL-Ps.js +0 -1
- package/dist/ui/assets/vue-html-e9tyZNtS.js +0 -1
- package/dist/ui/assets/vue-vine-CofmxaUb.js +0 -1
- package/dist/ui/assets/vyper-CgoNMtux.js +0 -1
- package/dist/ui/assets/wasm-BnjxR4X6.js +0 -1
- package/dist/ui/assets/wasm-ByWQv1Qj.js +0 -1
- package/dist/ui/assets/wenyan-C8pVoKbM.js +0 -1
- package/dist/ui/assets/wgsl-BsKzXJz4.js +0 -1
- package/dist/ui/assets/wikitext-ClFFjSW2.js +0 -1
- package/dist/ui/assets/wit-DdvCle-K.js +0 -1
- package/dist/ui/assets/wolfram-DLL8P-h_.js +0 -1
- package/dist/ui/assets/workspace-app-8--oTbCd.css +0 -1
- package/dist/ui/assets/xml-BWSdPZHm.js +0 -1
- package/dist/ui/assets/xsl-BtCt7Hx8.js +0 -1
- package/dist/ui/assets/yaml-BZiTw7cQ.js +0 -1
- package/dist/ui/assets/zenscript-BnlCZFoB.js +0 -1
- package/dist/ui/assets/zig-CMLA9XwU.js +0 -1
- package/docs/assets/auvrynt-logo-light.png +0 -0
- package/docs/assets/auvrynt-screenshot.png +0 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# GODOT_AGENT_GUIDE.md
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
This guide applies to Godot 4 game development projects. It covers C#, GDScript, and mixed C#/GDScript projects. The Godot project remains the primary project type whenever a `project.godot` file exists.
|
|
6
|
+
|
|
7
|
+
Do not edit `.godot/imported` manually.
|
|
8
|
+
Do not edit binary `.scn` or `.res` files directly.
|
|
9
|
+
Do not use generic `.NET` tools (like `dotnet run`) to launch a Godot game; use Godot-specific tools.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Language Routing
|
|
14
|
+
|
|
15
|
+
Before modifying or inspecting files, identify the script language:
|
|
16
|
+
|
|
17
|
+
- **`.gd` files:** Use GDScript diagnostics, GDScript editing rules, and GDScript debugger/LSP tools.
|
|
18
|
+
- **`.cs` files:** Use Godot C# build, Roslyn/LSP, C# exception parser, and C# semantic definitions.
|
|
19
|
+
- **Scenes and resource files (`.tscn`, `.tres`):** Use the shared Godot editor bridge and Inspector APIs.
|
|
20
|
+
- **Mixed projects:** Validate both C# build and GDScript parsing when changes span both boundaries.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Shared Godot Capabilities
|
|
25
|
+
|
|
26
|
+
- Project and executable discovery.
|
|
27
|
+
- Headless project validation & asset reimporting.
|
|
28
|
+
- Persistent process management for running projects/scenes.
|
|
29
|
+
- Runtime logs and error categorization.
|
|
30
|
+
- Live editor bridge (connect, status, disconnect).
|
|
31
|
+
- Edited/remote scene tree mutation and property editing (using UndoRedo).
|
|
32
|
+
- Performance monitors (FPS, memory, nodes).
|
|
33
|
+
- Input injection & visual gameplay assertions (screenshots, node existence).
|
|
34
|
+
- Export presets listing and headless exporting.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## GDScript Development Rules
|
|
39
|
+
|
|
40
|
+
### Editing & Syntax
|
|
41
|
+
- Use Godot 4 syntax rules (e.g. `await` instead of `yield`, modern annotations like `@onready`, `@export`).
|
|
42
|
+
- Preserve the existing indentation style (tabs vs spaces) and static typing conventions.
|
|
43
|
+
- Use snake_case for methods/variables, PascalCase for `class_name` definitions.
|
|
44
|
+
- Only add `@tool` or `class_name` when explicitly requested or necessary.
|
|
45
|
+
- Avoid calling `get_node()` (or `$`) inside expensive callbacks like `_process()` or `_physics_process()`; cache them using `@onready` instead.
|
|
46
|
+
- Use `_physics_process()` for frame-independent movement/physics updates.
|
|
47
|
+
- Respect object lifetimes; use `is_instance_valid()` before accessing potentially freed objects.
|
|
48
|
+
- Use deferred calls (`call_deferred()`) when mutating the scene tree inside signal handlers or physics callbacks.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Godot C# Development Rules
|
|
53
|
+
|
|
54
|
+
### Editing & Syntax
|
|
55
|
+
- Use partial classes for nodes (e.g. `public partial class Player : CharacterBody2D`).
|
|
56
|
+
- Preserve namespace structure and naming conventions.
|
|
57
|
+
- Avoid calling `GetNode()` repeatedly inside `_Process()` or `_PhysicsProcess()`.
|
|
58
|
+
- Use `_PhysicsProcess(double delta)` for physics updates.
|
|
59
|
+
- Respect Godot object lifetimes and call `Dispose()` or `QueueFree()` when freeing nodes.
|
|
60
|
+
- Do not translate GDScript API names blindly (e.g. GDScript `queue_free()` becomes C# `QueueFree()`).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Prerequisites
|
|
65
|
+
|
|
66
|
+
| Requirement | Notes |
|
|
67
|
+
|---|---|
|
|
68
|
+
| **Godot 4.2+ with .NET** | Must be the `mono`/`.NET`-enabled build (e.g. `Godot_v4.x.x-stable_mono_win64`) |
|
|
69
|
+
| **.NET SDK 8.0+** | Required for C# compilation |
|
|
70
|
+
| **Auvrynt server** | Running and connected to your AI client |
|
|
71
|
+
| **Auvrynt workspace** | Opened via `open_workspace` pointing to your Godot project root |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Environment Variables
|
|
76
|
+
|
|
77
|
+
Set these to help Auvrynt find the right Godot executable:
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
# Preferred: Godot .NET-enabled executable
|
|
81
|
+
set GODOT_DOTNET_EXECUTABLE=C:\Godot\Godot_v4.4_mono_win64.exe
|
|
82
|
+
|
|
83
|
+
# Fallback if above is not set
|
|
84
|
+
set GODOT_EXECUTABLE=C:\Godot\Godot_v4.4_stable_win64.exe
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Quick Start — New Project
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
1. open_workspace({ path: "/path/to/my-godot-game" })
|
|
93
|
+
2. godot_dotnet_environment({ workspaceId }) # verify setup
|
|
94
|
+
3. inspect_godot_dotnet_project({ workspaceId }) # check project health
|
|
95
|
+
4. godot_dotnet_restore({ workspaceId, projectPath: "." })
|
|
96
|
+
5. godot_dotnet_build({ workspaceId, projectPath: "." })
|
|
97
|
+
6. godot_run_project({ workspaceId, projectPath: ".", debug: true })
|
|
98
|
+
7. godot_get_runtime_logs({ workspaceId, processId })
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Editor Bridge Setup
|
|
104
|
+
|
|
105
|
+
The editor bridge enables live scene-tree inspection and node mutation from Auvrynt while the Godot editor is open.
|
|
106
|
+
|
|
107
|
+
### Setup
|
|
108
|
+
|
|
109
|
+
1. **Copy the plugin** into your project:
|
|
110
|
+
```
|
|
111
|
+
addons/auvrynt_bridge/auvrynt_bridge.gd
|
|
112
|
+
addons/auvrynt_bridge/plugin.cfg
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
2. **Enable the plugin** in Godot:
|
|
116
|
+
`Project → Project Settings → Plugins → AuvryntBridge → Enable`
|
|
117
|
+
|
|
118
|
+
3. **Connect from Auvrynt**:
|
|
119
|
+
```
|
|
120
|
+
godot_editor_connect({
|
|
121
|
+
workspaceId,
|
|
122
|
+
projectPath: ".",
|
|
123
|
+
token: "<printed in Godot Output panel>"
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
The token is printed in the Godot **Output** panel when the plugin starts:
|
|
127
|
+
```
|
|
128
|
+
[AuvryntBridge] Listening on 127.0.0.1:49322 token=12345678
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
4. **Verify connection**:
|
|
132
|
+
```
|
|
133
|
+
godot_editor_status({ workspaceId })
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Bridge Methods
|
|
137
|
+
|
|
138
|
+
| Tool | Method | Notes |
|
|
139
|
+
|---|---|---|
|
|
140
|
+
| `godot_get_scene_tree` | `scene.get_tree` | Edited scene tree |
|
|
141
|
+
| `godot_get_scene_tree` (mode=remote) | `remote.get_scene_tree` | Running game tree |
|
|
142
|
+
| `godot_get_runtime_property` | `remote.get_property` | Live runtime value |
|
|
143
|
+
| `godot_get_performance_monitors` | `remote.get_performance_monitors` | FPS, memory, node count |
|
|
144
|
+
| `godot_assert_node_exists` | `remote.get_node` | Pass/fail node check |
|
|
145
|
+
| `godot_assert_property` | `remote.get_property` + comparison | Gameplay assertion |
|
|
146
|
+
| `godot_press_action` | `input.press_action` | Input simulation |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Complete Tool Reference
|
|
151
|
+
|
|
152
|
+
### Environment & Project
|
|
153
|
+
|
|
154
|
+
| Tool | What it does |
|
|
155
|
+
|---|---|
|
|
156
|
+
| `godot_dotnet_environment` | Detect executable, .NET SDK, architecture |
|
|
157
|
+
| `inspect_godot_dotnet_project` | Inspect `.csproj`, `.sln`, autoloads, scripts |
|
|
158
|
+
|
|
159
|
+
### Build & Restore
|
|
160
|
+
|
|
161
|
+
| Tool | What it does |
|
|
162
|
+
|---|---|
|
|
163
|
+
| `godot_build_solutions` | Regenerate `.sln`/`.csproj` (run after adding C# files) |
|
|
164
|
+
| `godot_dotnet_restore` | NuGet restore |
|
|
165
|
+
| `godot_dotnet_build` | C# build, returns structured diagnostics |
|
|
166
|
+
| `godot_dotnet_clean` | Remove `bin/` and `obj/` |
|
|
167
|
+
|
|
168
|
+
### Running
|
|
169
|
+
|
|
170
|
+
| Tool | What it does |
|
|
171
|
+
|---|---|
|
|
172
|
+
| `godot_run_project` | Launch project as tracked persistent process |
|
|
173
|
+
| `godot_run_scene` | Launch a single `.tscn` scene |
|
|
174
|
+
| `godot_stop` | Stop a tracked Godot process |
|
|
175
|
+
| `godot_get_runtime_logs` | Structured runtime log categorization |
|
|
176
|
+
|
|
177
|
+
### Validation & Import
|
|
178
|
+
|
|
179
|
+
| Tool | What it does |
|
|
180
|
+
|---|---|
|
|
181
|
+
| `godot_validate_project` | Headless validation: imports, scripts, plugins |
|
|
182
|
+
| `godot_import_assets` | Force headless reimport |
|
|
183
|
+
|
|
184
|
+
### Editor Bridge
|
|
185
|
+
|
|
186
|
+
| Tool | What it does |
|
|
187
|
+
|---|---|
|
|
188
|
+
| `godot_editor_connect` | Connect to Godot editor plugin |
|
|
189
|
+
| `godot_editor_status` | Check connection |
|
|
190
|
+
| `godot_editor_disconnect` | Disconnect |
|
|
191
|
+
| `godot_get_scene_tree` | Scene tree (edited or remote) |
|
|
192
|
+
| `godot_get_runtime_property` | Read live runtime property |
|
|
193
|
+
| `godot_get_performance_monitors` | FPS, memory, physics timing |
|
|
194
|
+
|
|
195
|
+
### C# Semantics
|
|
196
|
+
|
|
197
|
+
| Tool | What it does |
|
|
198
|
+
|---|---|
|
|
199
|
+
| `godot_find_csharp_class` | Find class by name, get `[Export]`, `[Signal]`, overrides |
|
|
200
|
+
| `godot_get_exported_properties` | List `[Export]` properties on a script |
|
|
201
|
+
| `godot_get_csharp_diagnostics` | Scan for anti-patterns |
|
|
202
|
+
|
|
203
|
+
### Project Settings & Configuration
|
|
204
|
+
|
|
205
|
+
| Tool | What it does |
|
|
206
|
+
|---|---|
|
|
207
|
+
| `godot_get_project_settings` | Read all `project.godot` settings |
|
|
208
|
+
| `godot_get_input_map` | List input actions |
|
|
209
|
+
| `godot_get_autoloads` | List autoloads |
|
|
210
|
+
| `godot_apply_pixel_art_import_preset` | Nearest-neighbour, lossless, no mipmaps |
|
|
211
|
+
| `godot_generate_vscode_config` | Create `.vscode/tasks.json` + `.vscode/launch.json` |
|
|
212
|
+
|
|
213
|
+
### Export
|
|
214
|
+
|
|
215
|
+
| Tool | What it does |
|
|
216
|
+
|---|---|
|
|
217
|
+
| `godot_list_export_presets` | List export presets from `export_presets.cfg` |
|
|
218
|
+
| `godot_export_project` | Export using named preset |
|
|
219
|
+
|
|
220
|
+
### Testing & Assertions
|
|
221
|
+
|
|
222
|
+
| Tool | What it does |
|
|
223
|
+
|---|---|
|
|
224
|
+
| `godot_assert_node_exists` | Assert node exists in remote scene tree |
|
|
225
|
+
| `godot_assert_property` | Assert runtime property value (`eq`, `neq`, `gt`, `lt`, `approx`, `contains`, `exists`) |
|
|
226
|
+
| `godot_run_test_sequence` | Automated gameplay sequence (max 50 steps, 30s) |
|
|
227
|
+
| `godot_press_action` | Inject input action via bridge |
|
|
228
|
+
|
|
229
|
+
### Visuals
|
|
230
|
+
|
|
231
|
+
| Tool | What it does |
|
|
232
|
+
|---|---|
|
|
233
|
+
| `godot_capture_game` | Screenshot a running Godot window |
|
|
234
|
+
| `view_image` | Load and inspect an image file |
|
|
235
|
+
| `inspect_image` | Analyse pixel dimensions, palette, format |
|
|
236
|
+
| `inspect_sprite` | Detect animation frames in sprite sheets |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Recommended Workflow
|
|
241
|
+
|
|
242
|
+
1. Open workspace and inspect project languages.
|
|
243
|
+
2. If C# is present, compile C# using `godot_dotnet_build`.
|
|
244
|
+
3. Run headless project validation using `godot_validate_project`.
|
|
245
|
+
4. Inspect the active scene or node properties via the editor bridge.
|
|
246
|
+
5. Make minimal changes to scripts. Validate syntax.
|
|
247
|
+
6. Launch the project or active scene as a persistent process.
|
|
248
|
+
7. Inject input or test gameplay behavior using assertions.
|
|
249
|
+
8. Capture gameplay window screenshot to verify visually.
|
|
250
|
+
9. Stop the game process when finished.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Security Model
|
|
255
|
+
|
|
256
|
+
- **Path resolution**: All file paths are resolved via `workspaces.resolvePath` — reading outside the opened workspace root is blocked.
|
|
257
|
+
- **Process tracking**: Processes are tracked by `workspaceId` + `processId`. Stopping a process from a different workspace is not permitted.
|
|
258
|
+
- **Editor bridge**: Runs on `127.0.0.1` only. Requires a per-session token printed in the Godot output panel. Never accepts external connections.
|
|
259
|
+
- **NuGet restore**: Credentials are redacted from output before returning to the AI client.
|
|
260
|
+
- **Export**: Output path must resolve inside the opened workspace.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Serena (Semantic Code)
|
|
265
|
+
|
|
266
|
+
Serena provides language-aware symbol navigation for Godot C# and GDScript source files.
|
|
267
|
+
|
|
268
|
+
**Use Serena for:**
|
|
269
|
+
- C# or GDScript source navigation when supported reliably
|
|
270
|
+
- References and symbol structure
|
|
271
|
+
- Code-level refactoring
|
|
272
|
+
|
|
273
|
+
**Do not use Serena for:**
|
|
274
|
+
- Scene tree, Inspector, resources, animations, TileMap, collision
|
|
275
|
+
- Remote runtime tree, game input, screenshots, exports
|
|
276
|
+
|
|
277
|
+
**Use:**
|
|
278
|
+
- Godot editor bridge → scenes/resources/runtime
|
|
279
|
+
- Serena → semantic source navigation (`serena_find_symbol`, `serena_find_referencing_symbols`, etc.)
|
|
280
|
+
- Godot/.NET diagnostics → build/parser truth (`godot_dotnet_build`, `godot_get_gdscript_diagnostics`)
|
|
281
|
+
|
|
282
|
+
Do not replace Godot's GDScript LSP integration with Serena unless tests prove equivalent behavior.
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Troubleshooting
|
|
287
|
+
|
|
288
|
+
### `GODOT_DOTNET_EXECUTABLE not set`
|
|
289
|
+
Set the env var (see above) or run `godot_dotnet_environment` to see what was auto-detected.
|
|
290
|
+
|
|
291
|
+
### `Build failed: Godot.NET.Sdk not found`
|
|
292
|
+
Run `godot_build_solutions` first to generate the `.csproj`. This requires the Godot editor executable to be available.
|
|
293
|
+
|
|
294
|
+
### `Editor bridge: connection refused`
|
|
295
|
+
Make sure the Auvrynt Bridge plugin is enabled and the Godot editor is open with the project loaded. Copy the token from the Godot Output panel.
|
|
296
|
+
|
|
297
|
+
### `Node not found` errors
|
|
298
|
+
The `nodePath` must be relative to the scene root (e.g. `Player/Sprite2D`), not absolute. For remote tree queries, the game must be running.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# PROJECT_ROUTER.md
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Read this file first before any development work. Detect the active project or subproject, then load **only** the relevant guide. Do not load all guides by default.
|
|
6
|
+
|
|
7
|
+
Available guides: `WEB_AGENT_GUIDE.md`, `SOFTWARE_AGENT_GUIDE.md`, `GODOT_AGENT_GUIDE.md`, `BLENDER_AGENT_GUIDE.md`, `ASEPRITE_AGENT_GUIDE.md`, `ROBLOX_AGENT_GUIDE.md` (all in this `guides/` directory).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Project Detection
|
|
12
|
+
|
|
13
|
+
Inspect the workspace root for these indicators:
|
|
14
|
+
|
|
15
|
+
### Blender indicators (highest priority for 3D asset work)
|
|
16
|
+
- `.blend`, `.blend1`
|
|
17
|
+
- Python scripts importing `bpy`
|
|
18
|
+
- `blender_manifest.toml`
|
|
19
|
+
- `addons/` with `plugin.cfg` and `__init__.py`
|
|
20
|
+
- Blender asset library directories
|
|
21
|
+
- Explicit user request mentioning Blender, 3D modeling, rigging, rendering, or UV mapping
|
|
22
|
+
|
|
23
|
+
### Aseprite indicators (highest priority for pixel-art asset work)
|
|
24
|
+
- `.aseprite`, `.ase`
|
|
25
|
+
- Aseprite Lua scripts
|
|
26
|
+
- Explicit user request mentioning Aseprite, exact pixel drawing, sprite animation, palettes, layers, tags, or frame timing
|
|
27
|
+
|
|
28
|
+
### Godot indicators
|
|
29
|
+
- `project.godot`
|
|
30
|
+
- `*.tscn`, `*.tres`, `*.gd`
|
|
31
|
+
- `*.cs` (combined with `project.godot`)
|
|
32
|
+
- `export_presets.cfg`
|
|
33
|
+
- `.godot/`
|
|
34
|
+
|
|
35
|
+
### Web indicators
|
|
36
|
+
- `package.json`
|
|
37
|
+
- `vite.config.*`, `next.config.*`, `nuxt.config.*`, `angular.json`, `astro.config.*`, `svelte.config.*`
|
|
38
|
+
- `index.html` in root or `public/`
|
|
39
|
+
- `src/` with `.tsx`, `.vue`, `.svelte` files
|
|
40
|
+
|
|
41
|
+
### General software / .NET indicators
|
|
42
|
+
- `*.sln`, `*.csproj`, `*.fsproj`, `*.vbproj`
|
|
43
|
+
- `Directory.Build.props`, `Directory.Packages.props`, `global.json`
|
|
44
|
+
- `src/` with `.cs` / `.fs` files (without `project.godot`)
|
|
45
|
+
- `tests/`, `test/`
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Routing Rules
|
|
50
|
+
|
|
51
|
+
### Rule 1 — Godot project
|
|
52
|
+
If `project.godot` exists:
|
|
53
|
+
- **Primary guide**: `GODOT_AGENT_GUIDE.md`
|
|
54
|
+
- If `.cs` or `.csproj` also exists → use Godot C# sections of `GODOT_AGENT_GUIDE.md`
|
|
55
|
+
- If `.gd` exists → use GDScript sections of `GODOT_AGENT_GUIDE.md`
|
|
56
|
+
- If both → use mixed-language rules in `GODOT_AGENT_GUIDE.md`
|
|
57
|
+
- `SOFTWARE_AGENT_GUIDE.md` is secondary only for generic .NET operations outside Godot
|
|
58
|
+
- If source `.blend` files exist alongside → load `BLENDER_AGENT_GUIDE.md` **only for the Blender asset task**
|
|
59
|
+
- Do not use browser tools unless the project has an actual web UI
|
|
60
|
+
|
|
61
|
+
### Rule 2 — Web project (no `project.godot`)
|
|
62
|
+
If project is clearly a website or web application:
|
|
63
|
+
- **Primary guide**: `WEB_AGENT_GUIDE.md`
|
|
64
|
+
- Do not load Godot tools
|
|
65
|
+
- Load `SOFTWARE_AGENT_GUIDE.md` only for backend/service component of the same task
|
|
66
|
+
- If `.blend` source assets exist → load `BLENDER_AGENT_GUIDE.md` only when editing that asset
|
|
67
|
+
|
|
68
|
+
### Rule 3 — General software / .NET
|
|
69
|
+
If project is a desktop app, CLI, API, service, library, or non-Godot .NET project:
|
|
70
|
+
- **Primary guide**: `SOFTWARE_AGENT_GUIDE.md`
|
|
71
|
+
- Do not use Godot tools
|
|
72
|
+
- Do not use browser tools unless the app exposes a web interface
|
|
73
|
+
|
|
74
|
+
### Rule 4 — Blender-only
|
|
75
|
+
If primary task involves 3D modeling, rendering, material, rigging, animation, UV mapping, or export:
|
|
76
|
+
- **Primary guide**: `BLENDER_AGENT_GUIDE.md`
|
|
77
|
+
- Do not load web, Godot, or software tools unless the task explicitly crosses into those domains
|
|
78
|
+
|
|
79
|
+
### Rule 5 — Aseprite / pixel-art assets
|
|
80
|
+
If the primary task involves exact pixel editing, sprite animation, layers, palettes, tags, or Aseprite export:
|
|
81
|
+
- **Primary guide**: `ASEPRITE_AGENT_GUIDE.md`
|
|
82
|
+
- Use native `aseprite_*` tools rather than a GUI plugin unless live editor state is explicitly required.
|
|
83
|
+
- If the sprite belongs to a Godot project, use `GODOT_AGENT_GUIDE.md` only for the engine-side import/runtime task.
|
|
84
|
+
- Do not use image-generation tools as a substitute for exact pixel edits.
|
|
85
|
+
|
|
86
|
+
### Rule 6 — Monorepo
|
|
87
|
+
Identify the active subproject from the user request. Read only that subproject's guide. Refresh project state when switching subprojects.
|
|
88
|
+
|
|
89
|
+
Example layout:
|
|
90
|
+
```
|
|
91
|
+
apps/web/ → WEB_AGENT_GUIDE.md
|
|
92
|
+
games/rpg/ → GODOT_AGENT_GUIDE.md (contains project.godot)
|
|
93
|
+
services/api/ → SOFTWARE_AGENT_GUIDE.md
|
|
94
|
+
assets/characters/ → BLENDER_AGENT_GUIDE.md (.blend files)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Rule 7 — Unclear
|
|
98
|
+
Inspect only the smallest useful set of root files. State which guide was selected and why. Do not scan the entire repository.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Context Efficiency
|
|
103
|
+
|
|
104
|
+
- Never load all guides together for a single-project task.
|
|
105
|
+
- Prefer one primary guide per task.
|
|
106
|
+
- Add a secondary guide only when the task genuinely crosses project boundaries.
|
|
107
|
+
- Keep irrelevant tool schemas out of context.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Expected Agent Behavior
|
|
112
|
+
|
|
113
|
+
> Before making changes, classify the active project or subproject.
|
|
114
|
+
> Load only the relevant development guide.
|
|
115
|
+
> Use the smallest set of tools needed for the current task.
|
|
116
|
+
> Never invent unavailable tools or claim unverified results.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Routing Quick Reference
|
|
121
|
+
|
|
122
|
+
| Evidence | Guide |
|
|
123
|
+
|---|---|
|
|
124
|
+
| `project.godot` | GODOT_AGENT_GUIDE.md |
|
|
125
|
+
| `package.json` + `vite.config.*` | WEB_AGENT_GUIDE.md |
|
|
126
|
+
| `*.sln` / `*.csproj` (no `project.godot`) | SOFTWARE_AGENT_GUIDE.md |
|
|
127
|
+
| `.blend` / `bpy` scripts / explicit Blender request | BLENDER_AGENT_GUIDE.md |
|
|
128
|
+
| `.aseprite` / `.ase` / explicit pixel-art animation request | ASEPRITE_AGENT_GUIDE.md |
|
|
129
|
+
| Godot project + `.blend` source asset task | GODOT_AGENT_GUIDE.md primary, BLENDER_AGENT_GUIDE.md secondary |
|
|
130
|
+
| Web project + `.blend` source asset task | WEB_AGENT_GUIDE.md primary, BLENDER_AGENT_GUIDE.md secondary |
|
|
131
|
+
|
|
132
|
+
## Serena (Semantic Code Engine)
|
|
133
|
+
|
|
134
|
+
Serena is a local semantic code analysis engine accessible through Auvrynt. It provides symbol-aware navigation and editing across supported languages.
|
|
135
|
+
|
|
136
|
+
**Use Serena when:**
|
|
137
|
+
- Locating symbols in a large codebase
|
|
138
|
+
- Understanding class/function/component structure
|
|
139
|
+
- Finding definitions and references
|
|
140
|
+
- Tracing cross-file dependencies
|
|
141
|
+
- Performing symbol-aware insertion or replacement
|
|
142
|
+
- Safely renaming symbols
|
|
143
|
+
- Navigating monorepos
|
|
144
|
+
- Inspecting unfamiliar architecture
|
|
145
|
+
|
|
146
|
+
**Do not use Serena for:**
|
|
147
|
+
- Simple exact text replacement (use Auvrynt edit tools)
|
|
148
|
+
- Reading a small known file (use Auvrynt read tools)
|
|
149
|
+
- Starting servers, process logs, browser DOM, console errors, network requests, screenshots, visual comparison, image inspection
|
|
150
|
+
- Godot scene-tree operations or Blender scene/object operations
|
|
151
|
+
- Git commands
|
|
152
|
+
|
|
153
|
+
**Routing:**
|
|
154
|
+
- Need semantic code structure? → Start a Serena session with `serena_start_session`, then use `serena_find_symbol`, `serena_find_referencing_symbols`, etc.
|
|
155
|
+
- Need ordinary file/config inspection? → Auvrynt workspace tools
|
|
156
|
+
- Need runtime behavior? → Auvrynt process/browser/Godot/Blender tools
|
|
157
|
+
- Need visual evidence? → Auvrynt screenshot/image tools
|
|
158
|
+
|
|
159
|
+
To enable Serena, set `AUVRYNT_SERENA_ENABLED=true` or add `"serena": { "enabled": true }` to Auvrynt config.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Nested Instruction Files
|
|
164
|
+
|
|
165
|
+
If a subdirectory contains its own `AGENTS.md` or `CLAUDE.md`, those instructions override root-level guidance for that subdirectory.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# ROBLOX_AGENT_GUIDE.md
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
Official **Roblox Studio MCP** proxy through Auvrynt (Option A).
|
|
6
|
+
|
|
7
|
+
This is **not** a community HTTP plugin bridge. Auvrynt spawns Studio\'s built-in stdio MCP launcher and re-exports tools as `roblox_*`.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
1. Latest **Roblox Studio** installed
|
|
12
|
+
2. In Studio: **Assistant → … → Manage MCP Servers → Enable Studio as MCP server**
|
|
13
|
+
3. Launcher present:
|
|
14
|
+
- Windows: `%LOCALAPPDATA%\Roblox\mcp.bat`
|
|
15
|
+
- macOS: `/Applications/RobloxStudio.app/Contents/MacOS/StudioMCP`
|
|
16
|
+
4. Start Auvrynt with the Roblox profile:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
auvrynt start roblox
|
|
20
|
+
# aliases: robloxstudio, rbx
|
|
21
|
+
# can combine: auvrynt start web,roblox
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Primary tools
|
|
25
|
+
|
|
26
|
+
| Tool | Purpose |
|
|
27
|
+
|------|--------|
|
|
28
|
+
| `roblox_status` | Launcher path, connection, tool list probe |
|
|
29
|
+
| `roblox_list_tools` | Full remote tool inventory + schemas |
|
|
30
|
+
| `roblox_call` | Generic proxy (`tool` + `arguments`) |
|
|
31
|
+
| `roblox_disconnect` | Close stdio session |
|
|
32
|
+
| `roblox_<official_name>` | Convenience aliases for documented Studio tools |
|
|
33
|
+
|
|
34
|
+
Documented Studio tools (prefix with `roblox_`): `script_read`, `multi_edit`, `script_search`, `script_grep`, `search_game_tree`, `inspect_instance`, `execute_luau`, `get_studio_state`, `start_stop_play`, `get_console_output`, `screen_capture`, `list_roblox_studios`, `set_active_studio`, asset/generation tools, input simulation, `http_get`, `skill`, etc.
|
|
35
|
+
|
|
36
|
+
Official docs: https://create.roblox.com/docs/studio/mcp
|
|
37
|
+
|
|
38
|
+
## Workflow
|
|
39
|
+
|
|
40
|
+
1. Open the place in Roblox Studio (MCP enabled).
|
|
41
|
+
2. Ensure Auvrynt is running with `roblox` profile.
|
|
42
|
+
3. Call `roblox_status` — expect `ok: true` and a non-empty tool list.
|
|
43
|
+
4. Use `roblox_list_tools` when argument shapes are unclear.
|
|
44
|
+
5. Prefer specific `roblox_*` aliases or `roblox_call` for actions.
|
|
45
|
+
6. Keep Studio open; reconnect with another status/call if Studio restarts.
|
|
46
|
+
|
|
47
|
+
## Rules
|
|
48
|
+
|
|
49
|
+
- Never invent Studio tool names beyond what `roblox_list_tools` / `roblox_status` report.
|
|
50
|
+
- Studio owns the DataModel; Auvrynt only proxies MCP.
|
|
51
|
+
- Multiple Studio windows: use `roblox_list_roblox_studios` + `roblox_set_active_studio`.
|
|
52
|
+
- OAuth scope: `auvrynt:roblox`.
|
|
53
|
+
|
|
54
|
+
## Troubleshooting
|
|
55
|
+
|
|
56
|
+
- Launcher missing → update Studio; enable MCP in Assistant settings.
|
|
57
|
+
- Tools fail → restart Studio and Auvrynt; confirm green MCP client indicator in Studio.
|
|
58
|
+
- Linux → official Studio MCP is Windows/macOS oriented; status will say so.
|
|
59
|
+
|
|
60
|
+
## Helper tools (Auvrynt, via execute_luau)
|
|
61
|
+
|
|
62
|
+
| Tool | Purpose |
|
|
63
|
+
|------|--------|
|
|
64
|
+
| `roblox_create_instance` | Instance.new + optional props |
|
|
65
|
+
| `roblox_destroy_instance` | Destroy by path |
|
|
66
|
+
| `roblox_clone_instance` | Clone (+ optional parent/name) |
|
|
67
|
+
| `roblox_set_parent` | Reparent |
|
|
68
|
+
| `roblox_rename_instance` | Rename |
|
|
69
|
+
| `roblox_set_properties` | Set properties |
|
|
70
|
+
| `roblox_set_attribute` | SetAttribute |
|
|
71
|
+
| `roblox_set_lighting` | Lighting service props |
|
|
72
|
+
| `roblox_fill_terrain` | Terrain:FillBlock |
|
|
73
|
+
| `roblox_clear_terrain` | Terrain:Clear |
|
|
74
|
+
| `roblox_create_screen_gui` | ScreenGui under StarterGui |
|
|
75
|
+
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# SOFTWARE_AGENT_GUIDE.md
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
This guide applies to general software development projects, including:
|
|
6
|
+
- C#/.NET desktop applications, APIs, libraries, CLI tools, services, and background workers
|
|
7
|
+
- Non-Godot projects using C#/.NET
|
|
8
|
+
- General backend software tasks
|
|
9
|
+
|
|
10
|
+
Do not use Godot scene-tree or inspector tools unless a `project.godot` exists and is active.
|
|
11
|
+
Do not use web browser/screenshot tools unless the application exposes a web API/UI.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Primary Tools
|
|
16
|
+
|
|
17
|
+
**Workspace & Search**
|
|
18
|
+
- open workspace, read file, edit file, write file
|
|
19
|
+
- file search, text search, project inspection
|
|
20
|
+
- C# symbol definitions, references, and definitions lookup
|
|
21
|
+
|
|
22
|
+
**C#/.NET Core Tools**
|
|
23
|
+
- `inspect_dotnet_project`
|
|
24
|
+
- `dotnet_restore`
|
|
25
|
+
- `dotnet_build`
|
|
26
|
+
- `dotnet_test`
|
|
27
|
+
- `dotnet_run`
|
|
28
|
+
- `dotnet_format`
|
|
29
|
+
- `get_csharp_diagnostics`
|
|
30
|
+
|
|
31
|
+
**Serena Semantic Tools** (when Serena is enabled)
|
|
32
|
+
- `serena_start_session` — start a Serena session for the workspace
|
|
33
|
+
- `serena_find_symbol` — locate a symbol by name
|
|
34
|
+
- `serena_find_referencing_symbols` — find all references to a symbol
|
|
35
|
+
- `serena_get_symbols_overview` — overview of symbols in a file
|
|
36
|
+
- `serena_search_for_pattern` — language-aware pattern search
|
|
37
|
+
- `serena_find_implementations` — find implementations
|
|
38
|
+
- `serena_find_declaration` — find declaration
|
|
39
|
+
- `serena_get_diagnostics_for_file` — LSP diagnostics for a file
|
|
40
|
+
- `serena_get_diagnostics_for_symbol` — diagnostics for a symbol
|
|
41
|
+
- `serena_replace_symbol_body` — replace symbol body (controlled mutation)
|
|
42
|
+
- `serena_insert_before_symbol` — insert code before a symbol
|
|
43
|
+
- `serena_insert_after_symbol` — insert code after a symbol
|
|
44
|
+
- `serena_rename_symbol` — rename symbol across the project
|
|
45
|
+
- `serena_safe_delete_symbol` — delete symbol with safety checks
|
|
46
|
+
|
|
47
|
+
**Process management**
|
|
48
|
+
- start process (for persistent background services or long-running APIs)
|
|
49
|
+
- get process logs
|
|
50
|
+
- list processes
|
|
51
|
+
- stop process
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Required Workflow
|
|
56
|
+
|
|
57
|
+
1. **Inspect Solution/Project:** Read `.sln` or `.csproj` files to identify target frameworks, dependencies, and project structure.
|
|
58
|
+
2. **Determine Target Frameworks:** Identify whether the project targets `.NET Core / Standard / Framework` or specific operating systems.
|
|
59
|
+
3. **Restore Dependencies:** Run `dotnet_restore` when starting or when project references/dependencies change. Do not run repeatedly.
|
|
60
|
+
4. **Compile & Build:** Execute `dotnet_build` to catch compilation errors. Fix diagnostics returned semantically.
|
|
61
|
+
5. **Run Tests:** Execute targeted unit/integration tests using `dotnet_test` (with filter arguments to run specific tests if needed).
|
|
62
|
+
6. **Lsp & Semantics:** Prefer Roslyn/LSP symbol definition and reference tracking over plain text search when navigating code.
|
|
63
|
+
7. **Clean execution:** For long-running apps, use persistent process tools rather than blocking shell commands.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Software-Specific Rules
|
|
68
|
+
|
|
69
|
+
- **Do not rewrite entire project files** unless modifying configuration/dependencies is explicitly requested.
|
|
70
|
+
- **Do not add packages** or dependencies without necessity.
|
|
71
|
+
- **Do not change target frameworks** casually.
|
|
72
|
+
- **Do not expose secrets** or credentials in code, environments, or logs.
|
|
73
|
+
- **Do not claim tests passed** unless they were actually executed and returned a successful exit code.
|
|
74
|
+
- Prefer semantic C# refactorings and structural symbol navigation over simple regex replacement.
|
|
75
|
+
- For long-running processes, capture logs and check for stack traces or unhandled exceptions.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Verification Checklist
|
|
80
|
+
|
|
81
|
+
- [ ] Project restores without NuGet errors.
|
|
82
|
+
- [ ] Build completes with 0 errors and warning counts checked.
|
|
83
|
+
- [ ] Targeted tests run and pass.
|
|
84
|
+
- [ ] Code formatting verified with linter or `dotnet_format`.
|
|
85
|
+
- [ ] Process starts, listens on designated ports (if API), and logs are clean of exceptions.
|
|
86
|
+
- [ ] Code compiles cleanly on target frameworks.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Serena Routing
|
|
91
|
+
|
|
92
|
+
Use Serena for semantic navigation when the backend supports the language.
|
|
93
|
+
|
|
94
|
+
- Use Roslyn/Auvrynt .NET tools for authoritative C# diagnostics.
|
|
95
|
+
- Avoid duplicate semantic edits from Serena and Roslyn in the same step.
|
|
96
|
+
- Choose one semantic mutation owner per operation.
|
|
97
|
+
- Refresh both services after edits when both are active.
|
|
98
|
+
|
|
99
|
+
For C#:
|
|
100
|
+
- Compiler/build truth → .NET tools (`dotnet_build`, `inspect_dotnet_project`)
|
|
101
|
+
- Semantic navigation → Serena (`serena_find_symbol`, `serena_find_referencing_symbols`, etc.)
|
|
102
|
+
- Debugger → DAP
|
|
103
|
+
|
|
104
|
+
Do not claim Serena alone proves a C# build succeeds. Always run `dotnet_build` to verify.
|