@autocode-cli/autocode 0.1.13 → 0.1.15

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/dist/server/api.d.ts.map +1 -1
  2. package/dist/server/api.js +95 -1
  3. package/dist/server/api.js.map +1 -1
  4. package/dist/server/dashboard/pages/autocreate.d.ts +9 -0
  5. package/dist/server/dashboard/pages/autocreate.d.ts.map +1 -0
  6. package/dist/server/dashboard/pages/autocreate.js +847 -0
  7. package/dist/server/dashboard/pages/autocreate.js.map +1 -0
  8. package/dist/server/dashboard/pages/index.d.ts +1 -0
  9. package/dist/server/dashboard/pages/index.d.ts.map +1 -1
  10. package/dist/server/dashboard/pages/index.js +1 -0
  11. package/dist/server/dashboard/pages/index.js.map +1 -1
  12. package/dist/server/dashboard/pages/pipeline-configurator.d.ts.map +1 -1
  13. package/dist/server/dashboard/pages/pipeline-configurator.js +22 -0
  14. package/dist/server/dashboard/pages/pipeline-configurator.js.map +1 -1
  15. package/dist/server/dashboard.d.ts +1 -1
  16. package/dist/server/dashboard.d.ts.map +1 -1
  17. package/dist/server/dashboard.js +1 -1
  18. package/dist/server/dashboard.js.map +1 -1
  19. package/dist/server/index.d.ts.map +1 -1
  20. package/dist/server/index.js +9 -1
  21. package/dist/server/index.js.map +1 -1
  22. package/dist/services/autocreate.d.ts +34 -0
  23. package/dist/services/autocreate.d.ts.map +1 -0
  24. package/dist/services/autocreate.js +503 -0
  25. package/dist/services/autocreate.js.map +1 -0
  26. package/dist/types/index.d.ts +49 -0
  27. package/dist/types/index.d.ts.map +1 -1
  28. package/package.json +1 -1
  29. package/templates/catalog.yaml +102 -0
  30. package/templates/prompts/accessibility-check.en.md +25 -0
  31. package/templates/prompts/accessibility-check.fr.md +25 -0
  32. package/templates/prompts/api-endpoints-test.en.md +26 -0
  33. package/templates/prompts/api-endpoints-test.fr.md +26 -0
  34. package/templates/prompts/build-dist.en.md +20 -0
  35. package/templates/prompts/build-dist.fr.md +20 -0
  36. package/templates/prompts/ci-gitlab-validate.en.md +22 -0
  37. package/templates/prompts/ci-gitlab-validate.fr.md +22 -0
  38. package/templates/prompts/claude-integration-test.en.md +22 -0
  39. package/templates/prompts/claude-integration-test.fr.md +22 -0
  40. package/templates/prompts/cli-smoke-test.en.md +30 -0
  41. package/templates/prompts/cli-smoke-test.fr.md +30 -0
  42. package/templates/prompts/dashboard-responsive.en.md +27 -0
  43. package/templates/prompts/dashboard-responsive.fr.md +27 -0
  44. package/templates/prompts/dead-code-check.en.md +25 -0
  45. package/templates/prompts/dead-code-check.fr.md +25 -0
  46. package/templates/prompts/deps-licenses.en.md +23 -0
  47. package/templates/prompts/deps-licenses.fr.md +23 -0
  48. package/templates/prompts/deps-outdated.en.md +23 -0
  49. package/templates/prompts/deps-outdated.fr.md +23 -0
  50. package/templates/prompts/docs-readme-validate.en.md +22 -0
  51. package/templates/prompts/docs-readme-validate.fr.md +22 -0
  52. package/templates/prompts/error-handling-review.en.md +24 -0
  53. package/templates/prompts/error-handling-review.fr.md +24 -0
  54. package/templates/prompts/esm-compatibility.en.md +24 -0
  55. package/templates/prompts/esm-compatibility.fr.md +24 -0
  56. package/templates/prompts/file-watcher-test.en.md +20 -0
  57. package/templates/prompts/file-watcher-test.fr.md +20 -0
  58. package/templates/prompts/format-prettier-setup.en.md +21 -0
  59. package/templates/prompts/format-prettier-setup.fr.md +21 -0
  60. package/templates/prompts/git-conventional-commits.en.md +21 -0
  61. package/templates/prompts/git-conventional-commits.fr.md +21 -0
  62. package/templates/prompts/git-hooks-setup.en.md +27 -0
  63. package/templates/prompts/git-hooks-setup.fr.md +27 -0
  64. package/templates/prompts/graceful-shutdown.en.md +25 -0
  65. package/templates/prompts/graceful-shutdown.fr.md +25 -0
  66. package/templates/prompts/i18n-completeness.en.md +21 -0
  67. package/templates/prompts/i18n-completeness.fr.md +21 -0
  68. package/templates/prompts/landing-html-validate.en.md +23 -0
  69. package/templates/prompts/landing-html-validate.fr.md +23 -0
  70. package/templates/prompts/lint-eslint-setup.en.md +20 -0
  71. package/templates/prompts/lint-eslint-setup.fr.md +20 -0
  72. package/templates/prompts/node-version-check.en.md +21 -0
  73. package/templates/prompts/node-version-check.fr.md +21 -0
  74. package/templates/prompts/npm-publish-dry-run.en.md +25 -0
  75. package/templates/prompts/npm-publish-dry-run.fr.md +25 -0
  76. package/templates/prompts/pkg-exports-validate.en.md +23 -0
  77. package/templates/prompts/pkg-exports-validate.fr.md +23 -0
  78. package/templates/prompts/port-conflict-handling.en.md +22 -0
  79. package/templates/prompts/port-conflict-handling.fr.md +22 -0
  80. package/templates/prompts/security-audit.en.md +20 -0
  81. package/templates/prompts/security-audit.fr.md +20 -0
  82. package/templates/prompts/security-secrets.en.md +26 -0
  83. package/templates/prompts/security-secrets.fr.md +26 -0
  84. package/templates/prompts/template-validation.en.md +23 -0
  85. package/templates/prompts/template-validation.fr.md +23 -0
  86. package/templates/prompts/testing-coverage.en.md +20 -0
  87. package/templates/prompts/testing-coverage.fr.md +20 -0
  88. package/templates/prompts/testing-vitest.en.md +17 -0
  89. package/templates/prompts/testing-vitest.fr.md +17 -0
  90. package/templates/prompts/typecheck.en.md +17 -0
  91. package/templates/prompts/typecheck.fr.md +17 -0
  92. package/templates/prompts/version-semver.en.md +20 -0
  93. package/templates/prompts/version-semver.fr.md +20 -0
  94. package/templates/prompts/websocket-test.en.md +19 -0
  95. package/templates/prompts/websocket-test.fr.md +19 -0
  96. package/templates/prompts/yaml-validate.en.md +24 -0
  97. package/templates/prompts/yaml-validate.fr.md +24 -0
@@ -0,0 +1,503 @@
1
+ /**
2
+ * Autocreate service
3
+ * Analyzes project context and generates column proposals using Claude
4
+ */
5
+ import { spawnSync } from 'node:child_process';
6
+ import { join } from 'node:path';
7
+ import { existsSync, statSync } from 'node:fs';
8
+ import { readFileSafe } from '../utils/fs.js';
9
+ import { getConfig } from '../utils/config.js';
10
+ import { getAllCatalogColumns } from '../core/catalog.js';
11
+ /**
12
+ * Gather project context for analysis
13
+ */
14
+ export function gatherProjectContext() {
15
+ const config = getConfig();
16
+ const root = config.root;
17
+ // Read package.json
18
+ const pkgPath = join(root, 'package.json');
19
+ const pkgContent = readFileSafe(pkgPath);
20
+ let pkg = {};
21
+ if (pkgContent) {
22
+ try {
23
+ pkg = JSON.parse(pkgContent);
24
+ }
25
+ catch {
26
+ // Invalid JSON, ignore
27
+ }
28
+ }
29
+ const dependencies = Object.keys(pkg.dependencies || {});
30
+ const devDependencies = Object.keys(pkg.devDependencies || {});
31
+ const scripts = pkg.scripts || {};
32
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
33
+ // Detect tooling from dependencies
34
+ const detectedTooling = [];
35
+ // Frameworks
36
+ if (allDeps['vue'] || allDeps['nuxt'])
37
+ detectedTooling.push('Vue');
38
+ if (allDeps['react'] || allDeps['next'])
39
+ detectedTooling.push('React');
40
+ if (allDeps['angular'] || allDeps['@angular/core'])
41
+ detectedTooling.push('Angular');
42
+ if (allDeps['svelte'] || allDeps['@sveltejs/kit'])
43
+ detectedTooling.push('Svelte');
44
+ if (allDeps['express'])
45
+ detectedTooling.push('Express');
46
+ if (allDeps['fastify'])
47
+ detectedTooling.push('Fastify');
48
+ if (allDeps['nestjs'] || allDeps['@nestjs/core'])
49
+ detectedTooling.push('NestJS');
50
+ // Build tools
51
+ if (allDeps['vite'])
52
+ detectedTooling.push('Vite');
53
+ if (allDeps['webpack'])
54
+ detectedTooling.push('Webpack');
55
+ if (allDeps['esbuild'])
56
+ detectedTooling.push('esbuild');
57
+ if (allDeps['rollup'])
58
+ detectedTooling.push('Rollup');
59
+ // Testing
60
+ if (allDeps['vitest'])
61
+ detectedTooling.push('Vitest');
62
+ if (allDeps['jest'])
63
+ detectedTooling.push('Jest');
64
+ if (allDeps['mocha'])
65
+ detectedTooling.push('Mocha');
66
+ if (allDeps['playwright'] || allDeps['@playwright/test'])
67
+ detectedTooling.push('Playwright');
68
+ if (allDeps['cypress'])
69
+ detectedTooling.push('Cypress');
70
+ if (allDeps['puppeteer'])
71
+ detectedTooling.push('Puppeteer');
72
+ // Quality
73
+ if (allDeps['eslint'])
74
+ detectedTooling.push('ESLint');
75
+ if (allDeps['prettier'])
76
+ detectedTooling.push('Prettier');
77
+ if (allDeps['typescript'])
78
+ detectedTooling.push('TypeScript');
79
+ if (allDeps['biome'] || allDeps['@biomejs/biome'])
80
+ detectedTooling.push('Biome');
81
+ // Database
82
+ if (allDeps['prisma'] || allDeps['@prisma/client'])
83
+ detectedTooling.push('Prisma');
84
+ if (allDeps['typeorm'])
85
+ detectedTooling.push('TypeORM');
86
+ if (allDeps['mongoose'])
87
+ detectedTooling.push('Mongoose');
88
+ if (allDeps['drizzle-orm'])
89
+ detectedTooling.push('Drizzle');
90
+ // Detect directory structure
91
+ const directoryStructure = [];
92
+ const dirsToCheck = [
93
+ 'src', 'lib', 'app', 'pages', 'components', 'services',
94
+ 'tests', 'test', '__tests__', 'e2e', 'cypress', 'playwright',
95
+ 'docs', 'documentation', 'api', 'server', 'client',
96
+ ];
97
+ for (const dir of dirsToCheck) {
98
+ const dirPath = join(root, dir);
99
+ if (existsSync(dirPath) && statSync(dirPath).isDirectory()) {
100
+ directoryStructure.push(dir);
101
+ }
102
+ }
103
+ // Detect config files
104
+ const configFiles = [];
105
+ const configsToCheck = [
106
+ 'tsconfig.json', 'vite.config.ts', 'vite.config.js',
107
+ 'vitest.config.ts', 'vitest.config.js',
108
+ 'jest.config.js', 'jest.config.ts', 'jest.config.json',
109
+ 'playwright.config.ts', 'playwright.config.js',
110
+ 'cypress.config.ts', 'cypress.config.js',
111
+ '.eslintrc', '.eslintrc.js', '.eslintrc.json', 'eslint.config.js',
112
+ '.prettierrc', 'prettier.config.js',
113
+ 'docker-compose.yml', 'Dockerfile',
114
+ '.github/workflows', '.gitlab-ci.yml',
115
+ ];
116
+ for (const config of configsToCheck) {
117
+ if (existsSync(join(root, config))) {
118
+ configFiles.push(config);
119
+ }
120
+ }
121
+ // Read README for project description
122
+ let projectDescription = pkg.description || '';
123
+ const readmePath = join(root, 'README.md');
124
+ const readmeContent = readFileSafe(readmePath);
125
+ if (readmeContent) {
126
+ // Extract first 500 chars of README
127
+ projectDescription = readmeContent.substring(0, 500);
128
+ }
129
+ return {
130
+ dependencies,
131
+ devDependencies,
132
+ scripts,
133
+ detectedTooling,
134
+ directoryStructure,
135
+ configFiles,
136
+ projectDescription,
137
+ };
138
+ }
139
+ /**
140
+ * Get all existing column slugs from the catalog
141
+ */
142
+ export function getExistingSlugs() {
143
+ const segments = getAllCatalogColumns();
144
+ const slugs = [];
145
+ for (const { columns } of segments) {
146
+ for (const col of columns) {
147
+ slugs.push(col.slug);
148
+ }
149
+ }
150
+ return slugs;
151
+ }
152
+ /**
153
+ * Build the autocreate prompt for Claude
154
+ */
155
+ export function buildAutocreatePrompt(context, existingSlugs) {
156
+ const contextSection = `## Project Context
157
+
158
+ ### Dependencies (${context.dependencies.length} total)
159
+ ${context.dependencies.slice(0, 50).join(', ') || 'None detected'}
160
+
161
+ ### Dev Dependencies (${context.devDependencies.length} total)
162
+ ${context.devDependencies.slice(0, 50).join(', ') || 'None detected'}
163
+
164
+ ### Scripts
165
+ ${Object.entries(context.scripts).map(([k, v]) => `- ${k}: ${v}`).join('\n') || 'None'}
166
+
167
+ ### Detected Tooling
168
+ ${context.detectedTooling.join(', ') || 'None detected'}
169
+
170
+ ### Directory Structure
171
+ ${context.directoryStructure.join(', ') || 'Standard'}
172
+
173
+ ### Config Files
174
+ ${context.configFiles.join(', ') || 'None detected'}
175
+
176
+ ### Project Description
177
+ ${context.projectDescription || 'No description available'}`;
178
+ const existingSection = `## Existing Catalog Columns (DO NOT DUPLICATE)
179
+ ${existingSlugs.join(', ')}`;
180
+ const checkpointsGuide = `## CHECKPOINTS POSSIBLES (LISTE INDICATIVE, PAS EXHAUSTIVE)
181
+
182
+ IMPORTANT: Cette liste est INDICATIVE. Tu dois:
183
+ 1. Analyser en profondeur le projet et proposer un MAXIMUM de colonnes pertinentes
184
+ 2. Aller AU-DELÀ de cette liste si tu détectes des besoins spécifiques
185
+ 3. Proposer des colonnes adaptées aux technologies/frameworks détectés
186
+ 4. Ne proposer QUE ce qui n'existe PAS DÉJÀ dans le catalogue
187
+
188
+ RÈGLE ABSOLUE: 1 check = 1 colonne (ne JAMAIS grouper plusieurs vérifications)
189
+
190
+ ### TESTS
191
+ - testing-unit: Si framework de test détecté (Jest, Vitest, Mocha, AVA, Tap)
192
+ - testing-integration: Si tests d'intégration possibles
193
+ - testing-e2e: Si Playwright/Cypress/Puppeteer/TestCafe détecté
194
+ - testing-component: Si Testing Library ou composants UI (React, Vue, Svelte)
195
+ - testing-api: Si API backend à tester (Supertest, Pactum)
196
+ - testing-load: Si besoin de tests de charge (k6, Artillery, Gatling)
197
+ - testing-performance: Si frontend (Lighthouse, WebPageTest)
198
+ - testing-security: Si API/backend exposé (OWASP ZAP, nuclei)
199
+ - testing-accessibility: Si frontend avec UI (axe, pa11y, WAVE)
200
+ - testing-visual: Si UI critique (Percy, Chromatic, BackstopJS)
201
+ - testing-mutation: Si tests critiques (Stryker)
202
+ - testing-contract: Si microservices (Pact)
203
+ - testing-smoke: Tests smoke/sanity rapides
204
+ - testing-coverage: Vérification couverture de code (Istanbul, c8)
205
+
206
+ ### QUALITÉ DE CODE
207
+ - lint-eslint: Si ESLint détecté ou .eslintrc présent
208
+ - lint-biome: Si Biome/@biomejs détecté
209
+ - lint-stylelint: Si CSS/SCSS/LESS présent (Stylelint)
210
+ - lint-markdownlint: Si fichiers .md présents
211
+ - lint-shellcheck: Si scripts .sh présents
212
+ - lint-yaml: Si fichiers .yml/.yaml (yamllint)
213
+ - lint-json: Si fichiers JSON config importants
214
+ - format-prettier: Si Prettier détecté ou .prettierrc
215
+ - format-editorconfig: Si .editorconfig présent
216
+ - typecheck: Si TypeScript (tsc --noEmit)
217
+ - complexity: Analyse complexité cyclomatique (escomplex, plato)
218
+ - duplication: Détection code dupliqué (jscpd, SonarQube)
219
+ - dead-code: Détection code mort (knip, ts-prune, unimported)
220
+ - import-sort: Ordre des imports (eslint-plugin-import)
221
+ - spell-check: Vérification orthographe code (cspell)
222
+ - todo-check: Vérification TODO/FIXME/HACK restants
223
+
224
+ ### SÉCURITÉ
225
+ - security-audit: Audit dépendances (npm audit, yarn audit, pnpm audit)
226
+ - security-snyk: Scan Snyk si configuré
227
+ - security-dependabot: Vérifier config Dependabot/.github
228
+ - security-secrets: Détection secrets (gitleaks, truffleHog, detect-secrets)
229
+ - security-sast: Analyse statique sécurité (Semgrep, CodeQL, SonarQube)
230
+ - security-headers: Vérification headers HTTP sécurité (helmet)
231
+ - security-csp: Vérification Content Security Policy
232
+ - security-supply-chain: Sécurité supply chain (Socket, lockfile-lint)
233
+
234
+ ### DÉPENDANCES
235
+ - deps-outdated: Vérification dépendances obsolètes (npm-check-updates, ncu)
236
+ - deps-unused: Détection dépendances non utilisées (depcheck, knip)
237
+ - deps-licenses: Vérification licences (license-checker, FOSSA, licensee)
238
+ - deps-size: Analyse taille bundle (bundlesize, size-limit, bundlephobia)
239
+ - deps-lockfile: Validation lockfile (lockfile-lint)
240
+ - deps-duplicates: Détection doublons dépendances (npm dedupe)
241
+ - deps-peer: Vérification peer dependencies
242
+
243
+ ### DOCUMENTATION
244
+ - docs-readme: Vérification README complet et à jour
245
+ - docs-changelog: Mise à jour CHANGELOG
246
+ - docs-api: Documentation API (OpenAPI, Swagger, Redoc)
247
+ - docs-jsdoc: Documentation code (JSDoc, TSDoc, typedoc)
248
+ - docs-storybook: Documentation composants Storybook
249
+ - docs-contributing: Guide de contribution CONTRIBUTING.md
250
+ - docs-license: Fichier LICENSE présent et valide
251
+ - docs-architecture: Documentation architecture (ADR, C4)
252
+ - docs-code-of-conduct: Code de conduite
253
+
254
+ ### CI/CD
255
+ - ci-github-actions: Si .github/workflows détecté - validation workflows
256
+ - ci-gitlab-ci: Si .gitlab-ci.yml détecté - validation pipeline
257
+ - ci-build: Vérifier que le build passe
258
+ - ci-artifacts: Génération et vérification artifacts
259
+
260
+ ### DOCKER & CONTAINERS
261
+ - docker-lint: Linting Dockerfile (hadolint)
262
+ - docker-compose-validate: Validation docker-compose.yml
263
+ - docker-security: Scan sécurité images (Trivy, Grype, Clair)
264
+ - docker-size: Optimisation taille image
265
+ - docker-healthcheck: Vérification healthcheck configuré
266
+
267
+ ### INFRASTRUCTURE & DEPLOY
268
+ - deploy-staging: Déploiement environnement staging
269
+ - deploy-production: Déploiement production
270
+ - deploy-preview: Déploiements preview/PR (Vercel, Netlify)
271
+ - infra-terraform: Si Terraform - validation (tflint, terraform validate)
272
+ - infra-k8s: Si Kubernetes - validation manifests (kubeval, kube-linter)
273
+ - infra-helm: Si Helm - validation charts
274
+
275
+ ### MONITORING & OBSERVABILITÉ
276
+ - monitoring-healthcheck: Endpoints healthcheck /health
277
+ - monitoring-metrics: Exposition métriques (Prometheus, prom-client)
278
+ - monitoring-logging: Configuration logs structurés (pino, winston)
279
+ - monitoring-tracing: Configuration tracing (OpenTelemetry)
280
+ - monitoring-error-tracking: Error tracking (Sentry, Rollbar)
281
+
282
+ ### RÉSILIENCE & PERFORMANCE
283
+ - perf-bundle-analyze: Analyse bundle (webpack-bundle-analyzer)
284
+ - perf-lighthouse: Audit Lighthouse CI
285
+ - perf-caching: Stratégies de cache
286
+ - perf-lazy-loading: Lazy loading assets/routes
287
+ - perf-tree-shaking: Vérification tree shaking
288
+ - perf-compression: Compression assets (gzip, brotli)
289
+
290
+ ### GIT & VERSIONING
291
+ - git-conventional-commits: Validation format commits (commitlint)
292
+ - git-branch-naming: Convention nommage branches
293
+ - git-hooks: Configuration hooks (husky, lefthook, simple-git-hooks)
294
+ - git-signed-commits: Commits signés GPG
295
+ - version-semver: Gestion versioning sémantique
296
+ - version-release: Process release (semantic-release, changesets, release-it)
297
+
298
+ ### ENVIRONNEMENT & CONFIG
299
+ - env-validation: Validation variables d'environnement (envalid, zod)
300
+ - env-dotenv: Gestion fichiers .env
301
+ - env-example: Fichier .env.example à jour
302
+ - config-schema: Validation schéma config (JSON Schema, Zod)
303
+
304
+ ### PACKAGE.JSON & MANIFESTS
305
+ - pkg-engines: Vérification champ engines (Node version)
306
+ - pkg-scripts: Vérification scripts essentiels présents
307
+ - pkg-exports: Vérification exports/main/types
308
+ - pkg-files: Vérification champ files pour publish
309
+ - pkg-peerDeps: Vérification peerDependencies`;
310
+ const schemaExample = `{
311
+ "proposed_columns": [
312
+ {
313
+ "id": "unique-uuid-string",
314
+ "key": "kebab-case-slug",
315
+ "display_name": { "fr": "Nom en français", "en": "Name in English" },
316
+ "short_description": { "fr": "Description courte", "en": "Short description" },
317
+ "segment_hint": "definition|action|finish",
318
+ "files_to_create": [
319
+ {
320
+ "path": "prompts/slug.md",
321
+ "content": {
322
+ "fr": "# Titre\\n\\n## Rôle\\n...\\n\\n## Actions\\n1. ...\\n\\n## Critères de validation\\n- [ ] ...",
323
+ "en": "# Title\\n\\n## Role\\n...\\n\\n## Actions\\n1. ...\\n\\n## Validation Criteria\\n- [ ] ..."
324
+ }
325
+ }
326
+ ],
327
+ "rationale": { "fr": "Justification spécifique au projet", "en": "Project-specific rationale" },
328
+ "token_cost_estimate": "low|medium|high",
329
+ "overlap_warnings": []
330
+ }
331
+ ],
332
+ "global_summary": { "fr": "Résumé global", "en": "Global summary" },
333
+ "assumptions": ["assumption1", "assumption2"],
334
+ "risks": ["risk1", "risk2"]
335
+ }`;
336
+ return `Tu es un expert en pipelines de développement logiciel, CI/CD, et bonnes pratiques DevOps.
337
+ Analyse ce projet et propose des colonnes de pipeline exhaustives et spécifiques.
338
+
339
+ ${contextSection}
340
+
341
+ ${existingSection}
342
+
343
+ ${checkpointsGuide}
344
+
345
+ ## RÈGLES ABSOLUES
346
+
347
+ 1. **EXHAUSTIVITÉ MAXIMALE** : Propose un MAXIMUM de colonnes pertinentes - la liste ci-dessus est indicative, va AU-DELÀ si tu détectes d'autres besoins
348
+ 2. **1 CHECK = 1 COLONNE** : Ne JAMAIS grouper plusieurs vérifications dans une colonne
349
+ 3. **SPÉCIFICITÉ** : Chaque colonne doit être adaptée à CE projet (technologies détectées, structure, dépendances)
350
+ 4. **CRÉATIVITÉ** : Propose des colonnes spécifiques au framework/stack même si non listées (ex: next-build-analyze pour Next.js, vue-i18n-check pour Vue i18n...)
351
+ 5. **JUSTIFICATION** : Explique dans "rationale" POURQUOI ce check est pertinent pour CE projet précis
352
+ 6. **PAS DE DOUBLONS** : Ne pas proposer de colonnes similaires à celles existantes dans le catalogue
353
+
354
+ ## Segments disponibles
355
+ - definition: Qualification et préparation
356
+ - action: Implémentation et validation (la plupart des checks vont ici)
357
+ - finish: Finalisation et déploiement
358
+
359
+ ## Format de sortie
360
+
361
+ Retourne UNIQUEMENT du JSON valide, sans commentaires, sans texte avant ou après, sans trailing commas:
362
+
363
+ ${schemaExample}
364
+
365
+ ## Contenu des prompts
366
+
367
+ Chaque prompt (dans files_to_create.content) doit être COMPLET et ACTIONNABLE:
368
+ - # Titre
369
+ - ## Rôle (description précise de ce que fait cette étape)
370
+ - ## Actions (liste numérotée détaillée des actions)
371
+ - ## Critères de validation (checkboxes précises)
372
+
373
+ Génère des prompts complets avec les commandes spécifiques à exécuter.`;
374
+ }
375
+ /**
376
+ * Parse Claude's response and extract the JSON result
377
+ */
378
+ export function parseAutocreateResponse(output) {
379
+ // Try to find JSON in the output
380
+ const jsonMatch = output.match(/\{[\s\S]*\}/);
381
+ if (!jsonMatch) {
382
+ throw new Error('No JSON found in Claude response');
383
+ }
384
+ try {
385
+ const parsed = JSON.parse(jsonMatch[0]);
386
+ // Validate structure
387
+ if (!parsed.proposed_columns || !Array.isArray(parsed.proposed_columns)) {
388
+ throw new Error('Invalid response: missing proposed_columns array');
389
+ }
390
+ if (!parsed.global_summary || !parsed.global_summary.fr || !parsed.global_summary.en) {
391
+ parsed.global_summary = {
392
+ fr: 'Analyse terminée',
393
+ en: 'Analysis complete',
394
+ };
395
+ }
396
+ if (!parsed.assumptions)
397
+ parsed.assumptions = [];
398
+ if (!parsed.risks)
399
+ parsed.risks = [];
400
+ // Validate each column
401
+ for (const col of parsed.proposed_columns) {
402
+ if (!col.id)
403
+ col.id = crypto.randomUUID();
404
+ if (!col.key)
405
+ throw new Error('Column missing key');
406
+ if (!col.display_name?.fr || !col.display_name?.en) {
407
+ throw new Error(`Column ${col.key} missing display_name`);
408
+ }
409
+ if (!col.short_description?.fr || !col.short_description?.en) {
410
+ throw new Error(`Column ${col.key} missing short_description`);
411
+ }
412
+ if (!col.segment_hint)
413
+ col.segment_hint = 'action';
414
+ if (!col.files_to_create)
415
+ col.files_to_create = [];
416
+ if (!col.rationale)
417
+ col.rationale = { fr: '', en: '' };
418
+ if (!col.token_cost_estimate)
419
+ col.token_cost_estimate = 'medium';
420
+ if (!col.overlap_warnings)
421
+ col.overlap_warnings = [];
422
+ }
423
+ return parsed;
424
+ }
425
+ catch (error) {
426
+ if (error instanceof SyntaxError) {
427
+ throw new Error(`Invalid JSON in Claude response: ${error.message}`);
428
+ }
429
+ throw error;
430
+ }
431
+ }
432
+ /**
433
+ * Compute overlap warnings for proposed columns against existing catalog
434
+ */
435
+ export function computeOverlaps(proposed, existingSlugs) {
436
+ const existingSet = new Set(existingSlugs.map(s => s.toLowerCase()));
437
+ for (const col of proposed) {
438
+ const colKey = col.key.toLowerCase();
439
+ // Check for exact match
440
+ if (existingSet.has(colKey)) {
441
+ if (!col.overlap_warnings.includes(col.key)) {
442
+ col.overlap_warnings.push(col.key);
443
+ }
444
+ }
445
+ // Check for similar slugs (contains key or key contains slug)
446
+ for (const existing of existingSlugs) {
447
+ const existingLower = existing.toLowerCase();
448
+ if ((colKey.includes(existingLower) || existingLower.includes(colKey)) &&
449
+ colKey !== existingLower &&
450
+ !col.overlap_warnings.includes(existing)) {
451
+ col.overlap_warnings.push(existing);
452
+ }
453
+ }
454
+ }
455
+ }
456
+ /**
457
+ * Execute the autocreate analysis using Claude CLI
458
+ */
459
+ export function executeAutocreate() {
460
+ // Gather project context
461
+ const context = gatherProjectContext();
462
+ // Get existing slugs for deduplication
463
+ const existingSlugs = getExistingSlugs();
464
+ // Build prompt
465
+ const prompt = buildAutocreatePrompt(context, existingSlugs);
466
+ // Execute Claude CLI with extended timeout for exhaustive analysis
467
+ const proc = spawnSync('claude', ['-p', prompt], {
468
+ encoding: 'utf-8',
469
+ timeout: 600000, // 10 minutes - analysis with many columns takes time
470
+ maxBuffer: 10 * 1024 * 1024, // 10MB - response can be large with many columns
471
+ });
472
+ if (proc.error) {
473
+ throw new Error(`Claude CLI error: ${proc.error.message}`);
474
+ }
475
+ if (proc.status !== 0) {
476
+ throw new Error(`Claude CLI exited with code ${proc.status}: ${proc.stderr}`);
477
+ }
478
+ const output = proc.stdout;
479
+ if (!output || output.trim().length === 0) {
480
+ throw new Error('Claude returned empty response');
481
+ }
482
+ // Parse response
483
+ const result = parseAutocreateResponse(output);
484
+ // Compute overlaps
485
+ computeOverlaps(result.proposed_columns, existingSlugs);
486
+ return result;
487
+ }
488
+ /**
489
+ * Check if Claude CLI is available
490
+ */
491
+ export function isClaudeAvailable() {
492
+ try {
493
+ const result = spawnSync('claude', ['--version'], {
494
+ encoding: 'utf-8',
495
+ timeout: 5000,
496
+ });
497
+ return result.status === 0;
498
+ }
499
+ catch {
500
+ return false;
501
+ }
502
+ }
503
+ //# sourceMappingURL=autocreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocreate.js","sourceRoot":"","sources":["../../src/services/autocreate.ts"],"names":[],"mappings":"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"}
@@ -145,4 +145,53 @@ export interface SyncResult {
145
145
  transitioned: string[];
146
146
  errors: string[];
147
147
  }
148
+ /**
149
+ * Bilingual content structure
150
+ */
151
+ export interface BilingualContent {
152
+ fr: string;
153
+ en: string;
154
+ }
155
+ /**
156
+ * File to create for an autocreate column
157
+ */
158
+ export interface AutocreateFile {
159
+ path: string;
160
+ content: BilingualContent;
161
+ }
162
+ /**
163
+ * Proposed column from autocreate analysis
164
+ */
165
+ export interface AutocreateProposedColumn {
166
+ id: string;
167
+ key: string;
168
+ display_name: BilingualContent;
169
+ short_description: BilingualContent;
170
+ segment_hint: PipelineSegment | null;
171
+ files_to_create: AutocreateFile[];
172
+ rationale: BilingualContent;
173
+ token_cost_estimate: 'low' | 'medium' | 'high';
174
+ overlap_warnings: string[];
175
+ }
176
+ /**
177
+ * Autocreate analysis result from Claude
178
+ */
179
+ export interface AutocreateResult {
180
+ proposed_columns: AutocreateProposedColumn[];
181
+ global_summary: BilingualContent;
182
+ assumptions: string[];
183
+ risks: string[];
184
+ }
185
+ /**
186
+ * Project context for autocreate analysis
187
+ */
188
+ export interface ProjectContext {
189
+ dependencies: string[];
190
+ devDependencies: string[];
191
+ scripts: Record<string, string>;
192
+ detectedTooling: string[];
193
+ directoryStructure: string[];
194
+ configFiles: string[];
195
+ projectDescription: string;
196
+ }
148
197
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE;QACR,UAAU,EAAE,cAAc,CAAC;QAC3B,MAAM,EAAE,cAAc,CAAC;QACvB,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autocode-cli/autocode",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "Filesystem-based ticket system with web dashboard",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",