@solidnumber/cli 2.11.12 → 2.11.14
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/dist/commands/ai.d.ts.map +1 -1
- package/dist/commands/ai.js +40 -12
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/ant.d.ts.map +1 -1
- package/dist/commands/ant.js +10 -16
- package/dist/commands/ant.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +6 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/dispatch_shortcuts.d.ts.map +1 -1
- package/dist/commands/dispatch_shortcuts.js +3 -9
- package/dist/commands/dispatch_shortcuts.js.map +1 -1
- package/dist/commands/droplet.d.ts.map +1 -1
- package/dist/commands/droplet.js +13 -19
- package/dist/commands/droplet.js.map +1 -1
- package/dist/commands/import.d.ts +5 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +38 -38
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +19 -25
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +60 -9
- package/dist/commands/setup.js.map +1 -1
- package/dist/data/verb-overrides.json +18 -0
- package/dist/data/workflow-recipes.json +2 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +16 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/editor-preflight.d.ts +23 -0
- package/dist/lib/editor-preflight.d.ts.map +1 -0
- package/dist/lib/editor-preflight.js +97 -0
- package/dist/lib/editor-preflight.js.map +1 -0
- package/package.json +1 -1
- package/platform-docs/llms.txt +2 -2
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preflightEditor = preflightEditor;
|
|
4
|
+
/**
|
|
5
|
+
* Editor preflight — "on PATH" is not the same as "can actually run."
|
|
6
|
+
*
|
|
7
|
+
* Real-world failure this exists for (2026-06-04, Adam's older iMac):
|
|
8
|
+
* Claude Code was installed via npm, so `command -v claude` succeeded —
|
|
9
|
+
* setup reported ✓ green for the MCP wiring and the SessionStart hook —
|
|
10
|
+
* but the `claude` native binary requires macOS 13+ and the machine was
|
|
11
|
+
* older, so every launch aborted with:
|
|
12
|
+
*
|
|
13
|
+
* dyld: Symbol not found: _ubrk_clone
|
|
14
|
+
* Referenced from: .../bin/claude (which was built for Mac OS X 13.0)
|
|
15
|
+
* Expected in: /usr/lib/libicucore.A.dylib
|
|
16
|
+
*
|
|
17
|
+
* A new user reads that as "Solid is broken." This module runs
|
|
18
|
+
* `<binary> --version` once and translates launch failures into a plain
|
|
19
|
+
* reason + remediation hint, so `solid setup` / `solid ai` can say what
|
|
20
|
+
* is actually wrong and what to do about it.
|
|
21
|
+
*/
|
|
22
|
+
const child_process_1 = require("child_process");
|
|
23
|
+
const defaultRunner = (binary, args) => {
|
|
24
|
+
const r = (0, child_process_1.spawnSync)(binary, args, {
|
|
25
|
+
encoding: 'utf-8',
|
|
26
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
27
|
+
timeout: 15_000,
|
|
28
|
+
env: { ...process.env, SOLID_SKIP_VERSION_CHECK: '1' },
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
status: r.status,
|
|
32
|
+
signal: r.signal,
|
|
33
|
+
stdout: (r.stdout || '').toString(),
|
|
34
|
+
stderr: (r.stderr || '').toString(),
|
|
35
|
+
error: r.error,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
// Per-editor alternatives shown when the binary can't run on this machine.
|
|
39
|
+
const ALTERNATIVES = {
|
|
40
|
+
claude: 'Use claude.ai/code in the browser, or Cursor on this machine.',
|
|
41
|
+
cursor: 'Use claude.ai/code in the browser, or Claude Code on this machine.',
|
|
42
|
+
codex: 'Use another editor on this machine.',
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Run `<binary> --version` and translate any launch failure into a
|
|
46
|
+
* human-readable reason + hint. ok=true means the binary genuinely
|
|
47
|
+
* starts on this machine.
|
|
48
|
+
*/
|
|
49
|
+
function preflightEditor(binary, runner = defaultRunner) {
|
|
50
|
+
let r;
|
|
51
|
+
try {
|
|
52
|
+
r = runner(binary, ['--version']);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
reason: `${binary} failed to launch: ${e.message}`,
|
|
58
|
+
hint: `Reinstall ${binary}, then re-run this command.`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if (r.error) {
|
|
62
|
+
return {
|
|
63
|
+
ok: false,
|
|
64
|
+
reason: `${binary} failed to launch: ${r.error.message}`,
|
|
65
|
+
hint: `Reinstall ${binary}, then re-run this command.`,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (r.status === 0)
|
|
69
|
+
return { ok: true };
|
|
70
|
+
const output = `${r.stderr}\n${r.stdout}`;
|
|
71
|
+
// dyld symbol/link errors = the binary was built for a newer macOS than
|
|
72
|
+
// this machine runs. Extract the "built for Mac OS X 13.0" version when
|
|
73
|
+
// present so the message names the real requirement.
|
|
74
|
+
if (/dyld|Symbol not found|Library not loaded/i.test(output)) {
|
|
75
|
+
const built = output.match(/built for (?:Mac OS X|macOS) (\d+(?:\.\d+)?)/i);
|
|
76
|
+
const needs = built ? `macOS ${built[1]}+` : 'a newer macOS than this machine is running';
|
|
77
|
+
return {
|
|
78
|
+
ok: false,
|
|
79
|
+
reason: `${binary} is installed but cannot run on this Mac — its binary requires ${needs}.`,
|
|
80
|
+
hint: `Update macOS${built ? ` to ${built[1]} or later` : ''}, or: ${ALTERNATIVES[binary] || 'use another editor.'}`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (r.signal) {
|
|
84
|
+
return {
|
|
85
|
+
ok: false,
|
|
86
|
+
reason: `${binary} is installed but crashed on launch (signal ${r.signal}).`,
|
|
87
|
+
hint: `Reinstall ${binary}. If it keeps crashing: ${ALTERNATIVES[binary] || 'use another editor.'}`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const firstLine = output.trim().split('\n')[0]?.slice(0, 160) || `exit code ${r.status}`;
|
|
91
|
+
return {
|
|
92
|
+
ok: false,
|
|
93
|
+
reason: `${binary} is installed but exited with an error on launch: ${firstLine}`,
|
|
94
|
+
hint: `Reinstall ${binary}, then re-run this command.`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=editor-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-preflight.js","sourceRoot":"","sources":["../../src/lib/editor-preflight.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidnumber/cli",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.14",
|
|
4
4
|
"description": "Be There — the system that answers, books, and takes payment when you can't. CLI + SDK + MCP tools for SMBs, agencies, and AI agents. solid clone plumber → working business in 30 seconds.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
package/platform-docs/llms.txt
CHANGED
|
@@ -128,7 +128,7 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
|
|
|
128
128
|
|
|
129
129
|
<!-- CLI:AUTO:BEGIN -->
|
|
130
130
|
|
|
131
|
-
- [npm](https://www.npmjs.com/package/@solidnumber/cli): `@solidnumber/cli` v2.11.
|
|
131
|
+
- [npm](https://www.npmjs.com/package/@solidnumber/cli): `@solidnumber/cli` v2.11.14
|
|
132
132
|
- [GitHub](https://github.com/Adam-Camp-King/solid-cli): Open-source TypeScript CLI (BUSL-1.1)
|
|
133
133
|
- [CLI Documentation](https://solidnumber.com/docs/cli): Full command reference
|
|
134
134
|
- **Machine-readable verb tree**: `solid schema verbs --json` — every command, every flag, every description, in one JSON dump. Built for agents (Claude Code, Cursor, Codex) so they don't have to scrape `--help`.
|
|
@@ -263,7 +263,7 @@ Developer funnel: Free signup → API key → MCP config → manage client busin
|
|
|
263
263
|
- **webmcp** (4 subcommands) — Manage the in-browser MCP transport — manifest, dispatch test, invocations, consent: `consent, invocations, manifest, test`
|
|
264
264
|
- **widget** (7 subcommands) — Widgets — embeddable business widgets: `activate, create, delete, embed, get, list, update`
|
|
265
265
|
|
|
266
|
-
*Auto-generated from the live commander tree at build time. CLI version 2.11.
|
|
266
|
+
*Auto-generated from the live commander tree at build time. CLI version 2.11.14, manifest schema 1.0, generated 2026-06-04. Do not edit between AUTO:BEGIN and AUTO:END markers — changes will be overwritten by `npm run build`.*
|
|
267
267
|
|
|
268
268
|
<!-- CLI:AUTO:END -->
|
|
269
269
|
|