@thinksoftai/cli 1.0.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.
Files changed (39) hide show
  1. package/bin/thinksoft.js +2 -0
  2. package/dist/commands/apps.d.ts +4 -0
  3. package/dist/commands/apps.d.ts.map +1 -0
  4. package/dist/commands/apps.js +86 -0
  5. package/dist/commands/apps.js.map +1 -0
  6. package/dist/commands/create.d.ts +6 -0
  7. package/dist/commands/create.js +95 -0
  8. package/dist/commands/create.js.map +1 -0
  9. package/dist/commands/deploy.d.ts +9 -0
  10. package/dist/commands/deploy.js +195 -0
  11. package/dist/commands/deploy.js.map +1 -0
  12. package/dist/commands/init.d.ts +10 -0
  13. package/dist/commands/init.d.ts.map +1 -0
  14. package/dist/commands/init.js +158 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/login.d.ts +8 -0
  17. package/dist/commands/login.d.ts.map +1 -0
  18. package/dist/commands/login.js +146 -0
  19. package/dist/commands/login.js.map +1 -0
  20. package/dist/commands/open.d.ts +8 -0
  21. package/dist/commands/open.js +66 -0
  22. package/dist/commands/open.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +70 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/utils/api.d.ts +26 -0
  28. package/dist/utils/api.d.ts.map +1 -0
  29. package/dist/utils/api.js +152 -0
  30. package/dist/utils/api.js.map +1 -0
  31. package/dist/utils/config.d.ts +33 -0
  32. package/dist/utils/config.d.ts.map +1 -0
  33. package/dist/utils/config.js +136 -0
  34. package/dist/utils/config.js.map +1 -0
  35. package/dist/utils/logger.d.ts +12 -0
  36. package/dist/utils/logger.d.ts.map +1 -0
  37. package/dist/utils/logger.js +74 -0
  38. package/dist/utils/logger.js.map +1 -0
  39. package/package.json +47 -0
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('../dist/index.js');
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Apps command - list user's apps
3
+ */
4
+ export declare function apps(): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA+C1C"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * Apps command - list user's apps
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.apps = apps;
43
+ const ora_1 = __importDefault(require("ora"));
44
+ const chalk_1 = __importDefault(require("chalk"));
45
+ const api = __importStar(require("../utils/api"));
46
+ const config = __importStar(require("../utils/config"));
47
+ const logger = __importStar(require("../utils/logger"));
48
+ async function apps() {
49
+ if (!config.isLoggedIn()) {
50
+ logger.error('Not logged in');
51
+ logger.info('Use "thinksoft login" to authenticate');
52
+ return;
53
+ }
54
+ const spinner = (0, ora_1.default)('Fetching apps...').start();
55
+ const result = await api.listApps();
56
+ if (result.error) {
57
+ spinner.fail('Failed to fetch apps');
58
+ logger.error(result.error);
59
+ return;
60
+ }
61
+ const appList = result.data || [];
62
+ if (appList.length === 0) {
63
+ spinner.succeed('No apps found');
64
+ logger.newLine();
65
+ logger.info('Create your first app with: thinksoft create "Your app description"');
66
+ return;
67
+ }
68
+ spinner.succeed(`Found ${appList.length} app(s)`);
69
+ logger.newLine();
70
+ // Build table
71
+ const rows = [
72
+ ['App ID', 'Name', 'Type', 'URL']
73
+ ];
74
+ appList.forEach((app) => {
75
+ rows.push([
76
+ chalk_1.default.cyan(app.short_id || app.app_id),
77
+ app.name || 'Untitled',
78
+ app.app_type || 'workapp',
79
+ chalk_1.default.gray(`${(app.short_id || app.app_id).toLowerCase()}.thinksoftai.com`)
80
+ ]);
81
+ });
82
+ logger.table(rows);
83
+ logger.newLine();
84
+ logger.info('Admin UI: thinksoftai.com/app/{app-id}');
85
+ }
86
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,oBA+CC;AArDD,8CAAqB;AACrB,kDAAyB;AACzB,kDAAmC;AACnC,wDAAyC;AACzC,wDAAyC;AAElC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;QACpD,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAA;IAE/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;IAEnC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACpC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAEjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QAChC,MAAM,CAAC,OAAO,EAAE,CAAA;QAChB,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;QAClF,OAAM;IACR,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,SAAS,CAAC,CAAA;IACjD,MAAM,CAAC,OAAO,EAAE,CAAA;IAEhB,cAAc;IACd,MAAM,IAAI,GAAe;QACvB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;KAClC,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC;YACR,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC;YACtC,GAAG,CAAC,IAAI,IAAI,UAAU;YACtB,GAAG,CAAC,QAAQ,IAAI,SAAS;YACzB,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC;SAC5E,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAElB,MAAM,CAAC,OAAO,EAAE,CAAA;IAChB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;AACvD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Create command - create a new app with AI
3
+ */
4
+ export declare function create(description: string, options: {
5
+ type?: string;
6
+ }): Promise<void>;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ /**
3
+ * Create command - create a new app with AI
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.create = create;
43
+ const ora_1 = __importDefault(require("ora"));
44
+ const api = __importStar(require("../utils/api"));
45
+ const config = __importStar(require("../utils/config"));
46
+ const logger = __importStar(require("../utils/logger"));
47
+ async function create(description, options) {
48
+ if (!config.isLoggedIn()) {
49
+ logger.error('Not logged in');
50
+ logger.info('Use "thinksoft login" to authenticate');
51
+ return;
52
+ }
53
+ if (!description || !description.trim()) {
54
+ logger.error('App description is required');
55
+ logger.info('Usage: thinksoft create "Your app description"');
56
+ return;
57
+ }
58
+ const appType = options.type || 'workapp';
59
+ logger.header('Create App with AI');
60
+ logger.keyValue('Description', description);
61
+ logger.keyValue('Type', appType);
62
+ logger.newLine();
63
+ const spinner = (0, ora_1.default)('Creating app with AI... (this may take 20-30 seconds)').start();
64
+ const result = await api.createApp(description, appType);
65
+ if (result.error) {
66
+ spinner.fail('Failed to create app');
67
+ logger.error(result.error);
68
+ return;
69
+ }
70
+ const app = result.app;
71
+ if (!app) {
72
+ spinner.fail('Failed to create app');
73
+ logger.error('No app data returned');
74
+ return;
75
+ }
76
+ spinner.succeed('App created successfully!');
77
+ logger.newLine();
78
+ logger.keyValue('Name', app.name);
79
+ logger.keyValue('App ID', app.app_id || app.short_id);
80
+ logger.keyValue('Description', app.description || '');
81
+ logger.newLine();
82
+ logger.keyValue('Admin UI', app.url || `https://thinksoftai.com/app/${app.app_id || app.short_id}`);
83
+ logger.keyValue('Deploy URL', `https://${(app.app_id || app.short_id).toLowerCase()}.thinksoftai.com`);
84
+ if (app.tables && app.tables.length > 0) {
85
+ logger.newLine();
86
+ logger.info(`Tables created: ${app.tables.map((t) => t.name).join(', ')}`);
87
+ }
88
+ logger.newLine();
89
+ logger.info('Next steps:');
90
+ logger.log(' 1. Create your frontend project');
91
+ logger.log(` 2. Run: thinksoft init --app ${app.app_id || app.short_id}`);
92
+ logger.log(' 3. Build your project: npm run build');
93
+ logger.log(' 4. Deploy: thinksoft deploy');
94
+ }
95
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Deploy command - deploy frontend to ThinkSoft
3
+ */
4
+ interface DeployOptions {
5
+ app?: string;
6
+ dir?: string;
7
+ }
8
+ export declare function deploy(options: DeployOptions): Promise<void>;
9
+ export {};
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Deploy command - deploy frontend to ThinkSoft
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.deploy = deploy;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const ora_1 = __importDefault(require("ora"));
46
+ const archiver_1 = __importDefault(require("archiver"));
47
+ const config = __importStar(require("../utils/config"));
48
+ const logger = __importStar(require("../utils/logger"));
49
+ const BASE_URL = 'https://thinksoftai.com/api/v1';
50
+ async function deploy(options) {
51
+ if (!config.isLoggedIn()) {
52
+ logger.error('Not logged in');
53
+ logger.info('Use "thinksoft login" to authenticate');
54
+ return;
55
+ }
56
+ // Get project config or use CLI options
57
+ const projectConfig = config.getProjectConfig();
58
+ const appId = options.app || projectConfig?.appId;
59
+ const outputDir = options.dir || projectConfig?.outputDir || 'dist';
60
+ if (!appId) {
61
+ logger.error('No app ID specified');
62
+ logger.info('Either run "thinksoft init" first, or use --app flag');
63
+ return;
64
+ }
65
+ // Validate output directory exists
66
+ const fullPath = path.resolve(process.cwd(), outputDir);
67
+ if (!fs.existsSync(fullPath)) {
68
+ logger.error(`Output directory not found: ${outputDir}`);
69
+ logger.info('Make sure to build your project first (e.g., npm run build)');
70
+ return;
71
+ }
72
+ // Check if directory has files
73
+ const files = fs.readdirSync(fullPath);
74
+ if (files.length === 0) {
75
+ logger.error(`Output directory is empty: ${outputDir}`);
76
+ return;
77
+ }
78
+ logger.header('Deploy to ThinkSoft');
79
+ logger.keyValue('App ID', appId);
80
+ logger.keyValue('Directory', outputDir);
81
+ logger.keyValue('Files', `${files.length} items`);
82
+ logger.newLine();
83
+ // Create zip file
84
+ const spinner = (0, ora_1.default)('Packaging files...').start();
85
+ let zipBuffer;
86
+ try {
87
+ zipBuffer = await createZipBuffer(fullPath);
88
+ spinner.text = `Packaged ${formatBytes(zipBuffer.length)}`;
89
+ }
90
+ catch (err) {
91
+ spinner.fail('Failed to package files');
92
+ logger.error(err.message);
93
+ return;
94
+ }
95
+ // Upload to API
96
+ spinner.text = 'Uploading...';
97
+ try {
98
+ // Ensure valid token
99
+ const token = config.getToken();
100
+ if (!token) {
101
+ spinner.fail('Authentication required');
102
+ return;
103
+ }
104
+ // Check if token expired and refresh if needed
105
+ if (config.isTokenExpired()) {
106
+ spinner.text = 'Refreshing token...';
107
+ const refreshToken = config.getRefreshToken();
108
+ if (refreshToken) {
109
+ const refreshResponse = await fetch(`${BASE_URL}/_cli/auth/refresh`, {
110
+ method: 'POST',
111
+ headers: { 'Content-Type': 'application/json' },
112
+ body: JSON.stringify({ refresh_token: refreshToken })
113
+ });
114
+ if (refreshResponse.ok) {
115
+ const refreshData = await refreshResponse.json();
116
+ if (refreshData.token) {
117
+ config.saveAuth({
118
+ token: refreshData.token,
119
+ refreshToken: refreshData.refresh_token,
120
+ expiresIn: refreshData.expires_in,
121
+ user: refreshData.user
122
+ });
123
+ }
124
+ }
125
+ }
126
+ }
127
+ const currentToken = config.getToken();
128
+ // Create form data with zip file
129
+ const formData = new FormData();
130
+ const blob = new Blob([zipBuffer], { type: 'application/zip' });
131
+ formData.append('file', blob, 'deploy.zip');
132
+ spinner.text = 'Deploying...';
133
+ const response = await fetch(`${BASE_URL}/apps/${appId}/deploy`, {
134
+ method: 'POST',
135
+ headers: {
136
+ 'Authorization': `Bearer ${currentToken}`
137
+ },
138
+ body: formData
139
+ });
140
+ const result = await response.json();
141
+ if (!response.ok) {
142
+ spinner.fail('Deployment failed');
143
+ logger.error(result.error || 'Unknown error');
144
+ return;
145
+ }
146
+ spinner.succeed('Deployed successfully!');
147
+ logger.newLine();
148
+ const deployUrl = result.url || `https://${appId.toLowerCase()}.thinksoftai.com`;
149
+ logger.keyValue('URL', deployUrl);
150
+ if (result.version) {
151
+ logger.keyValue('Version', result.version);
152
+ }
153
+ logger.newLine();
154
+ logger.success(`Your app is live at ${deployUrl}`);
155
+ }
156
+ catch (err) {
157
+ spinner.fail('Deployment failed');
158
+ logger.error(err.message);
159
+ }
160
+ }
161
+ /**
162
+ * Create a zip buffer from directory
163
+ */
164
+ async function createZipBuffer(dirPath) {
165
+ return new Promise((resolve, reject) => {
166
+ const chunks = [];
167
+ const archive = (0, archiver_1.default)('zip', {
168
+ zlib: { level: 9 }
169
+ });
170
+ archive.on('data', (chunk) => {
171
+ chunks.push(chunk);
172
+ });
173
+ archive.on('end', () => {
174
+ resolve(Buffer.concat(chunks));
175
+ });
176
+ archive.on('error', (err) => {
177
+ reject(err);
178
+ });
179
+ // Add directory contents
180
+ archive.directory(dirPath, false);
181
+ archive.finalize();
182
+ });
183
+ }
184
+ /**
185
+ * Format bytes to human readable
186
+ */
187
+ function formatBytes(bytes) {
188
+ if (bytes === 0)
189
+ return '0 B';
190
+ const k = 1024;
191
+ const sizes = ['B', 'KB', 'MB', 'GB'];
192
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
193
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
194
+ }
195
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBH,wBAoIC;AAlJD,uCAAwB;AACxB,2CAA4B;AAC5B,8CAAqB;AACrB,wDAA+B;AAC/B,wDAAyC;AACzC,wDAAyC;AAEzC,MAAM,QAAQ,GAAG,gCAAgC,CAAA;AAO1C,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;QACpD,OAAM;IACR,CAAC;IAED,wCAAwC;IACxC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;IAE/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,aAAa,EAAE,KAAK,CAAA;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,aAAa,EAAE,SAAS,IAAI,MAAM,CAAA;IAEnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACnC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;QACnE,OAAM;IACR,CAAC;IAED,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAA;IAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;QAC1E,OAAM;IACR,CAAC;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;QACvD,OAAM;IACR,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;IACpC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAChC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAA;IACjD,MAAM,CAAC,OAAO,EAAE,CAAA;IAEhB,kBAAkB;IAClB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAA;IAEjD,IAAI,SAAiB,CAAA;IACrB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC3C,OAAO,CAAC,IAAI,GAAG,YAAY,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;IAC5D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IAED,gBAAgB;IAChB,OAAO,CAAC,IAAI,GAAG,cAAc,CAAA;IAE7B,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;YACvC,OAAM;QACR,CAAC;QAED,+CAA+C;QAC/C,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAA;YACpC,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAA;YAC7C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,oBAAoB,EAAE;oBACnE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;iBACtD,CAAC,CAAA;gBAEF,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAQ,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;oBACrD,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;wBACtB,MAAM,CAAC,QAAQ,CAAC;4BACd,KAAK,EAAE,WAAW,CAAC,KAAK;4BACxB,YAAY,EAAE,WAAW,CAAC,aAAa;4BACvC,SAAS,EAAE,WAAW,CAAC,UAAU;4BACjC,IAAI,EAAE,WAAW,CAAC,IAAI;yBACvB,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;QAEtC,iCAAiC;QACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC/B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;QAC/D,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;QAE3C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAA;QAE7B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,SAAS,KAAK,SAAS,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,YAAY,EAAE;aAC1C;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,MAAM,MAAM,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;QACzC,MAAM,CAAC,OAAO,EAAE,CAAA;QAEhB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,KAAK,CAAC,WAAW,EAAE,kBAAkB,CAAA;QAChF,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAEjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAA;QAChB,MAAM,CAAC,OAAO,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAA;IAEpD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,KAAK,EAAE;YAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SACnB,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,yBAAyB;QACzB,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACjC,OAAO,CAAC,QAAQ,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAA;IACd,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,OAAO,GAAG,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACzE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Init command - initialize project with thinksoft.json
3
+ */
4
+ interface InitOptions {
5
+ app?: string;
6
+ dir?: string;
7
+ yes?: boolean;
8
+ }
9
+ export declare function init(options: InitOptions): Promise<void>;
10
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4H9D"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * Init command - initialize project with thinksoft.json
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.init = init;
43
+ const inquirer_1 = __importDefault(require("inquirer"));
44
+ const ora_1 = __importDefault(require("ora"));
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const api = __importStar(require("../utils/api"));
48
+ const config = __importStar(require("../utils/config"));
49
+ const logger = __importStar(require("../utils/logger"));
50
+ async function init(options) {
51
+ if (!config.isLoggedIn()) {
52
+ logger.error('Not logged in');
53
+ logger.info('Use "thinksoft login" to authenticate');
54
+ return;
55
+ }
56
+ // Check if already initialized
57
+ if (config.projectConfigExists() && !options.yes) {
58
+ const { overwrite } = await inquirer_1.default.prompt([
59
+ {
60
+ type: 'confirm',
61
+ name: 'overwrite',
62
+ message: 'thinksoft.json already exists. Overwrite?',
63
+ default: false
64
+ }
65
+ ]);
66
+ if (!overwrite) {
67
+ logger.info('Aborted');
68
+ return;
69
+ }
70
+ }
71
+ logger.header('Initialize ThinkSoft Project');
72
+ let appId = options.app;
73
+ let outputDir = options.dir || 'dist';
74
+ // If no app provided, fetch and let user select
75
+ if (!appId) {
76
+ const spinner = (0, ora_1.default)('Fetching your apps...').start();
77
+ const result = await api.listApps();
78
+ if (result.error) {
79
+ spinner.fail('Failed to fetch apps');
80
+ logger.error(result.error);
81
+ return;
82
+ }
83
+ const appList = result.data || [];
84
+ spinner.stop();
85
+ if (appList.length === 0) {
86
+ logger.warning('No apps found');
87
+ logger.info('Create an app first: thinksoft create "Your app description"');
88
+ return;
89
+ }
90
+ const { selectedApp } = await inquirer_1.default.prompt([
91
+ {
92
+ type: 'list',
93
+ name: 'selectedApp',
94
+ message: 'Select an app:',
95
+ choices: appList.map((app) => ({
96
+ name: `${app.name} (${app.short_id || app.app_id})`,
97
+ value: app.short_id || app.app_id
98
+ }))
99
+ }
100
+ ]);
101
+ appId = selectedApp;
102
+ }
103
+ // Ask for output directory
104
+ if (!options.dir) {
105
+ // Try to detect common build directories
106
+ const commonDirs = ['dist', 'build', 'out', '.next', 'public'];
107
+ const existingDirs = commonDirs.filter(d => fs.existsSync(path.join(process.cwd(), d)));
108
+ const { dir } = await inquirer_1.default.prompt([
109
+ {
110
+ type: 'input',
111
+ name: 'dir',
112
+ message: 'Output directory (build folder):',
113
+ default: existingDirs[0] || 'dist',
114
+ validate: (input) => {
115
+ if (!input.trim())
116
+ return 'Directory is required';
117
+ return true;
118
+ }
119
+ }
120
+ ]);
121
+ outputDir = dir;
122
+ }
123
+ // Ask for framework (optional)
124
+ const { framework } = await inquirer_1.default.prompt([
125
+ {
126
+ type: 'list',
127
+ name: 'framework',
128
+ message: 'Framework (optional):',
129
+ choices: [
130
+ { name: 'React', value: 'react' },
131
+ { name: 'Vue', value: 'vue' },
132
+ { name: 'Next.js', value: 'nextjs' },
133
+ { name: 'Svelte', value: 'svelte' },
134
+ { name: 'Other / None', value: '' }
135
+ ]
136
+ }
137
+ ]);
138
+ // Save config
139
+ const projectConfig = {
140
+ appId: appId,
141
+ outputDir,
142
+ ...(framework && { framework })
143
+ };
144
+ config.saveProjectConfig(projectConfig);
145
+ logger.newLine();
146
+ logger.success('Created thinksoft.json');
147
+ logger.newLine();
148
+ logger.keyValue('App ID', appId);
149
+ logger.keyValue('Output Directory', outputDir);
150
+ if (framework) {
151
+ logger.keyValue('Framework', framework);
152
+ }
153
+ logger.newLine();
154
+ logger.info('Next steps:');
155
+ logger.log(' 1. Build your project: npm run build');
156
+ logger.log(' 2. Deploy: thinksoft deploy');
157
+ }
158
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Login command - authenticate with ThinkSoft
3
+ */
4
+ export declare function login(options: {
5
+ token?: string;
6
+ }): Promise<void>;
7
+ export declare function logout(): Promise<void>;
8
+ export declare function whoami(): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,wBAAsB,KAAK,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EtE;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAS5C;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB5C"}