create-chaaskit 0.1.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.
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +25 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add-infra.d.ts +6 -0
- package/dist/commands/add-infra.d.ts.map +1 -0
- package/dist/commands/add-infra.js +160 -0
- package/dist/commands/add-infra.js.map +1 -0
- package/dist/commands/build.d.ts +2 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +63 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/db-sync.d.ts +13 -0
- package/dist/commands/db-sync.d.ts.map +1 -0
- package/dist/commands/db-sync.js +108 -0
- package/dist/commands/db-sync.js.map +1 -0
- package/dist/commands/dev.d.ts +7 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +61 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +214 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/.env.example +24 -0
- package/dist/templates/README.md +81 -0
- package/dist/templates/app/components/AcceptInviteClient.tsx +10 -0
- package/dist/templates/app/components/AdminDashboardClient.tsx +10 -0
- package/dist/templates/app/components/AdminTeamClient.tsx +10 -0
- package/dist/templates/app/components/AdminTeamsClient.tsx +10 -0
- package/dist/templates/app/components/AdminUsersClient.tsx +10 -0
- package/dist/templates/app/components/ApiKeysClient.tsx +10 -0
- package/dist/templates/app/components/AutomationsClient.tsx +10 -0
- package/dist/templates/app/components/ChatClient.tsx +13 -0
- package/dist/templates/app/components/ClientOnly.tsx +6 -0
- package/dist/templates/app/components/DocumentsClient.tsx +10 -0
- package/dist/templates/app/components/OAuthConsentClient.tsx +10 -0
- package/dist/templates/app/components/PricingClient.tsx +10 -0
- package/dist/templates/app/components/TeamSettingsClient.tsx +10 -0
- package/dist/templates/app/components/VerifyEmailClient.tsx +10 -0
- package/dist/templates/app/entry.client.tsx +12 -0
- package/dist/templates/app/entry.server.tsx +67 -0
- package/dist/templates/app/root.tsx +91 -0
- package/dist/templates/app/routes/_index.tsx +82 -0
- package/dist/templates/app/routes/admin._index.tsx +57 -0
- package/dist/templates/app/routes/admin.teams.$teamId.tsx +57 -0
- package/dist/templates/app/routes/admin.teams._index.tsx +57 -0
- package/dist/templates/app/routes/admin.users.tsx +57 -0
- package/dist/templates/app/routes/api-keys.tsx +57 -0
- package/dist/templates/app/routes/automations.tsx +57 -0
- package/dist/templates/app/routes/chat._index.tsx +11 -0
- package/dist/templates/app/routes/chat.admin._index.tsx +10 -0
- package/dist/templates/app/routes/chat.admin.teams.$teamId.tsx +10 -0
- package/dist/templates/app/routes/chat.admin.teams._index.tsx +10 -0
- package/dist/templates/app/routes/chat.admin.users.tsx +10 -0
- package/dist/templates/app/routes/chat.api-keys.tsx +10 -0
- package/dist/templates/app/routes/chat.automations.tsx +10 -0
- package/dist/templates/app/routes/chat.documents.tsx +10 -0
- package/dist/templates/app/routes/chat.team.$teamId.settings.tsx +10 -0
- package/dist/templates/app/routes/chat.thread.$threadId.tsx +11 -0
- package/dist/templates/app/routes/chat.tsx +39 -0
- package/dist/templates/app/routes/documents.tsx +57 -0
- package/dist/templates/app/routes/invite.$token.tsx +10 -0
- package/dist/templates/app/routes/login.tsx +334 -0
- package/dist/templates/app/routes/oauth.consent.tsx +10 -0
- package/dist/templates/app/routes/pricing.tsx +10 -0
- package/dist/templates/app/routes/privacy.tsx +197 -0
- package/dist/templates/app/routes/register.tsx +398 -0
- package/dist/templates/app/routes/shared.$shareId.tsx +226 -0
- package/dist/templates/app/routes/team.$teamId.settings.tsx +57 -0
- package/dist/templates/app/routes/terms.tsx +173 -0
- package/dist/templates/app/routes/thread.$threadId.tsx +102 -0
- package/dist/templates/app/routes/verify-email.tsx +10 -0
- package/dist/templates/app/routes.ts +47 -0
- package/dist/templates/config/app.config.ts +216 -0
- package/dist/templates/docs/admin.md +257 -0
- package/dist/templates/docs/api-keys.md +403 -0
- package/dist/templates/docs/authentication.md +247 -0
- package/dist/templates/docs/configuration.md +1212 -0
- package/dist/templates/docs/custom-pages.md +466 -0
- package/dist/templates/docs/deployment.md +362 -0
- package/dist/templates/docs/development.md +411 -0
- package/dist/templates/docs/documents.md +293 -0
- package/dist/templates/docs/extensions.md +639 -0
- package/dist/templates/docs/index.md +139 -0
- package/dist/templates/docs/installation.md +286 -0
- package/dist/templates/docs/mcp.md +952 -0
- package/dist/templates/docs/native-tools.md +688 -0
- package/dist/templates/docs/queue.md +514 -0
- package/dist/templates/docs/scheduled-prompts.md +279 -0
- package/dist/templates/docs/settings.md +415 -0
- package/dist/templates/docs/slack.md +318 -0
- package/dist/templates/docs/styling.md +288 -0
- package/dist/templates/extensions/agents/.gitkeep +0 -0
- package/dist/templates/extensions/pages/.gitkeep +0 -0
- package/dist/templates/extensions/payment-plans/.gitkeep +0 -0
- package/dist/templates/index.html +16 -0
- package/dist/templates/infra-aws/.github/workflows/deploy.yml +95 -0
- package/dist/templates/infra-aws/README.md +207 -0
- package/dist/templates/infra-aws/bin/cdk.ts +18 -0
- package/dist/templates/infra-aws/cdk.json +43 -0
- package/dist/templates/infra-aws/config/deployment.ts +156 -0
- package/dist/templates/infra-aws/lib/chaaskit-stack.ts +419 -0
- package/dist/templates/infra-aws/package.json +27 -0
- package/dist/templates/infra-aws/scripts/build-app.sh +63 -0
- package/dist/templates/infra-aws/tsconfig.json +25 -0
- package/dist/templates/package.json +46 -0
- package/dist/templates/prisma/schema/base.prisma +584 -0
- package/dist/templates/prisma/schema/custom.prisma +24 -0
- package/dist/templates/prisma/schema.prisma +271 -0
- package/dist/templates/public/favicon.svg +4 -0
- package/dist/templates/public/logo.svg +4 -0
- package/dist/templates/react-router.config.ts +11 -0
- package/dist/templates/server.js +52 -0
- package/dist/templates/src/main.tsx +8 -0
- package/dist/templates/tsconfig.json +26 -0
- package/dist/templates/vite.config.ts +26 -0
- package/package.json +46 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { dev } from './commands/dev.js';
|
|
4
|
+
import { build } from './commands/build.js';
|
|
5
|
+
const program = new Command();
|
|
6
|
+
program
|
|
7
|
+
.name('chat-saas')
|
|
8
|
+
.description('CLI for managing Chat SaaS applications')
|
|
9
|
+
.version('0.1.0');
|
|
10
|
+
program
|
|
11
|
+
.command('dev')
|
|
12
|
+
.description('Start development servers')
|
|
13
|
+
.option('-p, --port <port>', 'Server port', '3000')
|
|
14
|
+
.option('--client-port <port>', 'Client dev server port', '5173')
|
|
15
|
+
.action(async (options) => {
|
|
16
|
+
await dev(options);
|
|
17
|
+
});
|
|
18
|
+
program
|
|
19
|
+
.command('build')
|
|
20
|
+
.description('Build for production')
|
|
21
|
+
.action(async () => {
|
|
22
|
+
await build();
|
|
23
|
+
});
|
|
24
|
+
program.parse();
|
|
25
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-infra.d.ts","sourceRoot":"","sources":["../../src/commands/add-infra.ts"],"names":[],"mappings":"AASA,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmExF"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
export async function addInfra(provider, options) {
|
|
9
|
+
console.log();
|
|
10
|
+
console.log(chalk.bold('☁️ Add Infrastructure'));
|
|
11
|
+
console.log();
|
|
12
|
+
// Validate provider
|
|
13
|
+
const supportedProviders = ['aws'];
|
|
14
|
+
if (!supportedProviders.includes(provider)) {
|
|
15
|
+
console.log(chalk.red(`Unknown provider: ${provider}`));
|
|
16
|
+
console.log(chalk.yellow(`Supported providers: ${supportedProviders.join(', ')}`));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
// Check if we're in a ChaasKit project
|
|
20
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
21
|
+
if (!await fs.pathExists(packageJsonPath)) {
|
|
22
|
+
console.log(chalk.red('Not in a ChaasKit project directory.'));
|
|
23
|
+
console.log(chalk.yellow('Run this command from your project root.'));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
const targetPath = path.join(process.cwd(), 'cdk');
|
|
27
|
+
// Check if cdk directory already exists
|
|
28
|
+
if (await fs.pathExists(targetPath)) {
|
|
29
|
+
console.log(chalk.yellow('⚠️ The cdk/ directory already exists.'));
|
|
30
|
+
console.log(chalk.yellow('Remove it first if you want to regenerate: rm -rf cdk'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const spinner = ora('Adding AWS CDK infrastructure...').start();
|
|
34
|
+
try {
|
|
35
|
+
// Copy CDK template files
|
|
36
|
+
const templatesPath = path.join(__dirname, '../templates/infra-aws');
|
|
37
|
+
await copyInfraTemplates(templatesPath, targetPath, options.serviceName);
|
|
38
|
+
// Update .gitignore
|
|
39
|
+
await updateGitignore();
|
|
40
|
+
spinner.succeed('AWS CDK infrastructure added to ./cdk/');
|
|
41
|
+
// Print next steps
|
|
42
|
+
console.log();
|
|
43
|
+
console.log(chalk.green('✅ Infrastructure code added!'));
|
|
44
|
+
console.log();
|
|
45
|
+
console.log('Next steps:');
|
|
46
|
+
console.log();
|
|
47
|
+
console.log(chalk.cyan(' 1. Configure deployment:'));
|
|
48
|
+
console.log(' Edit cdk/config/deployment.ts with your settings');
|
|
49
|
+
console.log();
|
|
50
|
+
console.log(chalk.cyan(' 2. Install CDK dependencies:'));
|
|
51
|
+
console.log(' cd cdk && npm install');
|
|
52
|
+
console.log();
|
|
53
|
+
console.log(chalk.cyan(' 3. Bootstrap CDK (first time only):'));
|
|
54
|
+
console.log(' npx cdk bootstrap aws://ACCOUNT_ID/REGION');
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(chalk.cyan(' 4. Deploy:'));
|
|
57
|
+
console.log(' npm run deploy');
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(chalk.dim('See cdk/README.md for detailed instructions.'));
|
|
60
|
+
console.log();
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
spinner.fail('Failed to add infrastructure');
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function copyInfraTemplates(templatesPath, targetPath, serviceName) {
|
|
68
|
+
// Create directory structure
|
|
69
|
+
await fs.ensureDir(path.join(targetPath, 'bin'));
|
|
70
|
+
await fs.ensureDir(path.join(targetPath, 'lib'));
|
|
71
|
+
await fs.ensureDir(path.join(targetPath, 'config'));
|
|
72
|
+
await fs.ensureDir(path.join(targetPath, 'scripts'));
|
|
73
|
+
await fs.ensureDir(path.join(targetPath, '.github', 'workflows'));
|
|
74
|
+
// Detect service name from package.json if not provided
|
|
75
|
+
let finalServiceName;
|
|
76
|
+
if (serviceName) {
|
|
77
|
+
finalServiceName = serviceName;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
try {
|
|
81
|
+
const pkg = await fs.readJson(path.join(process.cwd(), 'package.json'));
|
|
82
|
+
finalServiceName = pkg.name || 'my-chaaskit-app';
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
finalServiceName = 'my-chaaskit-app';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Sanitize service name for AWS (lowercase, alphanumeric + hyphens only)
|
|
89
|
+
const sanitizedServiceName = finalServiceName
|
|
90
|
+
.toLowerCase()
|
|
91
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
92
|
+
.replace(/-+/g, '-')
|
|
93
|
+
.replace(/^-|-$/g, '');
|
|
94
|
+
const templates = [
|
|
95
|
+
// CDK entry point
|
|
96
|
+
{ src: 'bin/cdk.ts', dest: 'bin/cdk.ts' },
|
|
97
|
+
// Main stack
|
|
98
|
+
{ src: 'lib/chaaskit-stack.ts', dest: 'lib/chaaskit-stack.ts' },
|
|
99
|
+
// Configuration
|
|
100
|
+
{
|
|
101
|
+
src: 'config/deployment.ts',
|
|
102
|
+
dest: 'config/deployment.ts',
|
|
103
|
+
transform: (content) => content.replace(/\{\{SERVICE_NAME\}\}/g, sanitizedServiceName),
|
|
104
|
+
},
|
|
105
|
+
// Build script
|
|
106
|
+
{ src: 'scripts/build-app.sh', dest: 'scripts/build-app.sh' },
|
|
107
|
+
// CDK config files
|
|
108
|
+
{ src: 'cdk.json', dest: 'cdk.json' },
|
|
109
|
+
{ src: 'tsconfig.json', dest: 'tsconfig.json' },
|
|
110
|
+
{ src: 'package.json', dest: 'package.json' },
|
|
111
|
+
{ src: 'README.md', dest: 'README.md' },
|
|
112
|
+
// GitHub Actions workflow
|
|
113
|
+
{
|
|
114
|
+
src: '.github/workflows/deploy.yml',
|
|
115
|
+
dest: '.github/workflows/deploy.yml',
|
|
116
|
+
transform: (content) => content.replace(/\{\{SERVICE_NAME\}\}/g, sanitizedServiceName),
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
for (const template of templates) {
|
|
120
|
+
const srcPath = path.join(templatesPath, template.src);
|
|
121
|
+
const destPath = path.join(targetPath, template.dest);
|
|
122
|
+
if (await fs.pathExists(srcPath)) {
|
|
123
|
+
let content = await fs.readFile(srcPath, 'utf-8');
|
|
124
|
+
if (template.transform) {
|
|
125
|
+
content = template.transform(content);
|
|
126
|
+
}
|
|
127
|
+
await fs.outputFile(destPath, content);
|
|
128
|
+
// Make shell scripts executable
|
|
129
|
+
if (template.dest.endsWith('.sh')) {
|
|
130
|
+
await fs.chmod(destPath, 0o755);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function updateGitignore() {
|
|
136
|
+
const gitignorePath = path.join(process.cwd(), '.gitignore');
|
|
137
|
+
const linesToAdd = [
|
|
138
|
+
'',
|
|
139
|
+
'# CDK',
|
|
140
|
+
'cdk/cdk.out/',
|
|
141
|
+
'cdk/node_modules/',
|
|
142
|
+
'*.zip',
|
|
143
|
+
];
|
|
144
|
+
try {
|
|
145
|
+
let content = '';
|
|
146
|
+
if (await fs.pathExists(gitignorePath)) {
|
|
147
|
+
content = await fs.readFile(gitignorePath, 'utf-8');
|
|
148
|
+
}
|
|
149
|
+
// Check if CDK section already exists
|
|
150
|
+
if (content.includes('# CDK')) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
content += linesToAdd.join('\n') + '\n';
|
|
154
|
+
await fs.writeFile(gitignorePath, content);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Ignore errors updating .gitignore
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=add-infra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-infra.js","sourceRoot":"","sources":["../../src/commands/add-infra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAMA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC3C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
export async function build() {
|
|
5
|
+
console.log();
|
|
6
|
+
console.log(chalk.bold('🏗️ Building ChaasKit Application'));
|
|
7
|
+
console.log();
|
|
8
|
+
const cwd = process.cwd();
|
|
9
|
+
// Build steps
|
|
10
|
+
const steps = [
|
|
11
|
+
{
|
|
12
|
+
name: 'Type checking',
|
|
13
|
+
command: 'npx',
|
|
14
|
+
args: ['tsc', '--noEmit'],
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'Building client',
|
|
18
|
+
command: 'npx',
|
|
19
|
+
args: ['vite', 'build'],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
for (const step of steps) {
|
|
23
|
+
const spinner = ora(step.name + '...').start();
|
|
24
|
+
try {
|
|
25
|
+
await runCommand(step.command, step.args, { cwd });
|
|
26
|
+
spinner.succeed(step.name);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
spinner.fail(step.name);
|
|
30
|
+
console.error(chalk.red(`\nBuild failed during: ${step.name}`));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
console.log();
|
|
35
|
+
console.log(chalk.green('✅ Build complete!'));
|
|
36
|
+
console.log();
|
|
37
|
+
console.log('To start the production server, run:');
|
|
38
|
+
console.log(chalk.cyan(' NODE_ENV=production npx chaaskit-server'));
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
function runCommand(command, args, options) {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const child = spawn(command, args, {
|
|
44
|
+
...options,
|
|
45
|
+
stdio: 'pipe',
|
|
46
|
+
shell: true,
|
|
47
|
+
});
|
|
48
|
+
let stderr = '';
|
|
49
|
+
child.stderr?.on('data', (data) => {
|
|
50
|
+
stderr += data.toString();
|
|
51
|
+
});
|
|
52
|
+
child.on('close', (code) => {
|
|
53
|
+
if (code === 0) {
|
|
54
|
+
resolve();
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
reject(new Error(stderr || `Command failed with code ${code}`));
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
child.on('error', reject);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync the Prisma schema from @chaaskit/db to the project.
|
|
3
|
+
* Uses Prisma's multi-file schema feature (prismaSchemaFolder).
|
|
4
|
+
*
|
|
5
|
+
* This command:
|
|
6
|
+
* - Copies base.prisma from the package (overwrites existing)
|
|
7
|
+
* - Creates custom.prisma if it doesn't exist (never overwrites)
|
|
8
|
+
* - Preserves any other .prisma files in the schema directory
|
|
9
|
+
*/
|
|
10
|
+
export declare function dbSync(options?: {
|
|
11
|
+
force?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=db-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-sync.d.ts","sourceRoot":"","sources":["../../src/commands/db-sync.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG7E"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Sync the Prisma schema from @chaaskit/db to the project.
|
|
5
|
+
* Uses Prisma's multi-file schema feature (prismaSchemaFolder).
|
|
6
|
+
*
|
|
7
|
+
* This command:
|
|
8
|
+
* - Copies base.prisma from the package (overwrites existing)
|
|
9
|
+
* - Creates custom.prisma if it doesn't exist (never overwrites)
|
|
10
|
+
* - Preserves any other .prisma files in the schema directory
|
|
11
|
+
*/
|
|
12
|
+
export async function dbSync(options = {}) {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
const targetSchemaDir = path.join(cwd, 'prisma', 'schema');
|
|
15
|
+
// Find the source schema folder in node_modules
|
|
16
|
+
const sourceSchemaDir = path.join(cwd, 'node_modules', '@chaaskit', 'db', 'prisma', 'schema');
|
|
17
|
+
const sourceBasePath = path.join(sourceSchemaDir, 'base.prisma');
|
|
18
|
+
const sourceCustomPath = path.join(sourceSchemaDir, 'custom.prisma');
|
|
19
|
+
const targetBasePath = path.join(targetSchemaDir, 'base.prisma');
|
|
20
|
+
const targetCustomPath = path.join(targetSchemaDir, 'custom.prisma');
|
|
21
|
+
// Check if source schema exists
|
|
22
|
+
try {
|
|
23
|
+
await fs.access(sourceBasePath);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
console.error('Error: @chaaskit/db package not found or has old schema format.');
|
|
27
|
+
console.error('Make sure you have installed the latest dependencies: pnpm install');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
// Ensure target schema directory exists
|
|
31
|
+
await fs.mkdir(targetSchemaDir, { recursive: true });
|
|
32
|
+
// Check if this is a migration from single-file schema
|
|
33
|
+
const oldSchemaPath = path.join(cwd, 'prisma', 'schema.prisma');
|
|
34
|
+
let hadOldSchema = false;
|
|
35
|
+
try {
|
|
36
|
+
await fs.access(oldSchemaPath);
|
|
37
|
+
hadOldSchema = true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// No old schema
|
|
41
|
+
}
|
|
42
|
+
// Check current state
|
|
43
|
+
let targetBaseExists = false;
|
|
44
|
+
let targetCustomExists = false;
|
|
45
|
+
try {
|
|
46
|
+
await fs.access(targetBasePath);
|
|
47
|
+
targetBaseExists = true;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Base doesn't exist
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
await fs.access(targetCustomPath);
|
|
54
|
+
targetCustomExists = true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Custom doesn't exist
|
|
58
|
+
}
|
|
59
|
+
// Copy base.prisma (always overwrite)
|
|
60
|
+
const sourceBaseContent = await fs.readFile(sourceBasePath, 'utf-8');
|
|
61
|
+
let targetBaseContent = '';
|
|
62
|
+
if (targetBaseExists) {
|
|
63
|
+
targetBaseContent = await fs.readFile(targetBasePath, 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
const baseChanged = sourceBaseContent !== targetBaseContent;
|
|
66
|
+
if (baseChanged) {
|
|
67
|
+
await fs.writeFile(targetBasePath, sourceBaseContent, 'utf-8');
|
|
68
|
+
if (targetBaseExists) {
|
|
69
|
+
console.log('Updated: prisma/schema/base.prisma');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log('Created: prisma/schema/base.prisma');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log('No changes: prisma/schema/base.prisma is up to date');
|
|
77
|
+
}
|
|
78
|
+
// Create custom.prisma if it doesn't exist (never overwrite)
|
|
79
|
+
if (!targetCustomExists) {
|
|
80
|
+
const sourceCustomContent = await fs.readFile(sourceCustomPath, 'utf-8');
|
|
81
|
+
await fs.writeFile(targetCustomPath, sourceCustomContent, 'utf-8');
|
|
82
|
+
console.log('Created: prisma/schema/custom.prisma');
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log('Preserved: prisma/schema/custom.prisma (your custom models)');
|
|
86
|
+
}
|
|
87
|
+
// Handle migration from old single-file schema
|
|
88
|
+
if (hadOldSchema) {
|
|
89
|
+
console.log('\n--- Migration Notice ---');
|
|
90
|
+
console.log('Found old single-file schema: prisma/schema.prisma');
|
|
91
|
+
console.log('');
|
|
92
|
+
console.log('To migrate your custom models:');
|
|
93
|
+
console.log('1. Open prisma/schema.prisma');
|
|
94
|
+
console.log('2. Copy any custom models you added to prisma/schema/custom.prisma');
|
|
95
|
+
console.log('3. Delete prisma/schema.prisma');
|
|
96
|
+
console.log('');
|
|
97
|
+
console.log('Note: Core models (User, Thread, etc.) are now in base.prisma.');
|
|
98
|
+
console.log('Only copy models YOU created to custom.prisma.');
|
|
99
|
+
}
|
|
100
|
+
printNextSteps();
|
|
101
|
+
}
|
|
102
|
+
function printNextSteps() {
|
|
103
|
+
console.log('\nNext steps:');
|
|
104
|
+
console.log(' 1. Run: pnpm db:generate');
|
|
105
|
+
console.log(' 2. Run: pnpm db:push');
|
|
106
|
+
console.log(' 3. Restart your dev server');
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=db-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-sync.js","sourceRoot":"","sources":["../../src/commands/db-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE5D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export async function dev(options) {
|
|
4
|
+
const port = options.port || '3000';
|
|
5
|
+
const clientPort = options.clientPort || '5173';
|
|
6
|
+
console.log();
|
|
7
|
+
console.log(chalk.bold('🚀 Starting ChaasKit Development Server'));
|
|
8
|
+
console.log();
|
|
9
|
+
const processes = [];
|
|
10
|
+
// Handle cleanup
|
|
11
|
+
const cleanup = () => {
|
|
12
|
+
console.log(chalk.yellow('\nShutting down...'));
|
|
13
|
+
processes.forEach(p => {
|
|
14
|
+
if (!p.killed) {
|
|
15
|
+
p.kill('SIGTERM');
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
process.exit(0);
|
|
19
|
+
};
|
|
20
|
+
process.on('SIGINT', cleanup);
|
|
21
|
+
process.on('SIGTERM', cleanup);
|
|
22
|
+
// Start the backend server
|
|
23
|
+
console.log(chalk.cyan(`Starting backend server on port ${port}...`));
|
|
24
|
+
const serverProcess = spawn('npx', ['chaaskit-server'], {
|
|
25
|
+
cwd: process.cwd(),
|
|
26
|
+
stdio: 'inherit',
|
|
27
|
+
shell: true,
|
|
28
|
+
env: {
|
|
29
|
+
...process.env,
|
|
30
|
+
PORT: port,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
processes.push(serverProcess);
|
|
34
|
+
// Start the frontend dev server
|
|
35
|
+
console.log(chalk.cyan(`Starting frontend server on port ${clientPort}...`));
|
|
36
|
+
// Check if there's a local vite config, otherwise use the one from core-client
|
|
37
|
+
const viteProcess = spawn('npx', ['vite', '--host', '--port', clientPort], {
|
|
38
|
+
cwd: process.cwd(),
|
|
39
|
+
stdio: 'inherit',
|
|
40
|
+
shell: true,
|
|
41
|
+
env: {
|
|
42
|
+
...process.env,
|
|
43
|
+
VITE_API_URL: `http://localhost:${port}`,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
processes.push(viteProcess);
|
|
47
|
+
// Wait for processes to exit
|
|
48
|
+
serverProcess.on('exit', (code) => {
|
|
49
|
+
if (code !== 0) {
|
|
50
|
+
console.log(chalk.red(`Server process exited with code ${code}`));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
viteProcess.on('exit', (code) => {
|
|
54
|
+
if (code !== 0) {
|
|
55
|
+
console.log(chalk.red(`Vite process exited with code ${code}`));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
// Keep the process running
|
|
59
|
+
await new Promise(() => { });
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface InitOptions {
|
|
2
|
+
template?: string;
|
|
3
|
+
skipInstall?: boolean;
|
|
4
|
+
useNpm?: boolean;
|
|
5
|
+
useYarn?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function init(projectName: string | undefined, options: InitOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAgBA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG/F"}
|