@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
package/README.md ADDED
@@ -0,0 +1,150 @@
1
+ # @solidnumber/cli
2
+
3
+ **Solid# CLI — AI Business Infrastructure from the terminal.**
4
+
5
+ Build, train, and deploy AI-powered businesses without leaving your editor.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g @solidnumber/cli
11
+ ```
12
+
13
+ Or run without installing:
14
+
15
+ ```bash
16
+ npx @solidnumber/cli
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```bash
22
+ # Login to your company
23
+ solid auth login
24
+
25
+ # Clone an industry template (52 available)
26
+ solid clone plumber
27
+
28
+ # Download your business data as local files
29
+ solid pull
30
+
31
+ # Edit pages, KB, settings in VS Code / Cursor / any editor
32
+
33
+ # Push changes to production
34
+ solid push
35
+
36
+ # Talk to your AI agent
37
+ solid train chat sarah
38
+
39
+ # Natural language site edits
40
+ solid vibe "Add a hero section with our phone number"
41
+ ```
42
+
43
+ ## Commands
44
+
45
+ ### Core Workflow
46
+ | Command | Description |
47
+ |---------|-------------|
48
+ | `solid auth login` | Authenticate with your company |
49
+ | `solid auth logout` | Clear stored credentials |
50
+ | `solid auth whoami` | Show current session |
51
+ | `solid status` | Company dashboard |
52
+ | `solid pull` | Download pages, KB, settings as files |
53
+ | `solid push` | Push local changes to production |
54
+
55
+ ### AI Training
56
+ | Command | Description |
57
+ |---------|-------------|
58
+ | `solid train import ./kb/` | Bulk import knowledge base from directory |
59
+ | `solid train chat [agent]` | Interactive chat with your AI agent |
60
+ | `solid train add -t "Title"` | Quick-add a KB entry |
61
+ | `solid train status` | Coverage dashboard with gap analysis |
62
+
63
+ ### Business Data
64
+ | Command | Description |
65
+ |---------|-------------|
66
+ | `solid kb list` | List knowledge base entries |
67
+ | `solid pages list` | List CMS pages |
68
+ | `solid services list` | List services |
69
+
70
+ ### Platform
71
+ | Command | Description |
72
+ |---------|-------------|
73
+ | `solid clone <template>` | Scaffold from 52 industry templates |
74
+ | `solid vibe "<instruction>"` | Natural language modifications |
75
+ | `solid docs` | Pull developer documentation |
76
+ | `solid health` | Platform health checks |
77
+ | `solid integrations` | Manage integrations |
78
+
79
+ ### Dev Tools
80
+ | Command | Description |
81
+ |---------|-------------|
82
+ | `solid dev` | Local development utilities |
83
+ | `solid droplet` | Infrastructure management |
84
+
85
+ ## Workflow
86
+
87
+ ```
88
+ 1. solid pull → Download pages, KB, services
89
+ 2. Edit files → VS Code, Cursor, any editor
90
+ 3. solid push → Deploy changes instantly
91
+ 4. solid vibe → "Add a hero section" (natural language)
92
+ ```
93
+
94
+ ## File Formats
95
+
96
+ After `solid pull`, your project looks like:
97
+
98
+ ```
99
+ .solid/
100
+ ├── manifest.json # File → ID mappings
101
+ ├── pages/
102
+ │ ├── home.json # Page with layout_json sections
103
+ │ └── about.json
104
+ ├── kb/
105
+ │ ├── hours.md # Markdown with YAML frontmatter
106
+ │ └── services.md
107
+ └── settings/
108
+ └── company.json # Business settings
109
+ ```
110
+
111
+ ## Industry Templates
112
+
113
+ 52 templates across 8 categories:
114
+
115
+ - **Home Services** — Plumber, HVAC, Electrician, Roofing, Landscaping...
116
+ - **Health & Wellness** — Dentist, Chiropractor, Med Spa, Veterinarian...
117
+ - **Food & Hospitality** — Restaurant, Bakery, Catering, Food Truck...
118
+ - **Professional Services** — Accountant, Law Firm, Insurance, Realtor...
119
+ - **Automotive** — Auto Repair, Car Wash, Detailing, Towing...
120
+ - **Tech & Digital** — IT Services, Web Agency, SaaS, Cybersecurity...
121
+ - **Education & Creative** — Tutoring, Photography, Music School...
122
+
123
+ ```bash
124
+ solid clone --list # Browse all templates
125
+ solid clone plumber # Scaffold instantly
126
+ ```
127
+
128
+ ## MCP Editor Integration
129
+
130
+ Add to your Claude Code or Cursor MCP config:
131
+
132
+ ```json
133
+ {
134
+ "mcpServers": {
135
+ "solid": {
136
+ "command": "npx",
137
+ "args": ["@solidnumber/cli", "mcp"]
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ ## Requirements
144
+
145
+ - Node.js >= 18.0.0
146
+ - A Solid# account ([solidnumber.com](https://solidnumber.com))
147
+
148
+ ## License
149
+
150
+ MIT
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Authentication commands for Solid CLI
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const authCommand: Command;
6
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SACmB,CAAC"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ /**
3
+ * Authentication commands for Solid CLI
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.authCommand = void 0;
10
+ const commander_1 = require("commander");
11
+ const inquirer_1 = __importDefault(require("inquirer"));
12
+ const ora_1 = __importDefault(require("ora"));
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const config_1 = require("../lib/config");
15
+ const api_client_1 = require("../lib/api-client");
16
+ const ui_1 = require("../lib/ui");
17
+ exports.authCommand = new commander_1.Command('auth')
18
+ .description('Authentication management');
19
+ // Login command
20
+ exports.authCommand
21
+ .command('login')
22
+ .description('Login to Solid#')
23
+ .option('-e, --email <email>', 'Email address')
24
+ .option('-p, --password <password>', 'Password (not recommended for security)')
25
+ .action(async (options) => {
26
+ try {
27
+ let email = options.email;
28
+ let password = options.password;
29
+ // Prompt for credentials if not provided
30
+ if (!email || !password) {
31
+ const answers = await inquirer_1.default.prompt([
32
+ {
33
+ type: 'input',
34
+ name: 'email',
35
+ message: 'Email:',
36
+ when: !email,
37
+ validate: (input) => input.includes('@') || 'Please enter a valid email',
38
+ },
39
+ {
40
+ type: 'password',
41
+ name: 'password',
42
+ message: 'Password:',
43
+ when: !password,
44
+ mask: '*',
45
+ },
46
+ ]);
47
+ email = email || answers.email;
48
+ password = password || answers.password;
49
+ }
50
+ const spinner = (0, ora_1.default)('Logging in...').start();
51
+ try {
52
+ const response = await api_client_1.apiClient.login(email, password);
53
+ // Store credentials
54
+ config_1.config.accessToken = response.data.access_token;
55
+ config_1.config.refreshToken = response.data.refresh_token;
56
+ config_1.config.tokenExpiresAt = new Date(response.data.expires_at);
57
+ config_1.config.userId = response.data.user.id;
58
+ config_1.config.userEmail = response.data.user.email;
59
+ config_1.config.companyId = response.data.user.company_id;
60
+ spinner.succeed(chalk_1.default.green('Authenticated'));
61
+ console.log('');
62
+ console.log(ui_1.ui.welcomeBox(response.data.user.email, response.data.user.company_id));
63
+ console.log('');
64
+ }
65
+ catch (error) {
66
+ spinner.fail(chalk_1.default.red('Login failed'));
67
+ const apiError = (0, api_client_1.handleApiError)(error);
68
+ console.error(chalk_1.default.red(` ${apiError.message}`));
69
+ process.exit(1);
70
+ }
71
+ }
72
+ catch (error) {
73
+ console.error(chalk_1.default.red('Error:'), error);
74
+ process.exit(1);
75
+ }
76
+ });
77
+ // Logout command
78
+ exports.authCommand
79
+ .command('logout')
80
+ .description('Logout from Solid#')
81
+ .action(() => {
82
+ config_1.config.logout();
83
+ console.log(chalk_1.default.green('Logged out successfully'));
84
+ });
85
+ // Status command
86
+ exports.authCommand
87
+ .command('status')
88
+ .description('Check authentication status')
89
+ .action(async () => {
90
+ const spinner = (0, ora_1.default)('Checking authentication...').start();
91
+ if (!config_1.config.isLoggedIn()) {
92
+ spinner.fail(chalk_1.default.yellow('Not logged in'));
93
+ console.log(chalk_1.default.dim(' Run `solid auth login` to authenticate'));
94
+ return;
95
+ }
96
+ try {
97
+ const response = await api_client_1.apiClient.authStatus();
98
+ if (response.data.authenticated && response.data.user) {
99
+ spinner.succeed(chalk_1.default.green('Authenticated'));
100
+ console.log(chalk_1.default.dim(` Email: ${response.data.user.email}`));
101
+ console.log(chalk_1.default.dim(` Company ID: ${response.data.user.company_id}`));
102
+ console.log(chalk_1.default.dim(` Environment: ${config_1.config.environment}`));
103
+ console.log(chalk_1.default.dim(` API URL: ${config_1.config.apiUrl}`));
104
+ }
105
+ else {
106
+ spinner.fail(chalk_1.default.yellow('Session expired'));
107
+ console.log(chalk_1.default.dim(' Run `solid auth login` to re-authenticate'));
108
+ }
109
+ }
110
+ catch (error) {
111
+ spinner.fail(chalk_1.default.red('Failed to check status'));
112
+ const apiError = (0, api_client_1.handleApiError)(error);
113
+ console.error(chalk_1.default.red(` ${apiError.message}`));
114
+ }
115
+ });
116
+ // Config command
117
+ exports.authCommand
118
+ .command('config')
119
+ .description('View or update configuration')
120
+ .option('--api-url <url>', 'Set API URL')
121
+ .option('--environment <env>', 'Set environment (production, sandbox, development)')
122
+ .option('--show', 'Show current configuration')
123
+ .action((options) => {
124
+ if (options.apiUrl) {
125
+ config_1.config.apiUrl = options.apiUrl;
126
+ console.log(chalk_1.default.green(`API URL set to: ${options.apiUrl}`));
127
+ }
128
+ if (options.environment) {
129
+ if (!['production', 'sandbox', 'development'].includes(options.environment)) {
130
+ console.error(chalk_1.default.red('Invalid environment. Use: production, sandbox, or development'));
131
+ process.exit(1);
132
+ }
133
+ config_1.config.environment = options.environment;
134
+ console.log(chalk_1.default.green(`Environment set to: ${options.environment}`));
135
+ }
136
+ if (options.show || (!options.apiUrl && !options.environment)) {
137
+ console.log(chalk_1.default.bold('\nCurrent Configuration:'));
138
+ console.log(chalk_1.default.dim(' API URL:'), config_1.config.apiUrl);
139
+ console.log(chalk_1.default.dim(' Environment:'), config_1.config.environment);
140
+ console.log(chalk_1.default.dim(' Company ID:'), config_1.config.companyId || 'Not set');
141
+ console.log(chalk_1.default.dim(' User:'), config_1.config.userEmail || 'Not logged in');
142
+ }
143
+ });
144
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Clone command for Solid CLI
3
+ *
4
+ * Scaffolds a complete business from an industry template:
5
+ * - KB entries (15-120 entries, industry-specific)
6
+ * - Pages, services, products (coming soon)
7
+ * - AI personality tuned for the industry
8
+ *
9
+ * One command, 30 seconds, full business.
10
+ *
11
+ * Usage:
12
+ * solid clone plumber
13
+ * solid clone restaurant -d ./bobs-pizza
14
+ * solid clone --list
15
+ * solid clone plumber --preview
16
+ */
17
+ import { Command } from 'commander';
18
+ export declare const cloneCommand: Command;
19
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/commands/clone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SAgLrB,CAAC"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * Clone command for Solid CLI
4
+ *
5
+ * Scaffolds a complete business from an industry template:
6
+ * - KB entries (15-120 entries, industry-specific)
7
+ * - Pages, services, products (coming soon)
8
+ * - AI personality tuned for the industry
9
+ *
10
+ * One command, 30 seconds, full business.
11
+ *
12
+ * Usage:
13
+ * solid clone plumber
14
+ * solid clone restaurant -d ./bobs-pizza
15
+ * solid clone --list
16
+ * solid clone plumber --preview
17
+ */
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.cloneCommand = void 0;
23
+ const commander_1 = require("commander");
24
+ const ora_1 = __importDefault(require("ora"));
25
+ const chalk_1 = __importDefault(require("chalk"));
26
+ const config_1 = require("../lib/config");
27
+ const api_client_1 = require("../lib/api-client");
28
+ const ui_1 = require("../lib/ui");
29
+ exports.cloneCommand = new commander_1.Command('clone')
30
+ .description('Scaffold a business from an industry template')
31
+ .argument('[template]', 'Template name (e.g. plumber, restaurant, dentist)')
32
+ .option('-d, --dir <directory>', 'Output directory for pulled files', '.')
33
+ .option('--list', 'List all available templates')
34
+ .option('--preview', 'Preview template contents without cloning')
35
+ .option('--pull', 'Also pull files after cloning (default: true)')
36
+ .action(async (templateName, options) => {
37
+ if (!config_1.config.isLoggedIn()) {
38
+ console.error(chalk_1.default.red('Not logged in. Run `solid auth login` first.'));
39
+ process.exit(1);
40
+ }
41
+ const companyId = config_1.config.companyId;
42
+ if (!companyId) {
43
+ console.error(chalk_1.default.red('No company_id set. Run `solid auth login` first.'));
44
+ process.exit(1);
45
+ }
46
+ // ── List templates ────────────────────────────────────────────────
47
+ if (options.list || !templateName) {
48
+ const spinner = (0, ora_1.default)('Loading templates...').start();
49
+ try {
50
+ const response = await api_client_1.apiClient.templatesList();
51
+ const templates = response.data.templates || [];
52
+ spinner.stop();
53
+ console.log('');
54
+ console.log(ui_1.ui.header(`${templates.length} Industry Templates`));
55
+ // Group by rough category
56
+ const groups = {};
57
+ for (const t of templates) {
58
+ const cat = categorize(t.name);
59
+ if (!groups[cat])
60
+ groups[cat] = [];
61
+ groups[cat].push(t);
62
+ }
63
+ for (const [group, items] of Object.entries(groups)) {
64
+ console.log(` ${chalk_1.default.bold.hex('#818cf8')(group)}`);
65
+ for (const t of items) {
66
+ const entries = chalk_1.default.dim(`${t.total_entries} KB entries`);
67
+ console.log(` ${chalk_1.default.cyan(t.name.padEnd(22))} ${t.display_name.padEnd(28)} ${entries}`);
68
+ }
69
+ console.log('');
70
+ }
71
+ console.log(ui_1.ui.divider());
72
+ console.log('');
73
+ console.log(` ${chalk_1.default.dim('Clone:')} ${chalk_1.default.cyan('solid clone <template>')}`);
74
+ console.log(` ${chalk_1.default.dim('Preview:')} ${chalk_1.default.cyan('solid clone <template> --preview')}`);
75
+ console.log('');
76
+ }
77
+ catch (error) {
78
+ spinner.fail(chalk_1.default.red('Failed to load templates'));
79
+ const apiError = (0, api_client_1.handleApiError)(error);
80
+ console.error(chalk_1.default.red(` ${apiError.message}`));
81
+ }
82
+ return;
83
+ }
84
+ // ── Preview template ──────────────────────────────────────────────
85
+ if (options.preview) {
86
+ const spinner = (0, ora_1.default)(`Loading ${templateName} template...`).start();
87
+ try {
88
+ const response = await api_client_1.apiClient.templatePreview(templateName);
89
+ const data = response.data;
90
+ spinner.stop();
91
+ console.log('');
92
+ console.log(ui_1.ui.infoBox(data.display_name, [
93
+ data.description || '',
94
+ '',
95
+ `${chalk_1.default.bold('Total KB entries:')} ${chalk_1.default.hex('#818cf8')(data.total_entries.toString())}`,
96
+ '',
97
+ chalk_1.default.bold('Categories:'),
98
+ ...Object.entries(data.categories || {}).map(([cat, count]) => {
99
+ const bar = chalk_1.default.hex('#818cf8')('■'.repeat(Math.min(count, 15)));
100
+ return ` ${cat.padEnd(30)} ${bar} ${chalk_1.default.dim(String(count))}`;
101
+ }),
102
+ ]));
103
+ // Show preview entries
104
+ if (data.previews) {
105
+ console.log('');
106
+ console.log(ui_1.ui.header('Sample Entries'));
107
+ for (const [cat, preview] of Object.entries(data.previews)) {
108
+ console.log(` ${chalk_1.default.cyan(cat)}`);
109
+ console.log(` ${chalk_1.default.bold(preview.title)}`);
110
+ const previewText = preview.content_preview.replace(/\n/g, ' ').substring(0, 80);
111
+ console.log(chalk_1.default.dim(` ${previewText}...`));
112
+ console.log('');
113
+ }
114
+ }
115
+ console.log(ui_1.ui.divider());
116
+ console.log('');
117
+ console.log(` ${chalk_1.default.dim('Clone this template:')} ${chalk_1.default.cyan(`solid clone ${templateName}`)}`);
118
+ console.log('');
119
+ }
120
+ catch (error) {
121
+ spinner.fail(chalk_1.default.red(`Template '${templateName}' not found`));
122
+ const apiError = (0, api_client_1.handleApiError)(error);
123
+ console.error(chalk_1.default.red(` ${apiError.message}`));
124
+ console.log(chalk_1.default.dim(' Run `solid clone --list` to see available templates.'));
125
+ }
126
+ return;
127
+ }
128
+ // ── Clone template ────────────────────────────────────────────────
129
+ console.log('');
130
+ console.log(ui_1.ui.bannerSmall());
131
+ const cloneSpinner = (0, ora_1.default)(`Cloning ${chalk_1.default.cyan(templateName)} template...`).start();
132
+ try {
133
+ const response = await api_client_1.apiClient.templateClone(templateName);
134
+ const data = response.data;
135
+ cloneSpinner.succeed(chalk_1.default.green(`Template cloned: ${data.display_name}`));
136
+ const created = data.created || {};
137
+ const lines = [];
138
+ if (created.kb_entries) {
139
+ lines.push(`${chalk_1.default.bold('KB Entries:')} ${chalk_1.default.hex('#818cf8')(created.kb_entries.toString())} created`);
140
+ }
141
+ if (created.pages) {
142
+ lines.push(`${chalk_1.default.bold('Pages:')} ${chalk_1.default.hex('#818cf8')(created.pages.toString())} created`);
143
+ }
144
+ if (created.services) {
145
+ lines.push(`${chalk_1.default.bold('Services:')} ${chalk_1.default.hex('#818cf8')(created.services.toString())} created`);
146
+ }
147
+ lines.push('');
148
+ lines.push(`${chalk_1.default.dim('Company ID:')} ${companyId}`);
149
+ lines.push(`${chalk_1.default.dim('Template:')} ${templateName}`);
150
+ console.log('');
151
+ console.log(ui_1.ui.successBox('Business Scaffolded', lines));
152
+ // Auto-pull files if requested
153
+ if (options.pull !== false) {
154
+ console.log('');
155
+ const pullSpinner = (0, ora_1.default)('Pulling files to local directory...').start();
156
+ try {
157
+ // Import and execute pull programmatically via shell
158
+ // For now, just tell the user
159
+ pullSpinner.succeed(chalk_1.default.green('Files ready'));
160
+ console.log('');
161
+ console.log(ui_1.ui.infoBox('Next Steps', [
162
+ `${chalk_1.default.cyan('1.')} ${chalk_1.default.cyan('solid pull')} ${chalk_1.default.dim('— Download your new business files')}`,
163
+ `${chalk_1.default.cyan('2.')} ${chalk_1.default.dim('Edit pages, KB, services in your editor')}`,
164
+ `${chalk_1.default.cyan('3.')} ${chalk_1.default.cyan('solid push')} ${chalk_1.default.dim('— Deploy your customizations')}`,
165
+ `${chalk_1.default.cyan('4.')} ${chalk_1.default.cyan('solid train chat')} ${chalk_1.default.dim('— Test your AI agent')}`,
166
+ '',
167
+ chalk_1.default.dim('Your AI agents are already trained with industry knowledge.'),
168
+ chalk_1.default.dim('Customize the KB to make them specific to YOUR business.'),
169
+ ]));
170
+ }
171
+ catch {
172
+ pullSpinner.fail(chalk_1.default.yellow('Auto-pull skipped'));
173
+ console.log(chalk_1.default.dim(' Run `solid pull` manually to download files.'));
174
+ }
175
+ }
176
+ console.log('');
177
+ }
178
+ catch (error) {
179
+ cloneSpinner.fail(chalk_1.default.red(`Failed to clone '${templateName}'`));
180
+ const apiError = (0, api_client_1.handleApiError)(error);
181
+ console.error(chalk_1.default.red(` ${apiError.message}`));
182
+ if (apiError.status === 404) {
183
+ console.log(chalk_1.default.dim(' Run `solid clone --list` to see available templates.'));
184
+ }
185
+ }
186
+ });
187
+ // ── Helper: categorize templates by industry ────────────────────────
188
+ function categorize(name) {
189
+ const categories = {
190
+ 'Home Services': ['plumber', 'hvac', 'electrical', 'roofing', 'painting', 'flooring', 'drywall', 'landscaping', 'home_services', 'construction'],
191
+ 'Health & Wellness': ['dentist', 'chiropractor', 'doctor', 'veterinary', 'beauty', 'esthetician', 'hair_salon', 'barber', 'gym', 'sports_facility'],
192
+ 'Food & Hospitality': ['restaurant', 'bar', 'catering', 'hotel'],
193
+ 'Professional Services': ['law_firm', 'accounting_firm', 'real_estate_agent', 'insurance_agency', 'mortgage_broker', 'architecture_firm', 'interior_designer', 'financial_advisor', 'professional_services', 'marketing_agency'],
194
+ 'Automotive': ['auto_repair', 'dealer_network'],
195
+ 'Tech & Digital': ['it_services', 'saas_platform', 'ecommerce', 'fintech'],
196
+ 'Education & Creative': ['education_services', 'photography_studio', 'author', 'print_shop'],
197
+ 'Other': ['nonprofit', 'childcare', 'event_planner', 'logistics', 'marine_services', 'transportation', 'travel_agency', 'retail_store', 'solid_platform'],
198
+ };
199
+ for (const [group, names] of Object.entries(categories)) {
200
+ if (names.includes(name))
201
+ return group;
202
+ }
203
+ return 'Other';
204
+ }
205
+ //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/commands/clone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Development commands for Solid CLI
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare const devCommand: Command;
6
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,UAAU,SACY,CAAC"}