@chimerai/cli 0.2.91 → 0.2.93
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.
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +39 -7
- package/dist/templates/auth.d.ts +7 -0
- package/dist/templates/auth.d.ts.map +1 -1
- package/dist/templates/auth.js +29 -0
- package/dist/templates/index.d.ts +2 -2
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +6 -3
- package/dist/templates/prisma.d.ts +7 -0
- package/dist/templates/prisma.d.ts.map +1 -1
- package/dist/templates/prisma.js +46 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkDH,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"}
|
package/dist/commands/create.js
CHANGED
|
@@ -51,6 +51,26 @@ const templates = __importStar(require("../templates/index.js"));
|
|
|
51
51
|
const index_js_1 = require("../templates/index.js");
|
|
52
52
|
const utils_js_1 = require("../utils.js");
|
|
53
53
|
const license_js_1 = require("../license.js");
|
|
54
|
+
/**
|
|
55
|
+
* Strips next-auth and auth-library dependencies from a generated route file.
|
|
56
|
+
* Used when the app is created without the 'auth' feature, so the project builds
|
|
57
|
+
* without next-auth installed. Removes: imports, session checks, audit log calls.
|
|
58
|
+
*/
|
|
59
|
+
function stripAuthFromGeneratedCode(code) {
|
|
60
|
+
// Remove next-auth and related imports
|
|
61
|
+
code = code.replace(/^import \{ getServerSession \} from 'next-auth';\n/m, '');
|
|
62
|
+
code = code.replace(/^import \{ authOptions \} from '@\/lib\/auth';\n/m, '');
|
|
63
|
+
code = code.replace(/^import \{ logAuditAction \} from '@\/lib\/audit';\n/m, '');
|
|
64
|
+
// Remove inline session check blocks
|
|
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
|
+
// Replace session.user.id with local-dev fallback
|
|
67
|
+
code = code.replace(/session\.user\.id/g, "'local-dev'");
|
|
68
|
+
code = code.replace(/session\?\.user\?\.id/g, "'local-dev'");
|
|
69
|
+
// Remove audit log blocks (multi-line, lazy match)
|
|
70
|
+
code = code.replace(/\n {4}\/\/ Audit log\n {4}await logAuditAction\(\{[\s\S]*?\n {4}\}\);\n/g, '\n');
|
|
71
|
+
code = code.replace(/\n {4}if \(session\?\.user\?\.id\) \{\n {6}await logAuditAction\(\{[\s\S]*?\n {4}\}\);\n {4}\}\n/g, '\n');
|
|
72
|
+
return code;
|
|
73
|
+
}
|
|
54
74
|
/** Canonical feature definitions for `chimerai create` */
|
|
55
75
|
const AVAILABLE_FEATURES = [
|
|
56
76
|
{ name: '🔐 Authentication (NextAuth)', value: 'auth', licenseKey: 'auth', checked: true },
|
|
@@ -397,8 +417,8 @@ async function createPackageJson(targetDir, projectName, features) {
|
|
|
397
417
|
// dependencies['@chimerai/admin-ui'] = 'workspace:*'; // Not available standalone yet
|
|
398
418
|
}
|
|
399
419
|
if (features.includes('ai-chat')) {
|
|
400
|
-
dependencies['react-markdown'] = '^
|
|
401
|
-
dependencies['remark-gfm'] = '^4.0.
|
|
420
|
+
dependencies['react-markdown'] = '^10.1.0';
|
|
421
|
+
dependencies['remark-gfm'] = '^4.0.1';
|
|
402
422
|
}
|
|
403
423
|
if (features.includes('billing')) {
|
|
404
424
|
// dependencies['@chimerai/billing'] = 'workspace:*'; // Not available standalone yet
|
|
@@ -954,6 +974,15 @@ async function copyFeatureFiles(targetDir, features) {
|
|
|
954
974
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'lib/auth'));
|
|
955
975
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'lib/auth/resolve-auth.ts'), resolveAuth);
|
|
956
976
|
}
|
|
977
|
+
else {
|
|
978
|
+
// No-auth mode: generate stubs so routes that import these modules compile
|
|
979
|
+
const apiProtectionStub = templates.generateApiProtectionLibNoAuth();
|
|
980
|
+
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'lib/api-protection.ts'), apiProtectionStub);
|
|
981
|
+
// resolve-auth stub (used by chat stream route and v1/models route)
|
|
982
|
+
const resolveAuthStub = templates.generateResolveAuthNoAuth();
|
|
983
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'lib/auth'));
|
|
984
|
+
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'lib/auth/resolve-auth.ts'), resolveAuthStub);
|
|
985
|
+
}
|
|
957
986
|
// ── Widget Infrastructure (embeddable chat for external apps) ──────
|
|
958
987
|
// Rate limiter (supports both session and API-key tiers)
|
|
959
988
|
const rateLimiter = templates.generateRateLimiter();
|
|
@@ -980,20 +1009,23 @@ async function copyFeatureFiles(targetDir, features) {
|
|
|
980
1009
|
// Notify provider change utility
|
|
981
1010
|
const notifyLib = templates.generateNotifyProviderChangeLib();
|
|
982
1011
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'lib/notify-provider-change.ts'), notifyLib);
|
|
1012
|
+
// When auth is not enabled, strip next-auth imports/checks from provider routes
|
|
1013
|
+
const _withAuth = features.includes('auth');
|
|
1014
|
+
const _strip = (code) => (_withAuth ? code : stripAuthFromGeneratedCode(code));
|
|
983
1015
|
// Provider CRUD route — /api/providers
|
|
984
|
-
const providerCrudRoute = templates.generateProviderCrudRoute();
|
|
1016
|
+
const providerCrudRoute = _strip(templates.generateProviderCrudRoute());
|
|
985
1017
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/providers'));
|
|
986
1018
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/providers/route.ts'), providerCrudRoute);
|
|
987
1019
|
// Provider [id] route — /api/providers/[id]
|
|
988
|
-
const providerIdRoute = templates.generateProviderIdRoute();
|
|
1020
|
+
const providerIdRoute = _strip(templates.generateProviderIdRoute());
|
|
989
1021
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/providers/[id]'));
|
|
990
1022
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/providers/[id]/route.ts'), providerIdRoute);
|
|
991
1023
|
// Provider test route — /api/providers/[id]/test
|
|
992
|
-
const providerTestRoute = templates.generateProviderTestRoute();
|
|
1024
|
+
const providerTestRoute = _strip(templates.generateProviderTestRoute());
|
|
993
1025
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/providers/[id]/test'));
|
|
994
1026
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/providers/[id]/test/route.ts'), providerTestRoute);
|
|
995
1027
|
// Provider sync route — /api/providers/[id]/sync
|
|
996
|
-
const providerSyncRoute = templates.generateProviderSyncRoute();
|
|
1028
|
+
const providerSyncRoute = _strip(templates.generateProviderSyncRoute());
|
|
997
1029
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/providers/[id]/sync'));
|
|
998
1030
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/providers/[id]/sync/route.ts'), providerSyncRoute);
|
|
999
1031
|
// Internal providers route — /api/internal/providers
|
|
@@ -1244,7 +1276,7 @@ async function getServerSessionWithPermissions() {
|
|
|
1244
1276
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/conversations/[id]/route.ts'), templates.generateConversationDetailRoute());
|
|
1245
1277
|
// Models listing route (used by ModelSelector in chat — session-only, internal)
|
|
1246
1278
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/models'));
|
|
1247
|
-
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/models/route.ts'), templates.generateModelsRoute());
|
|
1279
|
+
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/models/route.ts'), _strip(templates.generateModelsRoute()));
|
|
1248
1280
|
// Public v1 models route (dual-auth: session OR API-key, for widgets/external apps)
|
|
1249
1281
|
await fs_extra_1.default.ensureDir(path_1.default.join(targetDir, 'app/api/v1/models'));
|
|
1250
1282
|
await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'app/api/v1/models/route.ts'), templates.generateV1ModelsRoute());
|
package/dist/templates/auth.d.ts
CHANGED
|
@@ -45,4 +45,11 @@ export declare function generateAuthLib(): string;
|
|
|
45
45
|
* @returns TypeScript content for lib/auth/resolve-auth.ts
|
|
46
46
|
*/
|
|
47
47
|
export declare function generateResolveAuth(): string;
|
|
48
|
+
/**
|
|
49
|
+
* Generates a no-auth resolve-auth stub.
|
|
50
|
+
* Returns a local dev user without checking sessions or API keys.
|
|
51
|
+
* Use when auth feature is not selected.
|
|
52
|
+
* @returns TypeScript content for lib/auth/resolve-auth.ts
|
|
53
|
+
*/
|
|
54
|
+
export declare function generateResolveAuthNoAuth(): string;
|
|
48
55
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/templates/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA4G1C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAUhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAiB7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuC9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAgGxC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA8C5C"}
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/templates/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA4G1C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAUhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAiB7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuC9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAgGxC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA8C5C;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAqBlD"}
|
package/dist/templates/auth.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.generateLogoutButton = generateLogoutButton;
|
|
|
11
11
|
exports.generateNextAuthTypes = generateNextAuthTypes;
|
|
12
12
|
exports.generateAuthLib = generateAuthLib;
|
|
13
13
|
exports.generateResolveAuth = generateResolveAuth;
|
|
14
|
+
exports.generateResolveAuthNoAuth = generateResolveAuthNoAuth;
|
|
14
15
|
/**
|
|
15
16
|
* Generates the NextAuth API route with credentials provider
|
|
16
17
|
* Includes user authentication, JWT callbacks, and role/permissions handling
|
|
@@ -379,3 +380,31 @@ export async function resolveAuth(request: NextRequest): Promise<AuthContext> {
|
|
|
379
380
|
}
|
|
380
381
|
`;
|
|
381
382
|
}
|
|
383
|
+
/**
|
|
384
|
+
* Generates a no-auth resolve-auth stub.
|
|
385
|
+
* Returns a local dev user without checking sessions or API keys.
|
|
386
|
+
* Use when auth feature is not selected.
|
|
387
|
+
* @returns TypeScript content for lib/auth/resolve-auth.ts
|
|
388
|
+
*/
|
|
389
|
+
function generateResolveAuthNoAuth() {
|
|
390
|
+
return `// @chimerai component=ResolveAuth version=1.0-no-auth
|
|
391
|
+
// No-Auth mode: returns a local dev user without session checks.
|
|
392
|
+
import { NextRequest } from 'next/server';
|
|
393
|
+
|
|
394
|
+
export interface AuthContext {
|
|
395
|
+
userId: string;
|
|
396
|
+
email: string;
|
|
397
|
+
authMethod: 'session' | 'api-key';
|
|
398
|
+
scopes?: string[];
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
402
|
+
export async function resolveAuth(_request: NextRequest): Promise<AuthContext> {
|
|
403
|
+
return {
|
|
404
|
+
userId: 'local-dev',
|
|
405
|
+
email: 'local@localhost',
|
|
406
|
+
authMethod: 'session',
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
`;
|
|
410
|
+
}
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { generateNextConfig, generateTsConfig, generateTailwindConfig, generatePostcssConfig, generateGlobalsCss, } from './config.js';
|
|
9
9
|
export { generateAppLayout, generateAppLayoutWithAuth, generateAppPage, generateAppPageNoAuth, generateAuthBasicLayout, generateDashboardLayout, generateDashboardLayoutNoAuth, generateDashboardPage, generateDashboardPageNoAuth, generateProfilePage, generateUserProfileRoute, generateSettingsPage, generateUseAppNameHook, } from './layout.js';
|
|
10
|
-
export { generateNextAuthRoute, generateLoginPage, generateSessionProvider, generateLogoutButton, generateNextAuthTypes, generateAuthLib, generateResolveAuth, } from './auth.js';
|
|
10
|
+
export { generateNextAuthRoute, generateLoginPage, generateSessionProvider, generateLogoutButton, generateNextAuthTypes, generateAuthLib, generateResolveAuth, generateResolveAuthNoAuth, } from './auth.js';
|
|
11
11
|
export { generateChatPage, generateChatPageNoAuth, generateUseChatHook, generateChatMessage, generateChatInput, generateChatSidebar, generateModelSelector, generateChatStreamRouteWithPersistence, generateConversationsRoute, generateConversationDetailRoute, } from './chat.js';
|
|
12
12
|
export { generateAdminLayout, generateAdminDashboardPage, generateAdminUsersPage, generateAdminRolesPage, generateAdminSettingsPage, generateAdminLogsPage, generateAuditLogHelper, generatePermissionsLib, generateRequirePermissionLib, } from './admin.js';
|
|
13
13
|
export { generateModelProvidersPage, generatePromptManagementPage, generatePromptSelector, } from './components.js';
|
|
14
14
|
export { generateAdminUsersRoute, generateAdminUsersIdRoute, generateAdminRolesRoute, generateAdminRolesIdRoute, generatePromptsRoute, generatePromptsIdRoute, generatePromptsSetDefaultRoute, generateHealthRoute, generateModelsRoute, generateV1ModelsRoute, generateAuditLogRoute, generateGdprDataExportRoute, generateGdprAccountDeleteRoute, generateAdminSettingsRoute, generateAppSettingsRoute, } from './api-routes.js';
|
|
15
15
|
export { generateProviderCrudRoute, generateProviderIdRoute, generateProviderTestRoute, generateProviderSyncRoute, generateInternalProvidersRoute, generateInternalProviderIdRoute, generateInternalProviderUsageRoute, generateNotifyProviderChangeLib, } from './provider-routes.js';
|
|
16
|
-
export { generatePrismaLib, generateEncryptionLib, generateApiKeyAuthLib, generateApiProtectionLib, generatePrismaSchema, } from './prisma.js';
|
|
16
|
+
export { generatePrismaLib, generateEncryptionLib, generateApiKeyAuthLib, generateApiProtectionLib, generateApiProtectionLibNoAuth, generatePrismaSchema, } from './prisma.js';
|
|
17
17
|
export { generateMiddleware, generateMiddlewareNoAuth } from './middleware.js';
|
|
18
18
|
export { generateStripeLib, generateBillingPage, generateCheckoutRoute, generatePortalRoute, generateSubscriptionRoute, generateStripeWebhookRoute, } from './billing.js';
|
|
19
19
|
export { generateRagLib, generateRagPage, generateRagUploadRoute, generateRagQueryRoute, generateRagStatsRoute, generateRagClearRoute, generateRagDeleteRoute, } from './rag.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"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"}
|
package/dist/templates/index.js
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* written to a file in the generated project.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
10
|
+
exports.generateAdminUsersIdRoute = exports.generateAdminUsersRoute = exports.generatePromptSelector = exports.generatePromptManagementPage = exports.generateModelProvidersPage = exports.generateRequirePermissionLib = exports.generatePermissionsLib = exports.generateAuditLogHelper = exports.generateAdminLogsPage = exports.generateAdminSettingsPage = exports.generateAdminRolesPage = exports.generateAdminUsersPage = exports.generateAdminDashboardPage = exports.generateAdminLayout = exports.generateConversationDetailRoute = exports.generateConversationsRoute = exports.generateChatStreamRouteWithPersistence = exports.generateModelSelector = exports.generateChatSidebar = exports.generateChatInput = exports.generateChatMessage = exports.generateUseChatHook = exports.generateChatPageNoAuth = exports.generateChatPage = exports.generateResolveAuthNoAuth = exports.generateResolveAuth = exports.generateAuthLib = exports.generateNextAuthTypes = exports.generateLogoutButton = exports.generateSessionProvider = exports.generateLoginPage = exports.generateNextAuthRoute = exports.generateUseAppNameHook = exports.generateSettingsPage = exports.generateUserProfileRoute = exports.generateProfilePage = exports.generateDashboardPageNoAuth = exports.generateDashboardPage = exports.generateDashboardLayoutNoAuth = exports.generateDashboardLayout = exports.generateAuthBasicLayout = exports.generateAppPageNoAuth = exports.generateAppPage = exports.generateAppLayoutWithAuth = exports.generateAppLayout = exports.generateGlobalsCss = exports.generatePostcssConfig = exports.generateTailwindConfig = exports.generateTsConfig = exports.generateNextConfig = void 0;
|
|
11
|
+
exports.generateMfaSetupRoute = exports.generateMfaLib = exports.generateRateLimiter = exports.generateApiKeyIdRoute = exports.generateApiKeysRoute = exports.generateApiKeyManagementPage = exports.generateWidgetLoader = exports.generateWidgetBundle = exports.generateRagDeleteRoute = exports.generateRagClearRoute = exports.generateRagStatsRoute = exports.generateRagQueryRoute = exports.generateRagUploadRoute = exports.generateRagPage = exports.generateRagLib = exports.generateStripeWebhookRoute = exports.generateSubscriptionRoute = exports.generatePortalRoute = exports.generateCheckoutRoute = exports.generateBillingPage = exports.generateStripeLib = exports.generateMiddlewareNoAuth = exports.generateMiddleware = exports.generatePrismaSchema = exports.generateApiProtectionLibNoAuth = exports.generateApiProtectionLib = exports.generateApiKeyAuthLib = exports.generateEncryptionLib = exports.generatePrismaLib = exports.generateNotifyProviderChangeLib = exports.generateInternalProviderUsageRoute = exports.generateInternalProviderIdRoute = exports.generateInternalProvidersRoute = exports.generateProviderSyncRoute = exports.generateProviderTestRoute = exports.generateProviderIdRoute = exports.generateProviderCrudRoute = exports.generateAppSettingsRoute = exports.generateAdminSettingsRoute = exports.generateGdprAccountDeleteRoute = exports.generateGdprDataExportRoute = exports.generateAuditLogRoute = exports.generateV1ModelsRoute = exports.generateModelsRoute = exports.generateHealthRoute = exports.generatePromptsSetDefaultRoute = exports.generatePromptsIdRoute = exports.generatePromptsRoute = exports.generateAdminRolesIdRoute = exports.generateAdminRolesRoute = void 0;
|
|
12
|
+
exports.ALL_TEMPLATES = exports.TOOL_GENERATORS = exports.generateToolsInit = exports.generateWebhookTools = exports.generateDeeplTools = exports.generateAirtableTools = exports.generateGoogleSheetsTools = exports.generateVisionTools = exports.generateNlpTools = exports.generateCodeTools = exports.generateDocumentTools = exports.generateWebTools = exports.generateRoutesInit = exports.generateToolsRoutes = exports.generateGuardrailsRoutes = exports.generateRagRoutes = exports.generateChatRoutes = exports.generateFileExtractor = exports.generateDockerComposeAiService = exports.generateAiServiceReadme = exports.generateAiServiceDockerfile = exports.generateAiServiceRequirements = exports.generateAiServiceModels = exports.generateAiServiceConfig = exports.generateAiServiceMain = exports.generateGuardrailsService = exports.generateVectorStore = exports.generateRagService = exports.generateEmbeddingService = exports.generateModerationService = exports.generateModelService = exports.generateChatService = exports.generateServicesInit = exports.generateProviderClient = exports.TOOL_INFO = exports.writeAiManifest = exports.readAiManifest = exports.generateDockerComposeDev = exports.generateDockerComposeProd = exports.generateDockerignore = exports.generateDockerfile = exports.GDPR_SCHEMA_EXTENSION = exports.generateGdprConsentRoute = exports.generateGdprPage = exports.generateGdprLib = exports.MFA_USER_FIELDS = exports.MFA_SCHEMA_EXTENSION = exports.generateMfaPage = exports.generateMfaDisableRoute = exports.generateMfaVerifyRoute = void 0;
|
|
13
|
+
exports.FEATURE_TEMPLATES = void 0;
|
|
13
14
|
// Config templates
|
|
14
15
|
var config_js_1 = require("./config.js");
|
|
15
16
|
Object.defineProperty(exports, "generateNextConfig", { enumerable: true, get: function () { return config_js_1.generateNextConfig; } });
|
|
@@ -41,6 +42,7 @@ Object.defineProperty(exports, "generateLogoutButton", { enumerable: true, get:
|
|
|
41
42
|
Object.defineProperty(exports, "generateNextAuthTypes", { enumerable: true, get: function () { return auth_js_1.generateNextAuthTypes; } });
|
|
42
43
|
Object.defineProperty(exports, "generateAuthLib", { enumerable: true, get: function () { return auth_js_1.generateAuthLib; } });
|
|
43
44
|
Object.defineProperty(exports, "generateResolveAuth", { enumerable: true, get: function () { return auth_js_1.generateResolveAuth; } });
|
|
45
|
+
Object.defineProperty(exports, "generateResolveAuthNoAuth", { enumerable: true, get: function () { return auth_js_1.generateResolveAuthNoAuth; } });
|
|
44
46
|
// Chat templates
|
|
45
47
|
var chat_js_1 = require("./chat.js");
|
|
46
48
|
Object.defineProperty(exports, "generateChatPage", { enumerable: true, get: function () { return chat_js_1.generateChatPage; } });
|
|
@@ -102,6 +104,7 @@ Object.defineProperty(exports, "generatePrismaLib", { enumerable: true, get: fun
|
|
|
102
104
|
Object.defineProperty(exports, "generateEncryptionLib", { enumerable: true, get: function () { return prisma_js_1.generateEncryptionLib; } });
|
|
103
105
|
Object.defineProperty(exports, "generateApiKeyAuthLib", { enumerable: true, get: function () { return prisma_js_1.generateApiKeyAuthLib; } });
|
|
104
106
|
Object.defineProperty(exports, "generateApiProtectionLib", { enumerable: true, get: function () { return prisma_js_1.generateApiProtectionLib; } });
|
|
107
|
+
Object.defineProperty(exports, "generateApiProtectionLibNoAuth", { enumerable: true, get: function () { return prisma_js_1.generateApiProtectionLibNoAuth; } });
|
|
105
108
|
Object.defineProperty(exports, "generatePrismaSchema", { enumerable: true, get: function () { return prisma_js_1.generatePrismaSchema; } });
|
|
106
109
|
// Middleware template
|
|
107
110
|
var middleware_js_1 = require("./middleware.js");
|
|
@@ -20,6 +20,13 @@ export declare function generateEncryptionLib(): string;
|
|
|
20
20
|
* @returns TypeScript content for lib/api-key-auth.ts
|
|
21
21
|
*/
|
|
22
22
|
export declare function generateApiKeyAuthLib(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Generates the API protection middleware — No-Auth stub
|
|
25
|
+
* All requests are treated as authorized with a local dev user.
|
|
26
|
+
* Use when auth feature is not selected.
|
|
27
|
+
* @returns TypeScript content for lib/api-protection.ts
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateApiProtectionLibNoAuth(): string;
|
|
23
30
|
/**
|
|
24
31
|
* Generates the API protection middleware
|
|
25
32
|
* Handles session/auth checks, permission verification, and usage tracking
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/templates/prisma.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA8D9C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAiJ9C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAiLjD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA+R7C"}
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/templates/prisma.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA8D9C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAiJ9C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAsCvD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAiLjD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA+R7C"}
|
package/dist/templates/prisma.js
CHANGED
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.generatePrismaLib = generatePrismaLib;
|
|
8
8
|
exports.generateEncryptionLib = generateEncryptionLib;
|
|
9
9
|
exports.generateApiKeyAuthLib = generateApiKeyAuthLib;
|
|
10
|
+
exports.generateApiProtectionLibNoAuth = generateApiProtectionLibNoAuth;
|
|
10
11
|
exports.generateApiProtectionLib = generateApiProtectionLib;
|
|
11
12
|
exports.generatePrismaSchema = generatePrismaSchema;
|
|
12
13
|
/**
|
|
@@ -246,6 +247,51 @@ export async function verifyApiKey(request: NextRequest): Promise<ApiKeyResult>
|
|
|
246
247
|
}
|
|
247
248
|
`;
|
|
248
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Generates the API protection middleware — No-Auth stub
|
|
252
|
+
* All requests are treated as authorized with a local dev user.
|
|
253
|
+
* Use when auth feature is not selected.
|
|
254
|
+
* @returns TypeScript content for lib/api-protection.ts
|
|
255
|
+
*/
|
|
256
|
+
function generateApiProtectionLibNoAuth() {
|
|
257
|
+
return `// @chimerai component=ApiProtectionLib version=1.0-no-auth
|
|
258
|
+
// No-Auth mode: all requests are authorized as a local dev user.
|
|
259
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
260
|
+
|
|
261
|
+
export interface AuthResult {
|
|
262
|
+
authorized: boolean;
|
|
263
|
+
user?: { id: string; email: string };
|
|
264
|
+
error?: { code: string; message: string; statusCode: number };
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const LOCAL_USER = { id: 'local-dev', email: 'local@localhost' };
|
|
268
|
+
|
|
269
|
+
export async function requireAuth(_request: NextRequest): Promise<AuthResult> {
|
|
270
|
+
return { authorized: true, user: LOCAL_USER };
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export async function requireModelPermission(
|
|
274
|
+
_request: NextRequest,
|
|
275
|
+
_model: string
|
|
276
|
+
): Promise<AuthResult> {
|
|
277
|
+
return { authorized: true, user: LOCAL_USER };
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export async function requireCredits(
|
|
281
|
+
_request: NextRequest,
|
|
282
|
+
_estimatedTokens: number
|
|
283
|
+
): Promise<AuthResult> {
|
|
284
|
+
return { authorized: true, user: LOCAL_USER };
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export function createErrorResponse(authResult: AuthResult): NextResponse {
|
|
288
|
+
return NextResponse.json(
|
|
289
|
+
{ error: authResult.error?.message || 'Unauthorized' },
|
|
290
|
+
{ status: authResult.error?.statusCode || 401 }
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
`;
|
|
294
|
+
}
|
|
249
295
|
/**
|
|
250
296
|
* Generates the API protection middleware
|
|
251
297
|
* Handles session/auth checks, permission verification, and usage tracking
|
package/package.json
CHANGED