@chimerai/cli 1.2.5 → 1.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAu6ED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,iBAyHtE"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AA26ED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,iBAyHtE"}
@@ -1186,6 +1186,10 @@ function stripAuthFromRoute(content) {
1186
1186
  .replace(/^ import \{ getServerSession \} from 'next-auth';\n/m, '')
1187
1187
  .replace(/^ import \{ authOptions \} from '@\/lib\/auth';\n/m, '')
1188
1188
  .replace(/\n const session = await getServerSession\(authOptions\);\n if \(!session\?\.user\?\.id\) \{\n return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n \}\n/g, '\n')
1189
+ .replace(/\n const session = await getServerSession\(authOptions\);\n if \(!session\?\.user\) \{\n return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n \}\n/g, '\n')
1190
+ .replace(/^ const session = await getServerSession\(authOptions\);\n/m, '')
1191
+ .replace(/^ if \(!session\?\.user\?\.id\) \{\n return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n \}\n/m, '')
1192
+ .replace(/^ if \(!session\?\.user\) \{\n return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n \}\n/m, '')
1189
1193
  .replace(/,?\n\s*user_id: session\.user\.id,?/g, '');
1190
1194
  }
1191
1195
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4DH,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmED,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,iBAyI9E"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0EH,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAmED,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,iBAyI9E"}
@@ -65,9 +65,14 @@ function stripAuthFromGeneratedCode(code) {
65
65
  code = code.replace(/\n {4}const session = await getServerSession\(authOptions\);\n {4}if \(!session\?\.user\) \{\n {6}return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n {4}\}\n/g, '\n');
66
66
  // Remove inline session check blocks — 2-space indentation (models/prompts routes)
67
67
  code = code.replace(/\n {2}const session = await getServerSession\(authOptions\);\n {2}if \(!session\?\.user\) \{\n {4}return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n {2}\}\n/g, '\n');
68
+ // Remove inline session check blocks — 2-space indentation with ?.user?.id (RAG routes)
69
+ code = code.replace(/\n {2}const session = await getServerSession\(authOptions\);\n {2}if \(!session\?\.user\?\.id\) \{\n {4}return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n {2}\}\n/g, '\n');
70
+ // Remove inline session check blocks — 4-space indentation with ?.user?.id
71
+ code = code.replace(/\n {4}const session = await getServerSession\(authOptions\);\n {4}if \(!session\?\.user\?\.id\) \{\n {6}return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n {4}\}\n/g, '\n');
68
72
  // Also catch orphaned getServerSession calls (import already removed but call remains)
69
73
  code = code.replace(/^ {2}const session = await getServerSession\(authOptions\);\n/m, '');
70
74
  code = code.replace(/^ {2}if \(!session\?\.user\) \{\n {4}return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n {2}\}\n/m, '');
75
+ code = code.replace(/^ {2}if \(!session\?\.user\?\.id\) \{\n {4}return NextResponse\.json\(\{ error: 'Unauthorized' \}, \{ status: 401 \}\);\n {2}\}\n/m, '');
71
76
  // Replace session.user.id with local-dev fallback
72
77
  code = code.replace(/session\.user\.id/g, "'local-dev'");
73
78
  code = code.replace(/session\?\.user\?\.id/g, "'local-dev'");
@@ -1316,18 +1321,47 @@ async function getServerSessionWithPermissions() {
1316
1321
  const ragPage = templates.generateRagPage();
1317
1322
  await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/rag'));
1318
1323
  await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/rag/page.tsx'), ragPage);
1319
- const ragUploadRoute = templates.generateRagUploadRoute();
1320
1324
  await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/rag'));
1321
- await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/route.ts'), ragUploadRoute);
1322
- const ragQueryRoute = templates.generateRagQueryRoute();
1325
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/route.ts'), _strip(templates.generateRagUploadRoute()));
1323
1326
  await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/rag/query'));
1324
- await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/query/route.ts'), ragQueryRoute);
1325
- const ragStatsRoute = templates.generateRagStatsRoute();
1327
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/query/route.ts'), _strip(templates.generateRagQueryRoute()));
1326
1328
  await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/rag/stats'));
1327
- await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/stats/route.ts'), ragStatsRoute);
1328
- const ragClearRoute = templates.generateRagClearRoute();
1329
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/stats/route.ts'), _strip(templates.generateRagStatsRoute()));
1329
1330
  await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/rag/clear'));
1330
- await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/clear/route.ts'), ragClearRoute);
1331
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/clear/route.ts'), _strip(templates.generateRagClearRoute()));
1332
+ await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/rag/delete'));
1333
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/rag/delete/route.ts'), _strip(templates.generateRagDeleteRoute()));
1334
+ // ── AI Service (Python) für RAG ──────────────────────────────────────
1335
+ const aiDir = path_1.default.join(targetDir, 'services/ai');
1336
+ await fs_extra_1.default.ensureDir(path_1.default.join(aiDir, 'services'));
1337
+ await fs_extra_1.default.ensureDir(path_1.default.join(aiDir, 'routes'));
1338
+ await fs_extra_1.default.ensureDir(path_1.default.join(aiDir, 'data'));
1339
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'data', '.gitkeep'), '');
1340
+ // Core files
1341
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'config.py'), templates.generateAiServiceConfig(['rag']));
1342
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'provider_client.py'), templates.generateProviderClient());
1343
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', '__init__.py'), templates.generateServicesInit());
1344
+ // Dynamic files
1345
+ const ragModules = ['chat', 'rag'];
1346
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'main.py'), templates.generateAiServiceMain(ragModules, []));
1347
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'models.py'), templates.generateAiServiceModels(ragModules));
1348
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'requirements.txt'), templates.generateAiServiceRequirements(ragModules, []));
1349
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'README.md'), templates.generateAiServiceReadme(ragModules, []));
1350
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'routes', '__init__.py'), templates.generateRoutesInit());
1351
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'Dockerfile'), templates.generateAiServiceDockerfile());
1352
+ // RAG-specific Python services
1353
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'rag_service.py'), templates.generateRagService());
1354
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'vector_store.py'), templates.generateVectorStore());
1355
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'embedding_service.py'), templates.generateEmbeddingService());
1356
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'file_extractor.py'), templates.generateFileExtractor());
1357
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'routes', 'rag_routes.py'), templates.generateRagRoutes());
1358
+ // Chat services (required by RAG)
1359
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'chat_service.py'), templates.generateChatService());
1360
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'model_service.py'), templates.generateModelService());
1361
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'services', 'moderation_service.py'), templates.generateModerationService());
1362
+ await fs_extra_1.default.writeFile(path_1.default.join(aiDir, 'routes', 'chat_routes.py'), templates.generateChatRoutes());
1363
+ // Manifest
1364
+ templates.writeAiManifest(targetDir, { modules: ragModules, tools: [], installedAt: new Date().toISOString().split('T')[0], cliVersion: '1.2.5' });
1331
1365
  }
1332
1366
  }
1333
1367
  async function createSeedScript(targetDir, features, sqlite) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chimerai/cli",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "CLI wizard for ChimerAI starter kit — scaffold auth, RBAC, AI chat, billing and more into any Next.js project",
5
5
  "main": "./dist/index.js",
6
6
  "bin": {