unity-open-mcp 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -7
- package/dist/capabilities/build-capabilities.js +6 -0
- package/dist/capabilities/build-capabilities.js.map +1 -1
- package/dist/capabilities/cost-hints.js +10 -0
- package/dist/capabilities/cost-hints.js.map +1 -1
- package/dist/capabilities/lifecycle.js +13 -0
- package/dist/capabilities/lifecycle.js.map +1 -1
- package/dist/capabilities/tool-groups.js +4 -0
- package/dist/capabilities/tool-groups.js.map +1 -1
- package/dist/cli/ping-poller.js +20 -0
- package/dist/cli/ping-poller.js.map +1 -1
- package/dist/live-client.d.ts +23 -0
- package/dist/live-client.js +95 -0
- package/dist/live-client.js.map +1 -1
- package/dist/running-unity.d.ts +105 -0
- package/dist/running-unity.js +387 -0
- package/dist/running-unity.js.map +1 -0
- package/dist/skill/client-paths.d.ts +22 -0
- package/dist/skill/client-paths.js +66 -5
- package/dist/skill/client-paths.js.map +1 -1
- package/dist/skill/generate-skill.d.ts +43 -4
- package/dist/skill/generate-skill.js +132 -34
- package/dist/skill/generate-skill.js.map +1 -1
- package/dist/tool-router.js +40 -0
- package/dist/tool-router.js.map +1 -1
- package/dist/tools/batch-execute.d.ts +2 -0
- package/dist/tools/batch-execute.js +83 -0
- package/dist/tools/batch-execute.js.map +1 -0
- package/dist/tools/bridge-status.js +8 -1
- package/dist/tools/bridge-status.js.map +1 -1
- package/dist/tools/generate-skill.js +8 -0
- package/dist/tools/generate-skill.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -19,6 +19,28 @@ export declare const BUNDLED_MANIFEST: ClientPathsManifest;
|
|
|
19
19
|
* process).
|
|
20
20
|
*/
|
|
21
21
|
export declare function loadClientPathsManifest(): ClientPathsManifest;
|
|
22
|
+
/**
|
|
23
|
+
* Absolute path to the template skill file
|
|
24
|
+
* (`<toolkitRoot>/<manifest.templateRelativePath>`), resolved from the
|
|
25
|
+
* same root discovery that loads `client-paths.json`. Returns `null`
|
|
26
|
+
* when the toolkit root cannot be found (bundled-fallback / standalone
|
|
27
|
+
* `mcp-server/` install) so callers can degrade gracefully instead of
|
|
28
|
+
* guessing a path. Never throws.
|
|
29
|
+
*
|
|
30
|
+
* Used by the skill generator to merge the template workflow prose
|
|
31
|
+
* with the project-specific inventory (the template is the source of
|
|
32
|
+
* truth for the workflow playbook).
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveTemplateSkillPath(): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* @internal Test-only cache reset. The manifest resolution is cached
|
|
37
|
+
* for process lifetime (it is immutable in production, where the env
|
|
38
|
+
* override is set before the process starts). Tests that mutate
|
|
39
|
+
* `UNITY_OPEN_MCP_TOOLKIT_ROOT` after a prior test already warmed the
|
|
40
|
+
* cache need this to observe the override. Do not call from runtime
|
|
41
|
+
* code.
|
|
42
|
+
*/
|
|
43
|
+
export declare function _clearClientPathsCacheForTests(): void;
|
|
22
44
|
/**
|
|
23
45
|
* Project-relative skill path for a client key
|
|
24
46
|
* (`cursor` / `claude` / `opencode` / `agents`). Throws for unknown
|
|
@@ -34,15 +34,37 @@ export const BUNDLED_MANIFEST = {
|
|
|
34
34
|
claude: { relativePath: ".claude/skills/unity-open-mcp/SKILL.md" },
|
|
35
35
|
opencode: { relativePath: ".opencode/skills/unity-open-mcp/SKILL.md" },
|
|
36
36
|
agents: { relativePath: ".agents/skills/unity-open-mcp/SKILL.md" },
|
|
37
|
+
cline: { relativePath: ".cline/skills/unity-open-mcp/SKILL.md" },
|
|
38
|
+
gemini: { relativePath: ".gemini/skills/unity-open-mcp/SKILL.md" },
|
|
39
|
+
kilocode: { relativePath: ".kilocode/skills/unity-open-mcp/SKILL.md" },
|
|
40
|
+
roo: { relativePath: ".roo/skills/unity-open-mcp/SKILL.md" },
|
|
41
|
+
agent: { relativePath: ".agent/skills/unity-open-mcp/SKILL.md" },
|
|
42
|
+
junie: { relativePath: ".junie/skills/unity-open-mcp/SKILL.md" },
|
|
43
|
+
vscode: { relativePath: ".vscode/skills/unity-open-mcp/SKILL.md" },
|
|
44
|
+
vs: { relativePath: ".vs/skills/unity-open-mcp/SKILL.md" },
|
|
45
|
+
github: { relativePath: ".github/skills/unity-open-mcp/SKILL.md" },
|
|
37
46
|
},
|
|
38
47
|
mcpClientMapping: {
|
|
39
48
|
cursor: ["cursor"],
|
|
49
|
+
"cursor-project": ["cursor"],
|
|
40
50
|
"claude-desktop": ["claude"],
|
|
41
51
|
"claude-code": ["claude"],
|
|
42
52
|
"opencode-global": ["opencode"],
|
|
43
53
|
"opencode-project": ["opencode"],
|
|
44
54
|
"zcode-global": ["agents"],
|
|
45
55
|
"zcode-project": ["agents"],
|
|
56
|
+
zoocode: ["roo"],
|
|
57
|
+
cline: ["cline"],
|
|
58
|
+
codex: ["agents"],
|
|
59
|
+
gemini: ["gemini"],
|
|
60
|
+
"github-copilot-cli": ["claude"],
|
|
61
|
+
"kilo-code": ["kilocode"],
|
|
62
|
+
rider: ["junie"],
|
|
63
|
+
"unity-ai": [],
|
|
64
|
+
"vscode-copilot": ["vscode"],
|
|
65
|
+
"vs-copilot": ["vs"],
|
|
66
|
+
antigravity: ["agent"],
|
|
67
|
+
custom: ["cursor", "claude", "opencode", "agents"],
|
|
46
68
|
manual: ["cursor", "claude", "opencode", "agents"],
|
|
47
69
|
},
|
|
48
70
|
};
|
|
@@ -71,13 +93,13 @@ function tryReadManifest(path) {
|
|
|
71
93
|
return null;
|
|
72
94
|
}
|
|
73
95
|
}
|
|
74
|
-
function
|
|
96
|
+
function resolveManifestWithRoot() {
|
|
75
97
|
// 1. Explicit env override.
|
|
76
98
|
const envRoot = process.env.UNITY_OPEN_MCP_TOOLKIT_ROOT?.trim();
|
|
77
99
|
if (envRoot) {
|
|
78
100
|
const fromEnv = tryReadManifest(join(envRoot, MANIFEST_REL));
|
|
79
101
|
if (fromEnv)
|
|
80
|
-
return fromEnv;
|
|
102
|
+
return { manifest: fromEnv, toolkitRoot: envRoot };
|
|
81
103
|
}
|
|
82
104
|
// 2. Walk up from this module's directory looking for the toolkit
|
|
83
105
|
// root (i.e. a parent dir containing `skills/client-paths.json`).
|
|
@@ -86,14 +108,17 @@ function resolveManifest() {
|
|
|
86
108
|
const candidate = join(dir, MANIFEST_REL);
|
|
87
109
|
const m = tryReadManifest(candidate);
|
|
88
110
|
if (m)
|
|
89
|
-
return m;
|
|
111
|
+
return { manifest: m, toolkitRoot: dir };
|
|
90
112
|
const parent = dirname(dir);
|
|
91
113
|
if (parent === dir)
|
|
92
114
|
break;
|
|
93
115
|
dir = parent;
|
|
94
116
|
}
|
|
95
117
|
// 3. Bundled fallback (validated against the manifest by tests).
|
|
96
|
-
return BUNDLED_MANIFEST;
|
|
118
|
+
return { manifest: BUNDLED_MANIFEST, toolkitRoot: null };
|
|
119
|
+
}
|
|
120
|
+
function resolveManifest() {
|
|
121
|
+
return resolveManifestWithRoot().manifest;
|
|
97
122
|
}
|
|
98
123
|
let cached = null;
|
|
99
124
|
/**
|
|
@@ -102,11 +127,47 @@ let cached = null;
|
|
|
102
127
|
* process).
|
|
103
128
|
*/
|
|
104
129
|
export function loadClientPathsManifest() {
|
|
130
|
+
return getResolvedManifest().manifest;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Internal: the resolved manifest + the toolkit root it was loaded
|
|
134
|
+
* from. Cached after the first call.
|
|
135
|
+
*/
|
|
136
|
+
function getResolvedManifest() {
|
|
105
137
|
if (cached)
|
|
106
138
|
return cached;
|
|
107
|
-
cached =
|
|
139
|
+
cached = resolveManifestWithRoot();
|
|
108
140
|
return cached;
|
|
109
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Absolute path to the template skill file
|
|
144
|
+
* (`<toolkitRoot>/<manifest.templateRelativePath>`), resolved from the
|
|
145
|
+
* same root discovery that loads `client-paths.json`. Returns `null`
|
|
146
|
+
* when the toolkit root cannot be found (bundled-fallback / standalone
|
|
147
|
+
* `mcp-server/` install) so callers can degrade gracefully instead of
|
|
148
|
+
* guessing a path. Never throws.
|
|
149
|
+
*
|
|
150
|
+
* Used by the skill generator to merge the template workflow prose
|
|
151
|
+
* with the project-specific inventory (the template is the source of
|
|
152
|
+
* truth for the workflow playbook).
|
|
153
|
+
*/
|
|
154
|
+
export function resolveTemplateSkillPath() {
|
|
155
|
+
const { manifest, toolkitRoot } = getResolvedManifest();
|
|
156
|
+
if (!toolkitRoot)
|
|
157
|
+
return null;
|
|
158
|
+
return join(toolkitRoot, manifest.templateRelativePath);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* @internal Test-only cache reset. The manifest resolution is cached
|
|
162
|
+
* for process lifetime (it is immutable in production, where the env
|
|
163
|
+
* override is set before the process starts). Tests that mutate
|
|
164
|
+
* `UNITY_OPEN_MCP_TOOLKIT_ROOT` after a prior test already warmed the
|
|
165
|
+
* cache need this to observe the override. Do not call from runtime
|
|
166
|
+
* code.
|
|
167
|
+
*/
|
|
168
|
+
export function _clearClientPathsCacheForTests() {
|
|
169
|
+
cached = null;
|
|
170
|
+
}
|
|
110
171
|
/**
|
|
111
172
|
* Project-relative skill path for a client key
|
|
112
173
|
* (`cursor` / `claude` / `opencode` / `agents`). Throws for unknown
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-paths.js","sourceRoot":"","sources":["../../src/skill/client-paths.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,qDAAqD;AACrD,+BAA+B;AAC/B,mEAAmE;AACnE,mEAAmE;AACnE,kEAAkE;AAClE,mEAAmE;AACnE,6BAA6B;AAC7B,EAAE;AACF,uBAAuB;AACvB,gEAAgE;AAChE,mDAAmD;AACnD,uDAAuD;AACvD,mEAAmE;AACnE,oDAAoD;AACpD,oEAAoE;AACpE,4DAA4D;AAC5D,qEAAqE;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAazC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD,OAAO,EAAE,gBAAgB;IACzB,oBAAoB,EAAE,gCAAgC;IACtD,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,QAAQ,EAAE,EAAE,YAAY,EAAE,0CAA0C,EAAE;QACtE,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;KACnE;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,gBAAgB,EAAE,CAAC,QAAQ,CAAC;QAC5B,aAAa,EAAE,CAAC,QAAQ,CAAC;QACzB,iBAAiB,EAAE,CAAC,UAAU,CAAC;QAC/B,kBAAkB,EAAE,CAAC,UAAU,CAAC;QAChC,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,eAAe,EAAE,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;KACnD;CACF,CAAC;AAEF,SAAS,OAAO;IACd,mEAAmE;IACnE,2BAA2B;IAC3B,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;QAC/D,IACE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ;YAC/C,MAAM,CAAC,OAAO;YACd,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,MAAM,CAAC,gBAAgB;YACvB,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAC3C,CAAC;YACD,OAAO,MAA6B,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"client-paths.js","sourceRoot":"","sources":["../../src/skill/client-paths.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,qDAAqD;AACrD,+BAA+B;AAC/B,mEAAmE;AACnE,mEAAmE;AACnE,kEAAkE;AAClE,mEAAmE;AACnE,6BAA6B;AAC7B,EAAE;AACF,uBAAuB;AACvB,gEAAgE;AAChE,mDAAmD;AACnD,uDAAuD;AACvD,mEAAmE;AACnE,oDAAoD;AACpD,oEAAoE;AACpE,4DAA4D;AAC5D,qEAAqE;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAazC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD,OAAO,EAAE,gBAAgB;IACzB,oBAAoB,EAAE,gCAAgC;IACtD,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,QAAQ,EAAE,EAAE,YAAY,EAAE,0CAA0C,EAAE;QACtE,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,KAAK,EAAE,EAAE,YAAY,EAAE,uCAAuC,EAAE;QAChE,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,QAAQ,EAAE,EAAE,YAAY,EAAE,0CAA0C,EAAE;QACtE,GAAG,EAAE,EAAE,YAAY,EAAE,qCAAqC,EAAE;QAC5D,KAAK,EAAE,EAAE,YAAY,EAAE,uCAAuC,EAAE;QAChE,KAAK,EAAE,EAAE,YAAY,EAAE,uCAAuC,EAAE;QAChE,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;QAClE,EAAE,EAAE,EAAE,YAAY,EAAE,oCAAoC,EAAE;QAC1D,MAAM,EAAE,EAAE,YAAY,EAAE,wCAAwC,EAAE;KACnE;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,gBAAgB,EAAE,CAAC,QAAQ,CAAC;QAC5B,gBAAgB,EAAE,CAAC,QAAQ,CAAC;QAC5B,aAAa,EAAE,CAAC,QAAQ,CAAC;QACzB,iBAAiB,EAAE,CAAC,UAAU,CAAC;QAC/B,kBAAkB,EAAE,CAAC,UAAU,CAAC;QAChC,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,eAAe,EAAE,CAAC,QAAQ,CAAC;QAC3B,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,oBAAoB,EAAE,CAAC,QAAQ,CAAC;QAChC,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,CAAC,QAAQ,CAAC;QAC5B,YAAY,EAAE,CAAC,IAAI,CAAC;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;QAClD,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;KACnD;CACF,CAAC;AAEF,SAAS,OAAO;IACd,mEAAmE;IACnE,2BAA2B;IAC3B,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;QAC/D,IACE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ;YAC/C,MAAM,CAAC,OAAO;YACd,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAClC,MAAM,CAAC,gBAAgB;YACvB,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAC3C,CAAC;YACD,OAAO,MAA6B,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAYD,SAAS,uBAAuB;IAC9B,4BAA4B;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7D,IAAI,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClE,CAAC;IACD,kEAAkE;IAClE,qEAAqE;IACrE,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,iEAAiE;IACjE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,uBAAuB,EAAE,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAED,IAAI,MAAM,GAA4B,IAAI,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,mBAAmB,EAAE,CAAC,QAAQ,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACxD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,kBAAkB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACpG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -29,10 +29,49 @@ export interface GenerateSkillResult {
|
|
|
29
29
|
project: ProjectState;
|
|
30
30
|
written: SkillWriteTarget[];
|
|
31
31
|
}
|
|
32
|
+
export interface GenerateSkillOptions {
|
|
33
|
+
write?: boolean;
|
|
34
|
+
clients?: string[];
|
|
35
|
+
/**
|
|
36
|
+
* When `true` (default), the generated skill composes the template
|
|
37
|
+
* workflow playbook (verbatim, the single source of truth for agent
|
|
38
|
+
* guidance) with the project-specific inventory section. When
|
|
39
|
+
* `false`, or when the template cannot be located, the generator
|
|
40
|
+
* falls back to its standalone full-inventory output.
|
|
41
|
+
*/
|
|
42
|
+
includeWorkflow?: boolean;
|
|
43
|
+
}
|
|
32
44
|
export declare function readProjectState(projectRoot: string): Promise<ProjectState>;
|
|
33
45
|
export declare function generateSkillMarkdown(state: ProjectState, caps: CapabilitiesResult): string;
|
|
34
46
|
export declare function writeSkillToClients(projectRoot: string, content: string, clients: string[]): Promise<SkillWriteTarget[]>;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Read the template workflow playbook from disk. Returns the template
|
|
49
|
+
* text (normalized to end with a single trailing newline), or `null`
|
|
50
|
+
* when the template cannot be located or read — the composer then
|
|
51
|
+
* degrades to the standalone full-inventory output. Never throws.
|
|
52
|
+
*/
|
|
53
|
+
export declare function readTemplateWorkflow(): Promise<string | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Compose the final skill markdown from the template playbook + the
|
|
56
|
+
* project inventory.
|
|
57
|
+
*
|
|
58
|
+
* - When `template` is non-null and `includeWorkflow !== false`: the
|
|
59
|
+
* template is emitted verbatim (the authoritative workflow prose),
|
|
60
|
+
* followed by a `---` separator and a `# Project inventory —
|
|
61
|
+
* <projectName>` section carrying the project-specific blocks. Both
|
|
62
|
+
* the template's heading and the project-name heading appear in the
|
|
63
|
+
* output.
|
|
64
|
+
* - When `template` is null (standalone install, template missing) or
|
|
65
|
+
* `includeWorkflow === false`: falls back to `generateSkillMarkdown`
|
|
66
|
+
* (the full standalone inventory, including its own workflow summary).
|
|
67
|
+
*/
|
|
68
|
+
export declare function composeSkillMarkdown(state: ProjectState, caps: CapabilitiesResult, template: string | null, options?: {
|
|
69
|
+
includeWorkflow?: boolean;
|
|
70
|
+
}): string;
|
|
71
|
+
export declare function generateSkill(projectRoot: string, caps: CapabilitiesResult, options?: GenerateSkillOptions): Promise<GenerateSkillResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Truncate a skill preview for embedding in a JSON envelope (Hub /
|
|
74
|
+
* CLI echo). The full skill is always written to disk when write=true;
|
|
75
|
+
* this only bounds the in-response copy.
|
|
76
|
+
*/
|
|
77
|
+
export declare function truncateForPreview(skill: string): string;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// 3. writeSkillToClients() — writes the generated file to .claude/skills/ etc.
|
|
14
14
|
import { readFile, writeFile, readdir, stat } from "node:fs/promises";
|
|
15
15
|
import { join, basename, relative, sep } from "node:path";
|
|
16
|
-
import { clientSkillRelativePath } from "./client-paths.js";
|
|
16
|
+
import { clientSkillRelativePath, resolveTemplateSkillPath } from "./client-paths.js";
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
18
18
|
// Constants
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
@@ -29,6 +29,10 @@ const SKIP_DIRS = new Set([
|
|
|
29
29
|
]);
|
|
30
30
|
const MAX_CS_SCAN = 500;
|
|
31
31
|
const MAX_TYPES_IN_SKILL = 40;
|
|
32
|
+
// Cap the inventory preview embedded in Hub/CLI responses so the JSON
|
|
33
|
+
// envelope stays bounded. The full skill is always written to disk
|
|
34
|
+
// when write=true; this is only the echo shown to the caller.
|
|
35
|
+
const MAX_INVENTORY_PREVIEW_CHARS = 6000;
|
|
32
36
|
// ---------------------------------------------------------------------------
|
|
33
37
|
// 1. Project state reader (disk I/O)
|
|
34
38
|
// ---------------------------------------------------------------------------
|
|
@@ -150,14 +154,16 @@ function extractTypes(content, filePath, projectRoot, monoBehaviours, scriptable
|
|
|
150
154
|
// ---------------------------------------------------------------------------
|
|
151
155
|
// 2. Skill markdown generator (pure, no I/O)
|
|
152
156
|
// ---------------------------------------------------------------------------
|
|
153
|
-
|
|
157
|
+
/**
|
|
158
|
+
* Project-specific inventory blocks the template cannot know: Unity
|
|
159
|
+
* version, bridge/verify install state, installed packages, and the
|
|
160
|
+
* key MonoBehaviour / ScriptableObject types discovered in Assets/.
|
|
161
|
+
* Used both by the standalone full builder (`generateSkillMarkdown`)
|
|
162
|
+
* and by the template+inventory composer (`composeSkillMarkdown`) so
|
|
163
|
+
* the two never drift on the project-section shape.
|
|
164
|
+
*/
|
|
165
|
+
function buildProjectInventoryBlocks(state) {
|
|
154
166
|
const lines = [];
|
|
155
|
-
const now = new Date().toISOString().slice(0, 10);
|
|
156
|
-
lines.push(`# Unity Agent Skill — ${state.projectName}`);
|
|
157
|
-
lines.push("");
|
|
158
|
-
lines.push(`> Auto-generated by \`unity_open_mcp_generate_skill\` on ${now}.`);
|
|
159
|
-
lines.push(`> Regenerate after package or script changes to keep this file current.`);
|
|
160
|
-
lines.push("");
|
|
161
167
|
// --- Project environment ---
|
|
162
168
|
lines.push("## Project environment");
|
|
163
169
|
lines.push("");
|
|
@@ -186,6 +192,42 @@ export function generateSkillMarkdown(state, caps) {
|
|
|
186
192
|
}
|
|
187
193
|
lines.push("");
|
|
188
194
|
}
|
|
195
|
+
// --- Key project types ---
|
|
196
|
+
if (state.monoBehaviours.length > 0 || state.scriptableObjects.length > 0) {
|
|
197
|
+
lines.push("## Key project types");
|
|
198
|
+
lines.push("");
|
|
199
|
+
lines.push("Use `unity_open_mcp_find_members` to inspect any of these before editing.");
|
|
200
|
+
lines.push("");
|
|
201
|
+
if (state.monoBehaviours.length > 0) {
|
|
202
|
+
lines.push("### MonoBehaviours");
|
|
203
|
+
lines.push("");
|
|
204
|
+
for (const mb of state.monoBehaviours) {
|
|
205
|
+
const fullName = mb.namespace ? `${mb.namespace}.${mb.name}` : mb.name;
|
|
206
|
+
lines.push(`- **${fullName}** — \`${mb.filePath}\``);
|
|
207
|
+
}
|
|
208
|
+
lines.push("");
|
|
209
|
+
}
|
|
210
|
+
if (state.scriptableObjects.length > 0) {
|
|
211
|
+
lines.push("### ScriptableObjects");
|
|
212
|
+
lines.push("");
|
|
213
|
+
for (const so of state.scriptableObjects) {
|
|
214
|
+
const fullName = so.namespace ? `${so.namespace}.${so.name}` : so.name;
|
|
215
|
+
lines.push(`- **${fullName}** — \`${so.filePath}\``);
|
|
216
|
+
}
|
|
217
|
+
lines.push("");
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return lines;
|
|
221
|
+
}
|
|
222
|
+
export function generateSkillMarkdown(state, caps) {
|
|
223
|
+
const lines = [];
|
|
224
|
+
const now = new Date().toISOString().slice(0, 10);
|
|
225
|
+
lines.push(`# Unity Agent Skill — ${state.projectName}`);
|
|
226
|
+
lines.push("");
|
|
227
|
+
lines.push(`> Auto-generated by \`unity_open_mcp_generate_skill\` on ${now}.`);
|
|
228
|
+
lines.push(`> Regenerate after package or script changes to keep this file current.`);
|
|
229
|
+
lines.push("");
|
|
230
|
+
lines.push(...buildProjectInventoryBlocks(state));
|
|
189
231
|
// --- Available tools ---
|
|
190
232
|
const implementedTools = caps.tools.filter((t) => t.implemented);
|
|
191
233
|
if (implementedTools.length > 0) {
|
|
@@ -234,31 +276,6 @@ export function generateSkillMarkdown(state, caps) {
|
|
|
234
276
|
}
|
|
235
277
|
lines.push("");
|
|
236
278
|
}
|
|
237
|
-
// --- Key project types ---
|
|
238
|
-
if (state.monoBehaviours.length > 0 || state.scriptableObjects.length > 0) {
|
|
239
|
-
lines.push("## Key project types");
|
|
240
|
-
lines.push("");
|
|
241
|
-
lines.push("Use `unity_open_mcp_find_members` to inspect any of these before editing.");
|
|
242
|
-
lines.push("");
|
|
243
|
-
if (state.monoBehaviours.length > 0) {
|
|
244
|
-
lines.push("### MonoBehaviours");
|
|
245
|
-
lines.push("");
|
|
246
|
-
for (const mb of state.monoBehaviours) {
|
|
247
|
-
const fullName = mb.namespace ? `${mb.namespace}.${mb.name}` : mb.name;
|
|
248
|
-
lines.push(`- **${fullName}** — \`${mb.filePath}\``);
|
|
249
|
-
}
|
|
250
|
-
lines.push("");
|
|
251
|
-
}
|
|
252
|
-
if (state.scriptableObjects.length > 0) {
|
|
253
|
-
lines.push("### ScriptableObjects");
|
|
254
|
-
lines.push("");
|
|
255
|
-
for (const so of state.scriptableObjects) {
|
|
256
|
-
const fullName = so.namespace ? `${so.namespace}.${so.name}` : so.name;
|
|
257
|
-
lines.push(`- **${fullName}** — \`${so.filePath}\``);
|
|
258
|
-
}
|
|
259
|
-
lines.push("");
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
279
|
// --- Core workflow ---
|
|
263
280
|
lines.push("## Core workflow: mutate → gate → fix");
|
|
264
281
|
lines.push("");
|
|
@@ -372,11 +389,79 @@ async function ensureParentDir(filePath) {
|
|
|
372
389
|
}
|
|
373
390
|
}
|
|
374
391
|
// ---------------------------------------------------------------------------
|
|
392
|
+
// Template + inventory composer
|
|
393
|
+
// ---------------------------------------------------------------------------
|
|
394
|
+
//
|
|
395
|
+
// The template (`skills/unity-open-mcp/SKILL.md`) is the source of truth
|
|
396
|
+
// for the workflow playbook — agent guidance that does not vary per
|
|
397
|
+
// project. The generator uniquely knows the project-specific inventory
|
|
398
|
+
// (Unity version, installed packages, key types). `composeSkillMarkdown`
|
|
399
|
+
// merges the two so a single `unity_open_mcp_generate_skill` write
|
|
400
|
+
// produces one file containing the full playbook AND this project's
|
|
401
|
+
// inventory, instead of two parallel builders that each lose half the
|
|
402
|
+
// picture.
|
|
403
|
+
/**
|
|
404
|
+
* Read the template workflow playbook from disk. Returns the template
|
|
405
|
+
* text (normalized to end with a single trailing newline), or `null`
|
|
406
|
+
* when the template cannot be located or read — the composer then
|
|
407
|
+
* degrades to the standalone full-inventory output. Never throws.
|
|
408
|
+
*/
|
|
409
|
+
export async function readTemplateWorkflow() {
|
|
410
|
+
const templatePath = resolveTemplateSkillPath();
|
|
411
|
+
if (!templatePath)
|
|
412
|
+
return null;
|
|
413
|
+
try {
|
|
414
|
+
const raw = await readFile(templatePath, "utf-8");
|
|
415
|
+
return raw.endsWith("\n") ? raw : `${raw}\n`;
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Compose the final skill markdown from the template playbook + the
|
|
423
|
+
* project inventory.
|
|
424
|
+
*
|
|
425
|
+
* - When `template` is non-null and `includeWorkflow !== false`: the
|
|
426
|
+
* template is emitted verbatim (the authoritative workflow prose),
|
|
427
|
+
* followed by a `---` separator and a `# Project inventory —
|
|
428
|
+
* <projectName>` section carrying the project-specific blocks. Both
|
|
429
|
+
* the template's heading and the project-name heading appear in the
|
|
430
|
+
* output.
|
|
431
|
+
* - When `template` is null (standalone install, template missing) or
|
|
432
|
+
* `includeWorkflow === false`: falls back to `generateSkillMarkdown`
|
|
433
|
+
* (the full standalone inventory, including its own workflow summary).
|
|
434
|
+
*/
|
|
435
|
+
export function composeSkillMarkdown(state, caps, template, options = {}) {
|
|
436
|
+
const includeWorkflow = options.includeWorkflow !== false;
|
|
437
|
+
if (!template || !includeWorkflow) {
|
|
438
|
+
return generateSkillMarkdown(state, caps);
|
|
439
|
+
}
|
|
440
|
+
const lines = [];
|
|
441
|
+
// Template playbook, verbatim.
|
|
442
|
+
lines.push(template.endsWith("\n") ? template : `${template}\n`);
|
|
443
|
+
lines.push("---");
|
|
444
|
+
lines.push("");
|
|
445
|
+
// Project inventory section.
|
|
446
|
+
lines.push(`# Project inventory — ${state.projectName}`);
|
|
447
|
+
lines.push("");
|
|
448
|
+
lines.push(`> Project-specific section generated by \`unity_open_mcp_generate_skill\`. ` +
|
|
449
|
+
`Regenerate after package or script changes.`);
|
|
450
|
+
lines.push("");
|
|
451
|
+
lines.push(...buildProjectInventoryBlocks(state));
|
|
452
|
+
return lines.join("\n") + "\n";
|
|
453
|
+
}
|
|
454
|
+
// ---------------------------------------------------------------------------
|
|
375
455
|
// Orchestrator
|
|
376
456
|
// ---------------------------------------------------------------------------
|
|
377
457
|
export async function generateSkill(projectRoot, caps, options = {}) {
|
|
378
458
|
const state = await readProjectState(projectRoot);
|
|
379
|
-
const
|
|
459
|
+
const template = options.includeWorkflow !== false
|
|
460
|
+
? await readTemplateWorkflow()
|
|
461
|
+
: null;
|
|
462
|
+
const skill = composeSkillMarkdown(state, caps, template, {
|
|
463
|
+
includeWorkflow: options.includeWorkflow,
|
|
464
|
+
});
|
|
380
465
|
let written = [];
|
|
381
466
|
if (options.write) {
|
|
382
467
|
const clients = options.clients && options.clients.length > 0
|
|
@@ -386,4 +471,17 @@ export async function generateSkill(projectRoot, caps, options = {}) {
|
|
|
386
471
|
}
|
|
387
472
|
return { skill, project: state, written };
|
|
388
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* Truncate a skill preview for embedding in a JSON envelope (Hub /
|
|
476
|
+
* CLI echo). The full skill is always written to disk when write=true;
|
|
477
|
+
* this only bounds the in-response copy.
|
|
478
|
+
*/
|
|
479
|
+
export function truncateForPreview(skill) {
|
|
480
|
+
if (skill.length <= MAX_INVENTORY_PREVIEW_CHARS)
|
|
481
|
+
return skill;
|
|
482
|
+
const cut = skill.slice(0, MAX_INVENTORY_PREVIEW_CHARS);
|
|
483
|
+
const lastNewline = cut.lastIndexOf("\n");
|
|
484
|
+
const head = lastNewline > 0 ? cut.slice(0, lastNewline) : cut;
|
|
485
|
+
return `${head}\n\n… (${skill.length - head.length} more chars; full content written to disk)`;
|
|
486
|
+
}
|
|
389
487
|
//# sourceMappingURL=generate-skill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-skill.js","sourceRoot":"","sources":["../../src/skill/generate-skill.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,wEAAwE;AACxE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,sEAAsE;AACtE,aAAa;AACb,EAAE;AACF,+BAA+B;AAC/B,kFAAkF;AAClF,4EAA4E;AAC5E,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAyC5D,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAClE,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAElE,oEAAoE;AACpE,oEAAoE;AACpE,wDAAwD;AAExD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAC9C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc;IACzD,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CAC7C,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IACnF,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAElF,OAAO;QACL,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,aAAa;QACb,cAAc;QACd,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAC5B,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAC1D,OAAO,CACR,CAAC;QACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,WAAmB;IAMnB,IAAI,IAA4B,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,EAC9C,OAAO,CACR,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8C,CAAC;QAC5E,IAAI,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAmB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE5C,OAAO;QACL,QAAQ;QACR,aAAa,EAAE,WAAW,IAAI,IAAI;QAClC,aAAa,EAAE,WAAW,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,WAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAE5C,MAAM,cAAc,GAAgB,EAAE,CAAC;IACvC,MAAM,iBAAiB,GAAgB,EAAE,CAAC;IAE1C,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,IAAI,cAAc,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,IAAI,WAAW;YAAE,MAAM;QAC3E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;QAC3D,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,OAAiB,EACjB,KAAa;IAEb,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;QAAE,OAAO;IAC/C,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACxC,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GACZ,oGAAoG,CAAC;AAEvG,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C,SAAS,YAAY,CACnB,OAAe,EACf,QAAgB,EAChB,WAAmB,EACnB,cAA2B,EAC3B,iBAA8B;IAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtG,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpG,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3F,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,SAAS;YACf,SAAS;YACT,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC/D,CAAC;QAEF,IAAI,eAAe;YAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3C,IAAI,kBAAkB;YAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,MAAM,UAAU,qBAAqB,CACnC,KAAmB,EACnB,IAAwB;IAExB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4DAA4D,GAAG,GAAG,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,8BAA8B;IAC9B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,yBAAyB,iBAAiB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,yBAAyB,iBAAiB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,6BAA6B;IAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,0BAA0B;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACjE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,QAAQ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACjE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBACzE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,QAAQ,MAAM,QAAQ,IAAI,CAAC,CAAC;gBACpE,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACjE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,4BAA4B;IAC5B,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;gBACvE,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,UAAU,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC;YACvD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;gBACvE,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,UAAU,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC;YACvD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;IACnH,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,uHAAuH,CAAC,CAAC;IACpI,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,oHAAoH,CAAC,CAAC;IACjI,KAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAC3G,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAC;IACzH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,qBAAqB;IACrB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,sBAAsB;IACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACxB,IAAI,EAAE,wDAAwD;QAC9D,UAAU,EAAE,CAAC,gBAAgB,CAAC;QAC9B,IAAI,EAAE,SAAS;KAChB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAC;IAErH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,eAAe,CACtB,KAAkC;IAElC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,OAAe,EACf,OAAiB;IAEjB,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;YAC/D,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QACD,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,YAAY,EAAE,GAAG;YACjB,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,IAAI;YACb,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,IAAwB,EACxB,UAAmD,EAAE;IAErD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEjD,IAAI,OAAO,GAAuB,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3D,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACf,OAAO,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"generate-skill.js","sourceRoot":"","sources":["../../src/skill/generate-skill.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-router.js
CHANGED
|
@@ -10,6 +10,7 @@ import { generateSkill } from "./skill/generate-skill.js";
|
|
|
10
10
|
import { knownClientKeys } from "./skill/client-paths.js";
|
|
11
11
|
import { ALL_TOOLS } from "./tools/index.js";
|
|
12
12
|
import { lockPath, readInstanceLock, classifyInstance, isPidAlive } from "./instance-discovery.js";
|
|
13
|
+
import { findUnityForProject } from "./running-unity.js";
|
|
13
14
|
import { listInstalledEditors, fetchAvailableReleases, openInstallDeepLink, getInstallPath, setInstallPath, } from "./hub-control.js";
|
|
14
15
|
/** Default Hub-control backend — calls the real hub-control functions. */
|
|
15
16
|
const defaultHubBackend = {
|
|
@@ -643,6 +644,9 @@ export class ToolRouter {
|
|
|
643
644
|
}
|
|
644
645
|
async routeGenerateSkill(args) {
|
|
645
646
|
const write = args.write === true;
|
|
647
|
+
// include_workflow defaults to true; explicitly passing false
|
|
648
|
+
// opts out of the template+inventory merge.
|
|
649
|
+
const includeWorkflow = args.include_workflow !== false;
|
|
646
650
|
const rawClients = Array.isArray(args.clients) ? args.clients : [];
|
|
647
651
|
// Client allowlist comes from the single-source manifest at
|
|
648
652
|
// `skills/client-paths.json`. Do not add a literal union here.
|
|
@@ -658,6 +662,7 @@ export class ToolRouter {
|
|
|
658
662
|
const result = await generateSkill(this.projectPath, caps, {
|
|
659
663
|
write,
|
|
660
664
|
clients: clients.length > 0 ? clients : undefined,
|
|
665
|
+
includeWorkflow,
|
|
661
666
|
});
|
|
662
667
|
return {
|
|
663
668
|
content: [
|
|
@@ -952,6 +957,12 @@ export class ToolRouter {
|
|
|
952
957
|
// /ping reachable, compiling=true → "compiling"
|
|
953
958
|
// /ping reachable, connected=true → "running"
|
|
954
959
|
// /ping UNreachable + Unity running → "unreachable" (T-fix-3)
|
|
960
|
+
// no lock + /ping UNreachable + Unity proc → "dead_bridge" (M27 Plan 1,
|
|
961
|
+
// cold Safe Mode — reuses the
|
|
962
|
+
// dead_bridge status token +
|
|
963
|
+
// recoveryHint; the instance
|
|
964
|
+
// sub-object carries
|
|
965
|
+
// `unityProcessPid`)
|
|
955
966
|
// otherwise (offline / toolbar off / gone) → "stopped"
|
|
956
967
|
//
|
|
957
968
|
// "stopped" intentionally folds two indistinguishable cases from the
|
|
@@ -995,6 +1006,24 @@ export class ToolRouter {
|
|
|
995
1006
|
// domain-reload window; a live-PID "healthy"/"gone"-with-alive-pid lock
|
|
996
1007
|
// also indicates Unity is up.
|
|
997
1008
|
const lockPidAlive = lock !== null && isPidAlive(lock.pid);
|
|
1009
|
+
// M27 Plan 1 — cold Safe Mode detection. When the lock is absent
|
|
1010
|
+
// (classification "gone") AND the ping is unreachable, the bridge's
|
|
1011
|
+
// [InitializeOnLoad] may have never run at all — Unity launched straight
|
|
1012
|
+
// into Safe Mode (bridge assembly failed to compile from a cold start) and
|
|
1013
|
+
// no lock was ever written. Before this fix that state folded into the
|
|
1014
|
+
// generic "stopped", hiding the recovery path (read_compile_errors works
|
|
1015
|
+
// even with the bridge dead — it reads Editor.log offline). Scan for a live
|
|
1016
|
+
// Unity process whose -projectPath references this project; a match is a
|
|
1017
|
+
// strong positive signal of cold Safe Mode and reuses the existing
|
|
1018
|
+
// dead_bridge status token + recoveryHint (no new status). The scan only
|
|
1019
|
+
// runs in this narrow branch (no lock + unreachable) so the happy path and
|
|
1020
|
+
// the reload-window path never pay the ps/PowerShell cost.
|
|
1021
|
+
let unityProcessPid = null;
|
|
1022
|
+
if (classification === "gone" && !pingReachable) {
|
|
1023
|
+
const proc = findUnityForProject(this.projectPath);
|
|
1024
|
+
if (proc)
|
|
1025
|
+
unityProcessPid = proc.pid;
|
|
1026
|
+
}
|
|
998
1027
|
let status;
|
|
999
1028
|
if (classification === "dead_bridge") {
|
|
1000
1029
|
status = "dead_bridge";
|
|
@@ -1005,6 +1034,13 @@ export class ToolRouter {
|
|
|
1005
1034
|
else if (connected) {
|
|
1006
1035
|
status = "running";
|
|
1007
1036
|
}
|
|
1037
|
+
else if (!pingReachable && unityProcessPid !== null) {
|
|
1038
|
+
// M27 Plan 1 — cold Safe Mode: no lock (bridge never compiled) + a live
|
|
1039
|
+
// Unity process for this project. Reuse the dead_bridge status token so
|
|
1040
|
+
// the existing recoveryHint + nextStep (read_compile_errors) applies
|
|
1041
|
+
// unchanged. Operators get a `unityProcessPid` to confirm the diagnosis.
|
|
1042
|
+
status = "dead_bridge";
|
|
1043
|
+
}
|
|
1008
1044
|
else if (!pingReachable && (classification === "reloading" || lockPidAlive)) {
|
|
1009
1045
|
// Unity is running but the listener didn't respond — transient (reload
|
|
1010
1046
|
// window) or toolbar-off. Surface as unreachable so it isn't masked by
|
|
@@ -1036,6 +1072,10 @@ export class ToolRouter {
|
|
|
1036
1072
|
lockPath: lockOnDisk,
|
|
1037
1073
|
classification,
|
|
1038
1074
|
lock: lock ? summarizeBridgeStatusLock(lock) : null,
|
|
1075
|
+
// M27 Plan 1 — PID of the live Unity process for this project, when
|
|
1076
|
+
// the cold-Safe-Mode scan matched one. Omitted (absent) when no scan
|
|
1077
|
+
// ran (happy path / reload window) or when the scan found no match.
|
|
1078
|
+
...(unityProcessPid !== null ? { unityProcessPid } : {}),
|
|
1039
1079
|
},
|
|
1040
1080
|
ping: pingReachable
|
|
1041
1081
|
? {
|