@alpsckr/unitycli 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +15 -12
  2. package/contracts/init-contract.json +11 -4
  3. package/contracts/package-files.json +3 -3
  4. package/dist/cli-commands/init-discovery.d.ts +9 -2
  5. package/dist/cli-commands/init-discovery.js +60 -50
  6. package/dist/cli-commands/init-discovery.js.map +1 -1
  7. package/dist/cli-commands/init-help.js +13 -9
  8. package/dist/cli-commands/init-help.js.map +1 -1
  9. package/dist/cli-commands/init-skill.d.ts +1 -1
  10. package/dist/cli-commands/init-skill.js +92 -26
  11. package/dist/cli-commands/init-skill.js.map +1 -1
  12. package/dist/cli-commands/package.js +59 -12
  13. package/dist/cli-commands/package.js.map +1 -1
  14. package/dist/cli-commands/skill-installer.d.ts +15 -7
  15. package/dist/cli-commands/skill-installer.js +106 -66
  16. package/dist/cli-commands/skill-installer.js.map +1 -1
  17. package/dist/cli-commands/types.d.ts +3 -0
  18. package/dist/cli.js +5 -3
  19. package/dist/cli.js.map +1 -1
  20. package/dist/package-manager.d.ts +5 -1
  21. package/dist/package-manager.js +21 -9
  22. package/dist/package-manager.js.map +1 -1
  23. package/dist/unity-project-processes.d.ts +7 -0
  24. package/dist/unity-project-processes.js +54 -0
  25. package/dist/unity-project-processes.js.map +1 -1
  26. package/docs/architecture.md +3 -3
  27. package/docs/error-codes.md +16 -0
  28. package/docs/extensions.md +3 -1
  29. package/package.json +1 -1
  30. package/schemas/init.schema.json +95 -10
  31. package/skills/unitycli/SKILL.md +26 -42
  32. package/skills/unitycli/manifest.json +1 -1
  33. package/skills/unitycli/references/operation-protocol.md +1 -1
  34. package/skills/unitycli/reports/output_quality_scorecard.md +1 -1
  35. package/skills/unitycli/reports/trust-report.md +1 -1
  36. package/unitypkg/package.json +1 -1
@@ -16,6 +16,8 @@ Bridge 与 AI Skill 是两个独立安装对象。先用安装协议发现并选
16
16
  unitycli init help
17
17
  unitycli init discover
18
18
  unitycli init package --project C:\path\UnityProject
19
+ # 仅在用户批准正常关闭这个准确项目后使用
20
+ unitycli init package --project C:\path\UnityProject --close-editor
19
21
  unitycli init package --project C:\path\UnityProject --check
20
22
  ```
21
23
 
@@ -24,7 +26,7 @@ Bridge 安装内容:
24
26
  - `Packages/unitycli.install.json` — 安装元数据(项目 hash、source hash、managed-file hash、版本与支持范围)
25
27
  - `Packages/com.alpsckr.unitycli/unitycli.files.json` — 受管文件路径清单
26
28
 
27
- Skill 使用`init skill`安装到用户选择的`.agents`或Claude workspace/user目标,不属于Unity项目Package安装。
29
+ Skill 使用`init skill --target <SkillDirectory>`安装到用户明确目录,或使用`.agents`/Claude workspace/user预设;它不属于Unity项目Package安装,Bridge失败也不阻止这个独立效果。
28
30
 
29
31
  ### 项目能力发现
30
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpsckr/unitycli",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Windows-first CLI for UnityCLI automation.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -52,7 +52,7 @@
52
52
  "properties": {
53
53
  "action": { "const": "init_help" },
54
54
  "audience": { "const": "ai" },
55
- "protocolVersion": { "type": "integer", "minimum": 1 },
55
+ "protocolVersion": { "const": 2 },
56
56
  "aiInstructions": { "type": "array", "minItems": 1, "items": { "type": "string" } },
57
57
  "commands": { "type": "object", "additionalProperties": { "type": "string" } },
58
58
  "nextCommand": { "type": "string" },
@@ -67,16 +67,87 @@
67
67
  "action": { "const": "init_discover" },
68
68
  "cwd": { "type": "string" },
69
69
  "repositoryRoot": { "type": ["string", "null"] },
70
- "limits": { "type": "object" },
71
- "scan": { "type": "object" },
72
- "unityProjects": { "type": "array" },
73
- "skillWorkspaces": { "type": "array" },
74
- "skillCopies": { "type": "array" },
75
- "shadowingRisks": { "type": "array" },
76
- "requiredDecisions": { "type": "array", "minItems": 4 },
70
+ "unityProjects": {
71
+ "type": "array",
72
+ "items": {
73
+ "type": "object",
74
+ "properties": {
75
+ "path": { "type": "string" },
76
+ "unityVersion": { "type": "string" },
77
+ "relation": { "enum": ["cwd", "ancestor", "descendant"] },
78
+ "depth": { "type": "integer", "minimum": 0 },
79
+ "bridge": {
80
+ "type": "object",
81
+ "properties": {
82
+ "status": { "enum": ["installed", "missing", "damaged", "drifted", "conflict", "unverifiable", "not-inspected"] },
83
+ "installedVersion": { "type": "string" },
84
+ "availableVersion": { "type": "string" },
85
+ "reasonCode": { "type": "string" },
86
+ "message": { "type": "string" }
87
+ },
88
+ "required": ["status"],
89
+ "additionalProperties": false
90
+ },
91
+ "editor": {
92
+ "type": "object",
93
+ "properties": {
94
+ "status": { "enum": ["running", "stopped", "unverifiable", "not-inspected"] },
95
+ "processCount": { "type": "integer", "minimum": 0 },
96
+ "message": { "type": "string" }
97
+ },
98
+ "required": ["status"],
99
+ "additionalProperties": false
100
+ }
101
+ },
102
+ "required": ["path", "unityVersion", "relation", "depth", "bridge", "editor"],
103
+ "additionalProperties": false
104
+ }
105
+ },
106
+ "skill": {
107
+ "type": "object",
108
+ "properties": {
109
+ "workspace": { "type": "string" },
110
+ "recommendedTarget": { "type": "string" },
111
+ "explicitTargetSupported": { "const": true },
112
+ "status": { "enum": ["installed", "missing", "drifted", "damaged"] },
113
+ "targetPath": { "type": "string" },
114
+ "sourceHash": { "$ref": "#/$defs/sha256" },
115
+ "hash": { "$ref": "#/$defs/sha256" },
116
+ "message": { "type": "string" }
117
+ },
118
+ "required": ["workspace", "recommendedTarget", "explicitTargetSupported", "status", "targetPath", "sourceHash"],
119
+ "additionalProperties": false
120
+ },
121
+ "requiredDecisions": {
122
+ "type": "array",
123
+ "items": {
124
+ "type": "object",
125
+ "properties": {
126
+ "id": { "enum": ["bridgeProjects", "closeEditor"] },
127
+ "question": { "type": "string" },
128
+ "choices": { "type": "array", "items": { "type": "string" } },
129
+ "projectPath": { "type": "string" },
130
+ "multiple": { "type": "boolean" }
131
+ },
132
+ "required": ["id", "question", "multiple"],
133
+ "additionalProperties": false
134
+ }
135
+ },
136
+ "scan": {
137
+ "type": "object",
138
+ "properties": {
139
+ "scannedDirectories": { "type": "integer", "minimum": 0, "maximum": 2000 },
140
+ "truncated": { "type": "boolean" },
141
+ "maxDescendantDepth": { "const": 4 },
142
+ "maxScannedDirectories": { "const": 2000 },
143
+ "maxUnityProjects": { "const": 100 }
144
+ },
145
+ "required": ["scannedDirectories", "truncated", "maxDescendantDepth", "maxScannedDirectories", "maxUnityProjects"],
146
+ "additionalProperties": false
147
+ },
77
148
  "nextActions": { "$ref": "#/$defs/nextActions" }
78
149
  },
79
- "required": ["action", "cwd", "repositoryRoot", "limits", "scan", "unityProjects", "skillWorkspaces", "skillCopies", "shadowingRisks", "requiredDecisions", "nextActions"],
150
+ "required": ["action", "cwd", "repositoryRoot", "unityProjects", "skill", "requiredDecisions", "nextActions"],
80
151
  "additionalProperties": false
81
152
  },
82
153
  "packageData": {
@@ -85,6 +156,15 @@
85
156
  "action": { "enum": ["init_package", "init_package_check"] },
86
157
  "projectPath": { "type": "string" },
87
158
  "projectIdentity": { "type": "object" },
159
+ "editorClose": {
160
+ "type": "object",
161
+ "properties": {
162
+ "status": { "enum": ["not-running", "closed"] },
163
+ "requested": { "type": "integer", "minimum": 0 }
164
+ },
165
+ "required": ["status", "requested"],
166
+ "additionalProperties": false
167
+ },
88
168
  "package": {
89
169
  "type": "object",
90
170
  "properties": { "status": { "enum": ["installed", "missing", "damaged", "drifted", "conflict"] } },
@@ -102,6 +182,7 @@
102
182
  "agent": { "enum": [".agents", "claude"] },
103
183
  "scope": { "enum": ["workspace", "user"] },
104
184
  "workspace": { "type": "string" },
185
+ "target": { "type": "string" },
105
186
  "changes": { "type": "array" },
106
187
  "skill": {
107
188
  "type": "object",
@@ -117,7 +198,11 @@
117
198
  },
118
199
  "nextActions": { "$ref": "#/$defs/nextActions" }
119
200
  },
120
- "required": ["action", "agent", "scope", "skill", "nextActions"],
201
+ "required": ["action", "skill", "nextActions"],
202
+ "oneOf": [
203
+ { "type": "object", "required": ["agent", "scope"] },
204
+ { "type": "object", "required": ["target"] }
205
+ ],
121
206
  "additionalProperties": false
122
207
  }
123
208
  }
@@ -1,70 +1,54 @@
1
1
  ---
2
2
  name: unitycli
3
- description: 所有涉及 UnityUnity Editor 或 UnityPipeline 的任务都优先使用本 Skill,以便发现唯一可用的 `unitycli` 控制入口。适用于 Scene、GameObject、Prefab、Asset、Package、Build、Test、GameView、SceneView、日志、截图、Bridge、instance、Editor/PlayMode 状态和项目自定义能力;纯源码或文本工作可直接处理,但需要观察、操作或验证已打开 Editor 时必须使用 CLI。
3
+ description: 所有涉及 UnityUnity Editor 或 UnityPipeline 的任务都优先使用本 Skill,用于判断直接处理项目文件,或通过`unitycli` 入口发现当前 Editor 能力。
4
4
  ---
5
-
6
5
  # UnityCLI
7
6
 
8
7
  FeedbackMode: off
9
8
 
10
- `unitycli` 是 AI 操作已打开 Unity Editor 的能力目录。不要记忆或猜能力:先发现,再读 descriptor,最后调用。
9
+ `unitycli` 是 AI 操作已打开 Unity Editor 的运行时导航入口,不是固定工具手册。根据任务发现当前 catalog,读取所选 descriptor,再构造调用。
11
10
 
12
11
  ## 路由
13
12
 
14
- - 所有Unity动作与观察能力都属于Tool;读取型Tool必须纯只读并准确声明空副作用。
15
- - `.cs`、JSON、YAML、manifest 或文档编辑可直接使用文件工具。需要 Unity 内存状态、导入结果、编译、物理、渲染或业务效果证明时使用 CLI。
16
- - 公开顶层只有`tools`、`command`、`init`、`extensions`、`target`、`instances`、`doctor`;Unity能力域不作为顶层命令。
17
- - auth、Unity Hub、Editor安装或打开、Cloud、License、proxy配置属于外部控制面;直接使用系统或官方工具,不在catalog中猜测替代Tool。
18
- - Extension 管理只用 `extensions list`、`extensions install`、`extensions remove`、`extensions doctor`。
19
- - 已连接实例的目录同时包含 built-in、Extension、project、Editor 和 Runtime 能力,不按 `source` 或当前模式过滤。
20
- - 完全兼容 Unity 官方 CLI 特性体系:项目与第三方 Package 中以官方 `[CliCommand]`/`[CliArg]`/`IStructuredCommandInput` 声明的命令直接进入同一 catalog,固定投影为 `UnityPipeline_<原名>`、group `UnityPipeline`,用 `command <原名>` 或完整前缀名调用;`com.unity.pipeline` 包自身命令已由 native 能力吸收并按 provider identity 抑制。native 精确重名优先。
21
-
22
- ## 安装协议
23
-
24
- 当用户要求安装、配置、检查或修复 UnityCLI 时,唯一学习入口是:
25
-
26
- ```powershell
27
- unitycli init help
28
- ```
29
-
30
- 严格执行返回的版本化`aiInstructions`,不要依赖本Skill记忆安装步骤。先运行`init discover`,再向用户询问要安装Bridge的Unity项目,以及Skill的agent、scope和常用workspace;不得静默选择。多个Bridge项目逐个严格串行安装,每次等待terminal并执行对应`--check`后才能继续;Skill通常只安装到用户选择的一个`.agents`或Claude workspace/user目标。第一次非预期CLI失败或业务check失败立即停止,不重试、纠参或继续后续effect。安装流程不得启动、关闭、重启或终止Unity Editor。用户完成选择后的明确安装调用即授权,不增加第二次确认。
13
+ - 需要 Unity 内存、Editor API、导入/编译、PlayMode 或业务效果证明时使用 CLI。
14
+ - Unity 动作与观察能力都从同一 Tool catalog 发现。公开顶层只有 `tools`、`command`、`init`、`extensions`、`target`、`instances`、`doctor`;不要猜 Unity 能力域是顶层命令。
15
+ - 不知道能力领域时可看 group,已有业务关键词时可 search,得到 exact Tool 名后 describe。返回的 `name` 是调用名,group 和 `source` 不参与名称拼接或 owner 路由。
16
+ - `tools run` 与 `command` 复用同一 descriptor 和 schema。`[CliCommand("name")]` 投影为 `UnityPipeline_name`,也可由 `command name` 选择;native exact name 优先。
31
17
 
32
- ## 执行骨架
18
+ ## 发现与调用
33
19
 
34
20
  ```powershell
35
- # 默认隐藏 offline;仅审计完整历史集合时使用 instances list --all
21
+ # 目标未知、需要审计当前连接或错误要求检查实例时
36
22
  unitycli instances list
37
- # 仅需清理历史记录时,授权选定的当前Unity执行有界prune
38
- unitycli instances prune --instance <id|projectPath|alias>
23
+
39
24
  unitycli tools group --instance <id|projectPath|alias>
40
- unitycli tools group list <group> --page-size 20 --instance <id|projectPath|alias>
41
- unitycli tools search '<k1|k2|...>' --page-size 20 --instance <id|projectPath|alias>
25
+ unitycli tools group list <group> --instance <id|projectPath|alias>
26
+ unitycli tools search '<k1|k2|...>' --instance <id|projectPath|alias>
42
27
  unitycli tools describe <tool> --instance <id|projectPath|alias>
43
28
  unitycli tools run <tool> --input '<json>' --instance <id|projectPath|alias>
44
29
 
45
- # 同一catalog的schema参数调用;省略name时列出command投影
46
- unitycli command --project-path <projectPath> --page-size 20
30
+ unitycli command --project-path <projectPath>
47
31
  unitycli command <name> --field <value> --instance <id|projectPath|alias>
48
32
  ```
49
33
 
50
- 显式`--instance`优先;`command --project-path <path>`绑定同一canonical项目实例;未传时只能从当前Unity项目CWD解析。没有连接实例时discovery返回稳定instance error,不返回静态或空目录。`instances list`逐文件隔离旧格式、损坏或不可读记录,合法实例继续返回,并用`invalidRecordCount`报告隔离数量;当前项目由Unity在ready时自动重建。需要清理历史记录时调用`instances prune --instance <id|projectPath|alias>`并检查`removed`、`remaining`、`deferred`,不得读取、转换、移动或手工删除内部记录。
34
+ 用户已给出目标或当前 Unity 项目 CWD 能唯一解析时可以直接使用;需要 selector 时优先只传一种,冲突的 `--instance` 与 `command --project-path` 会失败。不了解能力领域时可先看 group,已有业务关键词时可直接 search,第一次执行不了解的 Tool 前先 describe。
35
+
36
+ PowerShell 中以单引号包住内联 JSON 和 `tools search '<k1|k2|...>'`。任务业务值优先于 schema default 和 example;default/example 只说明合法形状,不作为 probe。分页、artifact、大输出、弹窗和 host 等待按需读取 `references/operation-protocol.md`。
37
+
38
+ ## 通用规则
51
39
 
52
- 执行不了解的Tool前必须`tools describe`,输入和行为以当前descriptor为准。PowerShell中必须用单引号包住`tools search '<k1|k2|...>'`的整个关键词,否则`|`会被shell解释为管道。schema default 与 `examples[].input` 描述合法默认业务值,按需 `examples[].execution` 描述 dry-run/timeout 控制;任务明确要求的业务值优先,不能把default/example当作连通性或probe调用。`tools group list`、`tools search`和省略name的`command`列表默认20项、最大100项;需要更多时把`pageInfo.nextCursor`原值传回`--cursor`。返回的Tool `name`就是exact调用名;group只用于筛选,不能拼到name前。stdout默认是单行紧凑JSON,只有显式`--pretty`才缩进。
40
+ - descriptor 是输入、风险、availability、PlayMode 和依赖的当前契约;根据任务决定是否切换状态、预览或改用其他能力。
41
+ - 调用公开 Tool 或 CLI 控制面即为授权。风险 metadata 只描述效果与可选 dry-run;Skill 不增加确认或预定义操作范围。
42
+ - 等待 CLI 进程退出。`ok:true` 后检查任务相关的关键业务字段;返回结果不足或任务明确要求验证时,再使用只读 Tool 或业务 readback。
43
+ - 失败时根据结构化 error 和 `nextActions` 形成恢复决策。`transient:true` 与 `nextActions` 仍是建议,不构成额外授权门。
44
+ - `E_EXECUTION_TIMEOUT`、放行后连接丢失或缺少可信 terminal envelope只表示没有可信终态。先用只读Tool或业务readback观察并形成新的业务决策;CLI不自动重放,首次mutation POST后Editor session改变时也不会向新session重投。
45
+ - 状态观察使用 `instances`、`doctor` 或 `editor.state`,不操作内部 registry 或 transport。
53
46
 
54
- `command`不建立第二套目录:native Tool使用完整精确名;Unity官方`[CliCommand]`完全兼容,项目或其他Package的`[CliCommand("test")]`在`tools`中固定名为`UnityPipeline_test`、group为`UnityPipeline`,可由`command test`或完整前缀名选择。`com.unity.pipeline` package自身命令已由native能力吸收并按provider identity抑制,不应期待其attribute原名存在。native精确重名优先;不得把不存在的名称映射到相似Tool。业务参数支持`--field value`、`--field=value`、boolean裸开关和按schema声明顺序的positional。
47
+ ## 能力扩展
55
48
 
56
- ## 使用说明
49
+ 现有 Tool 不适合时,先判断是否真的需要 Unity 侧执行。普通源码或文本仍可直接处理;有界的临时 Unity 内存或 Editor API 逻辑可以考虑 `code.exec`。同步 C# 开始后不能由 CLI timeout 中止,复杂等待或不确定终态先读 `references/operation-protocol.md`。
57
50
 
58
- - 调用即授权。`destructiveHint`、`sideEffects`、`supportsDryRun`只描述效果;仅在确需预览时使用`--dry-run`。Skill不增加确认、意图复核或预定义操作范围;产品的cross-session mutation fence仍必须遵守。
59
- - 建议通过 `instances`、`doctor`、`tools run editor.state` 观察状态,不读取内部 Bridge 注册文件、端口或 URL,也不直接 ping transport。
60
- - CLI会在发送Unity业务请求前自行等待首次ready记录、编译/导入/重载完成和target session任务池放行;不得手工每100毫秒循环调用,也不得读取或操作内部状态。`--timeout-ms T`分别提供最多`T`的准入等待与放行后最多`T`的业务执行。
61
- - 准入deadline返回的`E_UNITY_BUSY`会明确证明`no business request was sent`,effect未开始,可以稍后提交新root。已进入池后的mutation lease busy不得解释为effect未开始。
62
- - `E_EXECUTION_TIMEOUT`、放行后连接丢失或缺少可信terminal envelope只表示没有可信终态。先用只读Tool或业务readback观察并形成新的业务决策;CLI不自动重放,首次mutation POST后Editor session改变时也不会向新session重投。`transient:true`与`nextActions`仍是建议,不构成额外授权门。
63
- - 运行公开CLI时必须等待该进程退出,不得后台分离。传入`--timeout-ms T`时,命令host至少等待`2 * T + 5000`毫秒;CLI在stdout完成或最多1秒后退出。host提前超时不等于CLI、准入grant或Unity effect已经停止。
64
- - `available:false`、`unavailableReason` 和 `playModeSupport` 说明当前可执行性;`source` 不参与路由。
65
- - blocker 在 `error.details.blockers` 时,可先读 `editor.dialogs`,再按返回的 dialogId 与 enabled button 调用 `editor.dialog.click`。
66
- - 大输出、envelope、artifact、分页、host等待预算和 session 说明见 `references/operation-protocol.md`。
67
- - 内置能力不足时,一次性操作可使用 `code.exec`;反复需要再读 `references/custom-tools.md`。`code.exec`不限制提交的同步C#,也不会拒绝死循环、长时间sleep、阻塞等待、锁等待或长期占用Unity API的代码。提交这类代码前必须先判断它对当前结果是否确有必要,并考虑有界写法或现有Tool能否达到同一结果;确有必要时可以原样执行。代码一旦在Unity主线程开始,`--timeout-ms`只能停止CLI等待,不能中止代码;Unity可能无响应、mutation owner不能收尾、业务状态部分改变或未知,恢复可能需要结束Editor进程。timeout不证明代码已停止,重试前必须观察业务状态。`--dry-run`只预览source hash,不编译、不执行,也不证明代码会结束。
51
+ 当能力需要稳定发现、typed schema、结构化结果、明确副作用、重复使用或团队共享时,读取 `references/custom-tools.md` 并实现项目自定义 `IUnityCliTool<TReq,TRes>`。自定义 Tool 仍从当前 catalog 发现、describe 和调用,不假设名称、group 或输入。
68
52
 
69
53
  ## 问题反馈
70
54
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unitycli",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "owner": "alps-unity-cli maintainers",
5
5
  "updated_at": "2026-08-27",
6
6
  "status": "active",
@@ -82,4 +82,4 @@ unitycli extensions remove <id> --project <path>
82
82
  unitycli extensions doctor --project <path>
83
83
  ```
84
84
 
85
- 安装协议先使用`unitycli init help`学习,再由`init discover`只读发现现场。Bridge只用`init package --project <UnityProject>`安装,并用同命令加`--check`校验;Skill只用`init skill --agent <.agents|claude> --scope <workspace|user>`,workspace scope还必须传`--workspace <path>`,同命令加`--check`校验。不得使用裸`init`或混装Bridge与SkillUnity project文件投影完成后,如任务要求Editor效果,仍需在已连接实例中完成import/compile和业务readback;安装协议本身不得管理Unity进程。
85
+ 安装协议先使用`unitycli init help`学习,再由`init discover`只读返回当前项目计划。Bridge使用`init package --project <UnityProject>`安装;准确目标Unity正在运行且用户同意正常关闭时增加`--close-editor`,不得强制终止或替用户处理未保存场景。Skill明确目录使用`init skill --target <SkillDirectory>`,预设目标仍可使用`init skill --agent <.agents|claude> --scope <workspace|user>`,workspace scope同时传`--workspace <path>`;每种形式都用原命令加`--check`校验。用户已指定的目标不得重复询问。Bridge与Skill是独立效果,一个失败不阻断另一个。不得使用裸`init`或把两种效果合并为一个命令。Unity project文件投影完成后,如任务要求Editor效果,仍需在已连接实例中完成import/compile和业务readback
@@ -24,7 +24,7 @@ The feedback output contract requires category, concise issue summary, optional
24
24
  | Feedback privacy negatives | PASS | Secret/endpoint/path negative matrix | Novel secret formats can still exist |
25
25
  | Concurrent JSONL validity | PASS | 16 parallel Windows PowerShell writers | Cross-session Windows desktop contention not measured |
26
26
  | Rolling bound | PASS | Main + 3 archives, each <= 64 KiB | Longitudinal retention utility not measured |
27
- | Installed bundle reachability | PASS | Public workspace/user install, drifted-update, check, and recorder smoke for `.agents` and Claude | Verified with isolated filesystem targets |
27
+ | Installed bundle reachability | PASS | Public exact-target and preset workspace/user install, drifted-update, check, and recorder smoke | Verified with isolated filesystem targets |
28
28
  | Clean Agent interpretation | PASS | Black-box runtime discovery transcript and main-agent audit | Human adjudication unavailable |
29
29
 
30
30
  ## Rollback Boundary
@@ -36,7 +36,7 @@ The Skill does not add confirmation, intent review, or a predefined operation ra
36
36
 
37
37
  - Full repository tests: 876/876 PASS; targeted Skill/installer/docs regression: 61/61 PASS.
38
38
  - Recorder concurrency, rotation, privacy negatives, PowerShell 5.1 BOM, and non-ASCII stdout: PASS.
39
- - Public runtime install, drifted update, check, marker preservation, and installed-recorder smoke across `.claude` and `.agents`: PASS.
39
+ - Public exact-target and preset runtime install, drifted update, check, marker preservation, and installed-recorder smoke: PASS.
40
40
  - Resource boundary: 963 estimated initial-load tokens (691 Skill body tokens), limit 1300.
41
41
  - Trigger fixture gate: 29/29 classifications.
42
42
  - Output assertion gate: 5/5 with-skill cases, 100% pass rate.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "com.alpsckr.unitycli",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "displayName": "UnityCLI",
5
5
  "description": "Editor package used by UnityCLI commands.",
6
6
  "unity": "2022.3",