cmp-standards 2.0.0

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 (238) hide show
  1. package/README.md +541 -0
  2. package/dist/analytics/index.d.ts +5 -0
  3. package/dist/analytics/index.d.ts.map +1 -0
  4. package/dist/analytics/index.js +5 -0
  5. package/dist/analytics/index.js.map +1 -0
  6. package/dist/analytics/tracker.d.ts +107 -0
  7. package/dist/analytics/tracker.d.ts.map +1 -0
  8. package/dist/analytics/tracker.js +333 -0
  9. package/dist/analytics/tracker.js.map +1 -0
  10. package/dist/auto-improve/eslint-generator.d.ts +36 -0
  11. package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
  12. package/dist/auto-improve/eslint-generator.js +280 -0
  13. package/dist/auto-improve/eslint-generator.js.map +1 -0
  14. package/dist/auto-improve/index.d.ts +6 -0
  15. package/dist/auto-improve/index.d.ts.map +1 -0
  16. package/dist/auto-improve/index.js +6 -0
  17. package/dist/auto-improve/index.js.map +1 -0
  18. package/dist/auto-improve/pattern-detector.d.ts +92 -0
  19. package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
  20. package/dist/auto-improve/pattern-detector.js +231 -0
  21. package/dist/auto-improve/pattern-detector.js.map +1 -0
  22. package/dist/cli/index.d.ts +18 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +769 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/dashboard/index.d.ts +6 -0
  27. package/dist/dashboard/index.d.ts.map +1 -0
  28. package/dist/dashboard/index.js +6 -0
  29. package/dist/dashboard/index.js.map +1 -0
  30. package/dist/dashboard/server.d.ts +15 -0
  31. package/dist/dashboard/server.d.ts.map +1 -0
  32. package/dist/dashboard/server.js +373 -0
  33. package/dist/dashboard/server.js.map +1 -0
  34. package/dist/dashboard/ui.d.ts +9 -0
  35. package/dist/dashboard/ui.d.ts.map +1 -0
  36. package/dist/dashboard/ui.js +530 -0
  37. package/dist/dashboard/ui.js.map +1 -0
  38. package/dist/db/client.d.ts +66 -0
  39. package/dist/db/client.d.ts.map +1 -0
  40. package/dist/db/client.js +159 -0
  41. package/dist/db/client.js.map +1 -0
  42. package/dist/db/drizzle-client.d.ts +302 -0
  43. package/dist/db/drizzle-client.d.ts.map +1 -0
  44. package/dist/db/drizzle-client.js +404 -0
  45. package/dist/db/drizzle-client.js.map +1 -0
  46. package/dist/db/index.d.ts +5 -0
  47. package/dist/db/index.d.ts.map +1 -0
  48. package/dist/db/index.js +5 -0
  49. package/dist/db/index.js.map +1 -0
  50. package/dist/eslint/config-builder.d.ts +45 -0
  51. package/dist/eslint/config-builder.d.ts.map +1 -0
  52. package/dist/eslint/config-builder.js +128 -0
  53. package/dist/eslint/config-builder.js.map +1 -0
  54. package/dist/eslint/index.d.ts +161 -0
  55. package/dist/eslint/index.d.ts.map +1 -0
  56. package/dist/eslint/index.js +106 -0
  57. package/dist/eslint/index.js.map +1 -0
  58. package/dist/eslint/rules/consistent-error-handling.d.ts +9 -0
  59. package/dist/eslint/rules/consistent-error-handling.d.ts.map +1 -0
  60. package/dist/eslint/rules/consistent-error-handling.js +52 -0
  61. package/dist/eslint/rules/consistent-error-handling.js.map +1 -0
  62. package/dist/eslint/rules/finance-ledger-sync.d.ts +12 -0
  63. package/dist/eslint/rules/finance-ledger-sync.d.ts.map +1 -0
  64. package/dist/eslint/rules/finance-ledger-sync.js +72 -0
  65. package/dist/eslint/rules/finance-ledger-sync.js.map +1 -0
  66. package/dist/eslint/rules/no-async-useeffect.d.ts +10 -0
  67. package/dist/eslint/rules/no-async-useeffect.d.ts.map +1 -0
  68. package/dist/eslint/rules/no-async-useeffect.js +49 -0
  69. package/dist/eslint/rules/no-async-useeffect.js.map +1 -0
  70. package/dist/eslint/rules/no-await-in-loop.d.ts +10 -0
  71. package/dist/eslint/rules/no-await-in-loop.d.ts.map +1 -0
  72. package/dist/eslint/rules/no-await-in-loop.js +51 -0
  73. package/dist/eslint/rules/no-await-in-loop.js.map +1 -0
  74. package/dist/eslint/rules/no-inline-functions-in-jsx.d.ts +10 -0
  75. package/dist/eslint/rules/no-inline-functions-in-jsx.d.ts.map +1 -0
  76. package/dist/eslint/rules/no-inline-functions-in-jsx.js +45 -0
  77. package/dist/eslint/rules/no-inline-functions-in-jsx.js.map +1 -0
  78. package/dist/eslint/rules/no-raw-sql.d.ts +19 -0
  79. package/dist/eslint/rules/no-raw-sql.d.ts.map +1 -0
  80. package/dist/eslint/rules/no-raw-sql.js +136 -0
  81. package/dist/eslint/rules/no-raw-sql.js.map +1 -0
  82. package/dist/eslint/rules/no-sequential-api-calls.d.ts +10 -0
  83. package/dist/eslint/rules/no-sequential-api-calls.d.ts.map +1 -0
  84. package/dist/eslint/rules/no-sequential-api-calls.js +72 -0
  85. package/dist/eslint/rules/no-sequential-api-calls.js.map +1 -0
  86. package/dist/eslint/rules/prefer-server-components.d.ts +10 -0
  87. package/dist/eslint/rules/prefer-server-components.d.ts.map +1 -0
  88. package/dist/eslint/rules/prefer-server-components.js +76 -0
  89. package/dist/eslint/rules/prefer-server-components.js.map +1 -0
  90. package/dist/eslint/rules/require-loading-states.d.ts +9 -0
  91. package/dist/eslint/rules/require-loading-states.d.ts.map +1 -0
  92. package/dist/eslint/rules/require-loading-states.js +85 -0
  93. package/dist/eslint/rules/require-loading-states.js.map +1 -0
  94. package/dist/eslint/rules/require-zod-validation.d.ts +10 -0
  95. package/dist/eslint/rules/require-zod-validation.d.ts.map +1 -0
  96. package/dist/eslint/rules/require-zod-validation.js +70 -0
  97. package/dist/eslint/rules/require-zod-validation.js.map +1 -0
  98. package/dist/eslint/rules/semantic-tokens-only.d.ts +10 -0
  99. package/dist/eslint/rules/semantic-tokens-only.d.ts.map +1 -0
  100. package/dist/eslint/rules/semantic-tokens-only.js +62 -0
  101. package/dist/eslint/rules/semantic-tokens-only.js.map +1 -0
  102. package/dist/feedback/collector.d.ts +74 -0
  103. package/dist/feedback/collector.d.ts.map +1 -0
  104. package/dist/feedback/collector.js +231 -0
  105. package/dist/feedback/collector.js.map +1 -0
  106. package/dist/feedback/index.d.ts +5 -0
  107. package/dist/feedback/index.d.ts.map +1 -0
  108. package/dist/feedback/index.js +5 -0
  109. package/dist/feedback/index.js.map +1 -0
  110. package/dist/hooks/index.d.ts +8 -0
  111. package/dist/hooks/index.d.ts.map +1 -0
  112. package/dist/hooks/index.js +8 -0
  113. package/dist/hooks/index.js.map +1 -0
  114. package/dist/hooks/memory-checkpoint.d.ts +43 -0
  115. package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
  116. package/dist/hooks/memory-checkpoint.js +257 -0
  117. package/dist/hooks/memory-checkpoint.js.map +1 -0
  118. package/dist/hooks/post-tool-use.d.ts +61 -0
  119. package/dist/hooks/post-tool-use.d.ts.map +1 -0
  120. package/dist/hooks/post-tool-use.js +262 -0
  121. package/dist/hooks/post-tool-use.js.map +1 -0
  122. package/dist/hooks/pre-tool-use.d.ts +34 -0
  123. package/dist/hooks/pre-tool-use.d.ts.map +1 -0
  124. package/dist/hooks/pre-tool-use.js +358 -0
  125. package/dist/hooks/pre-tool-use.js.map +1 -0
  126. package/dist/hooks/session-start.d.ts +38 -0
  127. package/dist/hooks/session-start.d.ts.map +1 -0
  128. package/dist/hooks/session-start.js +274 -0
  129. package/dist/hooks/session-start.js.map +1 -0
  130. package/dist/index.d.ts +29 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +39 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/mcp/index.d.ts +5 -0
  135. package/dist/mcp/index.d.ts.map +1 -0
  136. package/dist/mcp/index.js +5 -0
  137. package/dist/mcp/index.js.map +1 -0
  138. package/dist/mcp/server.d.ts +42 -0
  139. package/dist/mcp/server.d.ts.map +1 -0
  140. package/dist/mcp/server.js +599 -0
  141. package/dist/mcp/server.js.map +1 -0
  142. package/dist/registry/embeddings.d.ts +38 -0
  143. package/dist/registry/embeddings.d.ts.map +1 -0
  144. package/dist/registry/embeddings.js +110 -0
  145. package/dist/registry/embeddings.js.map +1 -0
  146. package/dist/registry/generator.d.ts +41 -0
  147. package/dist/registry/generator.d.ts.map +1 -0
  148. package/dist/registry/generator.js +323 -0
  149. package/dist/registry/generator.js.map +1 -0
  150. package/dist/registry/index.d.ts +6 -0
  151. package/dist/registry/index.d.ts.map +1 -0
  152. package/dist/registry/index.js +6 -0
  153. package/dist/registry/index.js.map +1 -0
  154. package/dist/services/IdeaCollector.d.ts +103 -0
  155. package/dist/services/IdeaCollector.d.ts.map +1 -0
  156. package/dist/services/IdeaCollector.js +371 -0
  157. package/dist/services/IdeaCollector.js.map +1 -0
  158. package/dist/services/ProjectScaffold.d.ts +76 -0
  159. package/dist/services/ProjectScaffold.d.ts.map +1 -0
  160. package/dist/services/ProjectScaffold.js +479 -0
  161. package/dist/services/ProjectScaffold.js.map +1 -0
  162. package/dist/services/ProjectScanner.d.ts +81 -0
  163. package/dist/services/ProjectScanner.d.ts.map +1 -0
  164. package/dist/services/ProjectScanner.js +349 -0
  165. package/dist/services/ProjectScanner.js.map +1 -0
  166. package/dist/services/TaskTracker.d.ts +89 -0
  167. package/dist/services/TaskTracker.d.ts.map +1 -0
  168. package/dist/services/TaskTracker.js +324 -0
  169. package/dist/services/TaskTracker.js.map +1 -0
  170. package/dist/services/WorkPlanManager.d.ts +107 -0
  171. package/dist/services/WorkPlanManager.d.ts.map +1 -0
  172. package/dist/services/WorkPlanManager.js +440 -0
  173. package/dist/services/WorkPlanManager.js.map +1 -0
  174. package/dist/services/auto-inject.d.ts +77 -0
  175. package/dist/services/auto-inject.d.ts.map +1 -0
  176. package/dist/services/auto-inject.js +289 -0
  177. package/dist/services/auto-inject.js.map +1 -0
  178. package/dist/services/auto-tag.d.ts +61 -0
  179. package/dist/services/auto-tag.d.ts.map +1 -0
  180. package/dist/services/auto-tag.js +203 -0
  181. package/dist/services/auto-tag.js.map +1 -0
  182. package/dist/services/cross-project-sync.d.ts +76 -0
  183. package/dist/services/cross-project-sync.d.ts.map +1 -0
  184. package/dist/services/cross-project-sync.js +235 -0
  185. package/dist/services/cross-project-sync.js.map +1 -0
  186. package/dist/services/index.d.ts +17 -0
  187. package/dist/services/index.d.ts.map +1 -0
  188. package/dist/services/index.js +23 -0
  189. package/dist/services/index.js.map +1 -0
  190. package/dist/services/memory-consolidation.d.ts +77 -0
  191. package/dist/services/memory-consolidation.d.ts.map +1 -0
  192. package/dist/services/memory-consolidation.js +298 -0
  193. package/dist/services/memory-consolidation.js.map +1 -0
  194. package/dist/services/semantic-search.d.ts +93 -0
  195. package/dist/services/semantic-search.d.ts.map +1 -0
  196. package/dist/services/semantic-search.js +278 -0
  197. package/dist/services/semantic-search.js.map +1 -0
  198. package/dist/services/weekly-digest.d.ts +105 -0
  199. package/dist/services/weekly-digest.d.ts.map +1 -0
  200. package/dist/services/weekly-digest.js +292 -0
  201. package/dist/services/weekly-digest.js.map +1 -0
  202. package/dist/types/index.d.ts +274 -0
  203. package/dist/types/index.d.ts.map +1 -0
  204. package/dist/types/index.js +84 -0
  205. package/dist/types/index.js.map +1 -0
  206. package/dist/utils/config.d.ts +21 -0
  207. package/dist/utils/config.d.ts.map +1 -0
  208. package/dist/utils/config.js +89 -0
  209. package/dist/utils/config.js.map +1 -0
  210. package/dist/utils/index.d.ts +6 -0
  211. package/dist/utils/index.d.ts.map +1 -0
  212. package/dist/utils/index.js +6 -0
  213. package/dist/utils/index.js.map +1 -0
  214. package/dist/utils/paths.d.ts +28 -0
  215. package/dist/utils/paths.d.ts.map +1 -0
  216. package/dist/utils/paths.js +80 -0
  217. package/dist/utils/paths.js.map +1 -0
  218. package/package.json +95 -0
  219. package/templates/agents/architecture-expert.md +61 -0
  220. package/templates/agents/database-expert.md +62 -0
  221. package/templates/agents/documentation-expert.md +57 -0
  222. package/templates/agents/memory-expert.md +88 -0
  223. package/templates/agents/performance-expert.md +61 -0
  224. package/templates/agents/security-expert.md +59 -0
  225. package/templates/agents/ux-expert.md +63 -0
  226. package/templates/agents/worker.md +75 -0
  227. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -0
  228. package/templates/commands/experts.md +138 -0
  229. package/templates/hooks/README.md +158 -0
  230. package/templates/hooks/project.config.json.template +77 -0
  231. package/templates/hooks/settings.local.json.template +57 -0
  232. package/templates/memory-config.json +82 -0
  233. package/templates/memory-config.schema.json +212 -0
  234. package/templates/settings.json +58 -0
  235. package/templates/workflows/business-improvement.md +264 -0
  236. package/templates/workflows/expert-review.md +153 -0
  237. package/templates/workflows/internal-app.md +245 -0
  238. package/templates/workflows/sync-docs.md +187 -0
@@ -0,0 +1,349 @@
1
+ /**
2
+ * ProjectScanner - Intelligent project structure detection
3
+ *
4
+ * Scans a project to detect:
5
+ * - Framework (Next.js, React, Node, etc.)
6
+ * - Language (TypeScript, JavaScript)
7
+ * - Styling (Tailwind, CSS Modules, etc.)
8
+ * - Database (Drizzle, Prisma, etc.)
9
+ * - API layer (TRPC, REST, GraphQL)
10
+ * - UI components location
11
+ * - Existing structure
12
+ */
13
+ import { existsSync, readdirSync, readFileSync } from 'fs';
14
+ import { join, basename } from 'path';
15
+ export class ProjectScanner {
16
+ projectPath;
17
+ constructor(projectPath = process.cwd()) {
18
+ this.projectPath = projectPath;
19
+ }
20
+ async scan() {
21
+ const packageJson = this.readPackageJson();
22
+ const result = {
23
+ name: packageJson?.name || basename(this.projectPath),
24
+ path: this.projectPath,
25
+ framework: this.detectFramework(packageJson),
26
+ language: this.detectLanguage(),
27
+ styling: this.detectStyling(packageJson),
28
+ database: this.detectDatabase(packageJson),
29
+ api: this.detectApi(packageJson),
30
+ structure: await this.detectStructure(),
31
+ existingSetup: this.detectExistingSetup(),
32
+ packageJson: packageJson ? {
33
+ name: packageJson.name,
34
+ dependencies: packageJson.dependencies || {},
35
+ devDependencies: packageJson.devDependencies || {}
36
+ } : undefined
37
+ };
38
+ return result;
39
+ }
40
+ readPackageJson() {
41
+ const packagePath = join(this.projectPath, 'package.json');
42
+ if (!existsSync(packagePath))
43
+ return null;
44
+ try {
45
+ return JSON.parse(readFileSync(packagePath, 'utf-8'));
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ detectFramework(pkg) {
52
+ if (!pkg)
53
+ return { name: 'unknown' };
54
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
55
+ // Next.js
56
+ if (deps['next']) {
57
+ const version = deps['next'].replace('^', '').replace('~', '');
58
+ let router = 'unknown';
59
+ // Check for app router
60
+ if (existsSync(join(this.projectPath, 'app')) ||
61
+ existsSync(join(this.projectPath, 'src/app'))) {
62
+ router = 'app';
63
+ }
64
+ else if (existsSync(join(this.projectPath, 'pages')) ||
65
+ existsSync(join(this.projectPath, 'src/pages'))) {
66
+ router = 'pages';
67
+ }
68
+ return { name: 'nextjs', version, router };
69
+ }
70
+ // React (standalone)
71
+ if (deps['react'] && !deps['next']) {
72
+ return { name: 'react', version: deps['react'] };
73
+ }
74
+ // Express
75
+ if (deps['express']) {
76
+ return { name: 'express', version: deps['express'] };
77
+ }
78
+ // Node
79
+ if (pkg.main || pkg.type === 'module') {
80
+ return { name: 'node' };
81
+ }
82
+ return { name: 'unknown' };
83
+ }
84
+ detectLanguage() {
85
+ const hasTsConfig = existsSync(join(this.projectPath, 'tsconfig.json'));
86
+ let strict = false;
87
+ if (hasTsConfig) {
88
+ try {
89
+ const tsConfig = JSON.parse(readFileSync(join(this.projectPath, 'tsconfig.json'), 'utf-8'));
90
+ strict = tsConfig.compilerOptions?.strict === true;
91
+ }
92
+ catch {
93
+ // Ignore parse errors
94
+ }
95
+ }
96
+ return { typescript: hasTsConfig, strict };
97
+ }
98
+ detectStyling(pkg) {
99
+ const deps = pkg ? { ...pkg.dependencies, ...pkg.devDependencies } : {};
100
+ return {
101
+ tailwind: !!deps['tailwindcss'],
102
+ cssModules: existsSync(join(this.projectPath, 'postcss.config.js')) ||
103
+ existsSync(join(this.projectPath, 'postcss.config.mjs')),
104
+ styledComponents: !!deps['styled-components'],
105
+ shadcn: existsSync(join(this.projectPath, 'components.json')) ||
106
+ !!deps['@radix-ui/react-slot']
107
+ };
108
+ }
109
+ detectDatabase(pkg) {
110
+ const deps = pkg ? { ...pkg.dependencies, ...pkg.devDependencies } : {};
111
+ // Drizzle
112
+ if (deps['drizzle-orm']) {
113
+ let type = 'unknown';
114
+ if (deps['mysql2'] || deps['@planetscale/database'])
115
+ type = 'mysql';
116
+ else if (deps['pg'] || deps['postgres'])
117
+ type = 'postgres';
118
+ else if (deps['better-sqlite3'])
119
+ type = 'sqlite';
120
+ return { orm: 'drizzle', type };
121
+ }
122
+ // Prisma
123
+ if (deps['prisma'] || deps['@prisma/client']) {
124
+ return { orm: 'prisma' };
125
+ }
126
+ // TypeORM
127
+ if (deps['typeorm']) {
128
+ return { orm: 'typeorm' };
129
+ }
130
+ return { orm: 'none' };
131
+ }
132
+ detectApi(pkg) {
133
+ const deps = pkg ? { ...pkg.dependencies, ...pkg.devDependencies } : {};
134
+ // TRPC
135
+ if (deps['@trpc/server'] || deps['@trpc/client']) {
136
+ // Try to find API path
137
+ const possiblePaths = [
138
+ 'src/server/api',
139
+ 'src/api',
140
+ 'server/api',
141
+ 'api'
142
+ ];
143
+ for (const path of possiblePaths) {
144
+ if (existsSync(join(this.projectPath, path))) {
145
+ return { type: 'trpc', path };
146
+ }
147
+ }
148
+ return { type: 'trpc' };
149
+ }
150
+ // GraphQL
151
+ if (deps['graphql'] || deps['apollo-server'] || deps['@apollo/server']) {
152
+ return { type: 'graphql' };
153
+ }
154
+ // REST (Express detected earlier)
155
+ if (deps['express']) {
156
+ return { type: 'rest' };
157
+ }
158
+ return { type: 'none' };
159
+ }
160
+ async detectStructure() {
161
+ const srcDir = existsSync(join(this.projectPath, 'src'));
162
+ const base = srcDir ? 'src' : '.';
163
+ const structure = {
164
+ srcDir
165
+ };
166
+ // Components
167
+ const componentsPaths = [
168
+ `${base}/components`,
169
+ 'components'
170
+ ];
171
+ for (const p of componentsPaths) {
172
+ if (existsSync(join(this.projectPath, p))) {
173
+ structure.componentsPath = p;
174
+ break;
175
+ }
176
+ }
177
+ // UI Components (Shadcn style)
178
+ const uiPaths = [
179
+ `${base}/components/ui`,
180
+ 'components/ui'
181
+ ];
182
+ for (const p of uiPaths) {
183
+ if (existsSync(join(this.projectPath, p))) {
184
+ structure.uiComponentsPath = p;
185
+ // Count UI components
186
+ try {
187
+ const files = readdirSync(join(this.projectPath, p));
188
+ const tsxFiles = files.filter(f => f.endsWith('.tsx'));
189
+ if (tsxFiles.length > 0) {
190
+ structure.uiComponentsPath = p;
191
+ }
192
+ }
193
+ catch {
194
+ // Ignore
195
+ }
196
+ break;
197
+ }
198
+ }
199
+ // Pages
200
+ const pagesPaths = [
201
+ `${base}/pages`,
202
+ `${base}/app`,
203
+ 'pages',
204
+ 'app'
205
+ ];
206
+ for (const p of pagesPaths) {
207
+ if (existsSync(join(this.projectPath, p))) {
208
+ structure.pagesPath = p;
209
+ break;
210
+ }
211
+ }
212
+ // API/Server
213
+ const serverPaths = [
214
+ `${base}/server`,
215
+ `${base}/server/api`,
216
+ `${base}/api`,
217
+ 'server',
218
+ 'api'
219
+ ];
220
+ for (const p of serverPaths) {
221
+ if (existsSync(join(this.projectPath, p))) {
222
+ if (p.includes('api')) {
223
+ structure.apiPath = p;
224
+ }
225
+ else {
226
+ structure.serverPath = p;
227
+ }
228
+ }
229
+ }
230
+ // Hooks
231
+ const hooksPaths = [
232
+ `${base}/hooks`,
233
+ 'hooks'
234
+ ];
235
+ for (const p of hooksPaths) {
236
+ if (existsSync(join(this.projectPath, p))) {
237
+ structure.hooksPath = p;
238
+ break;
239
+ }
240
+ }
241
+ // Utils
242
+ const utilsPaths = [
243
+ `${base}/utils`,
244
+ `${base}/lib`,
245
+ 'utils',
246
+ 'lib'
247
+ ];
248
+ for (const p of utilsPaths) {
249
+ if (existsSync(join(this.projectPath, p))) {
250
+ structure.utilsPath = p;
251
+ break;
252
+ }
253
+ }
254
+ // Types
255
+ const typesPaths = [
256
+ `${base}/types`,
257
+ 'types'
258
+ ];
259
+ for (const p of typesPaths) {
260
+ if (existsSync(join(this.projectPath, p))) {
261
+ structure.typesPath = p;
262
+ break;
263
+ }
264
+ }
265
+ return structure;
266
+ }
267
+ detectExistingSetup() {
268
+ return {
269
+ hasClaude: existsSync(join(this.projectPath, '.claude')),
270
+ hasClaudeMd: existsSync(join(this.projectPath, 'CLAUDE.md')),
271
+ hasAiSkills: existsSync(join(this.projectPath, '.ai-skills')),
272
+ hasMemoryConfig: existsSync(join(this.projectPath, '.claude/memory-config.json')),
273
+ hasExperts: existsSync(join(this.projectPath, '.claude/commands/experts.md'))
274
+ };
275
+ }
276
+ /**
277
+ * Generate a summary for display
278
+ */
279
+ summarize(result) {
280
+ const lines = [];
281
+ lines.push(`📦 Project: ${result.name}`);
282
+ lines.push('');
283
+ // Framework
284
+ if (result.framework.name !== 'unknown') {
285
+ let fw = result.framework.name;
286
+ if (result.framework.version)
287
+ fw += ` v${result.framework.version}`;
288
+ if (result.framework.router)
289
+ fw += ` (${result.framework.router} router)`;
290
+ lines.push(` Framework: ${fw}`);
291
+ }
292
+ // Language
293
+ if (result.language.typescript) {
294
+ lines.push(` Language: TypeScript${result.language.strict ? ' (strict)' : ''}`);
295
+ }
296
+ else {
297
+ lines.push(` Language: JavaScript`);
298
+ }
299
+ // Styling
300
+ const styles = [];
301
+ if (result.styling.tailwind)
302
+ styles.push('Tailwind');
303
+ if (result.styling.shadcn)
304
+ styles.push('Shadcn/UI');
305
+ if (result.styling.styledComponents)
306
+ styles.push('Styled Components');
307
+ if (styles.length > 0) {
308
+ lines.push(` Styling: ${styles.join(', ')}`);
309
+ }
310
+ // Database
311
+ if (result.database.orm !== 'none') {
312
+ let db = result.database.orm;
313
+ if (result.database.type)
314
+ db += ` (${result.database.type})`;
315
+ lines.push(` Database: ${db}`);
316
+ }
317
+ // API
318
+ if (result.api.type !== 'none') {
319
+ let api = result.api.type.toUpperCase();
320
+ if (result.api.path)
321
+ api += ` at ${result.api.path}`;
322
+ lines.push(` API: ${api}`);
323
+ }
324
+ // Structure
325
+ lines.push('');
326
+ lines.push(' Structure:');
327
+ if (result.structure.componentsPath) {
328
+ lines.push(` Components: ${result.structure.componentsPath}`);
329
+ }
330
+ if (result.structure.uiComponentsPath) {
331
+ lines.push(` UI Library: ${result.structure.uiComponentsPath}`);
332
+ }
333
+ if (result.structure.serverPath || result.structure.apiPath) {
334
+ lines.push(` Server: ${result.structure.serverPath || result.structure.apiPath}`);
335
+ }
336
+ // Existing setup
337
+ lines.push('');
338
+ lines.push(' Existing Setup:');
339
+ lines.push(` .claude/: ${result.existingSetup.hasClaude ? '✓' : '✗'}`);
340
+ lines.push(` CLAUDE.md: ${result.existingSetup.hasClaudeMd ? '✓' : '✗'}`);
341
+ lines.push(` .ai-skills/: ${result.existingSetup.hasAiSkills ? '✓' : '✗'}`);
342
+ lines.push(` experts.md: ${result.existingSetup.hasExperts ? '✓' : '✗'}`);
343
+ return lines.join('\n');
344
+ }
345
+ }
346
+ export function createProjectScanner(projectPath) {
347
+ return new ProjectScanner(projectPath);
348
+ }
349
+ //# sourceMappingURL=ProjectScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectScanner.js","sourceRoot":"","sources":["../../src/services/ProjectScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * TaskTracker Service
3
+ *
4
+ * Automatically tracks tasks in DEV_Items database.
5
+ * Creates task entries when work starts, updates progress, and records completion.
6
+ */
7
+ import type { DevSystem, DevItem, TaskIdea, TaskImprovement } from '../types/index.js';
8
+ export interface StartTaskOptions {
9
+ title: string;
10
+ description?: string;
11
+ userRequest?: string;
12
+ currentFile?: string;
13
+ todoItems?: string[];
14
+ branch?: string;
15
+ }
16
+ export interface UpdateTaskOptions {
17
+ filesModified?: string[];
18
+ toolCalls?: number;
19
+ filesRead?: number;
20
+ filesWritten?: number;
21
+ }
22
+ export interface CompleteTaskOptions {
23
+ ideas?: Omit<TaskIdea, 'id' | 'createdAt'>[];
24
+ improvements?: Omit<TaskImprovement, 'id' | 'createdAt'>[];
25
+ cancelled?: boolean;
26
+ }
27
+ export declare class TaskTracker {
28
+ private client;
29
+ private currentTaskId;
30
+ private taskMetrics;
31
+ constructor(system: DevSystem);
32
+ /**
33
+ * Start tracking a new task
34
+ */
35
+ startTask(options: StartTaskOptions): Promise<string>;
36
+ /**
37
+ * Update current task with new information
38
+ */
39
+ updateTask(options: UpdateTaskOptions): Promise<void>;
40
+ /**
41
+ * Complete the current task
42
+ */
43
+ completeTask(options?: CompleteTaskOptions): Promise<void>;
44
+ /**
45
+ * Add an idea to the current task
46
+ */
47
+ addIdea(idea: Omit<TaskIdea, 'id' | 'createdAt'>): Promise<void>;
48
+ /**
49
+ * Add an improvement to the current task
50
+ */
51
+ addImprovement(improvement: Omit<TaskImprovement, 'id' | 'createdAt'>): Promise<void>;
52
+ /**
53
+ * Get current active task
54
+ */
55
+ getCurrentTask(): Promise<DevItem | null>;
56
+ /**
57
+ * Get recent tasks
58
+ */
59
+ getRecentTasks(limit?: number): Promise<DevItem[]>;
60
+ /**
61
+ * Get all ideas from completed tasks
62
+ */
63
+ getAllIdeas(limit?: number): Promise<TaskIdea[]>;
64
+ /**
65
+ * Get all improvements from completed tasks
66
+ */
67
+ getAllImprovements(limit?: number): Promise<TaskImprovement[]>;
68
+ /**
69
+ * Get current git branch
70
+ */
71
+ private getCurrentBranch;
72
+ /**
73
+ * Check if there's an active task
74
+ */
75
+ hasActiveTask(): boolean;
76
+ /**
77
+ * Get current task ID
78
+ */
79
+ getCurrentTaskId(): string | null;
80
+ }
81
+ /**
82
+ * Get or create TaskTracker instance
83
+ */
84
+ export declare function getTaskTracker(system: DevSystem): TaskTracker;
85
+ /**
86
+ * Create fresh TaskTracker instance
87
+ */
88
+ export declare function createTaskTracker(system: DevSystem): TaskTracker;
89
+ //# sourceMappingURL=TaskTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskTracker.d.ts","sourceRoot":"","sources":["../../src/services/TaskTracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EAEP,QAAQ,EACR,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAM1B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAAA;IAC5C,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAAA;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAUlB;gBAEW,MAAM,EAAE,SAAS;IAQ7B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2C3D;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC3D;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDhE;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtE;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B3F;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAiB/C;;OAEG;IACG,cAAc,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOpD;;OAEG;IACG,WAAW,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoBlD;;OAEG;IACG,kBAAkB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAwBhE;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAGlC;AAQD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAK7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAEhE"}