@solidnumber/cli 1.5.0 → 1.6.1

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 (89) hide show
  1. package/README.md +41 -5
  2. package/dist/__tests__/commands/auth.test.d.ts +6 -0
  3. package/dist/__tests__/commands/auth.test.d.ts.map +1 -0
  4. package/dist/__tests__/commands/auth.test.js +91 -0
  5. package/dist/__tests__/commands/auth.test.js.map +1 -0
  6. package/dist/__tests__/commands/billing.test.d.ts +6 -0
  7. package/dist/__tests__/commands/billing.test.d.ts.map +1 -0
  8. package/dist/__tests__/commands/billing.test.js +141 -0
  9. package/dist/__tests__/commands/billing.test.js.map +1 -0
  10. package/dist/__tests__/commands/company.test.d.ts +6 -0
  11. package/dist/__tests__/commands/company.test.d.ts.map +1 -0
  12. package/dist/__tests__/commands/company.test.js +129 -0
  13. package/dist/__tests__/commands/company.test.js.map +1 -0
  14. package/dist/__tests__/commands/import.test.d.ts +4 -0
  15. package/dist/__tests__/commands/import.test.d.ts.map +1 -0
  16. package/dist/__tests__/commands/import.test.js +71 -0
  17. package/dist/__tests__/commands/import.test.js.map +1 -0
  18. package/dist/__tests__/commands/pages.test.d.ts +5 -0
  19. package/dist/__tests__/commands/pages.test.d.ts.map +1 -0
  20. package/dist/__tests__/commands/pages.test.js +103 -0
  21. package/dist/__tests__/commands/pages.test.js.map +1 -0
  22. package/dist/__tests__/commands/push.test.d.ts +6 -0
  23. package/dist/__tests__/commands/push.test.d.ts.map +1 -0
  24. package/dist/__tests__/commands/push.test.js +113 -0
  25. package/dist/__tests__/commands/push.test.js.map +1 -0
  26. package/dist/__tests__/commands/sandbox.test.d.ts +5 -0
  27. package/dist/__tests__/commands/sandbox.test.d.ts.map +1 -0
  28. package/dist/__tests__/commands/sandbox.test.js +132 -0
  29. package/dist/__tests__/commands/sandbox.test.js.map +1 -0
  30. package/dist/__tests__/commands/serve.test.d.ts +5 -0
  31. package/dist/__tests__/commands/serve.test.d.ts.map +1 -0
  32. package/dist/__tests__/commands/serve.test.js +115 -0
  33. package/dist/__tests__/commands/serve.test.js.map +1 -0
  34. package/dist/__tests__/commands/site.test.d.ts +5 -0
  35. package/dist/__tests__/commands/site.test.d.ts.map +1 -0
  36. package/dist/__tests__/commands/site.test.js +92 -0
  37. package/dist/__tests__/commands/site.test.js.map +1 -0
  38. package/dist/__tests__/integration/smoke.test.d.ts +7 -0
  39. package/dist/__tests__/integration/smoke.test.d.ts.map +1 -0
  40. package/dist/__tests__/integration/smoke.test.js +135 -0
  41. package/dist/__tests__/integration/smoke.test.js.map +1 -0
  42. package/dist/__tests__/lib/api-client.test.d.ts +6 -0
  43. package/dist/__tests__/lib/api-client.test.d.ts.map +1 -0
  44. package/dist/__tests__/lib/api-client.test.js +74 -0
  45. package/dist/__tests__/lib/api-client.test.js.map +1 -0
  46. package/dist/__tests__/lib/company-isolation.test.d.ts +19 -0
  47. package/dist/__tests__/lib/company-isolation.test.d.ts.map +1 -0
  48. package/dist/__tests__/lib/company-isolation.test.js +96 -0
  49. package/dist/__tests__/lib/company-isolation.test.js.map +1 -0
  50. package/dist/__tests__/lib/config.test.d.ts +6 -0
  51. package/dist/__tests__/lib/config.test.d.ts.map +1 -0
  52. package/dist/__tests__/lib/config.test.js +131 -0
  53. package/dist/__tests__/lib/config.test.js.map +1 -0
  54. package/dist/__tests__/setup.d.ts +4 -0
  55. package/dist/__tests__/setup.d.ts.map +1 -0
  56. package/dist/__tests__/setup.js +25 -0
  57. package/dist/__tests__/setup.js.map +1 -0
  58. package/dist/commands/company.js +93 -25
  59. package/dist/commands/company.js.map +1 -1
  60. package/dist/commands/diff.d.ts +14 -0
  61. package/dist/commands/diff.d.ts.map +1 -0
  62. package/dist/commands/diff.js +286 -0
  63. package/dist/commands/diff.js.map +1 -0
  64. package/dist/commands/import.d.ts +14 -0
  65. package/dist/commands/import.d.ts.map +1 -0
  66. package/dist/commands/import.js +552 -0
  67. package/dist/commands/import.js.map +1 -0
  68. package/dist/commands/open.d.ts +15 -0
  69. package/dist/commands/open.d.ts.map +1 -0
  70. package/dist/commands/open.js +179 -0
  71. package/dist/commands/open.js.map +1 -0
  72. package/dist/commands/sandbox.d.ts +15 -0
  73. package/dist/commands/sandbox.d.ts.map +1 -0
  74. package/dist/commands/sandbox.js +321 -0
  75. package/dist/commands/sandbox.js.map +1 -0
  76. package/dist/commands/serve.d.ts +19 -0
  77. package/dist/commands/serve.d.ts.map +1 -0
  78. package/dist/commands/serve.js +449 -0
  79. package/dist/commands/serve.js.map +1 -0
  80. package/dist/commands/watch.d.ts +15 -0
  81. package/dist/commands/watch.d.ts.map +1 -0
  82. package/dist/commands/watch.js +252 -0
  83. package/dist/commands/watch.js.map +1 -0
  84. package/dist/index.js +12 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/lib/api-client.d.ts.map +1 -1
  87. package/dist/lib/api-client.js +9 -4
  88. package/dist/lib/api-client.js.map +1 -1
  89. package/package.json +8 -2
@@ -0,0 +1,552 @@
1
+ "use strict";
2
+ /**
3
+ * Import command for Solid CLI
4
+ *
5
+ * Converts raw HTML/JSX (from ChatGPT, v0, Bolt, etc.) into Solid# layout_json blocks.
6
+ * Creates a new page file locally that can be previewed with `solid serve` and pushed.
7
+ *
8
+ * solid import landing.html --page "Summer Sale"
9
+ * solid import --clipboard --page "Promo"
10
+ * solid import --url https://example.com/page --page "Competitor Reference"
11
+ * cat snippet.html | solid import --stdin --page "Quick Page"
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.importCommand = 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
+ function parseHtmlToBlocks(html) {
57
+ const blocks = [];
58
+ // Strip doctype, html, head, body wrappers
59
+ let body = html
60
+ .replace(/<!DOCTYPE[^>]*>/i, '')
61
+ .replace(/<html[^>]*>/gi, '').replace(/<\/html>/gi, '')
62
+ .replace(/<head[\s\S]*?<\/head>/gi, '')
63
+ .replace(/<body[^>]*>/gi, '').replace(/<\/body>/gi, '')
64
+ .replace(/<script[\s\S]*?<\/script>/gi, '')
65
+ .replace(/<style[\s\S]*?<\/style>/gi, '')
66
+ .trim();
67
+ // Split into top-level sections
68
+ const sectionRegex = /<(section|header|footer|main|article|div)\b[^>]*>([\s\S]*?)<\/\1>/gi;
69
+ let match;
70
+ let lastIndex = 0;
71
+ const sections = [];
72
+ while ((match = sectionRegex.exec(body)) !== null) {
73
+ // Capture any text between sections
74
+ if (match.index > lastIndex) {
75
+ const between = body.slice(lastIndex, match.index).trim();
76
+ if (between)
77
+ sections.push(between);
78
+ }
79
+ sections.push(match[0]);
80
+ lastIndex = match.index + match[0].length;
81
+ }
82
+ // Remaining content after last section
83
+ if (lastIndex < body.length) {
84
+ const remaining = body.slice(lastIndex).trim();
85
+ if (remaining)
86
+ sections.push(remaining);
87
+ }
88
+ // If no sections found, treat whole body as one block
89
+ if (sections.length === 0 && body.trim()) {
90
+ sections.push(body);
91
+ }
92
+ for (const section of sections) {
93
+ const block = classifySection(section);
94
+ if (block)
95
+ blocks.push(block);
96
+ }
97
+ return blocks;
98
+ }
99
+ function classifySection(html) {
100
+ const lower = html.toLowerCase();
101
+ const text = stripTags(html).trim();
102
+ if (!text && !lower.includes('<img') && !lower.includes('<video'))
103
+ return null;
104
+ // Hero detection: large heading + optional subheading + optional CTA
105
+ if (isHero(lower)) {
106
+ return {
107
+ type: 'hero',
108
+ content: {
109
+ headline: extractFirst(html, 'h1') || extractFirst(html, 'h2') || '',
110
+ subheadline: extractFirst(html, 'p') || '',
111
+ cta_text: extractButtonText(html) || '',
112
+ cta_url: extractHref(html) || '#',
113
+ },
114
+ };
115
+ }
116
+ // Pricing detection: multiple price-like elements
117
+ if (lower.includes('pricing') || lower.includes('/mo') || lower.includes('$') && countPattern(lower, /\$\d/) >= 2) {
118
+ return {
119
+ type: 'pricing',
120
+ content: {
121
+ title: extractFirst(html, 'h2') || extractFirst(html, 'h3') || 'Pricing',
122
+ plans: extractPricingPlans(html),
123
+ },
124
+ };
125
+ }
126
+ // FAQ detection
127
+ if (lower.includes('faq') || lower.includes('frequently') || lower.includes('questions')) {
128
+ return {
129
+ type: 'faq',
130
+ content: {
131
+ title: extractFirst(html, 'h2') || 'FAQ',
132
+ questions: extractFaqItems(html),
133
+ },
134
+ };
135
+ }
136
+ // Testimonials detection
137
+ if (lower.includes('testimonial') || lower.includes('review') || lower.includes('what our') || countPattern(lower, /[""\u201c]/) >= 2) {
138
+ return {
139
+ type: 'testimonials',
140
+ content: {
141
+ title: extractFirst(html, 'h2') || 'What Our Customers Say',
142
+ testimonials: extractTestimonials(html),
143
+ },
144
+ };
145
+ }
146
+ // Features/grid detection: multiple similar child elements
147
+ if (lower.includes('feature') || lower.includes('benefit') || lower.includes('why choose') || countChildren(html) >= 3) {
148
+ const items = extractRepeatingItems(html);
149
+ if (items.length >= 3) {
150
+ return {
151
+ type: 'features',
152
+ content: {
153
+ title: extractFirst(html, 'h2') || '',
154
+ features: items,
155
+ },
156
+ };
157
+ }
158
+ }
159
+ // CTA detection
160
+ if (lower.includes('get started') || lower.includes('sign up') || lower.includes('contact us') || lower.includes('book now') || lower.includes('call now')) {
161
+ return {
162
+ type: 'cta',
163
+ content: {
164
+ headline: extractFirst(html, 'h2') || extractFirst(html, 'h3') || '',
165
+ subheadline: extractFirst(html, 'p') || '',
166
+ cta_text: extractButtonText(html) || 'Get Started',
167
+ cta_url: extractHref(html) || '#',
168
+ },
169
+ };
170
+ }
171
+ // Contact/form detection
172
+ if (lower.includes('<form') || lower.includes('<input') || lower.includes('contact')) {
173
+ return {
174
+ type: 'contact',
175
+ content: {
176
+ title: extractFirst(html, 'h2') || extractFirst(html, 'h3') || 'Contact Us',
177
+ button_text: extractButtonText(html) || 'Send Message',
178
+ },
179
+ };
180
+ }
181
+ // Stats detection: numbers
182
+ if (countPattern(lower, /\d+[+%kKmM]/) >= 3) {
183
+ return {
184
+ type: 'stats',
185
+ content: {
186
+ stats: extractStats(html),
187
+ },
188
+ };
189
+ }
190
+ // Process/steps detection
191
+ if (lower.includes('step') || lower.includes('process') || lower.includes('how it works')) {
192
+ const items = extractRepeatingItems(html);
193
+ if (items.length >= 2) {
194
+ return {
195
+ type: 'process-steps',
196
+ content: {
197
+ title: extractFirst(html, 'h2') || 'How It Works',
198
+ steps: items,
199
+ },
200
+ };
201
+ }
202
+ }
203
+ // Team detection
204
+ if (lower.includes('team') || lower.includes('our people') || lower.includes('staff')) {
205
+ return {
206
+ type: 'team',
207
+ content: {
208
+ title: extractFirst(html, 'h2') || 'Our Team',
209
+ members: extractRepeatingItems(html).map(i => ({ name: i.title, role: i.description })),
210
+ },
211
+ };
212
+ }
213
+ // Footer detection
214
+ if (lower.includes('<footer') || lower.includes('copyright') || lower.includes('\u00a9')) {
215
+ return null; // Skip footers — TenantShell handles this
216
+ }
217
+ // Navigation detection
218
+ if (lower.includes('<nav')) {
219
+ return null; // Skip nav — TenantShell handles this
220
+ }
221
+ // Default: text block
222
+ return {
223
+ type: 'text',
224
+ content: {
225
+ title: extractFirst(html, 'h2') || extractFirst(html, 'h3') || '',
226
+ text: extractAllText(html),
227
+ },
228
+ };
229
+ }
230
+ // ─── Extraction helpers ─────────────────────────────────────────────
231
+ function stripTags(html) {
232
+ return html.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim();
233
+ }
234
+ function extractFirst(html, tag) {
235
+ const match = html.match(new RegExp(`<${tag}[^>]*>([\\s\\S]*?)<\\/${tag}>`, 'i'));
236
+ return match ? stripTags(match[1]).trim() : '';
237
+ }
238
+ function extractButtonText(html) {
239
+ const btn = html.match(/<button[^>]*>([\s\S]*?)<\/button>/i);
240
+ if (btn)
241
+ return stripTags(btn[1]).trim();
242
+ const a = html.match(/<a[^>]*class="[^"]*btn[^"]*"[^>]*>([\s\S]*?)<\/a>/i);
243
+ if (a)
244
+ return stripTags(a[1]).trim();
245
+ const aAny = html.match(/<a[^>]*>([\s\S]*?)<\/a>/i);
246
+ if (aAny)
247
+ return stripTags(aAny[1]).trim();
248
+ return '';
249
+ }
250
+ function extractHref(html) {
251
+ const match = html.match(/href="([^"]+)"/i);
252
+ return match ? match[1] : '#';
253
+ }
254
+ function extractAllText(html) {
255
+ // Get all paragraph and text content
256
+ const paragraphs = [];
257
+ const pRegex = /<p[^>]*>([\s\S]*?)<\/p>/gi;
258
+ let m;
259
+ while ((m = pRegex.exec(html)) !== null) {
260
+ const t = stripTags(m[1]).trim();
261
+ if (t)
262
+ paragraphs.push(t);
263
+ }
264
+ if (paragraphs.length > 0)
265
+ return paragraphs.join('\n\n');
266
+ return stripTags(html).slice(0, 500);
267
+ }
268
+ function countPattern(text, pattern) {
269
+ return (text.match(new RegExp(pattern, 'g')) || []).length;
270
+ }
271
+ function countChildren(html) {
272
+ return (html.match(/<(div|li|article|card)[^>]*>/gi) || []).length;
273
+ }
274
+ function isHero(lower) {
275
+ return (lower.includes('<h1') || (lower.includes('<h2') && lower.indexOf('<h2') < 200)) &&
276
+ (lower.includes('btn') || lower.includes('button') || lower.includes('cta') ||
277
+ lower.includes('get started') || lower.includes('learn more') || lower.includes('hero'));
278
+ }
279
+ function extractRepeatingItems(html) {
280
+ const items = [];
281
+ // Match divs/lis/articles with heading + text pattern
282
+ const itemRegex = /<(?:div|li|article|card)[^>]*>([\s\S]*?)<\/(?:div|li|article|card)>/gi;
283
+ let m;
284
+ while ((m = itemRegex.exec(html)) !== null) {
285
+ const inner = m[1];
286
+ const title = extractFirst(inner, 'h3') || extractFirst(inner, 'h4') || extractFirst(inner, 'strong') || '';
287
+ const desc = extractFirst(inner, 'p') || '';
288
+ if (title || desc) {
289
+ items.push({ title, description: desc });
290
+ }
291
+ }
292
+ return items;
293
+ }
294
+ function extractPricingPlans(html) {
295
+ const plans = [];
296
+ const cardRegex = /<(?:div|article|section)[^>]*>([\s\S]*?)<\/(?:div|article|section)>/gi;
297
+ let m;
298
+ while ((m = cardRegex.exec(html)) !== null) {
299
+ const inner = m[1];
300
+ if (!inner.includes('$') && !inner.match(/\d+.*\/mo/))
301
+ continue;
302
+ const priceMatch = inner.match(/\$[\d,.]+(?:\s*\/\s*\w+)?/);
303
+ if (!priceMatch)
304
+ continue;
305
+ const features = [];
306
+ const liRegex = /<li[^>]*>([\s\S]*?)<\/li>/gi;
307
+ let li;
308
+ while ((li = liRegex.exec(inner)) !== null) {
309
+ features.push(stripTags(li[1]).trim());
310
+ }
311
+ plans.push({
312
+ name: extractFirst(inner, 'h3') || extractFirst(inner, 'h2') || '',
313
+ price: priceMatch[0],
314
+ description: extractFirst(inner, 'p') || '',
315
+ features,
316
+ });
317
+ }
318
+ return plans;
319
+ }
320
+ function extractFaqItems(html) {
321
+ const items = [];
322
+ const pairRegex = /<(?:div|dt|details)[^>]*>([\s\S]*?)<\/(?:div|dt|details)>/gi;
323
+ let m;
324
+ while ((m = pairRegex.exec(html)) !== null) {
325
+ const q = extractFirst(m[1], 'h3') || extractFirst(m[1], 'h4') || extractFirst(m[1], 'summary') || extractFirst(m[1], 'strong') || '';
326
+ const a = extractFirst(m[1], 'p') || extractFirst(m[1], 'dd') || '';
327
+ if (q && a)
328
+ items.push({ question: q, answer: a });
329
+ }
330
+ return items;
331
+ }
332
+ function extractTestimonials(html) {
333
+ const items = [];
334
+ const cardRegex = /<(?:div|blockquote|article)[^>]*>([\s\S]*?)<\/(?:div|blockquote|article)>/gi;
335
+ let m;
336
+ while ((m = cardRegex.exec(html)) !== null) {
337
+ const inner = m[1];
338
+ const quote = extractFirst(inner, 'p') || extractFirst(inner, 'blockquote') || '';
339
+ const name = extractFirst(inner, 'cite') || extractFirst(inner, 'strong') || extractFirst(inner, 'h4') || '';
340
+ if (quote && quote.length > 20) {
341
+ items.push({ quote: quote.replace(/^[""\u201c]+|[""\u201d]+$/g, ''), name });
342
+ }
343
+ }
344
+ return items;
345
+ }
346
+ function extractStats(html) {
347
+ const stats = [];
348
+ const itemRegex = /<(?:div|li|span)[^>]*>([\s\S]*?)<\/(?:div|li|span)>/gi;
349
+ let m;
350
+ while ((m = itemRegex.exec(html)) !== null) {
351
+ const inner = m[1];
352
+ const numMatch = stripTags(inner).match(/(\d[\d,.]*[+%kKmM]?)/);
353
+ if (numMatch) {
354
+ const value = numMatch[1];
355
+ const label = stripTags(inner).replace(value, '').trim();
356
+ if (label)
357
+ stats.push({ value, label });
358
+ }
359
+ }
360
+ return stats;
361
+ }
362
+ // ─── Claude AI Parser ───────────────────────────────────────────────
363
+ async function parseWithClaude(html) {
364
+ const apiKey = process.env.ANTHROPIC_API_KEY;
365
+ if (!apiKey) {
366
+ console.error(chalk_1.default.red('ANTHROPIC_API_KEY not set. Set it or remove --ai flag.'));
367
+ process.exit(1);
368
+ }
369
+ try {
370
+ const { default: Anthropic } = await Promise.resolve().then(() => __importStar(require('@anthropic-ai/sdk')));
371
+ const client = new Anthropic({ apiKey });
372
+ // Truncate very large HTML to avoid token limits
373
+ const truncated = html.length > 30000 ? html.slice(0, 30000) + '\n<!-- truncated -->' : html;
374
+ const response = await client.messages.create({
375
+ model: 'claude-sonnet-4-6',
376
+ max_tokens: 4096,
377
+ messages: [{
378
+ role: 'user',
379
+ content: `Convert this HTML into a JSON array of CMS content blocks.
380
+
381
+ Each block must have: { "type": "<block_type>", "content": { ... } }
382
+
383
+ Available block types and their content fields:
384
+ - hero: { headline, subheadline, cta_text, cta_url }
385
+ - features: { title, features: [{ title, description }] }
386
+ - pricing: { title, plans: [{ name, price, description, features: ["..."] }] }
387
+ - cta: { headline, subheadline, cta_text, cta_url }
388
+ - testimonials: { title, testimonials: [{ quote, name }] }
389
+ - faq: { title, questions: [{ question, answer }] }
390
+ - contact: { title, button_text }
391
+ - stats: { stats: [{ value, label }] }
392
+ - text: { title, text }
393
+ - team: { title, members: [{ name, role }] }
394
+ - gallery: { images: [{ url, alt }] }
395
+ - process-steps: { title, steps: [{ title, description }] }
396
+ - booking: { title, description, button_text }
397
+ - video: { url, title }
398
+ - divider: {}
399
+
400
+ Return ONLY a JSON array. No markdown, no explanation.
401
+
402
+ HTML:
403
+ ${truncated}`,
404
+ }],
405
+ });
406
+ const text = response.content[0].type === 'text' ? response.content[0].text : '';
407
+ // Extract JSON array from response
408
+ const jsonMatch = text.match(/\[[\s\S]*\]/);
409
+ if (!jsonMatch)
410
+ return [];
411
+ const parsed = JSON.parse(jsonMatch[0]);
412
+ if (!Array.isArray(parsed))
413
+ return [];
414
+ // Validate each block
415
+ return parsed.filter((b) => b && typeof b.type === 'string' && typeof b.content === 'object');
416
+ }
417
+ catch (error) {
418
+ console.error(chalk_1.default.yellow(` AI parsing failed: ${error.message || 'Unknown error'}`));
419
+ console.error(chalk_1.default.dim(' Falling back to regex parser...'));
420
+ return [];
421
+ }
422
+ }
423
+ // ─── Main Command ───────────────────────────────────────────────────
424
+ exports.importCommand = new commander_1.Command('import')
425
+ .description('Convert HTML/JSX into Solid# CMS page blocks')
426
+ .argument('[file]', 'HTML file to import')
427
+ .option('--page <title>', 'Page title (required)')
428
+ .option('--slug <slug>', 'URL slug (auto-generated from title if omitted)')
429
+ .option('--type <type>', 'Page type: website, landing, blog', 'website')
430
+ .option('--stdin', 'Read HTML from stdin (pipe)')
431
+ .option('--clipboard', 'Read HTML from system clipboard')
432
+ .option('--publish', 'Mark page as published')
433
+ .option('--ai', 'Use Claude AI for smarter block classification (requires ANTHROPIC_API_KEY)')
434
+ .option('--dir <path>', 'Working directory', process.cwd())
435
+ .action(async (file, options) => {
436
+ let html = '';
437
+ // Read HTML from source
438
+ if (options.stdin) {
439
+ // Read from stdin
440
+ const chunks = [];
441
+ for await (const chunk of process.stdin) {
442
+ chunks.push(chunk);
443
+ }
444
+ html = Buffer.concat(chunks).toString('utf-8');
445
+ }
446
+ else if (options.clipboard) {
447
+ // Read from clipboard (macOS)
448
+ try {
449
+ const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
450
+ if (process.platform === 'darwin') {
451
+ html = execSync('pbpaste', { encoding: 'utf-8' });
452
+ }
453
+ else if (process.platform === 'linux') {
454
+ html = execSync('xclip -selection clipboard -o', { encoding: 'utf-8' });
455
+ }
456
+ else {
457
+ html = execSync('powershell Get-Clipboard', { encoding: 'utf-8' });
458
+ }
459
+ }
460
+ catch {
461
+ console.error(chalk_1.default.red('Failed to read clipboard. Paste your HTML into a file instead.'));
462
+ process.exit(1);
463
+ }
464
+ }
465
+ else if (file) {
466
+ const filePath = path.resolve(file);
467
+ if (!fs.existsSync(filePath)) {
468
+ console.error(chalk_1.default.red(`File not found: ${filePath}`));
469
+ process.exit(1);
470
+ }
471
+ html = fs.readFileSync(filePath, 'utf-8');
472
+ }
473
+ else {
474
+ console.error(chalk_1.default.red('Provide an HTML file, --stdin, or --clipboard'));
475
+ console.log(chalk_1.default.dim(' solid import landing.html --page "Summer Sale"'));
476
+ console.log(chalk_1.default.dim(' solid import --clipboard --page "Promo"'));
477
+ console.log(chalk_1.default.dim(' cat page.html | solid import --stdin --page "Quick"'));
478
+ process.exit(1);
479
+ }
480
+ if (!html.trim()) {
481
+ console.error(chalk_1.default.red('Empty HTML input.'));
482
+ process.exit(1);
483
+ }
484
+ if (!options.page) {
485
+ console.error(chalk_1.default.red('--page <title> is required'));
486
+ process.exit(1);
487
+ }
488
+ const title = options.page;
489
+ const slug = options.slug || title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
490
+ let blocks;
491
+ if (options.ai) {
492
+ const spinner = (0, ora_1.default)('Using Claude AI to parse HTML into blocks...').start();
493
+ blocks = await parseWithClaude(html);
494
+ if (blocks.length === 0) {
495
+ spinner.text = 'AI returned no blocks, falling back to regex parser...';
496
+ blocks = parseHtmlToBlocks(html);
497
+ }
498
+ if (blocks.length === 0) {
499
+ spinner.fail(chalk_1.default.red('Could not extract any content blocks from the HTML.'));
500
+ process.exit(1);
501
+ }
502
+ spinner.succeed(`AI detected ${blocks.length} content blocks`);
503
+ }
504
+ else {
505
+ const spinner = (0, ora_1.default)('Parsing HTML into blocks...').start();
506
+ blocks = parseHtmlToBlocks(html);
507
+ if (blocks.length === 0) {
508
+ spinner.fail(chalk_1.default.red('Could not extract any content blocks. Try --ai for smarter parsing.'));
509
+ process.exit(1);
510
+ }
511
+ spinner.succeed(`Detected ${blocks.length} content blocks`);
512
+ }
513
+ // Show what was detected
514
+ for (const block of blocks) {
515
+ const icon = {
516
+ hero: '\u{1F3AC}', features: '\u2728', pricing: '\u{1F4B0}', cta: '\u{1F4E3}',
517
+ testimonials: '\u{1F4AC}', faq: '\u2753', contact: '\u{1F4E7}', stats: '\u{1F4CA}',
518
+ text: '\u{1F4DD}', team: '\u{1F465}', gallery: '\u{1F5BC}', 'process-steps': '\u{1F4CB}',
519
+ }[block.type] || '\u{1F4E6}';
520
+ console.log(` ${icon} ${chalk_1.default.bold(block.type)} — ${chalk_1.default.dim(block.content.headline || block.content.title || block.content.text?.slice(0, 50) || '')}`);
521
+ }
522
+ // Build page JSON
523
+ const page = {
524
+ title,
525
+ slug,
526
+ page_type: options.type,
527
+ is_published: options.publish || false,
528
+ is_landing_page: options.type === 'landing',
529
+ meta_title: title,
530
+ meta_description: '',
531
+ layout_json: {
532
+ sections: blocks,
533
+ },
534
+ };
535
+ // Save to pages/ directory
536
+ const dir = options.dir;
537
+ const pagesDir = path.join(dir, 'pages');
538
+ if (!fs.existsSync(pagesDir)) {
539
+ fs.mkdirSync(pagesDir, { recursive: true });
540
+ }
541
+ const outPath = path.join(pagesDir, `${slug}.json`);
542
+ fs.writeFileSync(outPath, JSON.stringify(page, null, 2), 'utf-8');
543
+ console.log('');
544
+ console.log(chalk_1.default.green(`Created: pages/${slug}.json`));
545
+ console.log(chalk_1.default.dim(` ${blocks.length} sections · ${options.type} · ${page.is_published ? 'published' : 'draft'}`));
546
+ console.log('');
547
+ console.log(chalk_1.default.dim('Next steps:'));
548
+ console.log(chalk_1.default.dim(` solid serve Preview locally`));
549
+ console.log(chalk_1.default.dim(` solid open ${slug} Edit in web builder`));
550
+ console.log(chalk_1.default.dim(` solid push Push to production`));
551
+ });
552
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Open command for Solid CLI
3
+ *
4
+ * Opens the web dashboard for a specific page, site, or section.
5
+ * Bridge between local CLI workflow and the web WYSIWYG builder.
6
+ *
7
+ * solid open home → Open page builder for "home" page
8
+ * solid open home --preview → Open public preview
9
+ * solid open home --editor → Open code editor view
10
+ * solid open --dashboard → Open CMS dashboard
11
+ * solid open --sites → Open sites manager
12
+ */
13
+ import { Command } from 'commander';
14
+ export declare const openCommand: Command;
15
+ //# sourceMappingURL=open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,WAAW,SAsHpB,CAAC"}