@alpsckr/unitycli 0.4.0 → 0.4.2

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 (98) hide show
  1. package/README.md +111 -299
  2. package/contracts/init-contract.json +64 -0
  3. package/contracts/instances-contract.json +49 -0
  4. package/contracts/package-assembly-closure.json +33 -0
  5. package/contracts/package-files.json +1953 -0
  6. package/dist/bridge/session-supervisor.d.ts +2 -0
  7. package/dist/bridge/session-supervisor.js +52 -19
  8. package/dist/bridge/session-supervisor.js.map +1 -1
  9. package/dist/cli-commands/command.js +33 -15
  10. package/dist/cli-commands/command.js.map +1 -1
  11. package/dist/cli-commands/init-discovery.d.ts +11 -0
  12. package/dist/cli-commands/init-discovery.js +185 -0
  13. package/dist/cli-commands/init-discovery.js.map +1 -0
  14. package/dist/cli-commands/init-help.d.ts +3 -0
  15. package/dist/cli-commands/init-help.js +41 -0
  16. package/dist/cli-commands/init-help.js.map +1 -0
  17. package/dist/cli-commands/init-skill.d.ts +10 -0
  18. package/dist/cli-commands/init-skill.js +171 -0
  19. package/dist/cli-commands/init-skill.js.map +1 -0
  20. package/dist/cli-commands/instances.d.ts +4 -0
  21. package/dist/cli-commands/instances.js +90 -0
  22. package/dist/cli-commands/instances.js.map +1 -0
  23. package/dist/cli-commands/package.d.ts +2 -2
  24. package/dist/cli-commands/package.js +97 -130
  25. package/dist/cli-commands/package.js.map +1 -1
  26. package/dist/cli-commands/skill-installer.d.ts +29 -13
  27. package/dist/cli-commands/skill-installer.js +127 -88
  28. package/dist/cli-commands/skill-installer.js.map +1 -1
  29. package/dist/cli-commands/types.d.ts +4 -0
  30. package/dist/cli.d.ts +1 -1
  31. package/dist/cli.js +46 -37
  32. package/dist/cli.js.map +1 -1
  33. package/dist/contracts/command-contract.js +1 -0
  34. package/dist/contracts/command-contract.js.map +1 -1
  35. package/dist/doctor.js +1 -1
  36. package/dist/doctor.js.map +1 -1
  37. package/dist/instances.d.ts +1 -1
  38. package/dist/instances.js +63 -38
  39. package/dist/instances.js.map +1 -1
  40. package/dist/output.d.ts +4 -4
  41. package/dist/output.js +3 -4
  42. package/dist/output.js.map +1 -1
  43. package/dist/package-manager.d.ts +47 -2
  44. package/dist/package-manager.js +267 -16
  45. package/dist/package-manager.js.map +1 -1
  46. package/dist/tools/.generated-schemas.js +2 -2
  47. package/dist/tools/.generated-schemas.js.map +1 -1
  48. package/dist/tools/commands.js +11 -4
  49. package/dist/tools/commands.js.map +1 -1
  50. package/dist/tools/dispatcher.js +1 -1
  51. package/dist/tools/dispatcher.js.map +1 -1
  52. package/dist/tools/tools/group-list.d.ts +4 -8
  53. package/dist/tools/tools/group-list.js +12 -13
  54. package/dist/tools/tools/group-list.js.map +1 -1
  55. package/dist/tools/tools/pagination.d.ts +17 -0
  56. package/dist/tools/tools/pagination.js +28 -0
  57. package/dist/tools/tools/pagination.js.map +1 -0
  58. package/dist/tools/tools/search.d.ts +3 -5
  59. package/dist/tools/tools/search.js +12 -12
  60. package/dist/tools/tools/search.js.map +1 -1
  61. package/dist/unity-project-processes.d.ts +7 -0
  62. package/dist/unity-project-processes.js +54 -0
  63. package/dist/unity-project-processes.js.map +1 -1
  64. package/docs/README.md +7 -4
  65. package/docs/architecture.md +103 -0
  66. package/docs/availability-differences.md +1 -1
  67. package/docs/command-execution.md +6 -1
  68. package/docs/development.md +91 -0
  69. package/docs/error-codes.md +21 -5
  70. package/docs/extensions.md +13 -13
  71. package/docs/target-and-instance.md +6 -4
  72. package/docs/tool-discovery.md +12 -10
  73. package/docs/tool-execution.md +3 -2
  74. package/package.json +10 -4
  75. package/schemas/init.schema.json +209 -0
  76. package/schemas/instances.schema.json +104 -0
  77. package/skills/unitycli/SKILL.md +18 -6
  78. package/skills/unitycli/manifest.json +2 -2
  79. package/skills/unitycli/references/custom-tools.md +3 -3
  80. package/skills/unitycli/references/operation-protocol.md +6 -4
  81. package/skills/unitycli/reports/output_quality_scorecard.md +1 -1
  82. package/skills/unitycli/reports/trust-report.md +1 -1
  83. package/unitypkg/Editor/Bridge/BridgeCommandRegistry.cs +1 -0
  84. package/unitypkg/Editor/Bridge/BridgeWorkQueue.cs +18 -6
  85. package/unitypkg/Editor/Infrastructure/CodeExecSupport.cs +8 -77
  86. package/unitypkg/Editor/Infrastructure/UnityCliInstanceCleanup.cs +295 -0
  87. package/unitypkg/Editor/Infrastructure/UnityCliInstanceRegistry.cs +166 -10
  88. package/unitypkg/Editor/Infrastructure/UnityCliOperationCoordinator.cs +1 -0
  89. package/unitypkg/Editor/UnityCliBridge.cs +5 -1
  90. package/unitypkg/Tests/Editor/UnityCliInstanceCleanupTests.cs +232 -0
  91. package/unitypkg/Tests/Editor/UnityCliInstancePublicationRetryTests.cs +143 -0
  92. package/unitypkg/UnityCli.Editor.asmdef +1 -5
  93. package/unitypkg/package.json +1 -1
  94. package/unitypkg/Editor/Roslyn/LICENSE.txt +0 -23
  95. package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.CSharp.dll +0 -0
  96. package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.dll +0 -0
  97. package/unitypkg/Editor/Roslyn/System.Collections.Immutable.dll +0 -0
  98. package/unitypkg/Editor/Roslyn/System.Reflection.Metadata.dll +0 -0
@@ -2,150 +2,117 @@ import { resolve } from "node:path";
2
2
  import { getBoolean, getString } from "../args.js";
3
3
  import { failure, success } from "../output.js";
4
4
  import { ProjectIdentityError, resolveProjectIdentity } from "../project-identity.js";
5
- import { StructuredToolError } from "../tools/errors.js";
6
- /** 安装 Core package、Agent Skill 和自动检测 Extension,并只返回文件系统 readback。 */
7
- export async function handleInit(flags, runtime, requestId) {
8
- if (flags.unity !== undefined) {
9
- return failure(requestId, "E_OBSOLETE_OPTION", "init --unity has been removed; init only copies package and Skill files.", [
10
- "Remove --unity and run init against the Unity project path.",
11
- "Open or refresh that project in Unity after init completes."
12
- ]);
13
- }
14
- const allowedFlags = new Set(["project", "agent", "pkg-only", "skill-only", "check", "timeout-ms", "raw"]);
15
- const unknownFlag = Object.keys(flags).find((flag) => !allowedFlags.has(flag));
16
- if (unknownFlag) {
17
- return failure(requestId, "E_UNKNOWN_OPTION", `Unknown option for init: --${unknownFlag}.`, ["Run unitycli --help for the supported init options."]);
18
- }
19
- const projectPath = resolve(getString(flags, "project") ?? process.cwd());
20
- const { checkPackageBridge, ensurePackageBridge, preparePackageBridgeInstall, PackageManagerError } = await import("../package-manager.js");
21
- const { agentSkillInstaller, detectAgentKinds, findSkillSourcePath, parseAgentList, SkillInstallerError } = await import("./skill-installer.js");
22
- const agentFlag = getString(flags, "agent");
23
- const pkgOnly = getBoolean(flags, "pkg-only");
24
- const skillOnly = getBoolean(flags, "skill-only");
25
- const isCheck = getBoolean(flags, "check");
26
- let checkIdentity;
27
- if (isCheck) {
5
+ import { closeUnityProjectProcesses, findUnityProjectProcesses } from "../unity-project-processes.js";
6
+ import { handleInitDiscover } from "./init-discovery.js";
7
+ import { handleInitHelp } from "./init-help.js";
8
+ import { handleInitSkill } from "./init-skill.js";
9
+ function initTimeout(flags) {
10
+ const raw = getString(flags, "timeout-ms");
11
+ if (raw === undefined)
12
+ return 60_000;
13
+ const value = Number(raw);
14
+ return Number.isSafeInteger(value) && value > 0 ? value : undefined;
15
+ }
16
+ /** 只处理明确 Unity 项目的 canonical Bridge Package 安装或只读检查。 */
17
+ async function handleInitPackage(args, flags, runtime, requestId) {
18
+ if (args.length)
19
+ return failure(requestId, "E_INIT_ARGUMENT_UNEXPECTED", "init package does not accept positional arguments.", ["Run `unitycli init package --project <UnityProject>` without additional positional arguments."]);
20
+ const projectFlag = getString(flags, "project");
21
+ if (!projectFlag)
22
+ return failure(requestId, "E_INIT_PROJECT_REQUIRED", "init package requires --project <UnityProject>.", ["Pass the root of one existing Unity project."], { option: "--project" });
23
+ const timeoutMs = initTimeout(flags);
24
+ if (timeoutMs === undefined)
25
+ return failure(requestId, "E_INIT_TIMEOUT_INVALID", "init package --timeout-ms must be a positive integer.", ["Pass --timeout-ms <positive-integer>."], { option: "--timeout-ms" });
26
+ const check = getBoolean(flags, "check");
27
+ const closeEditor = getBoolean(flags, "close-editor");
28
+ if (check && closeEditor)
29
+ return failure(requestId, "E_INIT_CLOSE_EDITOR_CHECK_FORBIDDEN", "init package --check is read-only and cannot close Unity Editor.", ["Remove either --check or --close-editor."], { option: "--close-editor" });
30
+ const absoluteDeadlineMs = Date.now() + timeoutMs;
31
+ const remaining = () => Math.max(0, absoluteDeadlineMs - Date.now());
32
+ try {
33
+ const identity = resolveProjectIdentity(resolve(projectFlag));
34
+ const { ensurePackageBridge, inspectPackageBridge, preparePackageBridgeInstall, PackageManagerError } = await import("../package-manager.js");
35
+ if (check) {
36
+ const inspection = await inspectPackageBridge(identity.canonicalProjectPath);
37
+ const nextActions = inspection.status === "installed" ? []
38
+ : inspection.status === "conflict"
39
+ ? ["Resolve the reported assembly conflict, then rerun the same init package command."]
40
+ : ["Run `unitycli init package --project <UnityProject>` to converge the Bridge package to the bundled version."];
41
+ return success(requestId, { action: "init_package_check", projectPath: identity.canonicalProjectPath, package: inspection, nextActions });
42
+ }
43
+ const findEditors = runtime.findUnityProjectProcesses ?? findUnityProjectProcesses;
44
+ let editors;
28
45
  try {
29
- checkIdentity = resolveProjectIdentity(projectPath);
46
+ const observationBudgetMs = Math.min(3_000, remaining());
47
+ if (observationBudgetMs < 1)
48
+ throw new Error("installation deadline elapsed before Editor observation");
49
+ editors = await findEditors(identity.instanceId, identity.canonicalProjectPath, observationBudgetMs);
30
50
  }
31
- catch (error) {
32
- if (error instanceof ProjectIdentityError)
33
- return failure(requestId, error.code, error.message, ["Pass the root of an existing Unity project."], error.details);
34
- throw error;
51
+ catch {
52
+ throw new PackageManagerError("E_EDITOR_STATE_UNVERIFIABLE", "The exact target Unity Editor process state could not be verified before package installation.", ["Verify the target project is not open in Unity, then rerun init package."], { phase: "editor-observation" });
35
53
  }
36
- }
37
- const agentDetectionPath = checkIdentity?.canonicalProjectPath ?? projectPath;
38
- const effectiveAgentFlag = agentFlag ?? (!pkgOnly ? (await detectAgentKinds(agentDetectionPath)).join(",") || undefined : undefined);
39
- if (skillOnly && !effectiveAgentFlag)
40
- return failure(requestId, "INVALID_INIT_FLAGS", "--skill-only requires --agent or an existing .pi/.claude/.agents directory in the project.", ["Create the target Agent directory first, or pass --agent <pi|claude|.agents> explicitly."]);
41
- if (pkgOnly && skillOnly)
42
- return failure(requestId, "INVALID_INIT_FLAGS", "--pkg-only and --skill-only are mutually exclusive.", ["Use exactly one init scope flag."]);
43
- if (pkgOnly && agentFlag)
44
- return failure(requestId, "INVALID_INIT_FLAGS", "--pkg-only and --agent are mutually exclusive; --pkg-only installs only the unity package.", ["Remove --agent or --pkg-only."]);
45
- let agents = [];
46
- try {
47
- if (effectiveAgentFlag)
48
- agents = parseAgentList(effectiveAgentFlag);
49
- }
50
- catch (error) {
51
- if (error instanceof SkillInstallerError)
52
- return failure(requestId, error.code, error.message, error.nextActions);
53
- throw error;
54
- }
55
- // check 不写项目文件;canonical identity 保证 alias 与 install 共用同一 named mutex。
56
- if (isCheck) {
57
- try {
58
- const canonicalProjectPath = checkIdentity.canonicalProjectPath;
59
- const checkDeadlineMs = Date.now() + Math.max(1, Number(getString(flags, "timeout-ms")) || 60_000);
60
- const result = { action: "init_check", projectPath: canonicalProjectPath };
61
- if (!skillOnly) {
54
+ let editorClose;
55
+ if (editors.length > 0 && !closeEditor) {
56
+ throw new PackageManagerError("E_INIT_EDITOR_RUNNING", "The exact target Unity project is open and may hold Bridge package files.", ["Ask the user whether to close this exact Unity project, then rerun with --close-editor after approval."], { editorCount: editors.length });
57
+ }
58
+ if (closeEditor) {
59
+ if (editors.length === 0)
60
+ editorClose = { status: "not-running", requested: 0 };
61
+ else {
62
+ const closeEditors = runtime.closeUnityProjectProcesses ?? closeUnityProjectProcesses;
63
+ let closeResult;
62
64
  try {
63
- result.package = { status: "installed", bridge: await checkPackageBridge(canonicalProjectPath), nextActions: ["Unity package com.alpsckr.unitycli is installed via copy mode in Packages/com.alpsckr.unitycli/."] };
65
+ const closeBudgetMs = remaining();
66
+ if (closeBudgetMs < 1)
67
+ throw new Error("installation deadline elapsed before Editor close");
68
+ closeResult = await closeEditors(editors, closeBudgetMs);
64
69
  }
65
- catch (error) {
66
- if (!(error instanceof PackageManagerError))
67
- throw error;
68
- result.package = { status: "not_installed", code: error.code, message: error.message };
70
+ catch {
71
+ throw new PackageManagerError("E_EDITOR_CLOSE_FAILED", "The exact target Unity Editor could not be closed normally.", ["Close the exact target project normally, then rerun init package without --close-editor."], { phase: "editor-close" });
69
72
  }
70
- }
71
- if (agents.length > 0) {
72
- try {
73
- result.skills = await agentSkillInstaller.checkForAgents(agents, await findSkillSourcePath(), canonicalProjectPath, checkDeadlineMs);
74
- }
75
- catch (error) {
76
- if (error instanceof SkillInstallerError)
77
- return failure(requestId, error.code, error.message, error.nextActions);
78
- throw error;
73
+ if (closeResult.remaining > 0) {
74
+ throw new PackageManagerError("E_EDITOR_CLOSE_BLOCKED", "The exact target Unity Editor remained open after a normal close request.", ["Resolve any unsaved-scene or modal prompt in Unity, close the project normally, then rerun init package."], { requested: closeResult.requested, remaining: closeResult.remaining });
79
75
  }
76
+ editorClose = { status: "closed", requested: closeResult.requested };
80
77
  }
81
- if (!skillOnly) {
82
- const { checkExtensionBundles } = await import("../extensions/installer.js");
83
- const physicalState = await checkExtensionBundles(canonicalProjectPath);
84
- result.extensionPhysicalState = physicalState;
85
- result.extensionSummary = {
86
- total: physicalState.length,
87
- dependencyInstalled: physicalState.filter((item) => item.dependencyInstalled).length,
88
- installed: physicalState.filter((item) => item.installed).length,
89
- unhealthy: physicalState.filter((item) => !item.installed || !item.dependencyInstalled).length
90
- };
91
- const { autoDetectExtensions } = await import("./extension-auto-detect.js");
92
- result.extensions = await autoDetectExtensions(canonicalProjectPath, true);
93
- }
94
- return success(requestId, result);
95
- }
96
- catch (error) {
97
- if (error instanceof ProjectIdentityError)
98
- return failure(requestId, error.code, error.message, ["Pass the root of an existing Unity project."], error.details);
99
- throw error;
100
- }
101
- }
102
- try {
103
- // 所有可预见校验和源/目标决议必须在唯一 effect barrier 前完成。
104
- const identity = resolveProjectIdentity(projectPath);
105
- const bridgePlan = skillOnly ? undefined : await preparePackageBridgeInstall(projectPath);
106
- const skillSource = agents.length > 0 ? await findSkillSourcePath() : undefined;
107
- const { autoDetectExtensions, autoDetectSummary } = await import("./extension-auto-detect.js");
108
- const extensionPlan = !skillOnly && !pkgOnly ? await autoDetectExtensions(projectPath, true) : undefined;
109
- const absoluteDeadlineMs = Date.now() + Math.max(1, Number(getString(flags, "timeout-ms")) || 60_000);
110
- {
111
- const result = { action: "init", projectPath: identity.canonicalProjectPath, projectIdentity: identity };
112
- if (bridgePlan) {
113
- const bridge = await ensurePackageBridge(projectPath, bridgePlan, { absoluteDeadlineMs });
114
- const bridgeReadback = await checkPackageBridge(projectPath);
115
- result.status = "package_installed";
116
- result.package = { status: "package_installed", bridge, readback: bridgeReadback };
117
- result.resolve = "filesystem_proven";
118
- }
119
- if (skillSource) {
120
- if (Date.now() >= absoluteDeadlineMs)
121
- throw new PackageManagerError("E_EXECUTION_TIMEOUT", "The immutable init deadline elapsed before skill installation.");
122
- const skills = await agentSkillInstaller.installForAgents(agents, skillSource, identity.canonicalProjectPath, absoluteDeadlineMs);
123
- result.skills = await agentSkillInstaller.checkForAgents(agents, skillSource, identity.canonicalProjectPath, absoluteDeadlineMs);
124
- result.skillChanges = skills.filter((item) => item.status === "updated").map((item) => ({ agent: item.agent, action: "overwritten", previousHash: item.previousHash, newHash: item.newHash }));
125
- }
126
- if (extensionPlan) {
127
- if (Date.now() >= absoluteDeadlineMs)
128
- throw new PackageManagerError("E_EXECUTION_TIMEOUT", "The immutable init deadline elapsed before extension installation.");
129
- const installed = await autoDetectExtensions(projectPath);
130
- const { checkExtensionBundles } = await import("../extensions/installer.js");
131
- result.extensions = installed;
132
- result.extensionSummary = autoDetectSummary(installed);
133
- result.extensionPhysicalState = await checkExtensionBundles(projectPath);
134
- }
135
- result.nextActions = ["Open or refresh the Unity project to import the copied package."];
136
- return success(requestId, result);
137
78
  }
79
+ if (remaining() < 1)
80
+ throw new PackageManagerError("E_EXECUTION_TIMEOUT", "The immutable init deadline elapsed before Bridge package publication.", ["Inspect the project package state before submitting init again."]);
81
+ const plan = await preparePackageBridgeInstall(identity.canonicalProjectPath);
82
+ if (remaining() < 1)
83
+ throw new PackageManagerError("E_EXECUTION_TIMEOUT", "The immutable init deadline elapsed during Bridge package prevalidation.", ["Inspect the project package state before submitting init again."]);
84
+ const install = await ensurePackageBridge(identity.canonicalProjectPath, plan, { absoluteDeadlineMs });
85
+ const readback = await inspectPackageBridge(identity.canonicalProjectPath);
86
+ if (readback.status !== "installed")
87
+ throw new PackageManagerError("INIT_CHECK_FAILED", "Bridge package installation did not reach an installed readback state.", ["Inspect the returned package state before submitting init again."], { package: readback });
88
+ return success(requestId, {
89
+ action: "init_package",
90
+ projectPath: identity.canonicalProjectPath,
91
+ projectIdentity: identity,
92
+ ...(editorClose ? { editorClose } : {}),
93
+ package: { status: "installed", install, readback },
94
+ nextActions: ["Open or refresh this Unity project to import the copied Bridge package."],
95
+ });
138
96
  }
139
97
  catch (error) {
140
98
  if (error instanceof ProjectIdentityError)
141
99
  return failure(requestId, error.code, error.message, ["Pass the root of an existing Unity project."], error.details);
142
- if (error instanceof SkillInstallerError)
143
- return failure(requestId, error.code, error.message, error.nextActions);
100
+ const { PackageManagerError } = await import("../package-manager.js");
144
101
  if (error instanceof PackageManagerError)
145
- return failure(requestId, error.code, error.message, error.nextActions);
146
- if (error instanceof StructuredToolError)
147
- return failure(requestId, error.code, error.message, error.nextActions, error.details, error.transient === undefined ? undefined : { transient: error.transient, retryAfterMs: error.retryAfterMs });
148
- return failure(requestId, "E_EXECUTION_TIMEOUT", "The init result cannot be confirmed after the local operation stopped. Inspect the package, Skill, and extension state before retrying.", ["Check the project business state before submitting init again."], { reason: error instanceof Error ? error.message : String(error) });
102
+ return failure(requestId, error.code, error.message, error.nextActions, error.details, { transient: error.transient, retryAfterMs: error.retryAfterMs });
103
+ return failure(requestId, "INIT_PACKAGE_FAILED", error instanceof Error ? error.message : String(error), ["Inspect the project and bundled package source before retrying."]);
149
104
  }
150
105
  }
106
+ /** 唯一 init 控制面分发;不保留裸 init 或旧混装 flag。 */
107
+ export async function handleInit(command, args, flags, runtime, requestId) {
108
+ if (command === "help")
109
+ return handleInitHelp(args, flags, requestId);
110
+ if (command === "discover")
111
+ return handleInitDiscover(args, flags, runtime, requestId);
112
+ if (command === "package")
113
+ return handleInitPackage(args, flags, runtime, requestId);
114
+ if (command === "skill")
115
+ return handleInitSkill(args, flags, runtime, requestId);
116
+ return failure(requestId, "UNKNOWN_INIT_COMMAND", command ? `Unknown init command: ${command}.` : "init requires help, discover, package, or skill.", ["Run `unitycli init help`."]);
117
+ }
151
118
  //# sourceMappingURL=package.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/cli-commands/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/cli-commands/package.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,38 @@
1
1
  /** Supported agent identifiers for skill installation. */
2
- export type AgentKind = "pi" | "claude" | ".agents";
2
+ export type AgentKind = "claude" | ".agents";
3
3
  /** All valid agent kinds. */
4
4
  export declare const AGENT_KINDS: readonly AgentKind[];
5
- /** Result of installing a skill for a single agent. */
6
- export interface SkillInstallResult {
7
- agent: AgentKind;
5
+ /** 一个明确Skill bundle目标的安装结果。 */
6
+ export interface SkillTargetInstallResult {
8
7
  targetPath: string;
9
8
  status: "installed" | "skipped" | "updated";
10
- /** Populated when status is "skipped" (hash match). */
11
9
  hash?: string;
12
- /** Populated when status is "updated" (hash mismatch, overwritten). */
13
10
  previousHash?: string;
14
11
  newHash?: string;
15
12
  }
16
- /** Result of checking a skill for a single agent. */
17
- export interface SkillCheckResult {
13
+ /** 一个预设agent目标的安装结果。 */
14
+ export interface SkillInstallResult extends SkillTargetInstallResult {
18
15
  agent: AgentKind;
16
+ }
17
+ /** 一个明确Skill bundle目标的检查结果。 */
18
+ export interface SkillTargetCheckResult {
19
19
  targetPath: string;
20
20
  status: "installed" | "missing" | "outdated";
21
21
  hash?: string;
22
22
  sourceHash?: string;
23
23
  }
24
- /** 探测项目中已存在的 Agent 目录,用于 init 默认安装 Skill。 */
25
- export declare function detectAgentKinds(projectRoot: string): Promise<AgentKind[]>;
24
+ /** 一个预设agent目标的检查结果。 */
25
+ export interface SkillCheckResult extends SkillTargetCheckResult {
26
+ agent: AgentKind;
27
+ }
28
+ export interface SkillTargetInspection {
29
+ status: "installed" | "missing" | "drifted" | "damaged";
30
+ targetPath: string;
31
+ sourceHash: string;
32
+ hash?: string;
33
+ message?: string;
34
+ }
35
+ export declare function resolveSkillTarget(basePath: string, agent: AgentKind): string;
26
36
  /**
27
37
  * Resolve the source SKILL.md path by walking up from the current CLI module
28
38
  * location to find the package root that contains
@@ -34,6 +44,8 @@ export declare function resolveSkillSourcePath(metaUrl?: string): string;
34
44
  * package root contains the published UnityCLI Skill bundle.
35
45
  */
36
46
  export declare function findSkillSourcePath(startDir?: string): Promise<string>;
47
+ /** 仅测试使用:在读取既有target前制造底层文件系统失败。 */
48
+ export declare function setBeforeSkillTargetLoadForTest(hook: (() => Promise<void>) | undefined): void;
37
49
  /** 仅测试使用:在 target 保持完整时、首次发布写入前制造等待或失败。 */
38
50
  export declare function setBeforeSkillPublishForTest(hook: (() => Promise<void>) | undefined): void;
39
51
  /** 仅测试使用:在 staging 已发布、readback 前制造损坏。 */
@@ -42,13 +54,17 @@ export declare function setAfterSkillPublishForTest(hook: (() => Promise<void>)
42
54
  export declare function setBeforeSkillRollbackForTest(hook: (() => Promise<void>) | undefined): void;
43
55
  /** 仅测试使用:模拟新 target 已提交、previous 尚未清理时进程中断。 */
44
56
  export declare function setBeforeSkillPreviousCleanupForTest(hook: (() => Promise<void>) | undefined): void;
57
+ /** 不获取安装 mutex、不写文件,只读比较一个明确 Skill target 与 bundled source。 */
58
+ export declare function inspectSkillTarget(sourcePath: string, targetPath: string): Promise<SkillTargetInspection>;
59
+ export declare function installSkillTarget(sourcePath: string, targetRoot: string, installRoot: string, absoluteDeadlineMs?: number): Promise<SkillTargetInstallResult>;
60
+ export declare function checkSkillTarget(sourcePath: string, targetRoot: string, absoluteDeadlineMs?: number): Promise<SkillTargetCheckResult>;
45
61
  export interface SkillInstaller {
46
62
  /** Agent kind this installer handles. */
47
63
  readonly agent: AgentKind;
48
64
  /** Resolve the target SKILL.md path for the given project root. */
49
65
  resolveTargetPath(projectRoot: string): string;
50
66
  /** Install the complete runtime Skill bundle within one immutable deadline. */
51
- install(sourcePath: string, projectRoot: string, absoluteDeadlineMs?: number): Promise<SkillInstallResult>;
67
+ install(sourcePath: string, projectRoot: string, absoluteDeadlineMs?: number, installRoot?: string): Promise<SkillInstallResult>;
52
68
  /** Check the complete runtime Skill bundle without writing. */
53
69
  check(sourcePath: string, projectRoot: string, absoluteDeadlineMs?: number): Promise<SkillCheckResult>;
54
70
  }
@@ -61,9 +77,9 @@ export declare class AgentSkillInstallerRegistry {
61
77
  agents(): AgentKind[];
62
78
  /**
63
79
  * Install the skill for the specified agents.
64
- * @param agents Comma-separated or array of agent kinds (e.g. "pi,claude")
80
+ * @param agents Comma-separated or array of agent kinds (e.g. "claude,.agents")
65
81
  */
66
- installForAgents(agents: string | AgentKind[], sourcePath: string, projectRoot: string, absoluteDeadlineMs?: number): Promise<SkillInstallResult[]>;
82
+ installForAgents(agents: string | AgentKind[], sourcePath: string, projectRoot: string, absoluteDeadlineMs?: number, installRoot?: string): Promise<SkillInstallResult[]>;
67
83
  /**
68
84
  * Check skill status for the specified agents.
69
85
  * @param agents Comma-separated or array of agent kinds