botanary 0.2.0 → 0.2.2
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 +1 -0
- package/dist/package.json +2 -2
- package/dist/src/cli.js +23 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/mcp.js +17 -4
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/utilities.js +76 -1
- package/dist/src/commands/utilities.js.map +1 -1
- package/dist/src/help/examples.js +13 -4
- package/dist/src/help/examples.js.map +1 -1
- package/dist/src/install-method.js +50 -0
- package/dist/src/install-method.js.map +1 -0
- package/dist/src/run-installer.js +30 -0
- package/dist/src/run-installer.js.map +1 -0
- package/dist/src/update-check.js +8 -2
- package/dist/src/update-check.js.map +1 -1
- package/package.json +2 -2
- package/dist/src/render/json-mode.js +0 -10
- package/dist/src/render/json-mode.js.map +0 -1
package/README.md
CHANGED
|
@@ -85,6 +85,7 @@ Every command works both ways: answer prompts interactively, or pass flags and a
|
|
|
85
85
|
| `completion <shell>` | Print a shell completion script (bash, zsh, fish, powershell) |
|
|
86
86
|
| `prompt` | Print the full operating manual for an automation driving this CLI |
|
|
87
87
|
| `update-check` | Check whether a newer botanary is published |
|
|
88
|
+
| `update` | Update botanary to the latest published version |
|
|
88
89
|
|
|
89
90
|
## Non-interactive use
|
|
90
91
|
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "botanary",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.2",
|
|
5
5
|
"description": "Botanary from your terminal - a guided CLI over the same wallet and agent lanes botanary-mcp exposes to a coding agent.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"homepage": "https://docs.botanary.xyz",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"test:watch": "vitest"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"botanary-mcp": "^0.6.
|
|
26
|
+
"botanary-mcp": "^0.6.1",
|
|
27
27
|
"commander": "^13.1.0",
|
|
28
28
|
"@clack/prompts": "^0.9.1",
|
|
29
29
|
"picocolors": "^1.1.1",
|
package/dist/src/cli.js
CHANGED
|
@@ -13,6 +13,7 @@ import { readConfig } from './config-store.js';
|
|
|
13
13
|
import { resolveSettings } from './settings.js';
|
|
14
14
|
import { EXIT, CliError, errorEnvelope, errorLines, toCliError } from './errors.js';
|
|
15
15
|
import { checkForUpdate, nagSuppressed, nagLine } from './update-check.js';
|
|
16
|
+
import { detectInstall } from './install-method.js';
|
|
16
17
|
/**
|
|
17
18
|
* Wrap fetch when, and only when, a global flag asks for it. `--timeout` needs an AbortController per
|
|
18
19
|
* request; `--debug` needs a line per request. Returns undefined otherwise so the ordinary path keeps
|
|
@@ -42,18 +43,29 @@ function wrapFetch(settings, stderr) {
|
|
|
42
43
|
}
|
|
43
44
|
});
|
|
44
45
|
}
|
|
46
|
+
/** Commands that already answer "is there an update" in more detail, on stdout. A nag right after either
|
|
47
|
+
* one is either an immediate contradiction (`update` just ran the install) or pure noise (`update-check`
|
|
48
|
+
* just printed the same fact). */
|
|
49
|
+
const NAG_EXEMPT_COMMANDS = new Set(['update', 'update-check']);
|
|
45
50
|
/**
|
|
46
51
|
* A courtesy line, on stderr so it can never corrupt piped output, and only where a human can act on it.
|
|
47
52
|
* The refresh is capped at 1.5s and runs at most once a day; every failure is silent. This must never be
|
|
48
53
|
* able to slow down or break a command.
|
|
54
|
+
*
|
|
55
|
+
* `commandName` comes from the `preAction` hook rather than argv[0], so it stays correct no matter where a
|
|
56
|
+
* global flag lands (`botanary --json update --yes`, `botanary update --yes`) and cannot be defeated by
|
|
57
|
+
* one.
|
|
49
58
|
*/
|
|
50
|
-
async function maybeNag(ctx, cliVersion, stderr) {
|
|
59
|
+
async function maybeNag(ctx, cliVersion, stderr, commandName) {
|
|
51
60
|
if (ctx.json || ctx.quiet || !ctx.interactive || nagSuppressed(process.env))
|
|
52
61
|
return;
|
|
62
|
+
if (commandName !== null && NAG_EXEMPT_COMMANDS.has(commandName))
|
|
63
|
+
return;
|
|
53
64
|
try {
|
|
54
65
|
const result = await checkForUpdate(cliVersion, { fetchImpl: fetch, now: () => Date.now() });
|
|
55
|
-
if (result.newer && result.latest)
|
|
56
|
-
stderr(colors.dim(nagLine(result.latest, cliVersion)));
|
|
66
|
+
if (result.newer && result.latest) {
|
|
67
|
+
stderr(colors.dim(nagLine(result.latest, cliVersion, detectInstall(process.env))));
|
|
68
|
+
}
|
|
57
69
|
}
|
|
58
70
|
catch {
|
|
59
71
|
// Never let a courtesy check affect the command's outcome.
|
|
@@ -74,6 +86,13 @@ export async function runCli(argv, deps) {
|
|
|
74
86
|
registerSystemCommands(program, deps.cliVersion);
|
|
75
87
|
registerUtilityCommands(program, deps.cliVersion);
|
|
76
88
|
program.exitOverride();
|
|
89
|
+
// Recorded here, rather than sniffed from argv, because a global flag (`--json`, `--yes`, ...) can sit
|
|
90
|
+
// before OR after the command name - `preAction` fires with the actual leaf command about to run,
|
|
91
|
+
// regardless of where those flags landed.
|
|
92
|
+
let invokedCommand = null;
|
|
93
|
+
program.hook('preAction', (_rootCommand, actionCommand) => {
|
|
94
|
+
invokedCommand = actionCommand.name();
|
|
95
|
+
});
|
|
77
96
|
let ctx = null;
|
|
78
97
|
try {
|
|
79
98
|
program.parseOptions(argv);
|
|
@@ -114,7 +133,7 @@ export async function runCli(argv, deps) {
|
|
|
114
133
|
return EXIT.ok;
|
|
115
134
|
}
|
|
116
135
|
await program.parseAsync(argv, { from: 'user' });
|
|
117
|
-
await maybeNag(ctx, deps.cliVersion, stderr);
|
|
136
|
+
await maybeNag(ctx, deps.cliVersion, stderr, invokedCommand);
|
|
118
137
|
return ctx.outcome.exit;
|
|
119
138
|
}
|
|
120
139
|
catch (e) {
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAyB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/commands/mcp.js
CHANGED
|
@@ -40,10 +40,20 @@ export function resolveMcpBin() {
|
|
|
40
40
|
/**
|
|
41
41
|
* Helper to spawn a child process and wait for it to exit. The onError callback is invoked when
|
|
42
42
|
* the child emits an 'error' event (e.g. when the command is not found).
|
|
43
|
+
*
|
|
44
|
+
* `useShell` is per call site, not a blanket default, because a shell is not free of hazards: when
|
|
45
|
+
* `shell: true`, Node does not quote `command`/`args` for you - it joins them with a plain space and
|
|
46
|
+
* hands the whole string to the platform shell (`cmd /d /s /c "..."` on Windows), so any path containing
|
|
47
|
+
* a space silently splits into separate tokens. `mcp install`'s argv is client-CLI names from the constant
|
|
48
|
+
* `MCP_SNIPPETS` table - no spaces, but those CLIs are `.cmd` shims on Windows that `spawn` refuses to run
|
|
49
|
+
* without a shell since the fix for CVE-2024-27980 (same reasoning as src/run-installer.ts). `mcp serve`'s
|
|
50
|
+
* argv is `process.execPath` plus a resolved `botanary-mcp` bin path - both routinely contain spaces (the
|
|
51
|
+
* default Windows Node install is under `C:\Program Files\nodejs\`), and it spawns an `.exe` directly, so
|
|
52
|
+
* it never needed a shell in the first place. Even on win32, `useShell` must stay off there.
|
|
43
53
|
*/
|
|
44
|
-
async function spawnAndWait(command, args, onError) {
|
|
54
|
+
async function spawnAndWait(command, args, onError, useShell) {
|
|
45
55
|
return new Promise((resolve) => {
|
|
46
|
-
const child = spawn(command, args, { stdio: 'inherit' });
|
|
56
|
+
const child = spawn(command, args, { stdio: 'inherit', shell: useShell && process.platform === 'win32' });
|
|
47
57
|
child.on('error', (error) => resolve(onError(error)));
|
|
48
58
|
child.on('close', (code) => resolve(code ?? 1));
|
|
49
59
|
});
|
|
@@ -121,7 +131,8 @@ export function registerMcpCommands(program) {
|
|
|
121
131
|
because: `This runs \`${printable}\` and needs a confirmation it cannot ask for here.`,
|
|
122
132
|
});
|
|
123
133
|
const [command, ...args] = entry.installCommand;
|
|
124
|
-
|
|
134
|
+
// Client CLIs are `.cmd` shims on Windows - shell needed there to resolve them at all.
|
|
135
|
+
const exitCode = await spawnAndWait(command, args, () => -1, true);
|
|
125
136
|
if (exitCode === -1) {
|
|
126
137
|
throw new CliError(`Could not run \`${command}\` - it does not appear to be installed.`, 'client_cli_missing', EXIT.error, `Install ${entry.label} first, or use \`botanary mcp config ${client}\` and add it yourself.`);
|
|
127
138
|
}
|
|
@@ -142,7 +153,9 @@ export function registerMcpCommands(program) {
|
|
|
142
153
|
// Spawned with NO arguments deliberately: botanary-mcp's own bin treats a bare invocation as "serve
|
|
143
154
|
// and stay alive", and exits immediately after connecting when it is given any argument at all.
|
|
144
155
|
const bin = resolveMcpBin();
|
|
145
|
-
|
|
156
|
+
// process.execPath is an .exe spawned directly - never needs a shell, and a shell would break on
|
|
157
|
+
// its own default Windows install path (see spawnAndWait's doc comment).
|
|
158
|
+
const exitCode = await spawnAndWait(process.execPath, [bin], () => 1, false);
|
|
146
159
|
if (exitCode !== 0)
|
|
147
160
|
throw new CliError(`botanary-mcp exited ${exitCode}.`, 'mcp_exited', EXIT.error);
|
|
148
161
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAG1E,CAAC;YACF,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;gBAC7F,IAAI,GAAG;oBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,MAAM,IAAI,QAAQ,CAChB,2DAA2D,EAC3D,mBAAmB,EACnB,IAAI,CAAC,KAAK,EACV,4DAA4D,CAC7D,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAG1E,CAAC;YACF,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;gBAC7F,IAAI,GAAG;oBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,MAAM,IAAI,QAAQ,CAChB,2DAA2D,EAC3D,mBAAmB,EACnB,IAAI,CAAC,KAAK,EACV,4DAA4D,CAC7D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,YAAY,CACzB,OAAe,EACf,IAAc,EACd,OAAiD,EACjD,QAAiB;IAEjB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;QAC1G,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,KAAK,CACf,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,qDAAqD,CAAC,EACzF,SAAS,CACV,CAAC;IAEF,GAAG;SACA,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,CAAC,MAAe,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAe,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnE,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,WAAW,CAAC,mBAAmB,MAAM,IAAI,EAAE,kBAAkB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAe,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,WAAW,CAAC,mBAAmB,MAAM,IAAI,EAAE,kBAAkB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9G,CAAC;QAED,qGAAqG;QACrG,8DAA8D;QAC9D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG;oBACX,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;oBACvC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS,EAAE;iBAC/D,CAAC;gBACF,MAAM,QAAQ,GAAG,CAAC,oEAAoE,CAAC,CAAC;gBACxF,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,6BAA6B,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAC/F,GAAG,YAAY,CAAC,kCAAkC,EAAE,IAAI,EAAE,QAAQ,CAAC,mBAAmB,KAAK,CAAC,UAAU,QAAQ,KAAK,CAAC,OAAO,EAAE,CAC9H,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT;oBACE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,6BAA6B,KAAK,CAAC,UAAU,GAAG,CAAC;oBAC3E,MAAM,CAAC,GAAG,CAAC,sEAAsE,CAAC;oBAClF,EAAE;oBACF,KAAK,CAAC,OAAO;iBACd,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG;YACX,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;YACnC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,wBAAwB,EAAE;SACpE,CAAC;QACF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,6BAA6B,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAC/F,YAAY,CAAC,qCAAqC,EAAE,IAAI,EAAE,QAAQ,CAAC,CACpE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,cAAc,CAClB,GAAG,EACH,6BAA6B,KAAK,CAAC,KAAK,EAAE,EAC1C,IAAI,EACJ,QAAQ,EACR;YACE,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,eAAe,SAAS,qDAAqD;SACvF,CACF,CAAC;QAEF,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;QAChD,uFAAuF;QACvF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,QAAQ,CAChB,mBAAmB,OAAO,0CAA0C,EACpE,oBAAoB,EACpB,IAAI,CAAC,KAAK,EACV,WAAW,KAAK,CAAC,KAAK,wCAAwC,MAAM,yBAAyB,CAC9F,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAAC,KAAK,SAAS,aAAa,QAAQ,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,oGAAoG;QACpG,gGAAgG;QAChG,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,iGAAiG;QACjG,yEAAyE;QACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7E,IAAI,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,uBAAuB,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import * as clack from '@clack/prompts';
|
|
2
|
+
import { CliError, EXIT, invalidArgs } from '../errors.js';
|
|
3
|
+
import { detectInstall } from '../install-method.js';
|
|
4
|
+
import { runInstaller } from '../run-installer.js';
|
|
1
5
|
import { group } from '../help/groups.js';
|
|
2
6
|
import { SHELLS, completionScript } from '../completion.js';
|
|
3
7
|
import { promptDoc } from '../prompt-doc.js';
|
|
@@ -38,7 +42,78 @@ export function registerUtilityCommands(program, cliVersion) {
|
|
|
38
42
|
console.log(glyphs.info('Could not reach the npm registry. Nothing changed.'));
|
|
39
43
|
return;
|
|
40
44
|
}
|
|
41
|
-
console.log(result.newer
|
|
45
|
+
console.log(result.newer
|
|
46
|
+
? glyphs.warning(nagLine(result.latest, cliVersion, detectInstall(process.env)))
|
|
47
|
+
: glyphs.success(`Up to date (${cliVersion}).`));
|
|
48
|
+
}), 'Utilities');
|
|
49
|
+
group(program
|
|
50
|
+
.command('update')
|
|
51
|
+
.description('Update botanary to the latest published version')
|
|
52
|
+
.action(async () => {
|
|
53
|
+
const ctx = program.opts().__ctx;
|
|
54
|
+
const result = await step(ctx, 'Asking npm', () => checkForUpdate(cliVersion, { fetchImpl: fetch, now: () => Date.now(), force: true }));
|
|
55
|
+
const method = detectInstall(process.env);
|
|
56
|
+
if (result.latest === null) {
|
|
57
|
+
throw new CliError('Could not reach the npm registry. Nothing changed.', 'upstream_unavailable', EXIT.upstream, 'Check your connection and try again.');
|
|
58
|
+
}
|
|
59
|
+
if (!result.newer) {
|
|
60
|
+
if (ctx.json) {
|
|
61
|
+
console.log(JSON.stringify({ ...result, manager: method.manager, command: method.command, updated: false }));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
console.log(glyphs.success(`Up to date (${cliVersion}).`));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!method.updatable || method.command === null) {
|
|
68
|
+
if (ctx.json) {
|
|
69
|
+
console.log(JSON.stringify({ ...result, manager: method.manager, command: null, updated: false }));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
console.log(glyphs.info(`${cliVersion} is behind ${result.latest}. ${method.reason}`));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const printable = method.command.join(' ');
|
|
76
|
+
// Before the consent gate: `--dry-run` is the escape hatch README.md promises stays available
|
|
77
|
+
// even when `confirm: never` is configured, so it must win before anything asks for --yes or
|
|
78
|
+
// installs anything. Same JSON shape the rest of this command already uses, just `updated: false`.
|
|
79
|
+
if (ctx.dryRun) {
|
|
80
|
+
if (ctx.json) {
|
|
81
|
+
// `dryRun: true` is what makes this payload honest. Without it a caller cannot tell a dry
|
|
82
|
+
// run from "nothing needed doing" - both carry `updated: false`. Every other dry-run in this
|
|
83
|
+
// CLI marks itself the same way, via review.ts's dryRunPayload.
|
|
84
|
+
console.log(JSON.stringify({ ...result, dryRun: true, manager: method.manager, command: method.command, updated: false }));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
console.log(glyphs.info(`Would run \`${printable}\` (${method.manager}). Dry run - nothing was changed.`));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!ctx.yes) {
|
|
91
|
+
if (ctx.json || !ctx.interactive) {
|
|
92
|
+
throw invalidArgs(`botanary ${cliVersion} is behind ${result.latest}, and updating runs \`${printable}\`. Pass --yes to confirm non-interactively.`);
|
|
93
|
+
}
|
|
94
|
+
console.log(`${cliVersion} to ${result.latest}, installed with ${method.manager}.`);
|
|
95
|
+
const answer = await clack.confirm({ message: `Run \`${printable}\`?`, initialValue: false });
|
|
96
|
+
if (answer !== true) {
|
|
97
|
+
console.log(glyphs.info('Cancelled - nothing was changed.'));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Build every line BEFORE spawning. The installer rewrites this package's dist/ while this very
|
|
102
|
+
// process is still running, and Node resolves modules lazily, so anything first imported after
|
|
103
|
+
// the swap could be read from a half-written tree. Past this point: no imports, no helpers that
|
|
104
|
+
// might not already be resident, nothing but writing strings that already exist.
|
|
105
|
+
const successLine = ctx.json
|
|
106
|
+
? JSON.stringify({ ...result, manager: method.manager, command: method.command, updated: true })
|
|
107
|
+
: glyphs.success(`Updated ${cliVersion} to ${result.latest}.`);
|
|
108
|
+
const failureMessage = `\`${printable}\` failed. Nothing was changed.`;
|
|
109
|
+
// Under --json, stdout IS the response payload - silence the child's own stdout so npm's
|
|
110
|
+
// `added 1 package in 2s` cannot land ahead of the JSON line and break a `| jq` pipe. The human
|
|
111
|
+
// path keeps npm's progress inherited as before.
|
|
112
|
+
const code = await runInstaller(method.command, { silent: ctx.json });
|
|
113
|
+
if (code !== 0) {
|
|
114
|
+
throw new CliError(failureMessage, 'update_failed', EXIT.error, 'Run it yourself to see the installer output.');
|
|
115
|
+
}
|
|
116
|
+
console.log(successLine);
|
|
42
117
|
}), 'Utilities');
|
|
43
118
|
}
|
|
44
119
|
//# sourceMappingURL=utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/commands/utilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,UAAkB;IAC1E,KAAK,CACH,OAAO;SACJ,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,oCAAoC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACrE,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE;QACxB,sFAAsF;QACtF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,EACJ,WAAW,CACZ,CAAC;IAEF,KAAK,CACH,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,GAAG,GAAe,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC7C,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,EACJ,WAAW,CACZ,CAAC;IAEF,KAAK,CACH,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,GAAe,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAChD,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CACrF,CAAC;QACF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,UAAU,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/commands/utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -312,14 +312,23 @@ export const COMMAND_HELP = {
|
|
|
312
312
|
version: {
|
|
313
313
|
body: 'The installed botanary CLI version.',
|
|
314
314
|
examples: ['botanary version', 'botanary --version'],
|
|
315
|
-
seeAlso: 'botanary update
|
|
315
|
+
seeAlso: 'botanary update',
|
|
316
316
|
},
|
|
317
317
|
'update-check': {
|
|
318
|
-
body: 'Ask npm whether a newer botanary is published. Cached for a day
|
|
319
|
-
'
|
|
318
|
+
body: 'Ask npm whether a newer botanary is published. Cached for a day and silent when offline. It only\n' +
|
|
319
|
+
'reports - `botanary update` is the one that changes anything.',
|
|
320
320
|
examples: ['botanary update-check', 'botanary update-check --json'],
|
|
321
321
|
notes: 'Set BOTANARY_NO_UPDATE_NOTIFIER=1 to suppress the one-line nag other commands print.',
|
|
322
|
-
seeAlso: 'botanary
|
|
322
|
+
seeAlso: 'botanary update',
|
|
323
|
+
},
|
|
324
|
+
update: {
|
|
325
|
+
body: 'Update botanary to the latest published version. It works out how this copy was installed - npm,\n' +
|
|
326
|
+
'pnpm, yarn or bun - and runs that manager, after showing you the exact command and asking. Under a\n' +
|
|
327
|
+
'one-off runner - `npx`, `pnpm dlx` or `bunx` - there is nothing to update, because those already\n' +
|
|
328
|
+
'fetch the latest botanary every run.',
|
|
329
|
+
examples: ['botanary update', 'botanary update --yes', 'botanary update --json --yes', 'botanary update --dry-run'],
|
|
330
|
+
notes: 'Needs --yes when it cannot ask, and it never uses sudo: a permission error is yours to resolve.',
|
|
331
|
+
seeAlso: 'botanary update-check',
|
|
323
332
|
},
|
|
324
333
|
docs: {
|
|
325
334
|
body: 'Open the Botanary documentation in your browser, optionally at one topic.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/help/examples.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/help/examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
const TARGET = 'botanary@latest';
|
|
3
|
+
function runnable(manager, command) {
|
|
4
|
+
return { manager, command, updatable: true, reason: null };
|
|
5
|
+
}
|
|
6
|
+
function nothingToDo(manager, reason) {
|
|
7
|
+
return { manager, command: null, updatable: false, reason };
|
|
8
|
+
}
|
|
9
|
+
export function classifyInstall(modulePath, env) {
|
|
10
|
+
const path = modulePath.replace(/\\/g, '/');
|
|
11
|
+
// This guard must run first: a source checkout sits outside node_modules entirely, and every check
|
|
12
|
+
// below it assumes it is looking at an installed package. Skip it and a source checkout falls through
|
|
13
|
+
// to the unconditional npm fallback at the bottom of this function instead of being reported as source.
|
|
14
|
+
// The manager-specific checks that follow, though, are NOT order-dependent among themselves - each
|
|
15
|
+
// tests a disjoint path substring (e.g. `/.bun/install/cache/` and `/.bun/install/global/` can never
|
|
16
|
+
// both match the same path), so swapping any two of them leaves classification unchanged. Verified by
|
|
17
|
+
// swapping the bun cache and bun global checks; tests stayed green.
|
|
18
|
+
if (!path.includes('/node_modules/')) {
|
|
19
|
+
return nothingToDo('source', 'This is a source checkout, not an installed package. Update it with git.');
|
|
20
|
+
}
|
|
21
|
+
const ONE_OFF_REASON = 'A one-off runner (npx, pnpm dlx, bunx) fetches the latest botanary every run, so there is nothing to update.';
|
|
22
|
+
if (path.includes('/_npx/') || path.includes('/pnpm/dlx/') || path.includes('/dlx-') || path.includes('/.bun/install/cache/')) {
|
|
23
|
+
return nothingToDo('npx', ONE_OFF_REASON);
|
|
24
|
+
}
|
|
25
|
+
if (path.includes('/.bun/install/global/')) {
|
|
26
|
+
return runnable('bun', ['bun', 'add', '-g', TARGET]);
|
|
27
|
+
}
|
|
28
|
+
const pnpmHome = env.PNPM_HOME?.replace(/\\/g, '/');
|
|
29
|
+
if ((pnpmHome && path.startsWith(pnpmHome)) || path.includes('/pnpm/global/')) {
|
|
30
|
+
return runnable('pnpm', ['pnpm', 'add', '-g', TARGET]);
|
|
31
|
+
}
|
|
32
|
+
if (path.includes('/.yarn/') || path.includes('/yarn/global/')) {
|
|
33
|
+
return runnable('yarn', ['yarn', 'global', 'add', TARGET]);
|
|
34
|
+
}
|
|
35
|
+
// Everything else under node_modules is npm, including a global install under a Homebrew node prefix -
|
|
36
|
+
// there is no `botanary` brew formula, so /opt/homebrew/lib/node_modules is just npm's own layout.
|
|
37
|
+
return runnable('npm', ['npm', 'install', '-g', TARGET]);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The same answer for the copy of the CLI that is running right now.
|
|
41
|
+
*
|
|
42
|
+
* Kept separate from `classifyInstall` so the table above stays pure and testable, and so a command's own
|
|
43
|
+
* tests can stub just this one function. That matters more than it looks: under vitest the CLI runs from
|
|
44
|
+
* `src/`, which is not inside any `node_modules`, so anything that resolved its own path here would
|
|
45
|
+
* classify as `source` and correctly refuse to act - in every single test.
|
|
46
|
+
*/
|
|
47
|
+
export function detectInstall(env = process.env) {
|
|
48
|
+
return classifyInstall(fileURLToPath(import.meta.url), env);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=install-method.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-method.js","sourceRoot":"","sources":["../../src/install-method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAoBzC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AAEjC,SAAS,QAAQ,CAAC,OAAgB,EAAE,OAAiB;IACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB,EAAE,MAAc;IACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,GAAsB;IACxE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE5C,mGAAmG;IACnG,sGAAsG;IACtG,wGAAwG;IACxG,mGAAmG;IACnG,qGAAqG;IACrG,sGAAsG;IACtG,oEAAoE;IACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,QAAQ,EAAE,0EAA0E,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,cAAc,GAAG,8GAA8G,CAAC;IACtI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC9H,OAAO,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC3C,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9E,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,uGAAuG;IACvG,mGAAmG;IACnG,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG;IAChE,OAAO,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Run a package manager and report its exit code.
|
|
4
|
+
*
|
|
5
|
+
* stdio is inherited (or partly silenced - see `RunInstallerOptions`) so npm's own progress, prompts and
|
|
6
|
+
* errors reach the user unfiltered - an installer failure explains itself far better than anything this
|
|
7
|
+
* CLI could re-author, and an EACCES on a global directory is exactly the kind of message that must not be
|
|
8
|
+
* swallowed.
|
|
9
|
+
*
|
|
10
|
+
* Never throws. A binary that is missing resolves non-zero like any other failure, because the caller
|
|
11
|
+
* does the same thing either way: report that nothing changed.
|
|
12
|
+
*/
|
|
13
|
+
export function runInstaller(command, options = {}) {
|
|
14
|
+
const [bin, ...args] = command;
|
|
15
|
+
if (!bin)
|
|
16
|
+
return Promise.resolve(1);
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
const child = spawn(bin, args, {
|
|
19
|
+
stdio: options.silent ? ['ignore', 'ignore', 'inherit'] : 'inherit',
|
|
20
|
+
// npm, pnpm and yarn are `.cmd` shims on Windows. `spawn` does not apply PATHEXT, and since the fix
|
|
21
|
+
// for CVE-2024-27980 Node refuses to run a `.cmd` at all without `shell: true`. There is no
|
|
22
|
+
// injection surface here: `command` is always one of classifyInstall's constant-literal argv
|
|
23
|
+
// arrays, never user input.
|
|
24
|
+
shell: process.platform === 'win32',
|
|
25
|
+
});
|
|
26
|
+
child.on('error', () => resolve(1));
|
|
27
|
+
child.on('close', (code) => resolve(code ?? 1));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=run-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-installer.js","sourceRoot":"","sources":["../../src/run-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAY3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,UAA+B,EAAE;IAC/E,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YACnE,oGAAoG;YACpG,4FAA4F;YAC5F,6FAA6F;YAC7F,4BAA4B;YAC5B,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACpC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/update-check.js
CHANGED
|
@@ -75,8 +75,14 @@ export async function checkForUpdate(current, deps) {
|
|
|
75
75
|
await writeCache({ checkedAt: deps.now(), latest });
|
|
76
76
|
return { current, latest, newer: latest ? isNewer(latest, current) : false, fromCache: false };
|
|
77
77
|
}
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
/**
|
|
79
|
+
* The courtesy line. It leads with `botanary update`, which knows how to do the work, and names the
|
|
80
|
+
* manager-specific command only as the fallback for someone who would rather run it themselves. A copy
|
|
81
|
+
* with nothing to run - npx - gets no parenthetical, because there is no command to offer.
|
|
82
|
+
*/
|
|
83
|
+
export function nagLine(latest, current, method) {
|
|
84
|
+
const fallback = method.command ? ` (or \`${method.command.join(' ')}\`)` : '';
|
|
85
|
+
return `Update available: ${current} to ${latest}. Run \`botanary update\`${fallback}.`;
|
|
80
86
|
}
|
|
81
87
|
/** CI is included because a nag in a build log is noise nobody can act on from there. */
|
|
82
88
|
export function nagSuppressed(env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/update-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "botanary",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.2",
|
|
5
5
|
"description": "Botanary from your terminal - a guided CLI over the same wallet and agent lanes botanary-mcp exposes to a coding agent.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"homepage": "https://docs.botanary.xyz",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"test:watch": "vitest"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"botanary-mcp": "^0.6.
|
|
26
|
+
"botanary-mcp": "^0.6.1",
|
|
27
27
|
"commander": "^13.1.0",
|
|
28
28
|
"@clack/prompts": "^0.9.1",
|
|
29
29
|
"picocolors": "^1.1.1",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/** --json forces it on. Otherwise: a non-TTY stdout (piped, redirected, or run from another program)
|
|
2
|
-
* auto-enables it, matching the Alchemy CLI reference exactly. --no-interactive alone does NOT force
|
|
3
|
-
* JSON - it only disables prompts; a human running --no-interactive in a real terminal still wants
|
|
4
|
-
* human-readable output unless they also asked for --json or piped it. */
|
|
5
|
-
export function isJsonMode(opts, stdout = process.stdout) {
|
|
6
|
-
if (opts.json)
|
|
7
|
-
return true;
|
|
8
|
-
return !stdout.isTTY;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=json-mode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-mode.js","sourceRoot":"","sources":["../../../src/render/json-mode.ts"],"names":[],"mappings":"AAKA;;;2EAG2E;AAC3E,MAAM,UAAU,UAAU,CAAC,IAAkB,EAAE,SAA8B,OAAO,CAAC,MAAM;IACzF,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACvB,CAAC"}
|