@thinksoftai/cli 1.0.3 → 1.0.5

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.
@@ -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 project');
135
- logger.log(' 2. Build your project: npm run build');
136
- logger.log(' 3. Deploy: thinksoft deploy');
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":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -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,192 @@
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
+ ## Available Tables & Operations
93
+ ${tableNames.map(name => `
94
+ ### ${name}
95
+ \`\`\`typescript
96
+ client.${tableSlug(name)}.list() // Get all ${name.toLowerCase()}
97
+ client.${tableSlug(name)}.create({}) // Create new ${name.toLowerCase()}
98
+ client.${tableSlug(name)}.get(id) // Get by ID
99
+ client.${tableSlug(name)}.update(id, {}) // Update by ID
100
+ client.${tableSlug(name)}.delete(id) // Delete by ID
101
+ \`\`\`
102
+ `).join('')}
103
+
104
+ ## Build & Deploy
105
+ \`\`\`bash
106
+ npm run build
107
+ thinksoft deploy
108
+ \`\`\`
109
+
110
+ ## Useful Commands
111
+ \`\`\`bash
112
+ thinksoft apps # List your apps
113
+ thinksoft open # Open app in browser
114
+ thinksoft whoami # Check logged in user
115
+ \`\`\`
116
+ `;
117
+ fs.writeFileSync(path.join(cwd, 'CONTEXT.md'), contextMd);
118
+ generatedFiles.push('CONTEXT.md');
119
+ // 2. Generate .cursorrules
120
+ const cursorrules = `# ThinkSoft App: ${app.name}
121
+ # App ID: ${app.appId}
122
+
123
+ You are helping build a frontend for a ThinkSoft backend application.
124
+
125
+ ## Backend Info
126
+ - This app uses ThinkSoft as the backend (database, API, auth, hosting)
127
+ - App ID: ${app.appId}
128
+ - Tables: ${tableNames.join(', ')}
129
+
130
+ ## SDK Usage
131
+ Always use @thinksoftai/sdk for data operations:
132
+
133
+ \`\`\`typescript
134
+ import { ThinkSoft } from '@thinksoftai/sdk'
135
+ const client = new ThinkSoft({ appId: '${app.appId}' })
136
+ \`\`\`
137
+
138
+ ## Available Data Operations
139
+ ${tableNames.map(name => `- client.${tableSlug(name)}.list() / .create() / .get(id) / .update(id, data) / .delete(id)`).join('\n')}
140
+
141
+ ## Rules
142
+ 1. Use the ThinkSoft SDK for all CRUD operations
143
+ 2. Do not create mock data - use real API calls
144
+ 3. Handle loading and error states
145
+ 4. Use TypeScript for type safety
146
+ 5. Build output should go to 'dist' folder
147
+
148
+ ## Deploy
149
+ After building, deploy with: thinksoft deploy
150
+ `;
151
+ fs.writeFileSync(path.join(cwd, '.cursorrules'), cursorrules);
152
+ generatedFiles.push('.cursorrules');
153
+ // 3. Generate thinksoft-prompt.txt
154
+ const promptTxt = `I'm building a frontend for a ThinkSoft backend application.
155
+
156
+ APP DETAILS:
157
+ - Name: ${app.name}
158
+ - App ID: ${app.appId}
159
+ - Description: ${app.description || 'N/A'}
160
+
161
+ AVAILABLE TABLES:
162
+ ${tableNames.map(name => `- ${name} (use client.${tableSlug(name)})`).join('\n')}
163
+
164
+ SDK SETUP:
165
+ \`\`\`
166
+ npm install @thinksoftai/sdk
167
+
168
+ import { ThinkSoft } from '@thinksoftai/sdk'
169
+ const client = new ThinkSoft({ appId: '${app.appId}' })
170
+ \`\`\`
171
+
172
+ CRUD OPERATIONS:
173
+ ${tableNames.map(name => `
174
+ ${name}:
175
+ - client.${tableSlug(name)}.list() - Get all
176
+ - client.${tableSlug(name)}.create({ ... }) - Create new
177
+ - client.${tableSlug(name)}.get(id) - Get by ID
178
+ - client.${tableSlug(name)}.update(id, { ... }) - Update
179
+ - client.${tableSlug(name)}.delete(id) - Delete
180
+ `).join('')}
181
+
182
+ DEPLOYMENT:
183
+ After building (npm run build), deploy with: thinksoft deploy
184
+ The app will be live at: https://${app.appId.toLowerCase()}.thinksoftai.com
185
+
186
+ Please help me build a React/Vue/Next.js frontend for this application.
187
+ `;
188
+ fs.writeFileSync(path.join(cwd, 'thinksoft-prompt.txt'), promptTxt);
189
+ generatedFiles.push('thinksoft-prompt.txt');
190
+ return { files: generatedFiles };
191
+ }
192
+ //# 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinksoftai/cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "ThinkSoft CLI - Deploy apps to ThinkSoft platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",