@shendu-sdt/sdt-dev-agent 0.1.2 → 0.1.3-beta.20260519142550

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +121 -14
  2. package/dist/catalog/index.d.ts +4 -0
  3. package/dist/catalog/index.d.ts.map +1 -0
  4. package/dist/catalog/index.js +4 -0
  5. package/dist/catalog/index.js.map +1 -0
  6. package/dist/catalog/mcp.d.ts +12 -0
  7. package/dist/catalog/mcp.d.ts.map +1 -0
  8. package/dist/catalog/mcp.js +37 -0
  9. package/dist/catalog/mcp.js.map +1 -0
  10. package/dist/catalog/shared.d.ts +5 -0
  11. package/dist/catalog/shared.d.ts.map +1 -0
  12. package/dist/catalog/shared.js +8 -0
  13. package/dist/catalog/shared.js.map +1 -0
  14. package/dist/catalog/skills.d.ts +14 -0
  15. package/dist/catalog/skills.d.ts.map +1 -0
  16. package/dist/catalog/skills.js +55 -0
  17. package/dist/catalog/skills.js.map +1 -0
  18. package/dist/catalog/workflows.d.ts +8 -0
  19. package/dist/catalog/workflows.d.ts.map +1 -0
  20. package/dist/catalog/workflows.js +24 -0
  21. package/dist/catalog/workflows.js.map +1 -0
  22. package/dist/cli/index.js +72 -3
  23. package/dist/cli/index.js.map +1 -1
  24. package/dist/commands/add.d.ts +7 -0
  25. package/dist/commands/add.d.ts.map +1 -0
  26. package/dist/commands/add.js +300 -0
  27. package/dist/commands/add.js.map +1 -0
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +81 -6
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/list.d.ts +4 -0
  32. package/dist/commands/list.d.ts.map +1 -0
  33. package/dist/commands/list.js +20 -0
  34. package/dist/commands/list.js.map +1 -0
  35. package/dist/commands/status.d.ts +2 -0
  36. package/dist/commands/status.d.ts.map +1 -0
  37. package/dist/commands/status.js +66 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/core/bootstrap-entry.d.ts +5 -0
  40. package/dist/core/bootstrap-entry.d.ts.map +1 -0
  41. package/dist/core/bootstrap-entry.js +9 -0
  42. package/dist/core/bootstrap-entry.js.map +1 -0
  43. package/dist/core/capability-discovery.d.ts +23 -0
  44. package/dist/core/capability-discovery.d.ts.map +1 -0
  45. package/dist/core/capability-discovery.js +49 -0
  46. package/dist/core/capability-discovery.js.map +1 -0
  47. package/dist/core/hook-config.d.ts +19 -0
  48. package/dist/core/hook-config.d.ts.map +1 -0
  49. package/dist/core/hook-config.js +162 -0
  50. package/dist/core/hook-config.js.map +1 -0
  51. package/dist/core/init-options.d.ts +7 -1
  52. package/dist/core/init-options.d.ts.map +1 -1
  53. package/dist/core/init-options.js +70 -39
  54. package/dist/core/init-options.js.map +1 -1
  55. package/dist/core/init-plan.d.ts +25 -1
  56. package/dist/core/init-plan.d.ts.map +1 -1
  57. package/dist/core/init-plan.js +277 -37
  58. package/dist/core/init-plan.js.map +1 -1
  59. package/dist/core/init-writer.d.ts +17 -1
  60. package/dist/core/init-writer.d.ts.map +1 -1
  61. package/dist/core/init-writer.js +177 -19
  62. package/dist/core/init-writer.js.map +1 -1
  63. package/dist/core/manifest.d.ts +8 -0
  64. package/dist/core/manifest.d.ts.map +1 -0
  65. package/dist/core/manifest.js +18 -0
  66. package/dist/core/manifest.js.map +1 -0
  67. package/dist/core/mcp-config.d.ts +13 -0
  68. package/dist/core/mcp-config.d.ts.map +1 -0
  69. package/dist/core/mcp-config.js +102 -0
  70. package/dist/core/mcp-config.js.map +1 -0
  71. package/dist/core/project-inspector.d.ts +1 -0
  72. package/dist/core/project-inspector.d.ts.map +1 -1
  73. package/dist/core/project-inspector.js +6 -1
  74. package/dist/core/project-inspector.js.map +1 -1
  75. package/dist/core/remote-skill-installer.d.ts +16 -0
  76. package/dist/core/remote-skill-installer.d.ts.map +1 -0
  77. package/dist/core/remote-skill-installer.js +104 -0
  78. package/dist/core/remote-skill-installer.js.map +1 -0
  79. package/dist/core/tool-profile.d.ts +41 -0
  80. package/dist/core/tool-profile.d.ts.map +1 -0
  81. package/dist/core/tool-profile.js +122 -0
  82. package/dist/core/tool-profile.js.map +1 -0
  83. package/dist/core/workflow-installer.d.ts +22 -0
  84. package/dist/core/workflow-installer.d.ts.map +1 -0
  85. package/dist/core/workflow-installer.js +104 -0
  86. package/dist/core/workflow-installer.js.map +1 -0
  87. package/dist/types.d.ts +121 -6
  88. package/dist/types.d.ts.map +1 -1
  89. package/dist/types.js +12 -2
  90. package/dist/types.js.map +1 -1
  91. package/dist/utils/follow-up-notice.d.ts +7 -0
  92. package/dist/utils/follow-up-notice.d.ts.map +1 -0
  93. package/dist/utils/follow-up-notice.js +29 -0
  94. package/dist/utils/follow-up-notice.js.map +1 -0
  95. package/dist/utils/init-welcome.d.ts +1 -0
  96. package/dist/utils/init-welcome.d.ts.map +1 -1
  97. package/dist/utils/init-welcome.js +49 -38
  98. package/dist/utils/init-welcome.js.map +1 -1
  99. package/dist/utils/json.d.ts +3 -0
  100. package/dist/utils/json.d.ts.map +1 -0
  101. package/dist/utils/json.js +11 -0
  102. package/dist/utils/json.js.map +1 -0
  103. package/dist/utils/mastergo-notice.d.ts +7 -0
  104. package/dist/utils/mastergo-notice.d.ts.map +1 -0
  105. package/dist/utils/mastergo-notice.js +14 -0
  106. package/dist/utils/mastergo-notice.js.map +1 -0
  107. package/dist/utils/progress-spinner.d.ts +22 -0
  108. package/dist/utils/progress-spinner.d.ts.map +1 -0
  109. package/dist/utils/progress-spinner.js +74 -0
  110. package/dist/utils/progress-spinner.js.map +1 -0
  111. package/dist/utils/terminal-theme.d.ts +4 -0
  112. package/dist/utils/terminal-theme.d.ts.map +1 -0
  113. package/dist/utils/terminal-theme.js +25 -0
  114. package/dist/utils/terminal-theme.js.map +1 -0
  115. package/package.json +4 -4
  116. package/templates/bootstrap/project-entry.md +28 -0
  117. package/templates/hooks/claude-code/bootstrap-project-docs-context.mjs +38 -0
  118. package/templates/hooks/claude-code/settings.json +36 -0
  119. package/templates/hooks/codex/bootstrap-project-docs-context.mjs +38 -0
  120. package/templates/hooks/codex/config.toml +16 -0
  121. package/templates/mcp/context7/claude-code/server.json +6 -0
  122. package/templates/mcp/context7/codex/config.toml +3 -0
  123. package/templates/mcp/mastergo/claude-code/server.json +6 -0
  124. package/templates/mcp/mastergo/codex/config.toml +4 -0
  125. package/templates/rules/claude-code/CLAUDE.md +17 -0
  126. package/templates/rules/codex/AGENTS.md +17 -0
  127. package/templates/skills/builtin/bootstrap-project-docs/SKILL.md +30 -0
  128. package/templates/skills/builtin/bootstrap-project-docs/agents/openai.yaml +4 -0
  129. package/templates/skills/builtin/bootstrap-project-docs/references/architecture-first.md +19 -0
  130. package/templates/skills/builtin/bootstrap-project-docs/references/doc-state-routing.md +28 -0
  131. package/templates/skills/builtin/bootstrap-project-docs/references/tool-rules-follow-up.md +23 -0
  132. package/templates/skills/remote/catalog.json +68 -0
  133. package/templates/workflows/openspec/README.md +7 -0
  134. package/templates/workflows/openspec/claude-code/README.md +7 -0
  135. package/templates/workflows/openspec/codex/README.md +7 -0
  136. package/templates/AGENTS.md +0 -24
  137. package/templates/ARCHITECTURE.md +0 -26
  138. package/templates/capabilities/mcp/README.md +0 -8
  139. package/templates/capabilities/skills/README.md +0 -8
  140. package/templates/docs/ai-collaboration/README.md +0 -16
  141. package/templates/tools/claude-code/README.md +0 -8
  142. package/templates/tools/codex/README.md +0 -8
package/README.md CHANGED
@@ -1,14 +1,21 @@
1
1
  # SDT DevAgent
2
2
 
3
- 面向研发项目的全局 CLI,用于给现有仓库落地 AI 协作底座。
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
- 它会把项目级 AI 协作文档骨架、工具占位目录、能力包占位目录,以及安装清单 `.sdt-devagent/manifest.json` 安装到现有仓库中。
18
+ 它会围绕 bootstrap skill、项目级 skills、项目级 MCP、workflow 和安装清单来初始化或增量管理目标项目。
12
19
 
13
20
  ## Quick Start
14
21
 
@@ -33,24 +40,71 @@ sdt-dev-agent init .
33
40
  sdt-dev-agent init . --yes
34
41
  ```
35
42
 
43
+ ## Supported Tools
44
+
36
45
  当前支持:
37
46
 
38
47
  - tools: `codex`, `claude-code`
39
- - install mode: `recommended`, `minimal`, `custom`
40
- - capabilities: `base-assets`, `skills`, `mcp`
48
+ - install mode: `recommended`, `custom`
49
+
50
+ ## Built-in Capabilities
51
+
52
+ 当前命令面只处理三类 capability:
53
+
54
+ - `skills`
55
+ - `mcp`
56
+ - `workflows`
57
+
58
+ 当前内置能力可以概括为:
59
+
60
+ - `skills`
61
+ - 必装 bootstrap skill:`bootstrap-project-docs`
62
+ - 内置推荐远端 skills,可按 `recommended` 或 `custom` 安装
63
+ - `mcp`
64
+ - 默认 MCP:`Context7`
65
+ - 选装 MCP:`MasterGo`
66
+ - `workflows`
67
+ - 独立 workflow:`OpenSpec`
68
+ - 不会混入普通 `skill`;使用 `list workflows` / `add workflow` 管理
41
69
 
42
70
  初始化输出包括:
43
71
 
44
- - `AGENTS.md`
45
- - `ARCHITECTURE.md`
46
- - `docs/ai-collaboration/README.md`
47
- - `.codex/` / `.claude/` 占位文件
72
+ - 根级前置入口文档:`AGENTS.md` / `CLAUDE.md`
73
+ - `.sdt-devagent/bootstrap-project-docs.md`
74
+ - 必装 bootstrap skill:`bootstrap-project-docs`
75
+ - `Codex` / `Claude Code` 的项目级 hooks 增强配置
76
+ - 远端推荐 skills 的项目级安装结果
77
+ - `Context7` / `MasterGo` 的项目级 MCP 配置
48
78
  - `.sdt-devagent/manifest.json`
49
79
 
80
+ ## Discover And Install
81
+
82
+ 查看当前内置项:
83
+
84
+ ```bash
85
+ sdt-dev-agent list skills
86
+ sdt-dev-agent list mcp
87
+ sdt-dev-agent list workflows
88
+ ```
89
+
90
+ 增量安装:
91
+
92
+ ```bash
93
+ sdt-dev-agent add skill <name>
94
+ sdt-dev-agent add mcp <name>
95
+ sdt-dev-agent add workflow <name>
96
+ ```
97
+
50
98
  > [!NOTE]
51
- > 当前只支持初始化基座,不包含真实 MCP 接线、真实 Skills 内容或业务闭环。
99
+ > 当前只支持 `Codex` / `Claude Code` 的项目级接入,不包含业务任务编排、PR/发布流或服务端能力。
100
+ >
101
+ > 重复执行 `init` 时,CLI 托管的 bootstrap 入口文件和 manifest 会按最新模板直接覆盖;用户已有 `AGENTS.md` / `CLAUDE.md` 会保留并提示人工合并。
102
+ >
103
+ > 如果项目层已经存在 `.codex/hooks.json`,CLI 不会再把托管 hooks 混写进同层 `.codex/config.toml`;会把 Codex hooks 标记成 degraded,并继续保留入口文档、bootstrap skill 和 MCP。
52
104
  >
53
- > 当前写入策略是严格防覆盖;目标文件已存在时会整体中止,不会自动合并。
105
+ > `Codex` 的项目级 hooks 首次还需要在 `/hooks` 里完成 trust review,文件已写入不等于该 hooks 已经开始执行。
106
+ >
107
+ > 如果远端 skill 安装失败,CLI 会保留已成功写入的本地文件与 manifest 状态,并输出 retry 命令;但本次 `init` 会以非零退出,避免把“部分成功”误判成“初始化完成”。
54
108
 
55
109
  ## Development
56
110
 
@@ -94,13 +148,66 @@ pnpm run verify
94
148
  pnpm run verify
95
149
  ```
96
150
 
97
- 然后按版本类型发布:
151
+ `verify` 当前会依次执行:`typecheck -> lint -> test -> build`。
152
+
153
+ 正式版发布:
98
154
 
99
155
  ```bash
100
- pnpm run release
156
+ pnpm run release # 等价于 pnpm run release:patch
101
157
  pnpm run release:patch
102
158
  pnpm run release:minor
103
159
  pnpm run release:major
104
160
  ```
105
161
 
106
- 发布脚本会依次执行 `build`、`npm publish --dry-run --access public`、`version --no-git-tag-version`、`npm publish --access public`,并发布到 npm 官方 registry。
162
+ 说明:
163
+
164
+ - `release` / `release:patch`:发布下一个 patch 版本到 npm `latest`
165
+ - `release:minor`:发布下一个 minor 版本到 npm `latest`
166
+ - `release:major`:发布下一个 major 版本到 npm `latest`
167
+
168
+ 开发主线 beta 发布:
169
+
170
+ ```bash
171
+ pnpm run release:beta
172
+ # 或手动指定 buildId
173
+ pnpm run release:beta -- 20260519143000
174
+ # 或兼容旧方式
175
+ BUILD_NUMBER=20260519143000 pnpm run release:beta
176
+ ```
177
+
178
+ beta 流水线前置条件:
179
+
180
+ - 流水线需配置私密变量 `NPM_TOKEN`
181
+ - `NPM_TOKEN` 必须是对 `@shendu-sdt/sdt-dev-agent` 具备 publish 权限的 npm 官方 token
182
+ - beta 发布步骤需在运行时写入 npm 官方 registry 的 `/root/.npmrc`
183
+ - token 建议使用有限有效期并定期轮换,例如 `90 days`
184
+
185
+ 推荐发布分支约定:
186
+
187
+ - `master`:正式版发布分支,默认手动发布,由发布人显式选择 `patch` / `minor` / `major`
188
+ - `dev`:beta 发布分支,默认由发布人本地执行 `pnpm run release:beta`
189
+
190
+ 脚本强校验:
191
+
192
+ - 执行 `pnpm run release:beta` 时,当前分支必须是 `dev`
193
+ - 执行正式版发布命令时,当前分支必须是 `master`
194
+ - 发布前工作区必须干净,不能存在本地未提交修改
195
+ - 发布前本地分支必须与对应远端分支完全同步
196
+ - beta 对应 `origin/dev`
197
+ - 正式版对应 `origin/master`
198
+ - 任一条件不满足时,发布脚本会直接报错并停止,不会继续写版本号或执行 `npm publish`
199
+
200
+ 版本规则:
201
+
202
+ - 正式版由发布人明确选择 `patch` / `minor` / `major`
203
+ - beta 会基于当前稳定版本生成“下一 patch 版本”的 `-beta.<buildId>` 版本号
204
+ - 不传参时,`buildId` 默认使用本地时间的 `YYYYMMDDHHmmss`
205
+ - 例如当前版本是 `0.1.2`,本地执行后可能发布为 `0.1.3-beta.20260519143000`
206
+
207
+ 发布行为:
208
+
209
+ - 正式版发布到 npm `latest`
210
+ - beta 发布到 npm `beta`
211
+ - 发布脚本会先执行 `verify`(包含 `typecheck`、`lint`、`test`、`build`),再写入目标版本,然后对目标版本执行 `npm publish --dry-run`,最后发布到 npm 官方 registry
212
+ - 本地 beta 发布会更新工作区中的版本号文件;发布完成后如果不打算保留该 prerelease 版本号,需要由发布人自行处理工作区状态
213
+ - 执行 beta 发布前,发布机仍然需要具备 npm 官方 registry 的发布权限
@@ -0,0 +1,4 @@
1
+ export { DEFAULT_SKILL_IDS, getSkillCatalogEntry, OPTIONAL_SKILL_IDS, REQUIRED_SKILL_ID, SKILL_CATALOG, SKILL_IDS, } from './skills.js';
2
+ export { DEFAULT_MCP_IDS, getMcpCatalogEntry, MCP_CATALOG, MCP_IDS, OPTIONAL_MCP_IDS, } from './mcp.js';
3
+ export { getWorkflowCatalogEntry, WORKFLOW_CATALOG, WORKFLOW_IDS } from './workflows.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { DEFAULT_SKILL_IDS, getSkillCatalogEntry, OPTIONAL_SKILL_IDS, REQUIRED_SKILL_ID, SKILL_CATALOG, SKILL_IDS, } from './skills.js';
2
+ export { DEFAULT_MCP_IDS, getMcpCatalogEntry, MCP_CATALOG, MCP_IDS, OPTIONAL_MCP_IDS, } from './mcp.js';
3
+ export { getWorkflowCatalogEntry, WORKFLOW_CATALOG, WORKFLOW_IDS } from './workflows.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,GACV,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { CatalogMcp, McpId } from '../types.js';
2
+ /** MCP 能力清单,模板目录是运行时生成项目级配置的事实源。 */
3
+ export declare const MCP_CATALOG: CatalogMcp[];
4
+ /** 推荐模式下默认安装的 MCP ID 集合。 */
5
+ export declare const DEFAULT_MCP_IDS: McpId[];
6
+ /** 可选但非默认安装的 MCP ID 集合。 */
7
+ export declare const OPTIONAL_MCP_IDS: McpId[];
8
+ /** 对外暴露给 `list/add` 的 MCP ID 集合。 */
9
+ export declare const MCP_IDS: McpId[];
10
+ /** 按稳定 ID 读取单个 MCP catalog 项。 */
11
+ export declare function getMcpCatalogEntry(mcpId: McpId): CatalogMcp;
12
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/catalog/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAGpD,oCAAoC;AACpC,eAAO,MAAM,WAAW,EAAE,UAAU,EAmBH,CAAA;AAEjC,4BAA4B;AAC5B,eAAO,MAAM,eAAe,EAAE,KAAK,EAEb,CAAA;AAEtB,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAEd,CAAA;AAEtB,oCAAoC;AACpC,eAAO,MAAM,OAAO,EAAE,KAAK,EAAqC,CAAA;AAEhE,iCAAiC;AACjC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAM3D"}
@@ -0,0 +1,37 @@
1
+ import { ALL_TOOLS } from './shared.js';
2
+ /** MCP 能力清单,模板目录是运行时生成项目级配置的事实源。 */
3
+ export const MCP_CATALOG = [
4
+ {
5
+ id: 'context7',
6
+ displayName: 'Context7',
7
+ description: '默认安装的项目级文档检索 MCP。',
8
+ sourceType: 'project-template',
9
+ selection: 'default',
10
+ supportedTools: ALL_TOOLS,
11
+ templateBaseDir: 'mcp/context7',
12
+ },
13
+ {
14
+ id: 'mastergo',
15
+ displayName: 'MasterGo',
16
+ description: '选装设计稿 MCP。',
17
+ sourceType: 'project-template',
18
+ selection: 'optional',
19
+ supportedTools: ALL_TOOLS,
20
+ templateBaseDir: 'mcp/mastergo',
21
+ },
22
+ ];
23
+ /** 推荐模式下默认安装的 MCP ID 集合。 */
24
+ export const DEFAULT_MCP_IDS = MCP_CATALOG.filter((mcp) => mcp.selection === 'default').map((mcp) => mcp.id);
25
+ /** 可选但非默认安装的 MCP ID 集合。 */
26
+ export const OPTIONAL_MCP_IDS = MCP_CATALOG.filter((mcp) => mcp.selection === 'optional').map((mcp) => mcp.id);
27
+ /** 对外暴露给 `list/add` 的 MCP ID 集合。 */
28
+ export const MCP_IDS = MCP_CATALOG.map((mcp) => mcp.id);
29
+ /** 按稳定 ID 读取单个 MCP catalog 项。 */
30
+ export function getMcpCatalogEntry(mcpId) {
31
+ const mcp = MCP_CATALOG.find((item) => item.id === mcpId);
32
+ if (!mcp) {
33
+ throw new Error(`Unknown MCP catalog id: ${mcpId}`);
34
+ }
35
+ return mcp;
36
+ }
37
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/catalog/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,kBAAkB;QAC9B,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,cAAc;KAChC;IACD;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,kBAAkB;QAC9B,SAAS,EAAE,UAAU;QACrB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,cAAc;KAChC;CAC8B,CAAA;AAEjC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,eAAe,GAAY,WAAW,CAAC,MAAM,CACxD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CACrC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAEtB,2BAA2B;AAC3B,MAAM,CAAC,MAAM,gBAAgB,GAAY,WAAW,CAAC,MAAM,CACzD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,UAAU,CACtC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAEtB,oCAAoC;AACpC,MAAM,CAAC,MAAM,OAAO,GAAY,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAEhE,iCAAiC;AACjC,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ToolId } from '../types.js';
2
+ /** 当前仓库支持写入配置的工具清单。 */
3
+ export declare const ALL_TOOLS: ToolId[];
4
+ export declare const projectRoot: string;
5
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/catalog/shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,uBAAuB;AACvB,eAAO,MAAM,SAAS,EAAE,MAAM,EAA6B,CAAA;AAI3D,eAAO,MAAM,WAAW,QAAuC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import path from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ /** 当前仓库支持写入配置的工具清单。 */
4
+ export const ALL_TOOLS = ['codex', 'claude-code'];
5
+ /** 用于从 `src/catalog/*` 稳定回到仓库根目录。 */
6
+ const currentDir = path.dirname(fileURLToPath(import.meta.url));
7
+ export const projectRoot = path.resolve(currentDir, '..', '..');
8
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/catalog/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,uBAAuB;AACvB,MAAM,CAAC,MAAM,SAAS,GAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AAE3D,qCAAqC;AACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { CatalogSkill, SkillId } from '../types.js';
2
+ /** 技能能力清单,包含一个必装本地 skill 和若干远端推荐 skill。 */
3
+ export declare const SKILL_CATALOG: CatalogSkill[];
4
+ /** 初始化阶段始终会安装的 bootstrap skill。 */
5
+ export declare const REQUIRED_SKILL_ID: SkillId;
6
+ /** 推荐模式下默认安装的远端 skill ID 集合。 */
7
+ export declare const DEFAULT_SKILL_IDS: SkillId[];
8
+ /** 可选但非默认安装的远端 skill ID 集合。 */
9
+ export declare const OPTIONAL_SKILL_IDS: SkillId[];
10
+ /** 对外暴露给 `list/add` 的 skill ID 集合,不包含必装 bootstrap skill。 */
11
+ export declare const SKILL_IDS: SkillId[];
12
+ /** 按稳定 ID 读取单个 skill catalog 项。 */
13
+ export declare function getSkillCatalogEntry(skillId: SkillId): CatalogSkill;
14
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/catalog/skills.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAU,MAAM,aAAa,CAAA;AA0ChE,2CAA2C;AAC3C,eAAO,MAAM,aAAa,EAAE,YAAY,EAYL,CAAA;AAEnC,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,EAAE,OAAkC,CAAA;AAElE,gCAAgC;AAChC,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAEb,CAAA;AAE1B,+BAA+B;AAC/B,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAEd,CAAA;AAE1B,4DAA4D;AAC5D,eAAO,MAAM,SAAS,EAAE,OAAO,EAEL,CAAA;AAE1B,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAMnE"}
@@ -0,0 +1,55 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { parseJsonText } from '../utils/json.js';
4
+ import { ALL_TOOLS, projectRoot } from './shared.js';
5
+ /** 从 `templates/skills/remote/catalog.json` 加载远端推荐 skill 清单。 */
6
+ function loadRemoteSkillCatalog() {
7
+ const catalogPath = path.join(projectRoot, 'templates', 'skills', 'remote', 'catalog.json');
8
+ const raw = readFileSync(catalogPath, 'utf8');
9
+ const entries = parseJsonText(raw, catalogPath);
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
+ /** 技能能力清单,包含一个必装本地 skill 和若干远端推荐 skill。 */
26
+ export const SKILL_CATALOG = [
27
+ {
28
+ id: 'bootstrap-project-docs',
29
+ displayName: 'bootstrap-project-docs',
30
+ description: '初始化项目事实文档与工具规则文档的必装 bootstrap skill。',
31
+ sourceType: 'builtin-local',
32
+ selection: 'required',
33
+ detectionMode: 'single',
34
+ supportedTools: ALL_TOOLS,
35
+ templateDir: 'skills/builtin/bootstrap-project-docs',
36
+ },
37
+ ...loadRemoteSkillCatalog(),
38
+ ];
39
+ /** 初始化阶段始终会安装的 bootstrap skill。 */
40
+ export const REQUIRED_SKILL_ID = 'bootstrap-project-docs';
41
+ /** 推荐模式下默认安装的远端 skill ID 集合。 */
42
+ export const DEFAULT_SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.selection === 'default').map((skill) => skill.id);
43
+ /** 可选但非默认安装的远端 skill ID 集合。 */
44
+ export const OPTIONAL_SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.selection === 'optional').map((skill) => skill.id);
45
+ /** 对外暴露给 `list/add` 的 skill ID 集合,不包含必装 bootstrap skill。 */
46
+ export const SKILL_IDS = SKILL_CATALOG.filter((skill) => skill.id !== REQUIRED_SKILL_ID).map((skill) => skill.id);
47
+ /** 按稳定 ID 读取单个 skill catalog 项。 */
48
+ export function getSkillCatalogEntry(skillId) {
49
+ const skill = SKILL_CATALOG.find((item) => item.id === skillId);
50
+ if (!skill) {
51
+ throw new Error(`Unknown skill catalog id: ${skillId}`);
52
+ }
53
+ return skill;
54
+ }
55
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/catalog/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAkBpD,gEAAgE;AAChE,SAAS,sBAAsB;IAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;IAC3F,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,aAAa,CAA6B,GAAG,EAAE,WAAW,CAAC,CAAA;IAE3E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,MAAM,EAAE;YACN,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC;KACF,CAAC,CAAC,CAAA;AACL,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,sCAAsC;QACnD,UAAU,EAAE,eAAe;QAC3B,SAAS,EAAE,UAAU;QACrB,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,uCAAuC;KACrD;IACD,GAAG,sBAAsB,EAAE;CACM,CAAA;AAEnC,mCAAmC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAY,wBAAwB,CAAA;AAElE,gCAAgC;AAChC,MAAM,CAAC,MAAM,iBAAiB,GAAc,aAAa,CAAC,MAAM,CAC9D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CACzC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAE1B,+BAA+B;AAC/B,MAAM,CAAC,MAAM,kBAAkB,GAAc,aAAa,CAAC,MAAM,CAC/D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,UAAU,CAC1C,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAE1B,4DAA4D;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAc,aAAa,CAAC,MAAM,CACtD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAiB,CAC1C,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAE1B,mCAAmC;AACnC,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;IAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CatalogWorkflow, WorkflowId } from '../types.js';
2
+ /** workflow 能力清单,当前只维护独立于 skill 的 OpenSpec 集成。 */
3
+ export declare const WORKFLOW_CATALOG: CatalogWorkflow[];
4
+ /** 对外暴露给 `list/add` 的 workflow ID 集合。 */
5
+ export declare const WORKFLOW_IDS: WorkflowId[];
6
+ /** 按稳定 ID 读取单个 workflow catalog 项。 */
7
+ export declare function getWorkflowCatalogEntry(workflowId: WorkflowId): CatalogWorkflow;
8
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/catalog/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG9D,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,EAAE,eAAe,EAUR,CAAA;AAEtC,yCAAyC;AACzC,eAAO,MAAM,YAAY,EAAE,UAAU,EAAoD,CAAA;AAEzF,sCAAsC;AACtC,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAM/E"}
@@ -0,0 +1,24 @@
1
+ import { ALL_TOOLS } from './shared.js';
2
+ /** workflow 能力清单,当前只维护独立于 skill 的 OpenSpec 集成。 */
3
+ export const WORKFLOW_CATALOG = [
4
+ {
5
+ id: 'openspec',
6
+ displayName: 'OpenSpec',
7
+ description: '独立的 spec-driven workflow 工作流能力,不属于普通 skills 或 MCP。',
8
+ sourceType: 'workflow-integration',
9
+ supportedTools: ALL_TOOLS,
10
+ templateBaseDir: 'workflows/openspec',
11
+ installCommand: 'npx -y @fission-ai/openspec@latest init --tools <tool> --profile core .',
12
+ },
13
+ ];
14
+ /** 对外暴露给 `list/add` 的 workflow ID 集合。 */
15
+ export const WORKFLOW_IDS = WORKFLOW_CATALOG.map((workflow) => workflow.id);
16
+ /** 按稳定 ID 读取单个 workflow catalog 项。 */
17
+ export function getWorkflowCatalogEntry(workflowId) {
18
+ const workflow = WORKFLOW_CATALOG.find((item) => item.id === workflowId);
19
+ if (!workflow) {
20
+ throw new Error(`Unknown workflow catalog id: ${workflowId}`);
21
+ }
22
+ return workflow;
23
+ }
24
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/catalog/workflows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,oDAAoD;QACjE,UAAU,EAAE,sBAAsB;QAClC,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,yEAAyE;KAC1F;CACmC,CAAA;AAEtC,yCAAyC;AACzC,MAAM,CAAC,MAAM,YAAY,GAAiB,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAEzF,sCAAsC;AACtC,MAAM,UAAU,uBAAuB,CAAC,UAAsB;IAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,CAAA;IACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
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 SDT DevAgent assets in an existing project')
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|minimal|custom')
13
- .option('--capabilities <capabilities>', 'Comma-separated capabilities: base-assets,skills,mcp')
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
@@ -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;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KACrE,MAAM,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;KAC3E,MAAM,CAAC,+BAA+B,EAAE,sDAAsD,CAAC;KAC/F,MAAM,CAAC,OAAO,EAAE,0CAA0C,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACxE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACtB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,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":"AA0CA,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,CA2Ff;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAkFf;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA4Ef"}