@alpsckr/unitycli 0.4.5 → 0.5.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.
- package/contracts/command-contract.json +591 -591
- package/contracts/package-files.json +367 -367
- package/contracts/stable-session/direct-call-semantics.json +3 -3
- package/contracts/stable-session/request-digest-v1-golden.json +2 -2
- package/contracts/tool-completion-contract.json +322 -322
- package/dist/bridge/domains/animation.js +37 -37
- package/dist/bridge/domains/animation.js.map +1 -1
- package/dist/bridge/domains/asset.js +15 -16
- package/dist/bridge/domains/asset.js.map +1 -1
- package/dist/bridge/domains/build.js +13 -13
- package/dist/bridge/domains/build.js.map +1 -1
- package/dist/bridge/domains/camera.js +7 -7
- package/dist/bridge/domains/camera.js.map +1 -1
- package/dist/bridge/domains/catalog-editor.d.ts +2 -0
- package/dist/bridge/domains/{project-tool.js → catalog-editor.js} +10 -10
- package/dist/bridge/domains/catalog-editor.js.map +1 -0
- package/dist/bridge/domains/catalog-player.d.ts +2 -0
- package/dist/bridge/domains/{runtime-tool.js → catalog-player.js} +9 -9
- package/dist/bridge/domains/catalog-player.js.map +1 -0
- package/dist/bridge/domains/code.js +1 -1
- package/dist/bridge/domains/code.js.map +1 -1
- package/dist/bridge/domains/console.js +2 -2
- package/dist/bridge/domains/console.js.map +1 -1
- package/dist/bridge/domains/doctor.js +3 -3
- package/dist/bridge/domains/doctor.js.map +1 -1
- package/dist/bridge/domains/editor.js +14 -14
- package/dist/bridge/domains/editor.js.map +1 -1
- package/dist/bridge/domains/game-object.js +16 -16
- package/dist/bridge/domains/game-object.js.map +1 -1
- package/dist/bridge/domains/lighting.d.ts +2 -0
- package/dist/bridge/domains/lighting.js +127 -0
- package/dist/bridge/domains/lighting.js.map +1 -0
- package/dist/bridge/domains/material.js +5 -5
- package/dist/bridge/domains/material.js.map +1 -1
- package/dist/bridge/domains/navmesh.js +3 -3
- package/dist/bridge/domains/navmesh.js.map +1 -1
- package/dist/bridge/domains/occlusion.js +1 -9
- package/dist/bridge/domains/occlusion.js.map +1 -1
- package/dist/bridge/domains/physics.js +14 -14
- package/dist/bridge/domains/physics.js.map +1 -1
- package/dist/bridge/domains/prefab.js +12 -12
- package/dist/bridge/domains/prefab.js.map +1 -1
- package/dist/bridge/domains/profiler.js +25 -25
- package/dist/bridge/domains/profiler.js.map +1 -1
- package/dist/bridge/domains/rendering.d.ts +2 -0
- package/dist/bridge/domains/rendering.js +71 -0
- package/dist/bridge/domains/rendering.js.map +1 -0
- package/dist/bridge/domains/runtime-reflection.d.ts +2 -0
- package/dist/bridge/domains/{reflection.js → runtime-reflection.js} +7 -7
- package/dist/bridge/domains/runtime-reflection.js.map +1 -0
- package/dist/bridge/domains/scene.js +15 -15
- package/dist/bridge/domains/scene.js.map +1 -1
- package/dist/bridge/domains/screenshot.js +6 -6
- package/dist/bridge/domains/screenshot.js.map +1 -1
- package/dist/bridge/domains/scriptable-object.js +4 -4
- package/dist/bridge/domains/scriptable-object.js.map +1 -1
- package/dist/bridge/domains/serialized-object.d.ts +2 -0
- package/dist/bridge/domains/{object.js → serialized-object.js} +6 -6
- package/dist/bridge/domains/serialized-object.js.map +1 -0
- package/dist/bridge/domains/shader.js +7 -7
- package/dist/bridge/domains/shader.js.map +1 -1
- package/dist/bridge/domains/texture.js +7 -7
- package/dist/bridge/domains/texture.js.map +1 -1
- package/dist/bridge/domains/timeline.js +4 -4
- package/dist/bridge/domains/timeline.js.map +1 -1
- package/dist/bridge/domains/ui.js +18 -18
- package/dist/bridge/domains/ui.js.map +1 -1
- package/dist/bridge/domains/volume.d.ts +2 -0
- package/dist/bridge/domains/volume.js +26 -0
- package/dist/bridge/domains/volume.js.map +1 -0
- package/dist/bridge/index.js +3 -3
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/registry.js +15 -13
- package/dist/bridge/registry.js.map +1 -1
- package/dist/bridge/session-supervisor.js +4 -4
- package/dist/bridge/session-supervisor.js.map +1 -1
- package/dist/bridge/types.d.ts +1 -1
- package/dist/catalog-protocol.js +3 -3
- package/dist/catalog-protocol.js.map +1 -1
- package/dist/extensions/.generated-bridge-domains/cinemachine.js +14 -14
- package/dist/extensions/.generated-bridge-domains/cinemachine.js.map +1 -1
- package/dist/extensions/.generated-bridge-domains/hdrp.js +7 -7
- package/dist/extensions/.generated-bridge-domains/hdrp.js.map +1 -1
- package/dist/extensions/.generated-bridge-domains/probuilder.d.ts +3 -3
- package/dist/extensions/.generated-bridge-domains/probuilder.js +40 -40
- package/dist/extensions/.generated-bridge-domains/probuilder.js.map +1 -1
- package/dist/extensions/.generated-bridge-domains/urp.js +12 -12
- package/dist/extensions/.generated-bridge-domains/urp.js.map +1 -1
- package/dist/extensions/.generated-bridge-domains/vfx.js +27 -27
- package/dist/extensions/.generated-bridge-domains/vfx.js.map +1 -1
- package/dist/package-manager.js +1 -1
- package/dist/project-tool-discovery.d.ts +1 -1
- package/dist/project-tool-discovery.js +5 -5
- package/dist/project-tool-discovery.js.map +1 -1
- package/dist/runtime-code.js +2 -2
- package/dist/runtime-code.js.map +1 -1
- package/dist/services/reflect-service.d.ts +3 -3
- package/dist/services/reflect-service.js +5 -5
- package/dist/services/reflect-service.js.map +1 -1
- package/dist/tools/.generated-completion-registry.js +689 -689
- package/dist/tools/.generated-completion-registry.js.map +1 -1
- package/dist/tools/.generated-registry.d.ts +12 -12
- package/dist/tools/.generated-registry.js +12 -12
- package/dist/tools/.generated-registry.js.map +1 -1
- package/dist/tools/.generated-schemas.js +13 -13
- package/dist/tools/.generated-schemas.js.map +1 -1
- package/dist/tools/catalog.d.ts +1 -1
- package/dist/tools/catalog.js +1 -1
- package/dist/tools/code/{exec.d.ts → execute.d.ts} +1 -1
- package/dist/tools/code/{exec.js → execute.js} +5 -5
- package/dist/tools/code/execute.js.map +1 -0
- package/dist/tools/dispatcher.js +12 -8
- package/dist/tools/dispatcher.js.map +1 -1
- package/dist/tools/editor/compile.d.ts +3 -2
- package/dist/tools/editor/compile.js +23 -13
- package/dist/tools/editor/compile.js.map +1 -1
- package/dist/tools/editor/play-mode-status.js +2 -2
- package/dist/tools/editor/play-mode-status.js.map +1 -1
- package/dist/tools/editor/refresh.js +2 -2
- package/dist/tools/editor/refresh.js.map +1 -1
- package/dist/tools/metadata/derived.d.ts +0 -7
- package/dist/tools/metadata/derived.js +7 -16
- package/dist/tools/metadata/derived.js.map +1 -1
- package/dist/tools/metadata/index.d.ts +1 -1
- package/dist/tools/metadata/index.js +1 -1
- package/dist/tools/metadata/index.js.map +1 -1
- package/dist/tools/metadata/status.js +1 -1
- package/dist/tools/metadata/status.js.map +1 -1
- package/dist/tools/{runtime → player-runtime}/console.js +4 -4
- package/dist/tools/player-runtime/console.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/input/key.js +4 -4
- package/dist/tools/player-runtime/input/key.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/input/pointer.js +4 -4
- package/dist/tools/player-runtime/input/pointer.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/log.js +5 -5
- package/dist/tools/player-runtime/log.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/state.js +4 -4
- package/dist/tools/player-runtime/state.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/target-framerate/set.js +4 -4
- package/dist/tools/player-runtime/target-framerate/set.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/time-scale/set.js +4 -4
- package/dist/tools/player-runtime/time-scale/set.js.map +1 -0
- package/dist/tools/{runtime → player-runtime}/ui/capture-element.js +4 -4
- package/dist/tools/player-runtime/ui/capture-element.js.map +1 -0
- package/dist/tools/tools/group-summaries.js +17 -14
- package/dist/tools/tools/group-summaries.js.map +1 -1
- package/dist/tools/{reflect/member.js → type-inspection/get-member.js} +6 -6
- package/dist/tools/type-inspection/get-member.js.map +1 -0
- package/dist/tools/{reflect/type.js → type-inspection/get-type.js} +6 -6
- package/dist/tools/type-inspection/get-type.js.map +1 -0
- package/dist/tools/{reflect → type-inspection}/search.js +5 -5
- package/dist/tools/type-inspection/search.js.map +1 -0
- package/docs/README.md +1 -2
- package/docs/architecture.md +1 -1
- package/docs/availability-differences.md +2 -2
- package/docs/development.md +1 -1
- package/docs/error-codes.md +5 -5
- package/docs/extensions.md +2 -2
- package/docs/risk-and-side-effects.md +12 -12
- package/docs/safety-boundaries.md +7 -7
- package/docs/tool-discovery.md +1 -1
- package/docs/tool-execution.md +16 -16
- package/extensions/cinemachine/bridge/domains/cinemachine.ts +14 -14
- package/extensions/hdrp/bridge/domains/hdrp.ts +7 -7
- package/extensions/hdrp/unitypkg/Editor/Hdrp/HdrpToolSupport.cs +2 -2
- package/extensions/probuilder/bridge/domains/probuilder.ts +40 -40
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderErrors.cs +1 -1
- package/extensions/urp/bridge/domains/urp.ts +12 -12
- package/extensions/urp/unitypkg/Editor/Urp/UrpToolSupport.cs +2 -2
- package/extensions/vfx-graph/bridge/domains/vfx.ts +27 -27
- package/package.json +1 -1
- package/skills/unitycli/SKILL.md +1 -1
- package/skills/unitycli/manifest.json +1 -1
- package/skills/unitycli/references/operation-protocol.md +1 -1
- package/unitypkg/Editor/Bridge/BridgeHttpServer.cs +2 -2
- package/unitypkg/Editor/Commands/ProjectToolCommands.cs +7 -7
- package/unitypkg/Editor/Commands/RuntimeToolCommands.cs +6 -6
- package/unitypkg/Editor/Generated/UnityCliToolCompletionRegistry.g.cs +147 -147
- package/unitypkg/Editor/Infrastructure/CodeExecSupport.cs +4 -4
- package/unitypkg/Editor/Infrastructure/UnityCliAdmission.cs +17 -17
- package/unitypkg/Editor/Infrastructure/UnityCliCompileCoordinator.cs +61 -54
- package/unitypkg/Editor/Infrastructure/UnityCliJson.cs +0 -18
- package/unitypkg/Editor/Infrastructure/UnityCliLiveRefreshCoordinator.cs +26 -21
- package/unitypkg/Editor/Infrastructure/UnityCliObjectPatch.cs +1 -1
- package/unitypkg/Editor/Infrastructure/UnityCliObjectRef.cs +5 -5
- package/unitypkg/Editor/Infrastructure/UnityCliOperationCoordinator.cs +32 -32
- package/unitypkg/Editor/Infrastructure/UnityCliReflection.cs +12 -12
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeExecutor.cs +1 -1
- package/unitypkg/Editor/ProjectTools/ProjectToolRegistry.cs +5 -5
- package/unitypkg/Editor/Tools/{animation → animation-clip}/AnimationToolSupport.cs +3 -3
- package/unitypkg/Editor/Tools/{animation/clip → animation-clip}/create.cs +4 -4
- package/unitypkg/Editor/Tools/{animation/clip.cs → animation-clip/read.cs} +3 -3
- package/unitypkg/Editor/Tools/{animation/clip/modify.cs → animation-clip/update.cs} +5 -5
- package/unitypkg/Editor/Tools/{animation/animator → animator}/crossfade.cs +1 -1
- package/unitypkg/Editor/Tools/{animation/animator → animator}/get-info.cs +1 -1
- package/unitypkg/Editor/Tools/{animation/animator → animator}/get-parameter.cs +1 -1
- package/unitypkg/Editor/Tools/{animation/state.cs → animator/get-state.cs} +3 -3
- package/unitypkg/Editor/Tools/{animation → animator}/play.cs +5 -5
- package/unitypkg/Editor/Tools/{animation/animator → animator}/set-enabled.cs +1 -1
- package/unitypkg/Editor/Tools/{animation/animator → animator}/set-parameter.cs +1 -1
- package/unitypkg/Editor/Tools/{animation/animator → animator}/set-speed.cs +1 -1
- package/unitypkg/Editor/Tools/{animation → animator}/stop.cs +4 -4
- package/unitypkg/Editor/Tools/{controller → animator-controller}/add-blend-tree-child.cs +10 -10
- package/unitypkg/Editor/Tools/{controller → animator-controller}/add-layer.cs +6 -6
- package/unitypkg/Editor/Tools/{controller → animator-controller}/add-parameter.cs +6 -6
- package/unitypkg/Editor/Tools/{controller → animator-controller}/add-state.cs +7 -7
- package/unitypkg/Editor/Tools/{controller → animator-controller}/add-transition.cs +9 -9
- package/unitypkg/Editor/Tools/{controller → animator-controller}/assign.cs +6 -6
- package/unitypkg/Editor/Tools/{controller → animator-controller}/create-blend-tree-1d.cs +7 -7
- package/unitypkg/Editor/Tools/{controller → animator-controller}/create-blend-tree-2d.cs +7 -7
- package/unitypkg/Editor/Tools/{controller → animator-controller}/create.cs +4 -4
- package/unitypkg/Editor/Tools/{controller → animator-controller}/get-info.cs +4 -4
- package/unitypkg/Editor/Tools/{controller → animator-controller}/remove-layer.cs +8 -8
- package/unitypkg/Editor/Tools/{controller → animator-controller}/set-layer-weight.cs +6 -6
- package/unitypkg/Editor/Tools/asset/preview.cs +1 -1
- package/unitypkg/Editor/Tools/asset/{modify.cs → write-text.cs} +6 -6
- package/unitypkg/Editor/Tools/component/get.cs +1 -1
- package/unitypkg/Editor/Tools/component/list-types.cs +2 -2
- package/unitypkg/Editor/Tools/component/modify.cs +1 -1
- package/unitypkg/Editor/Tools/component/set.cs +1 -1
- package/unitypkg/Editor/Tools/console/{get.cs → read.cs} +3 -3
- package/unitypkg/Editor/Tools/editor/{play.cs → play-mode/start.cs} +5 -5
- package/unitypkg/Editor/Tools/editor/{stop.cs → play-mode/stop.cs} +5 -5
- package/unitypkg/Editor/Tools/editor/search.cs +1 -1
- package/unitypkg/Editor/Tools/{go → game-object}/GameObjectToolSupport.cs +5 -22
- package/unitypkg/Editor/Tools/{go → game-object}/create.cs +11 -11
- package/unitypkg/Editor/Tools/{go → game-object}/delete.cs +7 -7
- package/unitypkg/Editor/Tools/{go → game-object}/duplicate.cs +6 -6
- package/unitypkg/Editor/Tools/{go → game-object}/find.cs +5 -5
- package/unitypkg/Editor/Tools/{go → game-object}/look-at.cs +8 -8
- package/unitypkg/Editor/Tools/{go → game-object}/modify.cs +9 -9
- package/unitypkg/Editor/Tools/{go → game-object}/move-relative.cs +7 -7
- package/unitypkg/Editor/Tools/{scene/move-object.cs → game-object/move-to-scene.cs} +7 -7
- package/unitypkg/Editor/Tools/{go → game-object}/set-parent.cs +9 -9
- package/unitypkg/Editor/Tools/{graphics/bake-cancel.cs → lighting/bake/cancel.cs} +4 -4
- package/unitypkg/Editor/Tools/{graphics/bake-clear.cs → lighting/bake/clear.cs} +4 -4
- package/unitypkg/Editor/Tools/{graphics/bake-reflection-probe.cs → lighting/bake/reflection-probe.cs} +3 -3
- package/unitypkg/Editor/Tools/{graphics/bake-settings.cs → lighting/bake/settings.cs} +12 -12
- package/unitypkg/Editor/Tools/{graphics/bake-start.cs → lighting/bake/start.cs} +5 -5
- package/unitypkg/Editor/Tools/{graphics/bake-status.cs → lighting/bake/status.cs} +3 -3
- package/unitypkg/Editor/Tools/{graphics → lighting}/light-probe-group.cs +7 -7
- package/unitypkg/Editor/Tools/{graphics → lighting}/reflection-probe.cs +12 -12
- package/unitypkg/Editor/Tools/{graphics/skybox-get.cs → lighting/skybox/get.cs} +3 -3
- package/unitypkg/Editor/Tools/{graphics/skybox-set-ambient.cs → lighting/skybox/set-ambient.cs} +3 -3
- package/unitypkg/Editor/Tools/{graphics/skybox-set-fog.cs → lighting/skybox/set-fog.cs} +3 -3
- package/unitypkg/Editor/Tools/{graphics/skybox-set-material.cs → lighting/skybox/set-material.cs} +5 -5
- package/unitypkg/Editor/Tools/{graphics/skybox-set-properties.cs → lighting/skybox/set-properties.cs} +5 -5
- package/unitypkg/Editor/Tools/{graphics/skybox-set-reflection.cs → lighting/skybox/set-reflection.cs} +3 -3
- package/unitypkg/Editor/Tools/{graphics/skybox-set-sun.cs → lighting/skybox/set-sun.cs} +5 -5
- package/unitypkg/Editor/Tools/{project → project-settings}/ProjectSettingsToolSupport.cs +5 -5
- package/unitypkg/Editor/Tools/{project → project-settings}/audio-settings/set.cs +3 -3
- package/unitypkg/Editor/Tools/{project → project-settings}/audio-settings.cs +4 -4
- package/unitypkg/Editor/Tools/{project → project-settings}/info.cs +4 -4
- package/unitypkg/Editor/Tools/{project → project-settings}/input-settings/set.cs +3 -3
- package/unitypkg/Editor/Tools/{project → project-settings}/input-settings.cs +4 -4
- package/unitypkg/Editor/Tools/project-settings/layer/add.cs +3 -0
- package/unitypkg/Editor/Tools/project-settings/layer/remove.cs +3 -0
- package/unitypkg/Editor/Tools/{project → project-settings}/layers.cs +4 -4
- package/unitypkg/Editor/Tools/{project → project-settings}/player-settings/set.cs +4 -4
- package/unitypkg/Editor/Tools/{project → project-settings}/player-settings.cs +4 -4
- package/unitypkg/Editor/Tools/project-settings/tag/add.cs +3 -0
- package/unitypkg/Editor/Tools/project-settings/tag/remove.cs +3 -0
- package/unitypkg/Editor/Tools/{project → project-settings}/tags.cs +4 -4
- package/unitypkg/Editor/Tools/{project → project-settings}/time-settings/set.cs +3 -3
- package/unitypkg/Editor/Tools/{project → project-settings}/time-settings.cs +4 -4
- package/unitypkg/Editor/Tools/{graphics → rendering}/GraphicsToolSupport.cs +3 -3
- package/unitypkg/Editor/Tools/rendering/pipeline/info.cs +19 -0
- package/unitypkg/Editor/Tools/{graphics/pipeline-settings.cs → rendering/pipeline/settings.cs} +4 -4
- package/unitypkg/Editor/Tools/{graphics → rendering}/quality.cs +17 -17
- package/unitypkg/Editor/Tools/{graphics → rendering}/scene-debug.cs +4 -4
- package/unitypkg/Editor/Tools/rendering/stats.cs +17 -0
- package/unitypkg/Editor/Tools/{reflection → runtime-reflection}/method/find.cs +5 -5
- package/unitypkg/Editor/Tools/{reflection/method/call.cs → runtime-reflection/method/invoke.cs} +7 -7
- package/unitypkg/Editor/Tools/{reflection → runtime-reflection}/type/schema.cs +5 -5
- package/unitypkg/Editor/Tools/scene/gameobject-support.cs +1 -1
- package/unitypkg/Editor/Tools/scene/gameobject.cs +1 -1
- package/unitypkg/Editor/Tools/scene/hierarchy.cs +1 -1
- package/unitypkg/Editor/Tools/{camera/screenshot.cs → screenshot/from-camera.cs} +4 -4
- package/unitypkg/Editor/Tools/{object/modify.cs → serialized-object/patch.cs} +8 -8
- package/unitypkg/Editor/Tools/{object/get-data.cs → serialized-object/read.cs} +4 -4
- package/unitypkg/Editor/Tools/{graphics/volume.cs → volume/list.cs} +3 -3
- package/unitypkg/Editor/UnityCliBridge.cs +3 -22
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeBridge.cs +15 -15
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeRegistry.cs +1 -1
- package/unitypkg/Runtime/Tools/UnityCliRuntimeTools.cs +22 -22
- package/unitypkg/Shared/UnityCliBridgeQueuePolicy.cs +1 -1
- package/unitypkg/Tests/Editor/UnityCliAdmissionCoordinatorIntegrationTests.cs +7 -7
- package/unitypkg/Tests/Editor/UnityCliBridgeAdmissionIntegrationTests.cs +6 -6
- package/unitypkg/Tests/Editor/UnityCliBridgeQueuePolicyTests.cs +3 -3
- package/unitypkg/Tests/Editor/UnityCliContinuationIntegrationTests.cs +1 -1
- package/unitypkg/Tests/Editor/UnityCliRequestBudgetTests.cs +4 -4
- package/unitypkg/Tests/Editor/UnityCliRuntimeBridgeIntegrationTests.cs +15 -15
- package/unitypkg/Tests/Runtime/UnityCliRuntimeCatalogValidationTests.cs +5 -5
- package/unitypkg/package.json +1 -1
- package/dist/bridge/domains/graphics.d.ts +0 -2
- package/dist/bridge/domains/graphics.js +0 -170
- package/dist/bridge/domains/graphics.js.map +0 -1
- package/dist/bridge/domains/object.d.ts +0 -2
- package/dist/bridge/domains/object.js.map +0 -1
- package/dist/bridge/domains/package.d.ts +0 -2
- package/dist/bridge/domains/package.js +0 -2
- package/dist/bridge/domains/package.js.map +0 -1
- package/dist/bridge/domains/project-tool.d.ts +0 -2
- package/dist/bridge/domains/project-tool.js.map +0 -1
- package/dist/bridge/domains/reflection.d.ts +0 -2
- package/dist/bridge/domains/reflection.js.map +0 -1
- package/dist/bridge/domains/runtime-tool.d.ts +0 -2
- package/dist/bridge/domains/runtime-tool.js.map +0 -1
- package/dist/tools/code/exec.js.map +0 -1
- package/dist/tools/reflect/member.js.map +0 -1
- package/dist/tools/reflect/search.js.map +0 -1
- package/dist/tools/reflect/type.js.map +0 -1
- package/dist/tools/runtime/console.js.map +0 -1
- package/dist/tools/runtime/input/key.js.map +0 -1
- package/dist/tools/runtime/input/pointer.js.map +0 -1
- package/dist/tools/runtime/log.js.map +0 -1
- package/dist/tools/runtime/state.js.map +0 -1
- package/dist/tools/runtime/target-framerate/set.js.map +0 -1
- package/dist/tools/runtime/time-scale/set.js.map +0 -1
- package/dist/tools/runtime/ui/capture-element.js.map +0 -1
- package/unitypkg/Editor/Tools/graphics/pipeline-info.cs +0 -19
- package/unitypkg/Editor/Tools/graphics/stats.cs +0 -17
- package/unitypkg/Editor/Tools/project/layer/add.cs +0 -3
- package/unitypkg/Editor/Tools/project/layer/remove.cs +0 -3
- package/unitypkg/Editor/Tools/project/tag/add.cs +0 -3
- package/unitypkg/Editor/Tools/project/tag/remove.cs +0 -3
- /package/dist/tools/{runtime → player-runtime}/console.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/input/key.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/input/pointer.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/log.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/state.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/target-framerate/set.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/time-scale/set.d.ts +0 -0
- /package/dist/tools/{runtime → player-runtime}/ui/capture-element.d.ts +0 -0
- /package/dist/tools/{reflect/member.d.ts → type-inspection/get-member.d.ts} +0 -0
- /package/dist/tools/{reflect/type.d.ts → type-inspection/get-type.d.ts} +0 -0
- /package/dist/tools/{reflect → type-inspection}/search.d.ts +0 -0
- /package/unitypkg/Editor/Tools/{animation → animator}/AnimatorRuntimeToolSupport.cs +0 -0
- /package/unitypkg/Editor/Tools/{project → project-settings}/ProjectSettingsReader.cs +0 -0
- /package/unitypkg/Editor/Tools/{project → project-settings}/ProjectTagLayerToolSupport.cs +0 -0
- /package/unitypkg/Editor/Tools/{object → serialized-object}/ObjectToolSupport.cs +0 -0
package/docs/error-codes.md
CHANGED
|
@@ -73,7 +73,7 @@ alps-unity-cli 使用结构化错误码,包含机器可读的 `code`、`transi
|
|
|
73
73
|
|
|
74
74
|
| 错误码 | 含义 | 恢复 |
|
|
75
75
|
|--------|------|------|
|
|
76
|
-
| `E_RUNTIME_NOT_READY` | Runtime 工具需 Play Mode | 先 `tools run editor.play`,transient 可重试 |
|
|
76
|
+
| `E_RUNTIME_NOT_READY` | Runtime 工具需 Play Mode | 先 `tools run editor.play-mode.start`,transient 可重试 |
|
|
77
77
|
| `E_RUNTIME_SESSION_STALE` | 运行时会话过期 | 重新进入 Play Mode |
|
|
78
78
|
| `E_RUNTIME_TIMEOUT` | 运行时操作超时 | 增加 `--timeout-ms` 或重试 |
|
|
79
79
|
|
|
@@ -135,9 +135,9 @@ alps-unity-cli 使用结构化错误码,包含机器可读的 `code`、`transi
|
|
|
135
135
|
| `E_PROJECT_SETTINGS_NO_FIELDS` | setter没有提供任何批准字段 | 按`tools describe project.*-settings.set`提供至少一个字段 |
|
|
136
136
|
| `E_PROJECT_SETTINGS_INVALID` | 数值边界、分页、axis或Player enum输入非法 | 按错误中的精确字段约束修正输入 |
|
|
137
137
|
| `E_PROJECT_SETTINGS_LIMIT_EXCEEDED` | legacy Input Manager超过4096个axis,无法在公开有界读取内安全扫描 | 减少Input Manager axis数量后重试 |
|
|
138
|
-
| `E_PROJECT_INPUT_AXIS_NOT_FOUND` | 没有完全同名的legacy Input Manager axis | 先分页读取`project.input-settings`并传精确名称 |
|
|
138
|
+
| `E_PROJECT_INPUT_AXIS_NOT_FOUND` | 没有完全同名的legacy Input Manager axis | 先分页读取`project-settings.input-settings`并传精确名称 |
|
|
139
139
|
| `E_PROJECT_SETTINGS_TARGET_CHANGED` | 冻结的Input axis index/name在effect前漂移 | fresh读取Input设置后提交新请求 |
|
|
140
|
-
| `E_PROJECT_SETTINGS_VERIFY_FAILED` | typed readback或ProjectSettings文件SHA未证明持久化终态 | 读取对应`project
|
|
140
|
+
| `E_PROJECT_SETTINGS_VERIFY_FAILED` | typed readback或ProjectSettings文件SHA未证明持久化终态 | 读取对应`project-settings.*`后再决定是否重试 |
|
|
141
141
|
|
|
142
142
|
### Editor Utility 错误
|
|
143
143
|
|
|
@@ -183,7 +183,7 @@ alps-unity-cli 使用结构化错误码,包含机器可读的 `code`、`transi
|
|
|
183
183
|
|
|
184
184
|
| 错误码 | 含义 | 恢复 |
|
|
185
185
|
|--------|------|------|
|
|
186
|
-
| `E_METHOD_NOT_FOUND` | 方法名或显式参数签名不存在 | 运行 `reflection.method.find` 并核对 `parameterType` |
|
|
186
|
+
| `E_METHOD_NOT_FOUND` | 方法名或显式参数签名不存在 | 运行 `runtime-reflection.method.find` 并核对 `parameterType` |
|
|
187
187
|
| `E_METHOD_AMBIGUOUS` | 多个 overload 与参数数量匹配 | 将选中签名的 `parameterType` 数组作为 `parameterTypes` 重试 |
|
|
188
188
|
| `E_TYPE_NOT_FOUND` | 目标类型或参数类型不存在 | 使用完整 C# type name |
|
|
189
189
|
|
|
@@ -214,7 +214,7 @@ alps-unity-cli 使用结构化错误码,包含机器可读的 `code`、`transi
|
|
|
214
214
|
### nextActions 规则
|
|
215
215
|
|
|
216
216
|
- Instance 错误的 `nextActions` 必须指向 `instances list`、显式 `--instance`、项目路径或关闭重复 Editor
|
|
217
|
-
- Runtime 错误的 `nextActions` 必须指向 `tools run editor.play` 或 Play Mode 相关操作
|
|
217
|
+
- Runtime 错误的 `nextActions` 必须指向 `tools run editor.play-mode.start` 或 Play Mode 相关操作
|
|
218
218
|
- Discovery 错误的 `nextActions` 必须指向 `tools group`、`tools group list`、`tools search <k1|k2|...>` 或 `tools describe`
|
|
219
219
|
- 弹窗 blocker 的 `nextActions` 必须指向先 `tools run editor.dialogs`,再 `tools run editor.dialog.click`;不得要求人工处理、预定义按钮列表、launch-only 入口或额外确认
|
|
220
220
|
- 诊断错误的 `nextActions` 必须指向顶层 `doctor` 或对应 owner(`instances list`、`editor.state`、`extensions doctor`、Unity Console)
|
package/docs/extensions.md
CHANGED
|
@@ -103,7 +103,7 @@ unitycli extensions doctor --project <path> # 扩展诊断
|
|
|
103
103
|
|
|
104
104
|
| 扩展 | 状态 | 说明 |
|
|
105
105
|
|------|------|------|
|
|
106
|
-
| ProBuilder | ✅ 已实现 |
|
|
106
|
+
| ProBuilder | ✅ 已实现 | 37 个扩展工具(create-shape/extrude-faces/delete-faces 等),只接受 `com.unity.probuilder@5.2.4` |
|
|
107
107
|
| Cinemachine | ✅ 已实现 | Cinemachine camera/target/lens/shot 等工具,需要 `com.unity.cinemachine` |
|
|
108
108
|
| VFX Graph | ✅ 已实现 | VFX Graph、ParticleSystem、LineRenderer、TrailRenderer 相关工具;VFX Graph 子集需要 `com.unity.visualeffectgraph` |
|
|
109
109
|
| URP | ✅ 已实现 | URP renderer feature、volume、settings 等工具,需要 `com.unity.render-pipelines.universal` |
|
|
@@ -121,6 +121,6 @@ unitycli extensions doctor --project <path> # 扩展诊断
|
|
|
121
121
|
## 取证与依赖
|
|
122
122
|
|
|
123
123
|
- 扩展基础设施:`extensions list/install/remove/doctor`、`init --auto-detect`、缺依赖 descriptor 的 `available:false` / `unavailableReason` 与执行错误的 `nextActions`。
|
|
124
|
-
- ProBuilder:源码位于 `extensions/probuilder/`,安装后位于 `Packages/com.alpsckr.unitycli/Extensions/probuilder/`,通过
|
|
124
|
+
- ProBuilder:源码位于 `extensions/probuilder/`,安装后位于 `Packages/com.alpsckr.unitycli/Extensions/probuilder/`,通过 catalog bridge 路由提供扩展工具;所有 operation replay 固定于 `com.unity.probuilder@5.2.4`,版本不匹配时在 effect 前拒绝。
|
|
125
125
|
- Cinemachine/VFX/URP/HDRP:源码位于对应 `extensions/<id>/` 目录,安装后位于 `Packages/com.alpsckr.unitycli/Extensions/<id>/`,通过 metadata、bridge domain 和 C# command handler 提供 live Bridge 工具。
|
|
126
126
|
- 验证入口:`npm test`、`npm run contracts:validate`、extension availability tests。
|
|
@@ -21,18 +21,18 @@ Every tool carries risk hints in its descriptor. Public Tool and CLI control-pla
|
|
|
21
21
|
|---------|-------|----------------------|
|
|
22
22
|
| `tools run asset.delete` | Delete Asset | ✅ |
|
|
23
23
|
| `tools run scene.save` | Save Scene | ✅ |
|
|
24
|
-
| `tools run code.
|
|
24
|
+
| `tools run code.execute` | Execute Live Code | ✅ |
|
|
25
25
|
| `tools run scriptable-object.create` | Create ScriptableObject Asset | ✅ |
|
|
26
26
|
| `tools run scriptable-object.modify` | Modify ScriptableObject Asset | ✅ |
|
|
27
27
|
| `tools run texture.modify` | Modify Texture Asset | ✅ |
|
|
28
28
|
| `tools run texture.delete` | Delete Texture Asset | ✅ |
|
|
29
29
|
| `tools run shader.delete` | Delete Shader Asset | ✅ |
|
|
30
|
-
| `tools run object.
|
|
31
|
-
| `tools run reflection.method.
|
|
32
|
-
| `tools run
|
|
33
|
-
| `tools run
|
|
34
|
-
| `tools run
|
|
35
|
-
| `tools run controller.remove-layer` | Remove Animator Controller Layer | ❌ |
|
|
30
|
+
| `tools run serialized-object.patch` | Modify Object (deep patch) | ✅ |
|
|
31
|
+
| `tools run runtime-reflection.method.invoke` | Call Method via Reflection | ✅ |
|
|
32
|
+
| `tools run lighting.bake.clear` | Clear Baked Lighting | ❌ |
|
|
33
|
+
| `tools run lighting.bake.start` | Start Light Bake | ❌ |
|
|
34
|
+
| `tools run lighting.bake.reflection-probe` | Bake Reflection Probe | ❌ |
|
|
35
|
+
| `tools run animator-controller.remove-layer` | Remove Animator Controller Layer | ❌ |
|
|
36
36
|
| `tools run editor.menu` | Execute Editor Menu | ❌ |
|
|
37
37
|
| `tools run package.embed` | Embed Package | ✅ |
|
|
38
38
|
| `tools run package.install` | Package Install | ❌ |
|
|
@@ -41,9 +41,9 @@ Every tool carries risk hints in its descriptor. Public Tool and CLI control-pla
|
|
|
41
41
|
| `tools run package.restore` | Package Restore | ✅ |
|
|
42
42
|
| `tools run package.bridge-remove` | Package Bridge Remove | ✅ |
|
|
43
43
|
|
|
44
|
-
`code.
|
|
44
|
+
`code.execute` keeps unrestricted synchronous C# execution. It does not reject infinite loops, long sleeps, blocking waits, lock contention, synchronous I/O, or long-running Unity API calls. Before submitting such code, the caller must decide whether it is necessary for the requested result and consider a bounded implementation or an existing Tool; necessary code may still be executed unchanged. After `Run` starts on the Unity Editor main thread, `--timeout-ms` can stop the CLI from waiting but cannot stop the C# code. The Editor can remain unresponsive, the mutation owner can remain active, Unity state can be partial or unknown, and recovery can require terminating the Editor process. A timeout is not proof that the code stopped, so inspect business state before retrying. Dry-run only previews the source hash and planned effect; it does not compile, execute, or prove termination.
|
|
45
45
|
|
|
46
|
-
The `reflection.method.
|
|
46
|
+
The `runtime-reflection.method.invoke` tool performs no scope restriction on the invoked method (public/private/static/instance, any namespace/assembly, Editor/Runtime). Its risk metadata describes that effect; invoking the public Tool authorizes execution. When a method name has overloads, pass the selected signature's `parameterType` values as `parameterTypes`.
|
|
47
47
|
|
|
48
48
|
### Optional Preview
|
|
49
49
|
|
|
@@ -88,7 +88,7 @@ Each Unity domain validates the complete Tool table before publishing its single
|
|
|
88
88
|
## Cross-Reference
|
|
89
89
|
|
|
90
90
|
- Runtime and execution errors: [error-codes](./error-codes.md)
|
|
91
|
-
- Tool descriptor field coverage: [tool-discovery](./tool-discovery.md) §
|
|
91
|
+
- Tool descriptor field coverage: [tool-discovery](./tool-discovery.md) §tools describe
|
|
92
92
|
- Tool metadata schema: [../schemas/tool-metadata.schema.json](../schemas/tool-metadata.schema.json)
|
|
93
|
-
-
|
|
94
|
-
- AI skill
|
|
93
|
+
- Destructive metadata source: TS tool metadata and bridge specs (`src/tools/**`, `src/bridge/domains/*.ts`) plus C# `ToolDescriptor.DestructiveHint`, cross-checked by `src/contracts/command-contract.ts`
|
|
94
|
+
- AI skill entry: [skills/unitycli/SKILL.md](../skills/unitycli/SKILL.md)
|
|
@@ -32,25 +32,25 @@ alps-unity-cli的安全模型围绕三个核心原则:Tool副作用必须准
|
|
|
32
32
|
| `tools run texture.modify` | 修改 Texture 资产 |
|
|
33
33
|
| `tools run texture.delete` | 删除 Texture 资产 |
|
|
34
34
|
| `tools run shader.delete` | 删除 Shader 资产 |
|
|
35
|
-
| `tools run object.
|
|
35
|
+
| `tools run serialized-object.patch` | 修改场景对象或持久资产数据 |
|
|
36
36
|
| `tools run component.modify` | 修改场景组件或持久 Prefab/资产组件 |
|
|
37
37
|
| `tools run texture.import-settings` | 持久化 TextureImporter 设置 |
|
|
38
38
|
| `tools run texture.sprite` | 持久化 Sprite importer 与切片设置 |
|
|
39
|
-
| `tools run
|
|
40
|
-
| `tools run
|
|
41
|
-
| `tools run
|
|
39
|
+
| `tools run rendering.quality` | 持久化 QualitySettings |
|
|
40
|
+
| `tools run rendering.pipeline.settings` | 持久化默认 RenderPipelineAsset 并触发资产导入 |
|
|
41
|
+
| `tools run lighting.bake.settings` | 持久化 LightingSettings 与场景绑定 |
|
|
42
42
|
| `tools run build.platform.set` | 持久切换 active BuildTarget |
|
|
43
43
|
| `tools run build.profile.switch` | 持久切换 active Build Profile |
|
|
44
44
|
| `tools run editor.menu` | 执行编辑器菜单项 |
|
|
45
|
-
| `tools run reflection.method.
|
|
45
|
+
| `tools run runtime-reflection.method.invoke` | 调用精确同步 C# overload,并要求独立 completion proof |
|
|
46
46
|
| `tools run package.install` | 安装包 |
|
|
47
47
|
| `tools run package.remove` | 移除包 |
|
|
48
48
|
| `tools run package.deploy` | 复制本地 package 源到项目 Packages 目录 |
|
|
49
49
|
| `tools run package.restore` | 从 package.deploy 备份恢复或移除部署目录 |
|
|
50
50
|
| `tools run package.bridge-remove` | 移除 init 复制的 Bridge 包 |
|
|
51
|
-
| `tools run code.
|
|
51
|
+
| `tools run code.execute` | 在已打开的 Unity Editor 中执行代码 |
|
|
52
52
|
|
|
53
|
-
`code.
|
|
53
|
+
`code.execute`保留完整的同步C#执行能力,不按代码内容拒绝死循环、长时间sleep、阻塞等待、锁等待、同步I/O或长期占用Unity API。调用方在提交这类代码前必须先判断它对当前结果是否确有必要,并考虑有界写法或现有Tool能否达到同一结果;确有必要时仍可原样执行。代码一旦在Unity Editor主线程开始,`--timeout-ms`和取消只能停止CLI等待,不能强制中止正在运行的C#。Unity可能无响应,mutation owner可能无法收尾,业务状态可能部分改变或无法证明,恢复可能需要结束Editor进程。此时timeout不表示代码已经停止,不能据此直接重试。`--dry-run`只返回source hash和planned effect,不编译、不执行,也不验证代码能够结束。
|
|
54
54
|
|
|
55
55
|
### 可选预览
|
|
56
56
|
|
package/docs/tool-discovery.md
CHANGED
package/docs/tool-execution.md
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
unitycli tools run camera.list --input '{}'
|
|
10
10
|
|
|
11
11
|
# 通过 --input-file 传参(JSON 文件)
|
|
12
|
-
unitycli tools run camera
|
|
12
|
+
unitycli tools run screenshot.from-camera --input-file params.json
|
|
13
13
|
|
|
14
14
|
# 通过 --stdin 传参
|
|
15
|
-
echo '{"target":"Main Camera"}' | unitycli tools run camera
|
|
15
|
+
echo '{"target":"Main Camera"}' | unitycli tools run screenshot.from-camera --stdin
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## 执行路由
|
|
@@ -33,10 +33,10 @@ echo '{"target":"Main Camera"}' | unitycli tools run camera.screenshot --stdin
|
|
|
33
33
|
|
|
34
34
|
```powershell
|
|
35
35
|
# 正确:提供 inputSchema 要求的字段
|
|
36
|
-
unitycli tools run camera
|
|
36
|
+
unitycli tools run screenshot.from-camera --input '{"target":"Main Camera","output":"shot.png"}'
|
|
37
37
|
|
|
38
38
|
# 错误:缺少必需字段
|
|
39
|
-
unitycli tools run camera
|
|
39
|
+
unitycli tools run screenshot.from-camera --input '{}'
|
|
40
40
|
# → E_SCHEMA_INVALID, nextActions 指向 tools describe
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -66,10 +66,10 @@ Bridge-backed Tool由Unity Editor主线程执行。业务请求发送前,sessi
|
|
|
66
66
|
|
|
67
67
|
### `editor.compile`
|
|
68
68
|
|
|
69
|
-
`editor.compile` 是唯一公开编译 Tool。一次调用在同一 root request 下等待 pre-existing import/compile
|
|
69
|
+
`editor.compile` 是唯一公开编译 Tool。一次调用在同一 root request 下等待 pre-existing import/compile、刷新 Asset Database,并由 Unity 判断导入的脚本变化是否需要编译。Tool 只观察刷新后出现的新 `CompilationPipeline` cycle,不额外调用 `RequestScriptCompilation()`;有编译时跨 domain reload 恢复并收集本次 diagnostics,没有编译时返回 `compile.status="unchanged"`、`compilationTriggered=false` 和 `noOpReason="no-script-changes"`。公开成功要求 `compile.completed=true`、`errorCount=0`、`editorState.status=ready`;warning 可作为 diagnostics 返回。compiler error 返回 `E_UNITY_COMPILE_FAILED`,不会用旧 Console 历史判断本次结果。
|
|
70
70
|
|
|
71
71
|
```powershell
|
|
72
|
-
unitycli tools run editor.compile --input '{"
|
|
72
|
+
unitycli tools run editor.compile --input '{"includeWarnings":true}' --timeout-ms 120000
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
accepted、queued、phase、run ID 和 listener 字段仅属于内部 coordinator,不会成为公开成功。稳定 Play Mode 调用返回 `E_UNITY_COMPILE_REQUIRES_EDIT_MODE`;dry-run 只返回 planned effects,不触发 refresh 或 compile。
|
|
@@ -107,8 +107,8 @@ unitycli tools run asset.delete --input '{"path":"Assets/Temp.mat"}'
|
|
|
107
107
|
通用规则:
|
|
108
108
|
|
|
109
109
|
- discovery 的 `tools group list`、`tools search` 和省略name的`command`列表默认每页20项、最大100项;继续读取时将`pageInfo.nextCursor`原值传回CLI `--cursor`。
|
|
110
|
-
- `console.
|
|
111
|
-
- 深度序列化工具(`object.
|
|
110
|
+
- `console.read`、`scene.hierarchy`、`game-object.find`、`profiler.hierarchy`、`profiler.frame-debugger.events`、`profiler.memory-snapshot.list`、`runtime-reflection.type.schema` 和 `runtime-reflection.method.find` 使用 opaque string `nextCursor`。游标绑定原始位置、selector 与 Unity/assembly generation;Frame Debugger 游标还绑定 Editor listener、CLI enable/disable generation、事件数与捕获首尾签名。游标必须原样传回,改变 selector、generation 或捕获后返回 `E_CONTINUATION_STALE`。`truncated=true` 表示还有原始位置;不能把当前页数量当作总数。
|
|
111
|
+
- 深度序列化工具(`serialized-object.read`、`asset.get-data`、`component.get`)优先传 `paths` 或 `viewQuery`。`maxDepth` 为 `0..16`,`maxArrayItems` 为 `1..1000`,`paths` 最多128条并保持输入顺序;cycle/depth 在展开前裁决,所有路径共享同一预算,非 `IList` enumerable 不会预 materialize。`truncated` 与 `nextPath` 表示被截断子树。
|
|
112
112
|
- 上述 Unity 主线程读取默认共用 `10000` scanned records、`4096` nodes、`2048` getters、`4096` reflection calls、`250ms` monotonic main-thread work 和 `1 MiB` serialized UTF-8。`budget` 可收紧或提高到公开上限 `100000`、`20000`、`10000`、`20000`、`2000ms`、`8 MiB`;零、负数或超限值在读取/effect前返回 `E_SCHEMA_INVALID` 或 `E_REQUEST_BUDGET_INVALID`。
|
|
113
113
|
- 文本源码工具(如 `shader.read`)使用 `offset` 和 `maxBytes` 分段读取。输出 `truncated=true` 时,下一次把 `nextOffset` 作为新的 `offset`。
|
|
114
114
|
- 截图/相机捕获的单图边长最多8192且最多16777216像素,capture count最多36。完整计划必须在首个effect前满足默认33554432 total pixels、128 MiB peak temporary memory、64 MiB artifact bytes;公开上限为67108864、256 MiB、256 MiB。`orbit`逐图释放,`surround`逐图写入contact sheet后释放,不同时保留所有tile。内联图片仍限512 KiB。
|
|
@@ -142,7 +142,7 @@ unitycli tools run shader.read --input '{"path":"Assets/Shaders/Probe.shader","m
|
|
|
142
142
|
| 错误码 | 原因 | 恢复方式 |
|
|
143
143
|
|--------|------|---------|
|
|
144
144
|
| `E_TOOL_NOT_FOUND_FOR_TARGET` | 名称不属于当前实例完整 Tool 目录 | 运行 `tools search <k1|k2|...>` 发现相关 Tool,再用 `tools describe` 检查 requiresPackages 和 available |
|
|
145
|
-
| `E_RUNTIME_NOT_READY` | Runtime 工具但非 Play Mode | 先执行 `tools run editor.play`,transient 可重试 |
|
|
145
|
+
| `E_RUNTIME_NOT_READY` | Runtime 工具但非 Play Mode | 先执行 `tools run editor.play-mode.start`,transient 可重试 |
|
|
146
146
|
| `E_SCHEMA_INVALID` | 输入缺少 inputSchema.required 字段 | 查看 `tools describe` 的 inputSchema |
|
|
147
147
|
| `E_DRY_RUN_UNSUPPORTED` | 工具不支持 dry-run | 去除可选 `--dry-run` 后直接调用 |
|
|
148
148
|
| `E_INSTANCE_CONFLICT` | 至少两个verified live process claim属于同一canonical project | 关闭重复Editor,只保留目标session |
|
|
@@ -157,24 +157,24 @@ unitycli tools run shader.read --input '{"path":"Assets/Shaders/Probe.shader","m
|
|
|
157
157
|
|
|
158
158
|
## Object 与 Component 修改
|
|
159
159
|
|
|
160
|
-
`object.
|
|
160
|
+
`serialized-object.patch` 和 `component.modify` 只接受非空 `pathPatches`。每一项必须是可由 Unity `SerializedObject.FindProperty` 定位并 fresh readback 的 direct `replace`;不提供 merge、add、remove、reflection member path 或 diff 旁路。支持的值类型以当前 `inputSchema` 和错误 `nextActions` 为准。
|
|
161
161
|
|
|
162
|
-
`path` 使用 Unity serialized property path,例如 `m_Name`、`m_LocalPosition.x` 或数组的 `Array.data[0]`。它不是 `/` 分隔的 C# member path。`asset.
|
|
162
|
+
`path` 使用 Unity serialized property path,例如 `m_Name`、`m_LocalPosition.x` 或数组的 `Array.data[0]`。它不是 `/` 分隔的 C# member path。`asset.write-text` 是独立的文本资产覆写 Tool,不使用 ObjectPatch。
|
|
163
163
|
|
|
164
164
|
```powershell
|
|
165
165
|
# 先读后改
|
|
166
166
|
unitycli tools run component.get --input '{"path":"Player","component":"Rigidbody"}'
|
|
167
167
|
unitycli tools run component.modify --input '{"path":"Player","component":"Rigidbody","pathPatches":[{"path":"m_Mass","op":"replace","value":10}]}'
|
|
168
168
|
|
|
169
|
-
unitycli tools run object.
|
|
169
|
+
unitycli tools run serialized-object.patch --input '{"path":"Player","pathPatches":[{"path":"m_Name","op":"replace","value":"PlayerModified"}]}'
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
## reflection.method.
|
|
172
|
+
## runtime-reflection.method.invoke
|
|
173
173
|
|
|
174
|
-
`reflection.method.
|
|
174
|
+
`runtime-reflection.method.invoke` 不做调用范围限制(public/private/static/instance、任意 namespace/assembly、Editor/Runtime),且 `destructiveHint: true`。先用 `runtime-reflection.method.find` 获取签名;存在同名 overload 时,将选中签名的 `parameterType` 数组作为 `parameterTypes`。公开调用即授权:
|
|
175
175
|
|
|
176
176
|
```powershell
|
|
177
|
-
unitycli tools run reflection.method.
|
|
177
|
+
unitycli tools run runtime-reflection.method.invoke --input '{
|
|
178
178
|
"typeName":"UnityEngine.Transform",
|
|
179
179
|
"methodName":"Translate",
|
|
180
180
|
"parameterTypes":["UnityEngine.Vector3","UnityEngine.Space"],
|
|
@@ -187,4 +187,4 @@ unitycli tools run reflection.method.call --input '{
|
|
|
187
187
|
|
|
188
188
|
## asset.get-data 复用 serializer
|
|
189
189
|
|
|
190
|
-
`asset.get-data` 是 asset-friendly wrapper,底层复用 `object.
|
|
190
|
+
`asset.get-data` 是 asset-friendly wrapper,底层复用 `serialized-object.read` 的 `ObjectSerializer`,不重复实现序列化。`serialized-object.read` 是任意 `UnityEngine.Object` 深序列化主入口,`asset.get-data` 提供按 assetPath 解析的便捷入口。
|
|
@@ -2,20 +2,20 @@ import { boolFlag, compactArgs, floatFlag, numberFlag, stringFlag, targetArgs }
|
|
|
2
2
|
import type { BridgeCommandSpec } from "../types.js";
|
|
3
3
|
|
|
4
4
|
export const cinemachineBridgeSpecs: BridgeCommandSpec[] = markToolsOnly([
|
|
5
|
-
{ group: "cinemachine", command: "ping", bridgeCommand: "
|
|
6
|
-
{ group: "cinemachine", command: "create", bridgeCommand: "
|
|
7
|
-
{ group: "cinemachine", command: "target", bridgeCommand: "
|
|
8
|
-
{ group: "cinemachine", command: "lens", bridgeCommand: "
|
|
9
|
-
{ group: "cinemachine", command: "priority", bridgeCommand: "
|
|
10
|
-
{ group: "cinemachine", command: "blend", bridgeCommand: "
|
|
11
|
-
{ group: "cinemachine", command: "body", bridgeCommand: "
|
|
12
|
-
{ group: "cinemachine", command: "aim", bridgeCommand: "
|
|
13
|
-
{ group: "cinemachine", command: "noise", bridgeCommand: "
|
|
14
|
-
{ group: "cinemachine", command: "brain.ensure", bridgeCommand: "
|
|
15
|
-
{ group: "cinemachine", command: "brain.status", bridgeCommand: "
|
|
16
|
-
{ group: "cinemachine", command: "extension.list", bridgeCommand: "
|
|
17
|
-
{ group: "cinemachine", command: "extension.add", bridgeCommand: "
|
|
18
|
-
{ group: "cinemachine", command: "extension.remove", bridgeCommand: "
|
|
5
|
+
{ group: "cinemachine", command: "ping", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.ping", buildArgs: cinemachinePingArgs },
|
|
6
|
+
{ group: "cinemachine", command: "create", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.create", buildArgs: cinemachineCreateArgs },
|
|
7
|
+
{ group: "cinemachine", command: "target", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.target", buildArgs: cinemachineTargetArgs },
|
|
8
|
+
{ group: "cinemachine", command: "lens", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.lens", buildArgs: cinemachineLensArgs },
|
|
9
|
+
{ group: "cinemachine", command: "priority", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.priority", buildArgs: cinemachinePriorityArgs },
|
|
10
|
+
{ group: "cinemachine", command: "blend", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.blend", buildArgs: cinemachineBlendArgs },
|
|
11
|
+
{ group: "cinemachine", command: "body", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.body", buildArgs: cinemachineBodyArgs },
|
|
12
|
+
{ group: "cinemachine", command: "aim", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.aim", buildArgs: cinemachineAimArgs },
|
|
13
|
+
{ group: "cinemachine", command: "noise", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.noise", buildArgs: cinemachineNoiseArgs },
|
|
14
|
+
{ group: "cinemachine", command: "brain.ensure", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.brain.ensure", buildArgs: cinemachineTargetOnlyArgs },
|
|
15
|
+
{ group: "cinemachine", command: "brain.status", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.brain.status", buildArgs: cinemachineTargetOnlyArgs },
|
|
16
|
+
{ group: "cinemachine", command: "extension.list", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.extension.list", buildArgs: cinemachineTargetOnlyArgs },
|
|
17
|
+
{ group: "cinemachine", command: "extension.add", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.extension.add", buildArgs: cinemachineExtensionTypeArgs },
|
|
18
|
+
{ group: "cinemachine", command: "extension.remove", bridgeCommand: "catalog.editor.run", toolName: "cinemachine.extension.remove", buildArgs: cinemachineExtensionTypeArgs }
|
|
19
19
|
]);
|
|
20
20
|
|
|
21
21
|
function markToolsOnly(specs: BridgeCommandSpec[]): BridgeCommandSpec[] {
|
|
@@ -2,13 +2,13 @@ import { boolFlag, compactArgs, floatFlag, stringFlag } from "../args.js";
|
|
|
2
2
|
import type { BridgeCommandSpec } from "../types.js";
|
|
3
3
|
|
|
4
4
|
export const hdrpBridgeSpecs: BridgeCommandSpec[] = markToolsOnly([
|
|
5
|
-
{ group: "hdrp", command: "volume
|
|
6
|
-
{ group: "hdrp", command: "volume
|
|
7
|
-
{ group: "hdrp", command: "volume
|
|
8
|
-
{ group: "hdrp", command: "volume
|
|
9
|
-
{ group: "hdrp", command: "volume
|
|
10
|
-
{ group: "hdrp", command: "settings
|
|
11
|
-
{ group: "hdrp", command: "settings
|
|
5
|
+
{ group: "hdrp", command: "volume.list", bridgeCommand: "catalog.editor.run", toolName: "hdrp.volume.list", buildArgs: emptyArgs },
|
|
6
|
+
{ group: "hdrp", command: "volume.create", bridgeCommand: "catalog.editor.run", toolName: "hdrp.volume.create", buildArgs: volumeCreateArgs },
|
|
7
|
+
{ group: "hdrp", command: "volume.info", bridgeCommand: "catalog.editor.run", toolName: "hdrp.volume.info", buildArgs: volumeTargetArgs },
|
|
8
|
+
{ group: "hdrp", command: "volume.add-effect", bridgeCommand: "catalog.editor.run", toolName: "hdrp.volume.add-effect", buildArgs: volumeEffectArgs },
|
|
9
|
+
{ group: "hdrp", command: "volume.set", bridgeCommand: "catalog.editor.run", toolName: "hdrp.volume.set", buildArgs: volumeSetArgs },
|
|
10
|
+
{ group: "hdrp", command: "settings.get", bridgeCommand: "catalog.editor.run", toolName: "hdrp.settings.get", buildArgs: emptyArgs },
|
|
11
|
+
{ group: "hdrp", command: "settings.set", bridgeCommand: "catalog.editor.run", toolName: "hdrp.settings.set", buildArgs: hdrpSettingsArgs, destructiveHint: true, supportsDryRun: true }
|
|
12
12
|
]);
|
|
13
13
|
|
|
14
14
|
function markToolsOnly(specs: BridgeCommandSpec[]): BridgeCommandSpec[] {
|
|
@@ -415,7 +415,7 @@ namespace UnityCli
|
|
|
415
415
|
var profile = HdrpToolSupport.GetProfileForPlanning(volume.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
416
416
|
var addMethod = HdrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
417
417
|
if (profile == null || addMethod == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_NOT_FOUND", "The target Volume has no writable Add API.", "Create a Volume or assign a profile before adding an effect.");
|
|
418
|
-
if (profile.components.Any(component => component != null && effectType.IsInstanceOfType(component))) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use volume.set to modify the existing effect.");
|
|
418
|
+
if (profile.components.Any(component => component != null && effectType.IsInstanceOfType(component))) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use hdrp.volume.set to modify the existing effect.");
|
|
419
419
|
}
|
|
420
420
|
|
|
421
421
|
internal sealed class VolumeSetMutationPlan { internal int GameObjectId { get; set; } internal int PlanningProfileId { get; set; } internal int SharedProfileId { get; set; } internal Type EffectType { get; set; } internal string PropertyPath { get; set; } internal SerializedPropertyType PropertyType { get; set; } internal object ExpectedValue { get; set; } internal string ExpectedReadback { get; set; } }
|
|
@@ -488,7 +488,7 @@ namespace UnityCli
|
|
|
488
488
|
var addMethod = HdrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
489
489
|
if (profile == null || addMethod == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_NOT_FOUND", "The target Volume has no writable in-memory profile.", "Create a Volume with hdrp.volume.create or assign a profile before adding an effect.");
|
|
490
490
|
var countBefore = profile.components.Count(component => component != null && effectType.IsInstanceOfType(component));
|
|
491
|
-
if (countBefore != 0) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use volume.set to modify the existing effect.");
|
|
491
|
+
if (countBefore != 0) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use hdrp.volume.set to modify the existing effect.");
|
|
492
492
|
addMethod.Invoke(profile, new object[] { effectType, true });
|
|
493
493
|
var observedObject = ResolveVolume(gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture), errorPrefix);
|
|
494
494
|
var observedProfile = HdrpToolSupport.GetVolumeProfile(observedObject.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
@@ -4,10 +4,10 @@ import type { BridgeCommandSpec, BridgeFlags } from "../types.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* ProBuilder extension bridge specs — 37 single-action tools.
|
|
6
6
|
*
|
|
7
|
-
* Each CLI command is routed through the
|
|
7
|
+
* Each CLI command is routed through the catalog.editor.run bridge command
|
|
8
8
|
* to reach ProBuilder IUnityCliTool handlers in the Unity package. The
|
|
9
|
-
* bridgeCommand field is always "
|
|
10
|
-
* the toolName field carries the underlying
|
|
9
|
+
* bridgeCommand field is always "catalog.editor.run";
|
|
10
|
+
* the toolName field carries the underlying catalog tool name (e.g.
|
|
11
11
|
* "probuilder.ping"). The buildArgs output is wrapped into { name, input }
|
|
12
12
|
* so the C# ProjectToolRun handler receives both the tool name and its
|
|
13
13
|
* JSON input payload.
|
|
@@ -15,63 +15,63 @@ import type { BridgeCommandSpec, BridgeFlags } from "../types.js";
|
|
|
15
15
|
|
|
16
16
|
export const probuilderBridgeSpecs: BridgeCommandSpec[] = markToolsOnly([
|
|
17
17
|
// ─── Utility ───────────────────────────────────────────
|
|
18
|
-
{ group: "probuilder", command: "ping", bridgeCommand: "
|
|
19
|
-
{ group: "probuilder", command: "scene", bridgeCommand: "
|
|
18
|
+
{ group: "probuilder", command: "ping", bridgeCommand: "catalog.editor.run", toolName: "probuilder.ping", buildArgs: probuilderPingArgs },
|
|
19
|
+
{ group: "probuilder", command: "scene", bridgeCommand: "catalog.editor.run", toolName: "probuilder.scene", buildArgs: probuilderSceneArgs },
|
|
20
20
|
|
|
21
21
|
// ─── Shape Creation ────────────────────────────────────
|
|
22
|
-
{ group: "probuilder", command: "create-shape", bridgeCommand: "
|
|
23
|
-
{ group: "probuilder", command: "create-poly-shape", bridgeCommand: "
|
|
22
|
+
{ group: "probuilder", command: "create-shape", bridgeCommand: "catalog.editor.run", toolName: "probuilder.create-shape", buildArgs: probuilderCreateShapeArgs },
|
|
23
|
+
{ group: "probuilder", command: "create-poly-shape", bridgeCommand: "catalog.editor.run", toolName: "probuilder.create-poly-shape", buildArgs: probuilderCreatePolyShapeArgs },
|
|
24
24
|
|
|
25
25
|
// ─── Face Operations ──────────────────────────────────
|
|
26
|
-
{ group: "probuilder", command: "extrude-faces", bridgeCommand: "
|
|
27
|
-
{ group: "probuilder", command: "delete-faces", bridgeCommand: "
|
|
28
|
-
{ group: "probuilder", command: "detach-faces", bridgeCommand: "
|
|
29
|
-
{ group: "probuilder", command: "merge-faces", bridgeCommand: "
|
|
30
|
-
{ group: "probuilder", command: "subdivide", bridgeCommand: "
|
|
31
|
-
{ group: "probuilder", command: "flip-normals", bridgeCommand: "
|
|
32
|
-
{ group: "probuilder", command: "select-faces", bridgeCommand: "
|
|
33
|
-
{ group: "probuilder", command: "set-face-material", bridgeCommand: "
|
|
34
|
-
{ group: "probuilder", command: "set-face-color", bridgeCommand: "
|
|
35
|
-
{ group: "probuilder", command: "set-face-uvs", bridgeCommand: "
|
|
26
|
+
{ group: "probuilder", command: "extrude-faces", bridgeCommand: "catalog.editor.run", toolName: "probuilder.extrude-faces", buildArgs: probuilderTargetWithIndicesArgs },
|
|
27
|
+
{ group: "probuilder", command: "delete-faces", bridgeCommand: "catalog.editor.run", toolName: "probuilder.delete-faces", buildArgs: probuilderTargetWithIndicesArgs },
|
|
28
|
+
{ group: "probuilder", command: "detach-faces", bridgeCommand: "catalog.editor.run", toolName: "probuilder.detach-faces", buildArgs: probuilderDetachFacesArgs },
|
|
29
|
+
{ group: "probuilder", command: "merge-faces", bridgeCommand: "catalog.editor.run", toolName: "probuilder.merge-faces", buildArgs: probuilderTargetWithIndicesArgs },
|
|
30
|
+
{ group: "probuilder", command: "subdivide", bridgeCommand: "catalog.editor.run", toolName: "probuilder.subdivide", buildArgs: probuilderTargetWithOptionalIndicesArgs },
|
|
31
|
+
{ group: "probuilder", command: "flip-normals", bridgeCommand: "catalog.editor.run", toolName: "probuilder.flip-normals", buildArgs: probuilderTargetWithOptionalIndicesArgs },
|
|
32
|
+
{ group: "probuilder", command: "select-faces", bridgeCommand: "catalog.editor.run", toolName: "probuilder.select-faces", buildArgs: probuilderSelectFacesArgs },
|
|
33
|
+
{ group: "probuilder", command: "set-face-material", bridgeCommand: "catalog.editor.run", toolName: "probuilder.set-face-material", buildArgs: probuilderSetFaceMaterialArgs },
|
|
34
|
+
{ group: "probuilder", command: "set-face-color", bridgeCommand: "catalog.editor.run", toolName: "probuilder.set-face-color", buildArgs: probuilderSetFaceColorArgs },
|
|
35
|
+
{ group: "probuilder", command: "set-face-uvs", bridgeCommand: "catalog.editor.run", toolName: "probuilder.set-face-uvs", buildArgs: probuilderSetFaceUvsArgs },
|
|
36
36
|
|
|
37
37
|
// ─── Edge Operations ──────────────────────────────────
|
|
38
|
-
{ group: "probuilder", command: "extrude-edges", bridgeCommand: "
|
|
39
|
-
{ group: "probuilder", command: "bevel-edges", bridgeCommand: "
|
|
40
|
-
{ group: "probuilder", command: "bridge-edges", bridgeCommand: "
|
|
41
|
-
{ group: "probuilder", command: "connect-elements", bridgeCommand: "
|
|
38
|
+
{ group: "probuilder", command: "extrude-edges", bridgeCommand: "catalog.editor.run", toolName: "probuilder.extrude-edges", buildArgs: probuilderEdgeArgs },
|
|
39
|
+
{ group: "probuilder", command: "bevel-edges", bridgeCommand: "catalog.editor.run", toolName: "probuilder.bevel-edges", buildArgs: probuilderBevelArgs },
|
|
40
|
+
{ group: "probuilder", command: "bridge-edges", bridgeCommand: "catalog.editor.run", toolName: "probuilder.bridge-edges", buildArgs: probuilderBridgeEdgesArgs },
|
|
41
|
+
{ group: "probuilder", command: "connect-elements", bridgeCommand: "catalog.editor.run", toolName: "probuilder.connect-elements", buildArgs: probuilderConnectArgs },
|
|
42
42
|
|
|
43
43
|
// ─── Mesh Combine / Merge ─────────────────────────────
|
|
44
|
-
{ group: "probuilder", command: "combine-meshes", bridgeCommand: "
|
|
45
|
-
{ group: "probuilder", command: "merge-objects", bridgeCommand: "
|
|
46
|
-
{ group: "probuilder", command: "duplicate-and-flip", bridgeCommand: "
|
|
47
|
-
{ group: "probuilder", command: "create-polygon", bridgeCommand: "
|
|
44
|
+
{ group: "probuilder", command: "combine-meshes", bridgeCommand: "catalog.editor.run", toolName: "probuilder.combine-meshes", buildArgs: probuilderMultiTargetArgs },
|
|
45
|
+
{ group: "probuilder", command: "merge-objects", bridgeCommand: "catalog.editor.run", toolName: "probuilder.merge-objects", buildArgs: probuilderMergeObjectsArgs },
|
|
46
|
+
{ group: "probuilder", command: "duplicate-and-flip", bridgeCommand: "catalog.editor.run", toolName: "probuilder.duplicate-and-flip", buildArgs: probuilderTargetWithOptionalIndicesArgs },
|
|
47
|
+
{ group: "probuilder", command: "create-polygon", bridgeCommand: "catalog.editor.run", toolName: "probuilder.create-polygon", buildArgs: probuilderCreatePolygonArgs },
|
|
48
48
|
|
|
49
49
|
// ─── Vertex Operations ────────────────────────────────
|
|
50
|
-
{ group: "probuilder", command: "merge-vertices", bridgeCommand: "
|
|
51
|
-
{ group: "probuilder", command: "weld-vertices", bridgeCommand: "
|
|
52
|
-
{ group: "probuilder", command: "split-vertices", bridgeCommand: "
|
|
53
|
-
{ group: "probuilder", command: "move-vertices", bridgeCommand: "
|
|
54
|
-
{ group: "probuilder", command: "insert-vertex", bridgeCommand: "
|
|
55
|
-
{ group: "probuilder", command: "append-vertices-to-edge", bridgeCommand: "
|
|
50
|
+
{ group: "probuilder", command: "merge-vertices", bridgeCommand: "catalog.editor.run", toolName: "probuilder.merge-vertices", buildArgs: probuilderVertexIndicesArgs },
|
|
51
|
+
{ group: "probuilder", command: "weld-vertices", bridgeCommand: "catalog.editor.run", toolName: "probuilder.weld-vertices", buildArgs: probuilderWeldArgs },
|
|
52
|
+
{ group: "probuilder", command: "split-vertices", bridgeCommand: "catalog.editor.run", toolName: "probuilder.split-vertices", buildArgs: probuilderVertexIndicesArgs },
|
|
53
|
+
{ group: "probuilder", command: "move-vertices", bridgeCommand: "catalog.editor.run", toolName: "probuilder.move-vertices", buildArgs: probuilderMoveVerticesArgs },
|
|
54
|
+
{ group: "probuilder", command: "insert-vertex", bridgeCommand: "catalog.editor.run", toolName: "probuilder.insert-vertex", buildArgs: probuilderInsertVertexArgs },
|
|
55
|
+
{ group: "probuilder", command: "append-vertices-to-edge", bridgeCommand: "catalog.editor.run", toolName: "probuilder.append-vertices-to-edge", buildArgs: probuilderAppendVerticesArgs },
|
|
56
56
|
|
|
57
57
|
// ─── Info / Inspection ────────────────────────────────
|
|
58
|
-
{ group: "probuilder", command: "mesh-info", bridgeCommand: "
|
|
59
|
-
{ group: "probuilder", command: "validate-mesh", bridgeCommand: "
|
|
58
|
+
{ group: "probuilder", command: "mesh-info", bridgeCommand: "catalog.editor.run", toolName: "probuilder.mesh-info", buildArgs: probuilderMeshInfoArgs },
|
|
59
|
+
{ group: "probuilder", command: "validate-mesh", bridgeCommand: "catalog.editor.run", toolName: "probuilder.validate-mesh", buildArgs: probuilderTargetOnlyArgs },
|
|
60
60
|
|
|
61
61
|
// ─── Conversion ───────────────────────────────────────
|
|
62
|
-
{ group: "probuilder", command: "convert-to-probuilder", bridgeCommand: "
|
|
62
|
+
{ group: "probuilder", command: "convert-to-probuilder", bridgeCommand: "catalog.editor.run", toolName: "probuilder.convert-to-probuilder", buildArgs: probuilderTargetOnlyArgs },
|
|
63
63
|
|
|
64
64
|
// ─── Smoothing ────────────────────────────────────────
|
|
65
|
-
{ group: "probuilder", command: "set-smoothing", bridgeCommand: "
|
|
66
|
-
{ group: "probuilder", command: "auto-smooth", bridgeCommand: "
|
|
65
|
+
{ group: "probuilder", command: "set-smoothing", bridgeCommand: "catalog.editor.run", toolName: "probuilder.set-smoothing", buildArgs: probuilderSetSmoothingArgs },
|
|
66
|
+
{ group: "probuilder", command: "auto-smooth", bridgeCommand: "catalog.editor.run", toolName: "probuilder.auto-smooth", buildArgs: probuilderAutoSmoothArgs },
|
|
67
67
|
|
|
68
68
|
// ─── Pivot / Transform ────────────────────────────────
|
|
69
|
-
{ group: "probuilder", command: "center-pivot", bridgeCommand: "
|
|
70
|
-
{ group: "probuilder", command: "freeze-transform", bridgeCommand: "
|
|
71
|
-
{ group: "probuilder", command: "set-pivot", bridgeCommand: "
|
|
69
|
+
{ group: "probuilder", command: "center-pivot", bridgeCommand: "catalog.editor.run", toolName: "probuilder.center-pivot", buildArgs: probuilderTargetOnlyArgs },
|
|
70
|
+
{ group: "probuilder", command: "freeze-transform", bridgeCommand: "catalog.editor.run", toolName: "probuilder.freeze-transform", buildArgs: probuilderTargetOnlyArgs },
|
|
71
|
+
{ group: "probuilder", command: "set-pivot", bridgeCommand: "catalog.editor.run", toolName: "probuilder.set-pivot", buildArgs: probuilderSetPivotArgs },
|
|
72
72
|
|
|
73
73
|
// ─── Repair ───────────────────────────────────────────
|
|
74
|
-
{ group: "probuilder", command: "repair-mesh", bridgeCommand: "
|
|
74
|
+
{ group: "probuilder", command: "repair-mesh", bridgeCommand: "catalog.editor.run", toolName: "probuilder.repair-mesh", buildArgs: probuilderTargetOnlyArgs }
|
|
75
75
|
]);
|
|
76
76
|
|
|
77
77
|
function markToolsOnly(specs: BridgeCommandSpec[]): BridgeCommandSpec[] {
|
|
@@ -5,7 +5,7 @@ namespace UnityCli.ProBuilder
|
|
|
5
5
|
/// <summary>
|
|
6
6
|
/// ProBuilder 工具 handler 的结构化错误工厂。
|
|
7
7
|
/// 统一返回 <see cref="UnityCliBridge.BridgeCommandException"/>,由调用处 throw 出去,
|
|
8
|
-
/// 经
|
|
8
|
+
/// 经 catalog.editor.run / catalog.player.run 的 catch 块转成标准错误 envelope。
|
|
9
9
|
/// 错误码统一使用当前 extension dependency、target、schema、operation 与 outcome unknown 契约,
|
|
10
10
|
/// details 与多个 nextActions 通过 exception 字段透传。
|
|
11
11
|
/// </summary>
|
|
@@ -2,18 +2,18 @@ import { boolFlag, compactArgs, floatFlag, numberFlag, stringFlag } from "../arg
|
|
|
2
2
|
import type { BridgeCommandSpec } from "../types.js";
|
|
3
3
|
|
|
4
4
|
export const urpBridgeSpecs: BridgeCommandSpec[] = markToolsOnly([
|
|
5
|
-
{ group: "urp", command: "feature
|
|
6
|
-
{ group: "urp", command: "feature
|
|
7
|
-
{ group: "urp", command: "feature
|
|
8
|
-
{ group: "urp", command: "feature
|
|
9
|
-
{ group: "urp", command: "feature
|
|
10
|
-
{ group: "urp", command: "volume
|
|
11
|
-
{ group: "urp", command: "volume
|
|
12
|
-
{ group: "urp", command: "volume
|
|
13
|
-
{ group: "urp", command: "volume
|
|
14
|
-
{ group: "urp", command: "volume
|
|
15
|
-
{ group: "urp", command: "settings
|
|
16
|
-
{ group: "urp", command: "settings
|
|
5
|
+
{ group: "urp", command: "feature.list", bridgeCommand: "catalog.editor.run", toolName: "urp.feature.list", buildArgs: emptyArgs },
|
|
6
|
+
{ group: "urp", command: "feature.add", bridgeCommand: "catalog.editor.run", toolName: "urp.feature.add", buildArgs: urpFeatureAddArgs, destructiveHint: true, supportsDryRun: true },
|
|
7
|
+
{ group: "urp", command: "feature.toggle", bridgeCommand: "catalog.editor.run", toolName: "urp.feature.toggle", buildArgs: urpFeatureToggleArgs, destructiveHint: true, supportsDryRun: true },
|
|
8
|
+
{ group: "urp", command: "feature.configure", bridgeCommand: "catalog.editor.run", toolName: "urp.feature.configure", buildArgs: urpFeatureConfigureArgs, destructiveHint: true, supportsDryRun: true },
|
|
9
|
+
{ group: "urp", command: "feature.remove", bridgeCommand: "catalog.editor.run", toolName: "urp.feature.remove", buildArgs: urpFeatureIndexArgs, destructiveHint: true, supportsDryRun: true },
|
|
10
|
+
{ group: "urp", command: "volume.list", bridgeCommand: "catalog.editor.run", toolName: "urp.volume.list", buildArgs: emptyArgs },
|
|
11
|
+
{ group: "urp", command: "volume.create", bridgeCommand: "catalog.editor.run", toolName: "urp.volume.create", buildArgs: volumeCreateArgs },
|
|
12
|
+
{ group: "urp", command: "volume.info", bridgeCommand: "catalog.editor.run", toolName: "urp.volume.info", buildArgs: volumeTargetArgs },
|
|
13
|
+
{ group: "urp", command: "volume.add-effect", bridgeCommand: "catalog.editor.run", toolName: "urp.volume.add-effect", buildArgs: volumeEffectArgs },
|
|
14
|
+
{ group: "urp", command: "volume.set", bridgeCommand: "catalog.editor.run", toolName: "urp.volume.set", buildArgs: volumeSetArgs },
|
|
15
|
+
{ group: "urp", command: "settings.get", bridgeCommand: "catalog.editor.run", toolName: "urp.settings.get", buildArgs: emptyArgs },
|
|
16
|
+
{ group: "urp", command: "settings.set", bridgeCommand: "catalog.editor.run", toolName: "urp.settings.set", buildArgs: urpSettingsArgs, destructiveHint: true, supportsDryRun: true }
|
|
17
17
|
]);
|
|
18
18
|
|
|
19
19
|
function markToolsOnly(specs: BridgeCommandSpec[]): BridgeCommandSpec[] {
|
|
@@ -592,7 +592,7 @@ namespace UnityCli
|
|
|
592
592
|
var addMethod = UrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
593
593
|
if (profile == null || addMethod == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_NOT_FOUND", "The target Volume has no writable in-memory profile.", "Create a Volume with urp.volume.create or assign a profile before adding an effect.");
|
|
594
594
|
var countBefore = profile.components.Count(component => component != null && effectType.IsInstanceOfType(component));
|
|
595
|
-
if (countBefore != 0) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use volume.set to modify the existing effect.");
|
|
595
|
+
if (countBefore != 0) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use urp.volume.set to modify the existing effect.");
|
|
596
596
|
addMethod.Invoke(profile, new object[] { effectType, true });
|
|
597
597
|
var observedObject = ResolveVolume(gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture), errorPrefix);
|
|
598
598
|
var observedProfile = UrpToolSupport.GetVolumeProfile(observedObject.GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
@@ -613,7 +613,7 @@ namespace UnityCli
|
|
|
613
613
|
var profile = UrpToolSupport.GetProfileForPlanning(ResolveVolume(target, errorPrefix).GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
614
614
|
var addMethod = UrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
615
615
|
if (profile == null || addMethod == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_NOT_FOUND", "The target Volume has no writable Add API.", "Create a Volume with urp.volume.create or assign a profile before adding an effect.");
|
|
616
|
-
if (profile.components.Any(component => component != null && effectType.IsInstanceOfType(component))) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use volume.set to modify the existing effect.");
|
|
616
|
+
if (profile.components.Any(component => component != null && effectType.IsInstanceOfType(component))) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use urp.volume.set to modify the existing effect.");
|
|
617
617
|
}
|
|
618
618
|
|
|
619
619
|
internal sealed class VolumeSetMutationPlan
|