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.
Files changed (550) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +366 -233
  3. package/addons/auvrynt_bridge/auvrynt_bridge.gd +500 -0
  4. package/addons/auvrynt_bridge/plugin.cfg +7 -0
  5. package/bin/auvrynt-launcher.cjs +77 -0
  6. package/dist/artifact-registry.js +1 -0
  7. package/dist/aseprite-tools.js +1 -0
  8. package/dist/auth/connection-registry.js +145 -0
  9. package/dist/auth/connection-status.js +176 -0
  10. package/dist/auth/oauth-provider.js +617 -0
  11. package/dist/auth/room-registry.js +131 -0
  12. package/dist/auth/session-registry.js +531 -0
  13. package/dist/background-lifecycle.js +1 -0
  14. package/dist/blender-client.js +1 -109
  15. package/dist/blender-tools.js +1 -930
  16. package/dist/browser-stability.js +1 -0
  17. package/dist/cli/commands/help-command.js +10 -0
  18. package/dist/cli/commands/init-command.js +190 -0
  19. package/dist/cli/commands/integration-commands.js +88 -0
  20. package/dist/cli/commands/serve-command.js +83 -0
  21. package/dist/cli/commands/setup-command.js +81 -0
  22. package/dist/cli/commands/status-commands.js +166 -0
  23. package/dist/cli/commands/tunnel-command.js +127 -0
  24. package/dist/cli/commands/user-config-commands.js +105 -0
  25. package/dist/cli/dashboard-actions.js +516 -0
  26. package/dist/cli/dashboard-native-actions.js +282 -0
  27. package/dist/cli/foreground-server.js +270 -0
  28. package/dist/cli/instance-control.js +21 -0
  29. package/dist/cli/instance-lock.js +123 -0
  30. package/dist/cli/integration-bootstrap.js +206 -0
  31. package/dist/cli/lifecycle-manager.js +493 -0
  32. package/dist/cli/runtime-support.js +74 -0
  33. package/dist/cli/serena-detected-default.js +27 -0
  34. package/dist/cli/tunnel-health-monitor.js +182 -0
  35. package/dist/cli.js +82 -739
  36. package/dist/config.js +1 -243
  37. package/dist/connection-registry.js +1 -73
  38. package/dist/connection-status.js +1 -139
  39. package/dist/control-retry.js +1 -0
  40. package/dist/crash-recovery.js +1 -0
  41. package/dist/db/client.js +16 -3
  42. package/dist/db/schema.js +30 -0
  43. package/dist/dotnet-tools.js +1 -223
  44. package/dist/git-worktrees.js +1 -134
  45. package/dist/git.js +1 -41
  46. package/dist/godot-animation-tilemap.js +1 -82
  47. package/dist/godot-csharp-build.js +1 -93
  48. package/dist/godot-csharp-project.js +1 -157
  49. package/dist/godot-csharp-runner.js +1 -146
  50. package/dist/godot-csharp-semantic.js +1 -161
  51. package/dist/godot-csharp-validate.js +1 -71
  52. package/dist/godot-dotnet-env.js +1 -169
  53. package/dist/godot-editor-bridge.js +1 -140
  54. package/dist/godot-gdscript.js +1 -824
  55. package/dist/godot-project-settings.js +1 -223
  56. package/dist/godot-runtime-testing.js +1 -249
  57. package/dist/godot-tools.js +1 -183
  58. package/dist/http-rate-limit.js +1 -0
  59. package/dist/http-server-hardening.js +1 -0
  60. package/dist/image-tools.js +1 -157
  61. package/dist/infrastructure/command-reference.js +32 -0
  62. package/dist/infrastructure/config.js +424 -0
  63. package/dist/infrastructure/context7-auth.js +55 -0
  64. package/dist/infrastructure/http-rate-limit.js +42 -0
  65. package/dist/infrastructure/http-server-hardening.js +23 -0
  66. package/dist/infrastructure/integration-queue.js +46 -0
  67. package/dist/infrastructure/logger.js +129 -0
  68. package/dist/infrastructure/mcp-event-store.js +103 -0
  69. package/dist/infrastructure/ngrok-auth-pool.js +208 -0
  70. package/dist/infrastructure/request-context.js +14 -0
  71. package/dist/infrastructure/shutdown.js +37 -0
  72. package/dist/infrastructure/sse-heartbeat.js +47 -0
  73. package/dist/infrastructure/tool-capabilities.js +67 -0
  74. package/dist/infrastructure/tool-result-budget.js +175 -0
  75. package/dist/infrastructure/user-config.js +167 -0
  76. package/dist/integration-discovery.js +1 -98
  77. package/dist/integration-queue.js +1 -0
  78. package/dist/integrations/agent-reach/agent-reach-tools.js +196 -0
  79. package/dist/integrations/agent-reach/native-channels.js +468 -0
  80. package/dist/integrations/aseprite/aseprite-analysis-tools.js +368 -0
  81. package/dist/integrations/aseprite/aseprite-editing-tools.js +647 -0
  82. package/dist/integrations/aseprite/aseprite-live-tools.js +297 -0
  83. package/dist/integrations/aseprite/aseprite-safety-tools.js +594 -0
  84. package/dist/integrations/aseprite/aseprite-specialized-tools.js +289 -0
  85. package/dist/integrations/aseprite/aseprite-tools.js +837 -0
  86. package/dist/integrations/blender/blender-catalog-mesh.js +593 -0
  87. package/dist/integrations/blender/blender-catalog-object.js +906 -0
  88. package/dist/integrations/blender/blender-catalog-scene.js +266 -0
  89. package/dist/integrations/blender/blender-catalog-select.js +581 -0
  90. package/dist/integrations/blender/blender-catalog-stubs.js +7512 -0
  91. package/dist/integrations/blender/blender-catalog.js +165 -0
  92. package/dist/integrations/blender/blender-client.js +105 -0
  93. package/dist/integrations/blender/blender-tools.js +2243 -0
  94. package/dist/integrations/context7/context7-tools.js +106 -0
  95. package/dist/integrations/dotnet/dotnet-tools.js +195 -0
  96. package/dist/integrations/godot/godot-animation-tilemap.js +74 -0
  97. package/dist/integrations/godot/godot-csharp-build.js +91 -0
  98. package/dist/integrations/godot/godot-csharp-project.js +155 -0
  99. package/dist/integrations/godot/godot-csharp-runner.js +118 -0
  100. package/dist/integrations/godot/godot-csharp-semantic.js +146 -0
  101. package/dist/integrations/godot/godot-csharp-validate.js +71 -0
  102. package/dist/integrations/godot/godot-dotnet-env.js +134 -0
  103. package/dist/integrations/godot/godot-editor-bridge.js +328 -0
  104. package/dist/integrations/godot/godot-gdscript.js +536 -0
  105. package/dist/integrations/godot/godot-project-settings.js +178 -0
  106. package/dist/integrations/godot/godot-runtime-testing.js +263 -0
  107. package/dist/integrations/godot/godot-tools.js +193 -0
  108. package/dist/integrations/images/image-tools.js +414 -0
  109. package/dist/integrations/images/png-codec.js +251 -0
  110. package/dist/integrations/images/view-image.js +99 -0
  111. package/dist/integrations/images/window-capture.js +148 -0
  112. package/dist/integrations/integration-discovery.js +185 -0
  113. package/dist/integrations/obsidian/obsidian-tools.js +205 -0
  114. package/dist/integrations/playwright/browser-session.js +516 -0
  115. package/dist/integrations/playwright/browser-stability.js +36 -0
  116. package/dist/integrations/playwright/playwright-runtime.js +105 -0
  117. package/dist/integrations/playwright/web-tools.js +504 -0
  118. package/dist/integrations/roblox/roblox-helpers.js +381 -0
  119. package/dist/integrations/roblox/roblox-studio-client.js +112 -0
  120. package/dist/integrations/roblox/roblox-tools.js +106 -0
  121. package/dist/integrations/serena/serena-manager.js +464 -0
  122. package/dist/integrations/serena/serena-tools.js +411 -0
  123. package/dist/logger.js +1 -76
  124. package/dist/mcp-event-store.js +1 -0
  125. package/dist/oauth-provider.js +1 -377
  126. package/dist/pi-tools.js +1 -81
  127. package/dist/playwright-runtime.js +1 -0
  128. package/dist/process/background-lifecycle.js +189 -0
  129. package/dist/process/control-retry.js +42 -0
  130. package/dist/process/crash-recovery.js +23 -0
  131. package/dist/process/processes.js +456 -0
  132. package/dist/processes.js +1 -218
  133. package/dist/request-context.js +1 -0
  134. package/dist/review-checkpoints.js +1 -142
  135. package/dist/room-registry.js +1 -0
  136. package/dist/roots.js +1 -53
  137. package/dist/search-discovery.js +1 -271
  138. package/dist/serena-manager.js +1 -443
  139. package/dist/serena-tools.js +1 -411
  140. package/dist/server/dashboard-page-styles.js +331 -0
  141. package/dist/server/dashboard-page.js +1509 -0
  142. package/dist/server/dashboard-routes.js +46 -0
  143. package/dist/server/dashboard.js +240 -0
  144. package/dist/server/http-helpers.js +30 -0
  145. package/dist/server/integration-profile-update.js +37 -0
  146. package/dist/server/mcp-policy.js +169 -0
  147. package/dist/server/mcp-server-factory.js +127 -0
  148. package/dist/server/mcp-tool-registrar.js +182 -0
  149. package/dist/server/openai-session-hint.js +14 -0
  150. package/dist/server/tool-groups.js +29 -0
  151. package/dist/server/tool-logging.js +33 -0
  152. package/dist/server/tool-registration-shared.js +59 -0
  153. package/dist/server/tools/aseprite-advanced-tools-registration.js +547 -0
  154. package/dist/server/tools/aseprite-tools-registration.js +213 -0
  155. package/dist/server/tools/blender-tools-registration.js +690 -0
  156. package/dist/server/tools/core-file-tools-registration.js +459 -0
  157. package/dist/server/tools/dotnet-godot-window-tools-registration.js +120 -0
  158. package/dist/server/tools/godot-csharp-tools-registration.js +252 -0
  159. package/dist/server/tools/godot-gdscript-tools-registration.js +189 -0
  160. package/dist/server/tools/process-project-tools-registration.js +155 -0
  161. package/dist/server/tools/roblox-tools-registration.js +514 -0
  162. package/dist/server/tools/web-image-tools-registration.js +326 -0
  163. package/dist/server/tools/workspace-lifecycle-tools-registration.js +130 -0
  164. package/dist/server/ui-assets.js +97 -0
  165. package/dist/server/workspace-analytics.js +92 -0
  166. package/dist/server.js +453 -2713
  167. package/dist/session-registry.js +1 -0
  168. package/dist/shutdown.js +1 -0
  169. package/dist/skills.js +1 -45
  170. package/dist/sse-heartbeat.js +1 -0
  171. package/dist/tool-capabilities.js +1 -0
  172. package/dist/tool-result-budget.js +1 -0
  173. package/dist/tools/pi-tools.js +81 -0
  174. package/dist/tunnels/cloudflare-tunnel.js +217 -0
  175. package/dist/tunnels/cloudflared-service.js +174 -0
  176. package/dist/tunnels/ngrok-tunnel.js +220 -0
  177. package/dist/tunnels/tunnel-manager.js +186 -0
  178. package/dist/tunnels/tunnel-types.js +1 -0
  179. package/dist/tunnels/tunnel-utils.js +62 -0
  180. package/dist/ui/.vite/manifest.json +9 -2487
  181. package/dist/ui/assets/heavy-payload-D42A9ceL.js +1 -0
  182. package/dist/ui/assets/lightweight-diff-Cv4g9Hdr.js +13 -0
  183. package/dist/ui/assets/review-payload-DKIg1cKF.js +1 -0
  184. package/dist/ui/assets/workspace-app-CeK3NhmB.css +1 -0
  185. package/dist/ui/assets/{workspace-app-C5QsE314.js → workspace-app-CkUXnpl4.js} +6 -6
  186. package/dist/ui/brand-theme.js +23 -0
  187. package/dist/ui/workspace-app.html +15 -15
  188. package/dist/user-config.js +1 -57
  189. package/dist/view-image.js +1 -104
  190. package/dist/web-tools.js +1 -200
  191. package/dist/window-capture.js +1 -74
  192. package/dist/workspace/artifact-registry.js +69 -0
  193. package/dist/workspace/git-worktrees.js +141 -0
  194. package/dist/workspace/git.js +42 -0
  195. package/dist/workspace/review-checkpoints.js +142 -0
  196. package/dist/workspace/roots.js +56 -0
  197. package/dist/workspace/search-discovery.js +264 -0
  198. package/dist/workspace/skills.js +45 -0
  199. package/dist/workspace/workspace-store.js +219 -0
  200. package/dist/workspace/workspaces.js +314 -0
  201. package/dist/workspace-store.js +1 -125
  202. package/dist/workspaces.js +1 -226
  203. package/docs/CREATOR_STORE_FREE_ASSETS.md +162 -0
  204. package/docs/DEVELOPMENT_TOOLS.md +136 -93
  205. package/docs/assets/auvrynt-icon.png +0 -0
  206. package/docs/assets/auvrynt-icon.svg +20 -0
  207. package/docs/chatgpt-coding-workflow.md +143 -143
  208. package/docs/configuration.md +156 -124
  209. package/docs/diagnostics.md +79 -0
  210. package/docs/gotchas.md +244 -202
  211. package/docs/multi-agent-and-long-projects.md +91 -0
  212. package/docs/security.md +138 -100
  213. package/docs/setup.md +171 -131
  214. package/docs/source-layout.md +60 -0
  215. package/extensions/auvrynt_bridge/auvrynt_bridge.lua +594 -0
  216. package/extensions/auvrynt_bridge/live_analysis.lua +181 -0
  217. package/extensions/auvrynt_bridge/live_animation.lua +134 -0
  218. package/extensions/auvrynt_bridge/live_commands.lua +24 -0
  219. package/extensions/auvrynt_bridge/live_common.lua +130 -0
  220. package/extensions/auvrynt_bridge/live_document.lua +78 -0
  221. package/extensions/auvrynt_bridge/live_drawing.lua +125 -0
  222. package/extensions/auvrynt_bridge/live_effects.lua +91 -0
  223. package/extensions/auvrynt_bridge/live_palette_template.lua +167 -0
  224. package/extensions/auvrynt_bridge/live_selection.lua +110 -0
  225. package/extensions/auvrynt_bridge/live_structure.lua +129 -0
  226. package/extensions/auvrynt_bridge/package.json +17 -0
  227. package/guides/ASEPRITE_AGENT_GUIDE.md +133 -0
  228. package/guides/BLENDER_AGENT_GUIDE.md +472 -0
  229. package/guides/GODOT_AGENT_GUIDE.md +298 -0
  230. package/guides/PROJECT_ROUTER.md +165 -0
  231. package/guides/ROBLOX_AGENT_GUIDE.md +75 -0
  232. package/guides/SOFTWARE_AGENT_GUIDE.md +104 -0
  233. package/guides/WEB_AGENT_GUIDE.md +287 -0
  234. package/package.json +78 -70
  235. package/scripts/dev-server.mjs +121 -120
  236. package/scripts/live-tunnel-smoke.mjs +538 -0
  237. package/scripts/repo-hygiene.mjs +74 -0
  238. package/scripts/restart-after-crash.mjs +49 -0
  239. package/scripts/run-tests.mjs +166 -0
  240. package/dist/ui/assets/abap-CLvhMVsD.js +0 -1
  241. package/dist/ui/assets/actionscript-3--17pq3dv.js +0 -1
  242. package/dist/ui/assets/ada-C5qYipkI.js +0 -1
  243. package/dist/ui/assets/andromeeda-vGVdxbeo.js +0 -1
  244. package/dist/ui/assets/angular-html-BJqQFYI6.js +0 -1
  245. package/dist/ui/assets/angular-ts-CMJECO0Y.js +0 -1
  246. package/dist/ui/assets/apache-U0d_L8uA.js +0 -1
  247. package/dist/ui/assets/apex-CGTLDQj6.js +0 -1
  248. package/dist/ui/assets/apl-DWeXpBBr.js +0 -1
  249. package/dist/ui/assets/applescript-CCn79oCD.js +0 -1
  250. package/dist/ui/assets/ara-4CJ0cIlV.js +0 -1
  251. package/dist/ui/assets/asciidoc-DE70LPWp.js +0 -1
  252. package/dist/ui/assets/asm-Cmm7eHzH.js +0 -1
  253. package/dist/ui/assets/astro-CLbttLOq.js +0 -1
  254. package/dist/ui/assets/aurora-x-CDeNXAV0.js +0 -1
  255. package/dist/ui/assets/awk-BWXHIvNe.js +0 -1
  256. package/dist/ui/assets/ayu-dark-DluEY0Gj.js +0 -1
  257. package/dist/ui/assets/ayu-light-C3h-C4tm.js +0 -1
  258. package/dist/ui/assets/ayu-mirage-Bqwy1Gya.js +0 -1
  259. package/dist/ui/assets/ballerina-B7ZEbQpA.js +0 -1
  260. package/dist/ui/assets/bat-Bo4NYOV-.js +0 -1
  261. package/dist/ui/assets/beancount-D-usSTwE.js +0 -1
  262. package/dist/ui/assets/berry-DKpUyyne.js +0 -1
  263. package/dist/ui/assets/bibtex-Ci_nEsc7.js +0 -1
  264. package/dist/ui/assets/bicep-CUHmPFLl.js +0 -1
  265. package/dist/ui/assets/bird2-C2hNVINV.js +0 -1
  266. package/dist/ui/assets/blade-BOzY0P2V.js +0 -1
  267. package/dist/ui/assets/bsl-BkkzgIyY.js +0 -1
  268. package/dist/ui/assets/c-BG-8uJvh.js +0 -1
  269. package/dist/ui/assets/c3-CnJL0r0V.js +0 -1
  270. package/dist/ui/assets/cadence-CQ2zXKGN.js +0 -1
  271. package/dist/ui/assets/cairo-DLTphjLi.js +0 -1
  272. package/dist/ui/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
  273. package/dist/ui/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
  274. package/dist/ui/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
  275. package/dist/ui/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
  276. package/dist/ui/assets/clarity-SemFz856.js +0 -1
  277. package/dist/ui/assets/clojure-DqKBuwfJ.js +0 -1
  278. package/dist/ui/assets/cmake-Bj61d0ZC.js +0 -1
  279. package/dist/ui/assets/cobol-I_17IuGe.js +0 -1
  280. package/dist/ui/assets/codeowners-C8r90Shi.js +0 -1
  281. package/dist/ui/assets/codeql-oeQT6MSM.js +0 -1
  282. package/dist/ui/assets/coffee-C0B8hmok.js +0 -1
  283. package/dist/ui/assets/common-lisp-Cv5bFMCO.js +0 -1
  284. package/dist/ui/assets/coq-BrsZFFmf.js +0 -1
  285. package/dist/ui/assets/cpp-DDJXt6Vs.js +0 -1
  286. package/dist/ui/assets/crystal-Bexqace6.js +0 -1
  287. package/dist/ui/assets/csharp-Ct8U2NOr.js +0 -1
  288. package/dist/ui/assets/css-DSQhw_9R.js +0 -1
  289. package/dist/ui/assets/csv-Dx-8-gkx.js +0 -1
  290. package/dist/ui/assets/cue-CE9AQfxI.js +0 -1
  291. package/dist/ui/assets/cypher-ClKdZ_lG.js +0 -1
  292. package/dist/ui/assets/d-qD-0Kul2.js +0 -1
  293. package/dist/ui/assets/dark-plus-Cs2F2srj.js +0 -1
  294. package/dist/ui/assets/dart-DkHntEIa.js +0 -1
  295. package/dist/ui/assets/dax-BkyTk9wS.js +0 -1
  296. package/dist/ui/assets/desktop-Dlh5hvp9.js +0 -1
  297. package/dist/ui/assets/diff-woXpYk--.js +0 -1
  298. package/dist/ui/assets/docker-IyjqRm3v.js +0 -1
  299. package/dist/ui/assets/dotenv-_5a1GRtc.js +0 -1
  300. package/dist/ui/assets/dracula-BHWKrbxM.js +0 -1
  301. package/dist/ui/assets/dracula-soft-5eyTD99u.js +0 -1
  302. package/dist/ui/assets/dream-maker-DW3nJb8Q.js +0 -1
  303. package/dist/ui/assets/edge-Z8YYkHOr.js +0 -1
  304. package/dist/ui/assets/elixir-CG9uKtAF.js +0 -1
  305. package/dist/ui/assets/elm-GfWG2IfT.js +0 -1
  306. package/dist/ui/assets/emacs-lisp-C9PiwqqW.js +0 -1
  307. package/dist/ui/assets/erb-xe89e73J.js +0 -1
  308. package/dist/ui/assets/erlang-Cphh6RMH.js +0 -1
  309. package/dist/ui/assets/everforest-dark-sB-x3p7T.js +0 -1
  310. package/dist/ui/assets/everforest-light-Df2xbC6M.js +0 -1
  311. package/dist/ui/assets/fennel-DQxkIbk2.js +0 -1
  312. package/dist/ui/assets/fish-BJitypiv.js +0 -1
  313. package/dist/ui/assets/fluent-C03EYrpw.js +0 -1
  314. package/dist/ui/assets/fortran-fixed-form-DEKoE2YW.js +0 -1
  315. package/dist/ui/assets/fortran-free-form-CYNrtFtB.js +0 -1
  316. package/dist/ui/assets/fsharp-D13ZGOAj.js +0 -1
  317. package/dist/ui/assets/gdresource-C0sCabJj.js +0 -1
  318. package/dist/ui/assets/gdscript-Cp2uCuqX.js +0 -1
  319. package/dist/ui/assets/gdshader-CBce3t8t.js +0 -1
  320. package/dist/ui/assets/genie-CV2tkWYe.js +0 -1
  321. package/dist/ui/assets/gherkin-DExj1W_8.js +0 -1
  322. package/dist/ui/assets/git-commit-BSykSTBG.js +0 -1
  323. package/dist/ui/assets/git-rebase-CoTL_uSE.js +0 -1
  324. package/dist/ui/assets/github-dark-C-LZuMrd.js +0 -1
  325. package/dist/ui/assets/github-dark-default-DXG-b-1a.js +0 -1
  326. package/dist/ui/assets/github-dark-dimmed-Bx1FflLF.js +0 -1
  327. package/dist/ui/assets/github-dark-high-contrast-B_tTalzw.js +0 -1
  328. package/dist/ui/assets/github-light-EUqPIrTm.js +0 -1
  329. package/dist/ui/assets/github-light-default-BXViO-2h.js +0 -1
  330. package/dist/ui/assets/github-light-high-contrast-B68TUdTA.js +0 -1
  331. package/dist/ui/assets/gleam-CSRkHgEL.js +0 -1
  332. package/dist/ui/assets/glimmer-js-DAn4UCSu.js +0 -1
  333. package/dist/ui/assets/glimmer-ts-Tjyi6Gh5.js +0 -1
  334. package/dist/ui/assets/glsl-CtTDZoqR.js +0 -1
  335. package/dist/ui/assets/gn-ilITqXS6.js +0 -1
  336. package/dist/ui/assets/gnuplot-7GGW24-e.js +0 -1
  337. package/dist/ui/assets/go-BJwz_mda.js +0 -1
  338. package/dist/ui/assets/graphql-D5gcC_Jk.js +0 -1
  339. package/dist/ui/assets/groovy-CacY0gHj.js +0 -1
  340. package/dist/ui/assets/gruvbox-dark-hard-C820rvS2.js +0 -1
  341. package/dist/ui/assets/gruvbox-dark-medium-BPjhmG05.js +0 -1
  342. package/dist/ui/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -1
  343. package/dist/ui/assets/gruvbox-light-hard-BC_s9l72.js +0 -1
  344. package/dist/ui/assets/gruvbox-light-medium-BAWPOn9u.js +0 -1
  345. package/dist/ui/assets/gruvbox-light-soft-BSMLrYjP.js +0 -1
  346. package/dist/ui/assets/hack-BJXY27dt.js +0 -1
  347. package/dist/ui/assets/haml-BLfFoZf7.js +0 -1
  348. package/dist/ui/assets/handlebars-Dw6CWkvN.js +0 -1
  349. package/dist/ui/assets/haskell-D8IpX4py.js +0 -1
  350. package/dist/ui/assets/haxe-OTjmBuCE.js +0 -1
  351. package/dist/ui/assets/hcl-Dh228itO.js +0 -1
  352. package/dist/ui/assets/heavy-payload-Dcg0-F-S.js +0 -4
  353. package/dist/ui/assets/hjson-CxZEssPk.js +0 -1
  354. package/dist/ui/assets/hlsl-Cvrh5tZx.js +0 -1
  355. package/dist/ui/assets/horizon-CE9ld1lL.js +0 -1
  356. package/dist/ui/assets/horizon-bright-Br1oVSNq.js +0 -1
  357. package/dist/ui/assets/houston-CsvMBhTu.js +0 -1
  358. package/dist/ui/assets/html-CAcAWvoN.js +0 -1
  359. package/dist/ui/assets/html-derivative-8aSW2E_7.js +0 -1
  360. package/dist/ui/assets/http-B2YR_3V1.js +0 -1
  361. package/dist/ui/assets/hurl-BnDJ9Zhf.js +0 -1
  362. package/dist/ui/assets/hxml-B0Qn7Nwc.js +0 -1
  363. package/dist/ui/assets/hy-CZbG8q4J.js +0 -1
  364. package/dist/ui/assets/imba-DsUTQ-LC.js +0 -1
  365. package/dist/ui/assets/ini-B5eOa1yu.js +0 -1
  366. package/dist/ui/assets/java-Doxi4W8u.js +0 -1
  367. package/dist/ui/assets/javascript-BbRdEqti.js +0 -1
  368. package/dist/ui/assets/jinja-CS3Tpv_Q.js +0 -1
  369. package/dist/ui/assets/jison-BkPGYVHR.js +0 -1
  370. package/dist/ui/assets/json-BMt1m3m8.js +0 -1
  371. package/dist/ui/assets/json5-BR5RXkoi.js +0 -1
  372. package/dist/ui/assets/jsonc-CYpm1nAK.js +0 -1
  373. package/dist/ui/assets/jsonl-CmCQp5Yx.js +0 -1
  374. package/dist/ui/assets/jsonnet-CJTPZ8u_.js +0 -1
  375. package/dist/ui/assets/jssm-DXw9l8Rf.js +0 -1
  376. package/dist/ui/assets/jsx-CQKrJXXY.js +0 -1
  377. package/dist/ui/assets/julia-BuN7i2du.js +0 -1
  378. package/dist/ui/assets/just-BswEPFPu.js +0 -1
  379. package/dist/ui/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
  380. package/dist/ui/assets/kanagawa-lotus-BN08jTvb.js +0 -1
  381. package/dist/ui/assets/kanagawa-wave-CTweb8Dz.js +0 -1
  382. package/dist/ui/assets/kdl-CsD5j6eV.js +0 -1
  383. package/dist/ui/assets/kotlin-DhhofPvG.js +0 -1
  384. package/dist/ui/assets/kusto-BUv0MjJC.js +0 -1
  385. package/dist/ui/assets/laserwave-C_8bwKvT.js +0 -1
  386. package/dist/ui/assets/latex-DU2VyFfA.js +0 -1
  387. package/dist/ui/assets/lean-CewbzKMR.js +0 -1
  388. package/dist/ui/assets/less-DVTAwKKz.js +0 -1
  389. package/dist/ui/assets/light-plus-DVQuIRkW.js +0 -1
  390. package/dist/ui/assets/liquid-Cmz1L3dq.js +0 -1
  391. package/dist/ui/assets/llvm-Cm23YOpf.js +0 -1
  392. package/dist/ui/assets/log-BNLmms1o.js +0 -1
  393. package/dist/ui/assets/logo-Cluzi2Zq.js +0 -1
  394. package/dist/ui/assets/lua-CfVXhkaJ.js +0 -1
  395. package/dist/ui/assets/luau-CNKltnaQ.js +0 -1
  396. package/dist/ui/assets/make-Dixweg8N.js +0 -1
  397. package/dist/ui/assets/markdown-BYOwaDjH.js +0 -1
  398. package/dist/ui/assets/marko-C5bfqGiA.js +0 -1
  399. package/dist/ui/assets/material-theme-Bm3Qr25_.js +0 -1
  400. package/dist/ui/assets/material-theme-darker-2IIEA8gg.js +0 -1
  401. package/dist/ui/assets/material-theme-lighter-uhdI0v04.js +0 -1
  402. package/dist/ui/assets/material-theme-ocean-CHQ94UKr.js +0 -1
  403. package/dist/ui/assets/material-theme-palenight-B5W6OYN7.js +0 -1
  404. package/dist/ui/assets/matlab-D7qyCx1q.js +0 -1
  405. package/dist/ui/assets/mdc-CVBXYfyq.js +0 -1
  406. package/dist/ui/assets/mdx-DQZ5AkYe.js +0 -1
  407. package/dist/ui/assets/mermaid-Bk4SNUv9.js +0 -1
  408. package/dist/ui/assets/min-dark-BSWPekZh.js +0 -1
  409. package/dist/ui/assets/min-light-DDpmG2fV.js +0 -1
  410. package/dist/ui/assets/mipsasm-BMqwQI7S.js +0 -1
  411. package/dist/ui/assets/mojo-BgCJLMeH.js +0 -1
  412. package/dist/ui/assets/monokai-CdkpiU2Y.js +0 -1
  413. package/dist/ui/assets/moonbit-CaWjb8XO.js +0 -1
  414. package/dist/ui/assets/move-B1IS1UjX.js +0 -1
  415. package/dist/ui/assets/narrat-_X_XdTYD.js +0 -1
  416. package/dist/ui/assets/nextflow-Bbiyy34d.js +0 -1
  417. package/dist/ui/assets/nextflow-groovy-Dc_ddanL.js +0 -1
  418. package/dist/ui/assets/nginx-CzJafxLa.js +0 -1
  419. package/dist/ui/assets/night-owl-DhmEMT88.js +0 -1
  420. package/dist/ui/assets/night-owl-light-eJ-hLW7d.js +0 -1
  421. package/dist/ui/assets/nim-DABKtHtM.js +0 -1
  422. package/dist/ui/assets/nix-IvuFDN5E.js +0 -1
  423. package/dist/ui/assets/nord-Cb4Vim4T.js +0 -1
  424. package/dist/ui/assets/nushell-DcLAeLz5.js +0 -1
  425. package/dist/ui/assets/objective-c-D1A_Heim.js +0 -1
  426. package/dist/ui/assets/objective-cpp-BsSzOQcm.js +0 -1
  427. package/dist/ui/assets/ocaml-O90oeIOV.js +0 -1
  428. package/dist/ui/assets/odin-B1RWQWA5.js +0 -1
  429. package/dist/ui/assets/one-dark-pro-CLwyXe_n.js +0 -1
  430. package/dist/ui/assets/one-light-D7Lr4KcI.js +0 -1
  431. package/dist/ui/assets/openscad-BUDT5pXO.js +0 -1
  432. package/dist/ui/assets/pascal-4ZHwLPI5.js +0 -1
  433. package/dist/ui/assets/perl-CBh7L3lZ.js +0 -1
  434. package/dist/ui/assets/php-DFbI9q5p.js +0 -1
  435. package/dist/ui/assets/pierre-dark-sU4Zdns8.js +0 -1
  436. package/dist/ui/assets/pierre-dark-soft-HXgun5vs.js +0 -1
  437. package/dist/ui/assets/pierre-light-DWBk51d8.js +0 -1
  438. package/dist/ui/assets/pierre-light-soft-CodEzPxf.js +0 -1
  439. package/dist/ui/assets/pkl-ot-7Btpt.js +0 -1
  440. package/dist/ui/assets/plastic-DQwYfKfQ.js +0 -1
  441. package/dist/ui/assets/plsql-DGHpHOYJ.js +0 -1
  442. package/dist/ui/assets/po-BiJDBrnU.js +0 -1
  443. package/dist/ui/assets/poimandres-DRFjx7u4.js +0 -1
  444. package/dist/ui/assets/polar-C7UOKdEL.js +0 -1
  445. package/dist/ui/assets/postcss-BXeXVLqQ.js +0 -1
  446. package/dist/ui/assets/powerquery-DNMTfnFr.js +0 -1
  447. package/dist/ui/assets/powershell-DshXNtvi.js +0 -1
  448. package/dist/ui/assets/prisma-BsRQq5mF.js +0 -1
  449. package/dist/ui/assets/prolog-iXnhIJG7.js +0 -1
  450. package/dist/ui/assets/proto-DB4EqR-F.js +0 -1
  451. package/dist/ui/assets/pug-C_PxC7gO.js +0 -1
  452. package/dist/ui/assets/puppet-CDv2pdJW.js +0 -1
  453. package/dist/ui/assets/purescript-9MfHhQsQ.js +0 -1
  454. package/dist/ui/assets/python-gzcpVVnB.js +0 -1
  455. package/dist/ui/assets/qml-DtngoFFK.js +0 -1
  456. package/dist/ui/assets/qmldir-DCQb3MpD.js +0 -1
  457. package/dist/ui/assets/qss-Fe1Jh2GI.js +0 -1
  458. package/dist/ui/assets/r-DohkcevW.js +0 -1
  459. package/dist/ui/assets/racket-DcIDlBhZ.js +0 -1
  460. package/dist/ui/assets/raku-B3gFvitq.js +0 -1
  461. package/dist/ui/assets/razor-C4t8J0_E.js +0 -1
  462. package/dist/ui/assets/red-CJ3rzSJv.js +0 -1
  463. package/dist/ui/assets/reg-CRGYupPL.js +0 -1
  464. package/dist/ui/assets/regexp-OGbTbjgY.js +0 -1
  465. package/dist/ui/assets/rel-BtDbiS_P.js +0 -1
  466. package/dist/ui/assets/review-payload-C5Qz60Kq.js +0 -1
  467. package/dist/ui/assets/riscv-Ckw8ddFX.js +0 -1
  468. package/dist/ui/assets/ron-VUp2lXgN.js +0 -1
  469. package/dist/ui/assets/rose-pine-BthvhNj6.js +0 -1
  470. package/dist/ui/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
  471. package/dist/ui/assets/rose-pine-moon-hon4tzzS.js +0 -1
  472. package/dist/ui/assets/rosmsg-CAekHB0j.js +0 -1
  473. package/dist/ui/assets/rst-CfBbbcvC.js +0 -1
  474. package/dist/ui/assets/ruby-Bw0mpxHY.js +0 -1
  475. package/dist/ui/assets/rust-Cfkwpbl8.js +0 -1
  476. package/dist/ui/assets/sas-Cs3s9JOf.js +0 -1
  477. package/dist/ui/assets/sass-DXrisJhu.js +0 -1
  478. package/dist/ui/assets/scala-DKOlJaKm.js +0 -1
  479. package/dist/ui/assets/scheme-DQCgrYNe.js +0 -1
  480. package/dist/ui/assets/scss-sRxNJS54.js +0 -1
  481. package/dist/ui/assets/sdbl-bTVj8UrX.js +0 -1
  482. package/dist/ui/assets/shaderlab-TOUzSsQk.js +0 -1
  483. package/dist/ui/assets/shellscript-B0X6wh0R.js +0 -1
  484. package/dist/ui/assets/shellsession-D2FdOioR.js +0 -1
  485. package/dist/ui/assets/slack-dark-DnToyrRv.js +0 -1
  486. package/dist/ui/assets/slack-ochin-B2OO5cIa.js +0 -1
  487. package/dist/ui/assets/smalltalk-B16xEiuN.js +0 -1
  488. package/dist/ui/assets/snazzy-light-4G7pJPwS.js +0 -1
  489. package/dist/ui/assets/solarized-dark-DV17i1UV.js +0 -1
  490. package/dist/ui/assets/solarized-light-DSh2HLQt.js +0 -1
  491. package/dist/ui/assets/solidity-CKzVLygQ.js +0 -1
  492. package/dist/ui/assets/soy-s6g9OjJ1.js +0 -1
  493. package/dist/ui/assets/sparql-D_iOobhT.js +0 -1
  494. package/dist/ui/assets/splunk-BC2Px7Mm.js +0 -1
  495. package/dist/ui/assets/sql-DVTnh5V-.js +0 -1
  496. package/dist/ui/assets/ssh-config-BgfXC-Er.js +0 -1
  497. package/dist/ui/assets/stata-DFIDiXF9.js +0 -1
  498. package/dist/ui/assets/stylus-B6D30XZt.js +0 -1
  499. package/dist/ui/assets/surrealql-DVfrsLyg.js +0 -1
  500. package/dist/ui/assets/svelte-D5GsxESq.js +0 -1
  501. package/dist/ui/assets/swift-DonLKvLd.js +0 -1
  502. package/dist/ui/assets/synthwave-84-nFMaYfgc.js +0 -1
  503. package/dist/ui/assets/system-verilog-DJ5XKQeo.js +0 -1
  504. package/dist/ui/assets/systemd-BxMlprV5.js +0 -1
  505. package/dist/ui/assets/talonscript-CohzipZa.js +0 -1
  506. package/dist/ui/assets/tasl-DMoTqEGO.js +0 -1
  507. package/dist/ui/assets/tcl-CZd0xW_V.js +0 -1
  508. package/dist/ui/assets/templ-DI-Zyqzd.js +0 -1
  509. package/dist/ui/assets/terraform-DswuEJGm.js +0 -1
  510. package/dist/ui/assets/tex-WHHmlbJI.js +0 -1
  511. package/dist/ui/assets/tokyo-night-oM2G3aXe.js +0 -1
  512. package/dist/ui/assets/toml-CcmNWLt0.js +0 -1
  513. package/dist/ui/assets/ts-tags-Dwpo2RFJ.js +0 -1
  514. package/dist/ui/assets/tsv-sltzmVWM.js +0 -1
  515. package/dist/ui/assets/tsx-ph_idaAW.js +0 -1
  516. package/dist/ui/assets/turtle-ByJddavk.js +0 -1
  517. package/dist/ui/assets/twig-YO17jFjR.js +0 -1
  518. package/dist/ui/assets/typescript-CbAxjhkl.js +0 -1
  519. package/dist/ui/assets/typespec-B88KGewJ.js +0 -1
  520. package/dist/ui/assets/typst-DI99ib-x.js +0 -1
  521. package/dist/ui/assets/useFileDiffInstance-B2DLX3Vg.js +0 -244
  522. package/dist/ui/assets/v-DETTlOr0.js +0 -1
  523. package/dist/ui/assets/vala-zf12oZj6.js +0 -1
  524. package/dist/ui/assets/vb-Djn5o6TS.js +0 -1
  525. package/dist/ui/assets/verilog-CiiDBU1e.js +0 -1
  526. package/dist/ui/assets/vesper-D5bVUKB1.js +0 -1
  527. package/dist/ui/assets/vhdl-BroJfC0k.js +0 -1
  528. package/dist/ui/assets/viml-DvXPmvsu.js +0 -1
  529. package/dist/ui/assets/vitesse-black-fwtXNY1n.js +0 -1
  530. package/dist/ui/assets/vitesse-dark-BZCL-v6S.js +0 -1
  531. package/dist/ui/assets/vitesse-light-VbXTXTou.js +0 -1
  532. package/dist/ui/assets/vue-CraHL-Ps.js +0 -1
  533. package/dist/ui/assets/vue-html-e9tyZNtS.js +0 -1
  534. package/dist/ui/assets/vue-vine-CofmxaUb.js +0 -1
  535. package/dist/ui/assets/vyper-CgoNMtux.js +0 -1
  536. package/dist/ui/assets/wasm-BnjxR4X6.js +0 -1
  537. package/dist/ui/assets/wasm-ByWQv1Qj.js +0 -1
  538. package/dist/ui/assets/wenyan-C8pVoKbM.js +0 -1
  539. package/dist/ui/assets/wgsl-BsKzXJz4.js +0 -1
  540. package/dist/ui/assets/wikitext-ClFFjSW2.js +0 -1
  541. package/dist/ui/assets/wit-DdvCle-K.js +0 -1
  542. package/dist/ui/assets/wolfram-DLL8P-h_.js +0 -1
  543. package/dist/ui/assets/workspace-app-8--oTbCd.css +0 -1
  544. package/dist/ui/assets/xml-BWSdPZHm.js +0 -1
  545. package/dist/ui/assets/xsl-BtCt7Hx8.js +0 -1
  546. package/dist/ui/assets/yaml-BZiTw7cQ.js +0 -1
  547. package/dist/ui/assets/zenscript-BnlCZFoB.js +0 -1
  548. package/dist/ui/assets/zig-CMLA9XwU.js +0 -1
  549. package/docs/assets/auvrynt-logo-light.png +0 -0
  550. package/docs/assets/auvrynt-screenshot.png +0 -0
package/docs/security.md CHANGED
@@ -1,100 +1,138 @@
1
- # Security Model
2
-
3
- Auvrynt exposes local coding capabilities over MCP. Treat it as remote access
4
- to your development machine.
5
-
6
- The security model is simple:
7
-
8
- - you choose a narrow filesystem allowlist
9
- - the MCP endpoint requires OAuth approval with your Owner password
10
- - Host headers are allowlisted from the configured public URL
11
- - every coding action happens through explicit MCP tool calls
12
-
13
- ## Filesystem Allowlist
14
-
15
- Auvrynt only opens workspaces under configured roots.
16
-
17
- Good examples:
18
-
19
- ```text
20
- ~/work
21
- ~/personal/open-source
22
- ```
23
-
24
- Avoid broad roots:
25
-
26
- ```text
27
- ~
28
- /
29
- C:\
30
- ```
31
-
32
- The narrower the root, the easier it is to reason about what the MCP client can
33
- reach.
34
-
35
- ## Owner Password
36
-
37
- `auvrynt init` generates an Owner password and stores it in:
38
-
39
- ```text
40
- ~/.auvrynt/auth.json
41
- ```
42
-
43
- When an MCP client connects, Auvrynt shows an approval page. Enter the Owner
44
- password only when you intentionally want that client to access this server.
45
-
46
- For env-driven deployments, set a long random value:
47
-
48
- ```bash
49
- AUVRYNT_OAUTH_OWNER_TOKEN="$(openssl rand -base64 32)"
50
- ```
51
-
52
- ## Public URL And Host Allowlist
53
-
54
- Auvrynt needs `AUVRYNT_PUBLIC_BASE_URL` so MCP clients can discover OAuth
55
- metadata and connect to the correct resource.
56
-
57
- The value should be the origin only:
58
-
59
- ```text
60
- https://your-tunnel-host.example.com
61
- ```
62
-
63
- Do not include `/mcp` in `AUVRYNT_PUBLIC_BASE_URL`.
64
-
65
- By default, Auvrynt derives allowed Host headers from the local host and public
66
- URL. Use `AUVRYNT_ALLOWED_HOSTS=*` only for intentional local debugging.
67
-
68
- ## Tunnels
69
-
70
- Auvrynt does not manage tunnels. Your tunnel or reverse proxy should point to:
71
-
72
- ```text
73
- http://127.0.0.1:49321
74
- ```
75
-
76
- Prefer adding Cloudflare Access, Tailscale identity controls, or equivalent
77
- protection in front of public tunnels. Auvrynt OAuth still protects the MCP
78
- endpoint, but the tunnel URL should not be treated as a secret.
79
-
80
- ## Shell Access
81
-
82
- The shell tool is powerful by design. It is meant for tests, builds, git, and
83
- package scripts.
84
-
85
- Filesystem path containment applies to Auvrynt file tools. Shell commands run
86
- as local commands and can do what your user account can do. This is why the MCP
87
- client must be trusted and the Owner password must stay private.
88
-
89
- ## Worktrees
90
-
91
- Managed worktrees reduce accidental edits to your active checkout, but they are
92
- not a security boundary. They are a workflow boundary for isolated coding
93
- sessions.
94
-
95
- ## Logs
96
-
97
- By default, Auvrynt logs requests and tool calls. Shell command previews are
98
- disabled unless `AUVRYNT_LOG_SHELL_COMMANDS=1`.
99
-
100
- Do not enable shell command logging if commands may contain secrets.
1
+ # Security Model
2
+
3
+ Auvrynt exposes local coding capabilities over MCP. Treat it as remote access
4
+ to your development machine.
5
+
6
+ The security model is simple:
7
+
8
+ - you choose a narrow filesystem allowlist
9
+ - the MCP endpoint requires OAuth approval with your Owner token (or Owner token as `Authorization: Bearer` for header-only clients such as Clusy)
10
+ - OAuth scopes are enforced per tool call
11
+ - workspace rooms are owned by the OAuth client that opened them
12
+ - Host headers are allowlisted from the configured public URL
13
+ - forwarded client IPs are trusted only from an immediate loopback proxy
14
+ - every coding action happens through explicit MCP tool calls
15
+
16
+ ## Filesystem Allowlist
17
+
18
+ Auvrynt only opens workspaces under configured roots.
19
+
20
+ Good examples:
21
+
22
+ ```text
23
+ ~/work
24
+ ~/personal/open-source
25
+ ```
26
+
27
+ Avoid broad roots:
28
+
29
+ ```text
30
+ ~
31
+ /
32
+ C:\
33
+ ```
34
+
35
+ The narrower the root, the easier it is to reason about what the MCP client can
36
+ reach.
37
+
38
+ ## Workspace Room Ownership
39
+
40
+ Every workspace opened through MCP is assigned to the authenticated OAuth client
41
+ that created it. Workspace-bound tools validate this ownership before resolving
42
+ the filesystem root or invoking an integration. Another OAuth client cannot use
43
+ a leaked `workspaceId` to read, edit, run processes, or call integration tools in
44
+ that room.
45
+
46
+ Room ownership does not provide file locking. Two owner-protected workspaces can
47
+ still point to the same checkout, so use separate managed worktrees when multiple
48
+ clients must edit one Git repository concurrently.
49
+
50
+ ## Owner Token
51
+
52
+ `auvrynt init` generates an Owner token and stores it in:
53
+
54
+ ```text
55
+ ~/.auvrynt/auth.json
56
+ ```
57
+
58
+ When an MCP client connects, Auvrynt shows an approval page. Enter the Owner
59
+ token only when you intentionally want that client to access this server. Normal
60
+ startup does not print the secret; run `auvrynt token` locally when you explicitly
61
+ need to retrieve it.
62
+
63
+ For env-driven deployments, set a long random value:
64
+
65
+ ```bash
66
+ AUVRYNT_OAUTH_OWNER_TOKEN="$(openssl rand -base64 32)"
67
+ ```
68
+
69
+ ## Public URL And Host Allowlist
70
+
71
+ Auvrynt needs `AUVRYNT_PUBLIC_BASE_URL` so MCP clients can discover OAuth
72
+ metadata and connect to the correct resource.
73
+
74
+ The value should be the origin only:
75
+
76
+ ```text
77
+ https://your-tunnel-host.example.com
78
+ ```
79
+
80
+ Do not include `/mcp` in `AUVRYNT_PUBLIC_BASE_URL`.
81
+
82
+ By default, Auvrynt derives allowed Host headers from the local host and public
83
+ URL. Use `AUVRYNT_ALLOWED_HOSTS=*` only for intentional local debugging. Reverse
84
+ proxy forwarding information is accepted only when the immediate proxy is on
85
+ loopback; there is no option to trust arbitrary forwarding headers.
86
+
87
+ ## Tunnels
88
+
89
+ Auvrynt does not manage tunnels. Your tunnel or reverse proxy should point to:
90
+
91
+ ```text
92
+ http://127.0.0.1:49321
93
+ ```
94
+
95
+ Prefer adding Cloudflare Access, Tailscale identity controls, or equivalent
96
+ protection in front of public tunnels. Auvrynt OAuth still protects the MCP
97
+ endpoint, but the tunnel URL should not be treated as a secret.
98
+
99
+ ## Shell Access
100
+
101
+ The shell tool is powerful by design. It is meant for tests, builds, git, and
102
+ package scripts.
103
+
104
+ Filesystem path containment applies to Auvrynt file tools. Shell commands run
105
+ as local commands and can do what your user account can do. This is why the MCP
106
+ client must be trusted and the Owner token must stay private.
107
+
108
+ The `auvrynt:process` scope should therefore be treated as local command-execution
109
+ permission, not as a filesystem sandbox.
110
+
111
+ ## Blender Python
112
+
113
+ Normal Blender tools require `auvrynt:blender` and are bound to a `.blend` file
114
+ inside the opened workspace. The arbitrary `blender_execute_python` escape hatch
115
+ also requires `auvrynt:blender-python`, which is excluded from the default OAuth
116
+ scope set because Python executed inside Blender has the privileges of the local
117
+ user account.
118
+
119
+ ## Browser Network Access
120
+
121
+ Playwright browser tools validate each HTTP(S) request, redirect, DNS result, and
122
+ WebSocket destination against local/private/reserved network ranges. Service
123
+ workers are disabled in managed browser contexts so they cannot bypass request
124
+ routing. Intentional localhost development pages are allowed, while unrelated
125
+ LAN, metadata, and private-network destinations remain blocked.
126
+
127
+ ## Worktrees
128
+
129
+ Managed worktrees reduce accidental edits to your active checkout, but they are
130
+ not a security boundary. They are a workflow boundary for isolated coding
131
+ sessions.
132
+
133
+ ## Logs
134
+
135
+ By default, Auvrynt logs requests and tool calls. Shell command previews are
136
+ disabled unless `AUVRYNT_LOG_SHELL_COMMANDS=1`.
137
+
138
+ Do not enable shell command logging if commands may contain secrets.
package/docs/setup.md CHANGED
@@ -1,132 +1,172 @@
1
- # Setup Guide
2
-
3
- This guide is for users who want ChatGPT or another MCP host to work in local
4
- projects through Auvrynt.
5
-
6
- ## Requirements
7
-
8
- - Node `>=20.12 <27`; Node 22 LTS is recommended
9
- - npm
10
- - Git
11
- - Bash, including Git Bash or WSL on Windows
12
- - a public HTTPS URL that forwards to the local Auvrynt server
13
-
14
- Auvrynt does not create the public tunnel for you. Use Cloudflare Tunnel,
15
- ngrok, Pinggy, Tailscale Funnel, or your own HTTPS reverse proxy.
16
-
17
- ## Install And Configure
18
-
19
- Run:
20
-
21
- ```bash
22
- npx auvrynt init
23
- ```
24
-
25
- The setup flow asks one question at a time.
26
-
27
- ### Project Roots
28
-
29
- Choose the folders ChatGPT is allowed to open through Auvrynt. Keep this
30
- narrow.
31
-
32
- Examples:
33
-
34
- ```text
35
- ~/personal,~/work
36
- ```
37
-
38
- ```text
39
- /Users/alice/dev,/Users/alice/work
40
- ```
41
-
42
- ```text
43
- C:\Users\alice\dev,C:\Users\alice\work
44
- ```
45
-
46
- ### Local Port
47
-
48
- The default is `49321`.
49
-
50
- The local MCP URL is:
51
-
52
- ```text
53
- http://127.0.0.1:49321/mcp
54
- ```
55
-
56
- ### Public Base URL
57
-
58
- Start your tunnel or reverse proxy before entering this value. Point the tunnel
59
- at:
60
-
61
- ```text
62
- http://127.0.0.1:49321
63
- ```
64
-
65
- Enter the public origin without `/mcp`:
66
-
67
- ```text
68
- https://your-tunnel-host.example.com
69
- ```
70
-
71
- Configure the MCP client with the full MCP endpoint:
72
-
73
- ```text
74
- https://your-tunnel-host.example.com/mcp
75
- ```
76
-
77
- ## Start The Server
78
-
79
- Run:
80
-
81
- ```bash
82
- npx auvrynt start
83
- ```
84
-
85
- If your tunnel URL changes for one run, override it without rewriting config:
86
-
87
- ```bash
88
- AUVRYNT_PUBLIC_BASE_URL="https://new-tunnel.example.com" npx auvrynt start
89
- ```
90
-
91
- For a stable public URL, persist it:
92
-
93
- ```bash
94
- npx auvrynt config set publicBaseUrl https://auvrynt.example.com
95
- npx auvrynt start
96
- ```
97
-
98
- ## Approve The Client
99
-
100
- When ChatGPT, Claude, or another MCP client connects, Auvrynt shows an Owner
101
- password approval page. Enter the Owner password printed during setup.
102
-
103
- The default config files are:
104
-
105
- ```text
106
- ~/.auvrynt/config.json
107
- ~/.auvrynt/auth.json
108
- ```
109
-
110
- Keep `auth.json` private.
111
-
112
- ## Check Your Setup
113
-
114
- Run:
115
-
116
- ```bash
1
+ # Setup Guide
2
+
3
+ This guide is for users who want ChatGPT, Claude, Grok, Lovable, Bolt, or another MCP host to work in local
4
+ projects through Auvrynt.
5
+
6
+ ## Requirements
7
+
8
+ - Node `>=20.12 <27`; Node 22 LTS is recommended
9
+ - npm
10
+ - Git for Windows (includes the Bash runtime used by agent shell tools)
11
+ - Windows PowerShell or cmd.exe
12
+ - Internet access for the managed Cloudflare quick tunnel
13
+
14
+ `auvrynt start` installs Cloudflare Tunnel when needed and creates a temporary
15
+ public URL automatically.
16
+
17
+ ## Install And Start
18
+
19
+ Run:
20
+
21
+ ```powershell
22
+ npm install -g auvrynt
23
+ cd C:\path\to\your\project
24
+ auvrynt start
25
+ ```
26
+
27
+ The first start creates local configuration and asks which optional
28
+ integrations to enable. The launch directory becomes the only project root
29
+ available to that managed instance.
30
+
31
+ Run `auvrynt init` only if you want to configure foreground `auvrynt serve`
32
+ manually. That setup flow asks one question at a time:
33
+
34
+ ### Project Roots
35
+
36
+ Choose the folders ChatGPT is allowed to open through Auvrynt. Keep this
37
+ narrow.
38
+
39
+ Example: `C:\Users\alice\dev,C:\Users\alice\work`.
40
+
41
+ ### Local Port
42
+
43
+ The default is `49321`.
44
+
45
+ The local MCP URL is:
46
+
47
+ ```text
48
+ http://127.0.0.1:49321/mcp
49
+ ```
50
+
51
+ ### Public Base URL
52
+
53
+ This setting applies to foreground `auvrynt serve`; managed `auvrynt start`
54
+ creates its own Cloudflare URL. Point your independently managed tunnel at:
55
+
56
+ ```text
57
+ http://127.0.0.1:49321
58
+ ```
59
+
60
+ Enter the public origin without `/mcp`:
61
+
62
+ ```text
63
+ https://your-tunnel-host.example.com
64
+ ```
65
+
66
+ Configure the MCP client with the full MCP endpoint:
67
+
68
+ ```text
69
+ https://your-tunnel-host.example.com/mcp
70
+ ```
71
+
72
+ ## Start The Server
73
+
74
+ Run:
75
+
76
+ ```powershell
77
+ auvrynt start
78
+ ```
79
+
80
+ The command starts in the background and returns only after both the local
81
+ server and Cloudflare tunnel are ready. It always limits web-agent file access
82
+ to the directory where you ran it.
83
+
84
+ Use `auvrynt add web` (or another profile) to update the running instance
85
+ without restarting the server or tunnel. Use `auvrynt restart` to reload only
86
+ the Auvrynt server while preserving the tunnel URL, `auvrynt restart hard` to
87
+ recreate both processes, or `auvrynt stop` to stop both managed processes.
88
+
89
+ To move the running web-agent boundary to another project without changing the
90
+ tunnel URL, open that directory and run:
91
+
92
+ ```powershell
93
+ auvrynt change
94
+ ```
95
+
96
+ For an independently managed stable URL, configure it and use foreground
97
+ `auvrynt serve`:
98
+
99
+ ```powershell
100
+ auvrynt config set publicBaseUrl https://auvrynt.example.com
101
+ auvrynt serve
102
+ ```
103
+
104
+ ## Approve The Client
105
+
106
+ When ChatGPT, Claude, Grok, Lovable, Bolt, or another MCP client connects, Auvrynt shows an Owner
107
+ token approval page. Enter the Owner token shown during setup, or retrieve it later with `auvrynt token`.
108
+
109
+ The default config files are:
110
+
111
+ ```text
112
+ ~/.auvrynt/config.json
113
+ ~/.auvrynt/auth.json
114
+ ```
115
+
116
+ Keep `auth.json` private.
117
+
118
+ ## Connect Grok
119
+
120
+ Start Auvrynt with the integrations you need, then copy the public MCP URL from
121
+ `auvrynt status`:
122
+
123
+ ```powershell
124
+ auvrynt start web
125
+ auvrynt status
126
+ ```
127
+
128
+ In Grok, open `grok.com/connectors`, choose **New Connector** → **Custom**, and
129
+ paste the URL ending in `/mcp`. Grok must use the public HTTPS URL; it cannot
130
+ reach `127.0.0.1`. Complete the Auvrynt Owner-token approval when prompted.
131
+
132
+ For a URL that survives tunnel restarts, configure a reserved ngrok URL with
133
+ `auvrynt tunnel` before creating the Grok connector. Cloudflare quick-tunnel
134
+ URLs are temporary and must be replaced in Grok when they change.
135
+
136
+ ## Connect Clusy (header auth)
137
+
138
+ Clusy cloud MCP only supports **Streamable HTTP** and **custom headers**. It does
139
+ not open Auvrynt’s `/authorize` page.
140
+
141
+ 1. Start Auvrynt and copy the public URL ending in `/mcp` from `auvrynt status`.
142
+ 2. Run `auvrynt token` and copy the Owner token (keep it private).
143
+ 3. In Clusy → **Settings → MCP servers** → Add server:
144
+ - Transport: **Streamable HTTP** (not STDIO)
145
+ - URL: `https://your-public-host/mcp`
146
+ - Custom header name: `Authorization`
147
+ - Custom header value: `Bearer <owner-token>`
148
+ 4. Save, then approve individual tools in Clusy when prompted.
149
+
150
+ Rebuild/restart Auvrynt after upgrading so Owner-Bearer verification is active.
151
+
152
+ ## Check Your Setup
153
+
154
+ Run:
155
+
156
+ ```bash
117
157
  npx auvrynt doctor
118
- ```
119
-
120
- The doctor command reports the resolved config, Node version, Node ABI, platform,
121
- Git, Bash, public URL, allowed hosts, and SQLite native dependency status.
122
-
123
- ## Running From A Local Checkout
124
-
125
- If you are developing Auvrynt itself instead of using the published package:
126
-
127
- ```bash
128
- npm install --include=dev
129
- npm run dev
130
- ```
131
-
132
- The same setup rules apply.
158
+ ```
159
+
160
+ The doctor command reports the resolved config, Node version, Node ABI, platform,
161
+ Git, Bash, public URL, allowed hosts, and SQLite native dependency status.
162
+
163
+ ## Running From A Local Checkout
164
+
165
+ If you are developing Auvrynt itself instead of using the published package:
166
+
167
+ ```bash
168
+ npm install --include=dev
169
+ npm run dev
170
+ ```
171
+
172
+ The same setup rules apply.
@@ -0,0 +1,60 @@
1
+ # Source Layout
2
+
3
+ Auvrynt keeps package entry points at the root of `src` and groups implementation code by responsibility.
4
+
5
+ ## Entry points
6
+
7
+ - `src/cli.ts` — command routing only. It compiles to the published `dist/cli.js` executable.
8
+ - `src/server.ts` — HTTP, OAuth, MCP transport, session, readiness, and shutdown composition. It compiles to the published `dist/server.js` entry point.
9
+
10
+ These files intentionally remain at the root because `package.json` publishes those output paths.
11
+
12
+ ## Domain folders
13
+
14
+ ```text
15
+ src/
16
+ ├── auth/ OAuth, sessions, rooms, connected-client state
17
+ ├── cli/ commands, foreground serving, lifecycle management
18
+ ├── db/ SQLite client and schema
19
+ ├── infrastructure/ configuration, logging, HTTP/SSE, queues, payload budgets
20
+ ├── integrations/
21
+ │ ├── blender/
22
+ │ ├── dotnet/
23
+ │ ├── godot/
24
+ │ ├── images/
25
+ │ ├── playwright/
26
+ │ └── serena/
27
+ ├── process/ managed processes, retries, crash recovery, background lifecycle
28
+ ├── server/ MCP policy, tool registration, UI resources, tool families
29
+ ├── tools/ shared MCP tool adapters
30
+ ├── tunnels/ Cloudflare and ngrok implementations
31
+ └── workspace/ workspace registry, persistence, worktrees, search, skills
32
+ ```
33
+
34
+ ## Root compatibility files
35
+
36
+ Most non-test `src/*.ts` files are intentionally tiny re-export facades. They preserve existing import paths while implementation code lives in the domain folders. New runtime implementation must not be added to these facades.
37
+
38
+ All non-entry root runtime files are now compatibility facades. The final three implementation bodies (`blender-tools.ts`, `serena-manager.ts`, `serena-tools.ts`) have been moved into their respective integration domain folders:
39
+
40
+ - `src/integrations/blender/blender-tools.ts`
41
+ - `src/integrations/serena/serena-manager.ts`
42
+ - `src/integrations/serena/serena-tools.ts`
43
+
44
+ The root files re-export from the domain paths. New server code imports the organized domain paths directly.
45
+
46
+ ## Tests
47
+
48
+ Tests currently remain beside their historical root import paths because `scripts/run-tests.mjs` treats each `src/*.test.ts` file as an executable test entry point. Tests may be colocated with implementations in a later dedicated test-runner migration, but production code should not depend on test location.
49
+
50
+ ## Placement rules
51
+
52
+ - Add authentication or session state under `auth/`.
53
+ - Add transport, configuration, logging, or bounded-resource helpers under `infrastructure/`.
54
+ - Add workspace filesystem and persistence behavior under `workspace/`.
55
+ - Add process ownership or lifecycle behavior under `process/`.
56
+ - Add integration-specific behavior under its `integrations/<name>/` folder.
57
+ - Keep `cli.ts` and `server.ts` composition-only.
58
+ - Do not add new root implementation files.
59
+
60
+ `src/architecture-boundaries.test.ts` enforces these rules.