@shendu-sdt/sdt-dev-agent 0.1.1 → 0.1.3-beta.10
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 +85 -31
- package/dist/catalog.d.ts +16 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +98 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli/index.js +72 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/add.d.ts +7 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +267 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +31 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +4 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +20 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +66 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/capability-discovery.d.ts +23 -0
- package/dist/core/capability-discovery.d.ts.map +1 -0
- package/dist/core/capability-discovery.js +49 -0
- package/dist/core/capability-discovery.js.map +1 -0
- package/dist/core/init-options.d.ts +7 -1
- package/dist/core/init-options.d.ts.map +1 -1
- package/dist/core/init-options.js +64 -34
- package/dist/core/init-options.js.map +1 -1
- package/dist/core/init-plan.d.ts +25 -1
- package/dist/core/init-plan.d.ts.map +1 -1
- package/dist/core/init-plan.js +211 -37
- package/dist/core/init-plan.js.map +1 -1
- package/dist/core/init-writer.d.ts +17 -1
- package/dist/core/init-writer.d.ts.map +1 -1
- package/dist/core/init-writer.js +72 -19
- package/dist/core/init-writer.js.map +1 -1
- package/dist/core/manifest.d.ts +8 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +16 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/mcp-config.d.ts +12 -0
- package/dist/core/mcp-config.d.ts.map +1 -0
- package/dist/core/mcp-config.js +60 -0
- package/dist/core/mcp-config.js.map +1 -0
- package/dist/core/project-inspector.d.ts +1 -0
- package/dist/core/project-inspector.d.ts.map +1 -1
- package/dist/core/project-inspector.js +4 -0
- package/dist/core/project-inspector.js.map +1 -1
- package/dist/core/remote-skill-installer.d.ts +16 -0
- package/dist/core/remote-skill-installer.d.ts.map +1 -0
- package/dist/core/remote-skill-installer.js +104 -0
- package/dist/core/remote-skill-installer.js.map +1 -0
- package/dist/core/workflow-installer.d.ts +22 -0
- package/dist/core/workflow-installer.d.ts.map +1 -0
- package/dist/core/workflow-installer.js +103 -0
- package/dist/core/workflow-installer.js.map +1 -0
- package/dist/types.d.ts +103 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/follow-up-notice.d.ts +7 -0
- package/dist/utils/follow-up-notice.d.ts.map +1 -0
- package/dist/utils/follow-up-notice.js +29 -0
- package/dist/utils/follow-up-notice.js.map +1 -0
- package/dist/utils/init-welcome.d.ts.map +1 -1
- package/dist/utils/init-welcome.js +20 -33
- package/dist/utils/init-welcome.js.map +1 -1
- package/dist/utils/mastergo-notice.d.ts +7 -0
- package/dist/utils/mastergo-notice.d.ts.map +1 -0
- package/dist/utils/mastergo-notice.js +14 -0
- package/dist/utils/mastergo-notice.js.map +1 -0
- package/dist/utils/searchable-multi-select.js +5 -6
- package/dist/utils/searchable-multi-select.js.map +1 -1
- package/dist/utils/styled-select.d.ts.map +1 -1
- package/dist/utils/styled-select.js.map +1 -1
- package/dist/utils/terminal-theme.d.ts +4 -0
- package/dist/utils/terminal-theme.d.ts.map +1 -0
- package/dist/utils/terminal-theme.js +25 -0
- package/dist/utils/terminal-theme.js.map +1 -0
- package/package.json +6 -3
- package/templates/bootstrap/project-entry.md +17 -0
- package/templates/mcp/context7/claude-code/server.json +6 -0
- package/templates/mcp/context7/codex/config.toml +3 -0
- package/templates/mcp/mastergo/claude-code/server.json +6 -0
- package/templates/mcp/mastergo/codex/config.toml +4 -0
- package/templates/skills/builtin/bootstrap-project-docs/SKILL.md +16 -0
- package/templates/skills/builtin/bootstrap-project-docs/references/architecture-first.md +7 -0
- package/templates/skills/builtin/bootstrap-project-docs/references/tool-rules-follow-up.md +8 -0
- package/templates/skills/remote/catalog.json +68 -0
- package/templates/workflows/openspec/README.md +7 -0
- package/templates/workflows/openspec/claude-code/README.md +7 -0
- package/templates/workflows/openspec/codex/README.md +7 -0
- package/templates/AGENTS.md +0 -24
- package/templates/ARCHITECTURE.md +0 -26
- package/templates/capabilities/mcp/README.md +0 -8
- package/templates/capabilities/skills/README.md +0 -8
- package/templates/docs/ai-collaboration/README.md +0 -16
- package/templates/tools/claude-code/README.md +0 -8
- package/templates/tools/codex/README.md +0 -8
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { MCP_CATALOG, SKILL_CATALOG, WORKFLOW_CATALOG, getMcpCatalogEntry, getSkillCatalogEntry, getWorkflowCatalogEntry, } from '../catalog.js';
|
|
3
|
+
import { detectSkillAvailability, detectWorkflowAvailability, } from '../core/capability-discovery.js';
|
|
4
|
+
import { readInstallManifest, writeInstallManifest } from '../core/manifest.js';
|
|
5
|
+
import { buildClaudeMcpConfig, buildCodexMcpConfig, mergeMcpConfig, parseConfiguredMcpIds, } from '../core/mcp-config.js';
|
|
6
|
+
import { buildWorkflowInstallCommand, buildRemoteSkillInstallCommand, getProjectMcpConfigPath, getRemoteSkillInstallTargets, getRemoteSkillTargetPath, getWorkflowTargetPaths, } from '../core/init-plan.js';
|
|
7
|
+
import { installRemoteSkill } from '../core/remote-skill-installer.js';
|
|
8
|
+
import { installWorkflow } from '../core/workflow-installer.js';
|
|
9
|
+
import { exists, readText, writeText } from '../utils/fs.js';
|
|
10
|
+
import { printMastergoTokenNotice } from '../utils/mastergo-notice.js';
|
|
11
|
+
import { withTerminalTone } from '../utils/terminal-theme.js';
|
|
12
|
+
function resolveTargetTools(manifest, requestedTool) {
|
|
13
|
+
if (!requestedTool) {
|
|
14
|
+
return manifest.tools;
|
|
15
|
+
}
|
|
16
|
+
if (!manifest.tools.includes(requestedTool)) {
|
|
17
|
+
throw new Error(`Tool is not initialized in this project: ${requestedTool}`);
|
|
18
|
+
}
|
|
19
|
+
return [requestedTool];
|
|
20
|
+
}
|
|
21
|
+
function ensureSkillRecord(manifest, skillId) {
|
|
22
|
+
const existing = manifest.skills.find((skill) => skill.id === skillId);
|
|
23
|
+
if (existing) {
|
|
24
|
+
return existing;
|
|
25
|
+
}
|
|
26
|
+
const skill = getSkillCatalogEntry(skillId);
|
|
27
|
+
const record = {
|
|
28
|
+
id: skillId,
|
|
29
|
+
selection: skill.selection,
|
|
30
|
+
sourceType: skill.sourceType,
|
|
31
|
+
installs: [],
|
|
32
|
+
};
|
|
33
|
+
manifest.skills.push(record);
|
|
34
|
+
return record;
|
|
35
|
+
}
|
|
36
|
+
function ensureMcpRecord(manifest, mcpId) {
|
|
37
|
+
const existing = manifest.mcps.find((mcp) => mcp.id === mcpId);
|
|
38
|
+
if (existing) {
|
|
39
|
+
return existing;
|
|
40
|
+
}
|
|
41
|
+
const mcp = getMcpCatalogEntry(mcpId);
|
|
42
|
+
const record = {
|
|
43
|
+
id: mcpId,
|
|
44
|
+
selection: mcp.selection,
|
|
45
|
+
sourceType: mcp.sourceType,
|
|
46
|
+
installs: [],
|
|
47
|
+
};
|
|
48
|
+
manifest.mcps.push(record);
|
|
49
|
+
return record;
|
|
50
|
+
}
|
|
51
|
+
function ensureWorkflowRecord(manifest, workflowId) {
|
|
52
|
+
const existing = manifest.workflows.find((workflow) => workflow.id === workflowId);
|
|
53
|
+
if (existing) {
|
|
54
|
+
return existing;
|
|
55
|
+
}
|
|
56
|
+
const workflow = getWorkflowCatalogEntry(workflowId);
|
|
57
|
+
const record = {
|
|
58
|
+
id: workflowId,
|
|
59
|
+
sourceType: workflow.sourceType,
|
|
60
|
+
installs: [],
|
|
61
|
+
};
|
|
62
|
+
manifest.workflows.push(record);
|
|
63
|
+
return record;
|
|
64
|
+
}
|
|
65
|
+
function printAddProgressStart(kind, id, tool, index, total) {
|
|
66
|
+
const label = kind === 'skill' ? 'Installing' : kind === 'mcp' ? 'Applying' : 'Installing';
|
|
67
|
+
console.log(`${label} ${kind} ${index}/${total}: ${id} (${tool})...`);
|
|
68
|
+
}
|
|
69
|
+
function formatInstallStatusLine(line, status) {
|
|
70
|
+
if (status === 'installed') {
|
|
71
|
+
return withTerminalTone(line, 'success');
|
|
72
|
+
}
|
|
73
|
+
if (status === 'failed') {
|
|
74
|
+
return withTerminalTone(line, 'failure');
|
|
75
|
+
}
|
|
76
|
+
return line;
|
|
77
|
+
}
|
|
78
|
+
export async function runAddSkillCommand(skillId, options = {}) {
|
|
79
|
+
if (!SKILL_CATALOG.some((skill) => skill.id === skillId)) {
|
|
80
|
+
throw new Error(`Unknown skill: ${skillId}`);
|
|
81
|
+
}
|
|
82
|
+
const projectRoot = process.cwd();
|
|
83
|
+
const manifest = await readInstallManifest(projectRoot);
|
|
84
|
+
const tools = resolveTargetTools(manifest, options.tool);
|
|
85
|
+
const skill = getSkillCatalogEntry(skillId);
|
|
86
|
+
const skillRecord = ensureSkillRecord(manifest, skill.id);
|
|
87
|
+
console.log(`Adding skill: ${skill.id}`);
|
|
88
|
+
for (const [index, tool] of tools.entries()) {
|
|
89
|
+
printAddProgressStart('skill', skill.id, tool, index + 1, tools.length);
|
|
90
|
+
const availability = await detectSkillAvailability(projectRoot, tool, skill.id);
|
|
91
|
+
const targetPath = getRemoteSkillTargetPath(tool, skill.id);
|
|
92
|
+
const installTargets = getRemoteSkillInstallTargets(tool, skill.id);
|
|
93
|
+
const installCommand = skill.remote
|
|
94
|
+
? buildRemoteSkillInstallCommand(skill.id, tool, skill.remote.installCommand)
|
|
95
|
+
: undefined;
|
|
96
|
+
const existingInstall = skillRecord.installs.find((install) => install.tool === tool);
|
|
97
|
+
if (availability.status === 'already-present') {
|
|
98
|
+
if (existingInstall) {
|
|
99
|
+
existingInstall.status = availability.status;
|
|
100
|
+
existingInstall.reason = availability.reason;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
skillRecord.installs.push({
|
|
104
|
+
tool,
|
|
105
|
+
status: availability.status,
|
|
106
|
+
reason: availability.reason,
|
|
107
|
+
path: targetPath,
|
|
108
|
+
source: skill.remote?.source,
|
|
109
|
+
installCommand,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
console.log(formatInstallStatusLine(`- ${skill.id} (${tool}) ${availability.status}`, availability.status));
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (!skill.remote) {
|
|
116
|
+
throw new Error(`Builtin skill is not supported by add yet: ${skill.id}`);
|
|
117
|
+
}
|
|
118
|
+
const result = await installRemoteSkill(projectRoot, {
|
|
119
|
+
tool,
|
|
120
|
+
skillId: skill.id,
|
|
121
|
+
targetPath,
|
|
122
|
+
installTargets,
|
|
123
|
+
source: skill.remote.source,
|
|
124
|
+
installCommand: installCommand ?? skill.remote.installCommand,
|
|
125
|
+
});
|
|
126
|
+
if (!existingInstall) {
|
|
127
|
+
skillRecord.installs.push({
|
|
128
|
+
tool,
|
|
129
|
+
status: result.success ? 'installed' : 'failed',
|
|
130
|
+
reason: result.success ? undefined : 'install-failed',
|
|
131
|
+
path: targetPath,
|
|
132
|
+
source: skill.remote.source,
|
|
133
|
+
installCommand,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
existingInstall.status = result.success ? 'installed' : 'failed';
|
|
138
|
+
existingInstall.reason = result.success ? undefined : 'install-failed';
|
|
139
|
+
}
|
|
140
|
+
console.log(formatInstallStatusLine(`- ${skill.id} (${tool}) ${result.success ? 'installed' : 'failed'}`, result.success ? 'installed' : 'failed'));
|
|
141
|
+
if (!result.success) {
|
|
142
|
+
console.log(withTerminalTone(` retry: ${installCommand}`, 'failure'));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
await writeInstallManifest(projectRoot, manifest);
|
|
146
|
+
}
|
|
147
|
+
export async function runAddWorkflowCommand(workflowId, options = {}) {
|
|
148
|
+
if (!WORKFLOW_CATALOG.some((workflow) => workflow.id === workflowId)) {
|
|
149
|
+
throw new Error(`Unknown workflow: ${workflowId}`);
|
|
150
|
+
}
|
|
151
|
+
const projectRoot = process.cwd();
|
|
152
|
+
const manifest = await readInstallManifest(projectRoot);
|
|
153
|
+
const tools = resolveTargetTools(manifest, options.tool);
|
|
154
|
+
const workflow = getWorkflowCatalogEntry(workflowId);
|
|
155
|
+
const workflowRecord = ensureWorkflowRecord(manifest, workflow.id);
|
|
156
|
+
console.log(`Adding workflow: ${workflow.id}`);
|
|
157
|
+
for (const [index, tool] of tools.entries()) {
|
|
158
|
+
printAddProgressStart('workflow', workflow.id, tool, index + 1, tools.length);
|
|
159
|
+
const availability = await detectWorkflowAvailability(projectRoot, tool, workflow.id);
|
|
160
|
+
const targetPaths = getWorkflowTargetPaths(tool, workflow.id);
|
|
161
|
+
const installCommand = buildWorkflowInstallCommand(workflow.id, tool);
|
|
162
|
+
const primaryPath = targetPaths[0] ?? '.';
|
|
163
|
+
const existingInstall = workflowRecord.installs.find((install) => install.tool === tool);
|
|
164
|
+
if (availability.status === 'already-present') {
|
|
165
|
+
if (existingInstall) {
|
|
166
|
+
existingInstall.status = availability.status;
|
|
167
|
+
existingInstall.reason = availability.reason;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
workflowRecord.installs.push({
|
|
171
|
+
tool,
|
|
172
|
+
status: availability.status,
|
|
173
|
+
reason: availability.reason,
|
|
174
|
+
path: primaryPath,
|
|
175
|
+
installCommand,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
console.log(formatInstallStatusLine(`- ${workflow.id} (${tool}) ${availability.status}`, availability.status));
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const result = await installWorkflow(projectRoot, {
|
|
182
|
+
tool,
|
|
183
|
+
workflowId: workflow.id,
|
|
184
|
+
installCommand,
|
|
185
|
+
});
|
|
186
|
+
if (!existingInstall) {
|
|
187
|
+
workflowRecord.installs.push({
|
|
188
|
+
tool,
|
|
189
|
+
status: result.success ? 'installed' : 'failed',
|
|
190
|
+
reason: result.success ? undefined : 'install-failed',
|
|
191
|
+
path: primaryPath,
|
|
192
|
+
installCommand,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
existingInstall.status = result.success ? 'installed' : 'failed';
|
|
197
|
+
existingInstall.reason = result.success ? undefined : 'install-failed';
|
|
198
|
+
}
|
|
199
|
+
console.log(formatInstallStatusLine(`- ${workflow.id} (${tool}) ${result.success ? 'installed' : 'failed'}`, result.success ? 'installed' : 'failed'));
|
|
200
|
+
if (!result.success) {
|
|
201
|
+
console.log(withTerminalTone(` retry: ${installCommand}`, 'failure'));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
await writeInstallManifest(projectRoot, manifest);
|
|
205
|
+
}
|
|
206
|
+
export async function runAddMcpCommand(mcpId, options = {}) {
|
|
207
|
+
if (!MCP_CATALOG.some((mcp) => mcp.id === mcpId)) {
|
|
208
|
+
throw new Error(`Unknown MCP: ${mcpId}`);
|
|
209
|
+
}
|
|
210
|
+
const projectRoot = process.cwd();
|
|
211
|
+
const manifest = await readInstallManifest(projectRoot);
|
|
212
|
+
const tools = resolveTargetTools(manifest, options.tool);
|
|
213
|
+
const mcp = getMcpCatalogEntry(mcpId);
|
|
214
|
+
const mcpRecord = ensureMcpRecord(manifest, mcp.id);
|
|
215
|
+
console.log(`Adding MCP: ${mcp.id}`);
|
|
216
|
+
const mastergoNoticeInstalls = [];
|
|
217
|
+
for (const [index, tool] of tools.entries()) {
|
|
218
|
+
printAddProgressStart('mcp', mcp.id, tool, index + 1, tools.length);
|
|
219
|
+
const configPath = getProjectMcpConfigPath(tool);
|
|
220
|
+
const absolutePath = path.join(projectRoot, configPath);
|
|
221
|
+
const existingInstall = mcpRecord.installs.find((install) => install.tool === tool);
|
|
222
|
+
if (await exists(absolutePath)) {
|
|
223
|
+
const current = await readText(absolutePath);
|
|
224
|
+
const configured = parseConfiguredMcpIds(tool, current);
|
|
225
|
+
if (configured.has(mcp.id)) {
|
|
226
|
+
if (existingInstall) {
|
|
227
|
+
existingInstall.status = 'already-present';
|
|
228
|
+
existingInstall.reason = 'already-present';
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
mcpRecord.installs.push({
|
|
232
|
+
tool,
|
|
233
|
+
status: 'already-present',
|
|
234
|
+
reason: 'already-present',
|
|
235
|
+
path: configPath,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
console.log(formatInstallStatusLine(`- ${mcp.id} (${tool}) already-present`, 'already-present'));
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
await writeText(absolutePath, mergeMcpConfig(tool, current, [mcp.id]));
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
await writeText(absolutePath, tool === 'codex' ? buildCodexMcpConfig([mcp.id]) : buildClaudeMcpConfig([mcp.id]));
|
|
245
|
+
}
|
|
246
|
+
if (existingInstall) {
|
|
247
|
+
existingInstall.status = 'installed';
|
|
248
|
+
existingInstall.reason = undefined;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
mcpRecord.installs.push({
|
|
252
|
+
tool,
|
|
253
|
+
status: 'installed',
|
|
254
|
+
path: configPath,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
console.log(formatInstallStatusLine(`- ${mcp.id} (${tool}) installed`, 'installed'));
|
|
258
|
+
if (mcp.id === 'mastergo') {
|
|
259
|
+
mastergoNoticeInstalls.push({ tool, path: configPath });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
await writeInstallManifest(projectRoot, manifest);
|
|
263
|
+
if (mcp.id === 'mastergo') {
|
|
264
|
+
printMastergoTokenNotice(mastergoNoticeInstalls);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAoC7D,wBAAsB,cAAc,CAClC,UAAU,SAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
package/dist/commands/init.js
CHANGED
|
@@ -3,15 +3,27 @@ import { promises as fs } from 'node:fs';
|
|
|
3
3
|
import { inspectProject } from '../core/project-inspector.js';
|
|
4
4
|
import { resolveInitSelections } from '../core/init-options.js';
|
|
5
5
|
import { createInitPlan } from '../core/init-plan.js';
|
|
6
|
+
import { getProjectMcpConfigPath } from '../core/init-plan.js';
|
|
6
7
|
import { applyInitPlan } from '../core/init-writer.js';
|
|
7
8
|
import { showInitWelcome } from '../utils/init-welcome.js';
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
import { printMastergoTokenNotice } from '../utils/mastergo-notice.js';
|
|
10
|
+
import { withTerminalTone } from '../utils/terminal-theme.js';
|
|
11
|
+
function printSummary(targetPath, writtenFiles, failedRemoteSkills) {
|
|
12
|
+
console.log(withTerminalTone(`Initialized SDT DevAgent in ${targetPath}`, 'success'));
|
|
10
13
|
console.log('');
|
|
11
|
-
console.log('
|
|
14
|
+
console.log('Installed bootstrap and tool integration assets:');
|
|
12
15
|
for (const file of writtenFiles) {
|
|
13
16
|
console.log(`- ${file}`);
|
|
14
17
|
}
|
|
18
|
+
if (failedRemoteSkills.length > 0) {
|
|
19
|
+
console.log('');
|
|
20
|
+
console.log(withTerminalTone('Remote skill installs that need manual retry:', 'failure'));
|
|
21
|
+
for (const item of failedRemoteSkills) {
|
|
22
|
+
console.log(withTerminalTone(`- ${item.skillId} (${item.tool})`, 'failure'));
|
|
23
|
+
console.log(` reason: ${item.error}`);
|
|
24
|
+
console.log(` retry: ${item.installCommand}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
15
27
|
}
|
|
16
28
|
export async function runInitCommand(targetPath = '.', options = {}) {
|
|
17
29
|
const resolvedTarget = path.resolve(targetPath);
|
|
@@ -28,7 +40,21 @@ export async function runInitCommand(targetPath = '.', options = {}) {
|
|
|
28
40
|
const selections = await resolveInitSelections(options);
|
|
29
41
|
const facts = await inspectProject(resolvedTarget);
|
|
30
42
|
const plan = createInitPlan(facts, selections);
|
|
31
|
-
const result = await applyInitPlan(resolvedTarget, plan
|
|
32
|
-
|
|
43
|
+
const result = await applyInitPlan(resolvedTarget, plan, {
|
|
44
|
+
onRemoteSkillInstallStart(install, index, total) {
|
|
45
|
+
console.log(`Installing remote skill ${index}/${total}: ${install.skillId} (${install.tool})...`);
|
|
46
|
+
},
|
|
47
|
+
onRemoteSkillInstallFinish(install, result) {
|
|
48
|
+
const line = `- ${install.skillId} (${install.tool}) ${result}`;
|
|
49
|
+
console.log(withTerminalTone(line, result === 'installed' ? 'success' : 'failure'));
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
printSummary(resolvedTarget, result.writtenFiles, result.failedRemoteSkills);
|
|
53
|
+
if (selections.mcps.includes('mastergo')) {
|
|
54
|
+
printMastergoTokenNotice(selections.tools.map((tool) => ({
|
|
55
|
+
tool,
|
|
56
|
+
path: getProjectMcpConfigPath(tool),
|
|
57
|
+
})));
|
|
58
|
+
}
|
|
33
59
|
}
|
|
34
60
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAO9C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MCP_CATALOG, SKILL_CATALOG, WORKFLOW_CATALOG } from '../catalog.js';
|
|
2
|
+
export function runListSkillsCommand() {
|
|
3
|
+
console.log('Installable skills');
|
|
4
|
+
for (const skill of SKILL_CATALOG) {
|
|
5
|
+
console.log(`- ${skill.id} | ${skill.selection} | ${skill.sourceType} | ${skill.description}`);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export function runListMcpCommand() {
|
|
9
|
+
console.log('Installable MCP servers');
|
|
10
|
+
for (const mcp of MCP_CATALOG) {
|
|
11
|
+
console.log(`- ${mcp.id} | ${mcp.selection} | ${mcp.sourceType} | ${mcp.description}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function runListWorkflowsCommand() {
|
|
15
|
+
console.log('Installable workflows');
|
|
16
|
+
for (const workflow of WORKFLOW_CATALOG) {
|
|
17
|
+
console.log(`- ${workflow.id} | ${workflow.sourceType} | ${workflow.supportedTools.join(', ')} | ${workflow.description}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAE5E,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACjC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IAChG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IACtC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,SAAS,MAAM,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;IACxF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACpC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CACT,KAAK,QAAQ,CAAC,EAAE,MAAM,QAAQ,CAAC,UAAU,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAC9G,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAsDA,wBAAsB,gBAAgB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCtE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { detectSkillAvailability, detectWorkflowAvailability, } from '../core/capability-discovery.js';
|
|
3
|
+
import { readInstallManifest } from '../core/manifest.js';
|
|
4
|
+
import { parseConfiguredMcpIds } from '../core/mcp-config.js';
|
|
5
|
+
import { exists, readText } from '../utils/fs.js';
|
|
6
|
+
async function resolveSkillStatus(projectRoot, skillId, install) {
|
|
7
|
+
const detected = await detectSkillAvailability(projectRoot, install.tool, skillId);
|
|
8
|
+
if (detected.status === 'missing') {
|
|
9
|
+
return install.status === 'failed' ? 'failed' : 'missing';
|
|
10
|
+
}
|
|
11
|
+
return install.status === 'already-present' ? 'already-present' : 'installed';
|
|
12
|
+
}
|
|
13
|
+
async function resolveMcpStatus(projectRoot, mcpId, install) {
|
|
14
|
+
if (!(await exists(path.join(projectRoot, install.path)))) {
|
|
15
|
+
return install.status === 'failed' ? 'failed' : 'missing';
|
|
16
|
+
}
|
|
17
|
+
const config = await readText(path.join(projectRoot, install.path));
|
|
18
|
+
const configured = parseConfiguredMcpIds(install.tool, config);
|
|
19
|
+
if (configured.has(mcpId)) {
|
|
20
|
+
return install.status === 'already-present' ? 'already-present' : 'installed';
|
|
21
|
+
}
|
|
22
|
+
return 'missing';
|
|
23
|
+
}
|
|
24
|
+
async function resolveWorkflowStatus(projectRoot, workflowId, install) {
|
|
25
|
+
const detected = await detectWorkflowAvailability(projectRoot, install.tool, workflowId);
|
|
26
|
+
if (detected.status === 'missing') {
|
|
27
|
+
return install.status === 'failed' ? 'failed' : 'missing';
|
|
28
|
+
}
|
|
29
|
+
return install.status === 'already-present' ? 'already-present' : 'installed';
|
|
30
|
+
}
|
|
31
|
+
export async function runStatusCommand(targetPath = '.') {
|
|
32
|
+
const projectRoot = path.resolve(targetPath);
|
|
33
|
+
const manifest = await readInstallManifest(projectRoot);
|
|
34
|
+
console.log('Current project capability status');
|
|
35
|
+
console.log(`Project: ${manifest.project.name}`);
|
|
36
|
+
console.log('');
|
|
37
|
+
console.log('AI Coding Tools:');
|
|
38
|
+
for (const tool of manifest.tools) {
|
|
39
|
+
console.log(`- ${tool}`);
|
|
40
|
+
}
|
|
41
|
+
console.log('');
|
|
42
|
+
console.log('Skills:');
|
|
43
|
+
for (const skill of manifest.skills) {
|
|
44
|
+
for (const install of skill.installs) {
|
|
45
|
+
const status = await resolveSkillStatus(projectRoot, skill.id, install);
|
|
46
|
+
console.log(`- ${skill.id} (${install.tool}) ${status}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log('MCP:');
|
|
51
|
+
for (const mcp of manifest.mcps) {
|
|
52
|
+
for (const install of mcp.installs) {
|
|
53
|
+
const status = await resolveMcpStatus(projectRoot, mcp.id, install);
|
|
54
|
+
console.log(`- ${mcp.id} (${install.tool}) ${status}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log('Workflows:');
|
|
59
|
+
for (const workflow of manifest.workflows) {
|
|
60
|
+
for (const install of workflow.installs) {
|
|
61
|
+
const status = await resolveWorkflowStatus(projectRoot, workflow.id, install);
|
|
62
|
+
console.log(`- ${workflow.id} (${install.tool}) ${status}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEjD,KAAK,UAAU,kBAAkB,CAC/B,WAAmB,EACnB,OAAe,EACf,OAAwE;IAExE,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAgB,CAAC,CAAA;IAC3F,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3D,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAA;AAC/E,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,WAAmB,EACnB,KAAa,EACb,OAAwE;IAExE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACnE,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9D,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAA;IAC/E,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,WAAmB,EACnB,UAAkB,EAClB,OAAwE;IAExE,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,UAAmB,CAAC,CAAA;IACjG,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3D,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAA;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAU,GAAG,GAAG;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAEvD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACtB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACzB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SkillId, ToolId, WorkflowId } from '../types.js';
|
|
2
|
+
/** skill 在项目里的探测结果。 */
|
|
3
|
+
export interface SkillDiscoveryResult {
|
|
4
|
+
status: 'missing' | 'already-present';
|
|
5
|
+
reason?: 'already-present';
|
|
6
|
+
}
|
|
7
|
+
/** workflow 在项目里的探测结果。 */
|
|
8
|
+
export interface WorkflowDiscoveryResult {
|
|
9
|
+
status: 'missing' | 'already-present';
|
|
10
|
+
reason?: 'already-present';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* skill 是否已经安装到项目级目录。
|
|
14
|
+
* `bundle` 模式要求所有目标目录齐全,`single` 只看首个主目录。
|
|
15
|
+
*/
|
|
16
|
+
export declare function hasProjectSkillInstall(projectRoot: string, tool: ToolId, skillId: SkillId): boolean;
|
|
17
|
+
/** 对外暴露的 skill 可用性探测入口。 */
|
|
18
|
+
export declare function detectSkillAvailability(projectRoot: string, tool: ToolId, skillId: SkillId): Promise<SkillDiscoveryResult>;
|
|
19
|
+
/** workflow 采用“关键路径全量存在”作为已安装判定标准。 */
|
|
20
|
+
export declare function hasProjectWorkflowInstall(projectRoot: string, tool: ToolId, workflowId: WorkflowId): boolean;
|
|
21
|
+
/** 对外暴露的 workflow 可用性探测入口。 */
|
|
22
|
+
export declare function detectWorkflowAvailability(projectRoot: string, tool: ToolId, workflowId: WorkflowId): Promise<WorkflowDiscoveryResult>;
|
|
23
|
+
//# sourceMappingURL=capability-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-discovery.d.ts","sourceRoot":"","sources":["../../src/core/capability-discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG9D,uBAAuB;AACvB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAA;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAED,0BAA0B;AAC1B,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAAA;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAgBT;AAED,2BAA2B;AAC3B,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,sCAAsC;AACtC,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,GACrB,OAAO,CAIT;AAED,8BAA8B;AAC9B,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,uBAAuB,CAAC,CAWlC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { getSkillCatalogEntry } from '../catalog.js';
|
|
4
|
+
import { getRemoteSkillInstallTargets, getWorkflowTargetPaths } from './init-plan.js';
|
|
5
|
+
/**
|
|
6
|
+
* skill 是否已经安装到项目级目录。
|
|
7
|
+
* `bundle` 模式要求所有目标目录齐全,`single` 只看首个主目录。
|
|
8
|
+
*/
|
|
9
|
+
export function hasProjectSkillInstall(projectRoot, tool, skillId) {
|
|
10
|
+
const skill = getSkillCatalogEntry(skillId);
|
|
11
|
+
const installTargets = getRemoteSkillInstallTargets(tool, skillId);
|
|
12
|
+
if (skill.detectionMode === 'bundle') {
|
|
13
|
+
return installTargets.every((target) => existsSync(path.join(projectRoot, target.targetPath, 'SKILL.md')));
|
|
14
|
+
}
|
|
15
|
+
const firstTarget = installTargets[0];
|
|
16
|
+
if (!firstTarget) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return existsSync(path.join(projectRoot, firstTarget.targetPath, 'SKILL.md'));
|
|
20
|
+
}
|
|
21
|
+
/** 对外暴露的 skill 可用性探测入口。 */
|
|
22
|
+
export async function detectSkillAvailability(projectRoot, tool, skillId) {
|
|
23
|
+
if (hasProjectSkillInstall(projectRoot, tool, skillId)) {
|
|
24
|
+
return {
|
|
25
|
+
status: 'already-present',
|
|
26
|
+
reason: 'already-present',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
status: 'missing',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** workflow 采用“关键路径全量存在”作为已安装判定标准。 */
|
|
34
|
+
export function hasProjectWorkflowInstall(projectRoot, tool, workflowId) {
|
|
35
|
+
return getWorkflowTargetPaths(tool, workflowId).every((targetPath) => existsSync(path.join(projectRoot, targetPath)));
|
|
36
|
+
}
|
|
37
|
+
/** 对外暴露的 workflow 可用性探测入口。 */
|
|
38
|
+
export async function detectWorkflowAvailability(projectRoot, tool, workflowId) {
|
|
39
|
+
if (hasProjectWorkflowInstall(projectRoot, tool, workflowId)) {
|
|
40
|
+
return {
|
|
41
|
+
status: 'already-present',
|
|
42
|
+
reason: 'already-present',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
status: 'missing',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=capability-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-discovery.js","sourceRoot":"","sources":["../../src/core/capability-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAcrF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,IAAY,EACZ,OAAgB;IAEhB,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAElE,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CACrC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAClE,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAC/E,CAAC;AAED,2BAA2B;AAC3B,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,IAAY,EACZ,OAAgB;IAEhB,IAAI,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,iBAAiB;SAC1B,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS;KAClB,CAAA;AACH,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,yBAAyB,CACvC,WAAmB,EACnB,IAAY,EACZ,UAAsB;IAEtB,OAAO,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CACnE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAC/C,CAAA;AACH,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,IAAY,EACZ,UAAsB;IAEtB,IAAI,yBAAyB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC7D,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,iBAAiB;SAC1B,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS;KAClB,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { InitSelections } from '../types.js';
|
|
2
|
+
/** CLI 原始入参;这里还未经过合法性校验和默认值归一化。 */
|
|
2
3
|
export interface RawInitOptions {
|
|
3
4
|
tools?: string;
|
|
4
5
|
installMode?: string;
|
|
5
|
-
|
|
6
|
+
skills?: string;
|
|
7
|
+
mcp?: string;
|
|
6
8
|
yes?: boolean;
|
|
7
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* `init` 选择解析入口。
|
|
12
|
+
* 优先消费显式命令参数;只有必要时才退回交互式选择。
|
|
13
|
+
*/
|
|
8
14
|
export declare function resolveInitSelections(options: RawInitOptions): Promise<InitSelections>;
|
|
9
15
|
//# sourceMappingURL=init-options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-options.d.ts","sourceRoot":"","sources":["../../src/core/init-options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init-options.d.ts","sourceRoot":"","sources":["../../src/core/init-options.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAuC,MAAM,aAAa,CAAA;AAOtF,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AA+FD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA0G5F"}
|