@alpsckr/unitycli 0.4.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/README.md +389 -0
- package/contracts/command-contract.json +3972 -0
- package/contracts/stable-session/admission-acquire-v1.schema.json +16 -0
- package/contracts/stable-session/admission-response-v1.schema.json +30 -0
- package/contracts/stable-session/admission-revoke-v1.schema.json +15 -0
- package/contracts/stable-session/admission-transport-v1.json +36 -0
- package/contracts/stable-session/bridge-request-v2.schema.json +26 -0
- package/contracts/stable-session/canonical-path-v1-golden.json +23 -0
- package/contracts/stable-session/completion-contract.schema.json +46 -0
- package/contracts/stable-session/direct-call-semantics.json +102 -0
- package/contracts/stable-session/editor-state.schema.json +92 -0
- package/contracts/stable-session/health-v3.schema.json +47 -0
- package/contracts/stable-session/instance-registry-v3.schema.json +152 -0
- package/contracts/stable-session/removal-map.json +27 -0
- package/contracts/stable-session/request-digest-v1-golden.json +7 -0
- package/contracts/stable-session/runtime-config-v2.schema.json +27 -0
- package/contracts/static-capability-catalog.json +48226 -0
- package/contracts/tool-completion-contract.json +11322 -0
- package/dist/args.d.ts +27 -0
- package/dist/args.js +109 -0
- package/dist/args.js.map +1 -0
- package/dist/bridge/admission.d.ts +28 -0
- package/dist/bridge/admission.js +29 -0
- package/dist/bridge/admission.js.map +1 -0
- package/dist/bridge/args.d.ts +16 -0
- package/dist/bridge/args.js +123 -0
- package/dist/bridge/args.js.map +1 -0
- package/dist/bridge/domains/animation.d.ts +2 -0
- package/dist/bridge/domains/animation.js +199 -0
- package/dist/bridge/domains/animation.js.map +1 -0
- package/dist/bridge/domains/asset.d.ts +2 -0
- package/dist/bridge/domains/asset.js +85 -0
- package/dist/bridge/domains/asset.js.map +1 -0
- package/dist/bridge/domains/build.d.ts +2 -0
- package/dist/bridge/domains/build.js +35 -0
- package/dist/bridge/domains/build.js.map +1 -0
- package/dist/bridge/domains/camera.d.ts +2 -0
- package/dist/bridge/domains/camera.js +54 -0
- package/dist/bridge/domains/camera.js.map +1 -0
- package/dist/bridge/domains/code.d.ts +2 -0
- package/dist/bridge/domains/code.js +17 -0
- package/dist/bridge/domains/code.js.map +1 -0
- package/dist/bridge/domains/console.d.ts +2 -0
- package/dist/bridge/domains/console.js +34 -0
- package/dist/bridge/domains/console.js.map +1 -0
- package/dist/bridge/domains/diagnose.d.ts +2 -0
- package/dist/bridge/domains/diagnose.js +11 -0
- package/dist/bridge/domains/diagnose.js.map +1 -0
- package/dist/bridge/domains/editor.d.ts +2 -0
- package/dist/bridge/domains/editor.js +66 -0
- package/dist/bridge/domains/editor.js.map +1 -0
- package/dist/bridge/domains/extension.d.ts +8 -0
- package/dist/bridge/domains/extension.js +20 -0
- package/dist/bridge/domains/extension.js.map +1 -0
- package/dist/bridge/domains/game-object.d.ts +2 -0
- package/dist/bridge/domains/game-object.js +179 -0
- package/dist/bridge/domains/game-object.js.map +1 -0
- package/dist/bridge/domains/graphics.d.ts +2 -0
- package/dist/bridge/domains/graphics.js +185 -0
- package/dist/bridge/domains/graphics.js.map +1 -0
- package/dist/bridge/domains/material.d.ts +2 -0
- package/dist/bridge/domains/material.js +70 -0
- package/dist/bridge/domains/material.js.map +1 -0
- package/dist/bridge/domains/navmesh.d.ts +2 -0
- package/dist/bridge/domains/navmesh.js +34 -0
- package/dist/bridge/domains/navmesh.js.map +1 -0
- package/dist/bridge/domains/object.d.ts +2 -0
- package/dist/bridge/domains/object.js +43 -0
- package/dist/bridge/domains/object.js.map +1 -0
- package/dist/bridge/domains/occlusion.d.ts +2 -0
- package/dist/bridge/domains/occlusion.js +12 -0
- package/dist/bridge/domains/occlusion.js.map +1 -0
- package/dist/bridge/domains/package.d.ts +2 -0
- package/dist/bridge/domains/package.js +2 -0
- package/dist/bridge/domains/package.js.map +1 -0
- package/dist/bridge/domains/physics.d.ts +2 -0
- package/dist/bridge/domains/physics.js +139 -0
- package/dist/bridge/domains/physics.js.map +1 -0
- package/dist/bridge/domains/prefab.d.ts +2 -0
- package/dist/bridge/domains/prefab.js +104 -0
- package/dist/bridge/domains/prefab.js.map +1 -0
- package/dist/bridge/domains/profiler.d.ts +2 -0
- package/dist/bridge/domains/profiler.js +105 -0
- package/dist/bridge/domains/profiler.js.map +1 -0
- package/dist/bridge/domains/project-tool.d.ts +2 -0
- package/dist/bridge/domains/project-tool.js +46 -0
- package/dist/bridge/domains/project-tool.js.map +1 -0
- package/dist/bridge/domains/reflection.d.ts +2 -0
- package/dist/bridge/domains/reflection.js +48 -0
- package/dist/bridge/domains/reflection.js.map +1 -0
- package/dist/bridge/domains/runtime-tool.d.ts +2 -0
- package/dist/bridge/domains/runtime-tool.js +48 -0
- package/dist/bridge/domains/runtime-tool.js.map +1 -0
- package/dist/bridge/domains/scene.d.ts +2 -0
- package/dist/bridge/domains/scene.js +100 -0
- package/dist/bridge/domains/scene.js.map +1 -0
- package/dist/bridge/domains/screenshot.d.ts +2 -0
- package/dist/bridge/domains/screenshot.js +85 -0
- package/dist/bridge/domains/screenshot.js.map +1 -0
- package/dist/bridge/domains/scriptable-object.d.ts +2 -0
- package/dist/bridge/domains/scriptable-object.js +53 -0
- package/dist/bridge/domains/scriptable-object.js.map +1 -0
- package/dist/bridge/domains/shader.d.ts +2 -0
- package/dist/bridge/domains/shader.js +66 -0
- package/dist/bridge/domains/shader.js.map +1 -0
- package/dist/bridge/domains/texture.d.ts +2 -0
- package/dist/bridge/domains/texture.js +78 -0
- package/dist/bridge/domains/texture.js.map +1 -0
- package/dist/bridge/domains/timeline.d.ts +2 -0
- package/dist/bridge/domains/timeline.js +75 -0
- package/dist/bridge/domains/timeline.js.map +1 -0
- package/dist/bridge/domains/ui.d.ts +2 -0
- package/dist/bridge/domains/ui.js +193 -0
- package/dist/bridge/domains/ui.js.map +1 -0
- package/dist/bridge/index.d.ts +9 -0
- package/dist/bridge/index.js +124 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/registry.d.ts +19 -0
- package/dist/bridge/registry.js +114 -0
- package/dist/bridge/registry.js.map +1 -0
- package/dist/bridge/session-supervisor.d.ts +138 -0
- package/dist/bridge/session-supervisor.js +873 -0
- package/dist/bridge/session-supervisor.js.map +1 -0
- package/dist/bridge/types.d.ts +61 -0
- package/dist/bridge/types.js +17 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/capabilities.d.ts +5 -0
- package/dist/capabilities.js +84 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cli-commands/command.d.ts +7 -0
- package/dist/cli-commands/command.js +513 -0
- package/dist/cli-commands/command.js.map +1 -0
- package/dist/cli-commands/extension-auto-detect.d.ts +62 -0
- package/dist/cli-commands/extension-auto-detect.js +119 -0
- package/dist/cli-commands/extension-auto-detect.js.map +1 -0
- package/dist/cli-commands/extensions.d.ts +24 -0
- package/dist/cli-commands/extensions.js +428 -0
- package/dist/cli-commands/extensions.js.map +1 -0
- package/dist/cli-commands/package.d.ts +4 -0
- package/dist/cli-commands/package.js +151 -0
- package/dist/cli-commands/package.js.map +1 -0
- package/dist/cli-commands/skill-installer.d.ts +83 -0
- package/dist/cli-commands/skill-installer.js +703 -0
- package/dist/cli-commands/skill-installer.js.map +1 -0
- package/dist/cli-commands/types.d.ts +17 -0
- package/dist/cli-commands/types.js +2 -0
- package/dist/cli-commands/types.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +302 -0
- package/dist/cli.js.map +1 -0
- package/dist/contracts/command-contract.d.ts +21 -0
- package/dist/contracts/command-contract.js +143 -0
- package/dist/contracts/command-contract.js.map +1 -0
- package/dist/contracts/csharp-command-extractor.d.ts +1 -0
- package/dist/contracts/csharp-command-extractor.js +89 -0
- package/dist/contracts/csharp-command-extractor.js.map +1 -0
- package/dist/contracts/validate-command-contract.d.ts +1 -0
- package/dist/contracts/validate-command-contract.js +86 -0
- package/dist/contracts/validate-command-contract.js.map +1 -0
- package/dist/doctor.d.ts +22 -0
- package/dist/doctor.js +498 -0
- package/dist/doctor.js.map +1 -0
- package/dist/editor-blocker-observer.d.ts +45 -0
- package/dist/editor-blocker-observer.js +55 -0
- package/dist/editor-blocker-observer.js.map +1 -0
- package/dist/editor-dialogs.d.ts +53 -0
- package/dist/editor-dialogs.js +79 -0
- package/dist/editor-dialogs.js.map +1 -0
- package/dist/extension-availability.d.ts +30 -0
- package/dist/extension-availability.js +83 -0
- package/dist/extension-availability.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.js +104 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.js +35 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.d.ts +13 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.js +342 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/urp.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/urp.js +52 -0
- package/dist/extensions/.generated-bridge-domains/urp.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/vfx.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/vfx.js +312 -0
- package/dist/extensions/.generated-bridge-domains/vfx.js.map +1 -0
- package/dist/extensions/.generated-registry-data.d.ts +7 -0
- package/dist/extensions/.generated-registry-data.js +895 -0
- package/dist/extensions/.generated-registry-data.js.map +1 -0
- package/dist/extensions/contribution-loader.d.ts +27 -0
- package/dist/extensions/contribution-loader.js +60 -0
- package/dist/extensions/contribution-loader.js.map +1 -0
- package/dist/extensions/descriptor-loader.d.ts +73 -0
- package/dist/extensions/descriptor-loader.js +126 -0
- package/dist/extensions/descriptor-loader.js.map +1 -0
- package/dist/extensions/index.d.ts +19 -0
- package/dist/extensions/index.js +23 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/installer.d.ts +80 -0
- package/dist/extensions/installer.js +594 -0
- package/dist/extensions/installer.js.map +1 -0
- package/dist/extensions/metadata/index.d.ts +15 -0
- package/dist/extensions/metadata/index.js +41 -0
- package/dist/extensions/metadata/index.js.map +1 -0
- package/dist/extensions/metadata/types.d.ts +38 -0
- package/dist/extensions/metadata/types.js +11 -0
- package/dist/extensions/metadata/types.js.map +1 -0
- package/dist/extensions/project-resolver.d.ts +35 -0
- package/dist/extensions/project-resolver.js +61 -0
- package/dist/extensions/project-resolver.js.map +1 -0
- package/dist/extensions/registry.d.ts +86 -0
- package/dist/extensions/registry.js +262 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/tool-manifest.d.ts +29 -0
- package/dist/extensions/tool-manifest.js +53 -0
- package/dist/extensions/tool-manifest.js.map +1 -0
- package/dist/extensions/types.d.ts +115 -0
- package/dist/extensions/types.js +12 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/instances.d.ts +163 -0
- package/dist/instances.js +1137 -0
- package/dist/instances.js.map +1 -0
- package/dist/output.d.ts +119 -0
- package/dist/output.js +204 -0
- package/dist/output.js.map +1 -0
- package/dist/package-manager.d.ts +280 -0
- package/dist/package-manager.js +1832 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/platform.d.ts +3 -0
- package/dist/platform.js +19 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-identity.d.ts +48 -0
- package/dist/project-identity.js +254 -0
- package/dist/project-identity.js.map +1 -0
- package/dist/project-tool-discovery.d.ts +23 -0
- package/dist/project-tool-discovery.js +292 -0
- package/dist/project-tool-discovery.js.map +1 -0
- package/dist/protocol/envelope.d.ts +64 -0
- package/dist/protocol/envelope.js +8 -0
- package/dist/protocol/envelope.js.map +1 -0
- package/dist/protocol/index.d.ts +7 -0
- package/dist/protocol/index.js +2 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/runtime-code.d.ts +20 -0
- package/dist/runtime-code.js +232 -0
- package/dist/runtime-code.js.map +1 -0
- package/dist/schema/any-json.d.ts +4 -0
- package/dist/schema/any-json.js +2 -0
- package/dist/schema/any-json.js.map +1 -0
- package/dist/schema/validator.d.ts +7 -0
- package/dist/schema/validator.js +135 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/services/docs-reflect-cache.d.ts +106 -0
- package/dist/services/docs-reflect-cache.js +301 -0
- package/dist/services/docs-reflect-cache.js.map +1 -0
- package/dist/services/docs-service.d.ts +16 -0
- package/dist/services/docs-service.js +208 -0
- package/dist/services/docs-service.js.map +1 -0
- package/dist/services/reflect-service.d.ts +12 -0
- package/dist/services/reflect-service.js +122 -0
- package/dist/services/reflect-service.js.map +1 -0
- package/dist/static-capability-catalog.d.ts +13 -0
- package/dist/static-capability-catalog.js +41 -0
- package/dist/static-capability-catalog.js.map +1 -0
- package/dist/test-results.d.ts +13 -0
- package/dist/test-results.js +44 -0
- package/dist/test-results.js.map +1 -0
- package/dist/tools/.generated-completion-registry.d.ts +17 -0
- package/dist/tools/.generated-completion-registry.js +5862 -0
- package/dist/tools/.generated-completion-registry.js.map +1 -0
- package/dist/tools/.generated-registry.d.ts +53 -0
- package/dist/tools/.generated-registry.js +55 -0
- package/dist/tools/.generated-registry.js.map +1 -0
- package/dist/tools/.generated-schemas.d.ts +1 -0
- package/dist/tools/.generated-schemas.js +56 -0
- package/dist/tools/.generated-schemas.js.map +1 -0
- package/dist/tools/asset/refresh.d.ts +26 -0
- package/dist/tools/asset/refresh.js +97 -0
- package/dist/tools/asset/refresh.js.map +1 -0
- package/dist/tools/build/run.d.ts +45 -0
- package/dist/tools/build/run.js +115 -0
- package/dist/tools/build/run.js.map +1 -0
- package/dist/tools/catalog.d.ts +33 -0
- package/dist/tools/catalog.js +202 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/code/exec.d.ts +53 -0
- package/dist/tools/code/exec.js +59 -0
- package/dist/tools/code/exec.js.map +1 -0
- package/dist/tools/commands.d.ts +5 -0
- package/dist/tools/commands.js +45 -0
- package/dist/tools/commands.js.map +1 -0
- package/dist/tools/completion-probe.d.ts +22 -0
- package/dist/tools/completion-probe.js +2 -0
- package/dist/tools/completion-probe.js.map +1 -0
- package/dist/tools/define.d.ts +77 -0
- package/dist/tools/define.js +58 -0
- package/dist/tools/define.js.map +1 -0
- package/dist/tools/diagnose/capabilities.d.ts +13 -0
- package/dist/tools/diagnose/capabilities.js +34 -0
- package/dist/tools/diagnose/capabilities.js.map +1 -0
- package/dist/tools/dispatcher.d.ts +27 -0
- package/dist/tools/dispatcher.js +971 -0
- package/dist/tools/dispatcher.js.map +1 -0
- package/dist/tools/docs/get.d.ts +22 -0
- package/dist/tools/docs/get.js +22 -0
- package/dist/tools/docs/get.js.map +1 -0
- package/dist/tools/docs/search.d.ts +31 -0
- package/dist/tools/docs/search.js +22 -0
- package/dist/tools/docs/search.js.map +1 -0
- package/dist/tools/editor/compile.d.ts +66 -0
- package/dist/tools/editor/compile.js +225 -0
- package/dist/tools/editor/compile.js.map +1 -0
- package/dist/tools/editor/dialog/click.d.ts +12 -0
- package/dist/tools/editor/dialog/click.js +71 -0
- package/dist/tools/editor/dialog/click.js.map +1 -0
- package/dist/tools/editor/dialogs.d.ts +12 -0
- package/dist/tools/editor/dialogs.js +58 -0
- package/dist/tools/editor/dialogs.js.map +1 -0
- package/dist/tools/editor/readiness.d.ts +13 -0
- package/dist/tools/editor/readiness.js +24 -0
- package/dist/tools/editor/readiness.js.map +1 -0
- package/dist/tools/editor/refresh.d.ts +25 -0
- package/dist/tools/editor/refresh.js +154 -0
- package/dist/tools/editor/refresh.js.map +1 -0
- package/dist/tools/editor/state.d.ts +63 -0
- package/dist/tools/editor/state.js +286 -0
- package/dist/tools/editor/state.js.map +1 -0
- package/dist/tools/errors.d.ts +30 -0
- package/dist/tools/errors.js +46 -0
- package/dist/tools/errors.js.map +1 -0
- package/dist/tools/metadata/derived.d.ts +34 -0
- package/dist/tools/metadata/derived.js +136 -0
- package/dist/tools/metadata/derived.js.map +1 -0
- package/dist/tools/metadata/index.d.ts +34 -0
- package/dist/tools/metadata/index.js +130 -0
- package/dist/tools/metadata/index.js.map +1 -0
- package/dist/tools/metadata/schemas.d.ts +3 -0
- package/dist/tools/metadata/schemas.js +19 -0
- package/dist/tools/metadata/schemas.js.map +1 -0
- package/dist/tools/metadata/status.d.ts +4 -0
- package/dist/tools/metadata/status.js +61 -0
- package/dist/tools/metadata/status.js.map +1 -0
- package/dist/tools/metadata/types.d.ts +79 -0
- package/dist/tools/metadata/types.js +2 -0
- package/dist/tools/metadata/types.js.map +1 -0
- package/dist/tools/navmesh/bake-cancel.d.ts +7 -0
- package/dist/tools/navmesh/bake-cancel.js +21 -0
- package/dist/tools/navmesh/bake-cancel.js.map +1 -0
- package/dist/tools/navmesh/bake-status.d.ts +5 -0
- package/dist/tools/navmesh/bake-status.js +18 -0
- package/dist/tools/navmesh/bake-status.js.map +1 -0
- package/dist/tools/navmesh/bake.d.ts +5 -0
- package/dist/tools/navmesh/bake.js +23 -0
- package/dist/tools/navmesh/bake.js.map +1 -0
- package/dist/tools/navmesh/live.d.ts +86 -0
- package/dist/tools/navmesh/live.js +206 -0
- package/dist/tools/navmesh/live.js.map +1 -0
- package/dist/tools/navmesh/surface-bake.d.ts +5 -0
- package/dist/tools/navmesh/surface-bake.js +24 -0
- package/dist/tools/navmesh/surface-bake.js.map +1 -0
- package/dist/tools/occlusion/bake-cancel.d.ts +7 -0
- package/dist/tools/occlusion/bake-cancel.js +21 -0
- package/dist/tools/occlusion/bake-cancel.js.map +1 -0
- package/dist/tools/occlusion/bake-status.d.ts +5 -0
- package/dist/tools/occlusion/bake-status.js +18 -0
- package/dist/tools/occlusion/bake-status.js.map +1 -0
- package/dist/tools/occlusion/bake.d.ts +11 -0
- package/dist/tools/occlusion/bake.js +23 -0
- package/dist/tools/occlusion/bake.js.map +1 -0
- package/dist/tools/occlusion/live.d.ts +74 -0
- package/dist/tools/occlusion/live.js +201 -0
- package/dist/tools/occlusion/live.js.map +1 -0
- package/dist/tools/package/bridge-remove.d.ts +26 -0
- package/dist/tools/package/bridge-remove.js +32 -0
- package/dist/tools/package/bridge-remove.js.map +1 -0
- package/dist/tools/package/deploy.d.ts +49 -0
- package/dist/tools/package/deploy.js +134 -0
- package/dist/tools/package/deploy.js.map +1 -0
- package/dist/tools/package/embed.d.ts +14 -0
- package/dist/tools/package/embed.js +93 -0
- package/dist/tools/package/embed.js.map +1 -0
- package/dist/tools/package/file-mutation-worker.d.ts +6 -0
- package/dist/tools/package/file-mutation-worker.js +154 -0
- package/dist/tools/package/file-mutation-worker.js.map +1 -0
- package/dist/tools/package/info.d.ts +19 -0
- package/dist/tools/package/info.js +27 -0
- package/dist/tools/package/info.js.map +1 -0
- package/dist/tools/package/install.d.ts +24 -0
- package/dist/tools/package/install.js +65 -0
- package/dist/tools/package/install.js.map +1 -0
- package/dist/tools/package/list.d.ts +27 -0
- package/dist/tools/package/list.js +21 -0
- package/dist/tools/package/list.js.map +1 -0
- package/dist/tools/package/live-resolve.d.ts +46 -0
- package/dist/tools/package/live-resolve.js +497 -0
- package/dist/tools/package/live-resolve.js.map +1 -0
- package/dist/tools/package/public-result.d.ts +4 -0
- package/dist/tools/package/public-result.js +25 -0
- package/dist/tools/package/public-result.js.map +1 -0
- package/dist/tools/package/registry-clear.d.ts +15 -0
- package/dist/tools/package/registry-clear.js +27 -0
- package/dist/tools/package/registry-clear.js.map +1 -0
- package/dist/tools/package/registry-get.d.ts +10 -0
- package/dist/tools/package/registry-get.js +22 -0
- package/dist/tools/package/registry-get.js.map +1 -0
- package/dist/tools/package/registry-set.d.ts +17 -0
- package/dist/tools/package/registry-set.js +28 -0
- package/dist/tools/package/registry-set.js.map +1 -0
- package/dist/tools/package/remove.d.ts +47 -0
- package/dist/tools/package/remove.js +67 -0
- package/dist/tools/package/remove.js.map +1 -0
- package/dist/tools/package/resolve.d.ts +6 -0
- package/dist/tools/package/resolve.js +14 -0
- package/dist/tools/package/resolve.js.map +1 -0
- package/dist/tools/package/restore.d.ts +42 -0
- package/dist/tools/package/restore.js +122 -0
- package/dist/tools/package/restore.js.map +1 -0
- package/dist/tools/package/scoped-registry-add.d.ts +25 -0
- package/dist/tools/package/scoped-registry-add.js +30 -0
- package/dist/tools/package/scoped-registry-add.js.map +1 -0
- package/dist/tools/package/scoped-registry-list.d.ts +14 -0
- package/dist/tools/package/scoped-registry-list.js +22 -0
- package/dist/tools/package/scoped-registry-list.js.map +1 -0
- package/dist/tools/package/scoped-registry-remove.d.ts +29 -0
- package/dist/tools/package/scoped-registry-remove.js +31 -0
- package/dist/tools/package/scoped-registry-remove.js.map +1 -0
- package/dist/tools/package/search.d.ts +17 -0
- package/dist/tools/package/search.js +39 -0
- package/dist/tools/package/search.js.map +1 -0
- package/dist/tools/package/status.d.ts +21 -0
- package/dist/tools/package/status.js +37 -0
- package/dist/tools/package/status.js.map +1 -0
- package/dist/tools/reflect/member.d.ts +22 -0
- package/dist/tools/reflect/member.js +22 -0
- package/dist/tools/reflect/member.js.map +1 -0
- package/dist/tools/reflect/search.d.ts +30 -0
- package/dist/tools/reflect/search.js +22 -0
- package/dist/tools/reflect/search.js.map +1 -0
- package/dist/tools/reflect/type.d.ts +21 -0
- package/dist/tools/reflect/type.js +22 -0
- package/dist/tools/reflect/type.js.map +1 -0
- package/dist/tools/runtime/console.d.ts +24 -0
- package/dist/tools/runtime/console.js +17 -0
- package/dist/tools/runtime/console.js.map +1 -0
- package/dist/tools/runtime/input/key.d.ts +23 -0
- package/dist/tools/runtime/input/key.js +18 -0
- package/dist/tools/runtime/input/key.js.map +1 -0
- package/dist/tools/runtime/input/pointer.d.ts +34 -0
- package/dist/tools/runtime/input/pointer.js +18 -0
- package/dist/tools/runtime/input/pointer.js.map +1 -0
- package/dist/tools/runtime/log.d.ts +20 -0
- package/dist/tools/runtime/log.js +17 -0
- package/dist/tools/runtime/log.js.map +1 -0
- package/dist/tools/runtime/state.d.ts +45 -0
- package/dist/tools/runtime/state.js +17 -0
- package/dist/tools/runtime/state.js.map +1 -0
- package/dist/tools/runtime/target-framerate/set.d.ts +16 -0
- package/dist/tools/runtime/target-framerate/set.js +17 -0
- package/dist/tools/runtime/target-framerate/set.js.map +1 -0
- package/dist/tools/runtime/time-scale/set.d.ts +16 -0
- package/dist/tools/runtime/time-scale/set.js +17 -0
- package/dist/tools/runtime/time-scale/set.js.map +1 -0
- package/dist/tools/runtime/ui/capture-element.d.ts +31 -0
- package/dist/tools/runtime/ui/capture-element.js +17 -0
- package/dist/tools/runtime/ui/capture-element.js.map +1 -0
- package/dist/tools/test/cancel.d.ts +19 -0
- package/dist/tools/test/cancel.js +94 -0
- package/dist/tools/test/cancel.js.map +1 -0
- package/dist/tools/test/run.d.ts +39 -0
- package/dist/tools/test/run.js +101 -0
- package/dist/tools/test/run.js.map +1 -0
- package/dist/tools/tools/describe.d.ts +27 -0
- package/dist/tools/tools/describe.js +35 -0
- package/dist/tools/tools/describe.js.map +1 -0
- package/dist/tools/tools/group-list.d.ts +20 -0
- package/dist/tools/tools/group-list.js +39 -0
- package/dist/tools/tools/group-list.js.map +1 -0
- package/dist/tools/tools/group-summaries.d.ts +3 -0
- package/dist/tools/tools/group-summaries.js +52 -0
- package/dist/tools/tools/group-summaries.js.map +1 -0
- package/dist/tools/tools/group.d.ts +13 -0
- package/dist/tools/tools/group.js +34 -0
- package/dist/tools/tools/group.js.map +1 -0
- package/dist/tools/tools/search.d.ts +17 -0
- package/dist/tools/tools/search.js +42 -0
- package/dist/tools/tools/search.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/unity-project-processes.d.ts +12 -0
- package/dist/unity-project-processes.js +59 -0
- package/dist/unity-project-processes.js.map +1 -0
- package/dist/util.d.ts +11 -0
- package/dist/util.js +22 -0
- package/dist/util.js.map +1 -0
- package/dist/windows-editor-state.d.ts +31 -0
- package/dist/windows-editor-state.js +98 -0
- package/dist/windows-editor-state.js.map +1 -0
- package/docs/README.md +43 -0
- package/docs/availability-differences.md +97 -0
- package/docs/command-execution.md +89 -0
- package/docs/error-codes.md +204 -0
- package/docs/extensions.md +132 -0
- package/docs/risk-and-side-effects.md +93 -0
- package/docs/safety-boundaries.md +103 -0
- package/docs/target-and-instance.md +83 -0
- package/docs/tool-discovery.md +104 -0
- package/docs/tool-execution.md +178 -0
- package/extensions/cinemachine/bridge/domains/cinemachine.ts +115 -0
- package/extensions/cinemachine/docs/cinemachine.md +50 -0
- package/extensions/cinemachine/extension.json +129 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/CinemachineExtensionToolSupport.cs +15 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/CinemachineToolSupport.cs +854 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/aim.cs +96 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/blend.cs +140 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/body.cs +96 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/brain-ensure.cs +16 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/brain-status.cs +12 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/create.cs +147 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-add.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-list.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-remove.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/lens.cs +142 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/noise.cs +126 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/ping.cs +43 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/priority.cs +113 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/target.cs +84 -0
- package/extensions/cinemachine/unitypkg/UnityCli.Extensions.Cinemachine.Editor.asmdef +18 -0
- package/extensions/hdrp/bridge/domains/hdrp.ts +41 -0
- package/extensions/hdrp/docs/hdrp.md +15 -0
- package/extensions/hdrp/extension.json +31 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/HdrpToolSupport.cs +607 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/settings-get.cs +29 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/settings-set.cs +47 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-add-effect.cs +28 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-create.cs +28 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-info.cs +25 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-list.cs +25 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-set.cs +28 -0
- package/extensions/hdrp/unitypkg/UnityCli.Extensions.Hdrp.Editor.asmdef +19 -0
- package/extensions/probuilder/bridge/domains/probuilder.ts +386 -0
- package/extensions/probuilder/docs/probuilder.md +125 -0
- package/extensions/probuilder/extension.json +291 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderAppendCompletionProof.cs +254 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderAtomicReadback.cs +293 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderBevelCompletionProof.cs +299 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderCanonicalMeshSnapshot.cs +951 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderConnectCompletionProof.cs +407 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderEdgeCompletionProof.cs +318 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderErrors.cs +83 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFaceCompletionProof.cs +152 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFaceExtrudeCompletionProof.cs +283 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFlipCompletionProof.cs +170 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderInput.cs +85 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderInsertCompletionProof.cs +674 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderOperationProof.cs +137 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderReflection.cs +1064 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderRefreshUvProof.cs +53 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderSceneTool.cs +184 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderShapeTopologyRecords.g.cs +82 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderVertexObjectCompletionProof.cs +346 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/append-vertices-to-edge.cs +118 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/auto-smooth.cs +104 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/bevel-edges.cs +119 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/bridge-edges.cs +113 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/center-pivot.cs +43 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/combine-meshes.cs +58 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/connect-elements.cs +128 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/convert-to-probuilder.cs +40 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-poly-shape.cs +55 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-polygon.cs +28 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-shape.cs +168 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/delete-faces.cs +42 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/detach-faces.cs +46 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/duplicate-and-flip.cs +100 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/extrude-edges.cs +118 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/extrude-faces.cs +110 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/flip-normals.cs +102 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/freeze-transform.cs +45 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/insert-vertex.cs +132 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-faces.cs +44 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-objects.cs +130 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-vertices.cs +109 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/mesh-info.cs +117 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/move-vertices.cs +33 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ping.cs +51 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/repair-mesh.cs +40 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/select-faces.cs +161 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-color.cs +24 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-material.cs +23 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-uvs.cs +28 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-pivot.cs +42 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-smoothing.cs +23 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/split-vertices.cs +64 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/subdivide.cs +111 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/validate-mesh.cs +75 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/weld-vertices.cs +112 -0
- package/extensions/probuilder/unitypkg/UnityCli.Extensions.ProBuilder.Editor.asmdef +25 -0
- package/extensions/urp/bridge/domains/urp.ts +62 -0
- package/extensions/urp/docs/urp.md +20 -0
- package/extensions/urp/extension.json +41 -0
- package/extensions/urp/unitypkg/Editor/Urp/UrpFeatureToolSupport.cs +336 -0
- package/extensions/urp/unitypkg/Editor/Urp/UrpToolSupport.cs +801 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-add.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-configure.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-list.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-remove.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-toggle.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/settings-get.cs +27 -0
- package/extensions/urp/unitypkg/Editor/Urp/settings-set.cs +47 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-add-effect.cs +33 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-create.cs +33 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-info.cs +31 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-list.cs +39 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-set.cs +33 -0
- package/extensions/urp/unitypkg/UnityCli.Extensions.Urp.Editor.asmdef +19 -0
- package/extensions/vfx-graph/bridge/domains/vfx.ts +337 -0
- package/extensions/vfx-graph/docs/vfx.md +28 -0
- package/extensions/vfx-graph/extension.json +72 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/VfxActionToolSupport.cs +248 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/VfxToolSupport.cs +1325 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-pause.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-play.cs +40 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-reinitialize.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-set-rate.cs +36 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-set-seed.cs +42 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-stop.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-add.cs +55 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-assign.cs +44 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-info.cs +30 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/graph-create.cs +62 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/graph-info.cs +32 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/line-create.cs +75 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/line-positions.cs +100 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/parameter.cs +216 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-clear.cs +39 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-create.cs +80 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-emission.cs +126 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-info.cs +55 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-main.cs +75 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-pause.cs +38 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-play.cs +38 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-shape.cs +148 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-stop.cs +41 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/template-create.cs +58 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/template-list.cs +31 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/trail-create.cs +41 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/trail-set.cs +44 -0
- package/extensions/vfx-graph/unitypkg/UnityCli.Extensions.VfxGraph.Editor.asmdef +18 -0
- package/package.json +46 -0
- package/schemas/error-code.schema.json +70 -0
- package/schemas/extension-descriptor.schema.json +88 -0
- package/schemas/extension-manifest.schema.json +125 -0
- package/schemas/request-envelope.schema.json +34 -0
- package/schemas/response-envelope.schema.json +42 -0
- package/schemas/tool-metadata.schema.json +111 -0
- package/skills/unitycli/SKILL.md +61 -0
- package/skills/unitycli/agents/interface.yaml +30 -0
- package/skills/unitycli/evals/history/2026-08-05-governed-baseline.json +44 -0
- package/skills/unitycli/evals/output/cases.jsonl +5 -0
- package/skills/unitycli/evals/output/fixtures/feedback-scenario.json +27 -0
- package/skills/unitycli/evals/output/schema.json +32 -0
- package/skills/unitycli/evals/semantic_config.json +46 -0
- package/skills/unitycli/evals/trigger_cases.json +39 -0
- package/skills/unitycli/examples/feedback-event.input.json +8 -0
- package/skills/unitycli/examples/feedback-record.output.json +12 -0
- package/skills/unitycli/manifest.json +112 -0
- package/skills/unitycli/references/custom-tools.md +111 -0
- package/skills/unitycli/references/feedback.md +59 -0
- package/skills/unitycli/references/operation-protocol.md +83 -0
- package/skills/unitycli/reports/output_quality_scorecard.md +56 -0
- package/skills/unitycli/reports/trust-report.md +57 -0
- package/skills/unitycli/scripts/record-feedback.ps1 +210 -0
- package/skills/unitycli/security/network_policy.json +18 -0
- package/skills/unitycli/security/permission_policy.json +40 -0
- package/unitypkg/Editor/Bridge/BridgeCommandContext.cs +64 -0
- package/unitypkg/Editor/Bridge/BridgeCommandException.cs +39 -0
- package/unitypkg/Editor/Bridge/BridgeCommandRegistry.cs +172 -0
- package/unitypkg/Editor/Bridge/BridgeHttpServer.cs +534 -0
- package/unitypkg/Editor/Bridge/BridgeResponse.cs +58 -0
- package/unitypkg/Editor/Bridge/BridgeWorkQueue.cs +325 -0
- package/unitypkg/Editor/BridgeStartupStateMachine.cs +81 -0
- package/unitypkg/Editor/Commands/ProjectToolCommands.cs +43 -0
- package/unitypkg/Editor/Commands/RuntimeToolCommands.cs +43 -0
- package/unitypkg/Editor/Generated/UnityCliToolCompletionRegistry.g.cs +428 -0
- package/unitypkg/Editor/Infrastructure/CodeExecSupport.cs +664 -0
- package/unitypkg/Editor/Infrastructure/RegistryOwnershipResolver.cs +148 -0
- package/unitypkg/Editor/Infrastructure/UnityCliActiveOperation.cs +411 -0
- package/unitypkg/Editor/Infrastructure/UnityCliAdmission.cs +485 -0
- package/unitypkg/Editor/Infrastructure/UnityCliArtifacts.cs +110 -0
- package/unitypkg/Editor/Infrastructure/UnityCliAssetRefreshCoordinator.cs +106 -0
- package/unitypkg/Editor/Infrastructure/UnityCliBridgeHelpers.cs +155 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCanonicalProjectPath.cs +325 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompilationEventBroker.cs +192 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompileCoordinator.cs +271 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompletionProbe.cs +515 -0
- package/unitypkg/Editor/Infrastructure/UnityCliEditorStateSnapshot.cs +84 -0
- package/unitypkg/Editor/Infrastructure/UnityCliInstanceRegistry.cs +558 -0
- package/unitypkg/Editor/Infrastructure/UnityCliJson.cs +155 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLargeOutput.cs +128 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLiveBuildCoordinator.cs +230 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLiveRefreshCoordinator.cs +164 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLog.cs +127 -0
- package/unitypkg/Editor/Infrastructure/UnityCliNavMeshBakeCoordinator.cs +2073 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectPatch.cs +193 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectRef.cs +278 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectSerializer.cs +620 -0
- package/unitypkg/Editor/Infrastructure/UnityCliOcclusionBakeCoordinator.cs +1739 -0
- package/unitypkg/Editor/Infrastructure/UnityCliOperationCoordinator.cs +828 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageEmbedCoordinator.cs +147 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageResolveCoordinator.cs +454 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageResolveState.cs +561 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPipelineHandoff.cs +742 -0
- package/unitypkg/Editor/Infrastructure/UnityCliProjectSettings.cs +92 -0
- package/unitypkg/Editor/Infrastructure/UnityCliProtocolRequest.cs +116 -0
- package/unitypkg/Editor/Infrastructure/UnityCliReflection.cs +477 -0
- package/unitypkg/Editor/Infrastructure/UnityCliReloadOperation.cs +664 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRequestDigest.cs +34 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeBuildInjection.cs +121 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeExecutor.cs +391 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSceneMutation.cs +84 -0
- package/unitypkg/Editor/Infrastructure/UnityCliScriptableObjectHelpers.cs +235 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSerializer.cs +580 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSessionMutationLease.cs +568 -0
- package/unitypkg/Editor/Infrastructure/UnityCliStateIO.cs +73 -0
- package/unitypkg/Editor/Infrastructure/UnityCliTestRunCoordinator.cs +598 -0
- package/unitypkg/Editor/Infrastructure/UnityCliTransactionLog.cs +112 -0
- package/unitypkg/Editor/Infrastructure/UnityCliValueConverter.cs +146 -0
- package/unitypkg/Editor/Infrastructure/UnityCliWaiter.cs +716 -0
- package/unitypkg/Editor/ProjectTools/IUnityCliTool.cs +152 -0
- package/unitypkg/Editor/ProjectTools/OfficialAttributeToolRegistry.cs +992 -0
- package/unitypkg/Editor/ProjectTools/ProjectToolRegistry.cs +938 -0
- package/unitypkg/Editor/ProjectTools/ProjectToolSchemaValidator.cs +258 -0
- package/unitypkg/Editor/ProjectTools/RegisteredTool.cs +75 -0
- package/unitypkg/Editor/ProjectTools/UnityCliProjectToolContext.cs +68 -0
- package/unitypkg/Editor/ProjectTools/UnityCliSchemaDeriver.cs +297 -0
- package/unitypkg/Editor/Protocol/ProtocolEnvelopeFactory.cs +92 -0
- package/unitypkg/Editor/Protocol/envelope.cs +50 -0
- package/unitypkg/Editor/Roslyn/LICENSE.txt +23 -0
- package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.dll +0 -0
- package/unitypkg/Editor/Roslyn/System.Collections.Immutable.dll +0 -0
- package/unitypkg/Editor/Roslyn/System.Reflection.Metadata.dll +0 -0
- package/unitypkg/Editor/Tools/animation/AnimationToolSupport.cs +335 -0
- package/unitypkg/Editor/Tools/animation/AnimatorRuntimeToolSupport.cs +24 -0
- package/unitypkg/Editor/Tools/animation/animator/crossfade.cs +117 -0
- package/unitypkg/Editor/Tools/animation/animator/get-info.cs +24 -0
- package/unitypkg/Editor/Tools/animation/animator/get-parameter.cs +36 -0
- package/unitypkg/Editor/Tools/animation/animator/set-enabled.cs +33 -0
- package/unitypkg/Editor/Tools/animation/animator/set-parameter.cs +71 -0
- package/unitypkg/Editor/Tools/animation/animator/set-speed.cs +33 -0
- package/unitypkg/Editor/Tools/animation/clip/create.cs +48 -0
- package/unitypkg/Editor/Tools/animation/clip/modify.cs +43 -0
- package/unitypkg/Editor/Tools/animation/clip.cs +23 -0
- package/unitypkg/Editor/Tools/animation/play.cs +41 -0
- package/unitypkg/Editor/Tools/animation/state.cs +25 -0
- package/unitypkg/Editor/Tools/animation/stop.cs +45 -0
- package/unitypkg/Editor/Tools/asset/AssetImportSettingsToolSupport.cs +633 -0
- package/unitypkg/Editor/Tools/asset/AssetToolSupport.cs +253 -0
- package/unitypkg/Editor/Tools/asset/create.cs +84 -0
- package/unitypkg/Editor/Tools/asset/delete.cs +88 -0
- package/unitypkg/Editor/Tools/asset/duplicate.cs +68 -0
- package/unitypkg/Editor/Tools/asset/get-components.cs +177 -0
- package/unitypkg/Editor/Tools/asset/get-data.cs +73 -0
- package/unitypkg/Editor/Tools/asset/import-settings/set.cs +127 -0
- package/unitypkg/Editor/Tools/asset/import-settings.cs +54 -0
- package/unitypkg/Editor/Tools/asset/import.cs +132 -0
- package/unitypkg/Editor/Tools/asset/info.cs +48 -0
- package/unitypkg/Editor/Tools/asset/modify.cs +69 -0
- package/unitypkg/Editor/Tools/asset/move.cs +70 -0
- package/unitypkg/Editor/Tools/asset/preview.cs +86 -0
- package/unitypkg/Editor/Tools/asset/rename.cs +84 -0
- package/unitypkg/Editor/Tools/asset/search-built-in.cs +90 -0
- package/unitypkg/Editor/Tools/asset/search.cs +83 -0
- package/unitypkg/Editor/Tools/build/BuildSceneStateTool.cs +37 -0
- package/unitypkg/Editor/Tools/build/BuildSettingsToolSupport.cs +4 -0
- package/unitypkg/Editor/Tools/build/BuildToolDtos.cs +15 -0
- package/unitypkg/Editor/Tools/build/BuildToolSupport.cs +111 -0
- package/unitypkg/Editor/Tools/build/platform/get.cs +12 -0
- package/unitypkg/Editor/Tools/build/platform/set.cs +45 -0
- package/unitypkg/Editor/Tools/build/profile/create.cs +44 -0
- package/unitypkg/Editor/Tools/build/profile/list.cs +12 -0
- package/unitypkg/Editor/Tools/build/profile/modify.cs +42 -0
- package/unitypkg/Editor/Tools/build/profile/switch.cs +30 -0
- package/unitypkg/Editor/Tools/build/scene/add.cs +45 -0
- package/unitypkg/Editor/Tools/build/scene/disable.cs +3 -0
- package/unitypkg/Editor/Tools/build/scene/enable.cs +4 -0
- package/unitypkg/Editor/Tools/build/scene/list.cs +4 -0
- package/unitypkg/Editor/Tools/build/scene/remove.cs +29 -0
- package/unitypkg/Editor/Tools/build/settings/get.cs +3 -0
- package/unitypkg/Editor/Tools/build/settings/set.cs +74 -0
- package/unitypkg/Editor/Tools/camera/CameraToolSupport.cs +292 -0
- package/unitypkg/Editor/Tools/camera/create.cs +114 -0
- package/unitypkg/Editor/Tools/camera/info.cs +49 -0
- package/unitypkg/Editor/Tools/camera/lens.cs +119 -0
- package/unitypkg/Editor/Tools/camera/list.cs +52 -0
- package/unitypkg/Editor/Tools/camera/multiview.cs +96 -0
- package/unitypkg/Editor/Tools/camera/screenshot.cs +65 -0
- package/unitypkg/Editor/Tools/camera/target.cs +94 -0
- package/unitypkg/Editor/Tools/component/add.cs +125 -0
- package/unitypkg/Editor/Tools/component/get.cs +73 -0
- package/unitypkg/Editor/Tools/component/list-types.cs +90 -0
- package/unitypkg/Editor/Tools/component/modify.cs +103 -0
- package/unitypkg/Editor/Tools/component/remove.cs +147 -0
- package/unitypkg/Editor/Tools/component/set.cs +93 -0
- package/unitypkg/Editor/Tools/console/clear.cs +38 -0
- package/unitypkg/Editor/Tools/console/get.cs +28 -0
- package/unitypkg/Editor/Tools/controller/add-blend-tree-child.cs +88 -0
- package/unitypkg/Editor/Tools/controller/add-layer.cs +43 -0
- package/unitypkg/Editor/Tools/controller/add-parameter.cs +51 -0
- package/unitypkg/Editor/Tools/controller/add-state.cs +44 -0
- package/unitypkg/Editor/Tools/controller/add-transition.cs +71 -0
- package/unitypkg/Editor/Tools/controller/assign.cs +38 -0
- package/unitypkg/Editor/Tools/controller/create-blend-tree-1d.cs +40 -0
- package/unitypkg/Editor/Tools/controller/create-blend-tree-2d.cs +42 -0
- package/unitypkg/Editor/Tools/controller/create.cs +31 -0
- package/unitypkg/Editor/Tools/controller/get-info.cs +27 -0
- package/unitypkg/Editor/Tools/controller/remove-layer.cs +57 -0
- package/unitypkg/Editor/Tools/controller/set-layer-weight.cs +42 -0
- package/unitypkg/Editor/Tools/diagnose/preflight.cs +269 -0
- package/unitypkg/Editor/Tools/editor/EditorActionToolSupport.cs +117 -0
- package/unitypkg/Editor/Tools/editor/EditorSearchToolSupport.cs +146 -0
- package/unitypkg/Editor/Tools/editor/EditorToolSupport.cs +132 -0
- package/unitypkg/Editor/Tools/editor/EditorWindowFocusToolSupport.cs +194 -0
- package/unitypkg/Editor/Tools/editor/active-tool/set.cs +33 -0
- package/unitypkg/Editor/Tools/editor/active-tool.cs +100 -0
- package/unitypkg/Editor/Tools/editor/autotick/set.cs +102 -0
- package/unitypkg/Editor/Tools/editor/console.cs +26 -0
- package/unitypkg/Editor/Tools/editor/focus.cs +80 -0
- package/unitypkg/Editor/Tools/editor/menu-items.cs +50 -0
- package/unitypkg/Editor/Tools/editor/menu.cs +53 -0
- package/unitypkg/Editor/Tools/editor/pause.cs +38 -0
- package/unitypkg/Editor/Tools/editor/play.cs +43 -0
- package/unitypkg/Editor/Tools/editor/redo.cs +56 -0
- package/unitypkg/Editor/Tools/editor/resolution.cs +34 -0
- package/unitypkg/Editor/Tools/editor/search.cs +55 -0
- package/unitypkg/Editor/Tools/editor/selection/set.cs +37 -0
- package/unitypkg/Editor/Tools/editor/selection.cs +153 -0
- package/unitypkg/Editor/Tools/editor/stop.cs +43 -0
- package/unitypkg/Editor/Tools/editor/tool-states.cs +140 -0
- package/unitypkg/Editor/Tools/editor/undo.cs +56 -0
- package/unitypkg/Editor/Tools/editor/windows.cs +87 -0
- package/unitypkg/Editor/Tools/extension/status.cs +87 -0
- package/unitypkg/Editor/Tools/go/GameObjectToolSupport.cs +524 -0
- package/unitypkg/Editor/Tools/go/create.cs +333 -0
- package/unitypkg/Editor/Tools/go/delete.cs +87 -0
- package/unitypkg/Editor/Tools/go/duplicate.cs +76 -0
- package/unitypkg/Editor/Tools/go/find.cs +152 -0
- package/unitypkg/Editor/Tools/go/inspect.cs +49 -0
- package/unitypkg/Editor/Tools/go/look-at.cs +76 -0
- package/unitypkg/Editor/Tools/go/modify.cs +156 -0
- package/unitypkg/Editor/Tools/go/move-relative.cs +74 -0
- package/unitypkg/Editor/Tools/go/set-parent.cs +84 -0
- package/unitypkg/Editor/Tools/graphics/GraphicsToolSupport.cs +396 -0
- package/unitypkg/Editor/Tools/graphics/bake-cancel.cs +27 -0
- package/unitypkg/Editor/Tools/graphics/bake-clear.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/bake-reflection-probe.cs +35 -0
- package/unitypkg/Editor/Tools/graphics/bake-settings.cs +131 -0
- package/unitypkg/Editor/Tools/graphics/bake-start.cs +27 -0
- package/unitypkg/Editor/Tools/graphics/bake-status.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/light-probe-group.cs +56 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-info.cs +19 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-quality.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-settings.cs +46 -0
- package/unitypkg/Editor/Tools/graphics/probe-positions.cs +58 -0
- package/unitypkg/Editor/Tools/graphics/quality.cs +85 -0
- package/unitypkg/Editor/Tools/graphics/reflection-probe.cs +73 -0
- package/unitypkg/Editor/Tools/graphics/scene-debug.cs +37 -0
- package/unitypkg/Editor/Tools/graphics/settings.cs +104 -0
- package/unitypkg/Editor/Tools/graphics/skybox-get.cs +33 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-ambient.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-fog.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-material.cs +33 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-properties.cs +51 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-reflection.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-sun.cs +35 -0
- package/unitypkg/Editor/Tools/graphics/stats-counters.cs +28 -0
- package/unitypkg/Editor/Tools/graphics/stats-memory.cs +21 -0
- package/unitypkg/Editor/Tools/graphics/stats.cs +17 -0
- package/unitypkg/Editor/Tools/graphics/volume.cs +59 -0
- package/unitypkg/Editor/Tools/instances/list.cs +71 -0
- package/unitypkg/Editor/Tools/material/MaterialToolSupport.cs +401 -0
- package/unitypkg/Editor/Tools/material/assign.cs +124 -0
- package/unitypkg/Editor/Tools/material/create.cs +82 -0
- package/unitypkg/Editor/Tools/material/info.cs +55 -0
- package/unitypkg/Editor/Tools/material/set-renderer-color.cs +108 -0
- package/unitypkg/Editor/Tools/material/set.cs +114 -0
- package/unitypkg/Editor/Tools/navmesh/NavMeshToolSupport.cs +404 -0
- package/unitypkg/Editor/Tools/navmesh/bake-clear.cs +70 -0
- package/unitypkg/Editor/Tools/navmesh/settings/set.cs +73 -0
- package/unitypkg/Editor/Tools/navmesh/settings.cs +37 -0
- package/unitypkg/Editor/Tools/object/ObjectToolSupport.cs +99 -0
- package/unitypkg/Editor/Tools/object/get-data.cs +69 -0
- package/unitypkg/Editor/Tools/object/modify.cs +126 -0
- package/unitypkg/Editor/Tools/occlusion/OcclusionToolSupport.cs +422 -0
- package/unitypkg/Editor/Tools/occlusion/bake-clear.cs +67 -0
- package/unitypkg/Editor/Tools/physics/PhysicsJointToolSupport.cs +13 -0
- package/unitypkg/Editor/Tools/physics/PhysicsToolSupport.cs +389 -0
- package/unitypkg/Editor/Tools/physics/assign-material.cs +88 -0
- package/unitypkg/Editor/Tools/physics/collision-matrix.cs +90 -0
- package/unitypkg/Editor/Tools/physics/force.cs +127 -0
- package/unitypkg/Editor/Tools/physics/joint/add.cs +99 -0
- package/unitypkg/Editor/Tools/physics/joint/remove.cs +4 -0
- package/unitypkg/Editor/Tools/physics/linecast.cs +59 -0
- package/unitypkg/Editor/Tools/physics/material.cs +73 -0
- package/unitypkg/Editor/Tools/physics/overlap.cs +84 -0
- package/unitypkg/Editor/Tools/physics/raycast-all.cs +67 -0
- package/unitypkg/Editor/Tools/physics/raycast.cs +96 -0
- package/unitypkg/Editor/Tools/physics/rigidbody.cs +116 -0
- package/unitypkg/Editor/Tools/physics/settings.cs +116 -0
- package/unitypkg/Editor/Tools/physics/shapecast.cs +127 -0
- package/unitypkg/Editor/Tools/physics/simulation.cs +89 -0
- package/unitypkg/Editor/Tools/physics/validate.cs +67 -0
- package/unitypkg/Editor/Tools/prefab/PrefabOverrideToolSupport.cs +355 -0
- package/unitypkg/Editor/Tools/prefab/PrefabToolSupport.cs +446 -0
- package/unitypkg/Editor/Tools/prefab/create.cs +125 -0
- package/unitypkg/Editor/Tools/prefab/hierarchy.cs +157 -0
- package/unitypkg/Editor/Tools/prefab/info.cs +44 -0
- package/unitypkg/Editor/Tools/prefab/instantiate.cs +106 -0
- package/unitypkg/Editor/Tools/prefab/modify.cs +112 -0
- package/unitypkg/Editor/Tools/prefab/overrides/apply.cs +51 -0
- package/unitypkg/Editor/Tools/prefab/overrides/revert.cs +51 -0
- package/unitypkg/Editor/Tools/prefab/stage-close.cs +67 -0
- package/unitypkg/Editor/Tools/prefab/stage-open.cs +69 -0
- package/unitypkg/Editor/Tools/prefab/stage-save.cs +64 -0
- package/unitypkg/Editor/Tools/prefab/stage.cs +68 -0
- package/unitypkg/Editor/Tools/prefab/unpack.cs +80 -0
- package/unitypkg/Editor/Tools/prefab/variant/create.cs +53 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerFrameDebuggerSupport.cs +68 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerMemorySnapshotSupport.cs +30 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerToolSupport.cs +515 -0
- package/unitypkg/Editor/Tools/profiler/areas.cs +36 -0
- package/unitypkg/Editor/Tools/profiler/capture.cs +188 -0
- package/unitypkg/Editor/Tools/profiler/clear.cs +57 -0
- package/unitypkg/Editor/Tools/profiler/counter.cs +34 -0
- package/unitypkg/Editor/Tools/profiler/deep.cs +48 -0
- package/unitypkg/Editor/Tools/profiler/export.cs +85 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/disable.cs +53 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/enable.cs +66 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/events.cs +140 -0
- package/unitypkg/Editor/Tools/profiler/frame.cs +38 -0
- package/unitypkg/Editor/Tools/profiler/hierarchy.cs +183 -0
- package/unitypkg/Editor/Tools/profiler/load.cs +85 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/compare.cs +78 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/list.cs +73 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/take.cs +147 -0
- package/unitypkg/Editor/Tools/profiler/memory.cs +34 -0
- package/unitypkg/Editor/Tools/profiler/module-enable.cs +52 -0
- package/unitypkg/Editor/Tools/profiler/modules.cs +33 -0
- package/unitypkg/Editor/Tools/profiler/object-memory.cs +49 -0
- package/unitypkg/Editor/Tools/profiler/pause.cs +49 -0
- package/unitypkg/Editor/Tools/profiler/rendering-stats.cs +109 -0
- package/unitypkg/Editor/Tools/profiler/script-stats.cs +35 -0
- package/unitypkg/Editor/Tools/profiler/start.cs +55 -0
- package/unitypkg/Editor/Tools/profiler/status.cs +36 -0
- package/unitypkg/Editor/Tools/profiler/stop.cs +53 -0
- package/unitypkg/Editor/Tools/project/ProjectSettingsReader.cs +31 -0
- package/unitypkg/Editor/Tools/project/ProjectSettingsToolSupport.cs +757 -0
- package/unitypkg/Editor/Tools/project/ProjectTagLayerToolSupport.cs +23 -0
- package/unitypkg/Editor/Tools/project/audio-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/audio-settings.cs +31 -0
- package/unitypkg/Editor/Tools/project/info.cs +52 -0
- package/unitypkg/Editor/Tools/project/input-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/input-settings.cs +35 -0
- package/unitypkg/Editor/Tools/project/layer/add.cs +3 -0
- package/unitypkg/Editor/Tools/project/layer/remove.cs +3 -0
- package/unitypkg/Editor/Tools/project/layers.cs +61 -0
- package/unitypkg/Editor/Tools/project/player-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/player-settings.cs +31 -0
- package/unitypkg/Editor/Tools/project/tag/add.cs +3 -0
- package/unitypkg/Editor/Tools/project/tag/remove.cs +3 -0
- package/unitypkg/Editor/Tools/project/tags.cs +45 -0
- package/unitypkg/Editor/Tools/project/time-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/time-settings.cs +31 -0
- package/unitypkg/Editor/Tools/reflection/method/call.cs +114 -0
- package/unitypkg/Editor/Tools/reflection/method/find.cs +72 -0
- package/unitypkg/Editor/Tools/reflection/type/schema.cs +56 -0
- package/unitypkg/Editor/Tools/scene/SceneToolSupport.cs +181 -0
- package/unitypkg/Editor/Tools/scene/active.cs +62 -0
- package/unitypkg/Editor/Tools/scene/build-settings.cs +69 -0
- package/unitypkg/Editor/Tools/scene/create.cs +78 -0
- package/unitypkg/Editor/Tools/scene/data.cs +125 -0
- package/unitypkg/Editor/Tools/scene/gameobject/component.cs +63 -0
- package/unitypkg/Editor/Tools/scene/gameobject/components.cs +77 -0
- package/unitypkg/Editor/Tools/scene/gameobject-support.cs +101 -0
- package/unitypkg/Editor/Tools/scene/gameobject.cs +83 -0
- package/unitypkg/Editor/Tools/scene/hierarchy.cs +250 -0
- package/unitypkg/Editor/Tools/scene/list-opened.cs +77 -0
- package/unitypkg/Editor/Tools/scene/load.cs +68 -0
- package/unitypkg/Editor/Tools/scene/move-object.cs +122 -0
- package/unitypkg/Editor/Tools/scene/save.cs +231 -0
- package/unitypkg/Editor/Tools/scene/set-active.cs +76 -0
- package/unitypkg/Editor/Tools/scene/unload.cs +109 -0
- package/unitypkg/Editor/Tools/scene/validate.cs +115 -0
- package/unitypkg/Editor/Tools/scene/view-frame.cs +218 -0
- package/unitypkg/Editor/Tools/screenshot/EditorElementCaptureToolSupport.cs +181 -0
- package/unitypkg/Editor/Tools/screenshot/ScreenshotToolSupport.cs +196 -0
- package/unitypkg/Editor/Tools/screenshot/editor-element.cs +87 -0
- package/unitypkg/Editor/Tools/screenshot/game-view.cs +116 -0
- package/unitypkg/Editor/Tools/screenshot/isolated-object.cs +93 -0
- package/unitypkg/Editor/Tools/screenshot/orbit.cs +103 -0
- package/unitypkg/Editor/Tools/screenshot/scene-view.cs +99 -0
- package/unitypkg/Editor/Tools/screenshot/screen.cs +89 -0
- package/unitypkg/Editor/Tools/screenshot/surround.cs +181 -0
- package/unitypkg/Editor/Tools/scriptable-object/ScriptableObjectToolSupport.cs +196 -0
- package/unitypkg/Editor/Tools/scriptable-object/create.cs +79 -0
- package/unitypkg/Editor/Tools/scriptable-object/info.cs +49 -0
- package/unitypkg/Editor/Tools/scriptable-object/list-types.cs +103 -0
- package/unitypkg/Editor/Tools/scriptable-object/modify.cs +208 -0
- package/unitypkg/Editor/Tools/shader/ShaderToolSupport.cs +326 -0
- package/unitypkg/Editor/Tools/shader/create.cs +82 -0
- package/unitypkg/Editor/Tools/shader/delete.cs +90 -0
- package/unitypkg/Editor/Tools/shader/get-data.cs +125 -0
- package/unitypkg/Editor/Tools/shader/info.cs +48 -0
- package/unitypkg/Editor/Tools/shader/list.cs +82 -0
- package/unitypkg/Editor/Tools/shader/read.cs +84 -0
- package/unitypkg/Editor/Tools/shader/update.cs +71 -0
- package/unitypkg/Editor/Tools/tests/list.cs +98 -0
- package/unitypkg/Editor/Tools/texture/TextureToolSupport.cs +327 -0
- package/unitypkg/Editor/Tools/texture/create.cs +182 -0
- package/unitypkg/Editor/Tools/texture/delete.cs +89 -0
- package/unitypkg/Editor/Tools/texture/generate.cs +189 -0
- package/unitypkg/Editor/Tools/texture/import-settings.cs +104 -0
- package/unitypkg/Editor/Tools/texture/info.cs +50 -0
- package/unitypkg/Editor/Tools/texture/modify.cs +154 -0
- package/unitypkg/Editor/Tools/texture/sprite.cs +132 -0
- package/unitypkg/Editor/Tools/timeline/TimelineMutationToolSupport.cs +696 -0
- package/unitypkg/Editor/Tools/timeline/TimelineReadToolSupport.cs +439 -0
- package/unitypkg/Editor/Tools/timeline/TimelineToolSupport.cs +203 -0
- package/unitypkg/Editor/Tools/timeline/clip/add.cs +93 -0
- package/unitypkg/Editor/Tools/timeline/create.cs +88 -0
- package/unitypkg/Editor/Tools/timeline/info.cs +54 -0
- package/unitypkg/Editor/Tools/timeline/track/add.cs +91 -0
- package/unitypkg/Editor/Tools/ui/UiToolSupport.cs +162 -0
- package/unitypkg/Editor/Tools/ui/UiUguiToolSupport.cs +24 -0
- package/unitypkg/Editor/Tools/ui/attach-document.cs +46 -0
- package/unitypkg/Editor/Tools/ui/button/create.cs +58 -0
- package/unitypkg/Editor/Tools/ui/canvas/create.cs +40 -0
- package/unitypkg/Editor/Tools/ui/create-panel-settings.cs +44 -0
- package/unitypkg/Editor/Tools/ui/detach-document.cs +41 -0
- package/unitypkg/Editor/Tools/ui/document/create.cs +49 -0
- package/unitypkg/Editor/Tools/ui/document/delete.cs +33 -0
- package/unitypkg/Editor/Tools/ui/document/info.cs +33 -0
- package/unitypkg/Editor/Tools/ui/document/update.cs +36 -0
- package/unitypkg/Editor/Tools/ui/get-visual-tree.cs +34 -0
- package/unitypkg/Editor/Tools/ui/hierarchy.cs +27 -0
- package/unitypkg/Editor/Tools/ui/image/create.cs +47 -0
- package/unitypkg/Editor/Tools/ui/link-stylesheet.cs +54 -0
- package/unitypkg/Editor/Tools/ui/list-documents.cs +34 -0
- package/unitypkg/Editor/Tools/ui/modify-visual-element.cs +76 -0
- package/unitypkg/Editor/Tools/ui/render-preview.cs +128 -0
- package/unitypkg/Editor/Tools/ui/text/create.cs +45 -0
- package/unitypkg/Editor/Tools/ui/update-panel-settings.cs +49 -0
- package/unitypkg/Editor/UnityCliBridge.cs +431 -0
- package/unitypkg/Editor/UnityCliBridgeBuildInfo.cs +9 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeBridge.cs +580 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeJson.cs +232 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeRegistry.cs +297 -0
- package/unitypkg/Runtime/Tools/UnityCliRuntimeTools.cs +701 -0
- package/unitypkg/Runtime/UnityCli.Runtime.asmdef +14 -0
- package/unitypkg/Shared/UnityCli.Shared.asmdef +14 -0
- package/unitypkg/Shared/UnityCliAdmissionPool.cs +426 -0
- package/unitypkg/Tests/Editor/UnityCli.Editor.Tests.asmdef +15 -0
- package/unitypkg/Tests/Editor/UnityCliAdmissionPoolTests.cs +262 -0
- package/unitypkg/UnityCli.Editor.asmdef +26 -0
- package/unitypkg/package.json +11 -0
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { lstat, mkdir, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
4
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
/** All valid agent kinds. */
|
|
7
|
+
export const AGENT_KINDS = ["pi", "claude", ".agents"];
|
|
8
|
+
// ─── Agent skill target paths ────────────────────────────────────────────────
|
|
9
|
+
/** Maps an agent kind to its root directory relative to the Unity project root. */
|
|
10
|
+
const AGENT_ROOT_DIR = {
|
|
11
|
+
pi: ".pi",
|
|
12
|
+
claude: ".claude",
|
|
13
|
+
".agents": ".agents",
|
|
14
|
+
};
|
|
15
|
+
/** Maps an agent kind to its skill directory relative to the Unity project root. */
|
|
16
|
+
const AGENT_SKILL_DIR = {
|
|
17
|
+
pi: ".pi/skills/unitycli",
|
|
18
|
+
claude: ".claude/skills/unitycli",
|
|
19
|
+
".agents": ".agents/skills/unitycli",
|
|
20
|
+
};
|
|
21
|
+
/** 探测项目中已存在的 Agent 目录,用于 init 默认安装 Skill。 */
|
|
22
|
+
export async function detectAgentKinds(projectRoot) {
|
|
23
|
+
const detected = [];
|
|
24
|
+
for (const agent of AGENT_KINDS) {
|
|
25
|
+
try {
|
|
26
|
+
const rootStat = await stat(join(projectRoot, AGENT_ROOT_DIR[agent]));
|
|
27
|
+
if (rootStat.isDirectory()) {
|
|
28
|
+
detected.push(agent);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// 未配置该 Agent 时跳过,避免凭空创建新的 Agent 根目录。
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return detected;
|
|
36
|
+
}
|
|
37
|
+
// ─── Skill source resolution ─────────────────────────────────────────────────
|
|
38
|
+
/**
|
|
39
|
+
* Resolve the source SKILL.md path by walking up from the current CLI module
|
|
40
|
+
* location to find the package root that contains
|
|
41
|
+
* skills/unitycli/SKILL.md.
|
|
42
|
+
*/
|
|
43
|
+
export function resolveSkillSourcePath(metaUrl) {
|
|
44
|
+
const startDir = metaUrl
|
|
45
|
+
? dirname(fileURLToPath(new URL(metaUrl)))
|
|
46
|
+
: dirname(fileURLToPath(import.meta.url));
|
|
47
|
+
let current = resolve(startDir);
|
|
48
|
+
// Walk up at most 20 levels to find the package root
|
|
49
|
+
for (let i = 0; i < 20; i++) {
|
|
50
|
+
const pkgPath = join(current, "package.json");
|
|
51
|
+
try {
|
|
52
|
+
// Synchronous existence check via require is not available in ESM;
|
|
53
|
+
// we do a best-effort heuristic: check if skills/unitycli/SKILL.md exists.
|
|
54
|
+
const skillPath = join(current, "skills", "unitycli", "SKILL.md");
|
|
55
|
+
// We validate the actual content in resolveSkillSource (async)
|
|
56
|
+
// For now, return the candidate path
|
|
57
|
+
return skillPath;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Not found, walk up
|
|
61
|
+
}
|
|
62
|
+
const parent = dirname(current);
|
|
63
|
+
if (parent === current)
|
|
64
|
+
break;
|
|
65
|
+
current = parent;
|
|
66
|
+
}
|
|
67
|
+
// Fallback: use import.meta.url resolution
|
|
68
|
+
return join(dirname(fileURLToPath(import.meta.url)), "..", "..", "skills", "unitycli", "SKILL.md");
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Async version: resolves the SKILL.md source path, validating that the
|
|
72
|
+
* package root contains the published UnityCLI Skill bundle.
|
|
73
|
+
*/
|
|
74
|
+
export async function findSkillSourcePath(startDir) {
|
|
75
|
+
let current = startDir ?? dirname(fileURLToPath(import.meta.url));
|
|
76
|
+
for (let i = 0; i < 20; i++) {
|
|
77
|
+
const skillPath = join(current, "skills", "unitycli", "SKILL.md");
|
|
78
|
+
try {
|
|
79
|
+
// Try to read the skill file — if it exists, that's our source
|
|
80
|
+
await readFile(skillPath, "utf8");
|
|
81
|
+
return skillPath;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Not found at this level, walk up
|
|
85
|
+
}
|
|
86
|
+
const parent = dirname(current);
|
|
87
|
+
if (parent === current)
|
|
88
|
+
break;
|
|
89
|
+
current = parent;
|
|
90
|
+
}
|
|
91
|
+
throw new SkillInstallerError("SKILL_SOURCE_NOT_FOUND", "Could not locate skills/unitycli/SKILL.md relative to the CLI package root.", ["Ensure the @alpsckr/unitycli package is installed with the skills/ directory intact."]);
|
|
92
|
+
}
|
|
93
|
+
// ─── Runtime bundle projection ────────────────────────────────────────────────
|
|
94
|
+
const runtimeDirectories = ["references", "scripts"];
|
|
95
|
+
const feedbackModeDeclaration = /^FeedbackMode:\s*(.*)$/gm;
|
|
96
|
+
const validFeedbackMode = /^FeedbackMode: (off|on)$/;
|
|
97
|
+
let beforeSkillPublishForTest;
|
|
98
|
+
let afterSkillPublishForTest;
|
|
99
|
+
let beforeSkillRollbackForTest;
|
|
100
|
+
let beforeSkillPreviousCleanupForTest;
|
|
101
|
+
/** 仅测试使用:在 target 保持完整时、首次发布写入前制造等待或失败。 */
|
|
102
|
+
export function setBeforeSkillPublishForTest(hook) {
|
|
103
|
+
beforeSkillPublishForTest = hook;
|
|
104
|
+
}
|
|
105
|
+
/** 仅测试使用:在 staging 已发布、readback 前制造损坏。 */
|
|
106
|
+
export function setAfterSkillPublishForTest(hook) {
|
|
107
|
+
afterSkillPublishForTest = hook;
|
|
108
|
+
}
|
|
109
|
+
/** 仅测试使用:验证 rollback 失败时 previous 必须保留。 */
|
|
110
|
+
export function setBeforeSkillRollbackForTest(hook) {
|
|
111
|
+
beforeSkillRollbackForTest = hook;
|
|
112
|
+
}
|
|
113
|
+
/** 仅测试使用:模拟新 target 已提交、previous 尚未清理时进程中断。 */
|
|
114
|
+
export function setBeforeSkillPreviousCleanupForTest(hook) {
|
|
115
|
+
beforeSkillPreviousCleanupForTest = hook;
|
|
116
|
+
}
|
|
117
|
+
/** 读取唯一 Skill 文件开关;旧单文件投影无标记时只按关闭状态迁移。 */
|
|
118
|
+
function readFeedbackMode(content, allowMissing) {
|
|
119
|
+
const text = decodeUtf8(content, "SKILL.md");
|
|
120
|
+
const declarations = [...text.matchAll(feedbackModeDeclaration)].map((match) => match[0]);
|
|
121
|
+
if (declarations.length === 0 && allowMissing)
|
|
122
|
+
return "off";
|
|
123
|
+
if (declarations.length !== 1 || !validFeedbackMode.test(declarations[0])) {
|
|
124
|
+
throw new SkillInstallerError("E_SKILL_FEEDBACK_MODE_INVALID", "The UnityCLI Skill must contain exactly one `FeedbackMode: off|on` declaration.", ["Keep one FeedbackMode declaration in SKILL.md and set it to off or on."]);
|
|
125
|
+
}
|
|
126
|
+
return declarations[0].endsWith("on") ? "on" : "off";
|
|
127
|
+
}
|
|
128
|
+
/** bundle digest 忽略合法本地开关值,其余字节和文件集合全部进入契约。 */
|
|
129
|
+
function normalizedSkillContent(file) {
|
|
130
|
+
if (file.path !== "SKILL.md")
|
|
131
|
+
return file.content;
|
|
132
|
+
return Buffer.from(decodeUtf8(file.content, file.path).replace(/^FeedbackMode: (?:off|on)$/m, "FeedbackMode: off"), "utf8");
|
|
133
|
+
}
|
|
134
|
+
/** 按排序后的相对路径、字节数和归一化内容计算 bundle digest。 */
|
|
135
|
+
function bundleHash(files) {
|
|
136
|
+
const hash = createHash("sha256");
|
|
137
|
+
for (const file of files) {
|
|
138
|
+
const content = normalizedSkillContent(file);
|
|
139
|
+
hash.update(`file:${file.path}\0${content.byteLength}\0`);
|
|
140
|
+
hash.update(content);
|
|
141
|
+
hash.update("\n");
|
|
142
|
+
}
|
|
143
|
+
return hash.digest("hex");
|
|
144
|
+
}
|
|
145
|
+
/** 收集 runtime Skill 投影;symlink 和非普通文件一律 fail closed。 */
|
|
146
|
+
async function collectRuntimeFiles(root) {
|
|
147
|
+
const files = [];
|
|
148
|
+
const rootInfo = await lstat(root);
|
|
149
|
+
if (rootInfo.isSymbolicLink() || !rootInfo.isDirectory()) {
|
|
150
|
+
throw new SkillInstallerError("E_SKILL_BUNDLE_INVALID", `Skill runtime root must be a real directory: ${root}`);
|
|
151
|
+
}
|
|
152
|
+
const skillPath = join(root, "SKILL.md");
|
|
153
|
+
const skillInfo = await lstat(skillPath);
|
|
154
|
+
if (skillInfo.isSymbolicLink() || !skillInfo.isFile()) {
|
|
155
|
+
throw new SkillInstallerError("E_SKILL_BUNDLE_INVALID", "Skill runtime SKILL.md must be a regular file.");
|
|
156
|
+
}
|
|
157
|
+
files.push({ path: "SKILL.md", content: await readFile(skillPath) });
|
|
158
|
+
const visit = async (directory, allowMissing = false) => {
|
|
159
|
+
const absolute = join(root, directory);
|
|
160
|
+
let directoryInfo;
|
|
161
|
+
try {
|
|
162
|
+
directoryInfo = await lstat(absolute);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (allowMissing && error.code === "ENOENT")
|
|
166
|
+
return;
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
if (directoryInfo.isSymbolicLink() || !directoryInfo.isDirectory()) {
|
|
170
|
+
throw new SkillInstallerError("E_SKILL_BUNDLE_INVALID", `Skill runtime directory must not be a reparse link: ${directory}`);
|
|
171
|
+
}
|
|
172
|
+
const entries = await readdir(absolute, { withFileTypes: true });
|
|
173
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
174
|
+
const absoluteEntry = join(absolute, entry.name);
|
|
175
|
+
const relativeEntry = normalizeBundlePath(relative(root, absoluteEntry));
|
|
176
|
+
if (entry.isSymbolicLink()) {
|
|
177
|
+
throw new SkillInstallerError("E_SKILL_BUNDLE_INVALID", `Skill runtime bundle cannot contain a symbolic link: ${relativeEntry}`);
|
|
178
|
+
}
|
|
179
|
+
if (entry.isDirectory()) {
|
|
180
|
+
await visit(relativeEntry);
|
|
181
|
+
}
|
|
182
|
+
else if (entry.isFile()) {
|
|
183
|
+
files.push({ path: relativeEntry, content: await readFile(absoluteEntry) });
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
throw new SkillInstallerError("E_SKILL_BUNDLE_INVALID", `Skill runtime bundle contains an unsupported entry: ${relativeEntry}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
for (const directory of runtimeDirectories)
|
|
191
|
+
await visit(directory, true);
|
|
192
|
+
return files.sort((left, right) => left.path.localeCompare(right.path));
|
|
193
|
+
}
|
|
194
|
+
/** 加载一个 runtime bundle,并返回文件集合、digest 与本地反馈开关。 */
|
|
195
|
+
async function loadBundle(root, allowMissingFeedbackMode) {
|
|
196
|
+
const files = await collectRuntimeFiles(root);
|
|
197
|
+
const skill = files.find((file) => file.path === "SKILL.md");
|
|
198
|
+
return {
|
|
199
|
+
files,
|
|
200
|
+
hash: bundleHash(files),
|
|
201
|
+
feedbackMode: readFeedbackMode(skill.content, allowMissingFeedbackMode),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/** 把目标本地反馈开关投影到待发布 SKILL.md,其余文件保持原字节。 */
|
|
205
|
+
function renderBundleFile(file, feedbackMode) {
|
|
206
|
+
if (file.path !== "SKILL.md")
|
|
207
|
+
return file.content;
|
|
208
|
+
const text = decodeUtf8(file.content, file.path);
|
|
209
|
+
return Buffer.from(text.replace(/^FeedbackMode: (?:off|on)$/m, `FeedbackMode: ${feedbackMode}`), "utf8");
|
|
210
|
+
}
|
|
211
|
+
/** 严格解码 SKILL.md;非 UTF-8 字节不得被替换字符吞并。 */
|
|
212
|
+
function decodeUtf8(content, path) {
|
|
213
|
+
try {
|
|
214
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(content);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
throw new SkillInstallerError("E_SKILL_BUNDLE_INVALID", `Skill runtime file must be valid UTF-8: ${path}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/** 只读判断路径是否存在;安装路径上的 share-deny 服从同一 deadline。 */
|
|
221
|
+
async function exists(path, deadlineMs) {
|
|
222
|
+
while (true) {
|
|
223
|
+
try {
|
|
224
|
+
await stat(path);
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
const code = error.code;
|
|
229
|
+
if (code === "ENOENT")
|
|
230
|
+
return false;
|
|
231
|
+
if (deadlineMs === undefined || !code || !sharingViolationCodes.has(code) || Date.now() >= deadlineMs)
|
|
232
|
+
throw error;
|
|
233
|
+
await new Promise((resolveDelay) => setTimeout(resolveDelay, 25));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/** 将 bundle 相对路径统一为跨平台正斜杠形式。 */
|
|
238
|
+
function normalizeBundlePath(path) {
|
|
239
|
+
return path.split("\\").join("/");
|
|
240
|
+
}
|
|
241
|
+
const sharingViolationCodes = new Set(["EACCES", "EBUSY", "EPERM"]);
|
|
242
|
+
const defaultInstallTimeoutMs = 15_000;
|
|
243
|
+
const localInstallQueues = new Map();
|
|
244
|
+
/** 在任何安装 effect 前执行 immutable deadline barrier。 */
|
|
245
|
+
function assertInstallDeadline(deadlineMs) {
|
|
246
|
+
if (Date.now() >= deadlineMs) {
|
|
247
|
+
throw new SkillInstallerError("E_EXECUTION_TIMEOUT", "The immutable init deadline elapsed before the next Skill bundle operation.", ["Inspect the installed Skill bundle before submitting init again."]);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/** deadline 内只重试 Windows 临时 share-deny;其他文件系统错误立即返回。 */
|
|
251
|
+
async function retrySharingViolation(deadlineMs, action) {
|
|
252
|
+
while (true) {
|
|
253
|
+
assertInstallDeadline(deadlineMs);
|
|
254
|
+
try {
|
|
255
|
+
return await action();
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
const code = error.code;
|
|
259
|
+
if (!code || !sharingViolationCodes.has(code) || Date.now() >= deadlineMs)
|
|
260
|
+
throw error;
|
|
261
|
+
await new Promise((resolveDelay) => setTimeout(resolveDelay, 25));
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/** 把底层文件系统失败转换为稳定、可执行的 Skill 安装错误。 */
|
|
266
|
+
function skillInstallIoError(error, operation) {
|
|
267
|
+
if (error instanceof SkillInstallerError)
|
|
268
|
+
return error;
|
|
269
|
+
const code = error.code;
|
|
270
|
+
return new SkillInstallerError("E_SKILL_INSTALL_IO", `The UnityCLI Skill bundle could not ${operation}${code ? ` (${code})` : ""}.`, ["Close processes holding the installed Skill files, inspect the target bundle, then retry init."]);
|
|
271
|
+
}
|
|
272
|
+
/** 非 Windows 仅在当前 CLI 进程内串行;Windows 使用跨进程 named mutex。 */
|
|
273
|
+
async function withLocalInstallQueue(key, deadlineMs, action) {
|
|
274
|
+
const prior = localInstallQueues.get(key) ?? Promise.resolve();
|
|
275
|
+
let release;
|
|
276
|
+
const current = new Promise((resolveRelease) => { release = resolveRelease; });
|
|
277
|
+
const tail = prior.then(() => current);
|
|
278
|
+
localInstallQueues.set(key, tail);
|
|
279
|
+
await prior;
|
|
280
|
+
assertInstallDeadline(deadlineMs);
|
|
281
|
+
try {
|
|
282
|
+
return await action();
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
release();
|
|
286
|
+
if (localInstallQueues.get(key) === tail)
|
|
287
|
+
localInstallQueues.delete(key);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/** 获取 Windows kernel mutex;持有者绑定父进程 PID 与 StartTime,父进程结束后自动释放。 */
|
|
291
|
+
async function withWindowsInstallMutex(targetRoot, deadlineMs, action) {
|
|
292
|
+
assertInstallDeadline(deadlineMs);
|
|
293
|
+
const key = createHash("sha256").update(resolve(targetRoot).toLowerCase()).digest("hex").slice(0, 32);
|
|
294
|
+
const mutexName = `Local\\UnityCliSkillInstall_${key}`;
|
|
295
|
+
const script = [
|
|
296
|
+
"$mutex = [System.Threading.Mutex]::new($false, $env:UNITY_CLI_SKILL_MUTEX_NAME)",
|
|
297
|
+
"$parent = Get-Process -Id ([int]$env:UNITY_CLI_SKILL_PARENT_PID) -ErrorAction Stop",
|
|
298
|
+
"$parentStartTicks = $parent.StartTime.ToUniversalTime().Ticks",
|
|
299
|
+
"$held = $false",
|
|
300
|
+
"try {",
|
|
301
|
+
" $remaining = [int64]$env:UNITY_CLI_SKILL_DEADLINE_MS - [DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds()",
|
|
302
|
+
" if ($remaining -le 0) { [Console]::Out.WriteLine('TIMEOUT'); exit 2 }",
|
|
303
|
+
" $wait = [int][Math]::Min([int]::MaxValue, $remaining)",
|
|
304
|
+
" try { $held = $mutex.WaitOne($wait) } catch [System.Threading.AbandonedMutexException] { $held = $true }",
|
|
305
|
+
" if (-not $held) { [Console]::Out.WriteLine('TIMEOUT'); exit 2 }",
|
|
306
|
+
" [Console]::Out.WriteLine('ACQUIRED'); [Console]::Out.Flush()",
|
|
307
|
+
" while ($true) {",
|
|
308
|
+
" try { $current = Get-Process -Id ([int]$env:UNITY_CLI_SKILL_PARENT_PID) -ErrorAction Stop } catch { break }",
|
|
309
|
+
" if ($current.StartTime.ToUniversalTime().Ticks -ne $parentStartTicks) { break }",
|
|
310
|
+
" Start-Sleep -Milliseconds 100",
|
|
311
|
+
" }",
|
|
312
|
+
"} finally {",
|
|
313
|
+
" if ($held) { try { $mutex.ReleaseMutex() } catch {} }",
|
|
314
|
+
" $mutex.Dispose()",
|
|
315
|
+
"}",
|
|
316
|
+
].join("\n");
|
|
317
|
+
const child = spawn("powershell.exe", ["-NoLogo", "-NoProfile", "-NonInteractive", "-Command", script], {
|
|
318
|
+
env: {
|
|
319
|
+
...process.env,
|
|
320
|
+
UNITY_CLI_SKILL_MUTEX_NAME: mutexName,
|
|
321
|
+
UNITY_CLI_SKILL_DEADLINE_MS: String(deadlineMs),
|
|
322
|
+
UNITY_CLI_SKILL_PARENT_PID: String(process.pid),
|
|
323
|
+
},
|
|
324
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
325
|
+
windowsHide: true,
|
|
326
|
+
});
|
|
327
|
+
let stderr = "";
|
|
328
|
+
child.stderr.setEncoding("utf8");
|
|
329
|
+
child.stderr.on("data", (chunk) => { stderr += chunk; });
|
|
330
|
+
const exitPromise = new Promise((resolveExit) => child.once("exit", resolveExit));
|
|
331
|
+
await new Promise((resolveAcquired, rejectAcquired) => {
|
|
332
|
+
let stdout = "";
|
|
333
|
+
let settled = false;
|
|
334
|
+
const fail = (error) => {
|
|
335
|
+
if (settled)
|
|
336
|
+
return;
|
|
337
|
+
settled = true;
|
|
338
|
+
rejectAcquired(error);
|
|
339
|
+
};
|
|
340
|
+
child.once("error", (error) => fail(new SkillInstallerError("E_SKILL_INSTALL_LOCK_UNAVAILABLE", `Could not start the Windows Skill install mutex: ${error.message}`)));
|
|
341
|
+
child.stdout.setEncoding("utf8");
|
|
342
|
+
child.stdout.on("data", (chunk) => {
|
|
343
|
+
if (settled)
|
|
344
|
+
return;
|
|
345
|
+
stdout += chunk;
|
|
346
|
+
const line = stdout.split(/\r?\n/, 1)[0];
|
|
347
|
+
if (line === "ACQUIRED") {
|
|
348
|
+
settled = true;
|
|
349
|
+
resolveAcquired();
|
|
350
|
+
}
|
|
351
|
+
else if (line === "TIMEOUT") {
|
|
352
|
+
fail(new SkillInstallerError("E_EXECUTION_TIMEOUT", "The immutable init deadline elapsed while waiting for another UnityCLI Skill install.", ["Inspect the installed Skill bundle before submitting init again."]));
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
child.once("exit", (code) => fail(new SkillInstallerError("E_SKILL_INSTALL_LOCK_UNAVAILABLE", `The Windows Skill install mutex exited before acquisition (${code}): ${stderr.trim()}`)));
|
|
356
|
+
});
|
|
357
|
+
try {
|
|
358
|
+
assertInstallDeadline(deadlineMs);
|
|
359
|
+
return await action();
|
|
360
|
+
}
|
|
361
|
+
finally {
|
|
362
|
+
child.kill();
|
|
363
|
+
await exitPromise;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/** 按 project + agent 串行完整 bundle 发布。 */
|
|
367
|
+
async function withSkillInstallMutex(targetRoot, deadlineMs, action) {
|
|
368
|
+
if (process.platform === "win32")
|
|
369
|
+
return withWindowsInstallMutex(targetRoot, deadlineMs, action);
|
|
370
|
+
return withLocalInstallQueue(resolve(targetRoot), deadlineMs, action);
|
|
371
|
+
}
|
|
372
|
+
const committedTargetMarkerName = "committed-target.json";
|
|
373
|
+
/** 返回固定 workspace;每个 project + agent 最多只有 staging 和 previous 两个机制目录。 */
|
|
374
|
+
function installWorkspace(projectRoot, agent) {
|
|
375
|
+
const root = join(projectRoot, "Library", "UnityCli", "skill-install", agent === ".agents" ? "agents" : agent);
|
|
376
|
+
return { stagingRoot: join(root, "staging"), previousRoot: join(root, "previous") };
|
|
377
|
+
}
|
|
378
|
+
/** 将内存中的完整 bundle 写入固定 workspace,并以严格 readback 验证。 */
|
|
379
|
+
async function materializeBundle(bundle, feedbackMode, root, deadlineMs) {
|
|
380
|
+
await retrySharingViolation(deadlineMs, () => rm(root, { recursive: true, force: true }));
|
|
381
|
+
assertInstallDeadline(deadlineMs);
|
|
382
|
+
await mkdir(root, { recursive: true });
|
|
383
|
+
for (const file of bundle.files) {
|
|
384
|
+
assertInstallDeadline(deadlineMs);
|
|
385
|
+
const target = join(root, ...file.path.split("/"));
|
|
386
|
+
await mkdir(dirname(target), { recursive: true });
|
|
387
|
+
await writeFile(target, renderBundleFile(file, feedbackMode));
|
|
388
|
+
}
|
|
389
|
+
const materialized = await loadBundle(root, false);
|
|
390
|
+
if (materialized.hash !== bundle.hash || materialized.feedbackMode !== feedbackMode) {
|
|
391
|
+
throw new SkillInstallerError("E_SKILL_INSTALL_PROJECTION_INVALID", "The materialized UnityCLI Skill bundle failed filesystem readback.");
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* 逐文件原子替换已校验 staging,最后发布 SKILL.md,再删除新入口不再引用的旧文件。
|
|
396
|
+
* target 根目录与每个既有文件在 update 期间始终存在,外部读取者不会遇到目录隔离窗口。
|
|
397
|
+
*/
|
|
398
|
+
async function publishStagedFiles(bundle, stagingRoot, targetRoot, deadlineMs) {
|
|
399
|
+
await mkdir(targetRoot, { recursive: true });
|
|
400
|
+
const ordered = [...bundle.files].sort((left, right) => {
|
|
401
|
+
if (left.path === "SKILL.md")
|
|
402
|
+
return 1;
|
|
403
|
+
if (right.path === "SKILL.md")
|
|
404
|
+
return -1;
|
|
405
|
+
return left.path.localeCompare(right.path);
|
|
406
|
+
});
|
|
407
|
+
for (const file of ordered) {
|
|
408
|
+
assertInstallDeadline(deadlineMs);
|
|
409
|
+
const stagedPath = join(stagingRoot, ...file.path.split("/"));
|
|
410
|
+
const targetPath = join(targetRoot, ...file.path.split("/"));
|
|
411
|
+
await mkdir(dirname(targetPath), { recursive: true });
|
|
412
|
+
await retrySharingViolation(deadlineMs, () => rename(stagedPath, targetPath));
|
|
413
|
+
}
|
|
414
|
+
const desiredPaths = new Set(bundle.files.map((file) => file.path));
|
|
415
|
+
const publishedFiles = await collectRuntimeFiles(targetRoot);
|
|
416
|
+
for (const file of publishedFiles) {
|
|
417
|
+
if (desiredPaths.has(file.path))
|
|
418
|
+
continue;
|
|
419
|
+
assertInstallDeadline(deadlineMs);
|
|
420
|
+
await retrySharingViolation(deadlineMs, () => rm(join(targetRoot, ...file.path.split("/")), { force: true }));
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/** previous 始终保留到旧 bundle 原位恢复并通过 readback;失败时不得删除备份。 */
|
|
424
|
+
async function restorePreviousBundle(targetRoot, workspace, deadlineMs) {
|
|
425
|
+
const recoveryDeadlineMs = Math.max(deadlineMs, Date.now() + 5_000);
|
|
426
|
+
try {
|
|
427
|
+
await beforeSkillRollbackForTest?.();
|
|
428
|
+
const previous = await retrySharingViolation(recoveryDeadlineMs, () => loadBundle(workspace.previousRoot, false));
|
|
429
|
+
await materializeBundle(previous, previous.feedbackMode, workspace.stagingRoot, recoveryDeadlineMs);
|
|
430
|
+
await publishStagedFiles(previous, workspace.stagingRoot, targetRoot, recoveryDeadlineMs);
|
|
431
|
+
const restored = await retrySharingViolation(recoveryDeadlineMs, () => loadBundle(targetRoot, false));
|
|
432
|
+
if (restored.hash !== previous.hash || restored.feedbackMode !== previous.feedbackMode) {
|
|
433
|
+
throw new SkillInstallerError("E_SKILL_INSTALL_PROJECTION_INVALID", "The restored UnityCLI Skill bundle failed filesystem readback.");
|
|
434
|
+
}
|
|
435
|
+
await retrySharingViolation(recoveryDeadlineMs, () => rm(workspace.previousRoot, { recursive: true, force: true }));
|
|
436
|
+
}
|
|
437
|
+
catch (rollbackError) {
|
|
438
|
+
const detail = rollbackError instanceof Error ? rollbackError.message : String(rollbackError);
|
|
439
|
+
throw new SkillInstallerError("E_SKILL_INSTALL_ROLLBACK_FAILED", `The prior UnityCLI Skill bundle could not be restored after publish failed: ${detail}`, ["Do not delete the fixed Library/UnityCli/skill-install previous directory; inspect both bundle projections before retrying."]);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
/** 读取已验证 target 的固定提交标记;缺失、损坏或未知版本一律视为未提交。 */
|
|
443
|
+
async function readCommittedTargetMarker(previousRoot) {
|
|
444
|
+
try {
|
|
445
|
+
const value = JSON.parse(await readFile(join(previousRoot, committedTargetMarkerName), "utf8"));
|
|
446
|
+
if (value.schemaVersion !== 1 || typeof value.targetHash !== "string" || !/^[a-f0-9]{64}$/.test(value.targetHash))
|
|
447
|
+
return undefined;
|
|
448
|
+
if (value.feedbackMode !== "off" && value.feedbackMode !== "on")
|
|
449
|
+
return undefined;
|
|
450
|
+
return value;
|
|
451
|
+
}
|
|
452
|
+
catch {
|
|
453
|
+
return undefined;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
/** 重启时区分已提交 target 与未完成发布,再清理固定 workspace。 */
|
|
457
|
+
async function recoverInstallWorkspace(targetRoot, workspace, deadlineMs) {
|
|
458
|
+
await retrySharingViolation(deadlineMs, () => rm(workspace.stagingRoot, { recursive: true, force: true }));
|
|
459
|
+
if (!await exists(workspace.previousRoot, deadlineMs))
|
|
460
|
+
return;
|
|
461
|
+
const marker = await readCommittedTargetMarker(workspace.previousRoot);
|
|
462
|
+
if (marker && await exists(targetRoot, deadlineMs)) {
|
|
463
|
+
try {
|
|
464
|
+
const target = await retrySharingViolation(deadlineMs, () => loadBundle(targetRoot, false));
|
|
465
|
+
if (target.hash === marker.targetHash && target.feedbackMode === marker.feedbackMode) {
|
|
466
|
+
await retrySharingViolation(deadlineMs, () => rm(workspace.previousRoot, { recursive: true, force: true }));
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
catch {
|
|
471
|
+
// target 无法严格 readback 时按未提交处理,使用 previous 恢复。
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
await restorePreviousBundle(targetRoot, workspace, deadlineMs);
|
|
475
|
+
await retrySharingViolation(deadlineMs, () => rm(workspace.stagingRoot, { recursive: true, force: true }));
|
|
476
|
+
}
|
|
477
|
+
/** 先校验完整 staging;fresh install 目录发布,update 采用入口最后的文件原子替换。 */
|
|
478
|
+
async function publishBundle(source, existing, feedbackMode, targetRoot, workspace, deadlineMs) {
|
|
479
|
+
let freshPublished = false;
|
|
480
|
+
let targetCommitted = false;
|
|
481
|
+
try {
|
|
482
|
+
await mkdir(dirname(targetRoot), { recursive: true });
|
|
483
|
+
if (existing) {
|
|
484
|
+
// previous 先在 staging 完整物化并校验,再一次 rename 提交,崩溃不会留下半备份。
|
|
485
|
+
await materializeBundle(existing, existing.feedbackMode, workspace.stagingRoot, deadlineMs);
|
|
486
|
+
await retrySharingViolation(deadlineMs, () => rm(workspace.previousRoot, { recursive: true, force: true }));
|
|
487
|
+
await retrySharingViolation(deadlineMs, () => rename(workspace.stagingRoot, workspace.previousRoot));
|
|
488
|
+
}
|
|
489
|
+
else if (await exists(targetRoot, deadlineMs)) {
|
|
490
|
+
await retrySharingViolation(deadlineMs, () => rm(targetRoot, { recursive: true, force: true }));
|
|
491
|
+
}
|
|
492
|
+
await materializeBundle(source, feedbackMode, workspace.stagingRoot, deadlineMs);
|
|
493
|
+
await beforeSkillPublishForTest?.();
|
|
494
|
+
assertInstallDeadline(deadlineMs);
|
|
495
|
+
if (existing) {
|
|
496
|
+
await publishStagedFiles(source, workspace.stagingRoot, targetRoot, deadlineMs);
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
await retrySharingViolation(deadlineMs, () => rename(workspace.stagingRoot, targetRoot));
|
|
500
|
+
freshPublished = true;
|
|
501
|
+
}
|
|
502
|
+
await afterSkillPublishForTest?.();
|
|
503
|
+
const published = await retrySharingViolation(deadlineMs, () => loadBundle(targetRoot, false));
|
|
504
|
+
if (published.hash !== source.hash || published.feedbackMode !== feedbackMode) {
|
|
505
|
+
throw new SkillInstallerError("E_SKILL_INSTALL_PROJECTION_INVALID", "The installed UnityCLI Skill bundle failed filesystem readback.");
|
|
506
|
+
}
|
|
507
|
+
if (existing) {
|
|
508
|
+
const cleanupDeadlineMs = Math.max(deadlineMs, Date.now() + 5_000);
|
|
509
|
+
const marker = { schemaVersion: 1, targetHash: published.hash, feedbackMode: published.feedbackMode };
|
|
510
|
+
await writeFile(join(workspace.previousRoot, committedTargetMarkerName), `${JSON.stringify(marker)}\n`, "utf8");
|
|
511
|
+
targetCommitted = true;
|
|
512
|
+
await beforeSkillPreviousCleanupForTest?.();
|
|
513
|
+
await retrySharingViolation(cleanupDeadlineMs, () => rm(workspace.previousRoot, { recursive: true, force: true }));
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
targetCommitted = true;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
catch (error) {
|
|
520
|
+
const recoveryDeadlineMs = Math.max(deadlineMs, Date.now() + 5_000);
|
|
521
|
+
if (targetCommitted) {
|
|
522
|
+
throw skillInstallIoError(error, "clean its committed previous runtime projection");
|
|
523
|
+
}
|
|
524
|
+
if (existing && await exists(workspace.previousRoot, recoveryDeadlineMs)) {
|
|
525
|
+
await restorePreviousBundle(targetRoot, workspace, recoveryDeadlineMs);
|
|
526
|
+
throw skillInstallIoError(error, "publish its verified runtime projection");
|
|
527
|
+
}
|
|
528
|
+
if (freshPublished && await exists(targetRoot, recoveryDeadlineMs)) {
|
|
529
|
+
try {
|
|
530
|
+
await retrySharingViolation(recoveryDeadlineMs, () => rm(targetRoot, { recursive: true, force: true }));
|
|
531
|
+
}
|
|
532
|
+
catch {
|
|
533
|
+
throw skillInstallIoError(error, "remove an invalid fresh projection");
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
throw skillInstallIoError(error, "publish its runtime projection");
|
|
537
|
+
}
|
|
538
|
+
finally {
|
|
539
|
+
const cleanupDeadlineMs = Math.max(deadlineMs, Date.now() + 5_000);
|
|
540
|
+
await retrySharingViolation(cleanupDeadlineMs, () => rm(workspace.stagingRoot, { recursive: true, force: true })).catch(() => undefined);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
// ─── Base installer implementation ───────────────────────────────────────────
|
|
544
|
+
class BaseSkillInstaller {
|
|
545
|
+
agent;
|
|
546
|
+
constructor(agent) {
|
|
547
|
+
this.agent = agent;
|
|
548
|
+
}
|
|
549
|
+
resolveTargetPath(projectRoot) {
|
|
550
|
+
return join(projectRoot, AGENT_SKILL_DIR[this.agent], "SKILL.md");
|
|
551
|
+
}
|
|
552
|
+
async install(sourcePath, projectRoot, absoluteDeadlineMs = Date.now() + defaultInstallTimeoutMs) {
|
|
553
|
+
const sourceRoot = dirname(sourcePath);
|
|
554
|
+
const targetPath = this.resolveTargetPath(projectRoot);
|
|
555
|
+
const targetRoot = dirname(targetPath);
|
|
556
|
+
const source = await loadBundle(sourceRoot, false);
|
|
557
|
+
const workspace = installWorkspace(projectRoot, this.agent);
|
|
558
|
+
return withSkillInstallMutex(targetRoot, absoluteDeadlineMs, async () => {
|
|
559
|
+
try {
|
|
560
|
+
await recoverInstallWorkspace(targetRoot, workspace, absoluteDeadlineMs);
|
|
561
|
+
let existing;
|
|
562
|
+
if (await exists(targetPath, absoluteDeadlineMs)) {
|
|
563
|
+
try {
|
|
564
|
+
existing = await retrySharingViolation(absoluteDeadlineMs, () => loadBundle(targetRoot, true));
|
|
565
|
+
}
|
|
566
|
+
catch (error) {
|
|
567
|
+
if (!await exists(workspace.previousRoot, absoluteDeadlineMs))
|
|
568
|
+
throw error;
|
|
569
|
+
await restorePreviousBundle(targetRoot, workspace, absoluteDeadlineMs);
|
|
570
|
+
existing = await retrySharingViolation(absoluteDeadlineMs, () => loadBundle(targetRoot, true));
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
if (existing?.hash === source.hash) {
|
|
574
|
+
await retrySharingViolation(absoluteDeadlineMs, () => rm(workspace.previousRoot, { recursive: true, force: true }));
|
|
575
|
+
return { agent: this.agent, targetPath, status: "skipped", hash: source.hash };
|
|
576
|
+
}
|
|
577
|
+
if (existing && await exists(workspace.previousRoot, absoluteDeadlineMs)) {
|
|
578
|
+
await retrySharingViolation(absoluteDeadlineMs, () => rm(workspace.previousRoot, { recursive: true, force: true }));
|
|
579
|
+
}
|
|
580
|
+
const feedbackMode = existing?.feedbackMode ?? source.feedbackMode;
|
|
581
|
+
await publishBundle(source, existing, feedbackMode, targetRoot, workspace, absoluteDeadlineMs);
|
|
582
|
+
if (existing) {
|
|
583
|
+
return {
|
|
584
|
+
agent: this.agent,
|
|
585
|
+
targetPath,
|
|
586
|
+
status: "updated",
|
|
587
|
+
previousHash: existing.hash,
|
|
588
|
+
newHash: source.hash,
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
return { agent: this.agent, targetPath, status: "installed", hash: source.hash };
|
|
592
|
+
}
|
|
593
|
+
catch (error) {
|
|
594
|
+
throw skillInstallIoError(error, "complete its runtime bundle installation");
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
async check(sourcePath, projectRoot, absoluteDeadlineMs = Date.now() + defaultInstallTimeoutMs) {
|
|
599
|
+
const source = await loadBundle(dirname(sourcePath), false);
|
|
600
|
+
const targetPath = this.resolveTargetPath(projectRoot);
|
|
601
|
+
const targetRoot = dirname(targetPath);
|
|
602
|
+
const deadlineMs = absoluteDeadlineMs;
|
|
603
|
+
return withSkillInstallMutex(targetRoot, deadlineMs, async () => {
|
|
604
|
+
if (!await exists(targetPath, deadlineMs)) {
|
|
605
|
+
return { agent: this.agent, targetPath, status: "missing", sourceHash: source.hash };
|
|
606
|
+
}
|
|
607
|
+
const installed = await retrySharingViolation(deadlineMs, () => loadBundle(targetRoot, true));
|
|
608
|
+
if (installed.hash === source.hash) {
|
|
609
|
+
return { agent: this.agent, targetPath, status: "installed", hash: installed.hash, sourceHash: source.hash };
|
|
610
|
+
}
|
|
611
|
+
return { agent: this.agent, targetPath, status: "outdated", hash: installed.hash, sourceHash: source.hash };
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
// ─── Registry ─────────────────────────────────────────────────────────────────
|
|
616
|
+
export class AgentSkillInstallerRegistry {
|
|
617
|
+
installers;
|
|
618
|
+
constructor() {
|
|
619
|
+
this.installers = new Map();
|
|
620
|
+
// Register built-in installers for all supported agent kinds
|
|
621
|
+
for (const agent of AGENT_KINDS) {
|
|
622
|
+
this.installers.set(agent, new BaseSkillInstaller(agent));
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
/** Get the installer for a specific agent kind. */
|
|
626
|
+
get(agent) {
|
|
627
|
+
return this.installers.get(agent);
|
|
628
|
+
}
|
|
629
|
+
/** Get all registered agent kinds. */
|
|
630
|
+
agents() {
|
|
631
|
+
return [...this.installers.keys()];
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Install the skill for the specified agents.
|
|
635
|
+
* @param agents Comma-separated or array of agent kinds (e.g. "pi,claude")
|
|
636
|
+
*/
|
|
637
|
+
async installForAgents(agents, sourcePath, projectRoot, absoluteDeadlineMs) {
|
|
638
|
+
const resolved = parseAgentList(agents);
|
|
639
|
+
const results = [];
|
|
640
|
+
for (const agent of resolved) {
|
|
641
|
+
const installer = this.installers.get(agent);
|
|
642
|
+
if (!installer) {
|
|
643
|
+
throw new SkillInstallerError("UNKNOWN_AGENT_KIND", `Unknown agent kind: ${agent}. Supported: ${AGENT_KINDS.join(", ")}`, [`Use one of: ${AGENT_KINDS.join(", ")}`]);
|
|
644
|
+
}
|
|
645
|
+
results.push(await installer.install(sourcePath, projectRoot, absoluteDeadlineMs));
|
|
646
|
+
}
|
|
647
|
+
return results;
|
|
648
|
+
}
|
|
649
|
+
/**
|
|
650
|
+
* Check skill status for the specified agents.
|
|
651
|
+
* @param agents Comma-separated or array of agent kinds
|
|
652
|
+
*/
|
|
653
|
+
async checkForAgents(agents, sourcePath, projectRoot, absoluteDeadlineMs) {
|
|
654
|
+
const resolved = parseAgentList(agents);
|
|
655
|
+
const results = [];
|
|
656
|
+
for (const agent of resolved) {
|
|
657
|
+
const installer = this.installers.get(agent);
|
|
658
|
+
if (!installer) {
|
|
659
|
+
throw new SkillInstallerError("UNKNOWN_AGENT_KIND", `Unknown agent kind: ${agent}. Supported: ${AGENT_KINDS.join(", ")}`, [`Use one of: ${AGENT_KINDS.join(", ")}`]);
|
|
660
|
+
}
|
|
661
|
+
results.push(await installer.check(sourcePath, projectRoot, absoluteDeadlineMs));
|
|
662
|
+
}
|
|
663
|
+
return results;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
// ─── Agent list parsing ──────────────────────────────────────────────────────
|
|
667
|
+
/**
|
|
668
|
+
* Parse a comma-separated string or array of agent kinds into validated AgentKind[].
|
|
669
|
+
*/
|
|
670
|
+
export function parseAgentList(agents) {
|
|
671
|
+
const raw = typeof agents === "string"
|
|
672
|
+
? agents.split(",").map((a) => a.trim()).filter(Boolean)
|
|
673
|
+
: agents;
|
|
674
|
+
const validSet = new Set(AGENT_KINDS);
|
|
675
|
+
const result = [];
|
|
676
|
+
for (const agent of raw) {
|
|
677
|
+
if (!validSet.has(agent)) {
|
|
678
|
+
throw new SkillInstallerError("UNKNOWN_AGENT_KIND", `Unknown agent kind: "${agent}". Supported: ${AGENT_KINDS.join(", ")}`, [`Use one or more of: ${AGENT_KINDS.join(", ")}, comma-separated (e.g. "pi,claude,.agents")`]);
|
|
679
|
+
}
|
|
680
|
+
// Deduplicate
|
|
681
|
+
if (!result.includes(agent)) {
|
|
682
|
+
result.push(agent);
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
if (result.length === 0) {
|
|
686
|
+
throw new SkillInstallerError("AGENT_KIND_REQUIRED", "At least one agent kind must be specified.", [`Use --agent with one or more of: ${AGENT_KINDS.join(", ")}`]);
|
|
687
|
+
}
|
|
688
|
+
return result;
|
|
689
|
+
}
|
|
690
|
+
// ─── Error class ─────────────────────────────────────────────────────────────
|
|
691
|
+
export class SkillInstallerError extends Error {
|
|
692
|
+
code;
|
|
693
|
+
nextActions;
|
|
694
|
+
constructor(code, message, nextActions = []) {
|
|
695
|
+
super(message);
|
|
696
|
+
this.code = code;
|
|
697
|
+
this.nextActions = nextActions;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
// ─── Convenience: default registry instance ──────────────────────────────────
|
|
701
|
+
/** Default registry with all built-in agent installers. */
|
|
702
|
+
export const agentSkillInstaller = new AgentSkillInstallerRegistry();
|
|
703
|
+
//# sourceMappingURL=skill-installer.js.map
|