@thinksoftai/cli 1.0.3 → 1.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/commands/create.js +21 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/index.js +220 -3
- package/dist/index.js.map +1 -1
- package/dist/utils/aiContext.d.ts +19 -0
- package/dist/utils/aiContext.js +219 -0
- package/dist/utils/aiContext.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/create.js
CHANGED
|
@@ -45,6 +45,7 @@ const inquirer_1 = __importDefault(require("inquirer"));
|
|
|
45
45
|
const api = __importStar(require("../utils/api"));
|
|
46
46
|
const config = __importStar(require("../utils/config"));
|
|
47
47
|
const logger = __importStar(require("../utils/logger"));
|
|
48
|
+
const aiContext_1 = require("../utils/aiContext");
|
|
48
49
|
async function create(description, options) {
|
|
49
50
|
if (!config.isLoggedIn()) {
|
|
50
51
|
logger.error('Not logged in');
|
|
@@ -129,10 +130,27 @@ async function create(description, options) {
|
|
|
129
130
|
});
|
|
130
131
|
logger.success('Project initialized (thinksoft.json created)');
|
|
131
132
|
}
|
|
133
|
+
// Generate AI context files
|
|
134
|
+
const { files } = (0, aiContext_1.generateAIContextFiles)({
|
|
135
|
+
appId,
|
|
136
|
+
name: app.name,
|
|
137
|
+
description: app.description,
|
|
138
|
+
tables: app.tables
|
|
139
|
+
});
|
|
140
|
+
logger.success(`AI context files created (${files.join(', ')})`);
|
|
141
|
+
logger.info('Tip: Open CONTEXT.md in Cursor/Claude for AI-assisted development');
|
|
142
|
+
// Get first table name for SDK example
|
|
143
|
+
const exampleTable = app.tables?.[0]?.name?.toLowerCase().replace(/\s+/g, '_') || 'items';
|
|
132
144
|
logger.newLine();
|
|
133
145
|
logger.info('Next steps:');
|
|
134
|
-
logger.log(' 1. Create your frontend
|
|
135
|
-
logger.log(' 2.
|
|
136
|
-
logger.log(' 3.
|
|
146
|
+
logger.log(' 1. Create your frontend (React, Vue, Next.js, etc.)');
|
|
147
|
+
logger.log(' 2. Install SDK: npm install @thinksoftai/sdk');
|
|
148
|
+
logger.log(' 3. Use in your code:');
|
|
149
|
+
logger.newLine();
|
|
150
|
+
logger.log(` import { ThinkSoft } from '@thinksoftai/sdk'`);
|
|
151
|
+
logger.log(` const client = new ThinkSoft({ appId: '${appId}' })`);
|
|
152
|
+
logger.log(` const { data } = await client.${exampleTable}.list()`);
|
|
153
|
+
logger.newLine();
|
|
154
|
+
logger.log(' 4. Build & deploy: npm run build && thinksoft deploy');
|
|
137
155
|
}
|
|
138
156
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,46 @@
|
|
|
4
4
|
* ThinkSoft CLI
|
|
5
5
|
* Deploy apps to ThinkSoft platform
|
|
6
6
|
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
7
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
44
|
const commander_1 = require("commander");
|
|
45
|
+
const readline = __importStar(require("readline"));
|
|
46
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
47
|
const login_1 = require("./commands/login");
|
|
10
48
|
const apps_1 = require("./commands/apps");
|
|
11
49
|
const init_1 = require("./commands/init");
|
|
@@ -16,7 +54,7 @@ const program = new commander_1.Command();
|
|
|
16
54
|
program
|
|
17
55
|
.name('thinksoft')
|
|
18
56
|
.description('ThinkSoft CLI - Deploy apps to ThinkSoft platform')
|
|
19
|
-
.version('1.
|
|
57
|
+
.version('1.1.0');
|
|
20
58
|
// Login command
|
|
21
59
|
program
|
|
22
60
|
.command('login')
|
|
@@ -67,6 +105,185 @@ program
|
|
|
67
105
|
.description('Open app in browser')
|
|
68
106
|
.option('--admin', 'Open admin UI instead of deployed app')
|
|
69
107
|
.action(open_1.openApp);
|
|
70
|
-
|
|
71
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Interactive Mode
|
|
110
|
+
*/
|
|
111
|
+
function showBanner() {
|
|
112
|
+
console.log();
|
|
113
|
+
console.log(chalk_1.default.cyan('╔═══════════════════════════════════════════════════════╗'));
|
|
114
|
+
console.log(chalk_1.default.cyan('║') + chalk_1.default.white.bold(' ThinkSoft CLI v1.1.0 ') + chalk_1.default.cyan('║'));
|
|
115
|
+
console.log(chalk_1.default.cyan('║') + chalk_1.default.gray(' Build and deploy apps with Thinksoft ') + chalk_1.default.cyan('║'));
|
|
116
|
+
console.log(chalk_1.default.cyan('╠═══════════════════════════════════════════════════════╣'));
|
|
117
|
+
console.log(chalk_1.default.cyan('║') + chalk_1.default.gray(' Type ') + chalk_1.default.yellow('help') + chalk_1.default.gray(' for commands, ') + chalk_1.default.yellow('quit') + chalk_1.default.gray(' to exit ') + chalk_1.default.cyan('║'));
|
|
118
|
+
console.log(chalk_1.default.cyan('╚═══════════════════════════════════════════════════════╝'));
|
|
119
|
+
console.log();
|
|
120
|
+
}
|
|
121
|
+
function showHelp() {
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(chalk_1.default.cyan.bold('Available Commands:'));
|
|
124
|
+
console.log();
|
|
125
|
+
console.log(chalk_1.default.yellow(' login') + chalk_1.default.gray(' [--token <token>]') + chalk_1.default.white(' Authenticate with ThinkSoft'));
|
|
126
|
+
console.log(chalk_1.default.yellow(' logout') + chalk_1.default.white(' Clear stored credentials'));
|
|
127
|
+
console.log(chalk_1.default.yellow(' whoami') + chalk_1.default.white(' Show current logged in user'));
|
|
128
|
+
console.log(chalk_1.default.yellow(' apps') + chalk_1.default.white(' List your apps'));
|
|
129
|
+
console.log(chalk_1.default.yellow(' create') + chalk_1.default.gray(' "<description>"') + chalk_1.default.white(' Create a new app with AI'));
|
|
130
|
+
console.log(chalk_1.default.yellow(' init') + chalk_1.default.gray(' [--app <appId>]') + chalk_1.default.white(' Initialize project config'));
|
|
131
|
+
console.log(chalk_1.default.yellow(' deploy') + chalk_1.default.gray(' [--app <appId>]') + chalk_1.default.white(' Deploy frontend to ThinkSoft'));
|
|
132
|
+
console.log(chalk_1.default.yellow(' open') + chalk_1.default.gray(' [appId] [--admin]') + chalk_1.default.white(' Open app in browser'));
|
|
133
|
+
console.log(chalk_1.default.yellow(' help') + chalk_1.default.white(' Show this help message'));
|
|
134
|
+
console.log(chalk_1.default.yellow(' quit') + chalk_1.default.white(' / ') + chalk_1.default.yellow('exit') + chalk_1.default.white(' Exit the CLI'));
|
|
135
|
+
console.log();
|
|
136
|
+
}
|
|
137
|
+
function parseArgs(input) {
|
|
138
|
+
const args = [];
|
|
139
|
+
let current = '';
|
|
140
|
+
let inQuotes = false;
|
|
141
|
+
let quoteChar = '';
|
|
142
|
+
for (let i = 0; i < input.length; i++) {
|
|
143
|
+
const char = input[i];
|
|
144
|
+
if ((char === '"' || char === "'") && !inQuotes) {
|
|
145
|
+
inQuotes = true;
|
|
146
|
+
quoteChar = char;
|
|
147
|
+
}
|
|
148
|
+
else if (char === quoteChar && inQuotes) {
|
|
149
|
+
inQuotes = false;
|
|
150
|
+
quoteChar = '';
|
|
151
|
+
}
|
|
152
|
+
else if (char === ' ' && !inQuotes) {
|
|
153
|
+
if (current) {
|
|
154
|
+
args.push(current);
|
|
155
|
+
current = '';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
current += char;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (current) {
|
|
163
|
+
args.push(current);
|
|
164
|
+
}
|
|
165
|
+
return args;
|
|
166
|
+
}
|
|
167
|
+
async function executeCommand(input) {
|
|
168
|
+
const trimmed = input.trim();
|
|
169
|
+
if (!trimmed)
|
|
170
|
+
return true;
|
|
171
|
+
const args = parseArgs(trimmed);
|
|
172
|
+
const command = args[0].toLowerCase();
|
|
173
|
+
try {
|
|
174
|
+
switch (command) {
|
|
175
|
+
case 'login':
|
|
176
|
+
const tokenFlag = args.indexOf('--token');
|
|
177
|
+
const tFlag = args.indexOf('-t');
|
|
178
|
+
const tokenIndex = tokenFlag !== -1 ? tokenFlag : tFlag;
|
|
179
|
+
const token = tokenIndex !== -1 ? args[tokenIndex + 1] : undefined;
|
|
180
|
+
await (0, login_1.login)({ token });
|
|
181
|
+
break;
|
|
182
|
+
case 'logout':
|
|
183
|
+
await (0, login_1.logout)();
|
|
184
|
+
break;
|
|
185
|
+
case 'whoami':
|
|
186
|
+
await (0, login_1.whoami)();
|
|
187
|
+
break;
|
|
188
|
+
case 'apps':
|
|
189
|
+
await (0, apps_1.apps)();
|
|
190
|
+
break;
|
|
191
|
+
case 'create':
|
|
192
|
+
const description = args.slice(1).filter(a => !a.startsWith('-')).join(' ');
|
|
193
|
+
if (!description) {
|
|
194
|
+
console.log(chalk_1.default.red('Usage: create "<app description>"'));
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
const typeFlag = args.indexOf('--type');
|
|
198
|
+
const typeShort = args.indexOf('-t');
|
|
199
|
+
const typeIndex = typeFlag !== -1 ? typeFlag : typeShort;
|
|
200
|
+
const appType = typeIndex !== -1 ? args[typeIndex + 1] : 'workapp';
|
|
201
|
+
await (0, create_1.create)(description, { type: appType });
|
|
202
|
+
break;
|
|
203
|
+
case 'init':
|
|
204
|
+
const initAppFlag = args.indexOf('--app');
|
|
205
|
+
const initAppShort = args.indexOf('-a');
|
|
206
|
+
const initAppIndex = initAppFlag !== -1 ? initAppFlag : initAppShort;
|
|
207
|
+
const initApp = initAppIndex !== -1 ? args[initAppIndex + 1] : undefined;
|
|
208
|
+
const dirFlag = args.indexOf('--dir');
|
|
209
|
+
const dirShort = args.indexOf('-d');
|
|
210
|
+
const dirIndex = dirFlag !== -1 ? dirFlag : dirShort;
|
|
211
|
+
const dir = dirIndex !== -1 ? args[dirIndex + 1] : undefined;
|
|
212
|
+
const yesFlag = args.includes('--yes') || args.includes('-y');
|
|
213
|
+
await (0, init_1.init)({ app: initApp, dir, yes: yesFlag });
|
|
214
|
+
break;
|
|
215
|
+
case 'deploy':
|
|
216
|
+
const deployAppFlag = args.indexOf('--app');
|
|
217
|
+
const deployAppShort = args.indexOf('-a');
|
|
218
|
+
const deployAppIndex = deployAppFlag !== -1 ? deployAppFlag : deployAppShort;
|
|
219
|
+
const deployApp = deployAppIndex !== -1 ? args[deployAppIndex + 1] : undefined;
|
|
220
|
+
const deployDirFlag = args.indexOf('--dir');
|
|
221
|
+
const deployDirShort = args.indexOf('-d');
|
|
222
|
+
const deployDirIndex = deployDirFlag !== -1 ? deployDirFlag : deployDirShort;
|
|
223
|
+
const deployDir = deployDirIndex !== -1 ? args[deployDirIndex + 1] : undefined;
|
|
224
|
+
const frontendFlag = args.indexOf('--frontend');
|
|
225
|
+
const frontendShort = args.indexOf('-f');
|
|
226
|
+
const frontendIndex = frontendFlag !== -1 ? frontendFlag : frontendShort;
|
|
227
|
+
const frontend = frontendIndex !== -1 ? args[frontendIndex + 1] : undefined;
|
|
228
|
+
const nameFlag = args.indexOf('--name');
|
|
229
|
+
const nameShort = args.indexOf('-n');
|
|
230
|
+
const nameIndex = nameFlag !== -1 ? nameFlag : nameShort;
|
|
231
|
+
const name = nameIndex !== -1 ? args[nameIndex + 1] : undefined;
|
|
232
|
+
await (0, deploy_1.deploy)({ app: deployApp, dir: deployDir, frontend, name });
|
|
233
|
+
break;
|
|
234
|
+
case 'open':
|
|
235
|
+
const openAppId = args[1] && !args[1].startsWith('-') ? args[1] : undefined;
|
|
236
|
+
const adminFlag = args.includes('--admin');
|
|
237
|
+
await (0, open_1.openApp)(openAppId, { admin: adminFlag });
|
|
238
|
+
break;
|
|
239
|
+
case 'help':
|
|
240
|
+
showHelp();
|
|
241
|
+
break;
|
|
242
|
+
case 'quit':
|
|
243
|
+
case 'exit':
|
|
244
|
+
console.log(chalk_1.default.cyan('\nGoodbye! 👋\n'));
|
|
245
|
+
return false;
|
|
246
|
+
case 'clear':
|
|
247
|
+
console.clear();
|
|
248
|
+
showBanner();
|
|
249
|
+
break;
|
|
250
|
+
default:
|
|
251
|
+
console.log(chalk_1.default.red(`Unknown command: ${command}`));
|
|
252
|
+
console.log(chalk_1.default.gray('Type "help" for available commands'));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
console.log(chalk_1.default.red(`Error: ${error.message || error}`));
|
|
257
|
+
}
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
async function startInteractiveMode() {
|
|
261
|
+
showBanner();
|
|
262
|
+
const rl = readline.createInterface({
|
|
263
|
+
input: process.stdin,
|
|
264
|
+
output: process.stdout
|
|
265
|
+
});
|
|
266
|
+
const prompt = () => {
|
|
267
|
+
rl.question(chalk_1.default.cyan('thinksoft> '), async (input) => {
|
|
268
|
+
const shouldContinue = await executeCommand(input);
|
|
269
|
+
if (shouldContinue) {
|
|
270
|
+
prompt();
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
rl.close();
|
|
274
|
+
process.exit(0);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
};
|
|
278
|
+
prompt();
|
|
279
|
+
}
|
|
280
|
+
// Check if running without arguments - start interactive mode
|
|
281
|
+
const args = process.argv.slice(2);
|
|
282
|
+
if (args.length === 0) {
|
|
283
|
+
startInteractiveMode();
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
// Parse arguments for direct command execution
|
|
287
|
+
program.parse();
|
|
288
|
+
}
|
|
72
289
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;GAGG;;AAEH,yCAAmC;AACnC,4CAAwD;AACxD,0CAAsC;AACtC,0CAAsC;AACtC,8CAA0C;AAC1C,8CAA0C;AAC1C,0CAAyC;AAEzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,aAAK,CAAC,CAAA;AAEhB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,cAAM,CAAC,CAAA;AAEjB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,cAAM,CAAC,CAAA;AAEjB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,WAAI,CAAC,CAAA;AAEf,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,SAAS,CAAC;KACvE,MAAM,CAAC,eAAM,CAAC,CAAA;AAEjB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;KAC7C,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,WAAI,CAAC,CAAA;AAEf,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;KAClD,MAAM,CAAC,uBAAuB,EAAE,4DAA4D,CAAC;KAC7F,MAAM,CAAC,uBAAuB,EAAE,4DAA4D,CAAC;KAC7F,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;KAC5D,MAAM,CAAC,eAAM,CAAC,CAAA;AAEjB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;KAC1D,MAAM,CAAC,cAAO,CAAC,CAAA;AAElB,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAmC;AACnC,mDAAoC;AACpC,kDAAyB;AACzB,4CAAwD;AACxD,0CAAsC;AACtC,0CAAsC;AACtC,8CAA0C;AAC1C,8CAA0C;AAC1C,0CAAyC;AAEzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,aAAK,CAAC,CAAA;AAEhB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,cAAM,CAAC,CAAA;AAEjB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,cAAM,CAAC,CAAA;AAEjB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,WAAI,CAAC,CAAA;AAEf,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,SAAS,CAAC;KACvE,MAAM,CAAC,eAAM,CAAC,CAAA;AAEjB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;KAC7C,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,WAAI,CAAC,CAAA;AAEf,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;KAClD,MAAM,CAAC,uBAAuB,EAAE,4DAA4D,CAAC;KAC7F,MAAM,CAAC,uBAAuB,EAAE,4DAA4D,CAAC;KAC7F,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;KAC5D,MAAM,CAAC,eAAM,CAAC,CAAA;AAEjB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;KAC1D,MAAM,CAAC,cAAO,CAAC,CAAA;AAElB;;GAEG;AACH,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5H,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7L,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;IACnD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;IACvH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAA;IACrG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAA;IACxG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAA;IAC3F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;IACrH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAA;IACtH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;IACzH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAChH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAA;IACnG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAA;IAC5H,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,SAAS,GAAG,EAAE,CAAA;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAErB,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChD,QAAQ,GAAG,IAAI,CAAA;YACf,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1C,QAAQ,GAAG,KAAK,CAAA;YAChB,SAAS,GAAG,EAAE,CAAA;QAChB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAClB,OAAO,GAAG,EAAE,CAAA;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,CAAA;QACjB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAErC,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,OAAO;gBACV,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAChC,MAAM,UAAU,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;gBACvD,MAAM,KAAK,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAClE,MAAM,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBACtB,MAAK;YAEP,KAAK,QAAQ;gBACX,MAAM,IAAA,cAAM,GAAE,CAAA;gBACd,MAAK;YAEP,KAAK,QAAQ;gBACX,MAAM,IAAA,cAAM,GAAE,CAAA;gBACd,MAAK;YAEP,KAAK,MAAM;gBACT,MAAM,IAAA,WAAI,GAAE,CAAA;gBACZ,MAAK;YAEP,KAAK,QAAQ;gBACX,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;oBAC3D,MAAK;gBACP,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACpC,MAAM,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;gBACxD,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAClE,MAAM,IAAA,eAAM,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC5C,MAAK;YAEP,KAAK,MAAM;gBACT,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACzC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACvC,MAAM,YAAY,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAA;gBACpE,MAAM,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAExE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACnC,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;gBACpD,MAAM,GAAG,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE5D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAC7D,MAAM,IAAA,WAAI,EAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC/C,MAAK;YAEP,KAAK,QAAQ;gBACX,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACzC,MAAM,cAAc,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAA;gBAC5E,MAAM,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE9E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACzC,MAAM,cAAc,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAA;gBAC5E,MAAM,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE9E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACxC,MAAM,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAA;gBACxE,MAAM,QAAQ,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE3E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACpC,MAAM,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;gBACxD,MAAM,IAAI,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE/D,MAAM,IAAA,eAAM,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;gBAChE,MAAK;YAEP,KAAK,MAAM;gBACT,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;gBAC1C,MAAM,IAAA,cAAO,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC9C,MAAK;YAEP,KAAK,MAAM;gBACT,QAAQ,EAAE,CAAA;gBACV,MAAK;YAEP,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;gBAC1C,OAAO,KAAK,CAAA;YAEd,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,EAAE,CAAA;gBACf,UAAU,EAAE,CAAA;gBACZ,MAAK;YAEP;gBACE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAA;gBACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,UAAU,EAAE,CAAA;IAEZ,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,EAAE,CAAC,QAAQ,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrD,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAA;YAClD,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,EAAE,CAAA;YACV,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,KAAK,EAAE,CAAA;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,EAAE,CAAA;AACV,CAAC;AAED,8DAA8D;AAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,oBAAoB,EAAE,CAAA;AACxB,CAAC;KAAM,CAAC;IACN,+CAA+C;IAC/C,OAAO,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Context Generator - Creates files for AI coding assistants
|
|
3
|
+
*/
|
|
4
|
+
interface AppInfo {
|
|
5
|
+
appId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
tables?: Array<{
|
|
9
|
+
name: string;
|
|
10
|
+
fields?: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
}>;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare function generateAIContextFiles(app: AppInfo): {
|
|
17
|
+
files: string[];
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI Context Generator - Creates files for AI coding assistants
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.generateAIContextFiles = generateAIContextFiles;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
function generateAIContextFiles(app) {
|
|
43
|
+
const generatedFiles = [];
|
|
44
|
+
const cwd = process.cwd();
|
|
45
|
+
// Generate table info
|
|
46
|
+
const tableNames = app.tables?.map(t => t.name) || [];
|
|
47
|
+
const tableSlug = (name) => name.toLowerCase().replace(/\s+/g, '_');
|
|
48
|
+
// 1. Generate CONTEXT.md
|
|
49
|
+
const contextMd = `# ThinkSoft App: ${app.name}
|
|
50
|
+
|
|
51
|
+
## App Details
|
|
52
|
+
- **App ID:** ${app.appId}
|
|
53
|
+
- **Description:** ${app.description || 'N/A'}
|
|
54
|
+
- **Admin UI:** https://thinksoftai.com/app/${app.appId}
|
|
55
|
+
- **Deploy URL:** https://${app.appId.toLowerCase()}.thinksoftai.com
|
|
56
|
+
- **API Base:** https://api.thinksoftai.com/v1/apps/${app.appId}
|
|
57
|
+
|
|
58
|
+
## Tables/Schema
|
|
59
|
+
${tableNames.map(name => `- **${name}** → \`client.${tableSlug(name)}\``).join('\n')}
|
|
60
|
+
|
|
61
|
+
## SDK Installation
|
|
62
|
+
\`\`\`bash
|
|
63
|
+
npm install @thinksoftai/sdk
|
|
64
|
+
\`\`\`
|
|
65
|
+
|
|
66
|
+
## SDK Usage
|
|
67
|
+
\`\`\`typescript
|
|
68
|
+
import { ThinkSoft } from '@thinksoftai/sdk'
|
|
69
|
+
|
|
70
|
+
const client = new ThinkSoft({ appId: '${app.appId}' })
|
|
71
|
+
|
|
72
|
+
// List all records
|
|
73
|
+
const { data } = await client.${tableSlug(tableNames[0] || 'items')}.list()
|
|
74
|
+
|
|
75
|
+
// Create a record
|
|
76
|
+
await client.${tableSlug(tableNames[0] || 'items')}.create({
|
|
77
|
+
// your data here
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
// Get single record
|
|
81
|
+
await client.${tableSlug(tableNames[0] || 'items')}.get(id)
|
|
82
|
+
|
|
83
|
+
// Update a record
|
|
84
|
+
await client.${tableSlug(tableNames[0] || 'items')}.update(id, {
|
|
85
|
+
// updated data
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
// Delete a record
|
|
89
|
+
await client.${tableSlug(tableNames[0] || 'items')}.delete(id)
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
## Authentication
|
|
93
|
+
\`\`\`typescript
|
|
94
|
+
// Send OTP to user's email
|
|
95
|
+
await client.auth.sendOTP('user@example.com')
|
|
96
|
+
|
|
97
|
+
// Verify OTP code
|
|
98
|
+
await client.auth.verifyOTP('user@example.com', '123456')
|
|
99
|
+
|
|
100
|
+
// Check if user is authenticated
|
|
101
|
+
client.auth.isAuthenticated()
|
|
102
|
+
|
|
103
|
+
// Logout user
|
|
104
|
+
client.auth.logout()
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
## Available Tables & Operations
|
|
108
|
+
${tableNames.map(name => `
|
|
109
|
+
### ${name}
|
|
110
|
+
\`\`\`typescript
|
|
111
|
+
client.${tableSlug(name)}.list() // Get all ${name.toLowerCase()}
|
|
112
|
+
client.${tableSlug(name)}.create({}) // Create new ${name.toLowerCase()}
|
|
113
|
+
client.${tableSlug(name)}.get(id) // Get by ID
|
|
114
|
+
client.${tableSlug(name)}.update(id, {}) // Update by ID
|
|
115
|
+
client.${tableSlug(name)}.delete(id) // Delete by ID
|
|
116
|
+
\`\`\`
|
|
117
|
+
`).join('')}
|
|
118
|
+
|
|
119
|
+
## Build & Deploy
|
|
120
|
+
\`\`\`bash
|
|
121
|
+
npm run build
|
|
122
|
+
thinksoft deploy
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
## Useful Commands
|
|
126
|
+
\`\`\`bash
|
|
127
|
+
thinksoft apps # List your apps
|
|
128
|
+
thinksoft open # Open app in browser
|
|
129
|
+
thinksoft whoami # Check logged in user
|
|
130
|
+
\`\`\`
|
|
131
|
+
`;
|
|
132
|
+
fs.writeFileSync(path.join(cwd, 'CONTEXT.md'), contextMd);
|
|
133
|
+
generatedFiles.push('CONTEXT.md');
|
|
134
|
+
// 2. Generate .cursorrules
|
|
135
|
+
const cursorrules = `# ThinkSoft App: ${app.name}
|
|
136
|
+
# App ID: ${app.appId}
|
|
137
|
+
|
|
138
|
+
You are helping build a frontend for a ThinkSoft backend application.
|
|
139
|
+
|
|
140
|
+
## Backend Info
|
|
141
|
+
- This app uses ThinkSoft as the backend (database, API, auth, hosting)
|
|
142
|
+
- App ID: ${app.appId}
|
|
143
|
+
- Tables: ${tableNames.join(', ')}
|
|
144
|
+
|
|
145
|
+
## SDK Usage
|
|
146
|
+
Always use @thinksoftai/sdk for data operations:
|
|
147
|
+
|
|
148
|
+
\`\`\`typescript
|
|
149
|
+
import { ThinkSoft } from '@thinksoftai/sdk'
|
|
150
|
+
const client = new ThinkSoft({ appId: '${app.appId}' })
|
|
151
|
+
\`\`\`
|
|
152
|
+
|
|
153
|
+
## Available Data Operations
|
|
154
|
+
${tableNames.map(name => `- client.${tableSlug(name)}.list() / .create() / .get(id) / .update(id, data) / .delete(id)`).join('\n')}
|
|
155
|
+
|
|
156
|
+
## Authentication
|
|
157
|
+
- client.auth.sendOTP('email') - Send OTP to user's email
|
|
158
|
+
- client.auth.verifyOTP('email', 'code') - Verify OTP code
|
|
159
|
+
- client.auth.isAuthenticated() - Check if user is logged in
|
|
160
|
+
- client.auth.logout() - Logout user
|
|
161
|
+
|
|
162
|
+
## Rules
|
|
163
|
+
1. Use the ThinkSoft SDK for all CRUD operations
|
|
164
|
+
2. Do not create mock data - use real API calls
|
|
165
|
+
3. Handle loading and error states
|
|
166
|
+
4. Use TypeScript for type safety
|
|
167
|
+
5. Build output should go to 'dist' folder
|
|
168
|
+
|
|
169
|
+
## Deploy
|
|
170
|
+
After building, deploy with: thinksoft deploy
|
|
171
|
+
`;
|
|
172
|
+
fs.writeFileSync(path.join(cwd, '.cursorrules'), cursorrules);
|
|
173
|
+
generatedFiles.push('.cursorrules');
|
|
174
|
+
// 3. Generate thinksoft-prompt.txt
|
|
175
|
+
const promptTxt = `I'm building a frontend for a ThinkSoft backend application.
|
|
176
|
+
|
|
177
|
+
APP DETAILS:
|
|
178
|
+
- Name: ${app.name}
|
|
179
|
+
- App ID: ${app.appId}
|
|
180
|
+
- Description: ${app.description || 'N/A'}
|
|
181
|
+
|
|
182
|
+
AVAILABLE TABLES:
|
|
183
|
+
${tableNames.map(name => `- ${name} (use client.${tableSlug(name)})`).join('\n')}
|
|
184
|
+
|
|
185
|
+
SDK SETUP:
|
|
186
|
+
\`\`\`
|
|
187
|
+
npm install @thinksoftai/sdk
|
|
188
|
+
|
|
189
|
+
import { ThinkSoft } from '@thinksoftai/sdk'
|
|
190
|
+
const client = new ThinkSoft({ appId: '${app.appId}' })
|
|
191
|
+
\`\`\`
|
|
192
|
+
|
|
193
|
+
CRUD OPERATIONS:
|
|
194
|
+
${tableNames.map(name => `
|
|
195
|
+
${name}:
|
|
196
|
+
- client.${tableSlug(name)}.list() - Get all
|
|
197
|
+
- client.${tableSlug(name)}.create({ ... }) - Create new
|
|
198
|
+
- client.${tableSlug(name)}.get(id) - Get by ID
|
|
199
|
+
- client.${tableSlug(name)}.update(id, { ... }) - Update
|
|
200
|
+
- client.${tableSlug(name)}.delete(id) - Delete
|
|
201
|
+
`).join('')}
|
|
202
|
+
|
|
203
|
+
AUTH OPERATIONS:
|
|
204
|
+
- client.auth.sendOTP('email') - Send OTP to user's email
|
|
205
|
+
- client.auth.verifyOTP('email', 'code') - Verify OTP code
|
|
206
|
+
- client.auth.isAuthenticated() - Check if user is logged in
|
|
207
|
+
- client.auth.logout() - Logout user
|
|
208
|
+
|
|
209
|
+
DEPLOYMENT:
|
|
210
|
+
After building (npm run build), deploy with: thinksoft deploy
|
|
211
|
+
The app will be live at: https://${app.appId.toLowerCase()}.thinksoftai.com
|
|
212
|
+
|
|
213
|
+
Please help me build a React/Vue/Next.js frontend for this application.
|
|
214
|
+
`;
|
|
215
|
+
fs.writeFileSync(path.join(cwd, 'thinksoft-prompt.txt'), promptTxt);
|
|
216
|
+
generatedFiles.push('thinksoft-prompt.txt');
|
|
217
|
+
return { files: generatedFiles };
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=aiContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiContext.js","sourceRoot":"","sources":["../../src/utils/aiContext.ts"],"names":[],"mappings":"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"}
|