@nowline/cli 0.0.0-dev.20261023021135.ga07dccb → 0.0.0-dev.20261023052453.g9889213
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 +15 -0
- package/dist/cli/args.d.ts +12 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +18 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/commands/mcp-install.d.ts +18 -0
- package/dist/commands/mcp-install.d.ts.map +1 -0
- package/dist/commands/mcp-install.js +151 -0
- package/dist/commands/mcp-install.js.map +1 -0
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +2 -2
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-install/clients.d.ts +58 -0
- package/dist/mcp-install/clients.d.ts.map +1 -0
- package/dist/mcp-install/clients.js +304 -0
- package/dist/mcp-install/clients.js.map +1 -0
- package/dist/mcp-install/host.d.ts +29 -0
- package/dist/mcp-install/host.d.ts.map +1 -0
- package/dist/mcp-install/host.js +72 -0
- package/dist/mcp-install/host.js.map +1 -0
- package/dist/mcp-install/json-config.d.ts +29 -0
- package/dist/mcp-install/json-config.d.ts.map +1 -0
- package/dist/mcp-install/json-config.js +139 -0
- package/dist/mcp-install/json-config.js.map +1 -0
- package/dist/mcp-install/server-command.d.ts +26 -0
- package/dist/mcp-install/server-command.d.ts.map +1 -0
- package/dist/mcp-install/server-command.js +52 -0
- package/dist/mcp-install/server-command.js.map +1 -0
- package/man/fr/nowline.1 +81 -1
- package/man/nowline.1 +77 -0
- package/package.json +15 -14
- package/src/cli/args.ts +44 -3
- package/src/cli/help.ts +18 -0
- package/src/commands/mcp-install.ts +211 -0
- package/src/generated/version.ts +2 -2
- package/src/index.ts +3 -0
- package/src/mcp-install/clients.ts +443 -0
- package/src/mcp-install/host.ts +106 -0
- package/src/mcp-install/json-config.ts +179 -0
- package/src/mcp-install/server-command.ts +75 -0
package/README.md
CHANGED
|
@@ -52,6 +52,8 @@ nowline <input> [options] # render (default)
|
|
|
52
52
|
nowline <input> --serve [-p <port>] # live HTTP preview
|
|
53
53
|
nowline --init [<name>] # scaffold a starter file
|
|
54
54
|
nowline <input> --dry-run # validate-only (no write)
|
|
55
|
+
nowline --mcp # MCP stdio server for AI agents
|
|
56
|
+
nowline --mcp-install [<client>] # register that server with your agents
|
|
55
57
|
nowline --help # print help
|
|
56
58
|
nowline --version # print version
|
|
57
59
|
nowline # no args → print help
|
|
@@ -99,6 +101,9 @@ nowline roadmap.nowline --headless # bundled DejaVu fonts (determi
|
|
|
99
101
|
| `--serve` | Live HTTP preview. Opt-in `-o <path>` writes on each rebuild. |
|
|
100
102
|
| `--init [<name>]` | Scaffold a starter `.nowline` in cwd. Auto-appends `.nowline`. |
|
|
101
103
|
| `-n, --dry-run` | Run pipeline; skip the write. Replaces the old `validate` verb. |
|
|
104
|
+
| `--mcp` | MCP stdio server (`--port <n>` for local HTTP), same as `npx @nowline/mcp`. |
|
|
105
|
+
| `--mcp-install [<client>]` | Register the MCP server with an agent; omit the client for every agent found. `-n` previews. |
|
|
106
|
+
| `--mcp-uninstall [<client>]` | Remove it again. |
|
|
102
107
|
|
|
103
108
|
### Render options
|
|
104
109
|
|
|
@@ -136,6 +141,16 @@ nowline roadmap.nowline --headless # bundled DejaVu fonts (determi
|
|
|
136
141
|
| `--no-links` | (off) |
|
|
137
142
|
| `--strict` | (off) |
|
|
138
143
|
|
|
144
|
+
### MCP options
|
|
145
|
+
|
|
146
|
+
`nowline --mcp-install` edits each agent's own config: `claude-code`, `claude-desktop`, `cursor`, `vscode`, `codex`, `gemini`, `antigravity`, `muse` (Meta Muse Code), `opencode`, `copilot` (GitHub Copilot CLI), `windsurf`, `zed`, `amp`, `goose`. Re-running is safe, and comments in JSON configs survive. Details: [`specs/cli.md` § `--mcp-install`](../../specs/cli.md).
|
|
147
|
+
|
|
148
|
+
| Flag | Default | Meaning |
|
|
149
|
+
|----------------------|---------|---------|
|
|
150
|
+
| `--root <dir>` | cwd | Folder the MCP file tools may use; with `--mcp-install`, written into the registered command. |
|
|
151
|
+
| `--scope <s>` | `user` | `user` (every project) or `project` (config files in cwd, for committing). |
|
|
152
|
+
| `--server <s>` | `self` | `self` registers this `nowline` binary, so a Homebrew install needs no Node; `npx` registers `npx -y @nowline/mcp`. |
|
|
153
|
+
|
|
139
154
|
### Logging (mutually exclusive)
|
|
140
155
|
|
|
141
156
|
| Flag | Description |
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { LogLevel } from '../io/log.js';
|
|
2
|
-
export type ModeKind = 'render' | 'serve' | 'init' | 'mcp' | 'help' | 'version';
|
|
2
|
+
export type ModeKind = 'render' | 'serve' | 'init' | 'mcp' | 'mcp-install' | 'mcp-uninstall' | 'help' | 'version';
|
|
3
|
+
export type McpScope = 'user' | 'project';
|
|
4
|
+
export type McpServerKind = 'self' | 'npx';
|
|
3
5
|
export interface ParsedArgs {
|
|
4
6
|
/** Resolved mode after dispatch (mutual-exclusivity already checked). */
|
|
5
7
|
mode: ModeKind;
|
|
6
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Positional argument, or undefined. Render = input path. Init = project name. Serve = input path.
|
|
10
|
+
* MCP install / uninstall = client id.
|
|
11
|
+
*/
|
|
7
12
|
positional?: string;
|
|
8
|
-
/** True if `--dry-run` / `-n` was passed (
|
|
13
|
+
/** True if `--dry-run` / `-n` was passed (render and MCP install / uninstall). */
|
|
9
14
|
dryRun: boolean;
|
|
10
15
|
/** Logging level. Verbose and quiet are mutually exclusive. */
|
|
11
16
|
logLevel: LogLevel;
|
|
@@ -63,6 +68,10 @@ export interface ParsedArgs {
|
|
|
63
68
|
diagnosticFormat?: 'text' | 'json';
|
|
64
69
|
template?: string;
|
|
65
70
|
root?: string;
|
|
71
|
+
/** `--scope` for --mcp-install / --mcp-uninstall; validated in parseArgv. */
|
|
72
|
+
scope?: McpScope;
|
|
73
|
+
/** `--server` for --mcp-install; validated in parseArgv. */
|
|
74
|
+
server?: McpServerKind;
|
|
66
75
|
}
|
|
67
76
|
/**
|
|
68
77
|
* Pure argument parser. Walks `argv` once, identifies mode flags, applies
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,QAAQ,GACd,QAAQ,GACR,OAAO,GACP,MAAM,GACN,KAAK,GACL,aAAa,GACb,eAAe,GACf,MAAM,GACN,SAAS,CAAC;AAEhB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAC1C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,UAAU;IACvB,yEAAyE;IACzE,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,MAAM,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,QAAQ,CAAC;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;kFAI8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IAKd,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAGnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAsN7D"}
|
package/dist/cli/args.js
CHANGED
|
@@ -36,6 +36,8 @@ export function parseArgv(argv) {
|
|
|
36
36
|
serve: { type: 'boolean' },
|
|
37
37
|
init: { type: 'boolean' },
|
|
38
38
|
mcp: { type: 'boolean' },
|
|
39
|
+
'mcp-install': { type: 'boolean' },
|
|
40
|
+
'mcp-uninstall': { type: 'boolean' },
|
|
39
41
|
'dry-run': { type: 'boolean', short: 'n' },
|
|
40
42
|
theme: { type: 'string', short: 't' },
|
|
41
43
|
// `--now <date>` overrides the now-line position; without it, the
|
|
@@ -59,6 +61,8 @@ export function parseArgv(argv) {
|
|
|
59
61
|
template: { type: 'string' },
|
|
60
62
|
// MCP
|
|
61
63
|
root: { type: 'string' },
|
|
64
|
+
scope: { type: 'string' },
|
|
65
|
+
server: { type: 'string' },
|
|
62
66
|
// Format-specific (m2c)
|
|
63
67
|
'page-size': { type: 'string' },
|
|
64
68
|
orientation: { type: 'string' },
|
|
@@ -116,6 +120,10 @@ export function parseArgv(argv) {
|
|
|
116
120
|
modes.push('init');
|
|
117
121
|
if (values.mcp === true)
|
|
118
122
|
modes.push('mcp');
|
|
123
|
+
if (values['mcp-install'] === true)
|
|
124
|
+
modes.push('mcp-install');
|
|
125
|
+
if (values['mcp-uninstall'] === true)
|
|
126
|
+
modes.push('mcp-uninstall');
|
|
119
127
|
if (modes.length > 1) {
|
|
120
128
|
throw new CliError(ExitCode.InputError, `nowline: --${modes[0]} and --${modes[1]} are mutually exclusive.`);
|
|
121
129
|
}
|
|
@@ -131,6 +139,14 @@ export function parseArgv(argv) {
|
|
|
131
139
|
.join(' ');
|
|
132
140
|
throw new CliError(ExitCode.InputError, `nowline: unexpected extra arguments: ${extras}.`);
|
|
133
141
|
}
|
|
142
|
+
const scope = stringOrUndefined(values.scope);
|
|
143
|
+
if (scope !== undefined && scope !== 'user' && scope !== 'project') {
|
|
144
|
+
throw new CliError(ExitCode.InputError, `nowline: invalid --scope "${scope}". Expected user or project.`);
|
|
145
|
+
}
|
|
146
|
+
const server = stringOrUndefined(values.server);
|
|
147
|
+
if (server !== undefined && server !== 'self' && server !== 'npx') {
|
|
148
|
+
throw new CliError(ExitCode.InputError, `nowline: invalid --server "${server}". Expected self or npx.`);
|
|
149
|
+
}
|
|
134
150
|
const rawDiagnosticFormat = stringOrUndefined(values['diagnostic-format']);
|
|
135
151
|
if (rawDiagnosticFormat !== undefined && !isDiagnosticFormat(rawDiagnosticFormat)) {
|
|
136
152
|
throw new CliError(ExitCode.InputError, `nowline: invalid --diagnostic-format "${rawDiagnosticFormat}". Expected text or json. Try --help for usage.`);
|
|
@@ -168,6 +184,8 @@ export function parseArgv(argv) {
|
|
|
168
184
|
start: stringOrUndefined(values.start),
|
|
169
185
|
locale: stringOrUndefined(values.locale),
|
|
170
186
|
root: stringOrUndefined(values.root),
|
|
187
|
+
scope,
|
|
188
|
+
server,
|
|
171
189
|
};
|
|
172
190
|
}
|
|
173
191
|
function stringOrUndefined(value) {
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AA8JA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -8,6 +8,7 @@ USAGE
|
|
|
8
8
|
nowline <input> [options]
|
|
9
9
|
nowline --serve <input> [options]
|
|
10
10
|
nowline --init [<name>]
|
|
11
|
+
nowline --mcp-install [<client>] [options]
|
|
11
12
|
nowline --version
|
|
12
13
|
nowline --help
|
|
13
14
|
|
|
@@ -34,6 +35,14 @@ MODE FLAGS (mutually exclusive)
|
|
|
34
35
|
exposing validate, render, export, and file tools.
|
|
35
36
|
Shares the same @nowline/mcp server code as
|
|
36
37
|
\`npx @nowline/mcp\`.
|
|
38
|
+
--mcp-install [<client>]
|
|
39
|
+
Register the MCP server with an agent: claude-code,
|
|
40
|
+
claude-desktop, cursor, vscode, codex, gemini,
|
|
41
|
+
antigravity, muse, opencode, copilot, windsurf, zed,
|
|
42
|
+
amp, goose, or all. Omitted: every agent found on this machine.
|
|
43
|
+
Re-running is safe; -n previews the change.
|
|
44
|
+
--mcp-uninstall [<client>]
|
|
45
|
+
Remove the server from the same configs.
|
|
37
46
|
-n, --dry-run Run the full pipeline (parse + validate + layout +
|
|
38
47
|
format) but skip the write step. Subsumes the old
|
|
39
48
|
'validate' verb. Exit 0 on success, 1 on errors.
|
|
@@ -108,6 +117,13 @@ SERVE OPTIONS
|
|
|
108
117
|
MCP OPTIONS
|
|
109
118
|
--root <dir> Allowed-root directory for file tools (default: cwd).
|
|
110
119
|
File paths are resolved and restricted to this root.
|
|
120
|
+
With --mcp-install, written into the registered
|
|
121
|
+
command.
|
|
122
|
+
--scope <s> --mcp-install target: user (default, every
|
|
123
|
+
project) or project (config files in cwd).
|
|
124
|
+
--server <s> What --mcp-install registers: self (default, this
|
|
125
|
+
nowline binary; needs no Node) or npx
|
|
126
|
+
(npx -y @nowline/mcp, tracks npm).
|
|
111
127
|
|
|
112
128
|
LOGGING (mutually exclusive)
|
|
113
129
|
-v, --verbose Print extra diagnostics to stderr.
|
|
@@ -129,6 +145,8 @@ EXAMPLES
|
|
|
129
145
|
nowline --init my-project # scaffold ./my-project.nowline
|
|
130
146
|
nowline --mcp # start MCP stdio server in cwd
|
|
131
147
|
nowline --mcp --root ./roadmaps # MCP server with custom root
|
|
148
|
+
nowline --mcp-install # register with every agent found
|
|
149
|
+
nowline --mcp-install cursor --scope project -n # preview .cursor/mcp.json
|
|
132
150
|
|
|
133
151
|
EXIT CODES
|
|
134
152
|
0 Success
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,sEAAsE;AACtE,oEAAoE;AACpE,2DAA2D;AAC3D,MAAM,SAAS,GAAG,WAAW,iBAAiB,EAAE
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,sEAAsE;AACtE,oEAAoE;AACpE,2DAA2D;AAC3D,MAAM,SAAS,GAAG,WAAW,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuJ/C,CAAC;AAEF,MAAM,UAAU,UAAU;IACtB,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,OAAO,GAAG,iBAAiB,EAAE,IAAI,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ParsedArgs } from '../cli/args.js';
|
|
2
|
+
import { type HostEnv } from '../mcp-install/host.js';
|
|
3
|
+
export interface McpInstallOptions {
|
|
4
|
+
args: ParsedArgs;
|
|
5
|
+
host?: HostEnv;
|
|
6
|
+
stdout?: (chunk: string) => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* `nowline --mcp-install [<client>]` / `--mcp-uninstall [<client>]`.
|
|
10
|
+
*
|
|
11
|
+
* Registers (or removes) the `nowline` MCP server in each harness's config.
|
|
12
|
+
* JSON configs are edited in place; Claude Code's user scope and Codex go
|
|
13
|
+
* through their own `mcp add`, since we can't safely edit ~/.claude.json or
|
|
14
|
+
* TOML; YAML and undocumented paths get a paste-ready snippet. One client
|
|
15
|
+
* failing doesn't stop the rest; the run then exits with OutputError.
|
|
16
|
+
*/
|
|
17
|
+
export declare function mcpInstallHandler({ args, host, stdout, }: McpInstallOptions): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=mcp-install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-install.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAejD,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAUrE,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAWD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EACpC,IAAI,EACJ,IAAsB,EACtB,MAEC,GACJ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BnC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { CliError, ExitCode } from '../io/exit-codes.js';
|
|
2
|
+
import { createLog } from '../io/log.js';
|
|
3
|
+
import { CLIENT_IDS, CLIENTS, commandLine, findClient, SERVER_NAME, } from '../mcp-install/clients.js';
|
|
4
|
+
import { createHostEnv } from '../mcp-install/host.js';
|
|
5
|
+
import { JsonConfigError, readConfigFile, removeEntry, upsertEntry, writeConfigFile, } from '../mcp-install/json-config.js';
|
|
6
|
+
import { resolveServer } from '../mcp-install/server-command.js';
|
|
7
|
+
/**
|
|
8
|
+
* `nowline --mcp-install [<client>]` / `--mcp-uninstall [<client>]`.
|
|
9
|
+
*
|
|
10
|
+
* Registers (or removes) the `nowline` MCP server in each harness's config.
|
|
11
|
+
* JSON configs are edited in place; Claude Code's user scope and Codex go
|
|
12
|
+
* through their own `mcp add`, since we can't safely edit ~/.claude.json or
|
|
13
|
+
* TOML; YAML and undocumented paths get a paste-ready snippet. One client
|
|
14
|
+
* failing doesn't stop the rest; the run then exits with OutputError.
|
|
15
|
+
*/
|
|
16
|
+
export async function mcpInstallHandler({ args, host = createHostEnv(), stdout = (chunk) => {
|
|
17
|
+
process.stdout.write(chunk);
|
|
18
|
+
}, }) {
|
|
19
|
+
const uninstall = args.mode === 'mcp-uninstall';
|
|
20
|
+
const flag = uninstall ? '--mcp-uninstall' : '--mcp-install';
|
|
21
|
+
const scope = args.scope ?? 'user';
|
|
22
|
+
const log = createLog(args.logLevel);
|
|
23
|
+
const out = (line) => stdout(`${line}\n`);
|
|
24
|
+
const clients = selectClients(args.positional, scope, flag, host, out);
|
|
25
|
+
const server = resolveServer(args.server ?? 'self', args.root, host);
|
|
26
|
+
if (!uninstall)
|
|
27
|
+
for (const warning of server.warnings)
|
|
28
|
+
log.notice(warning);
|
|
29
|
+
const run = { uninstall, dryRun: args.dryRun, scope, entry: server.entry, host, out };
|
|
30
|
+
const failed = [];
|
|
31
|
+
for (const client of clients) {
|
|
32
|
+
try {
|
|
33
|
+
applyTarget(client, run);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
if (!(err instanceof JsonConfigError || err instanceof ClientFailure))
|
|
37
|
+
throw err;
|
|
38
|
+
failed.push(client.id);
|
|
39
|
+
process.stderr.write(`nowline: ${client.id}: ${err.message}\n`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (failed.length > 0) {
|
|
43
|
+
throw new CliError(ExitCode.OutputError, `nowline: ${flag} failed for ${failed.join(', ')}.`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class ClientFailure extends Error {
|
|
47
|
+
}
|
|
48
|
+
function selectClients(requested, scope, flag, host, out) {
|
|
49
|
+
if (requested !== undefined && requested !== 'all') {
|
|
50
|
+
const client = findClient(requested);
|
|
51
|
+
if (!client) {
|
|
52
|
+
throw new CliError(ExitCode.InputError, `nowline: unknown client "${requested}". Expected one of: ${CLIENT_IDS.join(', ')}, all.`);
|
|
53
|
+
}
|
|
54
|
+
if (!client.scopes.includes(scope)) {
|
|
55
|
+
throw new CliError(ExitCode.InputError, `nowline: ${client.id} has no ${scope} config; use --scope ${client.scopes.join(' or ')}.`);
|
|
56
|
+
}
|
|
57
|
+
return [client];
|
|
58
|
+
}
|
|
59
|
+
const detected = CLIENTS.filter((client) => client.detect(host));
|
|
60
|
+
if (detected.length === 0) {
|
|
61
|
+
throw new CliError(ExitCode.InputError, `nowline: no supported agent found on this machine. Name one: nowline ${flag} <client>, where <client> is one of: ${CLIENT_IDS.join(', ')}.`);
|
|
62
|
+
}
|
|
63
|
+
return detected.filter((client) => {
|
|
64
|
+
if (client.scopes.includes(scope))
|
|
65
|
+
return true;
|
|
66
|
+
out(`${client.id}: skipped, it has no ${scope} config`);
|
|
67
|
+
return false;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function applyTarget(client, run) {
|
|
71
|
+
const target = client.target(run.scope, run.entry, run.host);
|
|
72
|
+
if (target.kind === 'json')
|
|
73
|
+
return applyJson(client, target, run);
|
|
74
|
+
if (target.kind === 'cli') {
|
|
75
|
+
if (run.host.findAllOnPath(target.binary).length === 0) {
|
|
76
|
+
return applyPrint(client, target.fallback, run);
|
|
77
|
+
}
|
|
78
|
+
return applyCli(client, target, run);
|
|
79
|
+
}
|
|
80
|
+
return applyPrint(client, target, run);
|
|
81
|
+
}
|
|
82
|
+
function applyJson(client, target, run) {
|
|
83
|
+
const existing = readConfigFile(target.path);
|
|
84
|
+
const edit = run.uninstall
|
|
85
|
+
? removeEntry(existing, target, run.entry)
|
|
86
|
+
: upsertEntry(existing, target, run.entry);
|
|
87
|
+
const where = target.path;
|
|
88
|
+
if (edit.change === 'unchanged')
|
|
89
|
+
return run.out(`${client.id}: already installed in ${where}`);
|
|
90
|
+
if (edit.change === 'absent')
|
|
91
|
+
return run.out(`${client.id}: not installed in ${where}`);
|
|
92
|
+
const [verb, object] = edit.change === 'created'
|
|
93
|
+
? ['create', where]
|
|
94
|
+
: edit.change === 'removed'
|
|
95
|
+
? ['remove', `${SERVER_NAME} from ${where}`]
|
|
96
|
+
: edit.change === 'added'
|
|
97
|
+
? ['add', `${SERVER_NAME} to ${where}`]
|
|
98
|
+
: ['update', `${SERVER_NAME} in ${where}`];
|
|
99
|
+
if (run.dryRun) {
|
|
100
|
+
run.out(`${client.id}: would ${verb} ${object}`);
|
|
101
|
+
if (edit.value !== undefined) {
|
|
102
|
+
run.out(indent(JSON.stringify({ [edit.keyPath.join('.')]: edit.value }, null, 2)));
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (edit.text !== undefined)
|
|
107
|
+
writeConfigFile(target.path, edit.text);
|
|
108
|
+
const hint = target.hint !== undefined && !run.uninstall ? `; ${target.hint}` : '';
|
|
109
|
+
run.out(`${client.id}: ${verb.endsWith('e') ? `${verb}d` : `${verb}ed`} ${object}${hint}`);
|
|
110
|
+
}
|
|
111
|
+
function applyCli(client, target, run) {
|
|
112
|
+
const remove = [target.binary, ...target.remove];
|
|
113
|
+
const add = [target.binary, ...target.add];
|
|
114
|
+
if (run.dryRun) {
|
|
115
|
+
run.out(`${client.id}: would run:`);
|
|
116
|
+
run.out(indent(commandLine(remove)));
|
|
117
|
+
if (!run.uninstall)
|
|
118
|
+
run.out(indent(commandLine(add)));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Remove first so a re-run replaces a stale entry instead of failing on a duplicate.
|
|
122
|
+
const removed = run.host.spawn(target.binary, target.remove);
|
|
123
|
+
if (run.uninstall) {
|
|
124
|
+
if (removed.status === 0) {
|
|
125
|
+
return run.out(`${client.id}: removed ${SERVER_NAME} (${commandLine(remove)})`);
|
|
126
|
+
}
|
|
127
|
+
return run.out(`${client.id}: nothing removed; ${commandLine(remove)} said: ${firstLine(removed.stderr || removed.stdout || removed.error)}`);
|
|
128
|
+
}
|
|
129
|
+
const added = run.host.spawn(target.binary, target.add);
|
|
130
|
+
if (added.status !== 0) {
|
|
131
|
+
const reason = firstLine(added.stderr || added.stdout || added.error);
|
|
132
|
+
throw new ClientFailure(`${commandLine(add)} failed${added.status !== null ? ` (exit ${added.status})` : ''}: ${reason}`);
|
|
133
|
+
}
|
|
134
|
+
run.out(`${client.id}: registered (${commandLine(add)})`);
|
|
135
|
+
}
|
|
136
|
+
function applyPrint(client, target, run) {
|
|
137
|
+
const step = run.uninstall ? target.uninstall : target.install;
|
|
138
|
+
run.out(`${client.id}: ${step.instructions}`);
|
|
139
|
+
if (step.snippet !== undefined)
|
|
140
|
+
run.out(indent(step.snippet));
|
|
141
|
+
}
|
|
142
|
+
function indent(text) {
|
|
143
|
+
return text
|
|
144
|
+
.split('\n')
|
|
145
|
+
.map((line) => ` ${line}`)
|
|
146
|
+
.join('\n');
|
|
147
|
+
}
|
|
148
|
+
function firstLine(text) {
|
|
149
|
+
return text?.trim().split('\n')[0] ?? 'no output';
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=mcp-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-install.js","sourceRoot":"","sources":["../../src/commands/mcp-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.0.0-dev.
|
|
1
|
+
export declare const CLI_VERSION = "0.0.0-dev.20261023052453.g9889213";
|
|
2
2
|
export interface CliBuild {
|
|
3
3
|
/** Short git SHA at build time, or empty when not in a git checkout. */
|
|
4
4
|
readonly sha: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Auto-generated by scripts/bundle-templates.mjs. Do not edit by hand.
|
|
2
|
-
export const CLI_VERSION = "0.0.0-dev.
|
|
2
|
+
export const CLI_VERSION = "0.0.0-dev.20261023052453.g9889213";
|
|
3
3
|
export const CLI_BUILD = {
|
|
4
|
-
"sha": "
|
|
4
|
+
"sha": "9889213",
|
|
5
5
|
"isRelease": false,
|
|
6
6
|
"isDirty": true
|
|
7
7
|
};
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { parseArgv } from './cli/args.js';
|
|
|
3
3
|
import { renderHelp, renderVersion } from './cli/help.js';
|
|
4
4
|
import { initHandler } from './commands/init.js';
|
|
5
5
|
import { mcpHandler } from './commands/mcp.js';
|
|
6
|
+
import { mcpInstallHandler } from './commands/mcp-install.js';
|
|
6
7
|
import { renderHandler } from './commands/render.js';
|
|
7
8
|
import { serveHandler } from './commands/serve.js';
|
|
8
9
|
import { CliError, ExitCode } from './io/exit-codes.js';
|
|
@@ -33,6 +34,9 @@ async function run() {
|
|
|
33
34
|
else if (parsed.mode === 'mcp') {
|
|
34
35
|
await mcpHandler({ args: parsed });
|
|
35
36
|
}
|
|
37
|
+
else if (parsed.mode === 'mcp-install' || parsed.mode === 'mcp-uninstall') {
|
|
38
|
+
await mcpInstallHandler({ args: parsed });
|
|
39
|
+
}
|
|
36
40
|
else {
|
|
37
41
|
await renderHandler({ args: parsed });
|
|
38
42
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAExD,KAAK,UAAU,GAAG;IACd,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,MAAoC,CAAC;IACzC,IAAI,CAAC;QACD,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/B,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC7B,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,QAAQ,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,eAAe,CAAC;AACpC,CAAC;AAED,GAAG,EAAE;KACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACpB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { HostEnv } from './host.js';
|
|
2
|
+
import type { ServerEntry } from './server-command.js';
|
|
3
|
+
export type Scope = 'user' | 'project';
|
|
4
|
+
/** The name every harness registers the server under, so tools surface as `mcp__nowline__*`. */
|
|
5
|
+
export declare const SERVER_NAME = "nowline";
|
|
6
|
+
/** A JSON / JSONC config file we edit in place. */
|
|
7
|
+
export interface JsonTarget {
|
|
8
|
+
kind: 'json';
|
|
9
|
+
path: string;
|
|
10
|
+
/** Where the entry goes and what it holds, decided after reading the existing document. */
|
|
11
|
+
place(entry: ServerEntry, doc: unknown): {
|
|
12
|
+
keyPath: string[];
|
|
13
|
+
value: unknown;
|
|
14
|
+
};
|
|
15
|
+
/** Top-level keys a newly created file starts with. */
|
|
16
|
+
seed?: Record<string, unknown>;
|
|
17
|
+
/** Shown after a successful install. */
|
|
18
|
+
hint?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A harness whose config we can't safely edit ourselves (Claude Code's
|
|
22
|
+
* ~/.claude.json, Codex's TOML): run its own `mcp add`, else print it.
|
|
23
|
+
*/
|
|
24
|
+
export interface CliTarget {
|
|
25
|
+
kind: 'cli';
|
|
26
|
+
binary: string;
|
|
27
|
+
add: string[];
|
|
28
|
+
remove: string[];
|
|
29
|
+
fallback: PrintTarget;
|
|
30
|
+
}
|
|
31
|
+
/** Paste-ready instructions, for configs we neither edit nor reach through a CLI. */
|
|
32
|
+
export interface PrintTarget {
|
|
33
|
+
kind: 'print';
|
|
34
|
+
install: {
|
|
35
|
+
instructions: string;
|
|
36
|
+
snippet: string;
|
|
37
|
+
};
|
|
38
|
+
uninstall: {
|
|
39
|
+
instructions: string;
|
|
40
|
+
snippet?: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export type Target = JsonTarget | CliTarget | PrintTarget;
|
|
44
|
+
export interface ClientDescriptor {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
scopes: readonly Scope[];
|
|
48
|
+
/** True when the harness looks installed (its CLI is on PATH or its config dir exists). */
|
|
49
|
+
detect(host: HostEnv): boolean;
|
|
50
|
+
target(scope: Scope, entry: ServerEntry, host: HostEnv): Target;
|
|
51
|
+
}
|
|
52
|
+
/** POSIX-shell quoting for printed commands; bare when nothing needs escaping. */
|
|
53
|
+
export declare function shellQuote(arg: string): string;
|
|
54
|
+
export declare function commandLine(argv: readonly string[]): string;
|
|
55
|
+
export declare const CLIENTS: readonly ClientDescriptor[];
|
|
56
|
+
export declare const CLIENT_IDS: readonly string[];
|
|
57
|
+
export declare function findClient(id: string): ClientDescriptor | undefined;
|
|
58
|
+
//# sourceMappingURL=clients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../src/mcp-install/clients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,gGAAgG;AAChG,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/E,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;CACzB;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,SAAS,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,2FAA2F;IAC3F,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CACnE;AA+CD,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE3D;AAoCD,eAAO,MAAM,OAAO,EAAE,SAAS,gBAAgB,EA2R9C,CAAC;AAgBF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAA6B,CAAC;AAEtE,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEnE"}
|