@clawplays/ospec-cli 0.1.1

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 (191) hide show
  1. package/.ospec/templates/hooks/post-merge +8 -0
  2. package/.ospec/templates/hooks/pre-commit +8 -0
  3. package/LICENSE +21 -0
  4. package/README.md +549 -0
  5. package/README.zh-CN.md +549 -0
  6. package/assets/for-ai/en-US/ai-guide.md +98 -0
  7. package/assets/for-ai/en-US/execution-protocol.md +64 -0
  8. package/assets/for-ai/zh-CN/ai-guide.md +102 -0
  9. package/assets/for-ai/zh-CN/execution-protocol.md +68 -0
  10. package/assets/git-hooks/post-merge +12 -0
  11. package/assets/git-hooks/pre-commit +12 -0
  12. package/assets/global-skills/claude/ospec-change/SKILL.md +116 -0
  13. package/assets/global-skills/codex/ospec-change/SKILL.md +117 -0
  14. package/assets/global-skills/codex/ospec-change/agents/openai.yaml +7 -0
  15. package/assets/global-skills/codex/ospec-change/skill.yaml +19 -0
  16. package/assets/project-conventions/en-US/development-guide.md +32 -0
  17. package/assets/project-conventions/en-US/naming-conventions.md +51 -0
  18. package/assets/project-conventions/en-US/skill-conventions.md +40 -0
  19. package/assets/project-conventions/en-US/workflow-conventions.md +70 -0
  20. package/assets/project-conventions/zh-CN/development-guide.md +32 -0
  21. package/assets/project-conventions/zh-CN/naming-conventions.md +51 -0
  22. package/assets/project-conventions/zh-CN/skill-conventions.md +40 -0
  23. package/assets/project-conventions/zh-CN/workflow-conventions.md +74 -0
  24. package/dist/adapters/codex-stitch-adapter.js +420 -0
  25. package/dist/adapters/gemini-stitch-adapter.js +408 -0
  26. package/dist/adapters/playwright-checkpoint-adapter.js +2260 -0
  27. package/dist/advanced/BatchOperations.d.ts +36 -0
  28. package/dist/advanced/BatchOperations.js +159 -0
  29. package/dist/advanced/CachingLayer.d.ts +66 -0
  30. package/dist/advanced/CachingLayer.js +136 -0
  31. package/dist/advanced/FeatureUpdater.d.ts +46 -0
  32. package/dist/advanced/FeatureUpdater.js +151 -0
  33. package/dist/advanced/PerformanceMonitor.d.ts +52 -0
  34. package/dist/advanced/PerformanceMonitor.js +129 -0
  35. package/dist/advanced/StatePersistence.d.ts +61 -0
  36. package/dist/advanced/StatePersistence.js +168 -0
  37. package/dist/advanced/index.d.ts +14 -0
  38. package/dist/advanced/index.js +22 -0
  39. package/dist/cli/commands/config.d.ts +5 -0
  40. package/dist/cli/commands/config.js +6 -0
  41. package/dist/cli/commands/feature.d.ts +5 -0
  42. package/dist/cli/commands/feature.js +6 -0
  43. package/dist/cli/commands/index.d.ts +5 -0
  44. package/dist/cli/commands/index.js +6 -0
  45. package/dist/cli/commands/project.d.ts +5 -0
  46. package/dist/cli/commands/project.js +6 -0
  47. package/dist/cli/commands/validate.d.ts +5 -0
  48. package/dist/cli/commands/validate.js +6 -0
  49. package/dist/cli/index.d.ts +5 -0
  50. package/dist/cli/index.js +6 -0
  51. package/dist/cli.d.ts +3 -0
  52. package/dist/cli.js +1007 -0
  53. package/dist/commands/ArchiveCommand.d.ts +14 -0
  54. package/dist/commands/ArchiveCommand.js +241 -0
  55. package/dist/commands/BaseCommand.d.ts +33 -0
  56. package/dist/commands/BaseCommand.js +46 -0
  57. package/dist/commands/BatchCommand.d.ts +5 -0
  58. package/dist/commands/BatchCommand.js +42 -0
  59. package/dist/commands/ChangesCommand.d.ts +3 -0
  60. package/dist/commands/ChangesCommand.js +71 -0
  61. package/dist/commands/DocsCommand.d.ts +5 -0
  62. package/dist/commands/DocsCommand.js +118 -0
  63. package/dist/commands/FinalizeCommand.d.ts +3 -0
  64. package/dist/commands/FinalizeCommand.js +24 -0
  65. package/dist/commands/IndexCommand.d.ts +5 -0
  66. package/dist/commands/IndexCommand.js +57 -0
  67. package/dist/commands/InitCommand.d.ts +5 -0
  68. package/dist/commands/InitCommand.js +65 -0
  69. package/dist/commands/NewCommand.d.ts +11 -0
  70. package/dist/commands/NewCommand.js +262 -0
  71. package/dist/commands/PluginsCommand.d.ts +58 -0
  72. package/dist/commands/PluginsCommand.js +2491 -0
  73. package/dist/commands/ProgressCommand.d.ts +5 -0
  74. package/dist/commands/ProgressCommand.js +103 -0
  75. package/dist/commands/QueueCommand.d.ts +10 -0
  76. package/dist/commands/QueueCommand.js +147 -0
  77. package/dist/commands/RunCommand.d.ts +13 -0
  78. package/dist/commands/RunCommand.js +200 -0
  79. package/dist/commands/SkillCommand.d.ts +31 -0
  80. package/dist/commands/SkillCommand.js +1216 -0
  81. package/dist/commands/SkillsCommand.d.ts +5 -0
  82. package/dist/commands/SkillsCommand.js +68 -0
  83. package/dist/commands/StatusCommand.d.ts +6 -0
  84. package/dist/commands/StatusCommand.js +140 -0
  85. package/dist/commands/UpdateCommand.d.ts +8 -0
  86. package/dist/commands/UpdateCommand.js +251 -0
  87. package/dist/commands/VerifyCommand.d.ts +5 -0
  88. package/dist/commands/VerifyCommand.js +278 -0
  89. package/dist/commands/WorkflowCommand.d.ts +12 -0
  90. package/dist/commands/WorkflowCommand.js +150 -0
  91. package/dist/commands/index.d.ts +43 -0
  92. package/dist/commands/index.js +85 -0
  93. package/dist/core/constants.d.ts +41 -0
  94. package/dist/core/constants.js +73 -0
  95. package/dist/core/errors.d.ts +36 -0
  96. package/dist/core/errors.js +72 -0
  97. package/dist/core/index.d.ts +7 -0
  98. package/dist/core/index.js +23 -0
  99. package/dist/core/types.d.ts +369 -0
  100. package/dist/core/types.js +3 -0
  101. package/dist/index.d.ts +11 -0
  102. package/dist/index.js +27 -0
  103. package/dist/presets/ProjectPresets.d.ts +41 -0
  104. package/dist/presets/ProjectPresets.js +190 -0
  105. package/dist/scaffolds/ProjectScaffoldPresets.d.ts +20 -0
  106. package/dist/scaffolds/ProjectScaffoldPresets.js +151 -0
  107. package/dist/services/ConfigManager.d.ts +14 -0
  108. package/dist/services/ConfigManager.js +386 -0
  109. package/dist/services/FeatureManager.d.ts +5 -0
  110. package/dist/services/FeatureManager.js +6 -0
  111. package/dist/services/FileService.d.ts +21 -0
  112. package/dist/services/FileService.js +152 -0
  113. package/dist/services/IndexBuilder.d.ts +12 -0
  114. package/dist/services/IndexBuilder.js +130 -0
  115. package/dist/services/Logger.d.ts +20 -0
  116. package/dist/services/Logger.js +48 -0
  117. package/dist/services/ProjectAssetRegistry.d.ts +12 -0
  118. package/dist/services/ProjectAssetRegistry.js +96 -0
  119. package/dist/services/ProjectAssetService.d.ts +49 -0
  120. package/dist/services/ProjectAssetService.js +223 -0
  121. package/dist/services/ProjectScaffoldCommandService.d.ts +73 -0
  122. package/dist/services/ProjectScaffoldCommandService.js +159 -0
  123. package/dist/services/ProjectScaffoldService.d.ts +44 -0
  124. package/dist/services/ProjectScaffoldService.js +507 -0
  125. package/dist/services/ProjectService.d.ts +209 -0
  126. package/dist/services/ProjectService.js +13239 -0
  127. package/dist/services/QueueService.d.ts +17 -0
  128. package/dist/services/QueueService.js +142 -0
  129. package/dist/services/RunService.d.ts +40 -0
  130. package/dist/services/RunService.js +420 -0
  131. package/dist/services/SkillParser.d.ts +30 -0
  132. package/dist/services/SkillParser.js +88 -0
  133. package/dist/services/StateManager.d.ts +16 -0
  134. package/dist/services/StateManager.js +127 -0
  135. package/dist/services/TemplateEngine.d.ts +43 -0
  136. package/dist/services/TemplateEngine.js +119 -0
  137. package/dist/services/TemplateGenerator.d.ts +40 -0
  138. package/dist/services/TemplateGenerator.js +273 -0
  139. package/dist/services/ValidationService.d.ts +19 -0
  140. package/dist/services/ValidationService.js +44 -0
  141. package/dist/services/Validator.d.ts +5 -0
  142. package/dist/services/Validator.js +6 -0
  143. package/dist/services/index.d.ts +52 -0
  144. package/dist/services/index.js +91 -0
  145. package/dist/services/templates/ExecutionTemplateBuilder.d.ts +12 -0
  146. package/dist/services/templates/ExecutionTemplateBuilder.js +300 -0
  147. package/dist/services/templates/ProjectTemplateBuilder.d.ts +38 -0
  148. package/dist/services/templates/ProjectTemplateBuilder.js +1897 -0
  149. package/dist/services/templates/TemplateBuilderBase.d.ts +19 -0
  150. package/dist/services/templates/TemplateBuilderBase.js +60 -0
  151. package/dist/services/templates/TemplateInputFactory.d.ts +16 -0
  152. package/dist/services/templates/TemplateInputFactory.js +298 -0
  153. package/dist/services/templates/templateTypes.d.ts +90 -0
  154. package/dist/services/templates/templateTypes.js +3 -0
  155. package/dist/tools/build-index.js +632 -0
  156. package/dist/utils/DateUtils.d.ts +18 -0
  157. package/dist/utils/DateUtils.js +40 -0
  158. package/dist/utils/PathUtils.d.ts +9 -0
  159. package/dist/utils/PathUtils.js +66 -0
  160. package/dist/utils/StringUtils.d.ts +26 -0
  161. package/dist/utils/StringUtils.js +47 -0
  162. package/dist/utils/helpers.d.ts +5 -0
  163. package/dist/utils/helpers.js +6 -0
  164. package/dist/utils/index.d.ts +7 -0
  165. package/dist/utils/index.js +23 -0
  166. package/dist/utils/logger.d.ts +5 -0
  167. package/dist/utils/logger.js +6 -0
  168. package/dist/utils/path.d.ts +5 -0
  169. package/dist/utils/path.js +6 -0
  170. package/dist/utils/subcommandHelp.d.ts +11 -0
  171. package/dist/utils/subcommandHelp.js +119 -0
  172. package/dist/workflow/ArchiveGate.d.ts +30 -0
  173. package/dist/workflow/ArchiveGate.js +93 -0
  174. package/dist/workflow/ConfigurableWorkflow.d.ts +89 -0
  175. package/dist/workflow/ConfigurableWorkflow.js +186 -0
  176. package/dist/workflow/HookSystem.d.ts +38 -0
  177. package/dist/workflow/HookSystem.js +66 -0
  178. package/dist/workflow/IndexRegenerator.d.ts +49 -0
  179. package/dist/workflow/IndexRegenerator.js +147 -0
  180. package/dist/workflow/PluginWorkflowComposer.d.ts +138 -0
  181. package/dist/workflow/PluginWorkflowComposer.js +239 -0
  182. package/dist/workflow/SkillUpdateEngine.d.ts +26 -0
  183. package/dist/workflow/SkillUpdateEngine.js +113 -0
  184. package/dist/workflow/VerificationSystem.d.ts +24 -0
  185. package/dist/workflow/VerificationSystem.js +116 -0
  186. package/dist/workflow/WorkflowEngine.d.ts +15 -0
  187. package/dist/workflow/WorkflowEngine.js +57 -0
  188. package/dist/workflow/index.d.ts +19 -0
  189. package/dist/workflow/index.js +32 -0
  190. package/package.json +78 -0
  191. package/scripts/postinstall.js +43 -0
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProjectPresetFirstChangeSuggestion = exports.inferProjectPresetFromDescription = exports.getLocalizedProjectPresetContent = exports.getProjectPresetById = exports.PROJECT_PRESETS = void 0;
4
+ exports.PROJECT_PRESETS = [
5
+ {
6
+ id: 'official-site',
7
+ name: 'Official Site',
8
+ description: 'Marketing website with docs center, blog or changelog, admin content management, and auth.',
9
+ recommendedMode: 'full',
10
+ recommendedTechStack: ['Next.js', 'TypeScript', 'Tailwind CSS', 'Node.js'],
11
+ architecture: 'Use a web/documentation/content architecture with a dedicated admin surface and shared auth boundaries.',
12
+ modules: ['web', 'docs', 'content', 'admin', 'auth'],
13
+ apiAreas: ['content api', 'auth api', 'admin api'],
14
+ designDocs: ['ui information architecture', 'content model', 'cms workflow'],
15
+ planningDocs: ['delivery plan', 'launch checklist'],
16
+ keywords: ['官网', 'website', 'official site', 'docs', 'documentation', 'blog', 'changelog', 'cms'],
17
+ buildFirstChangeSuggestion: (language, projectName) => language === 'zh-CN'
18
+ ? {
19
+ name: 'launch-official-site-foundation',
20
+ background: `${projectName} 已完成初始框架搭建,下一步需要把官网首页、文档入口、内容流和后台入口串成第一版可演示链路。`,
21
+ goals: [
22
+ '打通首页、文档中心、博客/更新日志、后台入口的主导航',
23
+ '沉淀官网内容模块与后台内容流的第一版边界',
24
+ '让首个 change 明确承接官网 MVP 的实现路径',
25
+ ],
26
+ inScope: ['web', 'docs', 'content', 'admin', 'auth'],
27
+ outOfScope: ['复杂权限模型', '正式 CMS 实现', '多语言内容系统'],
28
+ acceptanceCriteria: [
29
+ '首页可导航到 docs、blog、admin、login',
30
+ 'docs/blog/admin 页面具备清晰的占位结构与模块说明',
31
+ 'proposal/tasks/verification 明确覆盖官网 MVP 范围',
32
+ ],
33
+ affects: ['web', 'docs', 'content', 'admin', 'auth'],
34
+ flags: ['multi_file_change'],
35
+ }
36
+ : {
37
+ name: 'launch-official-site-foundation',
38
+ background: `${projectName} has the initial scaffold in place. The next change should connect the homepage, docs entry, content flow, and admin entry into the first demonstrable vertical slice.`,
39
+ goals: [
40
+ 'Connect homepage navigation across home, docs, blog, admin, and login',
41
+ 'Define the first content and admin workflow boundaries for the official site',
42
+ 'Turn the first change into a concrete MVP delivery slice',
43
+ ],
44
+ inScope: ['web', 'docs', 'content', 'admin', 'auth'],
45
+ outOfScope: ['advanced RBAC', 'production CMS integration', 'full multilingual content system'],
46
+ acceptanceCriteria: [
47
+ 'Homepage navigation reaches docs, blog, admin, and login',
48
+ 'docs/blog/admin pages expose clear placeholder structures and module intent',
49
+ 'proposal/tasks/verification cover the official-site MVP slice',
50
+ ],
51
+ affects: ['web', 'docs', 'content', 'admin', 'auth'],
52
+ flags: ['multi_file_change'],
53
+ },
54
+ },
55
+ {
56
+ id: 'nextjs-web',
57
+ name: 'Next.js Web App',
58
+ description: 'General-purpose Next.js web product with web, account, and API surfaces.',
59
+ recommendedMode: 'standard',
60
+ recommendedTechStack: ['Next.js', 'TypeScript', 'Tailwind CSS', 'Node.js'],
61
+ architecture: 'Use a web-first architecture with shared auth/account boundaries and clear API ownership.',
62
+ modules: ['web', 'account', 'auth', 'api'],
63
+ apiAreas: ['auth api', 'user api'],
64
+ designDocs: ['ui information architecture', 'system architecture'],
65
+ planningDocs: ['delivery plan'],
66
+ keywords: ['next.js', 'nextjs', 'react', 'web app', 'web', 'portal'],
67
+ buildFirstChangeSuggestion: (language, projectName) => language === 'zh-CN'
68
+ ? {
69
+ name: 'establish-web-app-shell',
70
+ background: `${projectName} 已初始化基础 Web App 骨架,下一步需要把首页、账户、登录与基础 API 入口连成第一版产品骨架。`,
71
+ goals: [
72
+ '打通首页、账户页与登录页的基础导航',
73
+ '明确 auth api / user api 的第一版职责边界',
74
+ '让首个 change 形成可持续迭代的产品外壳',
75
+ ],
76
+ inScope: ['web', 'account', 'auth', 'api'],
77
+ outOfScope: ['支付流程', '复杂后台模块', '完整通知系统'],
78
+ acceptanceCriteria: [
79
+ '首页、账户页、登录页导航可达',
80
+ 'auth api 与 user api 文档已能支撑首轮实现',
81
+ '首个 change 文档明确产品骨架的交付范围',
82
+ ],
83
+ affects: ['web', 'account', 'auth', 'api'],
84
+ flags: ['multi_file_change'],
85
+ }
86
+ : {
87
+ name: 'establish-web-app-shell',
88
+ background: `${projectName} now has the base web-app scaffold. The next change should connect the homepage, account surface, login flow, and base API surface into the first product shell.`,
89
+ goals: [
90
+ 'Connect navigation across home, account, and login',
91
+ 'Define the first auth api and user api ownership boundaries',
92
+ 'Turn the first change into a maintainable product shell milestone',
93
+ ],
94
+ inScope: ['web', 'account', 'auth', 'api'],
95
+ outOfScope: ['payments', 'complex admin modules', 'full notification systems'],
96
+ acceptanceCriteria: [
97
+ 'Home, account, and login surfaces are navigable',
98
+ 'auth api and user api docs are sufficient for the first implementation slice',
99
+ 'The first change documents clearly scope the initial product shell',
100
+ ],
101
+ affects: ['web', 'account', 'auth', 'api'],
102
+ flags: ['multi_file_change'],
103
+ },
104
+ },
105
+ ];
106
+ const getProjectPresetById = (presetId) => exports.PROJECT_PRESETS.find(preset => preset.id === presetId);
107
+ exports.getProjectPresetById = getProjectPresetById;
108
+ const getLocalizedProjectPresetContent = (presetId, language) => {
109
+ if (!presetId) {
110
+ return null;
111
+ }
112
+ if (presetId === 'official-site') {
113
+ return language === 'zh-CN'
114
+ ? {
115
+ name: '官网站点',
116
+ description: '用于官网展示、文档中心、博客/更新日志、后台内容管理与鉴权的一体化官网项目。',
117
+ architecture: '采用 web / docs / content 分层,并提供独立 admin 面与共享 auth 边界。',
118
+ designDocs: ['界面信息架构', '内容模型', 'CMS 工作流'],
119
+ planningDocs: ['交付计划', '上线检查清单'],
120
+ }
121
+ : {
122
+ name: 'Official Site',
123
+ description: 'Marketing website with docs center, blog or changelog, admin content management, and auth.',
124
+ architecture: 'Use a web/documentation/content architecture with a dedicated admin surface and shared auth boundaries.',
125
+ designDocs: ['ui information architecture', 'content model', 'cms workflow'],
126
+ planningDocs: ['delivery plan', 'launch checklist'],
127
+ };
128
+ }
129
+ if (presetId === 'nextjs-web') {
130
+ return language === 'zh-CN'
131
+ ? {
132
+ name: 'Next.js Web 应用',
133
+ description: '适用于标准 Web 产品的 Next.js 项目骨架,内置 web、account、auth 与 API 边界。',
134
+ architecture: '采用以 web 为中心的架构,并保持 account / auth / api 的清晰职责边界。',
135
+ designDocs: ['界面信息架构', '系统架构'],
136
+ planningDocs: ['交付计划'],
137
+ }
138
+ : {
139
+ name: 'Next.js Web App',
140
+ description: 'General-purpose Next.js web product with web, account, and API surfaces.',
141
+ architecture: 'Use a web-first architecture with shared auth/account boundaries and clear API ownership.',
142
+ designDocs: ['ui information architecture', 'system architecture'],
143
+ planningDocs: ['delivery plan'],
144
+ };
145
+ }
146
+ return null;
147
+ };
148
+ exports.getLocalizedProjectPresetContent = getLocalizedProjectPresetContent;
149
+ const inferProjectPresetFromDescription = (description) => {
150
+ const normalized = description.toLowerCase();
151
+ const scores = exports.PROJECT_PRESETS.map(preset => {
152
+ const matchedKeywords = preset.keywords.filter(keyword => normalized.includes(keyword.toLowerCase()));
153
+ const weightedScore = matchedKeywords.reduce((score, keyword) => {
154
+ const normalizedKeyword = keyword.toLowerCase();
155
+ if (['官网', 'official site', 'website', 'docs', 'documentation', 'blog', 'changelog', 'cms'].includes(normalizedKeyword)) {
156
+ return score + 3;
157
+ }
158
+ if (['next.js', 'nextjs', 'react', 'web app', 'portal'].includes(normalizedKeyword)) {
159
+ return score + 2;
160
+ }
161
+ return score + 1;
162
+ }, 0);
163
+ return {
164
+ preset,
165
+ weightedScore,
166
+ matchedKeywordCount: matchedKeywords.length,
167
+ };
168
+ })
169
+ .filter(item => item.matchedKeywordCount > 0)
170
+ .sort((left, right) => {
171
+ if (right.weightedScore !== left.weightedScore) {
172
+ return right.weightedScore - left.weightedScore;
173
+ }
174
+ if (right.matchedKeywordCount !== left.matchedKeywordCount) {
175
+ return right.matchedKeywordCount - left.matchedKeywordCount;
176
+ }
177
+ return 0;
178
+ });
179
+ return scores[0]?.preset;
180
+ };
181
+ exports.inferProjectPresetFromDescription = inferProjectPresetFromDescription;
182
+ const getProjectPresetFirstChangeSuggestion = (presetId, language, projectName) => {
183
+ const preset = (0, exports.getProjectPresetById)(presetId);
184
+ if (!preset) {
185
+ return null;
186
+ }
187
+ return preset.buildFirstChangeSuggestion(language, projectName);
188
+ };
189
+ exports.getProjectPresetFirstChangeSuggestion = getProjectPresetFirstChangeSuggestion;
190
+ //# sourceMappingURL=ProjectPresets.js.map
@@ -0,0 +1,20 @@
1
+ import { ProjectPresetDocumentLanguage, ProjectPresetId } from '../presets/ProjectPresets';
2
+ export interface ProjectScaffoldFileDefinition {
3
+ path: string;
4
+ category: 'config' | 'app' | 'library' | 'static';
5
+ purpose: string;
6
+ }
7
+ export interface ProjectScaffoldDefinition {
8
+ presetId: ProjectPresetId;
9
+ title: string;
10
+ description: string;
11
+ framework: string;
12
+ installCommand: string;
13
+ directories: string[];
14
+ files: ProjectScaffoldFileDefinition[];
15
+ }
16
+ export declare const PROJECT_SCAFFOLD_PRESETS: ProjectScaffoldDefinition[];
17
+ export declare const getProjectScaffoldPreset: (presetId?: ProjectPresetId | null) => ProjectScaffoldDefinition | undefined;
18
+ export declare const getLocalizedProjectScaffoldMeta: (presetId: ProjectPresetId, language: ProjectPresetDocumentLanguage) => Pick<ProjectScaffoldDefinition, "title" | "description" | "framework" | "installCommand">;
19
+ export declare const getLocalizedProjectScaffoldPurpose: (filePath: string, language: ProjectPresetDocumentLanguage) => string;
20
+ //# sourceMappingURL=ProjectScaffoldPresets.d.ts.map
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLocalizedProjectScaffoldPurpose = exports.getLocalizedProjectScaffoldMeta = exports.getProjectScaffoldPreset = exports.PROJECT_SCAFFOLD_PRESETS = void 0;
4
+ exports.PROJECT_SCAFFOLD_PRESETS = [
5
+ {
6
+ presetId: 'official-site',
7
+ title: 'Official Site Scaffold',
8
+ description: 'Bootstrap a Next.js App Router website with docs, blog, admin, auth, and shared content services.',
9
+ framework: 'Next.js + TypeScript + Tailwind CSS',
10
+ installCommand: 'npm install && npm run dev',
11
+ directories: [
12
+ 'app',
13
+ 'app/api',
14
+ 'app/api/health',
15
+ 'app/admin',
16
+ 'app/blog',
17
+ 'app/docs',
18
+ 'app/login',
19
+ 'public',
20
+ 'src',
21
+ 'src/components',
22
+ 'src/lib',
23
+ 'src/lib/auth',
24
+ 'src/lib/content',
25
+ ],
26
+ files: [
27
+ { path: '.gitignore', category: 'config', purpose: 'Ignore Next.js build and dependency outputs.' },
28
+ { path: 'package.json', category: 'config', purpose: 'Define Next.js runtime and development dependencies.' },
29
+ { path: 'tsconfig.json', category: 'config', purpose: 'Provide TypeScript compiler settings for the app.' },
30
+ { path: 'next-env.d.ts', category: 'config', purpose: 'Expose Next.js ambient types.' },
31
+ { path: 'next.config.mjs', category: 'config', purpose: 'Enable strict Next.js runtime defaults.' },
32
+ { path: 'postcss.config.js', category: 'config', purpose: 'Wire Tailwind CSS into PostCSS.' },
33
+ { path: 'tailwind.config.ts', category: 'config', purpose: 'Scan app and src files for Tailwind classes.' },
34
+ { path: 'app/globals.css', category: 'app', purpose: 'Define shared visual tokens and page-level styling.' },
35
+ { path: 'app/layout.tsx', category: 'app', purpose: 'Provide the global shell and metadata.' },
36
+ { path: 'app/page.tsx', category: 'app', purpose: 'Render the marketing homepage.' },
37
+ { path: 'app/docs/page.tsx', category: 'app', purpose: 'Render the docs landing page.' },
38
+ { path: 'app/blog/page.tsx', category: 'app', purpose: 'Render the changelog and blog surface.' },
39
+ { path: 'app/admin/page.tsx', category: 'app', purpose: 'Render the CMS/admin entry surface.' },
40
+ { path: 'app/login/page.tsx', category: 'app', purpose: 'Render the auth/login entry surface.' },
41
+ { path: 'app/api/health/route.ts', category: 'app', purpose: 'Expose a basic health endpoint.' },
42
+ { path: 'src/components/site-shell.tsx', category: 'library', purpose: 'Provide the shared navigation shell.' },
43
+ { path: 'src/components/home-hero.tsx', category: 'library', purpose: 'Render the homepage hero section.' },
44
+ { path: 'src/lib/content/navigation.ts', category: 'library', purpose: 'Define shared navigation and content entry points.' },
45
+ { path: 'src/lib/auth/session.ts', category: 'library', purpose: 'Stub the auth session boundary for future implementation.' },
46
+ ],
47
+ },
48
+ {
49
+ presetId: 'nextjs-web',
50
+ title: 'Next.js Web App Scaffold',
51
+ description: 'Bootstrap a standard Next.js application with account, auth, and API surfaces.',
52
+ framework: 'Next.js + TypeScript + Tailwind CSS',
53
+ installCommand: 'npm install && npm run dev',
54
+ directories: [
55
+ 'app',
56
+ 'app/account',
57
+ 'app/api',
58
+ 'app/api/health',
59
+ 'app/login',
60
+ 'public',
61
+ 'src',
62
+ 'src/components',
63
+ 'src/lib',
64
+ 'src/lib/auth',
65
+ 'src/lib/navigation',
66
+ ],
67
+ files: [
68
+ { path: '.gitignore', category: 'config', purpose: 'Ignore Next.js build and dependency outputs.' },
69
+ { path: 'package.json', category: 'config', purpose: 'Define Next.js runtime and development dependencies.' },
70
+ { path: 'tsconfig.json', category: 'config', purpose: 'Provide TypeScript compiler settings for the app.' },
71
+ { path: 'next-env.d.ts', category: 'config', purpose: 'Expose Next.js ambient types.' },
72
+ { path: 'next.config.mjs', category: 'config', purpose: 'Enable strict Next.js runtime defaults.' },
73
+ { path: 'postcss.config.js', category: 'config', purpose: 'Wire Tailwind CSS into PostCSS.' },
74
+ { path: 'tailwind.config.ts', category: 'config', purpose: 'Scan app and src files for Tailwind classes.' },
75
+ { path: 'app/globals.css', category: 'app', purpose: 'Define shared visual tokens and page-level styling.' },
76
+ { path: 'app/layout.tsx', category: 'app', purpose: 'Provide the global shell and metadata.' },
77
+ { path: 'app/page.tsx', category: 'app', purpose: 'Render the primary product homepage.' },
78
+ { path: 'app/account/page.tsx', category: 'app', purpose: 'Render the account surface.' },
79
+ { path: 'app/login/page.tsx', category: 'app', purpose: 'Render the auth/login entry surface.' },
80
+ { path: 'app/api/health/route.ts', category: 'app', purpose: 'Expose a basic health endpoint.' },
81
+ { path: 'src/components/site-shell.tsx', category: 'library', purpose: 'Provide the shared navigation shell.' },
82
+ { path: 'src/lib/navigation/primary-nav.ts', category: 'library', purpose: 'Define app navigation entry points.' },
83
+ { path: 'src/lib/auth/session.ts', category: 'library', purpose: 'Stub the auth session boundary for future implementation.' },
84
+ ],
85
+ },
86
+ ];
87
+ const getProjectScaffoldPreset = (presetId) => exports.PROJECT_SCAFFOLD_PRESETS.find(preset => preset.presetId === presetId);
88
+ exports.getProjectScaffoldPreset = getProjectScaffoldPreset;
89
+ const getLocalizedProjectScaffoldMeta = (presetId, language) => {
90
+ if (presetId === 'official-site') {
91
+ return language === 'zh-CN'
92
+ ? {
93
+ title: '官网站点脚手架',
94
+ description: '初始化一个包含 docs、blog、admin、auth 与共享内容服务的 Next.js App Router 官网骨架。',
95
+ framework: 'Next.js + TypeScript + Tailwind CSS',
96
+ installCommand: 'npm install && npm run dev',
97
+ }
98
+ : {
99
+ title: 'Official Site Scaffold',
100
+ description: 'Bootstrap a Next.js App Router website with docs, blog, admin, auth, and shared content services.',
101
+ framework: 'Next.js + TypeScript + Tailwind CSS',
102
+ installCommand: 'npm install && npm run dev',
103
+ };
104
+ }
105
+ return language === 'zh-CN'
106
+ ? {
107
+ title: 'Next.js Web 应用脚手架',
108
+ description: '初始化一个包含 account、auth 与 API 边界的标准 Next.js Web 应用骨架。',
109
+ framework: 'Next.js + TypeScript + Tailwind CSS',
110
+ installCommand: 'npm install && npm run dev',
111
+ }
112
+ : {
113
+ title: 'Next.js Web App Scaffold',
114
+ description: 'Bootstrap a standard Next.js application with account, auth, and API surfaces.',
115
+ framework: 'Next.js + TypeScript + Tailwind CSS',
116
+ installCommand: 'npm install && npm run dev',
117
+ };
118
+ };
119
+ exports.getLocalizedProjectScaffoldMeta = getLocalizedProjectScaffoldMeta;
120
+ const getLocalizedProjectScaffoldPurpose = (filePath, language) => {
121
+ if (language !== 'zh-CN') {
122
+ const matchedPreset = exports.PROJECT_SCAFFOLD_PRESETS.find(preset => preset.files.some(file => file.path === filePath));
123
+ return matchedPreset?.files.find(file => file.path === filePath)?.purpose || '';
124
+ }
125
+ const zhPurposes = {
126
+ '.gitignore': '忽略 Next.js 构建产物与依赖目录。',
127
+ 'package.json': '定义 Next.js 运行时与开发依赖。',
128
+ 'tsconfig.json': '提供应用的 TypeScript 编译配置。',
129
+ 'next-env.d.ts': '暴露 Next.js 环境类型定义。',
130
+ 'next.config.mjs': '启用默认的 Next.js 严格运行配置。',
131
+ 'postcss.config.js': '把 Tailwind CSS 接入 PostCSS。',
132
+ 'tailwind.config.ts': '扫描 app 与 src 中的 Tailwind 类名。',
133
+ 'app/globals.css': '定义共享视觉变量与页面级样式。',
134
+ 'app/layout.tsx': '提供全局页面壳与元数据。',
135
+ 'app/page.tsx': '渲染首页或主站入口页面。',
136
+ 'app/docs/page.tsx': '渲染文档中心入口页面。',
137
+ 'app/blog/page.tsx': '渲染博客与更新日志入口页面。',
138
+ 'app/admin/page.tsx': '渲染 CMS 与后台入口页面。',
139
+ 'app/login/page.tsx': '渲染登录与鉴权入口页面。',
140
+ 'app/account/page.tsx': '渲染账户中心入口页面。',
141
+ 'app/api/health/route.ts': '提供基础健康检查接口。',
142
+ 'src/components/site-shell.tsx': '提供共享的站点导航壳。',
143
+ 'src/components/home-hero.tsx': '渲染首页英雄区块。',
144
+ 'src/lib/content/navigation.ts': '定义共享导航与内容入口。',
145
+ 'src/lib/navigation/primary-nav.ts': '定义应用导航入口。',
146
+ 'src/lib/auth/session.ts': '预留后续鉴权会话边界实现。',
147
+ };
148
+ return zhPurposes[filePath] || '';
149
+ };
150
+ exports.getLocalizedProjectScaffoldPurpose = getLocalizedProjectScaffoldPurpose;
151
+ //# sourceMappingURL=ProjectScaffoldPresets.js.map
@@ -0,0 +1,14 @@
1
+ import { ProjectMode, SkillrcConfig } from '../core/types';
2
+ import { FileService } from './FileService';
3
+ export declare class ConfigManager {
4
+ private fileService;
5
+ constructor(fileService: FileService);
6
+ loadConfig(rootDir: string): Promise<SkillrcConfig>;
7
+ saveConfig(rootDir: string, config: SkillrcConfig): Promise<void>;
8
+ getMode(rootDir: string): Promise<ProjectMode>;
9
+ isInitialized(rootDir: string): Promise<boolean>;
10
+ createDefaultConfig(mode?: ProjectMode): Promise<SkillrcConfig>;
11
+ private normalizeConfig;
12
+ }
13
+ export declare function createConfigManager(fileService: FileService): ConfigManager;
14
+ //# sourceMappingURL=ConfigManager.d.ts.map