multi-agents-cli 1.0.51 → 1.0.53

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 (44) hide show
  1. package/core/templates/.agents/backend/API.md +259 -0
  2. package/core/templates/.agents/backend/AUTH.md +246 -0
  3. package/core/templates/.agents/backend/DB.md +257 -0
  4. package/core/templates/.agents/backend/EVENTS.md +253 -0
  5. package/core/templates/.agents/backend/INIT.md +239 -0
  6. package/core/templates/.agents/backend/JOBS.md +256 -0
  7. package/core/templates/.agents/backend/LOGIC.md +291 -0
  8. package/core/templates/.agents/backend/TESTING.md +266 -0
  9. package/core/templates/.agents/client/ACCESSIBILITY.md +266 -0
  10. package/core/templates/.agents/client/FORMS.md +234 -0
  11. package/core/templates/.agents/client/LOGIC.md +277 -0
  12. package/core/templates/.agents/client/ROUTING.md +235 -0
  13. package/core/templates/.agents/client/TESTING.md +241 -0
  14. package/core/templates/.agents/client/UI.md +226 -0
  15. package/core/templates/.agents/shared/CLOUD.md +229 -0
  16. package/core/templates/.agents/shared/CLOUD_TEARDOWN.md +158 -0
  17. package/core/templates/.agents/shared/SECURITY.md +286 -0
  18. package/core/templates/.frameworks/backend/django.md +55 -0
  19. package/core/templates/.frameworks/backend/express.md +74 -0
  20. package/core/templates/.frameworks/backend/fastapi.md +107 -0
  21. package/core/templates/.frameworks/backend/fastify.md +74 -0
  22. package/core/templates/.frameworks/backend/nestjs.md +75 -0
  23. package/core/templates/.frameworks/client/angular.md +80 -0
  24. package/core/templates/.frameworks/client/nextjs.md +47 -0
  25. package/core/templates/.frameworks/client/nuxt.md +45 -0
  26. package/core/templates/.frameworks/client/remix.md +44 -0
  27. package/core/templates/.frameworks/client/sveltekit.md +44 -0
  28. package/core/templates/.frameworks/client/vite-react.md +45 -0
  29. package/core/templates/CLAUDE.md +531 -0
  30. package/core/templates/CLOUD_STATE.md +55 -0
  31. package/core/templates/CONTRACTS.md +16 -0
  32. package/core/templates/TASKS_HISTORY.md +6 -0
  33. package/core/templates/backend/CLAUDE.md +207 -0
  34. package/core/templates/client/CLAUDE.md +213 -0
  35. package/core/templates/shared/.gitkeep +0 -0
  36. package/core/templates/shared/wiring.config.json +14 -0
  37. package/core/workflow/agent.js +1404 -0
  38. package/core/workflow/complete.js +354 -0
  39. package/core/workflow/guards.js +643 -0
  40. package/core/workflow/reset.js +246 -0
  41. package/core/workflow/restart.js +243 -0
  42. package/core/workflow/tasks_history.js +120 -0
  43. package/init.js +35 -32
  44. package/package.json +2 -1
package/init.js CHANGED
@@ -200,9 +200,9 @@ const FRAMEWORK_VERSION_FALLBACK = {
200
200
  'Nuxt': ['3', '2', null],
201
201
  'SvelteKit': ['2', '1', null],
202
202
  'Remix': ['2', '1', null],
203
- 'Vite+React': ['6', '5', '4'],
203
+ 'Vite+React': ['8', '7', '6'],
204
204
  'NestJS': ['11', '10', '9' ],
205
- 'Express': ['5', '4', null],
205
+ 'Express': ['5', '4'],
206
206
  'Fastify': ['5', '4', null],
207
207
  'FastAPI': ['0.115', '0.111', '0.104'],
208
208
  'Django': ['5.1', '4.2', '3.2'],
@@ -268,7 +268,7 @@ const STATE_OPTIONS = {
268
268
 
269
269
  const UI_OPTIONS = {
270
270
  'Next.js': ['shadcn/ui', 'Radix UI', 'MUI', 'Chakra UI', 'Ant Design'],
271
- 'Vite+React': ['shadcn/ui', 'Radix UI', 'MUI', 'Chakra UI', 'Ant Design'],
271
+ 'Vite+React': ['Radix UI', 'MUI', 'Chakra UI', 'Ant Design'],
272
272
  'Remix': ['shadcn/ui', 'Radix UI', 'MUI', 'Chakra UI', 'Ant Design'],
273
273
  'Angular': ['Angular Material', 'PrimeNG', 'Clarity'],
274
274
  'Nuxt': ['Vuetify', 'PrimeVue', 'Naive UI'],
@@ -283,6 +283,15 @@ const STYLING_OPTIONS = [
283
283
  'UnoCSS',
284
284
  ];
285
285
 
286
+ const DB_OPTIONS = ['PostgreSQL', 'MySQL', 'MongoDB', 'SQLite', 'Skip (agent will propose when needed)'];
287
+
288
+ const ORM_OPTIONS_BY_DB = {
289
+ 'PostgreSQL': ['Prisma', 'TypeORM', 'Drizzle', 'Sequelize', 'raw pg driver', 'Skip (agent will propose when needed)'],
290
+ 'MySQL': ['Prisma', 'TypeORM', 'Drizzle', 'Sequelize', 'raw mysql2 driver', 'Skip (agent will propose when needed)'],
291
+ 'MongoDB': ['Mongoose', 'Prisma', 'raw MongoDB driver', 'Skip (agent will propose when needed)'],
292
+ 'SQLite': ['Prisma', 'Drizzle', 'better-sqlite3', 'Skip (agent will propose when needed)'],
293
+ };
294
+
286
295
  const ORM_OPTIONS = {
287
296
  'NestJS': ['TypeORM', 'Prisma', 'MikroORM', 'Drizzle'],
288
297
  'Express': ['Prisma', 'TypeORM', 'Drizzle', 'Sequelize'],
@@ -857,7 +866,8 @@ const main = async () => {
857
866
  label: i === 0 ? `v${v} ${dim('(latest)')}` : `v${v}`,
858
867
  value: v,
859
868
  }));
860
- const vIdx = await arrowSelect(`* ${clientFw.value} version:`, versionChoices, rl, true);
869
+ const versionLabel = clientFw.value === 'Vite+React' ? '* Vite version:' : `* ${clientFw.value} version:`;
870
+ const vIdx = await arrowSelect(versionLabel, versionChoices, rl, true);
861
871
  if (vIdx === versionChoices.length) { restartIfBack(BACK); return; }
862
872
  clientFwVersion = clientVersions[vIdx];
863
873
  }
@@ -922,8 +932,19 @@ const main = async () => {
922
932
  }
923
933
  }
924
934
 
925
- backendOrm = backendFw ? await selectOptional('ORM / database layer:', ORM_OPTIONS[backendFw] || []) : null;
926
- if (restartIfBack(backendOrm)) return;
935
+ // DB type
936
+ let backendDb = null;
937
+ if (backendFw) {
938
+ backendDb = await selectOptional('Database type:', DB_OPTIONS);
939
+ if (restartIfBack(backendDb)) return;
940
+ }
941
+ // ORM / query layer (filtered by DB type)
942
+ backendOrm = null;
943
+ if (backendFw && backendDb && backendDb !== 'Skip (agent will propose when needed)') {
944
+ const ormChoices = ORM_OPTIONS_BY_DB[backendDb] || ORM_OPTIONS[backendFw] || [];
945
+ backendOrm = await selectOptional('ORM / query layer:', ormChoices);
946
+ if (restartIfBack(backendOrm)) return;
947
+ }
927
948
  backendAuth = backendFw ? await selectOptional('Auth strategy:', AUTH_OPTIONS[backendFw] || []) : null;
928
949
  if (restartIfBack(backendAuth)) return;
929
950
  backendType = backendFw ? 'separate' : null;
@@ -1039,20 +1060,11 @@ const main = async () => {
1039
1060
  separator();
1040
1061
  console.log(`\n${bold('Setting up your project...')}\n`);
1041
1062
 
1042
- // ── Clone multi-agents-core ──────────────────────────────────────────────────
1063
+ // ── Load bundled core ───────────────────────────────────────────────────────
1043
1064
 
1044
- const CORE_REPO = 'https://github.com/JDev-il/multi-agents-core.git';
1045
- const CORE_DIR = path.join(ROOT, '.agents-core');
1065
+ const CORE_DIR = path.join(__dirname, 'core');
1046
1066
 
1047
- console.log(` Fetching templates...`);
1048
- try {
1049
- execSync(`git clone "${CORE_REPO}" "${CORE_DIR}"`, { stdio: 'pipe' });
1050
- console.log(` ${green('✓')} Templates fetched`);
1051
- } catch (err) {
1052
- console.log(` ${red('✗')} Failed to fetch templates. Check your internet connection.`);
1053
- rl.close();
1054
- process.exit(1);
1055
- }
1067
+ console.log(` ${green('✓')} Templates ready`);
1056
1068
 
1057
1069
  const TEMPLATES = path.join(CORE_DIR, 'templates');
1058
1070
 
@@ -1102,8 +1114,6 @@ const main = async () => {
1102
1114
  fs.mkdirSync(WORKFLOW_DEST, { recursive: true });
1103
1115
  copyDir(WORKFLOW_SRC, WORKFLOW_DEST);
1104
1116
  console.log(` ${green('✓')} Workflow scripts copied (.workflow/)`);
1105
-
1106
- execSync(`rm -rf "${CORE_DIR}"`);
1107
1117
  console.log(` ${green('✓')} Temporary files cleaned up`);
1108
1118
 
1109
1119
  // ── Write @config values ─────────────────────────────────────────────────────
@@ -1138,7 +1148,6 @@ const main = async () => {
1138
1148
  }
1139
1149
 
1140
1150
  ensureGitignore('worktrees/');
1141
- ensureGitignore('.agents-core/');
1142
1151
  ensureGitignore('.scaffold/');
1143
1152
  ensureGitignore('.workflow/');
1144
1153
  ensureGitignore('node_modules/');
@@ -1500,17 +1509,11 @@ fi
1500
1509
  } catch { /* best-effort */ }
1501
1510
 
1502
1511
  if (selected.next === 'launch') {
1503
- const launchConfirm = await arrowConfirm('Ready to launch your first task?', rl);
1504
- if (launchConfirm) {
1505
- rl.close();
1506
- console.log('');
1507
- const child = spawn('node', [path.join(ROOT, '.workflow', 'agent.js')], {
1508
- stdio: 'inherit',
1509
- cwd: ROOT,
1510
- });
1511
- child.on('exit', (code) => process.exit(code));
1512
- return;
1513
- }
1512
+ separator();
1513
+ console.log(`\n ${bold(green(' Project ready!'))}\n`);
1514
+ console.log(` Run ${cyan('npm run agent')} to start your first task.\n`);
1515
+ rl.close();
1516
+ return;
1514
1517
  }
1515
1518
 
1516
1519
  console.log('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "multi-agents-cli",
3
- "version": "1.0.51",
3
+ "version": "1.0.53",
4
4
  "description": "Multi-agent workflow orchestration for Claude Code — isolated git worktrees, structured state tracking, autonomous task chaining",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "files": [
23
23
  "init.js",
24
+ "core/",
24
25
  "README.md",
25
26
  "LICENSE"
26
27
  ],