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

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 (97) hide show
  1. package/README.md +63 -14
  2. package/dist/catalog.d.ts +16 -0
  3. package/dist/catalog.d.ts.map +1 -0
  4. package/dist/catalog.js +98 -0
  5. package/dist/catalog.js.map +1 -0
  6. package/dist/cli/index.js +72 -3
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/commands/add.d.ts +7 -0
  9. package/dist/commands/add.d.ts.map +1 -0
  10. package/dist/commands/add.js +267 -0
  11. package/dist/commands/add.js.map +1 -0
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +31 -5
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/list.d.ts +4 -0
  16. package/dist/commands/list.d.ts.map +1 -0
  17. package/dist/commands/list.js +20 -0
  18. package/dist/commands/list.js.map +1 -0
  19. package/dist/commands/status.d.ts +2 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +66 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/core/capability-discovery.d.ts +23 -0
  24. package/dist/core/capability-discovery.d.ts.map +1 -0
  25. package/dist/core/capability-discovery.js +49 -0
  26. package/dist/core/capability-discovery.js.map +1 -0
  27. package/dist/core/init-options.d.ts +7 -1
  28. package/dist/core/init-options.d.ts.map +1 -1
  29. package/dist/core/init-options.js +64 -35
  30. package/dist/core/init-options.js.map +1 -1
  31. package/dist/core/init-plan.d.ts +25 -1
  32. package/dist/core/init-plan.d.ts.map +1 -1
  33. package/dist/core/init-plan.js +211 -37
  34. package/dist/core/init-plan.js.map +1 -1
  35. package/dist/core/init-writer.d.ts +17 -1
  36. package/dist/core/init-writer.d.ts.map +1 -1
  37. package/dist/core/init-writer.js +72 -19
  38. package/dist/core/init-writer.js.map +1 -1
  39. package/dist/core/manifest.d.ts +8 -0
  40. package/dist/core/manifest.d.ts.map +1 -0
  41. package/dist/core/manifest.js +16 -0
  42. package/dist/core/manifest.js.map +1 -0
  43. package/dist/core/mcp-config.d.ts +12 -0
  44. package/dist/core/mcp-config.d.ts.map +1 -0
  45. package/dist/core/mcp-config.js +60 -0
  46. package/dist/core/mcp-config.js.map +1 -0
  47. package/dist/core/project-inspector.d.ts +1 -0
  48. package/dist/core/project-inspector.d.ts.map +1 -1
  49. package/dist/core/project-inspector.js +4 -0
  50. package/dist/core/project-inspector.js.map +1 -1
  51. package/dist/core/remote-skill-installer.d.ts +16 -0
  52. package/dist/core/remote-skill-installer.d.ts.map +1 -0
  53. package/dist/core/remote-skill-installer.js +104 -0
  54. package/dist/core/remote-skill-installer.js.map +1 -0
  55. package/dist/core/workflow-installer.d.ts +22 -0
  56. package/dist/core/workflow-installer.d.ts.map +1 -0
  57. package/dist/core/workflow-installer.js +103 -0
  58. package/dist/core/workflow-installer.js.map +1 -0
  59. package/dist/types.d.ts +103 -6
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/types.js +10 -2
  62. package/dist/types.js.map +1 -1
  63. package/dist/utils/follow-up-notice.d.ts +7 -0
  64. package/dist/utils/follow-up-notice.d.ts.map +1 -0
  65. package/dist/utils/follow-up-notice.js +29 -0
  66. package/dist/utils/follow-up-notice.js.map +1 -0
  67. package/dist/utils/init-welcome.d.ts.map +1 -1
  68. package/dist/utils/init-welcome.js +20 -33
  69. package/dist/utils/init-welcome.js.map +1 -1
  70. package/dist/utils/mastergo-notice.d.ts +7 -0
  71. package/dist/utils/mastergo-notice.d.ts.map +1 -0
  72. package/dist/utils/mastergo-notice.js +14 -0
  73. package/dist/utils/mastergo-notice.js.map +1 -0
  74. package/dist/utils/terminal-theme.d.ts +4 -0
  75. package/dist/utils/terminal-theme.d.ts.map +1 -0
  76. package/dist/utils/terminal-theme.js +25 -0
  77. package/dist/utils/terminal-theme.js.map +1 -0
  78. package/package.json +6 -3
  79. package/templates/bootstrap/project-entry.md +17 -0
  80. package/templates/mcp/context7/claude-code/server.json +6 -0
  81. package/templates/mcp/context7/codex/config.toml +3 -0
  82. package/templates/mcp/mastergo/claude-code/server.json +6 -0
  83. package/templates/mcp/mastergo/codex/config.toml +4 -0
  84. package/templates/skills/builtin/bootstrap-project-docs/SKILL.md +16 -0
  85. package/templates/skills/builtin/bootstrap-project-docs/references/architecture-first.md +7 -0
  86. package/templates/skills/builtin/bootstrap-project-docs/references/tool-rules-follow-up.md +8 -0
  87. package/templates/skills/remote/catalog.json +68 -0
  88. package/templates/workflows/openspec/README.md +7 -0
  89. package/templates/workflows/openspec/claude-code/README.md +7 -0
  90. package/templates/workflows/openspec/codex/README.md +7 -0
  91. package/templates/AGENTS.md +0 -24
  92. package/templates/ARCHITECTURE.md +0 -26
  93. package/templates/capabilities/mcp/README.md +0 -8
  94. package/templates/capabilities/skills/README.md +0 -8
  95. package/templates/docs/ai-collaboration/README.md +0 -16
  96. package/templates/tools/claude-code/README.md +0 -8
  97. package/templates/tools/codex/README.md +0 -8
package/README.md CHANGED
@@ -1,14 +1,29 @@
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 和安装清单来初始化或增量管理目标项目。
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
 
@@ -36,21 +51,26 @@ sdt-dev-agent init . --yes
36
51
  当前支持:
37
52
 
38
53
  - tools: `codex`, `claude-code`
39
- - install mode: `recommended`, `minimal`, `custom`
40
- - capabilities: `base-assets`, `skills`, `mcp`
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`
41
61
 
42
62
  初始化输出包括:
43
63
 
44
- - `AGENTS.md`
45
- - `ARCHITECTURE.md`
46
- - `docs/ai-collaboration/README.md`
47
- - `.codex/` / `.claude/` 占位文件
64
+ - `.sdt-devagent/bootstrap-project-docs.md`
65
+ - 必装 bootstrap skill:`bootstrap-project-docs`
66
+ - 远端推荐 skills 的项目级安装结果
67
+ - `Context7` / `MasterGo` 的项目级 MCP 配置
48
68
  - `.sdt-devagent/manifest.json`
49
69
 
50
70
  > [!NOTE]
51
- > 当前只支持初始化基座,不包含真实 MCP 接线、真实 Skills 内容或业务闭环。
71
+ > 当前只支持 `Codex` / `Claude Code` 的项目级接入,不包含业务任务编排、PR/发布流或服务端能力。
52
72
  >
53
- > 当前写入策略是严格防覆盖;目标文件已存在时会整体中止,不会自动合并。
73
+ > 重复执行 `init` 时,bootstrap 入口文件和 manifest 会按最新模板直接覆盖;项目级 MCP 会按 server 维度去重合并,远端 skills 只按当前项目去重,项目里没有就安装到项目级。
54
74
 
55
75
  ## Development
56
76
 
@@ -94,13 +114,42 @@ pnpm run verify
94
114
  pnpm run verify
95
115
  ```
96
116
 
97
- 然后按版本类型发布:
117
+ 正式版发布:
98
118
 
99
119
  ```bash
100
- pnpm run release
120
+ pnpm run release # 等价于 pnpm run release:patch
101
121
  pnpm run release:patch
102
122
  pnpm run release:minor
103
123
  pnpm run release:major
104
124
  ```
105
125
 
106
- 发布脚本会依次执行 `build`、`npm publish --dry-run --access public`、`version --no-git-tag-version`、`npm publish --access public`,并发布到 npm 官方 registry。
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
+ 推荐发布分支约定:
141
+
142
+ - `master`:正式版发布分支,默认手动发布,由发布人显式选择 `patch` / `minor` / `major`
143
+ - `develop`:beta 发布分支,默认由流水线自动执行 `pnpm run release:beta -- ${BUILD_NUMBER}`
144
+
145
+ 版本规则:
146
+
147
+ - 正式版由发布人明确选择 `patch` / `minor` / `major`
148
+ - beta 会基于当前稳定版本生成“下一 patch 版本”的 `-beta.<buildId>` 版本号
149
+ - 例如当前版本是 `0.1.2`,则 beta 会发布为 `0.1.3-beta.123`
150
+
151
+ 发布行为:
152
+
153
+ - 正式版发布到 npm `latest`
154
+ - beta 发布到 npm `beta`
155
+ - 发布脚本会先执行 `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"}
@@ -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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAYxC,MAAM,SAAS,GAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;AACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAiBlD,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GAAG,YAAY,CACtB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,EACvE,MAAM,CACP,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA+B,CAAA;IAE7D,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,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,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,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,MAAM,CAAC,MAAM,iBAAiB,GAAY,wBAAwB,CAAA;AAClE,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;AAC1B,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;AAC1B,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;AACtB,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,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;AAC1B,MAAM,CAAC,MAAM,OAAO,GAAY,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,YAAY,GAAiB,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAEzF,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;AAED,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;AAED,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":"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"}
@@ -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;AAc7D,wBAAsB,cAAc,CAClC,UAAU,SAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsBf"}
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"}