@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.
- package/README.md +150 -0
- package/dist/commands/auth.d.ts +6 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +144 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/clone.d.ts +19 -0
- package/dist/commands/clone.d.ts.map +1 -0
- package/dist/commands/clone.js +205 -0
- package/dist/commands/clone.js.map +1 -0
- package/dist/commands/dev.d.ts +6 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +218 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs.d.ts +17 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +864 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/droplet.d.ts +10 -0
- package/dist/commands/droplet.d.ts.map +1 -0
- package/dist/commands/droplet.js +292 -0
- package/dist/commands/droplet.js.map +1 -0
- package/dist/commands/health.d.ts +6 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +129 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/integrations.d.ts +6 -0
- package/dist/commands/integrations.d.ts.map +1 -0
- package/dist/commands/integrations.js +380 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/kb.d.ts +9 -0
- package/dist/commands/kb.d.ts.map +1 -0
- package/dist/commands/kb.js +151 -0
- package/dist/commands/kb.js.map +1 -0
- package/dist/commands/pages.d.ts +8 -0
- package/dist/commands/pages.d.ts.map +1 -0
- package/dist/commands/pages.js +103 -0
- package/dist/commands/pages.js.map +1 -0
- package/dist/commands/pull.d.ts +16 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +336 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +14 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +370 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/services.d.ts +8 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +66 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +89 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/train.d.ts +16 -0
- package/dist/commands/train.d.ts.map +1 -0
- package/dist/commands/train.js +338 -0
- package/dist/commands/train.js.map +1 -0
- package/dist/commands/vibe.d.ts +6 -0
- package/dist/commands/vibe.d.ts.map +1 -0
- package/dist/commands/vibe.js +176 -0
- package/dist/commands/vibe.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +235 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +287 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/config.d.ts +43 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +189 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/ui.d.ts +49 -0
- package/dist/lib/ui.d.ts.map +1 -0
- package/dist/lib/ui.js +182 -0
- package/dist/lib/ui.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|