@nowline/cli 0.8.6 → 0.10.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.
- package/README.md +32 -9
- package/dist/cli/args.d.ts +20 -4
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +20 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +31 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/options.d.ts +74 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +209 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -3
- package/dist/commands/init.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/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +7 -12
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/render.d.ts +7 -0
- package/dist/commands/render.d.ts.map +1 -1
- package/dist/commands/render.js +161 -155
- package/dist/commands/render.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +87 -60
- package/dist/commands/serve.js.map +1 -1
- package/dist/diagnostics/adapt.d.ts +12 -1
- package/dist/diagnostics/adapt.d.ts.map +1 -1
- package/dist/diagnostics/adapt.js +53 -1
- package/dist/diagnostics/adapt.js.map +1 -1
- package/dist/diagnostics/model.d.ts +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.d.ts.map +1 -1
- package/dist/generated/version.js +2 -2
- package/dist/generated/version.js.map +1 -1
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/locale.js +2 -5
- package/dist/i18n/locale.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/io/config.d.ts +1 -1
- package/dist/io/config.d.ts.map +1 -1
- package/dist/io/config.js +1 -1
- package/dist/io/config.js.map +1 -1
- package/dist/io/log.d.ts +17 -0
- package/dist/io/log.d.ts.map +1 -0
- package/dist/io/log.js +16 -0
- package/dist/io/log.js.map +1 -0
- 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 +248 -19
- package/man/fr/nowline.5 +819 -45
- package/man/nowline.1 +193 -18
- package/man/nowline.5 +764 -36
- package/package.json +19 -19
- package/src/cli/args.ts +55 -5
- package/src/cli/help.ts +31 -3
- package/src/cli/options.ts +286 -0
- package/src/commands/init.ts +2 -3
- package/src/commands/mcp-install.ts +211 -0
- package/src/commands/mcp.ts +10 -14
- package/src/commands/render.ts +198 -195
- package/src/commands/serve.ts +102 -74
- package/src/diagnostics/adapt.ts +62 -0
- package/src/diagnostics/model.ts +1 -1
- package/src/generated/version.ts +2 -2
- package/src/i18n/locale.ts +2 -6
- package/src/index.ts +3 -0
- package/src/io/config.ts +0 -1
- package/src/io/log.ts +33 -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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAOjD,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B5E;AA6BD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU5E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defaultInitOutputPath, initNameHasIncompatibleExtension } from '../cli/output-path.js';
|
|
2
2
|
import { TEMPLATE_NAMES, TEMPLATES } from '../generated/templates.js';
|
|
3
3
|
import { CliError, ExitCode } from '../io/exit-codes.js';
|
|
4
|
+
import { createLog } from '../io/log.js';
|
|
4
5
|
import { writeOutput } from '../io/write.js';
|
|
5
6
|
/**
|
|
6
7
|
* `--init` mode handler. Scaffolds a starter `.nowline` file in cwd.
|
|
@@ -29,9 +30,7 @@ export async function initHandler(options) {
|
|
|
29
30
|
const rendered = applyName(templateText, titleName);
|
|
30
31
|
const outputPath = args.output ?? defaultInitOutputPath({ name: projectName, cwd });
|
|
31
32
|
await writeOutput(outputPath, rendered, 'text', { cwd });
|
|
32
|
-
|
|
33
|
-
process.stderr.write(`nowline: wrote ${outputPath}\n`);
|
|
34
|
-
}
|
|
33
|
+
createLog(args.logLevel).verbose(`nowline: wrote ${outputPath}`);
|
|
35
34
|
}
|
|
36
35
|
function parseTemplateName(raw) {
|
|
37
36
|
const value = (raw ?? '').toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQ7C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAEnC,IACI,UAAU,KAAK,SAAS;QACxB,UAAU,KAAK,EAAE;QACjB,gCAAgC,CAAC,UAAU,CAAC,EAC9C,CAAC;QACC,MAAM,IAAI,QAAQ,CACd,QAAQ,CAAC,UAAU,EACnB,uDAAuD,UAAU,IAAI,CACxE,CAAC;IACN,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,qBAAqB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAEpF,MAAM,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAEzD,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC9E"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createServer } from 'node:http';
|
|
2
|
-
import { NodeStreamableHTTPServerTransport } from '@modelcontextprotocol/node';
|
|
3
2
|
import { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
|
|
3
|
+
import { createMcpHttpHandler } from '@nowline/mcp/http';
|
|
4
4
|
import { createMcpServer } from '@nowline/mcp/server';
|
|
5
|
+
import { createLog } from '../io/log.js';
|
|
5
6
|
/**
|
|
6
7
|
* `nowline --mcp` handler.
|
|
7
8
|
*
|
|
@@ -15,24 +16,18 @@ import { createMcpServer } from '@nowline/mcp/server';
|
|
|
15
16
|
* Runs until the process receives SIGINT/SIGTERM or the client closes stdin.
|
|
16
17
|
*/
|
|
17
18
|
export async function mcpHandler({ args }) {
|
|
18
|
-
|
|
19
|
-
const
|
|
19
|
+
// Without --root the server follows the client's MCP roots, else cwd.
|
|
20
|
+
const root = args.root;
|
|
20
21
|
const portStr = args.port;
|
|
21
22
|
if (portStr !== undefined) {
|
|
22
23
|
const port = parseInt(portStr, 10);
|
|
23
24
|
if (!Number.isFinite(port) || port < 1 || port > 65535) {
|
|
24
25
|
throw new Error(`nowline: --port must be a number between 1 and 65535 (got ${portStr}).`);
|
|
25
26
|
}
|
|
26
|
-
const
|
|
27
|
-
sessionIdGenerator: undefined,
|
|
28
|
-
});
|
|
29
|
-
await server.connect(transport);
|
|
30
|
-
const httpServer = createServer(async (req, res) => {
|
|
31
|
-
await transport.handleRequest(req, res);
|
|
32
|
-
});
|
|
27
|
+
const httpServer = createServer(createMcpHttpHandler(() => createMcpServer({ allowedRoot: root })));
|
|
33
28
|
await new Promise((resolve) => {
|
|
34
29
|
httpServer.listen(port, '127.0.0.1', () => {
|
|
35
|
-
|
|
30
|
+
createLog(args.logLevel).notice(`nowline: MCP Streamable HTTP listening on http://127.0.0.1:${port}`);
|
|
36
31
|
});
|
|
37
32
|
httpServer.on('close', resolve);
|
|
38
33
|
process.on('SIGINT', () => httpServer.close());
|
|
@@ -41,7 +36,7 @@ export async function mcpHandler({ args }) {
|
|
|
41
36
|
}
|
|
42
37
|
else {
|
|
43
38
|
const transport = new StdioServerTransport();
|
|
44
|
-
await
|
|
39
|
+
await createMcpServer({ allowedRoot: root }).connect(transport);
|
|
45
40
|
await new Promise((resolve) => {
|
|
46
41
|
transport.onclose = resolve;
|
|
47
42
|
});
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAE,IAAI,EAAwB;IAC3D,sEAAsE;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACX,6DAA6D,OAAO,IAAI,CAC3E,CAAC;QACN,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAC3B,oBAAoB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrE,CAAC;QAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAChC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;gBACtC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC3B,8DAA8D,IAAI,EAAE,CACvE,CAAC;YACN,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAChC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { AssetResolver } from '@nowline/renderer';
|
|
2
2
|
import type { ParsedArgs } from '../cli/args.js';
|
|
3
|
+
import { type LoadConfigResult } from '../io/config.js';
|
|
4
|
+
import { type Log } from '../io/log.js';
|
|
3
5
|
export interface RenderHandlerOptions {
|
|
4
6
|
args: ParsedArgs;
|
|
5
7
|
/** Test seam: cwd override. Defaults to `process.cwd()`. */
|
|
@@ -11,5 +13,10 @@ export interface RenderHandlerOptions {
|
|
|
11
13
|
* step), `--input-format`, and `.json` AST input.
|
|
12
14
|
*/
|
|
13
15
|
export declare function renderHandler(options: RenderHandlerOptions): Promise<void>;
|
|
16
|
+
export declare function loadConfigFor(inputArg: string, cwd: string): Promise<LoadConfigResult>;
|
|
17
|
+
/** Under `-q`, text-mode diagnostics keep only errors. Shared with serve. */
|
|
18
|
+
export declare function errorsOnlyWhenQuiet<T extends {
|
|
19
|
+
severity: string;
|
|
20
|
+
}>(diagnostics: T[], log: Log): T[];
|
|
14
21
|
export declare function createAssetResolver(assetRoot: string): AssetResolver;
|
|
15
22
|
//# sourceMappingURL=render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA0BjD,OAAO,EAAE,KAAK,gBAAgB,EAAc,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAInD,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGhF;AA2XD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAW5F;AAyCD,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC9D,WAAW,EAAE,CAAC,EAAE,EAChB,GAAG,EAAE,GAAG,GACT,CAAC,EAAE,CAEL;AAID,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAWpE"}
|