@solidnumber/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 (78) hide show
  1. package/README.md +150 -0
  2. package/dist/commands/auth.d.ts +6 -0
  3. package/dist/commands/auth.d.ts.map +1 -0
  4. package/dist/commands/auth.js +144 -0
  5. package/dist/commands/auth.js.map +1 -0
  6. package/dist/commands/clone.d.ts +19 -0
  7. package/dist/commands/clone.d.ts.map +1 -0
  8. package/dist/commands/clone.js +205 -0
  9. package/dist/commands/clone.js.map +1 -0
  10. package/dist/commands/dev.d.ts +6 -0
  11. package/dist/commands/dev.d.ts.map +1 -0
  12. package/dist/commands/dev.js +218 -0
  13. package/dist/commands/dev.js.map +1 -0
  14. package/dist/commands/docs.d.ts +17 -0
  15. package/dist/commands/docs.d.ts.map +1 -0
  16. package/dist/commands/docs.js +864 -0
  17. package/dist/commands/docs.js.map +1 -0
  18. package/dist/commands/droplet.d.ts +10 -0
  19. package/dist/commands/droplet.d.ts.map +1 -0
  20. package/dist/commands/droplet.js +292 -0
  21. package/dist/commands/droplet.js.map +1 -0
  22. package/dist/commands/health.d.ts +6 -0
  23. package/dist/commands/health.d.ts.map +1 -0
  24. package/dist/commands/health.js +129 -0
  25. package/dist/commands/health.js.map +1 -0
  26. package/dist/commands/integrations.d.ts +6 -0
  27. package/dist/commands/integrations.d.ts.map +1 -0
  28. package/dist/commands/integrations.js +380 -0
  29. package/dist/commands/integrations.js.map +1 -0
  30. package/dist/commands/kb.d.ts +9 -0
  31. package/dist/commands/kb.d.ts.map +1 -0
  32. package/dist/commands/kb.js +151 -0
  33. package/dist/commands/kb.js.map +1 -0
  34. package/dist/commands/pages.d.ts +8 -0
  35. package/dist/commands/pages.d.ts.map +1 -0
  36. package/dist/commands/pages.js +103 -0
  37. package/dist/commands/pages.js.map +1 -0
  38. package/dist/commands/pull.d.ts +16 -0
  39. package/dist/commands/pull.d.ts.map +1 -0
  40. package/dist/commands/pull.js +336 -0
  41. package/dist/commands/pull.js.map +1 -0
  42. package/dist/commands/push.d.ts +14 -0
  43. package/dist/commands/push.d.ts.map +1 -0
  44. package/dist/commands/push.js +370 -0
  45. package/dist/commands/push.js.map +1 -0
  46. package/dist/commands/services.d.ts +8 -0
  47. package/dist/commands/services.d.ts.map +1 -0
  48. package/dist/commands/services.js +66 -0
  49. package/dist/commands/services.js.map +1 -0
  50. package/dist/commands/status.d.ts +9 -0
  51. package/dist/commands/status.d.ts.map +1 -0
  52. package/dist/commands/status.js +89 -0
  53. package/dist/commands/status.js.map +1 -0
  54. package/dist/commands/train.d.ts +16 -0
  55. package/dist/commands/train.d.ts.map +1 -0
  56. package/dist/commands/train.js +338 -0
  57. package/dist/commands/train.js.map +1 -0
  58. package/dist/commands/vibe.d.ts +6 -0
  59. package/dist/commands/vibe.d.ts.map +1 -0
  60. package/dist/commands/vibe.js +176 -0
  61. package/dist/commands/vibe.js.map +1 -0
  62. package/dist/index.d.ts +19 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +119 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/lib/api-client.d.ts +235 -0
  67. package/dist/lib/api-client.d.ts.map +1 -0
  68. package/dist/lib/api-client.js +287 -0
  69. package/dist/lib/api-client.js.map +1 -0
  70. package/dist/lib/config.d.ts +43 -0
  71. package/dist/lib/config.d.ts.map +1 -0
  72. package/dist/lib/config.js +189 -0
  73. package/dist/lib/config.js.map +1 -0
  74. package/dist/lib/ui.d.ts +49 -0
  75. package/dist/lib/ui.d.ts.map +1 -0
  76. package/dist/lib/ui.js +182 -0
  77. package/dist/lib/ui.js.map +1 -0
  78. package/package.json +60 -0
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+ /**
3
+ * Push command for Solid CLI
4
+ *
5
+ * Detects local file changes and pushes them to the Solid# API:
6
+ * ./pages/*.json — Create/update CMS pages
7
+ * ./kb/*.md — Create/update knowledge base entries
8
+ * ./solid.config.json — Update website settings
9
+ *
10
+ * Compares against .solid/manifest.json to detect what changed.
11
+ * All changes are scoped to the authenticated company_id.
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.pushCommand = void 0;
51
+ const commander_1 = require("commander");
52
+ const ora_1 = __importDefault(require("ora"));
53
+ const chalk_1 = __importDefault(require("chalk"));
54
+ const fs = __importStar(require("fs"));
55
+ const path = __importStar(require("path"));
56
+ const readline = __importStar(require("readline"));
57
+ const config_1 = require("../lib/config");
58
+ const api_client_1 = require("../lib/api-client");
59
+ const ui_1 = require("../lib/ui");
60
+ function parseKbMarkdown(content) {
61
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
62
+ if (!frontmatterMatch) {
63
+ return { title: 'Untitled', category: 'general', content: content.trim() };
64
+ }
65
+ const frontmatter = frontmatterMatch[1];
66
+ const body = frontmatterMatch[2].trim();
67
+ let id;
68
+ let title = 'Untitled';
69
+ let category = 'general';
70
+ for (const line of frontmatter.split('\n')) {
71
+ const [key, ...valueParts] = line.split(':');
72
+ const value = valueParts.join(':').trim();
73
+ if (key.trim() === 'id')
74
+ id = parseInt(value, 10);
75
+ if (key.trim() === 'title')
76
+ title = value.replace(/^["']|["']$/g, '');
77
+ if (key.trim() === 'category')
78
+ category = value;
79
+ }
80
+ return { id, title, category, content: body };
81
+ }
82
+ function confirm(question) {
83
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
84
+ return new Promise((resolve) => {
85
+ rl.question(question, (answer) => {
86
+ rl.close();
87
+ resolve(answer.toLowerCase().startsWith('y'));
88
+ });
89
+ });
90
+ }
91
+ function detectChanges(baseDir, manifest) {
92
+ const changes = {
93
+ pages: [],
94
+ kb: [],
95
+ settings: { changed: false, data: {} },
96
+ summary: { creates: 0, updates: 0, settings: false },
97
+ };
98
+ // ── Detect page changes ───────────────────────────────────────────
99
+ const pagesDir = path.join(baseDir, 'pages');
100
+ if (fs.existsSync(pagesDir)) {
101
+ const pageFiles = fs.readdirSync(pagesDir).filter((f) => f.endsWith('.json'));
102
+ for (const file of pageFiles) {
103
+ const filePath = path.join(pagesDir, file);
104
+ const content = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
105
+ if (manifest.pages[file]) {
106
+ // Existing page — update
107
+ changes.pages.push({ file, action: 'update', data: content });
108
+ changes.summary.updates++;
109
+ }
110
+ else {
111
+ // New page — create
112
+ changes.pages.push({ file, action: 'create', data: content });
113
+ changes.summary.creates++;
114
+ }
115
+ }
116
+ }
117
+ // ── Detect KB changes ─────────────────────────────────────────────
118
+ const kbDir = path.join(baseDir, 'kb');
119
+ if (fs.existsSync(kbDir)) {
120
+ const kbFiles = fs.readdirSync(kbDir).filter((f) => f.endsWith('.md'));
121
+ for (const file of kbFiles) {
122
+ const filePath = path.join(kbDir, file);
123
+ const raw = fs.readFileSync(filePath, 'utf-8');
124
+ const parsed = parseKbMarkdown(raw);
125
+ if (manifest.kb[file]) {
126
+ // Existing entry — update
127
+ changes.kb.push({
128
+ file,
129
+ action: 'update',
130
+ data: { ...parsed, id: manifest.kb[file].id },
131
+ });
132
+ changes.summary.updates++;
133
+ }
134
+ else {
135
+ // New entry — create
136
+ changes.kb.push({ file, action: 'create', data: parsed });
137
+ changes.summary.creates++;
138
+ }
139
+ }
140
+ }
141
+ // ── Detect settings changes ───────────────────────────────────────
142
+ const configPath = path.join(baseDir, 'solid.config.json');
143
+ if (fs.existsSync(configPath)) {
144
+ const localConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
145
+ if (localConfig.website_settings && Object.keys(localConfig.website_settings).length > 0) {
146
+ changes.settings = { changed: true, data: localConfig.website_settings };
147
+ changes.summary.settings = true;
148
+ }
149
+ }
150
+ return changes;
151
+ }
152
+ exports.pushCommand = new commander_1.Command('push')
153
+ .description('Push local file changes to your Solid# business')
154
+ .option('-d, --dir <directory>', 'Project directory', '.')
155
+ .option('--dry-run', 'Show what would be pushed without making changes')
156
+ .option('--yes', 'Skip confirmation prompt')
157
+ .option('--pages-only', 'Only push page changes')
158
+ .option('--kb-only', 'Only push KB changes')
159
+ .option('--settings-only', 'Only push website settings')
160
+ .action(async (options) => {
161
+ if (!config_1.config.isLoggedIn()) {
162
+ console.error(chalk_1.default.red('Not logged in. Run `solid auth login` first.'));
163
+ process.exit(1);
164
+ }
165
+ const companyId = config_1.config.companyId;
166
+ if (!companyId) {
167
+ console.error(chalk_1.default.red('No company_id set. Run `solid auth login` first.'));
168
+ process.exit(1);
169
+ }
170
+ const baseDir = path.resolve(options.dir);
171
+ // ── Load manifest ─────────────────────────────────────────────────
172
+ const manifestPath = path.join(baseDir, '.solid', 'manifest.json');
173
+ if (!fs.existsSync(manifestPath)) {
174
+ console.error(chalk_1.default.red('No .solid/manifest.json found.'));
175
+ console.error(chalk_1.default.dim('Run `solid pull` first to download your project files.'));
176
+ process.exit(1);
177
+ }
178
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
179
+ // Verify company match
180
+ if (manifest.company_id !== companyId) {
181
+ console.error(chalk_1.default.red(`This project belongs to company ${manifest.company_id} (${manifest.company_name}).`));
182
+ console.error(chalk_1.default.red(`You are logged in as company ${companyId}.`));
183
+ process.exit(1);
184
+ }
185
+ // ── Detect changes ────────────────────────────────────────────────
186
+ const scanSpinner = (0, ora_1.default)('Scanning for changes...').start();
187
+ const changes = detectChanges(baseDir, manifest);
188
+ const totalChanges = changes.summary.creates + changes.summary.updates + (changes.summary.settings ? 1 : 0);
189
+ if (totalChanges === 0) {
190
+ scanSpinner.succeed(chalk_1.default.dim('No changes detected'));
191
+ console.log(chalk_1.default.dim(' Edit files in your project directory, then run `solid push` again.'));
192
+ return;
193
+ }
194
+ scanSpinner.succeed(chalk_1.default.green(`Found ${totalChanges} changes`));
195
+ // ── Show change summary ───────────────────────────────────────────
196
+ console.log('');
197
+ console.log(chalk_1.default.bold(' Changes to push:'));
198
+ if (!options.kbOnly && !options.settingsOnly) {
199
+ for (const page of changes.pages) {
200
+ const icon = page.action === 'create' ? chalk_1.default.green('+') : chalk_1.default.yellow('~');
201
+ console.log(` ${icon} pages/${page.file}`);
202
+ }
203
+ }
204
+ if (!options.pagesOnly && !options.settingsOnly) {
205
+ for (const kb of changes.kb) {
206
+ const icon = kb.action === 'create' ? chalk_1.default.green('+') : chalk_1.default.yellow('~');
207
+ console.log(` ${icon} kb/${kb.file}`);
208
+ }
209
+ }
210
+ if (!options.pagesOnly && !options.kbOnly && changes.settings.changed) {
211
+ console.log(` ${chalk_1.default.yellow('~')} solid.config.json (website settings)`);
212
+ }
213
+ console.log('');
214
+ if (options.dryRun) {
215
+ console.log(chalk_1.default.dim(' Dry run — no changes made.'));
216
+ return;
217
+ }
218
+ // ── Confirm ───────────────────────────────────────────────────────
219
+ if (!options.yes) {
220
+ const proceed = await confirm(chalk_1.default.bold(` Push ${totalChanges} changes to ${manifest.company_name}? (y/N) `));
221
+ if (!proceed) {
222
+ console.log(chalk_1.default.dim(' Cancelled.'));
223
+ return;
224
+ }
225
+ }
226
+ let pushed = 0;
227
+ let errors = 0;
228
+ // ── Push pages ────────────────────────────────────────────────────
229
+ if (!options.kbOnly && !options.settingsOnly && changes.pages.length > 0) {
230
+ const pagesSpinner = (0, ora_1.default)('Pushing pages...').start();
231
+ for (const page of changes.pages) {
232
+ try {
233
+ if (page.action === 'update' && manifest.pages[page.file]?.id) {
234
+ const pageId = manifest.pages[page.file].id;
235
+ const updateData = {};
236
+ // Only send fields that can be updated
237
+ if (page.data.title)
238
+ updateData.title = page.data.title;
239
+ if (page.data.slug)
240
+ updateData.slug = page.data.slug;
241
+ if (page.data.meta_title !== undefined)
242
+ updateData.meta_title = page.data.meta_title;
243
+ if (page.data.meta_description !== undefined)
244
+ updateData.meta_description = page.data.meta_description;
245
+ if (page.data.layout_json)
246
+ updateData.layout_json = page.data.layout_json;
247
+ if (page.data.is_published !== undefined)
248
+ updateData.is_published = page.data.is_published;
249
+ if (page.data.is_landing_page !== undefined)
250
+ updateData.is_landing_page = page.data.is_landing_page;
251
+ await api_client_1.apiClient.pageUpdate(pageId, updateData);
252
+ pushed++;
253
+ }
254
+ else {
255
+ // Create new page
256
+ const createData = {
257
+ title: page.data.title || page.file.replace('.json', ''),
258
+ slug: page.data.slug || page.file.replace('.json', ''),
259
+ page_type: page.data.page_type || 'website',
260
+ layout_json: page.data.layout_json || { sections: [] },
261
+ };
262
+ if (page.data.meta_title)
263
+ createData.meta_title = page.data.meta_title;
264
+ if (page.data.meta_description)
265
+ createData.meta_description = page.data.meta_description;
266
+ const result = await api_client_1.apiClient.pageCreate(createData);
267
+ const newPage = result.data;
268
+ // Update manifest with new page ID
269
+ manifest.pages[page.file] = {
270
+ id: newPage.id,
271
+ slug: newPage.slug || createData.slug,
272
+ updated_at: new Date().toISOString(),
273
+ };
274
+ pushed++;
275
+ }
276
+ }
277
+ catch (error) {
278
+ const apiError = (0, api_client_1.handleApiError)(error);
279
+ console.error(chalk_1.default.red(` Failed: pages/${page.file} — ${apiError.message}`));
280
+ errors++;
281
+ }
282
+ }
283
+ if (pushed > 0) {
284
+ pagesSpinner.succeed(chalk_1.default.green(`${changes.pages.length} pages pushed`));
285
+ }
286
+ else {
287
+ pagesSpinner.fail(chalk_1.default.red('Failed to push pages'));
288
+ }
289
+ }
290
+ // ── Push KB ───────────────────────────────────────────────────────
291
+ if (!options.pagesOnly && !options.settingsOnly && changes.kb.length > 0) {
292
+ const kbSpinner = (0, ora_1.default)('Pushing knowledge base...').start();
293
+ let kbPushed = 0;
294
+ for (const kb of changes.kb) {
295
+ try {
296
+ if (kb.action === 'update' && kb.data.id) {
297
+ await api_client_1.apiClient.kbUpdate(kb.data.id, {
298
+ title: kb.data.title,
299
+ content: kb.data.content,
300
+ category: kb.data.category,
301
+ });
302
+ kbPushed++;
303
+ pushed++;
304
+ }
305
+ else {
306
+ const result = await api_client_1.apiClient.kbCreate({
307
+ title: kb.data.title,
308
+ content: kb.data.content,
309
+ category: kb.data.category,
310
+ });
311
+ const newEntry = result.data;
312
+ // Update manifest with new KB ID
313
+ manifest.kb[kb.file] = {
314
+ id: newEntry.id,
315
+ title: kb.data.title,
316
+ };
317
+ kbPushed++;
318
+ pushed++;
319
+ }
320
+ }
321
+ catch (error) {
322
+ const apiError = (0, api_client_1.handleApiError)(error);
323
+ console.error(chalk_1.default.red(` Failed: kb/${kb.file} — ${apiError.message}`));
324
+ errors++;
325
+ }
326
+ }
327
+ if (kbPushed > 0) {
328
+ kbSpinner.succeed(chalk_1.default.green(`${kbPushed} KB entries pushed`));
329
+ }
330
+ else {
331
+ kbSpinner.fail(chalk_1.default.red('Failed to push KB'));
332
+ }
333
+ }
334
+ // ── Push settings ─────────────────────────────────────────────────
335
+ if (!options.pagesOnly && !options.kbOnly && changes.settings.changed) {
336
+ const settingsSpinner = (0, ora_1.default)('Pushing website settings...').start();
337
+ try {
338
+ await api_client_1.apiClient.updateWebsiteSettings(changes.settings.data);
339
+ settingsSpinner.succeed(chalk_1.default.green('Website settings updated'));
340
+ pushed++;
341
+ }
342
+ catch (error) {
343
+ settingsSpinner.fail(chalk_1.default.red('Failed to update settings'));
344
+ const apiError = (0, api_client_1.handleApiError)(error);
345
+ console.error(chalk_1.default.red(` ${apiError.message}`));
346
+ errors++;
347
+ }
348
+ }
349
+ // ── Update manifest ───────────────────────────────────────────────
350
+ manifest.pulled_at = new Date().toISOString();
351
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
352
+ // ── Summary ───────────────────────────────────────────────────────
353
+ console.log('');
354
+ if (errors === 0) {
355
+ console.log(ui_1.ui.successBox(`Pushed ${pushed} changes`, [
356
+ `${chalk_1.default.dim('Company:')} ${manifest.company_name}`,
357
+ `${chalk_1.default.dim('ID:')} ${companyId}`,
358
+ '',
359
+ chalk_1.default.dim('Changes are live immediately.'),
360
+ ]));
361
+ }
362
+ else {
363
+ console.log(ui_1.ui.errorBox(`${pushed} pushed, ${errors} failed`, [
364
+ `${chalk_1.default.dim('Company:')} ${manifest.company_name}`,
365
+ chalk_1.default.dim('Check error messages above and retry.'),
366
+ ]));
367
+ }
368
+ console.log('');
369
+ });
370
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Service catalog commands for Solid CLI
3
+ *
4
+ * All operations are scoped to the authenticated company_id.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const servicesCommand: Command;
8
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,eAAe,SACgB,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * Service catalog commands for Solid CLI
4
+ *
5
+ * All operations are scoped to the authenticated company_id.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.servicesCommand = void 0;
12
+ const commander_1 = require("commander");
13
+ const ora_1 = __importDefault(require("ora"));
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const config_1 = require("../lib/config");
16
+ const api_client_1 = require("../lib/api-client");
17
+ exports.servicesCommand = new commander_1.Command('services')
18
+ .description('Service catalog management');
19
+ // List services
20
+ exports.servicesCommand
21
+ .command('list')
22
+ .description('List your services')
23
+ .option('--category <category>', 'Filter by category')
24
+ .option('--json', 'Output as JSON')
25
+ .action(async (options) => {
26
+ if (!config_1.config.isLoggedIn()) {
27
+ console.error(chalk_1.default.red('Not logged in. Run `solid auth login` first.'));
28
+ process.exit(1);
29
+ }
30
+ const spinner = (0, ora_1.default)('Loading services...').start();
31
+ try {
32
+ const response = await api_client_1.apiClient.servicesList();
33
+ if (options.json) {
34
+ spinner.stop();
35
+ console.log(JSON.stringify(response.data, null, 2));
36
+ return;
37
+ }
38
+ const items = response.data.items || [];
39
+ spinner.succeed(chalk_1.default.green(`${items.length} services`));
40
+ if (items.length === 0) {
41
+ console.log(chalk_1.default.dim(' No services in your catalog yet.'));
42
+ return;
43
+ }
44
+ console.log('');
45
+ let currentCategory = '';
46
+ for (const svc of items) {
47
+ if (svc.category && svc.category !== currentCategory) {
48
+ currentCategory = svc.category;
49
+ console.log(chalk_1.default.cyan(` [${currentCategory}]`));
50
+ }
51
+ const price = svc.price ? chalk_1.default.green(`$${svc.price}`) : chalk_1.default.dim('no price');
52
+ const duration = svc.duration_minutes ? chalk_1.default.dim(`${svc.duration_minutes} min`) : '';
53
+ console.log(` ${chalk_1.default.bold(svc.title)} — ${price} ${duration}`);
54
+ if (svc.description) {
55
+ const preview = svc.description.substring(0, 60).replace(/\n/g, ' ');
56
+ console.log(chalk_1.default.dim(` ${preview}${svc.description.length > 60 ? '...' : ''}`));
57
+ }
58
+ }
59
+ }
60
+ catch (error) {
61
+ spinner.fail(chalk_1.default.red('Failed to load services'));
62
+ const apiError = (0, api_client_1.handleApiError)(error);
63
+ console.error(chalk_1.default.red(` ${apiError.message}`));
64
+ }
65
+ });
66
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,yCAAoC;AACpC,8CAAsB;AACtB,kDAA0B;AAC1B,0CAAuC;AACvC,kDAA8D;AAEjD,QAAA,eAAe,GAAG,IAAI,mBAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,4BAA4B,CAAC,CAAC;AAE7C,gBAAgB;AAChB,uBAAe;KACZ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC,eAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,YAAY,EAAE,CAAC;QAEhD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAI,QAAQ,CAAC,IAAY,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;QAEzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;gBACrD,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;YACnE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAA,2BAAc,EAAC,KAAK,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Company status/overview command for Solid CLI
3
+ *
4
+ * Shows a branded summary of the authenticated company's setup:
5
+ * phone, KB, website, services, tier — everything at a glance.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const statusCommand: Command;
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SAgFtB,CAAC"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Company status/overview command for Solid CLI
4
+ *
5
+ * Shows a branded summary of the authenticated company's setup:
6
+ * phone, KB, website, services, tier — everything at a glance.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.statusCommand = void 0;
13
+ const commander_1 = require("commander");
14
+ const ora_1 = __importDefault(require("ora"));
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ const config_1 = require("../lib/config");
17
+ const api_client_1 = require("../lib/api-client");
18
+ const ui_1 = require("../lib/ui");
19
+ exports.statusCommand = new commander_1.Command('status')
20
+ .description('Show your business status and setup overview')
21
+ .option('--json', 'Output as JSON')
22
+ .action(async (options) => {
23
+ if (!config_1.config.isLoggedIn()) {
24
+ console.error(chalk_1.default.red('Not logged in. Run `solid auth login` first.'));
25
+ process.exit(1);
26
+ }
27
+ const spinner = (0, ora_1.default)('Loading business status...').start();
28
+ try {
29
+ const response = await api_client_1.apiClient.companyInfo();
30
+ const company = response.data.company;
31
+ if (!company) {
32
+ spinner.fail(chalk_1.default.red('Company not found'));
33
+ return;
34
+ }
35
+ if (options.json) {
36
+ spinner.stop();
37
+ console.log(JSON.stringify(company, null, 2));
38
+ return;
39
+ }
40
+ spinner.stop();
41
+ const ws = company.website_settings || {};
42
+ const slug = company.slug;
43
+ // ── Header ──────────────────────────────────────────────────
44
+ console.log(ui_1.ui.bannerSmall());
45
+ console.log(ui_1.ui.successBox(company.name, [
46
+ `${chalk_1.default.dim('ID:')} ${company.id}`,
47
+ `${chalk_1.default.dim('Tier:')} ${chalk_1.default.hex('#818cf8')(company.tier || 'starter')}`,
48
+ `${chalk_1.default.dim('Industry:')} ${company.industry || 'not set'}`,
49
+ ]));
50
+ // ── Contact ─────────────────────────────────────────────────
51
+ console.log(ui_1.ui.header('Contact'));
52
+ console.log(ui_1.ui.label('Phone', company.contact_phone ? chalk_1.default.green(company.contact_phone) : chalk_1.default.yellow('not set')));
53
+ console.log(ui_1.ui.label('Email', company.contact_email ? chalk_1.default.green(company.contact_email) : chalk_1.default.yellow('not set')));
54
+ console.log(ui_1.ui.label('Address', company.location || chalk_1.default.dim('not set')));
55
+ // ── Website ─────────────────────────────────────────────────
56
+ console.log(ui_1.ui.header('Website'));
57
+ console.log(ui_1.ui.label('URL', slug ? chalk_1.default.cyan(`https://${slug}.solidnumber.com`) : chalk_1.default.yellow('not set')));
58
+ console.log(ui_1.ui.label('Color', ws.primary_color || '#6366f1'));
59
+ console.log(ui_1.ui.label('Locale', ws.default_locale || 'en'));
60
+ // ── Modules ─────────────────────────────────────────────────
61
+ console.log(ui_1.ui.header('Modules'));
62
+ const on = chalk_1.default.green('●') + chalk_1.default.green(' on');
63
+ const off = chalk_1.default.dim('○ off');
64
+ console.log(ui_1.ui.label('Services', ws.show_services !== false ? on : off));
65
+ console.log(ui_1.ui.label('Products', ws.show_products !== false ? on : off));
66
+ console.log(ui_1.ui.label('Appointments', ws.show_appointments !== false ? on : off));
67
+ console.log(ui_1.ui.label('Pricing', ws.show_pricing !== false ? on : off));
68
+ console.log(ui_1.ui.label('Promotions', ws.show_promotions === true ? on : off));
69
+ // ── Quick Commands ──────────────────────────────────────────
70
+ console.log('');
71
+ console.log(ui_1.ui.divider('Commands'));
72
+ console.log('');
73
+ console.log(ui_1.ui.commandHelp([
74
+ { cmd: 'solid pull', desc: 'Download your data as files' },
75
+ { cmd: 'solid push', desc: 'Push local changes' },
76
+ { cmd: 'solid kb list', desc: 'View knowledge base' },
77
+ { cmd: 'solid pages list', desc: 'View website pages' },
78
+ { cmd: 'solid train chat', desc: 'Chat with your AI agent' },
79
+ { cmd: 'solid health', desc: 'Check system health' },
80
+ ]));
81
+ console.log('');
82
+ }
83
+ catch (error) {
84
+ spinner.fail(chalk_1.default.red('Failed to load status'));
85
+ const apiError = (0, api_client_1.handleApiError)(error);
86
+ console.error(chalk_1.default.red(` ${apiError.message}`));
87
+ }
88
+ });
89
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Train command for Solid CLI
3
+ *
4
+ * Train your company's AI agents by:
5
+ * - Adding KB entries from local files
6
+ * - Bulk importing KB from a directory
7
+ * - Chatting with agents to refine their behavior
8
+ * - Setting agent personality + context
9
+ *
10
+ * The developer trains via CLI (structured data, bulk import).
11
+ * The business owner trains via Vibe (natural language).
12
+ * Both feed the same KB → same agents → compound intelligence.
13
+ */
14
+ import { Command } from 'commander';
15
+ export declare const trainCommand: Command;
16
+ //# sourceMappingURL=train.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/commands/train.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,eAAO,MAAM,YAAY,SACwC,CAAC"}