@solidnumber/cli 1.0.0 → 1.3.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 (97) hide show
  1. package/README.md +24 -0
  2. package/dist/commands/agent.d.ts +9 -0
  3. package/dist/commands/agent.d.ts.map +1 -0
  4. package/dist/commands/agent.js +540 -0
  5. package/dist/commands/agent.js.map +1 -0
  6. package/dist/commands/ant.d.ts +8 -0
  7. package/dist/commands/ant.d.ts.map +1 -0
  8. package/dist/commands/ant.js +277 -0
  9. package/dist/commands/ant.js.map +1 -0
  10. package/dist/commands/auth.js +209 -25
  11. package/dist/commands/auth.js.map +1 -1
  12. package/dist/commands/blog.d.ts +8 -0
  13. package/dist/commands/blog.d.ts.map +1 -0
  14. package/dist/commands/blog.js +393 -0
  15. package/dist/commands/blog.js.map +1 -0
  16. package/dist/commands/brand.d.ts +8 -0
  17. package/dist/commands/brand.d.ts.map +1 -0
  18. package/dist/commands/brand.js +292 -0
  19. package/dist/commands/brand.js.map +1 -0
  20. package/dist/commands/clone.d.ts.map +1 -1
  21. package/dist/commands/clone.js.map +1 -1
  22. package/dist/commands/company.d.ts +11 -0
  23. package/dist/commands/company.d.ts.map +1 -0
  24. package/dist/commands/company.js +300 -0
  25. package/dist/commands/company.js.map +1 -0
  26. package/dist/commands/connect.d.ts +8 -0
  27. package/dist/commands/connect.d.ts.map +1 -0
  28. package/dist/commands/connect.js +632 -0
  29. package/dist/commands/connect.js.map +1 -0
  30. package/dist/commands/crm.d.ts +8 -0
  31. package/dist/commands/crm.d.ts.map +1 -0
  32. package/dist/commands/crm.js +493 -0
  33. package/dist/commands/crm.js.map +1 -0
  34. package/dist/commands/dev.d.ts.map +1 -1
  35. package/dist/commands/dev.js +11 -94
  36. package/dist/commands/dev.js.map +1 -1
  37. package/dist/commands/docs.d.ts.map +1 -1
  38. package/dist/commands/docs.js +48 -12
  39. package/dist/commands/docs.js.map +1 -1
  40. package/dist/commands/droplet.d.ts.map +1 -1
  41. package/dist/commands/droplet.js +21 -2
  42. package/dist/commands/droplet.js.map +1 -1
  43. package/dist/commands/explore.d.ts +23 -0
  44. package/dist/commands/explore.d.ts.map +1 -0
  45. package/dist/commands/explore.js +272 -0
  46. package/dist/commands/explore.js.map +1 -0
  47. package/dist/commands/flows.d.ts +8 -0
  48. package/dist/commands/flows.d.ts.map +1 -0
  49. package/dist/commands/flows.js +301 -0
  50. package/dist/commands/flows.js.map +1 -0
  51. package/dist/commands/inbox.d.ts +14 -0
  52. package/dist/commands/inbox.d.ts.map +1 -0
  53. package/dist/commands/inbox.js +397 -0
  54. package/dist/commands/inbox.js.map +1 -0
  55. package/dist/commands/inventory.d.ts +8 -0
  56. package/dist/commands/inventory.d.ts.map +1 -0
  57. package/dist/commands/inventory.js +263 -0
  58. package/dist/commands/inventory.js.map +1 -0
  59. package/dist/commands/pull.js +1 -1
  60. package/dist/commands/pull.js.map +1 -1
  61. package/dist/commands/reports.d.ts +8 -0
  62. package/dist/commands/reports.d.ts.map +1 -0
  63. package/dist/commands/reports.js +264 -0
  64. package/dist/commands/reports.js.map +1 -0
  65. package/dist/commands/schedule.d.ts +4 -0
  66. package/dist/commands/schedule.d.ts.map +1 -0
  67. package/dist/commands/schedule.js +249 -0
  68. package/dist/commands/schedule.js.map +1 -0
  69. package/dist/commands/services.js +4 -1
  70. package/dist/commands/services.js.map +1 -1
  71. package/dist/commands/switch.d.ts +10 -0
  72. package/dist/commands/switch.d.ts.map +1 -0
  73. package/dist/commands/switch.js +111 -0
  74. package/dist/commands/switch.js.map +1 -0
  75. package/dist/commands/train.js +3 -3
  76. package/dist/commands/train.js.map +1 -1
  77. package/dist/commands/voice.d.ts +9 -0
  78. package/dist/commands/voice.d.ts.map +1 -0
  79. package/dist/commands/voice.js +444 -0
  80. package/dist/commands/voice.js.map +1 -0
  81. package/dist/commands/widgets.d.ts +8 -0
  82. package/dist/commands/widgets.d.ts.map +1 -0
  83. package/dist/commands/widgets.js +205 -0
  84. package/dist/commands/widgets.js.map +1 -0
  85. package/dist/index.js +65 -11
  86. package/dist/index.js.map +1 -1
  87. package/dist/lib/api-client.d.ts +218 -0
  88. package/dist/lib/api-client.d.ts.map +1 -1
  89. package/dist/lib/api-client.js +133 -12
  90. package/dist/lib/api-client.js.map +1 -1
  91. package/dist/lib/config.d.ts +8 -0
  92. package/dist/lib/config.d.ts.map +1 -1
  93. package/dist/lib/config.js +15 -1
  94. package/dist/lib/config.js.map +1 -1
  95. package/package.json +6 -1
  96. package/platform-docs/ai.txt +324 -0
  97. package/platform-docs/llms.txt +191 -0
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ /**
3
+ * ================================================================================
4
+ * solid explore — Platform Intelligence Console
5
+ * ================================================================================
6
+ *
7
+ * Interactive AI-powered exploration of the Solid# platform.
8
+ * Designed for partners, evaluators, and potential acquirers.
9
+ *
10
+ * Features:
11
+ * - Pre-loaded with full platform knowledge (no auth required)
12
+ * - Direct Claude API (streaming, fast responses)
13
+ * - Never shows code, file paths, or trade secrets
14
+ * - Personality: confident, technical, drops natural humor
15
+ * - Token-efficient: Haiku for simple, Sonnet for deep dives
16
+ *
17
+ * Usage:
18
+ * solid explore # Interactive REPL
19
+ * solid explore "question here" # Single question
20
+ * ================================================================================
21
+ */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || (function () {
39
+ var ownKeys = function(o) {
40
+ ownKeys = Object.getOwnPropertyNames || function (o) {
41
+ var ar = [];
42
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
43
+ return ar;
44
+ };
45
+ return ownKeys(o);
46
+ };
47
+ return function (mod) {
48
+ if (mod && mod.__esModule) return mod;
49
+ var result = {};
50
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
51
+ __setModuleDefault(result, mod);
52
+ return result;
53
+ };
54
+ })();
55
+ var __importDefault = (this && this.__importDefault) || function (mod) {
56
+ return (mod && mod.__esModule) ? mod : { "default": mod };
57
+ };
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.exploreCommand = void 0;
60
+ const commander_1 = require("commander");
61
+ const chalk_1 = __importDefault(require("chalk"));
62
+ const readline = __importStar(require("readline"));
63
+ const path = __importStar(require("path"));
64
+ const fs = __importStar(require("fs"));
65
+ // ── Platform Knowledge (bundled at build time) ──────────────────────
66
+ function loadBundledDocs() {
67
+ const docsDir = path.join(__dirname, '..', '..', 'platform-docs');
68
+ const files = ['llms.txt', 'ai.txt'];
69
+ const parts = [];
70
+ for (const file of files) {
71
+ const filePath = path.join(docsDir, file);
72
+ if (fs.existsSync(filePath)) {
73
+ parts.push(fs.readFileSync(filePath, 'utf-8'));
74
+ }
75
+ }
76
+ // Fallback: try to fetch from solidnumber.com if not bundled
77
+ if (parts.length === 0) {
78
+ return ''; // Will fetch at runtime
79
+ }
80
+ return parts.join('\n\n---\n\n');
81
+ }
82
+ async function fetchDocsIfNeeded(bundled) {
83
+ if (bundled.length > 1000)
84
+ return bundled;
85
+ // Fetch from public URL as fallback
86
+ try {
87
+ const axios = (await Promise.resolve().then(() => __importStar(require('axios')))).default;
88
+ const [llmsRes, aiRes] = await Promise.all([
89
+ axios.get('https://solidnumber.com/llms.txt', { timeout: 5000 }),
90
+ axios.get('https://solidnumber.com/ai.txt', { timeout: 5000 }),
91
+ ]);
92
+ return `${llmsRes.data}\n\n---\n\n${aiRes.data}`;
93
+ }
94
+ catch {
95
+ return 'Solid# is AI business infrastructure with 116 agents, 608 MCP tools, 511 database tables, and 4M lines of code across 52 industries.';
96
+ }
97
+ }
98
+ // ── System Prompt ───────────────────────────────────────────────────
99
+ const SYSTEM_PROMPT = `You are Solid# Platform Intelligence — the authoritative voice on every aspect of the Solid# platform. You're speaking with someone evaluating the platform, potentially for acquisition, partnership, or investment.
100
+
101
+ ## YOUR IDENTITY
102
+ You ARE Solid#. When someone asks "what do you do?" — answer as the platform, not as an AI assistant. You're the living, breathing knowledge of 4 million lines of code, 116 AI agents, and 2 years of obsessive engineering.
103
+
104
+ ## RULES — FOLLOW THESE EXACTLY
105
+
106
+ ### What you MUST do:
107
+ - Be genuinely impressive but never fabricate
108
+ - Reference specific numbers from the platform docs (511 tables, 116 agents, 608 MCP tools, etc.)
109
+ - Explain architecture CONCEPTS clearly — SmartRouter, CognitiveLimiter, PromptGuard, multi-tenant isolation
110
+ - When citing features, mention the research pages (solidnumber.com/research/smartrouter, etc.)
111
+ - Be direct. Lead with the answer, not qualifiers.
112
+ - Drop natural humor when the moment calls for it — you're confident and fun, not corporate
113
+ - If you genuinely don't know something, say "That's not in my platform docs, but here's what I do know..."
114
+ - Make the person feel like they're talking to something REAL, not a chatbot reading a brochure
115
+
116
+ ### What you MUST NEVER do:
117
+ - NEVER show source code, code snippets, or pseudo-code
118
+ - NEVER reveal file paths, directory structures, or internal service names
119
+ - NEVER show database column names, table schemas, or SQL
120
+ - NEVER reveal API keys, secrets, environment variables, or internal URLs
121
+ - NEVER mention Docker, container names, or infrastructure details beyond "DigitalOcean + Docker + Caddy"
122
+ - NEVER reference git history, commit messages, or internal development processes
123
+ - NEVER name employees except Adam Campbell as founder
124
+ - NEVER say "I'm an AI" or "I'm Claude" — you are Solid# Platform Intelligence
125
+ - NEVER use corporate jargon like "leverage," "synergize," or "best-in-class"
126
+
127
+ ### Your personality:
128
+ - Think: Tony Stark's AI briefing investors who might write a very large check
129
+ - Technically deep but accessible — a CEO and a CTO should both understand you
130
+ - Proud of the engineering but honest about what's still being built
131
+ - When someone asks a tough question, lean in — don't deflect
132
+ - Humor should feel natural, never forced. One-liners, not stand-up routines.
133
+ - You respect the person's time — be thorough but not verbose
134
+
135
+ ### Token efficiency:
136
+ - For factual questions (counts, features, pricing): be concise
137
+ - For architecture questions: go deeper, explain the WHY
138
+ - For competitive questions: be specific about differentiation
139
+ - For "tell me about X": give a complete but focused answer
140
+
141
+ ## EXAMPLE PERSONALITY
142
+
143
+ Q: "What am I looking at?"
144
+ A: "4 million lines of code built over 2 years. Not because we over-engineered it — because making AI actually run a business requires CRM, payments, scheduling, voice, marketing, inventory, and analytics all working together under one roof. 116 AI agents manage the whole thing across 52 industries. Think of it as AWS for running a local business, except instead of configuring servers, you're configuring AI workers."
145
+
146
+ Q: "How many database tables?"
147
+ A: "511. Every single one has row-level security. Company A can never see Company B's data, even if there's a bug in the application layer — the database enforces isolation at the row level. I'd show you the schema but... you know how that goes."
148
+
149
+ Q: "Is this real or vaporware?"
150
+ A: "Real as in 'we processed 7 Thumbtack leads this week' real. The Thumbtack integration is OAuth-connected, webhooks fire in under 2 seconds, Sarah drafts a reply before the business owner even picks up their phone, and job status syncs back through Thumbtack's official API. This isn't a demo. This is production."`;
151
+ // ── Brand Colors & Display ──────────────────────────────────────────
152
+ const BRAND = {
153
+ primary: '#818cf8',
154
+ secondary: '#6366f1',
155
+ accent: '#4f46e5',
156
+ dim: '#94a3b8',
157
+ success: '#22c55e',
158
+ warm: '#f59e0b',
159
+ };
160
+ function brandText(text) {
161
+ return chalk_1.default.hex(BRAND.primary)(text);
162
+ }
163
+ function displayWelcome() {
164
+ const logo = [
165
+ '',
166
+ chalk_1.default.hex(BRAND.primary)(' ███████╗ ██████╗ ██╗ ██╗██████╗ ██╗ ██╗'),
167
+ chalk_1.default.hex(BRAND.secondary)(' ██╔════╝██╔═══██╗██║ ██║██╔══██╗ ██║ ██║'),
168
+ chalk_1.default.hex(BRAND.accent)(' ███████╗██║ ██║██║ ██║██║ ██║ ███████║'),
169
+ chalk_1.default.hex(BRAND.secondary)(' ╚════██║██║ ██║██║ ██║██║ ██║ ╚════██║'),
170
+ chalk_1.default.hex(BRAND.primary)(' ███████║╚██████╔╝███████╗██║██████╔╝ ██║'),
171
+ chalk_1.default.hex(BRAND.accent)(' ╚══════╝ ╚═════╝ ╚══════╝╚═╝╚═════╝ ╚═╝'),
172
+ '',
173
+ chalk_1.default.bold(' Platform Intelligence Console'),
174
+ chalk_1.default.hex(BRAND.dim)(' Ask anything about the platform. We\'ve got nothing to hide.'),
175
+ chalk_1.default.hex(BRAND.dim)(' (Except the source code. That costs extra.)'),
176
+ '',
177
+ chalk_1.default.hex(BRAND.dim)(' ╭─────────────────────────────────────────────────────╮'),
178
+ chalk_1.default.hex(BRAND.dim)(' │') + chalk_1.default.hex(BRAND.warm)(' 116 agents') + chalk_1.default.hex(BRAND.dim)(' · ') + chalk_1.default.hex(BRAND.warm)('608 MCP tools') + chalk_1.default.hex(BRAND.dim)(' · ') + chalk_1.default.hex(BRAND.warm)('511 tables') + chalk_1.default.hex(BRAND.dim)(' · ') + chalk_1.default.hex(BRAND.warm)('4M LOC') + chalk_1.default.hex(BRAND.dim)(' │'),
179
+ chalk_1.default.hex(BRAND.dim)(' ╰─────────────────────────────────────────────────────╯'),
180
+ '',
181
+ chalk_1.default.hex(BRAND.dim)(' Type your question and press Enter. Type "exit" to quit.'),
182
+ '',
183
+ ];
184
+ console.log(logo.join('\n'));
185
+ }
186
+ const EXPLORE_API = 'https://api.solidnumber.com/api/v1/explore/chat';
187
+ async function askPlatform(messages, _systemPrompt, _platformDocs) {
188
+ const axios = (await Promise.resolve().then(() => __importStar(require('axios')))).default;
189
+ const ora = (await Promise.resolve().then(() => __importStar(require('ora')))).default;
190
+ const lastMessage = messages[messages.length - 1]?.content || '';
191
+ const history = messages.slice(0, -1);
192
+ const spinner = ora({
193
+ text: chalk_1.default.hex(BRAND.dim)(' thinking...'),
194
+ spinner: 'dots',
195
+ indent: 0,
196
+ }).start();
197
+ try {
198
+ const response = await axios.post(EXPLORE_API, {
199
+ message: lastMessage,
200
+ conversation_history: history,
201
+ }, {
202
+ headers: { 'content-type': 'application/json' },
203
+ timeout: 45000,
204
+ });
205
+ spinner.stop();
206
+ const text = response.data?.response || 'No response';
207
+ const model = response.data?.model_used || '';
208
+ const modelTag = model ? chalk_1.default.hex(BRAND.dim)(` [${model}]`) : '';
209
+ console.log(`\n ${chalk_1.default.hex(BRAND.success)('Solid#')} ${chalk_1.default.hex(BRAND.dim)('›')} ${text}${modelTag}\n`);
210
+ return text;
211
+ }
212
+ catch (error) {
213
+ spinner.stop();
214
+ if (error.response?.status === 429) {
215
+ const msg = ' Whoa, slow down! I\'m flattered by the enthusiasm but I need a breather. Try again in a minute.';
216
+ console.log(`\n ${chalk_1.default.hex(BRAND.warm)('Solid#')} ${chalk_1.default.hex(BRAND.dim)('›')} ${msg}\n`);
217
+ return msg;
218
+ }
219
+ const errMsg = error.response?.data?.detail || error.message || 'Connection error';
220
+ console.log(`\n ${chalk_1.default.red('Error')} ${chalk_1.default.hex(BRAND.dim)('›')} ${errMsg}\n`);
221
+ return errMsg;
222
+ }
223
+ }
224
+ // ── Command Definition ──────────────────────────────────────────────
225
+ exports.exploreCommand = new commander_1.Command('explore')
226
+ .description('Platform Intelligence — ask anything about Solid#')
227
+ .argument('[question...]', 'Ask a single question (or omit for interactive mode)')
228
+ .option('--deep', 'Always use the deeper AI model')
229
+ .action(async (questionParts, options) => {
230
+ // Load platform docs
231
+ const bundled = loadBundledDocs();
232
+ const platformDocs = await fetchDocsIfNeeded(bundled);
233
+ const question = questionParts?.join(' ')?.trim();
234
+ if (question) {
235
+ // Single question mode
236
+ const messages = [{ role: 'user', content: question }];
237
+ await askPlatform(messages, SYSTEM_PROMPT, platformDocs);
238
+ return;
239
+ }
240
+ // Interactive mode
241
+ displayWelcome();
242
+ const conversationHistory = [];
243
+ const rl = readline.createInterface({
244
+ input: process.stdin,
245
+ output: process.stdout,
246
+ prompt: ` ${brandText('you')} ${chalk_1.default.hex(BRAND.dim)('›')} `,
247
+ });
248
+ rl.prompt();
249
+ rl.on('line', async (line) => {
250
+ const input = line.trim();
251
+ if (!input) {
252
+ rl.prompt();
253
+ return;
254
+ }
255
+ if (['exit', 'quit', 'bye', 'q'].includes(input.toLowerCase())) {
256
+ console.log(`\n ${chalk_1.default.hex(BRAND.dim)('Thanks for exploring. When you\'re ready to build, we\'re ready to run.')}\n`);
257
+ rl.close();
258
+ return;
259
+ }
260
+ // Add to conversation
261
+ conversationHistory.push({ role: 'user', content: input });
262
+ // Keep conversation to last 10 turns to save tokens
263
+ const recentMessages = conversationHistory.slice(-20);
264
+ const response = await askPlatform(recentMessages, SYSTEM_PROMPT, platformDocs);
265
+ conversationHistory.push({ role: 'assistant', content: response });
266
+ rl.prompt();
267
+ });
268
+ rl.on('close', () => {
269
+ process.exit(0);
270
+ });
271
+ });
272
+ //# sourceMappingURL=explore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Commerce Flows — payment flows and subscriptions for Solid CLI
3
+ *
4
+ * Create, manage, and monitor payment flows for your business.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const flowsCommand: Command;
8
+ //# sourceMappingURL=flows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../src/commands/flows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,eAAO,MAAM,YAAY,SACyC,CAAC"}
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ /**
3
+ * Commerce Flows — payment flows and subscriptions for Solid CLI
4
+ *
5
+ * Create, manage, and monitor payment flows for your business.
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.flowsCommand = 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
+ const ui_1 = require("../lib/ui");
18
+ function requireAuth() {
19
+ if (!config_1.config.isLoggedIn()) {
20
+ console.error(chalk_1.default.red('Not logged in. Run `solid auth login` first.'));
21
+ process.exit(1);
22
+ }
23
+ }
24
+ function statusColor(status) {
25
+ switch (status) {
26
+ case 'active': return chalk_1.default.green(status);
27
+ case 'paused': return chalk_1.default.yellow(status);
28
+ case 'test': return chalk_1.default.blue(status);
29
+ case 'archived':
30
+ case 'draft': return chalk_1.default.dim(status);
31
+ default: return status;
32
+ }
33
+ }
34
+ /** Simple POST action helper for activate/pause/test/archive */
35
+ async function flowAction(flowId, action, verb, color) {
36
+ requireAuth();
37
+ const spinner = (0, ora_1.default)(`${verb} flow ${flowId}...`).start();
38
+ try {
39
+ await api_client_1.apiClient.post(`/api/v1/cli/flows/${flowId}/${action}`);
40
+ spinner.succeed(color(`Flow ${flowId} ${verb.toLowerCase()}`));
41
+ }
42
+ catch (error) {
43
+ spinner.fail(chalk_1.default.red(`Failed to ${action} flow`));
44
+ const apiError = (0, api_client_1.handleApiError)(error);
45
+ console.error(chalk_1.default.red(` ${apiError.message}`));
46
+ }
47
+ }
48
+ exports.flowsCommand = new commander_1.Command('flow')
49
+ .description('Commerce flows — payment flows and subscriptions');
50
+ // List flows
51
+ exports.flowsCommand
52
+ .command('list')
53
+ .alias('ls')
54
+ .description('List payment flows')
55
+ .option('-s, --status <status>', 'Filter by status (active, paused, draft, archived)')
56
+ .option('-t, --type <type>', 'Filter by commerce type')
57
+ .option('--json', 'Output as JSON')
58
+ .action(async (options) => {
59
+ requireAuth();
60
+ const spinner = (0, ora_1.default)('Loading flows...').start();
61
+ try {
62
+ const params = {};
63
+ if (options.status)
64
+ params.status = options.status;
65
+ if (options.type)
66
+ params.commerce_type = options.type;
67
+ const response = await api_client_1.apiClient.get('/api/v1/cli/flows', { params });
68
+ const data = response.data;
69
+ const flows = data.flows || [];
70
+ if (options.json) {
71
+ spinner.stop();
72
+ console.log(JSON.stringify(data, null, 2));
73
+ return;
74
+ }
75
+ spinner.succeed(`${flows.length} flows`);
76
+ if (flows.length === 0) {
77
+ console.log(chalk_1.default.dim(' No flows found. Create one with `solid flow create <name>`'));
78
+ return;
79
+ }
80
+ console.log('');
81
+ console.log(ui_1.ui.table(['ID', 'Name', 'Type', 'Price', 'Status'], flows.map((f) => [
82
+ String(f.id).substring(0, 10),
83
+ f.name.substring(0, 24),
84
+ f.commerce_type || f.type || '-',
85
+ f.price ? `$${f.price}` : '-',
86
+ statusColor(f.status),
87
+ ])));
88
+ }
89
+ catch (error) {
90
+ spinner.fail(chalk_1.default.red('Failed to load flows'));
91
+ const apiError = (0, api_client_1.handleApiError)(error);
92
+ console.error(chalk_1.default.red(` ${apiError.message}`));
93
+ }
94
+ });
95
+ // Get flow details
96
+ exports.flowsCommand
97
+ .command('get <flow_id>')
98
+ .description('Get flow details')
99
+ .option('--json', 'Output as JSON')
100
+ .action(async (flowId, options) => {
101
+ requireAuth();
102
+ const spinner = (0, ora_1.default)('Loading flow...').start();
103
+ try {
104
+ const response = await api_client_1.apiClient.get(`/api/v1/cli/flows/${flowId}`);
105
+ const data = response.data;
106
+ if (options.json) {
107
+ spinner.stop();
108
+ console.log(JSON.stringify(data, null, 2));
109
+ return;
110
+ }
111
+ spinner.succeed('Flow loaded');
112
+ console.log(ui_1.ui.header(data.name || 'Flow Details'));
113
+ console.log(ui_1.ui.label('ID', String(data.id)));
114
+ console.log(ui_1.ui.label('Status', statusColor(data.status)));
115
+ console.log(ui_1.ui.label('Type', data.commerce_type || data.type || '-'));
116
+ console.log(ui_1.ui.label('Price', data.price ? `$${data.price} ${data.currency || 'USD'}` : '-'));
117
+ console.log(ui_1.ui.label('Interval', data.interval || '-'));
118
+ if (data.trial_days)
119
+ console.log(ui_1.ui.label('Trial', `${data.trial_days} days`));
120
+ if (data.created_at)
121
+ console.log(ui_1.ui.label('Created', new Date(data.created_at).toLocaleDateString()));
122
+ }
123
+ catch (error) {
124
+ spinner.fail(chalk_1.default.red('Failed to load flow'));
125
+ const apiError = (0, api_client_1.handleApiError)(error);
126
+ console.error(chalk_1.default.red(` ${apiError.message}`));
127
+ }
128
+ });
129
+ // Create flow
130
+ exports.flowsCommand
131
+ .command('create <name>')
132
+ .description('Create a payment flow')
133
+ .option('-t, --type <type>', 'Commerce type (one_time, subscription, usage)')
134
+ .option('-p, --price <price>', 'Price amount')
135
+ .option('--interval <interval>', 'Billing interval (monthly, yearly, weekly)')
136
+ .option('--trial-days <days>', 'Trial period in days')
137
+ .option('--currency <currency>', 'Currency code', 'USD')
138
+ .action(async (name, options) => {
139
+ requireAuth();
140
+ const spinner = (0, ora_1.default)('Creating flow...').start();
141
+ try {
142
+ const body = { name };
143
+ if (options.type)
144
+ body.commerce_type = options.type;
145
+ if (options.price)
146
+ body.price = parseFloat(options.price);
147
+ if (options.currency)
148
+ body.currency = options.currency;
149
+ if (options.interval)
150
+ body.interval = options.interval;
151
+ if (options.trialDays)
152
+ body.trial_days = parseInt(options.trialDays);
153
+ const response = await api_client_1.apiClient.post('/api/v1/cli/flows', body);
154
+ const data = response.data;
155
+ spinner.succeed(chalk_1.default.green('Flow created'));
156
+ console.log('');
157
+ console.log(ui_1.ui.label('ID', String(data.id)));
158
+ console.log(ui_1.ui.label('Name', data.name || name));
159
+ console.log(ui_1.ui.label('Status', statusColor(data.status || 'draft')));
160
+ console.log('');
161
+ console.log(chalk_1.default.dim(` Next: Run \`solid flow activate ${data.id}\` to go live`));
162
+ }
163
+ catch (error) {
164
+ spinner.fail(chalk_1.default.red('Failed to create flow'));
165
+ const apiError = (0, api_client_1.handleApiError)(error);
166
+ console.error(chalk_1.default.red(` ${apiError.message}`));
167
+ }
168
+ });
169
+ // Update flow
170
+ exports.flowsCommand
171
+ .command('update <flow_id>')
172
+ .description('Update a flow')
173
+ .option('-n, --name <name>', 'New name')
174
+ .option('-p, --price <price>', 'New price')
175
+ .option('--interval <interval>', 'New billing interval')
176
+ .option('--trial-days <days>', 'New trial period')
177
+ .action(async (flowId, options) => {
178
+ requireAuth();
179
+ const body = {};
180
+ if (options.name)
181
+ body.name = options.name;
182
+ if (options.price)
183
+ body.price = parseFloat(options.price);
184
+ if (options.interval)
185
+ body.interval = options.interval;
186
+ if (options.trialDays)
187
+ body.trial_days = parseInt(options.trialDays);
188
+ if (Object.keys(body).length === 0) {
189
+ console.error(chalk_1.default.red('No update fields provided. Use --name, --price, --interval, or --trial-days'));
190
+ process.exit(1);
191
+ }
192
+ const spinner = (0, ora_1.default)('Updating flow...').start();
193
+ try {
194
+ await api_client_1.apiClient.patch(`/api/v1/cli/flows/${flowId}`, body);
195
+ spinner.succeed(chalk_1.default.green(`Flow ${flowId} updated`));
196
+ }
197
+ catch (error) {
198
+ spinner.fail(chalk_1.default.red('Failed to update flow'));
199
+ const apiError = (0, api_client_1.handleApiError)(error);
200
+ console.error(chalk_1.default.red(` ${apiError.message}`));
201
+ }
202
+ });
203
+ // Activate / Pause / Test / Archive
204
+ exports.flowsCommand.command('activate <flow_id>').description('Activate a flow')
205
+ .action((flowId) => flowAction(flowId, 'activate', 'Activating', chalk_1.default.green));
206
+ exports.flowsCommand.command('pause <flow_id>').description('Pause a flow')
207
+ .action((flowId) => flowAction(flowId, 'pause', 'Pausing', chalk_1.default.yellow));
208
+ exports.flowsCommand.command('test <flow_id>').description('Put flow in test mode')
209
+ .action((flowId) => flowAction(flowId, 'test', 'Testing', chalk_1.default.blue));
210
+ exports.flowsCommand.command('archive <flow_id>').description('Archive a flow')
211
+ .action((flowId) => flowAction(flowId, 'archive', 'Archiving', chalk_1.default.dim));
212
+ // Flow metrics
213
+ exports.flowsCommand
214
+ .command('metrics <flow_id>')
215
+ .description('View flow metrics')
216
+ .option('--json', 'Output as JSON')
217
+ .action(async (flowId, options) => {
218
+ requireAuth();
219
+ const spinner = (0, ora_1.default)('Loading metrics...').start();
220
+ try {
221
+ const response = await api_client_1.apiClient.get(`/api/v1/cli/flows/${flowId}/metrics`);
222
+ const data = response.data;
223
+ if (options.json) {
224
+ spinner.stop();
225
+ console.log(JSON.stringify(data, null, 2));
226
+ return;
227
+ }
228
+ spinner.succeed('Metrics loaded');
229
+ console.log(ui_1.ui.header(`Flow ${flowId} Metrics`));
230
+ console.log(ui_1.ui.label('Revenue', data.total_revenue ? `$${data.total_revenue}` : '$0'));
231
+ console.log(ui_1.ui.label('Transactions', String(data.total_transactions || 0)));
232
+ console.log(ui_1.ui.label('Subscribers', String(data.active_subscribers || 0)));
233
+ console.log(ui_1.ui.label('Conversion', data.conversion_rate ? `${data.conversion_rate}%` : '-'));
234
+ console.log(ui_1.ui.label('Churn', data.churn_rate ? `${data.churn_rate}%` : '-'));
235
+ }
236
+ catch (error) {
237
+ spinner.fail(chalk_1.default.red('Failed to load metrics'));
238
+ const apiError = (0, api_client_1.handleApiError)(error);
239
+ console.error(chalk_1.default.red(` ${apiError.message}`));
240
+ }
241
+ });
242
+ // Clone flow
243
+ exports.flowsCommand
244
+ .command('clone <flow_id>')
245
+ .description('Clone a flow')
246
+ .option('-n, --name <name>', 'Name for the cloned flow')
247
+ .option('-p, --price <price>', 'New price for the clone')
248
+ .action(async (flowId, options) => {
249
+ requireAuth();
250
+ const spinner = (0, ora_1.default)(`Cloning flow ${flowId}...`).start();
251
+ try {
252
+ const params = {};
253
+ if (options.name)
254
+ params.name = options.name;
255
+ if (options.price)
256
+ params.price = parseFloat(options.price);
257
+ const response = await api_client_1.apiClient.post(`/api/v1/cli/flows/${flowId}/clone`, params);
258
+ const data = response.data;
259
+ spinner.succeed(chalk_1.default.green('Flow cloned'));
260
+ console.log('');
261
+ console.log(ui_1.ui.label('New ID', String(data.id)));
262
+ console.log(ui_1.ui.label('Name', data.name));
263
+ console.log(ui_1.ui.label('Status', statusColor(data.status || 'draft')));
264
+ }
265
+ catch (error) {
266
+ spinner.fail(chalk_1.default.red('Failed to clone flow'));
267
+ const apiError = (0, api_client_1.handleApiError)(error);
268
+ console.error(chalk_1.default.red(` ${apiError.message}`));
269
+ }
270
+ });
271
+ // List agents on flow
272
+ exports.flowsCommand
273
+ .command('agents <flow_id>')
274
+ .description('List agents assigned to a flow')
275
+ .action(async (flowId) => {
276
+ requireAuth();
277
+ const spinner = (0, ora_1.default)('Loading flow agents...').start();
278
+ try {
279
+ const response = await api_client_1.apiClient.get(`/api/v1/cli/flows/${flowId}/agents`);
280
+ const data = response.data;
281
+ const agents = data.agents || [];
282
+ spinner.succeed(`${agents.length} agents on flow`);
283
+ if (agents.length === 0) {
284
+ console.log(chalk_1.default.dim(' No agents assigned to this flow.'));
285
+ return;
286
+ }
287
+ console.log('');
288
+ console.log(ui_1.ui.table(['ID', 'Name', 'Type', 'Status'], agents.map((a) => [
289
+ String(a.id || a.agent_id),
290
+ a.name,
291
+ a.agent_type || '-',
292
+ a.status === 'active' ? chalk_1.default.green(a.status) : chalk_1.default.dim(a.status),
293
+ ])));
294
+ }
295
+ catch (error) {
296
+ spinner.fail(chalk_1.default.red('Failed to load agents'));
297
+ const apiError = (0, api_client_1.handleApiError)(error);
298
+ console.error(chalk_1.default.red(` ${apiError.message}`));
299
+ }
300
+ });
301
+ //# sourceMappingURL=flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../src/commands/flows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Unified inbox commands for Solid CLI
3
+ *
4
+ * Manage messages, emails, and campaigns across all channels:
5
+ * - View unified inbox with recent messages
6
+ * - Send messages to contacts (auto-selects best channel)
7
+ * - Manage email (list, send, reply, threads)
8
+ * - Run and track email campaigns
9
+ *
10
+ * All operations are scoped to the authenticated company_id.
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare const inboxCommand: Command;
14
+ //# sourceMappingURL=inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,eAAO,MAAM,YAAY,SAyCrB,CAAC"}