@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
package/README.md
CHANGED
|
@@ -1,63 +1,76 @@
|
|
|
1
1
|
# SDT DevAgent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
面向研发项目的全局 CLI,用于给现有仓库安装项目级 AI 协作接入能力。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
当前版本提供以下命令:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
sdt-dev-agent init [targetPath]
|
|
9
|
+
sdt-dev-agent status [targetPath]
|
|
10
|
+
sdt-dev-agent list skills
|
|
11
|
+
sdt-dev-agent list mcp
|
|
12
|
+
sdt-dev-agent list workflows
|
|
13
|
+
sdt-dev-agent add skill <name>
|
|
14
|
+
sdt-dev-agent add mcp <name>
|
|
15
|
+
sdt-dev-agent add workflow <name>
|
|
9
16
|
```
|
|
10
17
|
|
|
11
|
-
|
|
18
|
+
它会围绕 bootstrap skill、项目级 skills、项目级 MCP、workflow 和安装清单来初始化或增量管理目标项目。
|
|
19
|
+
|
|
20
|
+
当前命令面只处理:
|
|
21
|
+
|
|
22
|
+
- `skills`
|
|
23
|
+
- `mcp`
|
|
24
|
+
- `workflows`
|
|
25
|
+
|
|
26
|
+
像 `OpenSpec` 这类工作流能力会进入 `list workflows` / `add workflow`,而不会混入普通 `skill`。
|
|
12
27
|
|
|
13
28
|
## Quick Start
|
|
14
29
|
|
|
15
30
|
**Requires Node.js 20.19.0 or higher.**
|
|
16
31
|
|
|
17
|
-
|
|
32
|
+
全局安装 CLI:
|
|
18
33
|
|
|
19
34
|
```bash
|
|
20
|
-
pnpm add -
|
|
35
|
+
pnpm add -g @shendu-sdt/sdt-dev-agent
|
|
21
36
|
```
|
|
22
37
|
|
|
23
|
-
|
|
38
|
+
然后在目标项目中执行初始化:
|
|
24
39
|
|
|
25
40
|
```bash
|
|
26
|
-
|
|
41
|
+
cd /path/to/your-project
|
|
42
|
+
sdt-dev-agent init .
|
|
27
43
|
```
|
|
28
44
|
|
|
29
45
|
直接使用默认选择:
|
|
30
46
|
|
|
31
47
|
```bash
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
常见用法:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
pnpm exec sdt-dev-agent init . --tools codex --install-mode recommended
|
|
39
|
-
pnpm exec sdt-dev-agent init . --tools codex,claude-code --install-mode minimal
|
|
40
|
-
pnpm exec sdt-dev-agent init . --tools codex --install-mode custom --capabilities base-assets,skills
|
|
48
|
+
sdt-dev-agent init . --yes
|
|
41
49
|
```
|
|
42
50
|
|
|
43
51
|
当前支持:
|
|
44
52
|
|
|
45
53
|
- tools: `codex`, `claude-code`
|
|
46
|
-
- install mode: `recommended`, `
|
|
47
|
-
-
|
|
54
|
+
- install mode: `recommended`, `custom`
|
|
55
|
+
- project-level skills path:
|
|
56
|
+
- `codex` -> `.agents/skills/`
|
|
57
|
+
- `claude-code` -> `.claude/skills/`
|
|
58
|
+
- project-level MCP path:
|
|
59
|
+
- `codex` -> `.codex/config.toml`
|
|
60
|
+
- `claude-code` -> `.mcp.json`
|
|
48
61
|
|
|
49
62
|
初始化输出包括:
|
|
50
63
|
|
|
51
|
-
-
|
|
52
|
-
- `
|
|
53
|
-
-
|
|
54
|
-
-
|
|
64
|
+
- `.sdt-devagent/bootstrap-project-docs.md`
|
|
65
|
+
- 必装 bootstrap skill:`bootstrap-project-docs`
|
|
66
|
+
- 远端推荐 skills 的项目级安装结果
|
|
67
|
+
- `Context7` / `MasterGo` 的项目级 MCP 配置
|
|
55
68
|
- `.sdt-devagent/manifest.json`
|
|
56
69
|
|
|
57
70
|
> [!NOTE]
|
|
58
|
-
>
|
|
71
|
+
> 当前只支持 `Codex` / `Claude Code` 的项目级接入,不包含业务任务编排、PR/发布流或服务端能力。
|
|
59
72
|
>
|
|
60
|
-
>
|
|
73
|
+
> 重复执行 `init` 时,bootstrap 入口文件和 manifest 会按最新模板直接覆盖;项目级 MCP 会按 server 维度去重合并,远端 skills 只按当前项目去重,项目里没有就安装到项目级。
|
|
61
74
|
|
|
62
75
|
## Development
|
|
63
76
|
|
|
@@ -68,14 +81,19 @@ pnpm install
|
|
|
68
81
|
pnpm run build
|
|
69
82
|
```
|
|
70
83
|
|
|
71
|
-
|
|
84
|
+
推荐用全局 link 联调。先在当前仓库执行:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
pnpm link --global
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
然后在目标项目中直接执行:
|
|
72
91
|
|
|
73
92
|
```bash
|
|
74
|
-
|
|
75
|
-
pnpm exec sdt-dev-agent init .
|
|
93
|
+
sdt-dev-agent init .
|
|
76
94
|
```
|
|
77
95
|
|
|
78
|
-
|
|
96
|
+
由于 CLI 入口指向 `dist/cli/index.js`,修改 `src/` 或 `templates/` 后需要重新执行 `pnpm run build`。
|
|
79
97
|
|
|
80
98
|
常用命令:
|
|
81
99
|
|
|
@@ -96,13 +114,49 @@ pnpm run verify
|
|
|
96
114
|
pnpm run verify
|
|
97
115
|
```
|
|
98
116
|
|
|
99
|
-
|
|
117
|
+
正式版发布:
|
|
100
118
|
|
|
101
119
|
```bash
|
|
102
|
-
pnpm run release
|
|
120
|
+
pnpm run release # 等价于 pnpm run release:patch
|
|
103
121
|
pnpm run release:patch
|
|
104
122
|
pnpm run release:minor
|
|
105
123
|
pnpm run release:major
|
|
106
124
|
```
|
|
107
125
|
|
|
108
|
-
|
|
126
|
+
说明:
|
|
127
|
+
|
|
128
|
+
- `release` / `release:patch`:发布下一个 patch 版本到 npm `latest`
|
|
129
|
+
- `release:minor`:发布下一个 minor 版本到 npm `latest`
|
|
130
|
+
- `release:major`:发布下一个 major 版本到 npm `latest`
|
|
131
|
+
|
|
132
|
+
开发主线 beta 发布:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
BUILD_NUMBER=123 pnpm run release:beta
|
|
136
|
+
# 或
|
|
137
|
+
pnpm run release:beta -- 123
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
beta 流水线前置条件:
|
|
141
|
+
|
|
142
|
+
- 流水线需配置私密变量 `NPM_TOKEN`
|
|
143
|
+
- `NPM_TOKEN` 必须是对 `@shendu-sdt/sdt-dev-agent` 具备 publish 权限的 npm 官方 token
|
|
144
|
+
- beta 发布步骤需在运行时写入 npm 官方 registry 的 `/root/.npmrc`
|
|
145
|
+
- token 建议使用有限有效期并定期轮换,例如 `90 days`
|
|
146
|
+
|
|
147
|
+
推荐发布分支约定:
|
|
148
|
+
|
|
149
|
+
- `master`:正式版发布分支,默认手动发布,由发布人显式选择 `patch` / `minor` / `major`
|
|
150
|
+
- `dev`:beta 发布分支,默认由流水线自动执行 `pnpm run release:beta -- ${BUILD_NUMBER}`
|
|
151
|
+
|
|
152
|
+
版本规则:
|
|
153
|
+
|
|
154
|
+
- 正式版由发布人明确选择 `patch` / `minor` / `major`
|
|
155
|
+
- beta 会基于当前稳定版本生成“下一 patch 版本”的 `-beta.<buildId>` 版本号
|
|
156
|
+
- 例如当前版本是 `0.1.2`,则 beta 会发布为 `0.1.3-beta.123`
|
|
157
|
+
|
|
158
|
+
发布行为:
|
|
159
|
+
|
|
160
|
+
- 正式版发布到 npm `latest`
|
|
161
|
+
- beta 发布到 npm `beta`
|
|
162
|
+
- 发布脚本会先执行 `build`,再写入目标版本,然后对目标版本执行 `npm publish --dry-run`,最后发布到 npm 官方 registry
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CatalogMcp, CatalogSkill, CatalogWorkflow, McpId, SkillId, WorkflowId } from './types.js';
|
|
2
|
+
export declare const SKILL_CATALOG: CatalogSkill[];
|
|
3
|
+
export declare const MCP_CATALOG: CatalogMcp[];
|
|
4
|
+
export declare const WORKFLOW_CATALOG: CatalogWorkflow[];
|
|
5
|
+
export declare const REQUIRED_SKILL_ID: SkillId;
|
|
6
|
+
export declare const DEFAULT_SKILL_IDS: SkillId[];
|
|
7
|
+
export declare const OPTIONAL_SKILL_IDS: SkillId[];
|
|
8
|
+
export declare const DEFAULT_MCP_IDS: McpId[];
|
|
9
|
+
export declare const OPTIONAL_MCP_IDS: McpId[];
|
|
10
|
+
export declare const SKILL_IDS: SkillId[];
|
|
11
|
+
export declare const MCP_IDS: McpId[];
|
|
12
|
+
export declare const WORKFLOW_IDS: WorkflowId[];
|
|
13
|
+
export declare function getSkillCatalogEntry(skillId: SkillId): CatalogSkill;
|
|
14
|
+
export declare function getMcpCatalogEntry(mcpId: McpId): CatalogMcp;
|
|
15
|
+
export declare function getWorkflowCatalogEntry(workflowId: WorkflowId): CatalogWorkflow;
|
|
16
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,KAAK,EACL,OAAO,EACP,UAAU,EAEX,MAAM,YAAY,CAAA;AA4CnB,eAAO,MAAM,aAAa,EAAE,YAAY,EAYL,CAAA;AAEnC,eAAO,MAAM,WAAW,EAAE,UAAU,EAmBH,CAAA;AAEjC,eAAO,MAAM,gBAAgB,EAAE,eAAe,EAUR,CAAA;AAEtC,eAAO,MAAM,iBAAiB,EAAE,OAAkC,CAAA;AAClE,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAEb,CAAA;AAC1B,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAEd,CAAA;AAC1B,eAAO,MAAM,eAAe,EAAE,KAAK,EAEb,CAAA;AACtB,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAEd,CAAA;AAEtB,eAAO,MAAM,SAAS,EAAE,OAAO,EAEL,CAAA;AAC1B,eAAO,MAAM,OAAO,EAAE,KAAK,EAAqC,CAAA;AAChE,eAAO,MAAM,YAAY,EAAE,UAAU,EAAoD,CAAA;AAEzF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAMnE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAM3D;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAM/E"}
|
package/dist/catalog.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const ALL_TOOLS = ['codex', 'claude-code'];
|
|
5
|
+
const currentDir = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const projectRoot = path.resolve(currentDir, '..');
|
|
7
|
+
function loadRemoteSkillCatalog() {
|
|
8
|
+
const raw = readFileSync(path.join(projectRoot, 'templates', 'skills', 'remote', 'catalog.json'), 'utf8');
|
|
9
|
+
const entries = JSON.parse(raw);
|
|
10
|
+
return entries.map((entry) => ({
|
|
11
|
+
id: entry.id,
|
|
12
|
+
displayName: entry.displayName,
|
|
13
|
+
description: entry.description,
|
|
14
|
+
sourceType: 'remote-recommended',
|
|
15
|
+
selection: entry.selection,
|
|
16
|
+
detectionMode: entry.detectionMode,
|
|
17
|
+
supportedTools: entry.supportedTools,
|
|
18
|
+
remote: {
|
|
19
|
+
source: entry.source,
|
|
20
|
+
installCommand: entry.installCommand,
|
|
21
|
+
installTargets: entry.installTargets,
|
|
22
|
+
},
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
export const SKILL_CATALOG = [
|
|
26
|
+
{
|
|
27
|
+
id: 'bootstrap-project-docs',
|
|
28
|
+
displayName: 'bootstrap-project-docs',
|
|
29
|
+
description: '初始化项目事实文档与工具规则文档的必装 bootstrap skill。',
|
|
30
|
+
sourceType: 'builtin-local',
|
|
31
|
+
selection: 'required',
|
|
32
|
+
detectionMode: 'single',
|
|
33
|
+
supportedTools: ALL_TOOLS,
|
|
34
|
+
templateDir: 'skills/builtin/bootstrap-project-docs',
|
|
35
|
+
},
|
|
36
|
+
...loadRemoteSkillCatalog(),
|
|
37
|
+
];
|
|
38
|
+
export const MCP_CATALOG = [
|
|
39
|
+
{
|
|
40
|
+
id: 'context7',
|
|
41
|
+
displayName: 'Context7',
|
|
42
|
+
description: '默认安装的项目级文档检索 MCP。',
|
|
43
|
+
sourceType: 'project-template',
|
|
44
|
+
selection: 'default',
|
|
45
|
+
supportedTools: ALL_TOOLS,
|
|
46
|
+
templateBaseDir: 'mcp/context7',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'mastergo',
|
|
50
|
+
displayName: 'MasterGo',
|
|
51
|
+
description: '选装设计稿 MCP。',
|
|
52
|
+
sourceType: 'project-template',
|
|
53
|
+
selection: 'optional',
|
|
54
|
+
supportedTools: ALL_TOOLS,
|
|
55
|
+
templateBaseDir: 'mcp/mastergo',
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
export const WORKFLOW_CATALOG = [
|
|
59
|
+
{
|
|
60
|
+
id: 'openspec',
|
|
61
|
+
displayName: 'OpenSpec',
|
|
62
|
+
description: '独立的 spec-driven workflow 工作流能力,不属于普通 skills 或 MCP。',
|
|
63
|
+
sourceType: 'workflow-integration',
|
|
64
|
+
supportedTools: ALL_TOOLS,
|
|
65
|
+
templateBaseDir: 'workflows/openspec',
|
|
66
|
+
installCommand: 'npx -y @fission-ai/openspec@latest init --tools <tool> --profile core .',
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
export const REQUIRED_SKILL_ID = 'bootstrap-project-docs';
|
|
70
|
+
export const DEFAULT_SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.selection === 'default').map((skill) => skill.id);
|
|
71
|
+
export const OPTIONAL_SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.selection === 'optional').map((skill) => skill.id);
|
|
72
|
+
export const DEFAULT_MCP_IDS = MCP_CATALOG.filter((mcp) => mcp.selection === 'default').map((mcp) => mcp.id);
|
|
73
|
+
export const OPTIONAL_MCP_IDS = MCP_CATALOG.filter((mcp) => mcp.selection === 'optional').map((mcp) => mcp.id);
|
|
74
|
+
export const SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.id !== REQUIRED_SKILL_ID).map((skill) => skill.id);
|
|
75
|
+
export const MCP_IDS = MCP_CATALOG.map((mcp) => mcp.id);
|
|
76
|
+
export const WORKFLOW_IDS = WORKFLOW_CATALOG.map((workflow) => workflow.id);
|
|
77
|
+
export function getSkillCatalogEntry(skillId) {
|
|
78
|
+
const skill = SKILL_CATALOG.find((item) => item.id === skillId);
|
|
79
|
+
if (!skill) {
|
|
80
|
+
throw new Error(`Unknown skill catalog id: ${skillId}`);
|
|
81
|
+
}
|
|
82
|
+
return skill;
|
|
83
|
+
}
|
|
84
|
+
export function getMcpCatalogEntry(mcpId) {
|
|
85
|
+
const mcp = MCP_CATALOG.find((item) => item.id === mcpId);
|
|
86
|
+
if (!mcp) {
|
|
87
|
+
throw new Error(`Unknown MCP catalog id: ${mcpId}`);
|
|
88
|
+
}
|
|
89
|
+
return mcp;
|
|
90
|
+
}
|
|
91
|
+
export function getWorkflowCatalogEntry(workflowId) {
|
|
92
|
+
const workflow = WORKFLOW_CATALOG.find((item) => item.id === workflowId);
|
|
93
|
+
if (!workflow) {
|
|
94
|
+
throw new Error(`Unknown workflow catalog id: ${workflowId}`);
|
|
95
|
+
}
|
|
96
|
+
return workflow;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { runAddMcpCommand, runAddSkillCommand, runAddWorkflowCommand } from '../commands/add.js';
|
|
2
3
|
import { runInitCommand } from '../commands/init.js';
|
|
4
|
+
import { runListMcpCommand, runListSkillsCommand, runListWorkflowsCommand, } from '../commands/list.js';
|
|
5
|
+
import { runStatusCommand } from '../commands/status.js';
|
|
3
6
|
const program = new Command();
|
|
4
7
|
program
|
|
5
8
|
.name('sdt-dev-agent')
|
|
@@ -7,10 +10,11 @@ program
|
|
|
7
10
|
.version('0.1.0');
|
|
8
11
|
program
|
|
9
12
|
.command('init [targetPath]')
|
|
10
|
-
.description('Initialize
|
|
13
|
+
.description('Initialize bootstrap skills, tool integrations, and MCP config in a project')
|
|
11
14
|
.option('--tools <tools>', 'Comma-separated tools: codex,claude-code')
|
|
12
|
-
.option('--install-mode <mode>', 'Install mode: recommended|
|
|
13
|
-
.option('--
|
|
15
|
+
.option('--install-mode <mode>', 'Install mode: recommended|custom')
|
|
16
|
+
.option('--skills <skills>', 'Comma-separated remote skill ids for custom install')
|
|
17
|
+
.option('--mcp <mcp>', 'Comma-separated MCP ids for custom install')
|
|
14
18
|
.option('--yes', 'Use default selections without prompting')
|
|
15
19
|
.action(async (targetPath = '.', options) => {
|
|
16
20
|
try {
|
|
@@ -22,5 +26,70 @@ program
|
|
|
22
26
|
process.exitCode = 1;
|
|
23
27
|
}
|
|
24
28
|
});
|
|
29
|
+
program
|
|
30
|
+
.command('status [targetPath]')
|
|
31
|
+
.description('Show current project capability status')
|
|
32
|
+
.action(async (targetPath = '.') => {
|
|
33
|
+
try {
|
|
34
|
+
await runStatusCommand(targetPath);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
38
|
+
console.error(message);
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const listCommand = program.command('list').description('Show installable capability catalogs');
|
|
43
|
+
listCommand.command('skills').description('List installable skills').action(runListSkillsCommand);
|
|
44
|
+
listCommand.command('mcp').description('List installable MCP servers').action(runListMcpCommand);
|
|
45
|
+
listCommand
|
|
46
|
+
.command('workflows')
|
|
47
|
+
.description('List installable workflows')
|
|
48
|
+
.action(runListWorkflowsCommand);
|
|
49
|
+
const addCommand = program
|
|
50
|
+
.command('add')
|
|
51
|
+
.description('Add a skill, MCP, or workflow to an initialized project');
|
|
52
|
+
addCommand
|
|
53
|
+
.command('skill <name>')
|
|
54
|
+
.description('Add a skill to the initialized project')
|
|
55
|
+
.option('--tool <tool>', 'Limit installation to one initialized tool')
|
|
56
|
+
.action(async (name, options) => {
|
|
57
|
+
try {
|
|
58
|
+
await runAddSkillCommand(name, options);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
62
|
+
console.error(message);
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
addCommand
|
|
67
|
+
.command('mcp <name>')
|
|
68
|
+
.description('Add an MCP server to the initialized project')
|
|
69
|
+
.option('--tool <tool>', 'Limit installation to one initialized tool')
|
|
70
|
+
.action(async (name, options) => {
|
|
71
|
+
try {
|
|
72
|
+
await runAddMcpCommand(name, options);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
76
|
+
console.error(message);
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
addCommand
|
|
81
|
+
.command('workflow <name>')
|
|
82
|
+
.description('Add a workflow to the initialized project')
|
|
83
|
+
.option('--tool <tool>', 'Limit installation to one initialized tool')
|
|
84
|
+
.action(async (name, options) => {
|
|
85
|
+
try {
|
|
86
|
+
await runAddWorkflowCommand(name, options);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
90
|
+
console.error(message);
|
|
91
|
+
process.exitCode = 1;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
25
94
|
await program.parseAsync(process.argv);
|
|
26
95
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface AddCommandOptions {
|
|
2
|
+
tool?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function runAddSkillCommand(skillId: string, options?: AddCommandOptions): Promise<void>;
|
|
5
|
+
export declare function runAddWorkflowCommand(workflowId: string, options?: AddCommandOptions): Promise<void>;
|
|
6
|
+
export declare function runAddMcpCommand(mcpId: string, options?: AddCommandOptions): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=add.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AA6FD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsFf;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwEf"}
|