unity-open-mcp 0.1.0 → 0.3.0

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 (447) hide show
  1. package/dist/agent-identity.d.ts +52 -0
  2. package/dist/agent-identity.js +115 -0
  3. package/dist/agent-identity.js.map +1 -0
  4. package/dist/batch-spawn.d.ts +7 -0
  5. package/dist/batch-spawn.js +155 -29
  6. package/dist/batch-spawn.js.map +1 -1
  7. package/dist/capabilities/build-capabilities.d.ts +45 -0
  8. package/dist/capabilities/build-capabilities.js +262 -27
  9. package/dist/capabilities/build-capabilities.js.map +1 -1
  10. package/dist/capabilities/cost-hints.d.ts +82 -0
  11. package/dist/capabilities/cost-hints.js +185 -0
  12. package/dist/capabilities/cost-hints.js.map +1 -0
  13. package/dist/capabilities/lifecycle.d.ts +40 -0
  14. package/dist/capabilities/lifecycle.js +353 -0
  15. package/dist/capabilities/lifecycle.js.map +1 -0
  16. package/dist/capabilities/rule-catalog.d.ts +13 -1
  17. package/dist/capabilities/rule-catalog.js +620 -75
  18. package/dist/capabilities/rule-catalog.js.map +1 -1
  19. package/dist/capabilities/tool-groups.d.ts +21 -0
  20. package/dist/capabilities/tool-groups.js +411 -14
  21. package/dist/capabilities/tool-groups.js.map +1 -1
  22. package/dist/cli/args.d.ts +32 -1
  23. package/dist/cli/args.js +201 -4
  24. package/dist/cli/args.js.map +1 -1
  25. package/dist/cli/cli.d.ts +21 -0
  26. package/dist/cli/cli.js +68 -5
  27. package/dist/cli/cli.js.map +1 -1
  28. package/dist/cli/commands.d.ts +33 -0
  29. package/dist/cli/commands.js +400 -0
  30. package/dist/cli/commands.js.map +1 -1
  31. package/dist/cli/exit-codes.d.ts +43 -0
  32. package/dist/cli/exit-codes.js +78 -0
  33. package/dist/cli/exit-codes.js.map +1 -0
  34. package/dist/compile-verify.d.ts +65 -0
  35. package/dist/compile-verify.js +94 -0
  36. package/dist/compile-verify.js.map +1 -0
  37. package/dist/compressible-router.js +64 -11
  38. package/dist/compressible-router.js.map +1 -1
  39. package/dist/compression/asset-model.d.ts +15 -0
  40. package/dist/compression/compact.d.ts +5 -4
  41. package/dist/compression/compact.js +13 -10
  42. package/dist/compression/compact.js.map +1 -1
  43. package/dist/dialog-dismiss.d.ts +127 -74
  44. package/dist/dialog-dismiss.js +427 -170
  45. package/dist/dialog-dismiss.js.map +1 -1
  46. package/dist/dialog-policy.d.ts +141 -0
  47. package/dist/dialog-policy.js +345 -0
  48. package/dist/dialog-policy.js.map +1 -0
  49. package/dist/gate-error.d.ts +6 -0
  50. package/dist/gate-error.js +13 -2
  51. package/dist/gate-error.js.map +1 -1
  52. package/dist/hub-control.d.ts +247 -0
  53. package/dist/hub-control.js +703 -0
  54. package/dist/hub-control.js.map +1 -0
  55. package/dist/index.d.ts +1 -1
  56. package/dist/index.js +46 -12
  57. package/dist/index.js.map +1 -1
  58. package/dist/live-client.d.ts +123 -3
  59. package/dist/live-client.js +526 -69
  60. package/dist/live-client.js.map +1 -1
  61. package/dist/offline.d.ts +105 -0
  62. package/dist/offline.js +816 -23
  63. package/dist/offline.js.map +1 -1
  64. package/dist/output-profile.d.ts +110 -0
  65. package/dist/output-profile.js +255 -0
  66. package/dist/output-profile.js.map +1 -0
  67. package/dist/retry-policy.d.ts +72 -0
  68. package/dist/retry-policy.js +146 -0
  69. package/dist/retry-policy.js.map +1 -0
  70. package/dist/routers.d.ts +4 -0
  71. package/dist/routers.js +2 -2
  72. package/dist/routers.js.map +1 -1
  73. package/dist/server-instructions.d.ts +18 -0
  74. package/dist/server-instructions.js +145 -0
  75. package/dist/server-instructions.js.map +1 -0
  76. package/dist/tool-router.d.ts +38 -1
  77. package/dist/tool-router.js +690 -37
  78. package/dist/tool-router.js.map +1 -1
  79. package/dist/tool-session-state.d.ts +37 -0
  80. package/dist/tool-session-state.js +78 -1
  81. package/dist/tool-session-state.js.map +1 -1
  82. package/dist/tools/apply-fix.js +16 -2
  83. package/dist/tools/apply-fix.js.map +1 -1
  84. package/dist/tools/asmdef-create.d.ts +2 -0
  85. package/dist/tools/asmdef-create.js +114 -0
  86. package/dist/tools/asmdef-create.js.map +1 -0
  87. package/dist/tools/asmdef-get.d.ts +2 -0
  88. package/dist/tools/asmdef-get.js +31 -0
  89. package/dist/tools/asmdef-get.js.map +1 -0
  90. package/dist/tools/asmdef-list.d.ts +2 -0
  91. package/dist/tools/asmdef-list.js +41 -0
  92. package/dist/tools/asmdef-list.js.map +1 -0
  93. package/dist/tools/asmdef-modify.d.ts +2 -0
  94. package/dist/tools/asmdef-modify.js +108 -0
  95. package/dist/tools/asmdef-modify.js.map +1 -0
  96. package/dist/tools/audio-listener-get.d.ts +2 -0
  97. package/dist/tools/audio-listener-get.js +16 -0
  98. package/dist/tools/audio-listener-get.js.map +1 -0
  99. package/dist/tools/audio-mixer-get-parameter.d.ts +2 -0
  100. package/dist/tools/audio-mixer-get-parameter.js +25 -0
  101. package/dist/tools/audio-mixer-get-parameter.js.map +1 -0
  102. package/dist/tools/audio-mixer-set-parameter.d.ts +2 -0
  103. package/dist/tools/audio-mixer-set-parameter.js +44 -0
  104. package/dist/tools/audio-mixer-set-parameter.js.map +1 -0
  105. package/dist/tools/audio-source-add.d.ts +2 -0
  106. package/dist/tools/audio-source-add.js +94 -0
  107. package/dist/tools/audio-source-add.js.map +1 -0
  108. package/dist/tools/audio-source-modify.d.ts +2 -0
  109. package/dist/tools/audio-source-modify.js +52 -0
  110. package/dist/tools/audio-source-modify.js.map +1 -0
  111. package/dist/tools/bridge-status.js +16 -6
  112. package/dist/tools/bridge-status.js.map +1 -1
  113. package/dist/tools/build-get-active-target.js +1 -2
  114. package/dist/tools/build-get-active-target.js.map +1 -1
  115. package/dist/tools/build-get-defines.js +1 -1
  116. package/dist/tools/build-get-defines.js.map +1 -1
  117. package/dist/tools/build-get-scenes.js +1 -2
  118. package/dist/tools/build-get-scenes.js.map +1 -1
  119. package/dist/tools/build-get-targets.js +1 -1
  120. package/dist/tools/build-get-targets.js.map +1 -1
  121. package/dist/tools/build-set-defines.js +1 -2
  122. package/dist/tools/build-set-defines.js.map +1 -1
  123. package/dist/tools/build-set-scenes.js +1 -1
  124. package/dist/tools/build-set-scenes.js.map +1 -1
  125. package/dist/tools/build-set-target.js +1 -1
  126. package/dist/tools/build-set-target.js.map +1 -1
  127. package/dist/tools/build-start.js +0 -1
  128. package/dist/tools/build-start.js.map +1 -1
  129. package/dist/tools/cinemachine-brain-ensure.d.ts +2 -0
  130. package/dist/tools/cinemachine-brain-ensure.js +27 -0
  131. package/dist/tools/cinemachine-brain-ensure.js.map +1 -0
  132. package/dist/tools/cinemachine-camera-list.d.ts +2 -0
  133. package/dist/tools/cinemachine-camera-list.js +15 -0
  134. package/dist/tools/cinemachine-camera-list.js.map +1 -0
  135. package/dist/tools/cinemachine-create-camera.d.ts +2 -0
  136. package/dist/tools/cinemachine-create-camera.js +55 -0
  137. package/dist/tools/cinemachine-create-camera.js.map +1 -0
  138. package/dist/tools/cinemachine-set-body.d.ts +2 -0
  139. package/dist/tools/cinemachine-set-body.js +33 -0
  140. package/dist/tools/cinemachine-set-body.js.map +1 -0
  141. package/dist/tools/cinemachine-set-lens.d.ts +2 -0
  142. package/dist/tools/cinemachine-set-lens.js +41 -0
  143. package/dist/tools/cinemachine-set-lens.js.map +1 -0
  144. package/dist/tools/cinemachine-set-noise.d.ts +2 -0
  145. package/dist/tools/cinemachine-set-noise.js +31 -0
  146. package/dist/tools/cinemachine-set-noise.js.map +1 -0
  147. package/dist/tools/cinemachine-set-targets.d.ts +2 -0
  148. package/dist/tools/cinemachine-set-targets.js +30 -0
  149. package/dist/tools/cinemachine-set-targets.js.map +1 -0
  150. package/dist/tools/console-log.js +2 -2
  151. package/dist/tools/console-log.js.map +1 -1
  152. package/dist/tools/constraint-add.d.ts +2 -0
  153. package/dist/tools/constraint-add.js +85 -0
  154. package/dist/tools/constraint-add.js.map +1 -0
  155. package/dist/tools/dependencies.d.ts +2 -0
  156. package/dist/tools/dependencies.js +76 -0
  157. package/dist/tools/dependencies.js.map +1 -0
  158. package/dist/tools/editor-add-tag.js +2 -3
  159. package/dist/tools/editor-add-tag.js.map +1 -1
  160. package/dist/tools/editor-clear-history.d.ts +2 -0
  161. package/dist/tools/editor-clear-history.js +25 -0
  162. package/dist/tools/editor-clear-history.js.map +1 -0
  163. package/dist/tools/editor-get-layers.js +3 -3
  164. package/dist/tools/editor-get-layers.js.map +1 -1
  165. package/dist/tools/editor-get-tags.js +2 -2
  166. package/dist/tools/editor-get-tags.js.map +1 -1
  167. package/dist/tools/editor-redo.js +2 -3
  168. package/dist/tools/editor-redo.js.map +1 -1
  169. package/dist/tools/editor-undo-history.d.ts +2 -0
  170. package/dist/tools/editor-undo-history.js +21 -0
  171. package/dist/tools/editor-undo-history.js.map +1 -0
  172. package/dist/tools/editor-undo.js +3 -3
  173. package/dist/tools/editor-undo.js.map +1 -1
  174. package/dist/tools/editorprefs-delete.d.ts +2 -0
  175. package/dist/tools/editorprefs-delete.js +23 -0
  176. package/dist/tools/editorprefs-delete.js.map +1 -0
  177. package/dist/tools/editorprefs-get.d.ts +2 -0
  178. package/dist/tools/editorprefs-get.js +28 -0
  179. package/dist/tools/editorprefs-get.js.map +1 -0
  180. package/dist/tools/editorprefs-set.d.ts +2 -0
  181. package/dist/tools/editorprefs-set.js +33 -0
  182. package/dist/tools/editorprefs-set.js.map +1 -0
  183. package/dist/tools/find-references.js +24 -4
  184. package/dist/tools/find-references.js.map +1 -1
  185. package/dist/tools/frame-debugger.d.ts +2 -0
  186. package/dist/tools/frame-debugger.js +48 -0
  187. package/dist/tools/frame-debugger.js.map +1 -0
  188. package/dist/tools/gameobject-modify.js +69 -2
  189. package/dist/tools/gameobject-modify.js.map +1 -1
  190. package/dist/tools/gate-budget-estimate.js +2 -1
  191. package/dist/tools/gate-budget-estimate.js.map +1 -1
  192. package/dist/tools/hub-available-releases.d.ts +2 -0
  193. package/dist/tools/hub-available-releases.js +23 -0
  194. package/dist/tools/hub-available-releases.js.map +1 -0
  195. package/dist/tools/hub-get-install-path.d.ts +2 -0
  196. package/dist/tools/hub-get-install-path.js +20 -0
  197. package/dist/tools/hub-get-install-path.js.map +1 -0
  198. package/dist/tools/hub-install-editor.d.ts +2 -0
  199. package/dist/tools/hub-install-editor.js +47 -0
  200. package/dist/tools/hub-install-editor.js.map +1 -0
  201. package/dist/tools/hub-install-modules.d.ts +2 -0
  202. package/dist/tools/hub-install-modules.js +44 -0
  203. package/dist/tools/hub-install-modules.js.map +1 -0
  204. package/dist/tools/hub-list-editors.d.ts +2 -0
  205. package/dist/tools/hub-list-editors.js +25 -0
  206. package/dist/tools/hub-list-editors.js.map +1 -0
  207. package/dist/tools/hub-set-install-path.d.ts +2 -0
  208. package/dist/tools/hub-set-install-path.js +30 -0
  209. package/dist/tools/hub-set-install-path.js.map +1 -0
  210. package/dist/tools/impact-preview.js +2 -2
  211. package/dist/tools/impact-preview.js.map +1 -1
  212. package/dist/tools/index.d.ts +14 -0
  213. package/dist/tools/index.js +534 -24
  214. package/dist/tools/index.js.map +1 -1
  215. package/dist/tools/light-add.d.ts +2 -0
  216. package/dist/tools/light-add.js +73 -0
  217. package/dist/tools/light-add.js.map +1 -0
  218. package/dist/tools/light-modify.d.ts +2 -0
  219. package/dist/tools/light-modify.js +36 -0
  220. package/dist/tools/light-modify.js.map +1 -0
  221. package/dist/tools/light-set.d.ts +2 -0
  222. package/dist/tools/light-set.js +54 -0
  223. package/dist/tools/light-set.js.map +1 -0
  224. package/dist/tools/list-assets-of-type.d.ts +2 -0
  225. package/dist/tools/list-assets-of-type.js +54 -0
  226. package/dist/tools/list-assets-of-type.js.map +1 -0
  227. package/dist/tools/lod-add-level.d.ts +2 -0
  228. package/dist/tools/lod-add-level.js +66 -0
  229. package/dist/tools/lod-add-level.js.map +1 -0
  230. package/dist/tools/lod-group-configure.d.ts +2 -0
  231. package/dist/tools/lod-group-configure.js +64 -0
  232. package/dist/tools/lod-group-configure.js.map +1 -0
  233. package/dist/tools/manage-tools.js +7 -5
  234. package/dist/tools/manage-tools.js.map +1 -1
  235. package/dist/tools/memory-snapshot-capture.d.ts +2 -0
  236. package/dist/tools/memory-snapshot-capture.js +61 -0
  237. package/dist/tools/memory-snapshot-capture.js.map +1 -0
  238. package/dist/tools/mutation-explain.js +2 -2
  239. package/dist/tools/mutation-explain.js.map +1 -1
  240. package/dist/tools/playerprefs-delete.d.ts +2 -0
  241. package/dist/tools/playerprefs-delete.js +24 -0
  242. package/dist/tools/playerprefs-delete.js.map +1 -0
  243. package/dist/tools/playerprefs-get.d.ts +2 -0
  244. package/dist/tools/playerprefs-get.js +28 -0
  245. package/dist/tools/playerprefs-get.js.map +1 -0
  246. package/dist/tools/playerprefs-set.d.ts +2 -0
  247. package/dist/tools/playerprefs-set.js +37 -0
  248. package/dist/tools/playerprefs-set.js.map +1 -0
  249. package/dist/tools/profiler-capture-frame.d.ts +2 -0
  250. package/dist/tools/profiler-capture-frame.js +75 -0
  251. package/dist/tools/profiler-capture-frame.js.map +1 -0
  252. package/dist/tools/profiler-clear-data.js +1 -2
  253. package/dist/tools/profiler-clear-data.js.map +1 -1
  254. package/dist/tools/profiler-enable-module.js +4 -5
  255. package/dist/tools/profiler-enable-module.js.map +1 -1
  256. package/dist/tools/profiler-get-status.js +5 -6
  257. package/dist/tools/profiler-get-status.js.map +1 -1
  258. package/dist/tools/profiler-load-data.js +4 -5
  259. package/dist/tools/profiler-load-data.js.map +1 -1
  260. package/dist/tools/profiler-save-data.js +3 -3
  261. package/dist/tools/profiler-save-data.js.map +1 -1
  262. package/dist/tools/profiler-set-config.js +5 -5
  263. package/dist/tools/profiler-set-config.js.map +1 -1
  264. package/dist/tools/profiler-start.js +4 -4
  265. package/dist/tools/profiler-start.js.map +1 -1
  266. package/dist/tools/profiler-stop.js +2 -3
  267. package/dist/tools/profiler-stop.js.map +1 -1
  268. package/dist/tools/read-asset.js +21 -3
  269. package/dist/tools/read-asset.js.map +1 -1
  270. package/dist/tools/reflection-probe-bake.d.ts +2 -0
  271. package/dist/tools/reflection-probe-bake.js +47 -0
  272. package/dist/tools/reflection-probe-bake.js.map +1 -0
  273. package/dist/tools/reflection-probe-get.d.ts +2 -0
  274. package/dist/tools/reflection-probe-get.js +19 -0
  275. package/dist/tools/reflection-probe-get.js.map +1 -0
  276. package/dist/tools/reimport-package.d.ts +2 -0
  277. package/dist/tools/reimport-package.js +53 -0
  278. package/dist/tools/reimport-package.js.map +1 -0
  279. package/dist/tools/scan-paths.js +19 -0
  280. package/dist/tools/scan-paths.js.map +1 -1
  281. package/dist/tools/scene-focus.js +1 -1
  282. package/dist/tools/scene-focus.js.map +1 -1
  283. package/dist/tools/scene-get-data.js +31 -13
  284. package/dist/tools/scene-get-data.js.map +1 -1
  285. package/dist/tools/scene-get-dirty-summary.js +1 -1
  286. package/dist/tools/scene-get-dirty-summary.js.map +1 -1
  287. package/dist/tools/sceneview-get-camera.d.ts +2 -0
  288. package/dist/tools/sceneview-get-camera.js +16 -0
  289. package/dist/tools/sceneview-get-camera.js.map +1 -0
  290. package/dist/tools/sceneview-set-camera.d.ts +2 -0
  291. package/dist/tools/sceneview-set-camera.js +58 -0
  292. package/dist/tools/sceneview-set-camera.js.map +1 -0
  293. package/dist/tools/script-write.js +2 -2
  294. package/dist/tools/script-write.js.map +1 -1
  295. package/dist/tools/scriptableobject-create.d.ts +2 -0
  296. package/dist/tools/scriptableobject-create.js +86 -0
  297. package/dist/tools/scriptableobject-create.js.map +1 -0
  298. package/dist/tools/search-assets.js +20 -3
  299. package/dist/tools/search-assets.js.map +1 -1
  300. package/dist/tools/settings-get-lighting.js +3 -4
  301. package/dist/tools/settings-get-lighting.js.map +1 -1
  302. package/dist/tools/settings-get-player.js +2 -2
  303. package/dist/tools/settings-get-player.js.map +1 -1
  304. package/dist/tools/settings-get-quality.js +1 -2
  305. package/dist/tools/settings-get-quality.js.map +1 -1
  306. package/dist/tools/settings-get-render-pipeline.d.ts +2 -0
  307. package/dist/tools/settings-get-render-pipeline.js +19 -0
  308. package/dist/tools/settings-get-render-pipeline.js.map +1 -0
  309. package/dist/tools/settings-get-time.d.ts +2 -0
  310. package/dist/tools/settings-get-time.js +18 -0
  311. package/dist/tools/settings-get-time.js.map +1 -0
  312. package/dist/tools/settings-set-lighting.js +5 -5
  313. package/dist/tools/settings-set-lighting.js.map +1 -1
  314. package/dist/tools/settings-set-physics.js +2 -2
  315. package/dist/tools/settings-set-physics.js.map +1 -1
  316. package/dist/tools/settings-set-player.js +2 -2
  317. package/dist/tools/settings-set-player.js.map +1 -1
  318. package/dist/tools/settings-set-quality-level.d.ts +2 -0
  319. package/dist/tools/settings-set-quality-level.js +44 -0
  320. package/dist/tools/settings-set-quality-level.js.map +1 -0
  321. package/dist/tools/settings-set-quality.js +2 -2
  322. package/dist/tools/settings-set-quality.js.map +1 -1
  323. package/dist/tools/settings-set-time.d.ts +2 -0
  324. package/dist/tools/settings-set-time.js +53 -0
  325. package/dist/tools/settings-set-time.js.map +1 -0
  326. package/dist/tools/shader-get-data.js +3 -3
  327. package/dist/tools/shader-get-data.js.map +1 -1
  328. package/dist/tools/shader-graph-create.d.ts +2 -0
  329. package/dist/tools/shader-graph-create.js +40 -0
  330. package/dist/tools/shader-graph-create.js.map +1 -0
  331. package/dist/tools/shader-graph-node-add.d.ts +2 -0
  332. package/dist/tools/shader-graph-node-add.js +50 -0
  333. package/dist/tools/shader-graph-node-add.js.map +1 -0
  334. package/dist/tools/shader-graph-node-connect.d.ts +2 -0
  335. package/dist/tools/shader-graph-node-connect.js +60 -0
  336. package/dist/tools/shader-graph-node-connect.js.map +1 -0
  337. package/dist/tools/shader-graph-open.d.ts +2 -0
  338. package/dist/tools/shader-graph-open.js +29 -0
  339. package/dist/tools/shader-graph-open.js.map +1 -0
  340. package/dist/tools/skybox-get.d.ts +2 -0
  341. package/dist/tools/skybox-get.js +13 -0
  342. package/dist/tools/skybox-get.js.map +1 -0
  343. package/dist/tools/skybox-set.d.ts +2 -0
  344. package/dist/tools/skybox-set.js +34 -0
  345. package/dist/tools/skybox-set.js.map +1 -0
  346. package/dist/tools/spriteatlas-add-packable.d.ts +2 -0
  347. package/dist/tools/spriteatlas-add-packable.js +40 -0
  348. package/dist/tools/spriteatlas-add-packable.js.map +1 -0
  349. package/dist/tools/spriteatlas-create.d.ts +2 -0
  350. package/dist/tools/spriteatlas-create.js +41 -0
  351. package/dist/tools/spriteatlas-create.js.map +1 -0
  352. package/dist/tools/spriteatlas-delete.d.ts +2 -0
  353. package/dist/tools/spriteatlas-delete.js +32 -0
  354. package/dist/tools/spriteatlas-delete.js.map +1 -0
  355. package/dist/tools/spriteatlas-get.d.ts +2 -0
  356. package/dist/tools/spriteatlas-get.js +23 -0
  357. package/dist/tools/spriteatlas-get.js.map +1 -0
  358. package/dist/tools/spriteatlas-list.d.ts +2 -0
  359. package/dist/tools/spriteatlas-list.js +21 -0
  360. package/dist/tools/spriteatlas-list.js.map +1 -0
  361. package/dist/tools/spriteatlas-modify.d.ts +2 -0
  362. package/dist/tools/spriteatlas-modify.js +55 -0
  363. package/dist/tools/spriteatlas-modify.js.map +1 -0
  364. package/dist/tools/spriteatlas-remove-packable.d.ts +2 -0
  365. package/dist/tools/spriteatlas-remove-packable.js +39 -0
  366. package/dist/tools/spriteatlas-remove-packable.js.map +1 -0
  367. package/dist/tools/terrain-create.d.ts +2 -0
  368. package/dist/tools/terrain-create.js +73 -0
  369. package/dist/tools/terrain-create.js.map +1 -0
  370. package/dist/tools/terrain-paint-layer.d.ts +2 -0
  371. package/dist/tools/terrain-paint-layer.js +85 -0
  372. package/dist/tools/terrain-paint-layer.js.map +1 -0
  373. package/dist/tools/terrain-place-trees.d.ts +2 -0
  374. package/dist/tools/terrain-place-trees.js +92 -0
  375. package/dist/tools/terrain-place-trees.js.map +1 -0
  376. package/dist/tools/terrain-set-heights.d.ts +2 -0
  377. package/dist/tools/terrain-set-heights.js +68 -0
  378. package/dist/tools/terrain-set-heights.js.map +1 -0
  379. package/dist/tools/terrain-set-neighbors.d.ts +2 -0
  380. package/dist/tools/terrain-set-neighbors.js +65 -0
  381. package/dist/tools/terrain-set-neighbors.js.map +1 -0
  382. package/dist/tools/texture-get-importer.d.ts +2 -0
  383. package/dist/tools/texture-get-importer.js +25 -0
  384. package/dist/tools/texture-get-importer.js.map +1 -0
  385. package/dist/tools/texture-get.d.ts +2 -0
  386. package/dist/tools/texture-get.js +23 -0
  387. package/dist/tools/texture-get.js.map +1 -0
  388. package/dist/tools/texture-reimport.d.ts +2 -0
  389. package/dist/tools/texture-reimport.js +33 -0
  390. package/dist/tools/texture-reimport.js.map +1 -0
  391. package/dist/tools/texture-set-import.d.ts +2 -0
  392. package/dist/tools/texture-set-import.js +52 -0
  393. package/dist/tools/texture-set-import.js.map +1 -0
  394. package/dist/tools/tilemap-box-fill.d.ts +2 -0
  395. package/dist/tools/tilemap-box-fill.js +32 -0
  396. package/dist/tools/tilemap-box-fill.js.map +1 -0
  397. package/dist/tools/tilemap-create-rule-tile.d.ts +2 -0
  398. package/dist/tools/tilemap-create-rule-tile.js +39 -0
  399. package/dist/tools/tilemap-create-rule-tile.js.map +1 -0
  400. package/dist/tools/tilemap-create-tile-asset.d.ts +2 -0
  401. package/dist/tools/tilemap-create-tile-asset.js +35 -0
  402. package/dist/tools/tilemap-create-tile-asset.js.map +1 -0
  403. package/dist/tools/tilemap-create.d.ts +2 -0
  404. package/dist/tools/tilemap-create.js +32 -0
  405. package/dist/tools/tilemap-create.js.map +1 -0
  406. package/dist/tools/tilemap-set-tile.d.ts +2 -0
  407. package/dist/tools/tilemap-set-tile.js +33 -0
  408. package/dist/tools/tilemap-set-tile.js.map +1 -0
  409. package/dist/tools/timeline-clip-add.d.ts +2 -0
  410. package/dist/tools/timeline-clip-add.js +43 -0
  411. package/dist/tools/timeline-clip-add.js.map +1 -0
  412. package/dist/tools/timeline-create.d.ts +2 -0
  413. package/dist/tools/timeline-create.js +32 -0
  414. package/dist/tools/timeline-create.js.map +1 -0
  415. package/dist/tools/timeline-director-bind.d.ts +2 -0
  416. package/dist/tools/timeline-director-bind.js +34 -0
  417. package/dist/tools/timeline-director-bind.js.map +1 -0
  418. package/dist/tools/timeline-modify.d.ts +2 -0
  419. package/dist/tools/timeline-modify.js +44 -0
  420. package/dist/tools/timeline-modify.js.map +1 -0
  421. package/dist/tools/timeline-track-add.d.ts +2 -0
  422. package/dist/tools/timeline-track-add.js +37 -0
  423. package/dist/tools/timeline-track-add.js.map +1 -0
  424. package/dist/tools/ui-canvas-add.d.ts +2 -0
  425. package/dist/tools/ui-canvas-add.js +66 -0
  426. package/dist/tools/ui-canvas-add.js.map +1 -0
  427. package/dist/tools/ui-element-add.d.ts +2 -0
  428. package/dist/tools/ui-element-add.js +65 -0
  429. package/dist/tools/ui-element-add.js.map +1 -0
  430. package/dist/tools/ui-element-modify.d.ts +2 -0
  431. package/dist/tools/ui-element-modify.js +59 -0
  432. package/dist/tools/ui-element-modify.js.map +1 -0
  433. package/dist/tools/ui-layout-group-add.d.ts +2 -0
  434. package/dist/tools/ui-layout-group-add.js +80 -0
  435. package/dist/tools/ui-layout-group-add.js.map +1 -0
  436. package/dist/tools/validate-edit.js +22 -1
  437. package/dist/tools/validate-edit.js.map +1 -1
  438. package/dist/tools/vfx-block-edit.d.ts +2 -0
  439. package/dist/tools/vfx-block-edit.js +51 -0
  440. package/dist/tools/vfx-block-edit.js.map +1 -0
  441. package/dist/tools/vfx-list.d.ts +2 -0
  442. package/dist/tools/vfx-list.js +31 -0
  443. package/dist/tools/vfx-list.js.map +1 -0
  444. package/dist/tools/vfx-open.d.ts +2 -0
  445. package/dist/tools/vfx-open.js +29 -0
  446. package/dist/tools/vfx-open.js.map +1 -0
  447. package/package.json +1 -1
@@ -0,0 +1,185 @@
1
+ // M22 Plan 1 / T22.1.5 — Cost hints for the heavy tools' output profiles.
2
+ //
3
+ // Agents that reason about prompt cost before choosing an output profile need
4
+ // a machine-readable signal of *roughly* how expensive each profile is per
5
+ // tool. This module is that signal: a per-tool, per-profile cost band plus a
6
+ // short recommended-tool-chain narrative.
7
+ //
8
+ // The bands are deliberately coarse (`small` | `medium` | `large`) and framed
9
+ // as approximate token ranges. They are not measurements — they are planning
10
+ // hints so an agent can pick `compact` first, expand on demand, and avoid
11
+ // pulling a 100 KB `full` dump into context when it only needed a count.
12
+ //
13
+ // This is a pure data module (no I/O, no cross-file runtime imports) so it
14
+ // loads cleanly under `node --experimental-strip-types` in tests.
15
+ /**
16
+ * Approximate token range for each cost band.
17
+ *
18
+ * The ranges are intentionally wide — they describe the *typical* payload a
19
+ * profile produces for that tool on a representative asset, not a hard bound.
20
+ * Real payloads can fall outside the range on very large or very small inputs;
21
+ * `page_size` is the mechanism that enforces an actual cap.
22
+ */
23
+ export const COST_BAND_TOKENS = {
24
+ small: { min: 0, max: 800 },
25
+ medium: { min: 800, max: 4000 },
26
+ large: { min: 4000, max: 0 }, // 0 max = unbounded (use page_size)
27
+ };
28
+ /**
29
+ * Format a cost band into a human-readable approximate-token string.
30
+ */
31
+ export function describeBand(band) {
32
+ switch (band) {
33
+ case "small":
34
+ return "~0.3–0.8k tokens";
35
+ case "medium":
36
+ return "~1–4k tokens";
37
+ case "large":
38
+ return "large — unbounded; set page_size to bound it";
39
+ }
40
+ }
41
+ // ---------------------------------------------------------------------------
42
+ // Per-tool cost hints.
43
+ //
44
+ // The table mirrors the heavy-tool roster in `docs/api/mcp-tools.md`
45
+ // §"Output profiles + uniform paging". Keep the two in sync: when a tool is
46
+ // added to / removed from the profile-aware surface, update both this table
47
+ // and the doc in the same task.
48
+ // ---------------------------------------------------------------------------
49
+ export const TOOL_COST_HINTS = [
50
+ {
51
+ tool: "unity_open_mcp_read_asset",
52
+ profileControls: "TREE folding (compact = CMP codes + omission counts; full = verbose tree).",
53
+ pageSizePages: "TREE rows.",
54
+ profiles: {
55
+ compact: { band: "small", approxTokens: describeBand("small") },
56
+ balanced: { band: "medium", approxTokens: describeBand("medium") },
57
+ full: { band: "large", approxTokens: describeBand("large") },
58
+ },
59
+ },
60
+ {
61
+ tool: "unity_open_mcp_search_assets",
62
+ profileControls: "per-file object cap (compact tight; balanced/full larger).",
63
+ pageSizePages: "result-file matches.",
64
+ profiles: {
65
+ compact: { band: "small", approxTokens: describeBand("small") },
66
+ balanced: { band: "medium", approxTokens: describeBand("medium") },
67
+ full: { band: "large", approxTokens: describeBand("large") },
68
+ },
69
+ },
70
+ {
71
+ tool: "unity_open_mcp_scene_get_data",
72
+ profileControls: "scene overview vs nested children vs transforms (depth / per-node verbosity).",
73
+ pageSizePages: "flattened node stream.",
74
+ profiles: {
75
+ compact: { band: "small", approxTokens: describeBand("small") },
76
+ balanced: { band: "medium", approxTokens: describeBand("medium") },
77
+ full: { band: "large", approxTokens: describeBand("large") },
78
+ },
79
+ },
80
+ {
81
+ tool: "unity_open_mcp_find_references",
82
+ profileControls: "counts/groupings (compact) vs per-asset list (balanced) vs field locations (full).",
83
+ pageSizePages: "referencing-assets list.",
84
+ profiles: {
85
+ compact: { band: "small", approxTokens: describeBand("small") },
86
+ balanced: { band: "medium", approxTokens: describeBand("medium") },
87
+ full: { band: "large", approxTokens: describeBand("large") },
88
+ },
89
+ },
90
+ {
91
+ tool: "unity_open_mcp_validate_edit",
92
+ profileControls: "counts by severity (compact) vs full issues list (balanced/full).",
93
+ pageSizePages: "issues list.",
94
+ profiles: {
95
+ compact: { band: "small", approxTokens: describeBand("small") },
96
+ balanced: { band: "medium", approxTokens: describeBand("medium") },
97
+ full: { band: "large", approxTokens: describeBand("large") },
98
+ },
99
+ },
100
+ {
101
+ tool: "unity_open_mcp_scan_paths",
102
+ profileControls: "counts by severity (compact) vs full issues list (balanced/full).",
103
+ pageSizePages: "issues list.",
104
+ profiles: {
105
+ compact: { band: "small", approxTokens: describeBand("small") },
106
+ balanced: { band: "medium", approxTokens: describeBand("medium") },
107
+ full: { band: "large", approxTokens: describeBand("large") },
108
+ },
109
+ },
110
+ ];
111
+ /**
112
+ * The default recommended page sizes per tool. These are starting points, not
113
+ * hard caps — an agent can choose a different `page_size`. Surfaced as part of
114
+ * the cost-hints block so an agent learns a sensible starting page size
115
+ * alongside the cost band.
116
+ */
117
+ export const RECOMMENDED_PAGE_SIZE = {
118
+ unity_open_mcp_read_asset: 40,
119
+ unity_open_mcp_search_assets: 25,
120
+ unity_open_mcp_scene_get_data: 50,
121
+ unity_open_mcp_find_references: 50,
122
+ unity_open_mcp_validate_edit: 25,
123
+ unity_open_mcp_scan_paths: 25,
124
+ };
125
+ export const RECOMMENDED_TOOL_CHAINS = [
126
+ {
127
+ name: "discover",
128
+ task: "Learn the available surface before assuming tool names or schemas.",
129
+ steps: [
130
+ "unity_open_mcp_capabilities",
131
+ "unity_open_mcp_manage_tools(action=\"list_groups\")",
132
+ "unity_open_mcp_ping",
133
+ ],
134
+ },
135
+ {
136
+ name: "asset-inspect",
137
+ task: "Read an asset cheaply, then drill into the part you need.",
138
+ steps: [
139
+ "unity_open_mcp_read_asset (default compact) — get the folded overview + omission counts",
140
+ "unity_open_mcp_read_asset(component=\"...\" or path=\"...\") — drill down without re-fetching",
141
+ "only escalate to profile=\"full\" when the folded view is insufficient",
142
+ ],
143
+ },
144
+ {
145
+ name: "find-references",
146
+ task: "Find what references an asset without flooding context.",
147
+ steps: [
148
+ "unity_open_mcp_find_references (default compact) — counts + folder groupings",
149
+ "if a folder is interesting, page its assets with page_size + cursor",
150
+ "escalate to profile=\"verbose\" only for the specific field locations you need",
151
+ ],
152
+ },
153
+ {
154
+ name: "mutate-then-verify",
155
+ task: "Mutate scoped to paths_hint, then read the gate delta inline.",
156
+ steps: [
157
+ "mutate with gate=\"enforce\" + non-empty paths_hint",
158
+ "read gate.delta + agentNextSteps from the response (no separate read_console needed)",
159
+ "on gate failure, prefer unity_open_mcp_apply_fix with dry_run: true first",
160
+ ],
161
+ },
162
+ {
163
+ name: "verify-api-before-coding",
164
+ task: "Verify Unity API details before writing C# — LLM training data frequently contains incorrect or outdated Unity APIs.",
165
+ steps: [
166
+ "unity_open_mcp_search_assets — find actual shaders / materials / scripts in the project",
167
+ "unity_open_mcp_find_members — reflect the real type + member signatures",
168
+ "unity_open_mcp_type_schema — drill into fields/properties on a type",
169
+ "only then unity_open_mcp_execute_csharp / invoke_method with the verified API",
170
+ ],
171
+ },
172
+ ];
173
+ export function buildCostHints() {
174
+ return {
175
+ tools: TOOL_COST_HINTS,
176
+ recommendedPageSize: RECOMMENDED_PAGE_SIZE,
177
+ recommendedToolChains: RECOMMENDED_TOOL_CHAINS,
178
+ guidance: "Start with the default compact profile on every heavy tool, then " +
179
+ "expand (profile=\"balanced\" / \"full\") or drill down " +
180
+ "(component / path / id flags) only for the slice you need. Set " +
181
+ "page_size to bound any profile; follow pagination.next_cursor to " +
182
+ "resume. compact is the documented default for all heavy tools.",
183
+ };
184
+ }
185
+ //# sourceMappingURL=cost-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-hints.js","sourceRoot":"","sources":["../../src/capabilities/cost-hints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export type LifecycleClass = "none" | "compile-reload" | "modal-dialog" | "scene-dirty" | "process-stale";
2
+ export interface ToolLifecycle {
3
+ /** Lifecycle class the tool declares. */
4
+ class: LifecycleClass;
5
+ /**
6
+ * Optional short agent-facing constraint or secondary recovery concern.
7
+ * Examples: `compile_check` notes its batch-only lock; `build_start` notes
8
+ * the secondary scene-dirty concern; `package_add` notes the rare upgrade
9
+ * modal. Absent when the class is self-describing.
10
+ */
11
+ note?: string;
12
+ }
13
+ export declare const TOOL_LIFECYCLE: Record<string, ToolLifecycle>;
14
+ /**
15
+ * Resolve the lifecycle declaration for a tool. Unlisted tools (the read-only
16
+ * majority) default to `{ class: "none" }` — the safe recovery class that
17
+ * promises no settle wait, no dirty guard, and no stale-heartbeat risk.
18
+ */
19
+ export declare function lifecycleFor(toolName: string): ToolLifecycle;
20
+ export interface LifecycleTaxonomyEntry {
21
+ /** Lifecycle class id (matches `ToolLifecycle.class`). */
22
+ class: LifecycleClass;
23
+ /** One-line description of what the tool does to the editor. */
24
+ meaning: string;
25
+ /** What the bridge does for this class (settle / guard / heartbeat). */
26
+ bridge: string;
27
+ /** How an agent should recover when a call of this class fails / stalls. */
28
+ recovery: string;
29
+ }
30
+ export declare const LIFECYCLE_TAXONOMY: LifecycleTaxonomyEntry[];
31
+ export interface LifecycleBlock {
32
+ /** The 5-class taxonomy (meaning / bridge behaviour / recovery per class). */
33
+ classes: LifecycleTaxonomyEntry[];
34
+ /**
35
+ * One-line guidance restating how to read the per-tool `lifecycle` field.
36
+ * Kept here so the block is self-describing without an agent reading the doc.
37
+ */
38
+ guidance: string;
39
+ }
40
+ export declare function buildLifecycle(): LifecycleBlock;
@@ -0,0 +1,353 @@
1
+ // Lifecycle policy taxonomy + per-tool declarations.
2
+ //
3
+ // Every tool is classified into one of five lifecycle classes describing the
4
+ // *recovery* concern the agent must reason about when the call fails or the
5
+ // bridge becomes unresponsive: read-only (none), a domain reload
6
+ // (compile-reload), an OS modal (modal-dialog), a scene/prefab mutation that
7
+ // needs the gate + paths_hint (scene-dirty), or a long-running op where the
8
+ // bridge may stall (process-stale). The class is exposed per tool via
9
+ // `capabilities.tools[].lifecycle` so an agent can pick a recovery strategy
10
+ // before it calls, and the full taxonomy is attached as
11
+ // `capabilities.lifecycleBlock`.
12
+ //
13
+ // IMPORTANT — two distinct axes, intentionally not conflated:
14
+ // - This module is the agent-facing RECOVERY axis (5 classes). It is the
15
+ // source of truth for what an agent sees in `capabilities`.
16
+ // - The bridge carries a separate internal SETTLE-TIMING axis
17
+ // (None / EditorSettle / RestartThenSettle / CustomConfirmation) that
18
+ // drives how long the dispatcher blocks before returning and whether the
19
+ // active-scene dirty guard preflights. Agents do not see that enum
20
+ // directly; it is an internal mechanism. The two axes agree because this
21
+ // table is derived from the same per-tool knowledge, but they are not
22
+ // renamed copies of each other — the recovery class is coarser and
23
+ // oriented toward "what do I do when this goes wrong."
24
+ //
25
+ // This is a pure data module (no I/O, no cross-file runtime imports) so it
26
+ // loads cleanly under `node --experimental-strip-types` in tests.
27
+ // ---------------------------------------------------------------------------
28
+ // Per-tool declarations.
29
+ //
30
+ // Only tools whose class is NOT the safe default (`none`) are listed here —
31
+ // `lifecycleFor()` falls back to `{ class: "none" }` for any unlisted tool, so
32
+ // a read-only tool added without an entry surfaces correctly without an edit.
33
+ // `compile_check` is listed even though it is read-only re: game state because
34
+ // its lifecycle class is `compile-reload` (it spawns a recompiling Unity) and
35
+ // it carries the batch-only lock note agents must see.
36
+ //
37
+ // Keep this table in sync with the bridge's internal settle-timing map
38
+ // (`packages/bridge/Editor/Bridge/ToolLifecycle.cs`) and the lifecycle doc in
39
+ // `docs/api/mcp-tools.md` when a tool is added/removed/reclassified.
40
+ // ---------------------------------------------------------------------------
41
+ export const TOOL_LIFECYCLE = {
42
+ // ----- compile-reload: triggers or observes a domain reload --------------
43
+ // The bridge blocks up to 60s for the compile to settle and the dirty guard
44
+ // preflights these. `compile_check` is the batch-only observer: it spawns a
45
+ // fresh headless Unity and cannot share the project with a live Editor.
46
+ "unity_open_mcp_execute_csharp": { class: "compile-reload" },
47
+ "unity_open_mcp_invoke_method": { class: "compile-reload" },
48
+ "unity_open_mcp_execute_menu": { class: "compile-reload" },
49
+ "unity_open_mcp_asmdef_create": { class: "compile-reload" },
50
+ "unity_open_mcp_asmdef_modify": { class: "compile-reload" },
51
+ "unity_open_mcp_script_write": { class: "compile-reload" },
52
+ "unity_open_mcp_script_delete": { class: "compile-reload" },
53
+ "unity_open_mcp_build_set_target": { class: "compile-reload" },
54
+ "unity_open_mcp_build_set_defines": { class: "compile-reload" },
55
+ "unity_open_mcp_settings_set_player": {
56
+ class: "compile-reload",
57
+ note: "Flipping scripting backend / input handler knobs can force a recompile " +
58
+ "in addition to the settings write.",
59
+ },
60
+ // scene_open in single mode can lose unsaved changes in currently-open
61
+ // scenes; the dirty guard preflights it (same recovery class as a reload).
62
+ "unity_open_mcp_scene_open": { class: "compile-reload" },
63
+ // compile_check is read-only re: game state but its lifecycle IS a domain
64
+ // reload: it spawns a recompiling Unity. Batch-only by design — see note.
65
+ "unity_open_mcp_compile_check": {
66
+ class: "compile-reload",
67
+ note: "Batch-only by design — spawns a fresh headless Unity that recompiles " +
68
+ "from scratch. Cannot run while a live Editor holds the project lock; " +
69
+ "expect `editor_instance_locked` and do not retry blindly (close the " +
70
+ "live Editor, or verify compile state via the live bridge instead). " +
71
+ "Edits under a local `packages/` source live outside Unity's Assets/ " +
72
+ "watch root, so assets_refresh / RequestScriptCompilation are not " +
73
+ "reliable for forcing a rebuild in a long-running live session — " +
74
+ "verify via Library/ScriptAssemblies/*.dll mtime instead.",
75
+ },
76
+ // ----- modal-dialog: may raise an OS modal -------------------------------
77
+ // Plan 1 declares the class; full detect/classify/dismiss/escalate policy
78
+ // ships separately. The note points at the secondary concern.
79
+ "unity_open_mcp_build_start": {
80
+ class: "modal-dialog",
81
+ note: "BuildPipeline.BuildPlayer may raise an OS modal (build settings, " +
82
+ "platform mismatch). Also a scene-dirty mutation — the gate + " +
83
+ "paths_hint cover the mutate side; the modal is the harder recovery.",
84
+ },
85
+ "unity_open_mcp_package_add": {
86
+ class: "compile-reload",
87
+ note: "Rewrites Packages/manifest.json + triggers UPM resolution which can " +
88
+ "force a domain reload. A first import of a major package version can " +
89
+ "additionally raise a project-upgrade modal (rare).",
90
+ },
91
+ "unity_open_mcp_package_remove": {
92
+ class: "compile-reload",
93
+ note: "Rewrites Packages/manifest.json + triggers UPM resolution which can " +
94
+ "force a domain reload.",
95
+ },
96
+ "unity_open_mcp_reimport_package": {
97
+ class: "compile-reload",
98
+ note: "Force-reimports a local file: package's source and nudges a script " +
99
+ "recompile (RequestScriptCompilation); a domain reload can follow. The " +
100
+ "package id is the scope (source lives outside Assets/, so the gate has " +
101
+ "no Assets/ path to validate — paths_hint defaults to " +
102
+ "Packages/<package_id>). The response reports dllMtimeBefore/After so " +
103
+ "an agent can detect a no-op recompile and fall back to a standalone " +
104
+ "Roslyn compile (documented in agentNextSteps on a no-op).",
105
+ },
106
+ // ----- process-stale: long-running / async; bridge may stall -------------
107
+ // The heartbeat may stop advancing during these; an agent should expect a
108
+ // stale-heartbeat signature and not interpret it as a crash without the
109
+ // PID-liveness check.
110
+ "unity_senses_run_tests": {
111
+ class: "process-stale",
112
+ note: "Async — returns immediately and the result is delivered via an external " +
113
+ "completion signal you poll. A long test run can stall the heartbeat; " +
114
+ "treat stale-heartbeat + live-PID as 'still running', not crashed.",
115
+ },
116
+ "unity_open_mcp_reflection_probe_bake": {
117
+ class: "process-stale",
118
+ note: "Reflection-probe bake can take seconds to minutes; the bridge blocks " +
119
+ "until it finishes. A stale heartbeat during a bake is expected.",
120
+ },
121
+ "unity_senses_memory_snapshot_capture": {
122
+ class: "process-stale",
123
+ note: "Callback-based capture; the bridge blocks until the snapshot file is " +
124
+ "written. Large captures can take seconds and stall the heartbeat.",
125
+ },
126
+ // ----- scene-dirty: mutates scene/prefab/hierarchy; gate + paths_hint -----
127
+ // The bridge blocks up to 5s for asset refresh / serialization. No domain
128
+ // reload. These are the bulk of the typed mutators and domain mutators.
129
+ "unity_open_mcp_apply_fix": { class: "scene-dirty" },
130
+ "unity_open_mcp_reserialize": { class: "scene-dirty" },
131
+ // Asset CRUD.
132
+ "unity_open_mcp_assets_create_folder": { class: "scene-dirty" },
133
+ "unity_open_mcp_assets_copy": { class: "scene-dirty" },
134
+ "unity_open_mcp_assets_move": { class: "scene-dirty" },
135
+ "unity_open_mcp_assets_delete": { class: "scene-dirty" },
136
+ "unity_open_mcp_assets_refresh": { class: "scene-dirty" },
137
+ // Material mutators.
138
+ "unity_open_mcp_material_create": { class: "scene-dirty" },
139
+ "unity_open_mcp_material_set_property": { class: "scene-dirty" },
140
+ "unity_open_mcp_material_set_keyword": { class: "scene-dirty" },
141
+ "unity_open_mcp_material_set_shader": { class: "scene-dirty" },
142
+ // Prefab mutators (open/close are editor-stage state, still asset-scoped).
143
+ "unity_open_mcp_prefab_instantiate": { class: "scene-dirty" },
144
+ "unity_open_mcp_prefab_create": { class: "scene-dirty" },
145
+ "unity_open_mcp_prefab_open": { class: "scene-dirty" },
146
+ "unity_open_mcp_prefab_close": { class: "scene-dirty" },
147
+ "unity_open_mcp_prefab_save": { class: "scene-dirty" },
148
+ "unity_open_mcp_prefab_apply": { class: "scene-dirty" },
149
+ "unity_open_mcp_prefab_revert": { class: "scene-dirty" },
150
+ "unity_open_mcp_prefab_unpack": { class: "scene-dirty" },
151
+ // GameObject + component mutators.
152
+ "unity_open_mcp_gameobject_create": { class: "scene-dirty" },
153
+ "unity_open_mcp_gameobject_destroy": { class: "scene-dirty" },
154
+ "unity_open_mcp_gameobject_duplicate": { class: "scene-dirty" },
155
+ "unity_open_mcp_gameobject_modify": { class: "scene-dirty" },
156
+ "unity_open_mcp_gameobject_set_parent": { class: "scene-dirty" },
157
+ "unity_open_mcp_component_add": { class: "scene-dirty" },
158
+ "unity_open_mcp_component_destroy": { class: "scene-dirty" },
159
+ "unity_open_mcp_component_modify": { class: "scene-dirty" },
160
+ // Object/script mutators.
161
+ "unity_open_mcp_object_modify": { class: "scene-dirty" },
162
+ "unity_open_mcp_scriptableobject_create": { class: "scene-dirty" },
163
+ // Scene mutators (non-open; open is compile-reload above).
164
+ "unity_open_mcp_scene_create": { class: "scene-dirty" },
165
+ "unity_open_mcp_scene_save": { class: "scene-dirty" },
166
+ "unity_open_mcp_scene_unload": { class: "scene-dirty" },
167
+ "unity_open_mcp_scene_set_active": { class: "scene-dirty" },
168
+ "unity_open_mcp_scene_focus": { class: "scene-dirty" },
169
+ "unity_open_mcp_sceneview_set_camera": { class: "scene-dirty" },
170
+ // TagManager + console + selection + editor state mutators.
171
+ "unity_open_mcp_editor_add_tag": { class: "scene-dirty" },
172
+ "unity_open_mcp_editor_add_layer": { class: "scene-dirty" },
173
+ "unity_open_mcp_console_clear": { class: "scene-dirty" },
174
+ "unity_open_mcp_console_log": { class: "scene-dirty" },
175
+ "unity_open_mcp_editor_set_state": {
176
+ class: "scene-dirty",
177
+ note: "Entering play mode can trigger Unity's native save modal; the bridge " +
178
+ "runs its own inline dirty guard for this tool.",
179
+ },
180
+ "unity_open_mcp_selection_set": { class: "scene-dirty" },
181
+ "unity_open_mcp_editor_undo": { class: "scene-dirty" },
182
+ "unity_open_mcp_editor_redo": { class: "scene-dirty" },
183
+ "unity_open_mcp_editor_clear_history": { class: "scene-dirty" },
184
+ // Profiler snapshot write.
185
+ "unity_open_mcp_profiler_save_data": { class: "scene-dirty" },
186
+ // Build/settings mutators (non-reload).
187
+ "unity_open_mcp_build_set_scenes": { class: "scene-dirty" },
188
+ "unity_open_mcp_settings_set_quality": { class: "scene-dirty" },
189
+ "unity_open_mcp_settings_set_physics": { class: "scene-dirty" },
190
+ "unity_open_mcp_settings_set_lighting": { class: "scene-dirty" },
191
+ "unity_open_mcp_settings_set_time": { class: "scene-dirty" },
192
+ "unity_open_mcp_settings_set_quality_level": { class: "scene-dirty" },
193
+ // KV preferences setters (registry / Library writes, not project assets).
194
+ "unity_open_mcp_playerprefs_set": { class: "scene-dirty" },
195
+ "unity_open_mcp_playerprefs_delete": { class: "scene-dirty" },
196
+ "unity_open_mcp_editorprefs_set": { class: "scene-dirty" },
197
+ "unity_open_mcp_editorprefs_delete": { class: "scene-dirty" },
198
+ // ----- Domain mutators (extension packs) — all scene-dirty ---------------
199
+ // Navigation.
200
+ "unity_open_mcp_navigation_surface_add": { class: "scene-dirty" },
201
+ "unity_open_mcp_navigation_set_bake_settings": { class: "scene-dirty" },
202
+ "unity_open_mcp_navigation_surface_bake": { class: "scene-dirty" },
203
+ "unity_open_mcp_navigation_modifier_add": { class: "scene-dirty" },
204
+ "unity_open_mcp_navigation_modifier_volume_add": { class: "scene-dirty" },
205
+ "unity_open_mcp_navigation_link_add": { class: "scene-dirty" },
206
+ "unity_open_mcp_navigation_agent_add": { class: "scene-dirty" },
207
+ "unity_open_mcp_navigation_agent_set_destination": { class: "scene-dirty" },
208
+ "unity_open_mcp_navigation_modify": { class: "scene-dirty" },
209
+ // Input System.
210
+ "unity_open_mcp_inputsystem_asset_create": { class: "scene-dirty" },
211
+ "unity_open_mcp_inputsystem_actionmap_add": { class: "scene-dirty" },
212
+ "unity_open_mcp_inputsystem_action_add": { class: "scene-dirty" },
213
+ "unity_open_mcp_inputsystem_binding_add": { class: "scene-dirty" },
214
+ "unity_open_mcp_inputsystem_binding_composite_add": { class: "scene-dirty" },
215
+ "unity_open_mcp_inputsystem_controlscheme_add": { class: "scene-dirty" },
216
+ // ProBuilder.
217
+ "unity_open_mcp_probuilder_create_shape": { class: "scene-dirty" },
218
+ "unity_open_mcp_probuilder_extrude": { class: "scene-dirty" },
219
+ "unity_open_mcp_probuilder_delete_faces": { class: "scene-dirty" },
220
+ "unity_open_mcp_probuilder_set_face_material": { class: "scene-dirty" },
221
+ // Particle System.
222
+ "unity_open_mcp_particle_system_modify": { class: "scene-dirty" },
223
+ // Animation (AnimationClip + AnimatorController).
224
+ "unity_open_mcp_animation_create": { class: "scene-dirty" },
225
+ "unity_open_mcp_animation_modify": { class: "scene-dirty" },
226
+ "unity_open_mcp_animator_create": { class: "scene-dirty" },
227
+ "unity_open_mcp_animator_modify": { class: "scene-dirty" },
228
+ // Splines.
229
+ "unity_open_mcp_splines_container_create": { class: "scene-dirty" },
230
+ "unity_open_mcp_splines_add_knot": { class: "scene-dirty" },
231
+ "unity_open_mcp_splines_set_knot": { class: "scene-dirty" },
232
+ "unity_open_mcp_splines_set_tangent_mode": { class: "scene-dirty" },
233
+ "unity_open_mcp_splines_modify": { class: "scene-dirty" },
234
+ // Lighting.
235
+ "unity_open_mcp_light_add": { class: "scene-dirty" },
236
+ "unity_open_mcp_light_set": { class: "scene-dirty" },
237
+ "unity_open_mcp_light_modify": { class: "scene-dirty" },
238
+ "unity_open_mcp_skybox_set": { class: "scene-dirty" },
239
+ // Audio.
240
+ "unity_open_mcp_audio_source_add": { class: "scene-dirty" },
241
+ "unity_open_mcp_audio_source_modify": { class: "scene-dirty" },
242
+ "unity_open_mcp_audio_mixer_set_parameter": { class: "scene-dirty" },
243
+ // UI (uGUI).
244
+ "unity_open_mcp_ui_canvas_add": { class: "scene-dirty" },
245
+ "unity_open_mcp_ui_element_add": { class: "scene-dirty" },
246
+ "unity_open_mcp_ui_layout_group_add": { class: "scene-dirty" },
247
+ "unity_open_mcp_ui_element_modify": { class: "scene-dirty" },
248
+ // Constraints & LOD.
249
+ "unity_open_mcp_constraint_add": { class: "scene-dirty" },
250
+ "unity_open_mcp_lod_group_configure": { class: "scene-dirty" },
251
+ "unity_open_mcp_lod_add_level": { class: "scene-dirty" },
252
+ // Terrain.
253
+ "unity_open_mcp_terrain_create": { class: "scene-dirty" },
254
+ "unity_open_mcp_terrain_set_heights": { class: "scene-dirty" },
255
+ "unity_open_mcp_terrain_paint_layer": { class: "scene-dirty" },
256
+ "unity_open_mcp_terrain_place_trees": { class: "scene-dirty" },
257
+ "unity_open_mcp_terrain_set_neighbors": { class: "scene-dirty" },
258
+ // Cinemachine.
259
+ "unity_open_mcp_cinemachine_create_camera": { class: "scene-dirty" },
260
+ "unity_open_mcp_cinemachine_set_targets": { class: "scene-dirty" },
261
+ "unity_open_mcp_cinemachine_set_lens": { class: "scene-dirty" },
262
+ "unity_open_mcp_cinemachine_set_body": { class: "scene-dirty" },
263
+ "unity_open_mcp_cinemachine_set_noise": { class: "scene-dirty" },
264
+ "unity_open_mcp_cinemachine_brain_ensure": { class: "scene-dirty" },
265
+ // Timeline.
266
+ "unity_open_mcp_timeline_create": { class: "scene-dirty" },
267
+ "unity_open_mcp_timeline_track_add": { class: "scene-dirty" },
268
+ "unity_open_mcp_timeline_clip_add": { class: "scene-dirty" },
269
+ "unity_open_mcp_timeline_director_bind": { class: "scene-dirty" },
270
+ "unity_open_mcp_timeline_modify": { class: "scene-dirty" },
271
+ // Tilemap.
272
+ "unity_open_mcp_tilemap_create": { class: "scene-dirty" },
273
+ "unity_open_mcp_tilemap_set_tile": { class: "scene-dirty" },
274
+ "unity_open_mcp_tilemap_box_fill": { class: "scene-dirty" },
275
+ "unity_open_mcp_tilemap_create_tile_asset": { class: "scene-dirty" },
276
+ "unity_open_mcp_tilemap_create_rule_tile": { class: "scene-dirty" },
277
+ // Shader Graph.
278
+ "unity_open_mcp_shader_graph_create": { class: "scene-dirty" },
279
+ "unity_open_mcp_shader_graph_node_add": { class: "scene-dirty" },
280
+ "unity_open_mcp_shader_graph_node_connect": { class: "scene-dirty" },
281
+ // VFX Graph.
282
+ "unity_open_mcp_vfx_block_edit": { class: "scene-dirty" },
283
+ // 2D art pipeline (SpriteAtlas + Texture).
284
+ "unity_open_mcp_spriteatlas_create": { class: "scene-dirty" },
285
+ "unity_open_mcp_spriteatlas_add_packable": { class: "scene-dirty" },
286
+ "unity_open_mcp_spriteatlas_remove_packable": { class: "scene-dirty" },
287
+ "unity_open_mcp_spriteatlas_modify": { class: "scene-dirty" },
288
+ "unity_open_mcp_spriteatlas_delete": { class: "scene-dirty" },
289
+ "unity_open_mcp_texture_set_import": { class: "scene-dirty" },
290
+ "unity_open_mcp_texture_reimport": {
291
+ class: "scene-dirty",
292
+ note: "Reimport can take seconds and occasionally triggers a platform-switch " +
293
+ "domain reload; if a reload follows, treat it as compile-reload.",
294
+ },
295
+ };
296
+ /**
297
+ * Resolve the lifecycle declaration for a tool. Unlisted tools (the read-only
298
+ * majority) default to `{ class: "none" }` — the safe recovery class that
299
+ * promises no settle wait, no dirty guard, and no stale-heartbeat risk.
300
+ */
301
+ export function lifecycleFor(toolName) {
302
+ return TOOL_LIFECYCLE[toolName] ?? { class: "none" };
303
+ }
304
+ export const LIFECYCLE_TAXONOMY = [
305
+ {
306
+ class: "none",
307
+ meaning: "Read-only / side-effect-free.",
308
+ bridge: "Returns immediately; no settle wait, no dirty guard.",
309
+ recovery: "Retry on the next call. A failure is a real error, not a settle/reload artifact.",
310
+ },
311
+ {
312
+ class: "compile-reload",
313
+ meaning: "Triggers or observes a domain reload (script / asmdef / package edit).",
314
+ bridge: "Blocks up to 60s for the compile to settle; the active-scene dirty guard preflights.",
315
+ recovery: "After the call, poll editor_status / read_compile_errors before assuming success. " +
316
+ "compile_check is batch-only and returns editor_instance_locked when a live Editor " +
317
+ "holds the project lock — do not retry blindly.",
318
+ },
319
+ {
320
+ class: "modal-dialog",
321
+ meaning: "May raise an OS modal (build, project upgrade, version mismatch).",
322
+ bridge: "No first-class dismiss yet (planned); the call can hang on the modal until dismissed.",
323
+ recovery: "Have an operator dismiss the dialog, or avoid the call in headless contexts. " +
324
+ "Detect/classify/dismiss policy is forthcoming.",
325
+ },
326
+ {
327
+ class: "scene-dirty",
328
+ meaning: "Mutates scene / prefab / hierarchy / asset state.",
329
+ bridge: "Runs the gate (checkpoint → mutate → validate → delta); blocks up to 5s for asset " +
330
+ "refresh. Requires non-empty paths_hint (no whole-project fallback).",
331
+ recovery: "Read gate.delta + agentNextSteps from the response. On scene_dirty refusal, save or " +
332
+ "discard first, or pass ignore_scene_dirty: true to accept the risk.",
333
+ },
334
+ {
335
+ class: "process-stale",
336
+ meaning: "Long-running / async op where the bridge may become unresponsive.",
337
+ bridge: "Blocks until the op finishes; the heartbeat may stop advancing during the wait.",
338
+ recovery: "Treat stale-heartbeat + live-PID as 'still running', not crashed. Wait, then re-probe " +
339
+ "with ping / editor_status before concluding the bridge died.",
340
+ },
341
+ ];
342
+ export function buildLifecycle() {
343
+ return {
344
+ classes: LIFECYCLE_TAXONOMY,
345
+ guidance: "Each tool carries a `lifecycle` class describing the recovery concern: " +
346
+ "none (read-only), compile-reload (domain reload; settle + dirty guard), " +
347
+ "modal-dialog (OS modal; may hang), scene-dirty (gate + paths_hint), or " +
348
+ "process-stale (long-running; heartbeat may stall). Read it before the " +
349
+ "call to pick a recovery strategy; `lifecycleNote` carries tool-specific " +
350
+ "constraints (e.g. compile_check is batch-only).",
351
+ };
352
+ }
353
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/capabilities/lifecycle.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,iEAAiE;AACjE,6EAA6E;AAC7E,4EAA4E;AAC5E,sEAAsE;AACtE,4EAA4E;AAC5E,wDAAwD;AACxD,iCAAiC;AACjC,EAAE;AACF,8DAA8D;AAC9D,2EAA2E;AAC3E,gEAAgE;AAChE,gEAAgE;AAChE,0EAA0E;AAC1E,6EAA6E;AAC7E,uEAAuE;AACvE,6EAA6E;AAC7E,0EAA0E;AAC1E,uEAAuE;AACvE,2DAA2D;AAC3D,EAAE;AACF,2EAA2E;AAC3E,kEAAkE;AAyBlE,8EAA8E;AAC9E,yBAAyB;AACzB,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,uDAAuD;AACvD,EAAE;AACF,uEAAuE;AACvE,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,+BAA+B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC5D,8BAA8B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC3D,6BAA6B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC1D,8BAA8B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC3D,8BAA8B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC3D,6BAA6B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC1D,8BAA8B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC3D,iCAAiC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC9D,kCAAkC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC/D,oCAAoC,EAAE;QACpC,KAAK,EAAE,gBAAgB;QACvB,IAAI,EACF,yEAAyE;YACzE,oCAAoC;KACvC;IACD,uEAAuE;IACvE,2EAA2E;IAC3E,2BAA2B,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACxD,0EAA0E;IAC1E,0EAA0E;IAC1E,8BAA8B,EAAE;QAC9B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EACF,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,mEAAmE;YACnE,kEAAkE;YAClE,0DAA0D;KAC7D;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,8DAA8D;IAC9D,4BAA4B,EAAE;QAC5B,KAAK,EAAE,cAAc;QACrB,IAAI,EACF,mEAAmE;YACnE,+DAA+D;YAC/D,qEAAqE;KACxE;IACD,4BAA4B,EAAE;QAC5B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EACF,sEAAsE;YACtE,uEAAuE;YACvE,oDAAoD;KACvD;IACD,+BAA+B,EAAE;QAC/B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EACF,sEAAsE;YACtE,wBAAwB;KAC3B;IACD,iCAAiC,EAAE;QACjC,KAAK,EAAE,gBAAgB;QACvB,IAAI,EACF,qEAAqE;YACrE,wEAAwE;YACxE,yEAAyE;YACzE,uDAAuD;YACvD,uEAAuE;YACvE,sEAAsE;YACtE,2DAA2D;KAC9D;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,wEAAwE;IACxE,sBAAsB;IACtB,wBAAwB,EAAE;QACxB,KAAK,EAAE,eAAe;QACtB,IAAI,EACF,0EAA0E;YAC1E,uEAAuE;YACvE,mEAAmE;KACtE;IACD,sCAAsC,EAAE;QACtC,KAAK,EAAE,eAAe;QACtB,IAAI,EACF,uEAAuE;YACvE,iEAAiE;KACpE;IACD,sCAAsC,EAAE;QACtC,KAAK,EAAE,eAAe;QACtB,IAAI,EACF,uEAAuE;YACvE,mEAAmE;KACtE;IAED,6EAA6E;IAC7E,0EAA0E;IAC1E,wEAAwE;IACxE,0BAA0B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,cAAc;IACd,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,qBAAqB;IACrB,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,sCAAsC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAChE,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,2EAA2E;IAC3E,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvD,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,mCAAmC;IACnC,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,sCAAsC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAChE,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,0BAA0B;IAC1B,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,2DAA2D;IAC3D,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvD,2BAA2B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACrD,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvD,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,4DAA4D;IAC5D,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,iCAAiC,EAAE;QACjC,KAAK,EAAE,aAAa;QACpB,IAAI,EACF,uEAAuE;YACvE,gDAAgD;KACnD;IACD,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,4BAA4B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,2BAA2B;IAC3B,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,wCAAwC;IACxC,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,sCAAsC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAChE,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,2CAA2C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACrE,0EAA0E;IAC1E,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAE7D,4EAA4E;IAC5E,cAAc;IACd,uCAAuC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACjE,6CAA6C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvE,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,+CAA+C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzE,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,iDAAiD,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3E,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,gBAAgB;IAChB,yCAAyC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACnE,0CAA0C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpE,uCAAuC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACjE,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,kDAAkD,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5E,8CAA8C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxE,cAAc;IACd,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,6CAA6C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvE,mBAAmB;IACnB,uCAAuC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACjE,kDAAkD;IAClD,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,WAAW;IACX,yCAAyC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACnE,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,yCAAyC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACnE,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,YAAY;IACZ,0BAA0B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpD,0BAA0B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpD,6BAA6B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACvD,2BAA2B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACrD,SAAS;IACT,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,0CAA0C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpE,aAAa;IACb,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,qBAAqB;IACrB,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,8BAA8B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACxD,WAAW;IACX,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,sCAAsC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAChE,eAAe;IACf,0CAA0C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpE,wCAAwC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAClE,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,qCAAqC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,sCAAsC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAChE,yCAAyC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACnE,YAAY;IACZ,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,kCAAkC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5D,uCAAuC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACjE,gCAAgC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1D,WAAW;IACX,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,iCAAiC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC3D,0CAA0C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpE,yCAAyC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACnE,gBAAgB;IAChB,oCAAoC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9D,sCAAsC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAChE,0CAA0C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACpE,aAAa;IACb,+BAA+B,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACzD,2CAA2C;IAC3C,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,yCAAyC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACnE,4CAA4C,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACtE,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,mCAAmC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,iCAAiC,EAAE;QACjC,KAAK,EAAE,aAAa;QACpB,IAAI,EACF,wEAAwE;YACxE,iEAAiE;KACpE;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC;AAiBD,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D;QACE,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,+BAA+B;QACxC,MAAM,EAAE,sDAAsD;QAC9D,QAAQ,EACN,kFAAkF;KACrF;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,wEAAwE;QACjF,MAAM,EACJ,sFAAsF;QACxF,QAAQ,EACN,oFAAoF;YACpF,oFAAoF;YACpF,gDAAgD;KACnD;IACD;QACE,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,mEAAmE;QAC5E,MAAM,EACJ,uFAAuF;QACzF,QAAQ,EACN,+EAA+E;YAC/E,gDAAgD;KACnD;IACD;QACE,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,mDAAmD;QAC5D,MAAM,EACJ,oFAAoF;YACpF,qEAAqE;QACvE,QAAQ,EACN,sFAAsF;YACtF,qEAAqE;KACxE;IACD;QACE,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,mEAAmE;QAC5E,MAAM,EACJ,iFAAiF;QACnF,QAAQ,EACN,wFAAwF;YACxF,8DAA8D;KACjE;CACF,CAAC;AAgBF,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EACN,yEAAyE;YACzE,0EAA0E;YAC1E,yEAAyE;YACzE,wEAAwE;YACxE,0EAA0E;YAC1E,iDAAiD;KACpD,CAAC;AACJ,CAAC"}
@@ -3,11 +3,23 @@ export interface RuleIssueDescriptor {
3
3
  /** Issue code emitted by the rule (e.g. `missing_script`). */
4
4
  code: string;
5
5
  /** Default severity (`Error` | `Warning`). */
6
- severity: "Error" | "Warning";
6
+ severity: "Error" | `Warning`;
7
7
  /** Fix IDs that can resolve this issue code, if any. */
8
8
  fixIds: string[];
9
9
  /** True when the issue is only emitted during a full project scan. */
10
10
  fullScanOnly?: boolean;
11
+ /**
12
+ * Machine-readable root-cause code (e.g. `missing_guid_reference`,
13
+ * `duplicate_guid`). Stable across releases — agents branch on it. Mirrors
14
+ * the C# `IssueExplainability` taxonomy in
15
+ * `packages/verify/Editor/Core/IssueExplainability.cs`.
16
+ */
17
+ rootCause?: string;
18
+ /**
19
+ * Short, user-visible remediation playbook for this issue class. Clean of
20
+ * internal IDs (no milestone / spec / execution-plan references).
21
+ */
22
+ remediation?: string;
11
23
  }
12
24
  export interface RuleCapability {
13
25
  id: string;