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
package/dist/workspaces.js
CHANGED
|
@@ -1,226 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { mkdir, opendir, stat } from "node:fs/promises";
|
|
3
|
-
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
4
|
-
import { loadProjectContextFiles } from "@earendil-works/pi-coding-agent";
|
|
5
|
-
import { createManagedWorktree } from "./git-worktrees.js";
|
|
6
|
-
import { assertAllowedPath, isPathInsideRoot, resolveAllowedPath } from "./roots.js";
|
|
7
|
-
import { loadWorkspaceSkills, markSkillActivated, resolveSkillReadPath, } from "./skills.js";
|
|
8
|
-
export class WorkspaceRegistry {
|
|
9
|
-
config;
|
|
10
|
-
store;
|
|
11
|
-
workspaces = new Map();
|
|
12
|
-
constructor(config, store) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
this.store = store;
|
|
15
|
-
}
|
|
16
|
-
async openWorkspace(input) {
|
|
17
|
-
const options = typeof input === "string" ? { path: input } : input;
|
|
18
|
-
const mode = options.mode ?? "checkout";
|
|
19
|
-
if (mode === "worktree") {
|
|
20
|
-
return this.openWorktreeWorkspace(options.path, options.baseRef);
|
|
21
|
-
}
|
|
22
|
-
return this.openCheckoutWorkspace(options.path);
|
|
23
|
-
}
|
|
24
|
-
getWorkspace(workspaceId) {
|
|
25
|
-
const workspace = this.workspaces.get(workspaceId);
|
|
26
|
-
if (workspace) {
|
|
27
|
-
this.store?.touchSession(workspaceId);
|
|
28
|
-
return workspace;
|
|
29
|
-
}
|
|
30
|
-
const session = this.store?.getSession(workspaceId);
|
|
31
|
-
if (!session) {
|
|
32
|
-
throw new Error(`Unknown workspaceId: ${workspaceId}. Call open_workspace first.`);
|
|
33
|
-
}
|
|
34
|
-
const root = this.assertWorkspaceRootAllowed(session.root, session.mode, session.sourceRoot);
|
|
35
|
-
const restoredWorkspace = {
|
|
36
|
-
id: session.id,
|
|
37
|
-
root,
|
|
38
|
-
mode: session.mode,
|
|
39
|
-
sourceRoot: session.sourceRoot,
|
|
40
|
-
worktree: session.mode === "worktree"
|
|
41
|
-
? {
|
|
42
|
-
path: root,
|
|
43
|
-
baseRef: session.baseRef ?? "HEAD",
|
|
44
|
-
baseSha: session.baseSha ?? "",
|
|
45
|
-
dirtySource: false,
|
|
46
|
-
detached: true,
|
|
47
|
-
managed: session.managed,
|
|
48
|
-
}
|
|
49
|
-
: undefined,
|
|
50
|
-
...this.loadSkillsForWorkspace(root),
|
|
51
|
-
activatedSkillDirs: new Set(),
|
|
52
|
-
};
|
|
53
|
-
this.store?.touchSession(workspaceId);
|
|
54
|
-
this.workspaces.set(restoredWorkspace.id, restoredWorkspace);
|
|
55
|
-
return restoredWorkspace;
|
|
56
|
-
}
|
|
57
|
-
resolvePath(workspace, inputPath) {
|
|
58
|
-
const absolutePath = resolveAllowedPath(inputPath, workspace.root, [workspace.root]);
|
|
59
|
-
if (!isPathInsideRoot(absolutePath, workspace.root)) {
|
|
60
|
-
throw new Error(`Path is outside workspace root: ${inputPath}`);
|
|
61
|
-
}
|
|
62
|
-
return absolutePath;
|
|
63
|
-
}
|
|
64
|
-
resolveReadPath(workspace, inputPath) {
|
|
65
|
-
try {
|
|
66
|
-
return {
|
|
67
|
-
absolutePath: this.resolvePath(workspace, inputPath),
|
|
68
|
-
readRoots: [workspace.root],
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
catch (workspaceError) {
|
|
72
|
-
const skillRead = resolveSkillReadPath(workspace.skills, workspace.activatedSkillDirs, inputPath);
|
|
73
|
-
if (!skillRead)
|
|
74
|
-
throw workspaceError;
|
|
75
|
-
return {
|
|
76
|
-
absolutePath: skillRead.absolutePath,
|
|
77
|
-
readRoots: [workspace.root, skillRead.skill.baseDir],
|
|
78
|
-
skillRead,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
markReadPathLoaded(workspace, readPath) {
|
|
83
|
-
if (readPath.skillRead?.isSkillFile) {
|
|
84
|
-
markSkillActivated(workspace.activatedSkillDirs, readPath.skillRead.skill);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
resolveWorkingDirectory(workspace, workingDirectory) {
|
|
88
|
-
const directory = workingDirectory ? this.resolvePath(workspace, workingDirectory) : workspace.root;
|
|
89
|
-
return assertAllowedPath(directory, [workspace.root]);
|
|
90
|
-
}
|
|
91
|
-
async openCheckoutWorkspace(path) {
|
|
92
|
-
const root = assertAllowedPath(path, this.config.allowedRoots);
|
|
93
|
-
await mkdir(root, { recursive: true });
|
|
94
|
-
const rootStats = await stat(root);
|
|
95
|
-
if (!rootStats.isDirectory()) {
|
|
96
|
-
throw new Error(`Workspace root must be a directory: ${path}`);
|
|
97
|
-
}
|
|
98
|
-
return this.createWorkspaceContext({ root, mode: "checkout" });
|
|
99
|
-
}
|
|
100
|
-
async openWorktreeWorkspace(path, baseRef) {
|
|
101
|
-
const worktree = await createManagedWorktree({
|
|
102
|
-
sourcePath: path,
|
|
103
|
-
baseRef,
|
|
104
|
-
config: this.config,
|
|
105
|
-
});
|
|
106
|
-
return this.createWorkspaceContext({
|
|
107
|
-
root: worktree.path,
|
|
108
|
-
mode: "worktree",
|
|
109
|
-
sourceRoot: worktree.sourceRoot,
|
|
110
|
-
worktree,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
async createWorkspaceContext(input) {
|
|
114
|
-
const workspace = {
|
|
115
|
-
id: `ws_${randomUUID()}`,
|
|
116
|
-
root: input.root,
|
|
117
|
-
mode: input.mode,
|
|
118
|
-
sourceRoot: input.sourceRoot,
|
|
119
|
-
worktree: input.worktree,
|
|
120
|
-
...this.loadSkillsForWorkspace(input.root),
|
|
121
|
-
activatedSkillDirs: new Set(),
|
|
122
|
-
};
|
|
123
|
-
this.store?.createSession({
|
|
124
|
-
id: workspace.id,
|
|
125
|
-
root: workspace.root,
|
|
126
|
-
mode: workspace.mode,
|
|
127
|
-
sourceRoot: workspace.sourceRoot,
|
|
128
|
-
baseRef: workspace.worktree?.baseRef,
|
|
129
|
-
baseSha: workspace.worktree?.baseSha,
|
|
130
|
-
managed: workspace.worktree?.managed,
|
|
131
|
-
});
|
|
132
|
-
this.workspaces.set(workspace.id, workspace);
|
|
133
|
-
const agentsFiles = this.loadInitialAgentsFiles(workspace.root);
|
|
134
|
-
const availableAgentsFiles = await this.findAvailableAgentsFiles(workspace.root, agentsFiles);
|
|
135
|
-
return { workspace, agentsFiles, availableAgentsFiles };
|
|
136
|
-
}
|
|
137
|
-
loadSkillsForWorkspace(root) {
|
|
138
|
-
const result = loadWorkspaceSkills(this.config, root);
|
|
139
|
-
return {
|
|
140
|
-
skills: result.skills,
|
|
141
|
-
skillDiagnostics: result.diagnostics,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
assertWorkspaceRootAllowed(root, mode, sourceRoot) {
|
|
145
|
-
if (mode === "worktree") {
|
|
146
|
-
if (!sourceRoot) {
|
|
147
|
-
throw new Error(`Stored worktree workspace is missing sourceRoot: ${root}`);
|
|
148
|
-
}
|
|
149
|
-
assertAllowedPath(sourceRoot, this.config.allowedRoots);
|
|
150
|
-
return assertAllowedPath(root, [this.config.worktreeRoot]);
|
|
151
|
-
}
|
|
152
|
-
return assertAllowedPath(root, this.config.allowedRoots);
|
|
153
|
-
}
|
|
154
|
-
loadInitialAgentsFiles(root) {
|
|
155
|
-
const agentDir = resolve(this.config.agentDir);
|
|
156
|
-
return loadProjectContextFiles({ cwd: root, agentDir })
|
|
157
|
-
.filter((file) => {
|
|
158
|
-
const path = resolve(file.path);
|
|
159
|
-
if (isPathInsideRoot(path, agentDir))
|
|
160
|
-
return true;
|
|
161
|
-
return isPathInsideRoot(path, root) && dirname(path) === root;
|
|
162
|
-
})
|
|
163
|
-
.map((file) => ({
|
|
164
|
-
path: resolve(file.path),
|
|
165
|
-
content: file.content,
|
|
166
|
-
}));
|
|
167
|
-
}
|
|
168
|
-
async findAvailableAgentsFiles(root, loadedFiles) {
|
|
169
|
-
const loadedPaths = new Set(loadedFiles.map((file) => resolve(file.path)));
|
|
170
|
-
const discovered = [];
|
|
171
|
-
await walkWorkspace(root, async (path, entry) => {
|
|
172
|
-
if (!entry.isFile())
|
|
173
|
-
return;
|
|
174
|
-
if (!CONTEXT_FILE_NAMES.has(entry.name))
|
|
175
|
-
return;
|
|
176
|
-
if (loadedPaths.has(path))
|
|
177
|
-
return;
|
|
178
|
-
discovered.push({ path });
|
|
179
|
-
});
|
|
180
|
-
return discovered.sort((a, b) => a.path.localeCompare(b.path));
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
const CONTEXT_FILE_NAMES = new Set(["AGENTS.md", "AGENTS.MD", "CLAUDE.md", "CLAUDE.MD"]);
|
|
184
|
-
const SKIPPED_CONTEXT_DIRS = new Set([
|
|
185
|
-
".git",
|
|
186
|
-
".hg",
|
|
187
|
-
".svn",
|
|
188
|
-
".auvrynt",
|
|
189
|
-
"node_modules",
|
|
190
|
-
"dist",
|
|
191
|
-
"build",
|
|
192
|
-
".next",
|
|
193
|
-
".turbo",
|
|
194
|
-
".cache",
|
|
195
|
-
]);
|
|
196
|
-
export function formatAgentsPath(path, workspaceRoot) {
|
|
197
|
-
if (!workspaceRoot)
|
|
198
|
-
return path.split(sep).join("/");
|
|
199
|
-
const relationship = relative(workspaceRoot, path);
|
|
200
|
-
if (relationship === "" ||
|
|
201
|
-
relationship.startsWith("..") ||
|
|
202
|
-
relationship === ".." ||
|
|
203
|
-
relationship.includes(`..${sep}`)) {
|
|
204
|
-
return path.split(sep).join("/");
|
|
205
|
-
}
|
|
206
|
-
return relationship.split(sep).join("/");
|
|
207
|
-
}
|
|
208
|
-
async function walkWorkspace(directory, visit) {
|
|
209
|
-
let entries;
|
|
210
|
-
try {
|
|
211
|
-
entries = await opendir(directory);
|
|
212
|
-
}
|
|
213
|
-
catch {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
for await (const entry of entries) {
|
|
217
|
-
const path = join(directory, entry.name);
|
|
218
|
-
if (entry.isDirectory()) {
|
|
219
|
-
if (!SKIPPED_CONTEXT_DIRS.has(entry.name)) {
|
|
220
|
-
await walkWorkspace(path, visit);
|
|
221
|
-
}
|
|
222
|
-
continue;
|
|
223
|
-
}
|
|
224
|
-
await visit(path, entry);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
1
|
+
export * from "./workspace/workspaces.js";
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Free Creator Store Assets — Sample Catalog + Guide
|
|
2
|
+
|
|
3
|
+
**Generated:** 2026-08-10
|
|
4
|
+
**Scope:** Free (`priceFilter=free`) Creator Store **Models** only
|
|
5
|
+
**Limit:** MCP returns max ~20 results per query. The Store has millions of assets — this is a **starter sample**, not a full dump.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## How to use this guide
|
|
10
|
+
|
|
11
|
+
### When to use Creator Store free models
|
|
12
|
+
| Need | Use store models when… | Prefer custom / Luau when… |
|
|
13
|
+
|------|------------------------|----------------------------|
|
|
14
|
+
| **Environment** | Trees, rocks, skyboxes, roads for quick map fill | You need exact style, low part count, or streaming budget |
|
|
15
|
+
| **Buildings** | Blockouts, RP houses, horror maps | Unique architecture, collision precision |
|
|
16
|
+
| **Vehicles** | Prototype driving / spawners | Real vehicle physics you control |
|
|
17
|
+
| **Weapons / gear** | Placeholders, classic tools | Secure combat (validate damage on server) |
|
|
18
|
+
| **Furniture** | Interior fill for RP / café | Optimized low-poly sets you own |
|
|
19
|
+
| **Systems (admin, leaderboards)** | Speed-running features | You must own/audit every script |
|
|
20
|
+
|
|
21
|
+
### Safety rules (always)
|
|
22
|
+
1. **Inspect scripts** before publishing — free models often ship backdoors, admin abuse, or remote spam.
|
|
23
|
+
2. Prefer assets from **Roblox** or known creators; strip unknown `Script`/`LocalScript` if unsure.
|
|
24
|
+
3. **Paid assets** cannot be inserted until purchased — this list is free only.
|
|
25
|
+
4. Some free assets still **fail to insert** (moderation / package restrictions) — try the next ID.
|
|
26
|
+
5. Insert via MCP: `insert_asset` with `assetId`, `assetType: "Model"`, `assetName`.
|
|
27
|
+
|
|
28
|
+
### MCP search recipe
|
|
29
|
+
```
|
|
30
|
+
search_asset:
|
|
31
|
+
scope: creator_store
|
|
32
|
+
priceFilter: free
|
|
33
|
+
assetType: Model # or Audio, Mesh, Image, Decal, Package…
|
|
34
|
+
query: "tree forest"
|
|
35
|
+
maxResults: 20
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Starter / utilities
|
|
41
|
+
|
|
42
|
+
| Name | Asset ID | Creator | When to use | URL |
|
|
43
|
+
|------|----------|---------|-------------|-----|
|
|
44
|
+
| Spawn Point | 10498769556 | agentphilip07 | Default player spawn marker | [link](https://create.roblox.com/store/asset/10498769556) |
|
|
45
|
+
| Invisible Spawn Point | 9762951603 | SyncSnacks | Hidden spawn | [link](https://create.roblox.com/store/asset/9762951603) |
|
|
46
|
+
| spawn point | 13944666959 | its_fladi | Alternate spawn visual | [link](https://create.roblox.com/store/asset/13944666959) |
|
|
47
|
+
| Grass Baseplate | 10100805 | Roblox | Classic grass floor | [link](https://create.roblox.com/store/asset/10100805) |
|
|
48
|
+
| Grass Baseplate | 2286648632 | colorfuleagle1001 | Fits default baseplate size | [link](https://create.roblox.com/store/asset/2286648632) |
|
|
49
|
+
| Old stud block | 11257095071 | cnnendot4133 | Retro stud props | [link](https://create.roblox.com/store/asset/11257095071) |
|
|
50
|
+
| Sword | 47433 | Roblox | Classic linked sword tool | [link](https://create.roblox.com/store/asset/47433) |
|
|
51
|
+
| Noob NPC | 4446576906 | Vertixer1337 | Placeholder NPC | [link](https://create.roblox.com/store/asset/4446576906) |
|
|
52
|
+
| Shift to run | 8459456709 | ScriptedMikeey | Sprint script prototype — **audit scripts** | [link](https://create.roblox.com/store/asset/8459456709) |
|
|
53
|
+
| HD Admin | 857927023 | ForeverHD | Admin commands — **production risk; audit heavily** | [link](https://create.roblox.com/store/asset/857927023) |
|
|
54
|
+
| Time Played Leaderboard | 5352156968 | RenanMSV | Playtime board — **DataStore costs** | [link](https://create.roblox.com/store/asset/5352156968) |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Sky / atmosphere
|
|
59
|
+
|
|
60
|
+
| Name | Asset ID | When to use |
|
|
61
|
+
|------|----------|-------------|
|
|
62
|
+
| Realistic Sky | 4607457995 | Generic day skybox starter |
|
|
63
|
+
| Aesthetic sky | 7108851308 | Mood / vibe maps |
|
|
64
|
+
| Classic Roblox Sky (SKYBOX) | 339406852 | Nostalgia / classic places |
|
|
65
|
+
| CakeUp Night Sky Galaxy Planets | 15983996673 | Night / space vibe |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Nature / forest
|
|
70
|
+
|
|
71
|
+
| Name | Asset ID | When to use |
|
|
72
|
+
|------|----------|-------------|
|
|
73
|
+
| Stud Tree Classic Retro | 83155033985612 | Classic/stud aesthetic maps |
|
|
74
|
+
| Realistic Log Wood | 136869545721659 | Forest floor props |
|
|
75
|
+
| PBR Nature Pack Wild Trees | 123405066104552 | Higher-detail foliage packs |
|
|
76
|
+
| Forest Tower / Tree House | 72105624698726 | Adventure / hideout |
|
|
77
|
+
| Realistic Pine Tree | 90843648266001 | Evergreen biome |
|
|
78
|
+
| Winter Forest Pack | 106336474170677 | Snow maps |
|
|
79
|
+
| Autumn Sky Fall Tree | 139035690932109 | Fall biome |
|
|
80
|
+
| Cartoon Forest Lowpoly Pack | 127971452858364 | Stylized / mobile-friendly |
|
|
81
|
+
| Realistic Moving Tree | 105750520391033 | Animated canopy (perf cost) |
|
|
82
|
+
| PBR Realistic Tree Pack | 106624131560617 | Dense forest fill |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Buildings / houses
|
|
87
|
+
|
|
88
|
+
| Name | Asset ID | When to use |
|
|
89
|
+
|------|----------|-------------|
|
|
90
|
+
| Classic House | 8959904556 | Simple suburban starter |
|
|
91
|
+
| Horror Game House Building | 16703737576 | Horror blockout |
|
|
92
|
+
| Horror Game House Building | 18574951722 | Variant horror house |
|
|
93
|
+
| Modern Apartment Building | 18888365209 | City RP |
|
|
94
|
+
| Small House Brookhaven-style | 77692490790411 | City RP homes |
|
|
95
|
+
| Apartment building Urban Loft | 114126832502867 | Dense urban |
|
|
96
|
+
| Modern Town City Building | 93988667845755 | Street / town strip |
|
|
97
|
+
| Brookhaven Villa 1 | 124487663909260 | Luxury RP house |
|
|
98
|
+
| Destroyed Building | 120370036715023 | Apocalypse maps |
|
|
99
|
+
| Buildings Walls Houses pack | 129441595821867 | Modular town pieces |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Roads / vehicles
|
|
104
|
+
|
|
105
|
+
| Name | Asset ID | When to use |
|
|
106
|
+
|------|----------|-------------|
|
|
107
|
+
| Road | 14102233829 | Quick road strip |
|
|
108
|
+
| 2019 Sports Car | 6810376207 | Showcase car |
|
|
109
|
+
| Army jeep / military | 77018157368877 | War / mil RP |
|
|
110
|
+
| Classic Pickup Truck | 92651703326783 | Civilian traffic |
|
|
111
|
+
| Classic Roblox Jeep Spawner | 114110323866454 | Classic vehicle spawn |
|
|
112
|
+
| Free Humvee | 125960240887706 | Military transport |
|
|
113
|
+
| Abandoned Car | 97780315774758 | Wasteland prop |
|
|
114
|
+
| Parking Space | 71334976821290 | Parking lot detail |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Weapons / combat (placeholders only)
|
|
119
|
+
|
|
120
|
+
| Name | Asset ID | When to use |
|
|
121
|
+
|------|----------|-------------|
|
|
122
|
+
| Low Poly Weapon Pack | 102927883946599 | Style mockups |
|
|
123
|
+
| Classic Weapons Rifle… | 105727800460617 | Classic FPS look |
|
|
124
|
+
| Classic Roblox Weapon Pack | 105002355098155 | Retro gear |
|
|
125
|
+
| FPS Weapon System Pack | 87452459242470 | Prototype only — **rewrite combat server-side** |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Furniture / interiors
|
|
130
|
+
|
|
131
|
+
| Name | Asset ID | When to use |
|
|
132
|
+
|------|----------|-------------|
|
|
133
|
+
| Cafe Table Chair | 132188174151502 | Café / hangout |
|
|
134
|
+
| Table Chairs Dining Set | 81429788184908 | Dining rooms |
|
|
135
|
+
| Dining Table Chairs Kitchen | 106869233942930 | House interiors |
|
|
136
|
+
| Classic 2007 Furniture | 110463242735527 | Retro interiors |
|
|
137
|
+
| Furniture Couch Tables Office | 130155490858637 | Office / lobby |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## When *not* to use free models
|
|
142
|
+
|
|
143
|
+
- **Core game loop** (currency, inventory, combat resolution) — write your own server code.
|
|
144
|
+
- **Monetization / admin** — free admin kits are high abuse risk.
|
|
145
|
+
- **Final art pass** — many free models are high part-count or poorly optimized.
|
|
146
|
+
- **Anything you cannot open and understand** in Explorer.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Refreshing this list
|
|
151
|
+
|
|
152
|
+
Re-run searches with different `query` / `assetType` values. Store rankings change often.
|
|
153
|
+
For Audio/Mesh/Decal, set `assetType` accordingly (inventory APIs often require one type per call).
|
|
154
|
+
|
|
155
|
+
**Insert example (MCP):**
|
|
156
|
+
```
|
|
157
|
+
insert_asset:
|
|
158
|
+
assetId: "47433"
|
|
159
|
+
assetType: Model
|
|
160
|
+
assetName: Sword
|
|
161
|
+
parentPath: game.Workspace
|
|
162
|
+
```
|
|
@@ -1,100 +1,143 @@
|
|
|
1
|
-
# Auvrynt Local Development Tools Guide
|
|
2
|
-
|
|
3
|
-
Auvrynt extends Model Context Protocol (MCP) with tools for web application development, C#/.NET software development, Godot 4 game development, image inspection/comparison, and persistent process management.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Architecture & Security Boundaries
|
|
8
|
-
|
|
1
|
+
# Auvrynt Local Development Tools Guide
|
|
2
|
+
|
|
3
|
+
Auvrynt extends Model Context Protocol (MCP) with tools for web application development, C#/.NET software development, Godot 4 game development, Aseprite pixel-art editing, image inspection/comparison, and persistent process management.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Architecture & Security Boundaries
|
|
8
|
+
|
|
9
9
|
Use `get_connection_status` after `open_workspace` to automatically probe the
|
|
10
|
-
authenticated MCP session, Blender, Godot, Cloudflare Tunnel, Serena, browser
|
|
10
|
+
authenticated MCP session, Blender, Aseprite, Godot, Cloudflare Tunnel, Serena, browser
|
|
11
11
|
support, Chrome MCP registration, and tracked workspace processes. Blender
|
|
12
|
-
|
|
13
|
-
(`localhost:9876` by default)
|
|
12
|
+
scene tools connect directly to the Blender Lab MCP endpoint shown in Blender
|
|
13
|
+
preferences (`localhost:9876` by default).
|
|
14
14
|
Godot detection distinguishes a running Godot process from a reachable Auvrynt
|
|
15
15
|
editor bridge (`127.0.0.1:49322`). Cloudflare Tunnel and Serena report whether
|
|
16
16
|
their executables are installed and whether their processes are running. A
|
|
17
17
|
browser marked `available` means Playwright is installed; browser sessions are
|
|
18
18
|
created on demand and are not persistent connections.
|
|
19
|
-
|
|
20
|
-
1. **Workspace Boundary Enforcement**: Every path input must be relative to the opened workspace root. Path traversal (`..`) or symbolic links escaping the workspace are blocked by `WorkspaceRegistry.resolvePath`.
|
|
21
|
-
2. **Persistent Processes**: Long-running servers, .NET applications, and Godot games run as background child processes managed by `ProcessManager`. Standard output and error streams are captured in bounded in-memory log buffers (max 1000 lines).
|
|
22
|
-
3. **Secret Redaction**: Environment variables containing keywords like `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, or `CONNECTION_STRING` are automatically redacted in responses and log entries.
|
|
23
|
-
4. **Browser & Network Security**: `capture_page_screenshot` and `inspect_page` enforce strict SSRF defenses, blocking non-HTTP(S) schemes (`file:`, `data:`, `javascript:`) and cloud metadata / private network IP addresses unless targeting recognized local development hosts (`localhost`, `127.0.0.1`, `[::1]`).
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Tool Reference
|
|
28
|
-
|
|
29
|
-
### Phase 1: Persistent Process Management
|
|
30
|
-
- `start_process`: Spawns background process inside workspace. Returns `processId`.
|
|
31
|
-
- `get_process_logs`: Tail stdout/stderr for a process (default 100 lines, max 500 lines).
|
|
32
|
-
- `list_processes`: List tracked background processes for a workspace.
|
|
33
|
-
- `stop_process`: Gracefully stop or force-kill (`force: true`) process tree.
|
|
34
|
-
|
|
35
|
-
### Phase 2: Structured Project Discovery & Search
|
|
36
|
-
- `glob_files`: Fast file globbing respecting `.gitignore` and default exclusions (`.git`, `node_modules`, `dist`, `bin`, `obj`).
|
|
37
|
-
- `search_text`: Workspace-wide text search returning matching lines and context snippets.
|
|
38
|
-
- `inspect_project`: Auto-detect Node.js, TypeScript, .NET, Godot, Python, Git projects and recommended build/run/test commands.
|
|
39
|
-
|
|
40
|
-
### Phase 3: Web-Development Tools
|
|
41
|
-
- `start_dev_server`: Launch web dev server (auto-detects `npm run dev` script).
|
|
42
|
-
- `capture_page_screenshot`: Playwright browser screenshot saved inside workspace and returned as MCP image content.
|
|
43
|
-
- `inspect_page`: Extract structured page title, headings, buttons, links, landmarks, console errors, and failed requests.
|
|
44
|
-
|
|
45
|
-
### Phase
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- `
|
|
49
|
-
- `
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
- `
|
|
56
|
-
- `
|
|
57
|
-
- `
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- `
|
|
62
|
-
- `
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
- `
|
|
66
|
-
- `
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
19
|
+
|
|
20
|
+
1. **Workspace Boundary Enforcement**: Every path input must be relative to the opened workspace root. Path traversal (`..`) or symbolic links escaping the workspace are blocked by `WorkspaceRegistry.resolvePath`.
|
|
21
|
+
2. **Persistent Processes**: Long-running servers, .NET applications, and Godot games run as background child processes managed by `ProcessManager`. Standard output and error streams are captured in bounded in-memory log buffers (max 1000 lines).
|
|
22
|
+
3. **Secret Redaction**: Environment variables containing keywords like `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, or `CONNECTION_STRING` are automatically redacted in responses and log entries.
|
|
23
|
+
4. **Browser & Network Security**: `capture_page_screenshot` and `inspect_page` enforce strict SSRF defenses, blocking non-HTTP(S) schemes (`file:`, `data:`, `javascript:`) and cloud metadata / private network IP addresses unless targeting recognized local development hosts (`localhost`, `127.0.0.1`, `[::1]`).
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Tool Reference
|
|
28
|
+
|
|
29
|
+
### Phase 1: Persistent Process Management
|
|
30
|
+
- `start_process`: Spawns background process inside workspace. Returns `processId`.
|
|
31
|
+
- `get_process_logs`: Tail stdout/stderr for a process (default 100 lines, max 500 lines).
|
|
32
|
+
- `list_processes`: List tracked background processes for a workspace.
|
|
33
|
+
- `stop_process`: Gracefully stop or force-kill (`force: true`) process tree.
|
|
34
|
+
|
|
35
|
+
### Phase 2: Structured Project Discovery & Search
|
|
36
|
+
- `glob_files`: Fast file globbing respecting `.gitignore` and default exclusions (`.git`, `node_modules`, `dist`, `bin`, `obj`).
|
|
37
|
+
- `search_text`: Workspace-wide text search returning matching lines and context snippets.
|
|
38
|
+
- `inspect_project`: Auto-detect Node.js, TypeScript, .NET, Godot, Python, Git projects and recommended build/run/test commands.
|
|
39
|
+
|
|
40
|
+
### Phase 3: Web-Development Tools
|
|
41
|
+
- `start_dev_server`: Launch web dev server (auto-detects `npm run dev` script).
|
|
42
|
+
- `capture_page_screenshot`: Playwright browser screenshot saved inside workspace and returned as MCP image content.
|
|
43
|
+
- `inspect_page`: Extract structured page title, headings, buttons, links, landmarks, console errors, and failed requests.
|
|
44
|
+
|
|
45
|
+
### Phase 3b: Agent Reach (external internet platforms)
|
|
46
|
+
Requires the **web / Playwright** integration profile (`auvrynt start web`). Wraps the open-source [Agent Reach](https://github.com/Panniantong/Agent-Reach) CLI for free platform read/search (Twitter/X, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu, RSS, web search, and more).
|
|
47
|
+
|
|
48
|
+
- `agent_reach_status`: Detect whether `agent-reach` is on PATH (and version when available).
|
|
49
|
+
- `agent_reach_doctor`: Run `agent-reach doctor` / `doctor --json` for channel health.
|
|
50
|
+
- `agent_reach_guide`: Install/update URLs and platform notes without executing the CLI.
|
|
51
|
+
|
|
52
|
+
Agent Reach is an installer + health-checker + router. After setup, agents call upstream tools (`yt-dlp`, `gh`, `twitter`, `opencli`, …) directly. Cookies remain on the local machine.
|
|
53
|
+
|
|
54
|
+
### Phase 4: Image and Screenshot Inspection
|
|
55
|
+
- `inspect_image`: Inspect dimensions, format, MIME type, alpha, and color palette.
|
|
56
|
+
- `compare_images`: RGBA pixel-by-pixel image comparison returning match %, changed pixels, and optional diff PNG output.
|
|
57
|
+
- `inspect_sprite`: Analyze sprite sheet grid dimensions, cell divisibility, and frame bounds.
|
|
58
|
+
- `split_sprite_sheet`: Slices sprite sheet into individual frame PNGs saved inside the workspace.
|
|
59
|
+
|
|
60
|
+
### Phase 5: C# and .NET Tools
|
|
61
|
+
- `inspect_dotnet_project`: Parse `.csproj`, `.fsproj`, `.sln` for SDK style, frameworks, packages, and test runner.
|
|
62
|
+
- `dotnet_restore`: Run `dotnet restore` securely.
|
|
63
|
+
- `dotnet_build`: Run `dotnet build` returning structured compiler errors/warnings with line and column.
|
|
64
|
+
- `dotnet_test`: Run `dotnet test` returning pass/fail/skip counts, failed test names, and assertion messages.
|
|
65
|
+
- `dotnet_run`: Launch .NET app as persistent process.
|
|
66
|
+
- `dotnet_format`: Run `dotnet format` (`verifyOnly` mode supported).
|
|
67
|
+
|
|
68
|
+
### Phase 6: Godot 4 Tools
|
|
69
|
+
- `detect_godot_project`: Read `project.godot` for project name, main scene, renderer, autoloads, input actions.
|
|
70
|
+
- `godot_run`: Launch Godot game or editor as persistent process. Environment variable `GODOT_EXECUTABLE` overrides path.
|
|
71
|
+
- `inspect_godot_scene`: Parse `.tscn` text scene trees, node types, signals, and external resources.
|
|
72
|
+
|
|
73
|
+
### Phase 7: Aseprite Pixel-Art Tools
|
|
74
|
+
Auvrynt exposes 36 grouped Aseprite tools. Core categories:
|
|
75
|
+
- Detection/readback/live editor: `aseprite_detect`, `aseprite_live_editor`, `aseprite_capture_current`, `aseprite_capture_canvas`, `aseprite_inspect_file`, `aseprite_read_pixels`.
|
|
76
|
+
- The live editor tool includes 46 allowlisted bridge commands for unsaved drawing, selections, layers/cels/tags, palettes, transforms, frame operations, cross-document copying, and live analysis.
|
|
77
|
+
- QA: `aseprite_audit_sprite`, `aseprite_compare_documents`, `aseprite_animation_audit`.
|
|
78
|
+
- Safety/maintenance: `aseprite_file_safety`, `aseprite_maintenance`, `aseprite_batch_process`, `aseprite_recovery`, `aseprite_extensions`.
|
|
79
|
+
- Drawing/regions: `aseprite_create_sprite`, `aseprite_set_pixels`, `aseprite_draw_shapes`, `aseprite_draw_stroke`, `aseprite_draw_advanced`, `aseprite_edit_region`, `aseprite_manage_mask`, `aseprite_run_safe_command`.
|
|
80
|
+
- Structure/animation: `aseprite_manage_layers`, `aseprite_compose_layers`, `aseprite_manage_frames`, `aseprite_manage_animation`, `aseprite_manage_tags`, `aseprite_manage_cels`, `aseprite_manage_document`.
|
|
81
|
+
- Color/tilemap/import/export: `aseprite_set_palette`, `aseprite_manage_color`, `aseprite_import_sprite_sheet`, `aseprite_manage_tilemap`, `aseprite_export_sprite_sheet`, `aseprite_manage_export_preset`, `aseprite_convert_file`.
|
|
82
|
+
|
|
83
|
+
Destructive source edits accept `expectedVersion` and `checkpoint`. Use the SHA-256 returned by `aseprite_file_safety` to reject stale writes. Recovery deletion and extension mutation additionally require `allowGlobalWrite=true`.
|
|
84
|
+
|
|
85
|
+
### Phase 8: Window Capture
|
|
86
|
+
- `capture_window`: Capture screenshot of Auvrynt-tracked application window (Windows only).
|
|
87
|
+
- `godot_capture_game`: Wrap window capture for Godot game processes.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Development Workflows
|
|
92
|
+
|
|
93
|
+
### Web Development Workflow
|
|
94
|
+
```text
|
|
95
|
+
1. open_workspace(path)
|
|
96
|
+
2. inspect_project(workspaceId)
|
|
97
|
+
3. start_dev_server(workspaceId)
|
|
98
|
+
4. capture_page_screenshot(workspaceId, url="http://localhost:3000", outputPath="screenshots/home.png")
|
|
99
|
+
5. inspect_page(workspaceId, url="http://localhost:3000")
|
|
100
|
+
6. stop_process(workspaceId, processId)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### External platform research (Agent Reach)
|
|
104
|
+
```text
|
|
105
|
+
1. Enable web profile: auvrynt start web
|
|
106
|
+
2. agent_reach_status
|
|
107
|
+
3. If missing → agent_reach_guide → user installs from GitHub install.md
|
|
108
|
+
4. agent_reach_doctor (json optional)
|
|
109
|
+
5. Use upstream CLIs via bash for the specific platform task
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### .NET Workflow
|
|
113
|
+
```text
|
|
114
|
+
1. open_workspace(path)
|
|
115
|
+
2. inspect_dotnet_project(workspaceId, projectPath="MyApp.csproj")
|
|
116
|
+
3. dotnet_restore(workspaceId, projectPath="MyApp.csproj")
|
|
117
|
+
4. dotnet_build(workspaceId, projectPath="MyApp.csproj")
|
|
118
|
+
5. dotnet_test(workspaceId, projectPath="MyApp.Tests.csproj")
|
|
119
|
+
6. dotnet_run(workspaceId, projectPath="MyApp.csproj")
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Aseprite Workflow
|
|
123
|
+
```text
|
|
124
|
+
1. open_workspace(path)
|
|
125
|
+
2. aseprite_detect(workspaceId)
|
|
126
|
+
3. aseprite_inspect_file(workspaceId, filePath="sprites/hero.aseprite")
|
|
127
|
+
4. aseprite_read_pixels(...) or aseprite_audit_sprite(...) for exact evidence
|
|
128
|
+
5. aseprite_file_safety(action="status") -> retain version
|
|
129
|
+
6. aseprite_set_pixels(..., expectedVersion=version, checkpoint=true)
|
|
130
|
+
7. aseprite_compare_documents(...) or aseprite_animation_audit(...)
|
|
131
|
+
8. aseprite_manage_export_preset(action="run", name="game")
|
|
132
|
+
9. aseprite_manage_export_preset(action="validate", name="game")
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Godot 4 Workflow
|
|
136
|
+
```text
|
|
137
|
+
1. open_workspace(path)
|
|
138
|
+
2. detect_godot_project(workspaceId)
|
|
139
|
+
3. inspect_godot_scene(workspaceId, scenePath="scenes/main.tscn")
|
|
140
|
+
4. godot_run(workspaceId, projectPath=".")
|
|
141
|
+
5. godot_capture_game(workspaceId, processId, outputPath="captures/game.png")
|
|
142
|
+
6. stop_process(workspaceId, processId)
|
|
143
|
+
```
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Auvrynt icon</title>
|
|
3
|
+
<desc id="desc">Minimal purple A monogram with a sweeping cross stroke on a dark purple rounded square.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="28" y1="20" x2="220" y2="236" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop stop-color="#160625"/>
|
|
7
|
+
<stop offset="0.55" stop-color="#250a3d"/>
|
|
8
|
+
<stop offset="1" stop-color="#12051f"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="mark" x1="70" y1="204" x2="188" y2="52" gradientUnits="userSpaceOnUse">
|
|
11
|
+
<stop stop-color="#8b5cf6"/>
|
|
12
|
+
<stop offset="0.52" stop-color="#a855f7"/>
|
|
13
|
+
<stop offset="1" stop-color="#c084fc"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
</defs>
|
|
16
|
+
<rect x="8" y="8" width="240" height="240" rx="52" fill="url(#bg)"/>
|
|
17
|
+
<path d="M60 199 112 93c6-13 10-23 16-23 7 0 11 10 17 23l35 72-28 2-24-52-26 55-42 29Z" fill="url(#mark)"/>
|
|
18
|
+
<path d="M58 201c39-42 88-72 151-76-53 8-100 29-145 65l-6 11Z" fill="url(#mark)"/>
|
|
19
|
+
<path d="m158 145 19 39c2 4 5 6 9 6h13l-23-48-18 3Z" fill="#7c3aed"/>
|
|
20
|
+
</svg>
|