@thinksoftai/cli 1.5.0 → 1.6.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/bin/thinksoft.js +1 -1
- package/dist/commands/agents.d.ts +7 -0
- package/dist/commands/agents.js +162 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/chat.d.ts +12 -0
- package/dist/commands/chat.js +217 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/create.js +13 -5
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/login.js +7 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/records.d.ts +37 -0
- package/dist/commands/records.js +434 -0
- package/dist/commands/records.js.map +1 -0
- package/dist/commands/rules.d.ts +38 -0
- package/dist/commands/rules.js +762 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/schema.d.ts +53 -0
- package/dist/commands/schema.js +631 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/studio.d.ts +13 -0
- package/dist/commands/studio.js +205 -0
- package/dist/commands/studio.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +543 -8
- package/dist/index.js.map +1 -1
- package/dist/utils/api.d.ts +103 -0
- package/dist/utils/api.js +245 -5
- package/dist/utils/api.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Schema command - CRUD operations for app tables and fields
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.list = list;
|
|
43
|
+
exports.show = show;
|
|
44
|
+
exports.create = create;
|
|
45
|
+
exports.update = update;
|
|
46
|
+
exports.deleteTable = deleteTable;
|
|
47
|
+
exports.addField = addField;
|
|
48
|
+
exports.updateField = updateField;
|
|
49
|
+
exports.removeField = removeField;
|
|
50
|
+
exports.schema = schema;
|
|
51
|
+
const ora_1 = __importDefault(require("ora"));
|
|
52
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
53
|
+
const api = __importStar(require("../utils/api"));
|
|
54
|
+
const config = __importStar(require("../utils/config"));
|
|
55
|
+
const logger = __importStar(require("../utils/logger"));
|
|
56
|
+
// Field types supported by ThinkSoft
|
|
57
|
+
const FIELD_TYPES = [
|
|
58
|
+
'text',
|
|
59
|
+
'number',
|
|
60
|
+
'email',
|
|
61
|
+
'phone',
|
|
62
|
+
'date',
|
|
63
|
+
'datetime',
|
|
64
|
+
'select',
|
|
65
|
+
'multiselect',
|
|
66
|
+
'checkbox',
|
|
67
|
+
'textarea',
|
|
68
|
+
'url',
|
|
69
|
+
'currency',
|
|
70
|
+
'file',
|
|
71
|
+
'image',
|
|
72
|
+
'reference'
|
|
73
|
+
];
|
|
74
|
+
/**
|
|
75
|
+
* Check authentication
|
|
76
|
+
*/
|
|
77
|
+
function checkAuth() {
|
|
78
|
+
if (!config.isLoggedIn()) {
|
|
79
|
+
logger.error('Not logged in');
|
|
80
|
+
logger.info('Use "thinksoft login" to authenticate');
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get app ID from argument or project config
|
|
87
|
+
*/
|
|
88
|
+
function getAppId(appId) {
|
|
89
|
+
return appId || config.getProjectConfig()?.appId;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* List all tables (default behavior)
|
|
93
|
+
*/
|
|
94
|
+
async function list(appId) {
|
|
95
|
+
if (!checkAuth())
|
|
96
|
+
return;
|
|
97
|
+
const targetAppId = getAppId(appId);
|
|
98
|
+
if (!targetAppId) {
|
|
99
|
+
logger.error('App ID is required');
|
|
100
|
+
logger.info('Usage: thinksoft schema list [appId]');
|
|
101
|
+
logger.info('Or run from a directory with thinksoft.json');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
logger.header('Schema - List Tables');
|
|
105
|
+
logger.keyValue('App ID', targetAppId);
|
|
106
|
+
const spinner = (0, ora_1.default)('Fetching schema...').start();
|
|
107
|
+
const result = await api.getSchema(targetAppId);
|
|
108
|
+
if (result.error) {
|
|
109
|
+
spinner.fail('Failed to fetch schema');
|
|
110
|
+
handleError(result.error);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
spinner.succeed('Schema retrieved');
|
|
114
|
+
const tables = result.data || [];
|
|
115
|
+
if (tables.length === 0) {
|
|
116
|
+
logger.newLine();
|
|
117
|
+
logger.info('No tables found');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
logger.newLine();
|
|
121
|
+
logger.log(`Found ${tables.length} table(s):`);
|
|
122
|
+
logger.newLine();
|
|
123
|
+
tables.forEach((table, index) => {
|
|
124
|
+
const fieldCount = table.fields?.length || 0;
|
|
125
|
+
logger.log(` ${index + 1}. ${table.icon || '📋'} ${table.name}`);
|
|
126
|
+
logger.log(` Slug: ${table.slug}`);
|
|
127
|
+
logger.log(` Fields: ${fieldCount}`);
|
|
128
|
+
logger.newLine();
|
|
129
|
+
});
|
|
130
|
+
logger.info('Tip: Use "thinksoft schema show <table>" to see field details');
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Show details for a specific table
|
|
134
|
+
*/
|
|
135
|
+
async function show(table, appId) {
|
|
136
|
+
if (!checkAuth())
|
|
137
|
+
return;
|
|
138
|
+
const targetAppId = getAppId(appId);
|
|
139
|
+
if (!targetAppId) {
|
|
140
|
+
logger.error('App ID is required');
|
|
141
|
+
logger.info('Usage: thinksoft schema show <table> [appId]');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (!table) {
|
|
145
|
+
logger.error('Table name is required');
|
|
146
|
+
logger.info('Usage: thinksoft schema show <table> [appId]');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
logger.header('Schema - Table Details');
|
|
150
|
+
logger.keyValue('App ID', targetAppId);
|
|
151
|
+
logger.keyValue('Table', table);
|
|
152
|
+
const spinner = (0, ora_1.default)('Fetching table schema...').start();
|
|
153
|
+
const result = await api.getSchema(targetAppId);
|
|
154
|
+
if (result.error) {
|
|
155
|
+
spinner.fail('Failed to fetch schema');
|
|
156
|
+
handleError(result.error);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const tables = result.data || [];
|
|
160
|
+
const tableData = tables.find((t) => t.slug === table || t.name.toLowerCase() === table.toLowerCase());
|
|
161
|
+
if (!tableData) {
|
|
162
|
+
spinner.fail(`Table '${table}' not found`);
|
|
163
|
+
logger.info('Available tables: ' + tables.map((t) => t.slug).join(', '));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
spinner.succeed('Table schema retrieved');
|
|
167
|
+
logger.newLine();
|
|
168
|
+
logger.log(`${tableData.icon || '📋'} ${tableData.name} (${tableData.slug})`);
|
|
169
|
+
if (tableData.description) {
|
|
170
|
+
logger.log(` ${tableData.description}`);
|
|
171
|
+
}
|
|
172
|
+
logger.newLine();
|
|
173
|
+
const fields = tableData.fields || [];
|
|
174
|
+
if (fields.length === 0) {
|
|
175
|
+
logger.info('No fields defined');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
logger.log(`Fields (${fields.length}):`);
|
|
179
|
+
logger.newLine();
|
|
180
|
+
fields.forEach((field) => {
|
|
181
|
+
const required = field.required ? ' *' : '';
|
|
182
|
+
const label = field.label && field.label !== field.name ? ` (${field.label})` : '';
|
|
183
|
+
logger.log(` ${field.name}${label}${required}`);
|
|
184
|
+
logger.log(` Type: ${field.type || 'text'}`);
|
|
185
|
+
if (field.options && field.options.length > 0) {
|
|
186
|
+
logger.log(` Options: ${field.options.join(', ')}`);
|
|
187
|
+
}
|
|
188
|
+
if (field.placeholder) {
|
|
189
|
+
logger.log(` Placeholder: ${field.placeholder}`);
|
|
190
|
+
}
|
|
191
|
+
if (field.referencedFormId) {
|
|
192
|
+
logger.log(` Reference: ${field.referencedFormId}`);
|
|
193
|
+
}
|
|
194
|
+
logger.newLine();
|
|
195
|
+
});
|
|
196
|
+
logger.info('* = required field');
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Create a new table
|
|
200
|
+
*/
|
|
201
|
+
async function create(appId, options = {}) {
|
|
202
|
+
if (!checkAuth())
|
|
203
|
+
return;
|
|
204
|
+
const targetAppId = getAppId(appId);
|
|
205
|
+
if (!targetAppId) {
|
|
206
|
+
logger.error('App ID is required');
|
|
207
|
+
logger.info('Usage: thinksoft schema create [appId]');
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
let tableData = {};
|
|
211
|
+
// If options provided, use them (non-interactive)
|
|
212
|
+
if (options.name) {
|
|
213
|
+
tableData = {
|
|
214
|
+
name: options.name,
|
|
215
|
+
slug: options.slug || options.name.toLowerCase().replace(/\s+/g, '_'),
|
|
216
|
+
icon: options.icon,
|
|
217
|
+
description: options.description
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// Interactive mode
|
|
222
|
+
const answers = await inquirer_1.default.prompt([
|
|
223
|
+
{
|
|
224
|
+
type: 'input',
|
|
225
|
+
name: 'name',
|
|
226
|
+
message: 'Table name:',
|
|
227
|
+
validate: (input) => input.trim() ? true : 'Table name is required'
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
type: 'input',
|
|
231
|
+
name: 'slug',
|
|
232
|
+
message: 'Slug (auto-generated if empty):',
|
|
233
|
+
default: (ans) => ans.name.toLowerCase().replace(/\s+/g, '_')
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
type: 'input',
|
|
237
|
+
name: 'icon',
|
|
238
|
+
message: 'Icon (emoji, optional):',
|
|
239
|
+
default: '📋'
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
type: 'input',
|
|
243
|
+
name: 'description',
|
|
244
|
+
message: 'Description (optional):'
|
|
245
|
+
}
|
|
246
|
+
]);
|
|
247
|
+
tableData = answers;
|
|
248
|
+
}
|
|
249
|
+
logger.header('Schema - Create Table');
|
|
250
|
+
logger.keyValue('App ID', targetAppId);
|
|
251
|
+
logger.keyValue('Table Name', tableData.name);
|
|
252
|
+
const spinner = (0, ora_1.default)('Creating table...').start();
|
|
253
|
+
const result = await api.createTable(targetAppId, tableData);
|
|
254
|
+
if (result.error) {
|
|
255
|
+
spinner.fail('Failed to create table');
|
|
256
|
+
handleError(result.error);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
spinner.succeed(`Table "${tableData.name}" created`);
|
|
260
|
+
// Ask if user wants to add fields
|
|
261
|
+
if (!options.yes) {
|
|
262
|
+
const { addFields } = await inquirer_1.default.prompt([{
|
|
263
|
+
type: 'confirm',
|
|
264
|
+
name: 'addFields',
|
|
265
|
+
message: 'Add fields now?',
|
|
266
|
+
default: true
|
|
267
|
+
}]);
|
|
268
|
+
if (addFields) {
|
|
269
|
+
await addFieldsInteractive(targetAppId, tableData.slug);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Update table metadata
|
|
275
|
+
*/
|
|
276
|
+
async function update(table, appId, options = {}) {
|
|
277
|
+
if (!checkAuth())
|
|
278
|
+
return;
|
|
279
|
+
const targetAppId = getAppId(appId);
|
|
280
|
+
if (!targetAppId || !table) {
|
|
281
|
+
logger.error('App ID and table name are required');
|
|
282
|
+
logger.info('Usage: thinksoft schema update <table> [appId]');
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
let updates = {};
|
|
286
|
+
// If options provided, use them
|
|
287
|
+
if (options.name || options.icon || options.description) {
|
|
288
|
+
updates = {
|
|
289
|
+
name: options.name,
|
|
290
|
+
icon: options.icon,
|
|
291
|
+
description: options.description
|
|
292
|
+
};
|
|
293
|
+
// Remove undefined values
|
|
294
|
+
Object.keys(updates).forEach(key => updates[key] === undefined && delete updates[key]);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
// Interactive mode - fetch current values first
|
|
298
|
+
const schemaResult = await api.getSchema(targetAppId);
|
|
299
|
+
const tables = schemaResult.data || [];
|
|
300
|
+
const currentTable = tables.find((t) => t.slug === table || t.name.toLowerCase() === table.toLowerCase());
|
|
301
|
+
if (!currentTable) {
|
|
302
|
+
logger.error(`Table '${table}' not found`);
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
const answers = await inquirer_1.default.prompt([
|
|
306
|
+
{
|
|
307
|
+
type: 'input',
|
|
308
|
+
name: 'name',
|
|
309
|
+
message: 'Table name:',
|
|
310
|
+
default: currentTable.name
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
type: 'input',
|
|
314
|
+
name: 'icon',
|
|
315
|
+
message: 'Icon:',
|
|
316
|
+
default: currentTable.icon || '📋'
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
type: 'input',
|
|
320
|
+
name: 'description',
|
|
321
|
+
message: 'Description:',
|
|
322
|
+
default: currentTable.description || ''
|
|
323
|
+
}
|
|
324
|
+
]);
|
|
325
|
+
updates = answers;
|
|
326
|
+
}
|
|
327
|
+
logger.header('Schema - Update Table');
|
|
328
|
+
logger.keyValue('App ID', targetAppId);
|
|
329
|
+
logger.keyValue('Table', table);
|
|
330
|
+
const spinner = (0, ora_1.default)('Updating table...').start();
|
|
331
|
+
const result = await api.updateTable(targetAppId, table, updates);
|
|
332
|
+
if (result.error) {
|
|
333
|
+
spinner.fail('Failed to update table');
|
|
334
|
+
handleError(result.error);
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
spinner.succeed('Table updated');
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Delete a table
|
|
341
|
+
*/
|
|
342
|
+
async function deleteTable(table, appId, options = {}) {
|
|
343
|
+
if (!checkAuth())
|
|
344
|
+
return;
|
|
345
|
+
const targetAppId = getAppId(appId);
|
|
346
|
+
if (!targetAppId || !table) {
|
|
347
|
+
logger.error('App ID and table name are required');
|
|
348
|
+
logger.info('Usage: thinksoft schema delete <table> [appId]');
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
// Confirm deletion
|
|
352
|
+
if (!options.yes) {
|
|
353
|
+
const { confirm } = await inquirer_1.default.prompt([{
|
|
354
|
+
type: 'confirm',
|
|
355
|
+
name: 'confirm',
|
|
356
|
+
message: `Delete table "${table}"? This will remove all data in the table.`,
|
|
357
|
+
default: false
|
|
358
|
+
}]);
|
|
359
|
+
if (!confirm) {
|
|
360
|
+
logger.info('Cancelled');
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
logger.header('Schema - Delete Table');
|
|
365
|
+
logger.keyValue('App ID', targetAppId);
|
|
366
|
+
logger.keyValue('Table', table);
|
|
367
|
+
const spinner = (0, ora_1.default)('Deleting table...').start();
|
|
368
|
+
const result = await api.deleteTable(targetAppId, table);
|
|
369
|
+
if (result.error) {
|
|
370
|
+
spinner.fail('Failed to delete table');
|
|
371
|
+
handleError(result.error);
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
spinner.succeed(`Table "${table}" deleted`);
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Add a field to a table
|
|
378
|
+
*/
|
|
379
|
+
async function addField(table, appId, options = {}) {
|
|
380
|
+
if (!checkAuth())
|
|
381
|
+
return;
|
|
382
|
+
const targetAppId = getAppId(appId);
|
|
383
|
+
if (!targetAppId || !table) {
|
|
384
|
+
logger.error('App ID and table name are required');
|
|
385
|
+
logger.info('Usage: thinksoft schema add-field <table> [appId]');
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
let fieldData = {};
|
|
389
|
+
// If options provided, use them
|
|
390
|
+
if (options.name && options.type) {
|
|
391
|
+
fieldData = {
|
|
392
|
+
name: options.name,
|
|
393
|
+
type: options.type,
|
|
394
|
+
required: options.required || false,
|
|
395
|
+
options: options.options ? options.options.split(',').map(o => o.trim()) : undefined
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
// Interactive mode
|
|
400
|
+
fieldData = await promptForField();
|
|
401
|
+
}
|
|
402
|
+
logger.header('Schema - Add Field');
|
|
403
|
+
logger.keyValue('App ID', targetAppId);
|
|
404
|
+
logger.keyValue('Table', table);
|
|
405
|
+
logger.keyValue('Field', fieldData.name);
|
|
406
|
+
const spinner = (0, ora_1.default)('Adding field...').start();
|
|
407
|
+
const result = await api.addColumn(targetAppId, table, fieldData);
|
|
408
|
+
if (result.error) {
|
|
409
|
+
spinner.fail('Failed to add field');
|
|
410
|
+
handleError(result.error);
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
spinner.succeed(`Field "${fieldData.name}" added to "${table}"`);
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Update a field in a table
|
|
417
|
+
*/
|
|
418
|
+
async function updateField(table, field, appId, options = {}) {
|
|
419
|
+
if (!checkAuth())
|
|
420
|
+
return;
|
|
421
|
+
const targetAppId = getAppId(appId);
|
|
422
|
+
if (!targetAppId || !table || !field) {
|
|
423
|
+
logger.error('App ID, table name, and field name are required');
|
|
424
|
+
logger.info('Usage: thinksoft schema update-field <table> <field> [appId]');
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
let updates = {};
|
|
428
|
+
// If options provided, use them
|
|
429
|
+
if (options.name || options.type || options.required !== undefined) {
|
|
430
|
+
updates = {
|
|
431
|
+
name: options.name,
|
|
432
|
+
type: options.type,
|
|
433
|
+
required: options.required,
|
|
434
|
+
options: options.options ? options.options.split(',').map(o => o.trim()) : undefined
|
|
435
|
+
};
|
|
436
|
+
Object.keys(updates).forEach(key => updates[key] === undefined && delete updates[key]);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
// Interactive mode - fetch current field first
|
|
440
|
+
const schemaResult = await api.getSchema(targetAppId);
|
|
441
|
+
const tables = schemaResult.data || [];
|
|
442
|
+
const tableData = tables.find((t) => t.slug === table || t.name.toLowerCase() === table.toLowerCase());
|
|
443
|
+
if (!tableData) {
|
|
444
|
+
logger.error(`Table '${table}' not found`);
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
const currentField = (tableData.fields || []).find((f) => f.name === field);
|
|
448
|
+
if (!currentField) {
|
|
449
|
+
logger.error(`Field '${field}' not found in table '${table}'`);
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
const answers = await inquirer_1.default.prompt([
|
|
453
|
+
{
|
|
454
|
+
type: 'input',
|
|
455
|
+
name: 'name',
|
|
456
|
+
message: 'Field name:',
|
|
457
|
+
default: currentField.name
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
type: 'list',
|
|
461
|
+
name: 'type',
|
|
462
|
+
message: 'Field type:',
|
|
463
|
+
choices: FIELD_TYPES,
|
|
464
|
+
default: currentField.type || 'text'
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
type: 'confirm',
|
|
468
|
+
name: 'required',
|
|
469
|
+
message: 'Required?',
|
|
470
|
+
default: currentField.required || false
|
|
471
|
+
}
|
|
472
|
+
]);
|
|
473
|
+
// If type is select/multiselect, prompt for options
|
|
474
|
+
if (answers.type === 'select' || answers.type === 'multiselect') {
|
|
475
|
+
const { optionsStr } = await inquirer_1.default.prompt([{
|
|
476
|
+
type: 'input',
|
|
477
|
+
name: 'optionsStr',
|
|
478
|
+
message: 'Options (comma-separated):',
|
|
479
|
+
default: currentField.options?.join(', ') || ''
|
|
480
|
+
}]);
|
|
481
|
+
answers.options = optionsStr ? optionsStr.split(',').map((o) => o.trim()) : [];
|
|
482
|
+
}
|
|
483
|
+
updates = answers;
|
|
484
|
+
}
|
|
485
|
+
logger.header('Schema - Update Field');
|
|
486
|
+
logger.keyValue('App ID', targetAppId);
|
|
487
|
+
logger.keyValue('Table', table);
|
|
488
|
+
logger.keyValue('Field', field);
|
|
489
|
+
const spinner = (0, ora_1.default)('Updating field...').start();
|
|
490
|
+
const result = await api.updateColumn(targetAppId, table, field, updates);
|
|
491
|
+
if (result.error) {
|
|
492
|
+
spinner.fail('Failed to update field');
|
|
493
|
+
handleError(result.error);
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
spinner.succeed(`Field "${field}" updated`);
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Remove a field from a table
|
|
500
|
+
*/
|
|
501
|
+
async function removeField(table, field, appId, options = {}) {
|
|
502
|
+
if (!checkAuth())
|
|
503
|
+
return;
|
|
504
|
+
const targetAppId = getAppId(appId);
|
|
505
|
+
if (!targetAppId || !table || !field) {
|
|
506
|
+
logger.error('App ID, table name, and field name are required');
|
|
507
|
+
logger.info('Usage: thinksoft schema remove-field <table> <field> [appId]');
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
// Confirm deletion
|
|
511
|
+
if (!options.yes) {
|
|
512
|
+
const { confirm } = await inquirer_1.default.prompt([{
|
|
513
|
+
type: 'confirm',
|
|
514
|
+
name: 'confirm',
|
|
515
|
+
message: `Remove field "${field}" from "${table}"? This will delete all data in this field.`,
|
|
516
|
+
default: false
|
|
517
|
+
}]);
|
|
518
|
+
if (!confirm) {
|
|
519
|
+
logger.info('Cancelled');
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
logger.header('Schema - Remove Field');
|
|
524
|
+
logger.keyValue('App ID', targetAppId);
|
|
525
|
+
logger.keyValue('Table', table);
|
|
526
|
+
logger.keyValue('Field', field);
|
|
527
|
+
const spinner = (0, ora_1.default)('Removing field...').start();
|
|
528
|
+
const result = await api.deleteColumn(targetAppId, table, field);
|
|
529
|
+
if (result.error) {
|
|
530
|
+
spinner.fail('Failed to remove field');
|
|
531
|
+
handleError(result.error);
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
spinner.succeed(`Field "${field}" removed from "${table}"`);
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Interactive prompt for field creation
|
|
538
|
+
*/
|
|
539
|
+
async function promptForField() {
|
|
540
|
+
const answers = await inquirer_1.default.prompt([
|
|
541
|
+
{
|
|
542
|
+
type: 'input',
|
|
543
|
+
name: 'name',
|
|
544
|
+
message: 'Field name:',
|
|
545
|
+
validate: (input) => input.trim() ? true : 'Field name is required'
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
type: 'list',
|
|
549
|
+
name: 'type',
|
|
550
|
+
message: 'Field type:',
|
|
551
|
+
choices: FIELD_TYPES,
|
|
552
|
+
default: 'text'
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
type: 'confirm',
|
|
556
|
+
name: 'required',
|
|
557
|
+
message: 'Required?',
|
|
558
|
+
default: false
|
|
559
|
+
}
|
|
560
|
+
]);
|
|
561
|
+
// If type is select/multiselect, prompt for options
|
|
562
|
+
if (answers.type === 'select' || answers.type === 'multiselect') {
|
|
563
|
+
const { optionsStr } = await inquirer_1.default.prompt([{
|
|
564
|
+
type: 'input',
|
|
565
|
+
name: 'optionsStr',
|
|
566
|
+
message: 'Options (comma-separated):',
|
|
567
|
+
validate: (input) => input.trim() ? true : 'At least one option is required'
|
|
568
|
+
}]);
|
|
569
|
+
answers.options = optionsStr.split(',').map((o) => o.trim());
|
|
570
|
+
}
|
|
571
|
+
// If type is reference, prompt for referenced table
|
|
572
|
+
if (answers.type === 'reference') {
|
|
573
|
+
const { referencedFormId } = await inquirer_1.default.prompt([{
|
|
574
|
+
type: 'input',
|
|
575
|
+
name: 'referencedFormId',
|
|
576
|
+
message: 'Referenced table slug:',
|
|
577
|
+
validate: (input) => input.trim() ? true : 'Referenced table is required'
|
|
578
|
+
}]);
|
|
579
|
+
answers.referencedFormId = referencedFormId;
|
|
580
|
+
}
|
|
581
|
+
return answers;
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Interactive loop to add multiple fields
|
|
585
|
+
*/
|
|
586
|
+
async function addFieldsInteractive(appId, tableSlug) {
|
|
587
|
+
let addMore = true;
|
|
588
|
+
while (addMore) {
|
|
589
|
+
const fieldData = await promptForField();
|
|
590
|
+
const spinner = (0, ora_1.default)('Adding field...').start();
|
|
591
|
+
const result = await api.addColumn(appId, tableSlug, fieldData);
|
|
592
|
+
if (result.error) {
|
|
593
|
+
spinner.fail('Failed to add field');
|
|
594
|
+
logger.error(result.error);
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
spinner.succeed(`Field "${fieldData.name}" added`);
|
|
598
|
+
}
|
|
599
|
+
const { more } = await inquirer_1.default.prompt([{
|
|
600
|
+
type: 'confirm',
|
|
601
|
+
name: 'more',
|
|
602
|
+
message: 'Add another field?',
|
|
603
|
+
default: true
|
|
604
|
+
}]);
|
|
605
|
+
addMore = more;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* Legacy schema function (for backward compatibility)
|
|
610
|
+
*/
|
|
611
|
+
async function schema(appId, options = {}) {
|
|
612
|
+
if (options.table) {
|
|
613
|
+
await show(options.table, appId);
|
|
614
|
+
}
|
|
615
|
+
else {
|
|
616
|
+
await list(appId);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
function handleError(error) {
|
|
620
|
+
const errorLower = error.toLowerCase();
|
|
621
|
+
if (errorLower.includes('session expired') ||
|
|
622
|
+
errorLower.includes('token expired') ||
|
|
623
|
+
errorLower.includes('unauthorized')) {
|
|
624
|
+
config.clearAuth();
|
|
625
|
+
logger.error('Session expired. Credentials cleared.');
|
|
626
|
+
logger.info('Run: thinksoft login');
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
logger.error(error);
|
|
630
|
+
}
|
|
631
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Studio command - AI-powered app customization for owners
|
|
3
|
+
*
|
|
4
|
+
* Allows app owners to customize schema and agents through natural language.
|
|
5
|
+
*/
|
|
6
|
+
interface StudioOptions {
|
|
7
|
+
interactive?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Studio command - customize app with AI
|
|
11
|
+
*/
|
|
12
|
+
export declare function studio(appId: string | undefined, message: string | undefined, options?: StudioOptions): Promise<void>;
|
|
13
|
+
export {};
|