@nowline/cli 0.0.0-dev.20260601071750.g04bdff9 → 0.0.0-dev.20260603150914.g70caedb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/args.d.ts +2 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +7 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +10 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/commands/mcp.d.ts +12 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +20 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/render.d.ts +1 -1
- package/dist/commands/render.d.ts.map +1 -1
- package/dist/commands/render.js +101 -137
- package/dist/commands/render.js.map +1 -1
- 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/resvg.wasm +0 -0
- package/package.json +17 -12
- package/scripts/bun-entry.mjs +25 -0
- package/scripts/compile.mjs +11 -6
- package/scripts/copy-wasm.mjs +23 -0
- package/src/cli/args.ts +11 -2
- package/src/cli/help.ts +10 -0
- package/src/commands/mcp.ts +21 -0
- package/src/commands/render.ts +131 -156
- package/src/generated/version.ts +2 -2
- package/src/index.ts +3 -0
package/dist/cli/args.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ModeKind = 'render' | 'serve' | 'init' | 'help' | 'version';
|
|
1
|
+
export type ModeKind = 'render' | 'serve' | 'init' | 'mcp' | 'help' | 'version';
|
|
2
2
|
export interface ParsedArgs {
|
|
3
3
|
/** Resolved mode after dispatch (mutual-exclusivity already checked). */
|
|
4
4
|
mode: ModeKind;
|
|
@@ -42,6 +42,7 @@ export interface ParsedArgs {
|
|
|
42
42
|
open: boolean;
|
|
43
43
|
diagnosticFormat?: string;
|
|
44
44
|
template?: string;
|
|
45
|
+
root?: string;
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
48
|
* 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,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,UAAU;IACvB,yEAAyE;IACzE,IAAI,EAAE,QAAQ,CAAC;IACf,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,MAAM,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAGzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;8CAI0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,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,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;IAGd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA4K7D"}
|
package/dist/cli/args.js
CHANGED
|
@@ -33,6 +33,7 @@ export function parseArgv(argv) {
|
|
|
33
33
|
'input-format': { type: 'string' },
|
|
34
34
|
serve: { type: 'boolean' },
|
|
35
35
|
init: { type: 'boolean' },
|
|
36
|
+
mcp: { type: 'boolean' },
|
|
36
37
|
'dry-run': { type: 'boolean', short: 'n' },
|
|
37
38
|
theme: { type: 'string', short: 't' },
|
|
38
39
|
// `--now <date>` overrides the now-line position; without it, the
|
|
@@ -50,6 +51,8 @@ export function parseArgv(argv) {
|
|
|
50
51
|
open: { type: 'boolean' },
|
|
51
52
|
'diagnostic-format': { type: 'string' },
|
|
52
53
|
template: { type: 'string' },
|
|
54
|
+
// MCP
|
|
55
|
+
root: { type: 'string' },
|
|
53
56
|
// Format-specific (m2c)
|
|
54
57
|
'page-size': { type: 'string' },
|
|
55
58
|
orientation: { type: 'string' },
|
|
@@ -102,12 +105,14 @@ export function parseArgv(argv) {
|
|
|
102
105
|
modes.push('serve');
|
|
103
106
|
if (values.init === true)
|
|
104
107
|
modes.push('init');
|
|
108
|
+
if (values.mcp === true)
|
|
109
|
+
modes.push('mcp');
|
|
105
110
|
if (modes.length > 1) {
|
|
106
111
|
throw new CliError(ExitCode.InputError, `nowline: --${modes[0]} and --${modes[1]} are mutually exclusive.`);
|
|
107
112
|
}
|
|
108
113
|
const dryRun = values['dry-run'] === true;
|
|
109
114
|
const mode = modes[0] ?? 'render';
|
|
110
|
-
if (dryRun && (mode === 'serve' || mode === 'init')) {
|
|
115
|
+
if (dryRun && (mode === 'serve' || mode === 'init' || mode === 'mcp')) {
|
|
111
116
|
throw new CliError(ExitCode.InputError, `nowline: --dry-run cannot be combined with --${mode}.`);
|
|
112
117
|
}
|
|
113
118
|
if (positionals.length > 1) {
|
|
@@ -146,6 +151,7 @@ export function parseArgv(argv) {
|
|
|
146
151
|
headless: values.headless === true,
|
|
147
152
|
start: stringOrUndefined(values.start),
|
|
148
153
|
locale: stringOrUndefined(values.locale),
|
|
154
|
+
root: stringOrUndefined(values.root),
|
|
149
155
|
};
|
|
150
156
|
}
|
|
151
157
|
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,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":"AA+FA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -30,6 +30,10 @@ MODE FLAGS (mutually exclusive)
|
|
|
30
30
|
rendered output to disk on each rebuild.
|
|
31
31
|
--init [<name>] Scaffold a starter .nowline file in cwd. Positional
|
|
32
32
|
becomes project name; .nowline appended if missing.
|
|
33
|
+
--mcp Start a Model Context Protocol (MCP) stdio server
|
|
34
|
+
exposing validate, render, export, and file tools.
|
|
35
|
+
Shares the same @nowline/mcp server code as
|
|
36
|
+
\`npx @nowline/mcp\`.
|
|
33
37
|
-n, --dry-run Run the full pipeline (parse + validate + layout +
|
|
34
38
|
format) but skip the write step. Subsumes the old
|
|
35
39
|
'validate' verb. Exit 0 on success, 1 on errors.
|
|
@@ -56,6 +60,10 @@ SERVE OPTIONS
|
|
|
56
60
|
--host <host> Bind address (default: 127.0.0.1).
|
|
57
61
|
--open Open the browser on start.
|
|
58
62
|
|
|
63
|
+
MCP OPTIONS
|
|
64
|
+
--root <dir> Allowed-root directory for file tools (default: cwd).
|
|
65
|
+
File paths are resolved and restricted to this root.
|
|
66
|
+
|
|
59
67
|
LOGGING (mutually exclusive)
|
|
60
68
|
-v, --verbose Print extra diagnostics to stderr.
|
|
61
69
|
-q, --quiet Suppress non-error stderr.
|
|
@@ -74,6 +82,8 @@ EXAMPLES
|
|
|
74
82
|
nowline roadmap.nowline --dry-run # validate-only
|
|
75
83
|
nowline roadmap.nowline --serve -p 8080 # live preview
|
|
76
84
|
nowline --init my-project # scaffold ./my-project.nowline
|
|
85
|
+
nowline --mcp # start MCP stdio server in cwd
|
|
86
|
+
nowline --mcp --root ./roadmaps # MCP server with custom root
|
|
77
87
|
|
|
78
88
|
EXIT CODES
|
|
79
89
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwF/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,12 @@
|
|
|
1
|
+
import type { ParsedArgs } from '../cli/args.js';
|
|
2
|
+
/**
|
|
3
|
+
* `nowline --mcp` handler.
|
|
4
|
+
*
|
|
5
|
+
* Starts a Model Context Protocol stdio server sharing the same @nowline/mcp
|
|
6
|
+
* server factory as `npx @nowline/mcp`. Runs until the process receives
|
|
7
|
+
* SIGINT/SIGTERM or the client closes stdin.
|
|
8
|
+
*/
|
|
9
|
+
export declare function mcpHandler({ args }: {
|
|
10
|
+
args: ParsedArgs;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
2
|
+
import { createMcpServer } from '@nowline/mcp/server';
|
|
3
|
+
/**
|
|
4
|
+
* `nowline --mcp` handler.
|
|
5
|
+
*
|
|
6
|
+
* Starts a Model Context Protocol stdio server sharing the same @nowline/mcp
|
|
7
|
+
* server factory as `npx @nowline/mcp`. Runs until the process receives
|
|
8
|
+
* SIGINT/SIGTERM or the client closes stdin.
|
|
9
|
+
*/
|
|
10
|
+
export async function mcpHandler({ args }) {
|
|
11
|
+
const root = args.root ?? process.cwd();
|
|
12
|
+
const server = createMcpServer({ allowedRoot: root });
|
|
13
|
+
const transport = new StdioServerTransport();
|
|
14
|
+
await server.connect(transport);
|
|
15
|
+
// Keep alive: the transport closes when stdin closes or the process is signalled.
|
|
16
|
+
await new Promise((resolve) => {
|
|
17
|
+
transport.onclose = resolve;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAE,IAAI,EAAwB;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,kFAAkF;IAClF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAChC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -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":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAwBjD,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,CA4FhF;AA+XD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAWpE"}
|
package/dist/commands/render.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { promises as fs } from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { exportDocument, } from '@nowline/export';
|
|
4
4
|
import { lengthToPoints, parseLength } from '@nowline/export-core';
|
|
5
|
-
import {
|
|
6
|
-
import { renderSvg } from '@nowline/renderer';
|
|
5
|
+
import { normalizeThemeName } from '@nowline/layout';
|
|
7
6
|
import { FormatResolutionError, isInputFormat, resolveFormat, } from '../cli/formats.js';
|
|
8
7
|
import { resolveRenderOutputPath } from '../cli/output-path.js';
|
|
9
8
|
import { parseNowlineJson } from '../convert/parse-json.js';
|
|
10
9
|
import { printNowlineFile } from '../convert/printer.js';
|
|
11
10
|
import { serializeToJson } from '../convert/schema.js';
|
|
12
|
-
import {
|
|
11
|
+
import { parseSource } from '../core/parse.js';
|
|
13
12
|
import { formatDiagnostics } from '../diagnostics/index.js';
|
|
14
13
|
import { describeContentLocaleSource, operatorLocale, readDirectiveLocale, resolveLocaleOverride, } from '../i18n/locale.js';
|
|
15
14
|
import { loadConfig } from '../io/config.js';
|
|
@@ -125,67 +124,53 @@ function resolveInputFormat(inputArg, override) {
|
|
|
125
124
|
return 'json';
|
|
126
125
|
return 'nowline';
|
|
127
126
|
}
|
|
127
|
+
const BINARY_FORMATS = new Set(['png', 'pdf', 'xlsx']);
|
|
128
|
+
const FONT_FORMATS = new Set(['png', 'pdf']);
|
|
128
129
|
async function produce(args) {
|
|
129
|
-
|
|
130
|
-
return { rendered: await produceJson(args), isBinary: false };
|
|
131
|
-
}
|
|
130
|
+
// `nowline` canonical-text format is not part of ExportFormat; handle here.
|
|
132
131
|
if (args.format === 'nowline') {
|
|
133
132
|
return { rendered: await produceCanonicalNowline(args), isBinary: false };
|
|
134
133
|
}
|
|
135
|
-
//
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
134
|
+
// Convert JSON-AST input to DSL text before handing to the kernel.
|
|
135
|
+
const sourceText = args.inputFormat === 'json'
|
|
136
|
+
? jsonToNowlineText(args.contents, args.displayPath)
|
|
137
|
+
: args.contents;
|
|
138
|
+
// Pre-validate with locale-aware diagnostic formatting so validation
|
|
139
|
+
// errors reach the operator in their locale. The kernel will re-parse
|
|
140
|
+
// the same source below — double work accepted in exchange for faithful
|
|
141
|
+
// stderr output.
|
|
142
|
+
await parseAndValidate(sourceText, args);
|
|
143
|
+
const assetRoot = args.assetRoot
|
|
144
|
+
? path.resolve(args.assetRoot)
|
|
145
|
+
: path.dirname(args.absInputPath);
|
|
146
|
+
const host = createNodeHostEnv(assetRoot);
|
|
147
|
+
// Resolve fonts lazily — only for formats that rasterize or embed them.
|
|
148
|
+
let fonts;
|
|
149
|
+
if (FONT_FORMATS.has(args.format)) {
|
|
150
|
+
fonts = await resolveNodeFonts(args);
|
|
143
151
|
}
|
|
152
|
+
const kernelInputs = {
|
|
153
|
+
sourcePath: args.absInputPath,
|
|
154
|
+
today: args.today,
|
|
155
|
+
locale: args.locale ?? 'und',
|
|
156
|
+
theme: args.theme,
|
|
157
|
+
fonts,
|
|
158
|
+
width: args.width,
|
|
159
|
+
noLinks: args.noLinks,
|
|
160
|
+
strict: args.strict,
|
|
161
|
+
pageSize: args.pageSize,
|
|
162
|
+
orientation: parseOrientation(args.orientation),
|
|
163
|
+
marginPt: parseMargin(args.margin),
|
|
164
|
+
pngScale: parseScale(args.scale),
|
|
165
|
+
msprojStart: args.start,
|
|
166
|
+
};
|
|
144
167
|
try {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const mod = await import('@nowline/export-mermaid');
|
|
152
|
-
const md = mod.exportMermaid(stage.exportInputs);
|
|
153
|
-
return { rendered: md, isBinary: false };
|
|
154
|
-
}
|
|
155
|
-
if (args.format === 'msproj') {
|
|
156
|
-
const mod = await import('@nowline/export-msproj');
|
|
157
|
-
const xml = mod.exportMsProjXml(stage.exportInputs, {
|
|
158
|
-
startDate: args.start,
|
|
159
|
-
});
|
|
160
|
-
return { rendered: xml, isBinary: false };
|
|
161
|
-
}
|
|
162
|
-
if (args.format === 'png') {
|
|
163
|
-
const fonts = await stage.fontPair();
|
|
164
|
-
const mod = await import('@nowline/export-png');
|
|
165
|
-
const png = await mod.exportPng(stage.exportInputs, stage.svg, {
|
|
166
|
-
scale: parseScale(args.scale),
|
|
167
|
-
fonts,
|
|
168
|
-
});
|
|
169
|
-
return { rendered: png, isBinary: true };
|
|
170
|
-
}
|
|
171
|
-
if (args.format === 'pdf') {
|
|
172
|
-
const fonts = await stage.fontPair();
|
|
173
|
-
const mod = await import('@nowline/export-pdf');
|
|
174
|
-
const pdf = await mod.exportPdf(stage.exportInputs, stage.svg, {
|
|
175
|
-
pageSize: args.pageSize,
|
|
176
|
-
orientation: parseOrientation(args.orientation),
|
|
177
|
-
marginPt: parseMargin(args.margin),
|
|
178
|
-
fonts,
|
|
179
|
-
});
|
|
180
|
-
return { rendered: pdf, isBinary: true };
|
|
181
|
-
}
|
|
182
|
-
if (args.format === 'xlsx') {
|
|
183
|
-
const mod = await import('@nowline/export-xlsx');
|
|
184
|
-
const xlsx = await mod.exportXlsx(stage.exportInputs, {
|
|
185
|
-
generated: args.today,
|
|
186
|
-
});
|
|
187
|
-
return { rendered: xlsx, isBinary: true };
|
|
188
|
-
}
|
|
168
|
+
const bytes = await exportDocument(sourceText, args.format, kernelInputs, host);
|
|
169
|
+
const isBinary = BINARY_FORMATS.has(args.format);
|
|
170
|
+
const rendered = isBinary
|
|
171
|
+
? bytes
|
|
172
|
+
: new TextDecoder('utf-8').decode(bytes);
|
|
173
|
+
return { rendered, isBinary };
|
|
189
174
|
}
|
|
190
175
|
catch (err) {
|
|
191
176
|
if (err instanceof CliError)
|
|
@@ -193,19 +178,64 @@ async function produce(args) {
|
|
|
193
178
|
const message = err instanceof Error ? err.message : String(err);
|
|
194
179
|
throw new CliError(ExitCode.OutputError, `nowline: ${args.format} export failed: ${message}`);
|
|
195
180
|
}
|
|
196
|
-
throw new CliError(ExitCode.InputError, `nowline: unsupported format "${args.format}".`);
|
|
197
181
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
182
|
+
// ---- Node HostEnv -----------------------------------------------------------
|
|
183
|
+
function createNodeHostEnv(assetRoot) {
|
|
184
|
+
const root = path.resolve(assetRoot);
|
|
185
|
+
return {
|
|
186
|
+
readSource: async (absPath) => {
|
|
187
|
+
return await fs.readFile(absPath, 'utf-8');
|
|
188
|
+
},
|
|
189
|
+
readAsset: async (ref) => {
|
|
190
|
+
const absPath = path.resolve(root, ref);
|
|
191
|
+
if (!absPath.startsWith(root + path.sep) && absPath !== root) {
|
|
192
|
+
throw new Error(`Asset ${ref} escapes asset-root ${assetRoot}`);
|
|
193
|
+
}
|
|
194
|
+
const bytes = await fs.readFile(absPath);
|
|
195
|
+
return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
196
|
+
},
|
|
197
|
+
loadWasm: async () => {
|
|
198
|
+
// Two code paths:
|
|
199
|
+
//
|
|
200
|
+
// 1. Bun compiled binary: scripts/bun-entry.mjs imports
|
|
201
|
+
// dist/resvg.wasm via `with { type: 'file' }` (the only Bun
|
|
202
|
+
// pattern the bundler embeds) and stashes the VFS path in
|
|
203
|
+
// globalThis.__RESVG_WASM_PATH__. Read it with Bun.file().
|
|
204
|
+
//
|
|
205
|
+
// 2. Plain Node.js (dev, tests, uncompiled dist/index.js run):
|
|
206
|
+
// dist/resvg.wasm is copied by scripts/copy-wasm.mjs (postbuild).
|
|
207
|
+
// Use fs.readFile via a new URL relative to this module.
|
|
208
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
209
|
+
const bunWasmPath = globalThis.__RESVG_WASM_PATH__;
|
|
210
|
+
if (bunWasmPath) {
|
|
211
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
212
|
+
return globalThis.Bun.file(bunWasmPath).arrayBuffer();
|
|
213
|
+
}
|
|
214
|
+
const wasmUrl = new URL('../resvg.wasm', import.meta.url);
|
|
215
|
+
const bytes = await fs.readFile(wasmUrl);
|
|
216
|
+
return bytes.buffer;
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// ---- Font resolution --------------------------------------------------------
|
|
221
|
+
async function resolveNodeFonts(args) {
|
|
222
|
+
const { resolveFonts } = await import('@nowline/export-core');
|
|
223
|
+
const result = await resolveFonts({
|
|
224
|
+
fontSans: args.fontSans,
|
|
225
|
+
fontMono: args.fontMono,
|
|
226
|
+
headless: args.headless,
|
|
227
|
+
});
|
|
228
|
+
if (args.strict) {
|
|
229
|
+
if (result.sansFellBackToBundled) {
|
|
230
|
+
process.stderr.write('warning: sans font fell back to bundled DejaVu (no platform font found)\n');
|
|
231
|
+
}
|
|
232
|
+
if (result.monoFellBackToBundled) {
|
|
233
|
+
process.stderr.write('warning: mono font fell back to bundled DejaVu (no platform font found)\n');
|
|
234
|
+
}
|
|
205
235
|
}
|
|
206
|
-
|
|
207
|
-
return JSON.stringify(serializeToJson(parsed.document, args.contents), null, 2);
|
|
236
|
+
return { sans: result.sans, mono: result.mono };
|
|
208
237
|
}
|
|
238
|
+
// ---- nowline canonical-text format (not part of ExportFormat) ---------------
|
|
209
239
|
async function produceCanonicalNowline(args) {
|
|
210
240
|
if (args.inputFormat === 'json') {
|
|
211
241
|
const { ast } = parseNowlineJson(args.contents, args.displayPath);
|
|
@@ -215,74 +245,7 @@ async function produceCanonicalNowline(args) {
|
|
|
215
245
|
const doc = serializeToJson(parsed.document, args.contents);
|
|
216
246
|
return printNowlineFile(doc.ast);
|
|
217
247
|
}
|
|
218
|
-
|
|
219
|
-
const parsed = await parseAndValidate(args.inputFormat === 'json'
|
|
220
|
-
? jsonToNowlineText(args.contents, args.displayPath)
|
|
221
|
-
: args.contents, args);
|
|
222
|
-
const resolved = await resolveIncludes(parsed.ast, args.absInputPath, {
|
|
223
|
-
services: getServices().Nowline,
|
|
224
|
-
});
|
|
225
|
-
for (const diag of resolved.diagnostics) {
|
|
226
|
-
if (diag.severity === 'error') {
|
|
227
|
-
process.stderr.write(`${diag.sourcePath}: ${diag.message}\n`);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
if (resolved.diagnostics.some((d) => d.severity === 'error')) {
|
|
231
|
-
throw new CliError(ExitCode.ValidationError, '');
|
|
232
|
-
}
|
|
233
|
-
const model = layoutRoadmap(parsed.ast, resolved, {
|
|
234
|
-
theme: args.theme,
|
|
235
|
-
today: args.today,
|
|
236
|
-
width: args.width,
|
|
237
|
-
locale: args.locale,
|
|
238
|
-
});
|
|
239
|
-
const assetRoot = args.assetRoot
|
|
240
|
-
? path.resolve(args.assetRoot)
|
|
241
|
-
: path.dirname(args.absInputPath);
|
|
242
|
-
const resolver = createAssetResolver(assetRoot);
|
|
243
|
-
const warnings = [];
|
|
244
|
-
const svg = await renderSvg(model, {
|
|
245
|
-
assetResolver: resolver,
|
|
246
|
-
noLinks: args.noLinks,
|
|
247
|
-
strict: args.strict,
|
|
248
|
-
warn: (msg) => warnings.push(msg),
|
|
249
|
-
});
|
|
250
|
-
for (const w of warnings) {
|
|
251
|
-
process.stderr.write(`warning: ${w}\n`);
|
|
252
|
-
}
|
|
253
|
-
let cachedFonts;
|
|
254
|
-
const fontPair = async () => {
|
|
255
|
-
if (cachedFonts)
|
|
256
|
-
return cachedFonts;
|
|
257
|
-
const mod = await import('@nowline/export-core');
|
|
258
|
-
const result = await mod.resolveFonts({
|
|
259
|
-
fontSans: args.fontSans,
|
|
260
|
-
fontMono: args.fontMono,
|
|
261
|
-
headless: args.headless,
|
|
262
|
-
});
|
|
263
|
-
if (args.strict) {
|
|
264
|
-
if (result.sansFellBackToBundled) {
|
|
265
|
-
process.stderr.write('warning: sans font fell back to bundled DejaVu (no platform font found)\n');
|
|
266
|
-
}
|
|
267
|
-
if (result.monoFellBackToBundled) {
|
|
268
|
-
process.stderr.write('warning: mono font fell back to bundled DejaVu (no platform font found)\n');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
cachedFonts = { sans: result.sans, mono: result.mono };
|
|
272
|
-
return cachedFonts;
|
|
273
|
-
};
|
|
274
|
-
return {
|
|
275
|
-
svg,
|
|
276
|
-
exportInputs: {
|
|
277
|
-
ast: parsed.ast,
|
|
278
|
-
resolved,
|
|
279
|
-
model,
|
|
280
|
-
sourcePath: args.displayPath,
|
|
281
|
-
today: args.today,
|
|
282
|
-
},
|
|
283
|
-
fontPair,
|
|
284
|
-
};
|
|
285
|
-
}
|
|
248
|
+
// ---- Shared helpers ---------------------------------------------------------
|
|
286
249
|
function jsonToNowlineText(contents, displayPath) {
|
|
287
250
|
const { ast } = parseNowlineJson(contents, displayPath);
|
|
288
251
|
return printNowlineFile(ast);
|
|
@@ -409,6 +372,7 @@ function emitDiagnostics(diagnostics, source, displayPath, operatorLocale) {
|
|
|
409
372
|
if (rendered)
|
|
410
373
|
process.stderr.write(`${rendered}\n`);
|
|
411
374
|
}
|
|
375
|
+
// ---- Asset resolver (still used by serve.ts) --------------------------------
|
|
412
376
|
export function createAssetResolver(assetRoot) {
|
|
413
377
|
const root = path.resolve(assetRoot);
|
|
414
378
|
return async (ref) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.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.20260603150914.g70caedb";
|
|
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.20260603150914.g70caedb";
|
|
3
3
|
export const CLI_BUILD = {
|
|
4
|
-
"sha": "
|
|
4
|
+
"sha": "70caedb",
|
|
5
5
|
"isRelease": false,
|
|
6
6
|
"isDirty": true
|
|
7
7
|
};
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { parseArgv } from './cli/args.js';
|
|
3
3
|
import { renderHelp, renderVersion } from './cli/help.js';
|
|
4
4
|
import { initHandler } from './commands/init.js';
|
|
5
|
+
import { mcpHandler } from './commands/mcp.js';
|
|
5
6
|
import { renderHandler } from './commands/render.js';
|
|
6
7
|
import { serveHandler } from './commands/serve.js';
|
|
7
8
|
import { CliError, ExitCode } from './io/exit-codes.js';
|
|
@@ -29,6 +30,9 @@ async function run() {
|
|
|
29
30
|
else if (parsed.mode === 'serve') {
|
|
30
31
|
await serveHandler({ args: parsed });
|
|
31
32
|
}
|
|
33
|
+
else if (parsed.mode === 'mcp') {
|
|
34
|
+
await mcpHandler({ args: parsed });
|
|
35
|
+
}
|
|
32
36
|
else {
|
|
33
37
|
await renderHandler({ args: parsed });
|
|
34
38
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/resvg.wasm
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nowline/cli",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.20260603150914.g70caedb",
|
|
4
4
|
"description": "Nowline command-line interface — validate, convert, init",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"engines": {
|
|
@@ -32,24 +32,28 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@babel/code-frame": "^7.29.0",
|
|
34
34
|
"@clack/prompts": "^1.4.0",
|
|
35
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
35
36
|
"chalk": "^5.6.2",
|
|
36
37
|
"citty": "^0.2.2",
|
|
37
38
|
"consola": "^3.4.2",
|
|
38
39
|
"js-yaml": "^4.1.1",
|
|
39
40
|
"langium": "~4.2.4",
|
|
40
|
-
"@nowline/config": "0.0.0-dev.
|
|
41
|
-
"@nowline/core": "0.0.0-dev.
|
|
42
|
-
"@nowline/export
|
|
43
|
-
"@nowline/
|
|
44
|
-
"@nowline/export-
|
|
45
|
-
"@nowline/export-
|
|
46
|
-
"@nowline/export-
|
|
47
|
-
"@nowline/export-
|
|
48
|
-
"@nowline/export-
|
|
49
|
-
"@nowline/
|
|
50
|
-
"@nowline/
|
|
41
|
+
"@nowline/config": "0.0.0-dev.20260603150914.g70caedb",
|
|
42
|
+
"@nowline/core": "0.0.0-dev.20260603150914.g70caedb",
|
|
43
|
+
"@nowline/export": "0.0.0-dev.20260603150914.g70caedb",
|
|
44
|
+
"@nowline/mcp": "0.0.0-dev.20260603150914.g70caedb",
|
|
45
|
+
"@nowline/export-html": "0.0.0-dev.20260603150914.g70caedb",
|
|
46
|
+
"@nowline/export-core": "0.0.0-dev.20260603150914.g70caedb",
|
|
47
|
+
"@nowline/export-mermaid": "0.0.0-dev.20260603150914.g70caedb",
|
|
48
|
+
"@nowline/export-msproj": "0.0.0-dev.20260603150914.g70caedb",
|
|
49
|
+
"@nowline/export-pdf": "0.0.0-dev.20260603150914.g70caedb",
|
|
50
|
+
"@nowline/export-png": "0.0.0-dev.20260603150914.g70caedb",
|
|
51
|
+
"@nowline/export-xlsx": "0.0.0-dev.20260603150914.g70caedb",
|
|
52
|
+
"@nowline/layout": "0.0.0-dev.20260603150914.g70caedb",
|
|
53
|
+
"@nowline/renderer": "0.0.0-dev.20260603150914.g70caedb"
|
|
51
54
|
},
|
|
52
55
|
"devDependencies": {
|
|
56
|
+
"@resvg/resvg-wasm": "^2.6.2",
|
|
53
57
|
"@types/babel__code-frame": "^7.27.0",
|
|
54
58
|
"@types/js-yaml": "^4.0.9",
|
|
55
59
|
"@types/node": "^25.9.1",
|
|
@@ -60,6 +64,7 @@
|
|
|
60
64
|
"bundle-templates": "node scripts/bundle-templates.mjs",
|
|
61
65
|
"prebuild": "node scripts/bundle-templates.mjs",
|
|
62
66
|
"build": "tsc -b tsconfig.json",
|
|
67
|
+
"postbuild": "node scripts/copy-wasm.mjs",
|
|
63
68
|
"watch": "tsc -b tsconfig.json --watch",
|
|
64
69
|
"pretest": "node scripts/bundle-templates.mjs",
|
|
65
70
|
"test": "vitest run",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
// Bun-only entry point for `bun build --compile`.
|
|
3
|
+
//
|
|
4
|
+
// `import ... with { type: 'file' }` is the ONLY pattern Bun's static
|
|
5
|
+
// analyzer recognises for embedding binary assets in a standalone binary.
|
|
6
|
+
// `Bun.file(new URL(..., import.meta.url))` is NOT tracked by the bundler
|
|
7
|
+
// and leaves the asset out of the embedded VFS.
|
|
8
|
+
//
|
|
9
|
+
// This shim:
|
|
10
|
+
// 1. Imports resvg.wasm via the recognised pattern, yielding a VFS path.
|
|
11
|
+
// 2. Stashes that path in globalThis so loadWasm() (in dist/index.js) can
|
|
12
|
+
// read it with Bun.file() at runtime.
|
|
13
|
+
// 3. Delegates immediately to dist/index.js (the normal Node entry).
|
|
14
|
+
//
|
|
15
|
+
// compile.mjs passes this file as the bun --compile entry instead of
|
|
16
|
+
// dist/index.js directly.
|
|
17
|
+
|
|
18
|
+
// @ts-expect-error — Bun-specific import assertion; not valid Node.js/TypeScript.
|
|
19
|
+
import resvgWasmPath from '../dist/resvg.wasm' with { type: 'file' };
|
|
20
|
+
|
|
21
|
+
// Make the VFS path available to loadWasm() in dist/commands/render.js.
|
|
22
|
+
globalThis.__RESVG_WASM_PATH__ = resvgWasmPath;
|
|
23
|
+
|
|
24
|
+
// Run the CLI.
|
|
25
|
+
await import('../dist/index.js');
|
package/scripts/compile.mjs
CHANGED
|
@@ -25,9 +25,9 @@ const packageRoot = path.resolve(__dirname, '..');
|
|
|
25
25
|
// Tight by design: a breach should trigger the conversation called out in
|
|
26
26
|
// `specs/cli-distribution.md` "Size budget", not be silently absorbed.
|
|
27
27
|
//
|
|
28
|
-
// Last measured (bun 1.3.
|
|
29
|
-
// darwin-arm64=
|
|
30
|
-
// windows-arm64
|
|
28
|
+
// Last measured (bun 1.3.14, @resvg/resvg-wasm, no native .node) on macOS-arm64:
|
|
29
|
+
// darwin-arm64=67 darwin-x64=~72 linux-arm64=~104 linux-x64=~104
|
|
30
|
+
// windows-arm64=~116 windows-x64=~119
|
|
31
31
|
const ALL_TARGETS = [
|
|
32
32
|
{ id: 'bun-darwin-arm64', suffix: 'macos-arm64', maxMb: 80 },
|
|
33
33
|
{ id: 'bun-darwin-x64', suffix: 'macos-x64', maxMb: 85 },
|
|
@@ -80,10 +80,15 @@ function main() {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
// Use the bun-entry shim as the compile entry point so Bun's static
|
|
84
|
+
// analyzer sees the `import ... with { type: 'file' }` declaration that
|
|
85
|
+
// embeds resvg.wasm in the binary. The shim sets __RESVG_WASM_PATH__
|
|
86
|
+
// and then delegates to dist/index.js.
|
|
87
|
+
const entry = path.join(packageRoot, 'scripts', 'bun-entry.mjs');
|
|
88
|
+
const distEntry = path.join(packageRoot, 'dist', 'index.js');
|
|
89
|
+
if (!safeStat(distEntry)) {
|
|
85
90
|
console.error(
|
|
86
|
-
`error: expected ${path.relative(packageRoot,
|
|
91
|
+
`error: expected ${path.relative(packageRoot, distEntry)} to exist; run \`pnpm build\` first.`,
|
|
87
92
|
);
|
|
88
93
|
process.exit(1);
|
|
89
94
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Copy @resvg/resvg-wasm/index_bg.wasm → dist/resvg.wasm so the CLI can
|
|
3
|
+
// locate it at runtime (both uncompiled Node and bun --compile, which embeds
|
|
4
|
+
// files referenced via new URL('./resvg.wasm', import.meta.url)).
|
|
5
|
+
//
|
|
6
|
+
// Runs as the `postbuild` step, after tsc has created dist/.
|
|
7
|
+
|
|
8
|
+
import { copyFile, mkdir } from 'node:fs/promises';
|
|
9
|
+
import { createRequire } from 'node:module';
|
|
10
|
+
import { dirname, resolve } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const packageRoot = resolve(__dirname, '..');
|
|
15
|
+
|
|
16
|
+
const req = createRequire(import.meta.url);
|
|
17
|
+
const wasmEntry = req.resolve('@resvg/resvg-wasm');
|
|
18
|
+
const wasmSrc = resolve(dirname(wasmEntry), 'index_bg.wasm');
|
|
19
|
+
const wasmDest = resolve(packageRoot, 'dist', 'resvg.wasm');
|
|
20
|
+
|
|
21
|
+
await mkdir(resolve(packageRoot, 'dist'), { recursive: true });
|
|
22
|
+
await copyFile(wasmSrc, wasmDest);
|
|
23
|
+
console.log(`copied resvg.wasm → dist/resvg.wasm`);
|
package/src/cli/args.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ParseArgsConfig, parseArgs } from 'node:util';
|
|
2
2
|
import { CliError, ExitCode } from '../io/exit-codes.js';
|
|
3
3
|
|
|
4
|
-
export type ModeKind = 'render' | 'serve' | 'init' | 'help' | 'version';
|
|
4
|
+
export type ModeKind = 'render' | 'serve' | 'init' | 'mcp' | 'help' | 'version';
|
|
5
5
|
|
|
6
6
|
export interface ParsedArgs {
|
|
7
7
|
/** Resolved mode after dispatch (mutual-exclusivity already checked). */
|
|
@@ -59,6 +59,9 @@ export interface ParsedArgs {
|
|
|
59
59
|
|
|
60
60
|
// Init
|
|
61
61
|
template?: string;
|
|
62
|
+
|
|
63
|
+
// MCP
|
|
64
|
+
root?: string;
|
|
62
65
|
}
|
|
63
66
|
|
|
64
67
|
/**
|
|
@@ -97,6 +100,7 @@ export function parseArgv(argv: readonly string[]): ParsedArgs {
|
|
|
97
100
|
|
|
98
101
|
serve: { type: 'boolean' },
|
|
99
102
|
init: { type: 'boolean' },
|
|
103
|
+
mcp: { type: 'boolean' },
|
|
100
104
|
'dry-run': { type: 'boolean', short: 'n' },
|
|
101
105
|
|
|
102
106
|
theme: { type: 'string', short: 't' },
|
|
@@ -119,6 +123,9 @@ export function parseArgv(argv: readonly string[]): ParsedArgs {
|
|
|
119
123
|
|
|
120
124
|
template: { type: 'string' },
|
|
121
125
|
|
|
126
|
+
// MCP
|
|
127
|
+
root: { type: 'string' },
|
|
128
|
+
|
|
122
129
|
// Format-specific (m2c)
|
|
123
130
|
'page-size': { type: 'string' },
|
|
124
131
|
orientation: { type: 'string' },
|
|
@@ -177,6 +184,7 @@ export function parseArgv(argv: readonly string[]): ParsedArgs {
|
|
|
177
184
|
const modes: ModeKind[] = [];
|
|
178
185
|
if (values.serve === true) modes.push('serve');
|
|
179
186
|
if (values.init === true) modes.push('init');
|
|
187
|
+
if (values.mcp === true) modes.push('mcp');
|
|
180
188
|
if (modes.length > 1) {
|
|
181
189
|
throw new CliError(
|
|
182
190
|
ExitCode.InputError,
|
|
@@ -187,7 +195,7 @@ export function parseArgv(argv: readonly string[]): ParsedArgs {
|
|
|
187
195
|
const dryRun = values['dry-run'] === true;
|
|
188
196
|
const mode: ModeKind = modes[0] ?? 'render';
|
|
189
197
|
|
|
190
|
-
if (dryRun && (mode === 'serve' || mode === 'init')) {
|
|
198
|
+
if (dryRun && (mode === 'serve' || mode === 'init' || mode === 'mcp')) {
|
|
191
199
|
throw new CliError(
|
|
192
200
|
ExitCode.InputError,
|
|
193
201
|
`nowline: --dry-run cannot be combined with --${mode}.`,
|
|
@@ -233,6 +241,7 @@ export function parseArgv(argv: readonly string[]): ParsedArgs {
|
|
|
233
241
|
headless: values.headless === true,
|
|
234
242
|
start: stringOrUndefined(values.start),
|
|
235
243
|
locale: stringOrUndefined(values.locale),
|
|
244
|
+
root: stringOrUndefined(values.root),
|
|
236
245
|
};
|
|
237
246
|
}
|
|
238
247
|
|
package/src/cli/help.ts
CHANGED
|
@@ -31,6 +31,10 @@ MODE FLAGS (mutually exclusive)
|
|
|
31
31
|
rendered output to disk on each rebuild.
|
|
32
32
|
--init [<name>] Scaffold a starter .nowline file in cwd. Positional
|
|
33
33
|
becomes project name; .nowline appended if missing.
|
|
34
|
+
--mcp Start a Model Context Protocol (MCP) stdio server
|
|
35
|
+
exposing validate, render, export, and file tools.
|
|
36
|
+
Shares the same @nowline/mcp server code as
|
|
37
|
+
\`npx @nowline/mcp\`.
|
|
34
38
|
-n, --dry-run Run the full pipeline (parse + validate + layout +
|
|
35
39
|
format) but skip the write step. Subsumes the old
|
|
36
40
|
'validate' verb. Exit 0 on success, 1 on errors.
|
|
@@ -57,6 +61,10 @@ SERVE OPTIONS
|
|
|
57
61
|
--host <host> Bind address (default: 127.0.0.1).
|
|
58
62
|
--open Open the browser on start.
|
|
59
63
|
|
|
64
|
+
MCP OPTIONS
|
|
65
|
+
--root <dir> Allowed-root directory for file tools (default: cwd).
|
|
66
|
+
File paths are resolved and restricted to this root.
|
|
67
|
+
|
|
60
68
|
LOGGING (mutually exclusive)
|
|
61
69
|
-v, --verbose Print extra diagnostics to stderr.
|
|
62
70
|
-q, --quiet Suppress non-error stderr.
|
|
@@ -75,6 +83,8 @@ EXAMPLES
|
|
|
75
83
|
nowline roadmap.nowline --dry-run # validate-only
|
|
76
84
|
nowline roadmap.nowline --serve -p 8080 # live preview
|
|
77
85
|
nowline --init my-project # scaffold ./my-project.nowline
|
|
86
|
+
nowline --mcp # start MCP stdio server in cwd
|
|
87
|
+
nowline --mcp --root ./roadmaps # MCP server with custom root
|
|
78
88
|
|
|
79
89
|
EXIT CODES
|
|
80
90
|
0 Success
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
2
|
+
import { createMcpServer } from '@nowline/mcp/server';
|
|
3
|
+
import type { ParsedArgs } from '../cli/args.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* `nowline --mcp` handler.
|
|
7
|
+
*
|
|
8
|
+
* Starts a Model Context Protocol stdio server sharing the same @nowline/mcp
|
|
9
|
+
* server factory as `npx @nowline/mcp`. Runs until the process receives
|
|
10
|
+
* SIGINT/SIGTERM or the client closes stdin.
|
|
11
|
+
*/
|
|
12
|
+
export async function mcpHandler({ args }: { args: ParsedArgs }): Promise<void> {
|
|
13
|
+
const root = args.root ?? process.cwd();
|
|
14
|
+
const server = createMcpServer({ allowedRoot: root });
|
|
15
|
+
const transport = new StdioServerTransport();
|
|
16
|
+
await server.connect(transport);
|
|
17
|
+
// Keep alive: the transport closes when stdin closes or the process is signalled.
|
|
18
|
+
await new Promise<void>((resolve) => {
|
|
19
|
+
transport.onclose = resolve;
|
|
20
|
+
});
|
|
21
|
+
}
|
package/src/commands/render.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { promises as fs } from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type ExportFormat,
|
|
5
|
+
exportDocument,
|
|
6
|
+
type HostEnv,
|
|
7
|
+
type RenderInputs,
|
|
8
|
+
} from '@nowline/export';
|
|
4
9
|
import { lengthToPoints, parseLength } from '@nowline/export-core';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
10
|
+
import { normalizeThemeName, type ThemeName } from '@nowline/layout';
|
|
11
|
+
import type { AssetResolver } from '@nowline/renderer';
|
|
7
12
|
import type { ParsedArgs } from '../cli/args.js';
|
|
8
13
|
import {
|
|
9
14
|
FormatResolutionError,
|
|
@@ -15,7 +20,7 @@ import { resolveRenderOutputPath } from '../cli/output-path.js';
|
|
|
15
20
|
import { parseNowlineJson } from '../convert/parse-json.js';
|
|
16
21
|
import { printNowlineFile } from '../convert/printer.js';
|
|
17
22
|
import { serializeToJson } from '../convert/schema.js';
|
|
18
|
-
import {
|
|
23
|
+
import { parseSource } from '../core/parse.js';
|
|
19
24
|
import { type DiagnosticSource, formatDiagnostics } from '../diagnostics/index.js';
|
|
20
25
|
import {
|
|
21
26
|
describeContentLocaleSource,
|
|
@@ -208,69 +213,67 @@ interface ProduceResult {
|
|
|
208
213
|
isBinary: boolean;
|
|
209
214
|
}
|
|
210
215
|
|
|
216
|
+
const BINARY_FORMATS = new Set<OutputFormat>(['png', 'pdf', 'xlsx']);
|
|
217
|
+
const FONT_FORMATS = new Set<OutputFormat>(['png', 'pdf']);
|
|
218
|
+
|
|
211
219
|
async function produce(args: ProduceArgs): Promise<ProduceResult> {
|
|
212
|
-
|
|
213
|
-
return { rendered: await produceJson(args), isBinary: false };
|
|
214
|
-
}
|
|
220
|
+
// `nowline` canonical-text format is not part of ExportFormat; handle here.
|
|
215
221
|
if (args.format === 'nowline') {
|
|
216
222
|
return { rendered: await produceCanonicalNowline(args), isBinary: false };
|
|
217
223
|
}
|
|
218
224
|
|
|
219
|
-
//
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
+
// Convert JSON-AST input to DSL text before handing to the kernel.
|
|
226
|
+
const sourceText =
|
|
227
|
+
args.inputFormat === 'json'
|
|
228
|
+
? jsonToNowlineText(args.contents, args.displayPath)
|
|
229
|
+
: args.contents;
|
|
230
|
+
|
|
231
|
+
// Pre-validate with locale-aware diagnostic formatting so validation
|
|
232
|
+
// errors reach the operator in their locale. The kernel will re-parse
|
|
233
|
+
// the same source below — double work accepted in exchange for faithful
|
|
234
|
+
// stderr output.
|
|
235
|
+
await parseAndValidate(sourceText, args);
|
|
236
|
+
|
|
237
|
+
const assetRoot = args.assetRoot
|
|
238
|
+
? path.resolve(args.assetRoot)
|
|
239
|
+
: path.dirname(args.absInputPath);
|
|
240
|
+
|
|
241
|
+
const host = createNodeHostEnv(assetRoot);
|
|
225
242
|
|
|
226
|
-
|
|
227
|
-
|
|
243
|
+
// Resolve fonts lazily — only for formats that rasterize or embed them.
|
|
244
|
+
let fonts: RenderInputs['fonts'];
|
|
245
|
+
if (FONT_FORMATS.has(args.format)) {
|
|
246
|
+
fonts = await resolveNodeFonts(args);
|
|
228
247
|
}
|
|
248
|
+
|
|
249
|
+
const kernelInputs: RenderInputs = {
|
|
250
|
+
sourcePath: args.absInputPath,
|
|
251
|
+
today: args.today,
|
|
252
|
+
locale: args.locale ?? 'und',
|
|
253
|
+
theme: args.theme,
|
|
254
|
+
fonts,
|
|
255
|
+
width: args.width,
|
|
256
|
+
noLinks: args.noLinks,
|
|
257
|
+
strict: args.strict,
|
|
258
|
+
pageSize: args.pageSize,
|
|
259
|
+
orientation: parseOrientation(args.orientation),
|
|
260
|
+
marginPt: parseMargin(args.margin),
|
|
261
|
+
pngScale: parseScale(args.scale),
|
|
262
|
+
msprojStart: args.start,
|
|
263
|
+
};
|
|
264
|
+
|
|
229
265
|
try {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
const mod = await import('@nowline/export-msproj');
|
|
242
|
-
const xml = mod.exportMsProjXml(stage.exportInputs, {
|
|
243
|
-
startDate: args.start,
|
|
244
|
-
});
|
|
245
|
-
return { rendered: xml, isBinary: false };
|
|
246
|
-
}
|
|
247
|
-
if (args.format === 'png') {
|
|
248
|
-
const fonts = await stage.fontPair();
|
|
249
|
-
const mod = await import('@nowline/export-png');
|
|
250
|
-
const png = await mod.exportPng(stage.exportInputs, stage.svg, {
|
|
251
|
-
scale: parseScale(args.scale),
|
|
252
|
-
fonts,
|
|
253
|
-
});
|
|
254
|
-
return { rendered: png, isBinary: true };
|
|
255
|
-
}
|
|
256
|
-
if (args.format === 'pdf') {
|
|
257
|
-
const fonts = await stage.fontPair();
|
|
258
|
-
const mod = await import('@nowline/export-pdf');
|
|
259
|
-
const pdf = await mod.exportPdf(stage.exportInputs, stage.svg, {
|
|
260
|
-
pageSize: args.pageSize,
|
|
261
|
-
orientation: parseOrientation(args.orientation),
|
|
262
|
-
marginPt: parseMargin(args.margin),
|
|
263
|
-
fonts,
|
|
264
|
-
});
|
|
265
|
-
return { rendered: pdf, isBinary: true };
|
|
266
|
-
}
|
|
267
|
-
if (args.format === 'xlsx') {
|
|
268
|
-
const mod = await import('@nowline/export-xlsx');
|
|
269
|
-
const xlsx = await mod.exportXlsx(stage.exportInputs, {
|
|
270
|
-
generated: args.today,
|
|
271
|
-
});
|
|
272
|
-
return { rendered: xlsx, isBinary: true };
|
|
273
|
-
}
|
|
266
|
+
const bytes = await exportDocument(
|
|
267
|
+
sourceText,
|
|
268
|
+
args.format as ExportFormat,
|
|
269
|
+
kernelInputs,
|
|
270
|
+
host,
|
|
271
|
+
);
|
|
272
|
+
const isBinary = BINARY_FORMATS.has(args.format);
|
|
273
|
+
const rendered: string | Uint8Array = isBinary
|
|
274
|
+
? bytes
|
|
275
|
+
: new TextDecoder('utf-8').decode(bytes);
|
|
276
|
+
return { rendered, isBinary };
|
|
274
277
|
} catch (err) {
|
|
275
278
|
if (err instanceof CliError) throw err;
|
|
276
279
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -279,22 +282,78 @@ async function produce(args: ProduceArgs): Promise<ProduceResult> {
|
|
|
279
282
|
`nowline: ${args.format} export failed: ${message}`,
|
|
280
283
|
);
|
|
281
284
|
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// ---- Node HostEnv -----------------------------------------------------------
|
|
282
288
|
|
|
283
|
-
|
|
289
|
+
function createNodeHostEnv(assetRoot: string): HostEnv {
|
|
290
|
+
const root = path.resolve(assetRoot);
|
|
291
|
+
return {
|
|
292
|
+
readSource: async (absPath: string): Promise<string> => {
|
|
293
|
+
return await fs.readFile(absPath, 'utf-8');
|
|
294
|
+
},
|
|
295
|
+
readAsset: async (ref: string): Promise<Uint8Array> => {
|
|
296
|
+
const absPath = path.resolve(root, ref);
|
|
297
|
+
if (!absPath.startsWith(root + path.sep) && absPath !== root) {
|
|
298
|
+
throw new Error(`Asset ${ref} escapes asset-root ${assetRoot}`);
|
|
299
|
+
}
|
|
300
|
+
const bytes = await fs.readFile(absPath);
|
|
301
|
+
return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
302
|
+
},
|
|
303
|
+
loadWasm: async (): Promise<ArrayBuffer> => {
|
|
304
|
+
// Two code paths:
|
|
305
|
+
//
|
|
306
|
+
// 1. Bun compiled binary: scripts/bun-entry.mjs imports
|
|
307
|
+
// dist/resvg.wasm via `with { type: 'file' }` (the only Bun
|
|
308
|
+
// pattern the bundler embeds) and stashes the VFS path in
|
|
309
|
+
// globalThis.__RESVG_WASM_PATH__. Read it with Bun.file().
|
|
310
|
+
//
|
|
311
|
+
// 2. Plain Node.js (dev, tests, uncompiled dist/index.js run):
|
|
312
|
+
// dist/resvg.wasm is copied by scripts/copy-wasm.mjs (postbuild).
|
|
313
|
+
// Use fs.readFile via a new URL relative to this module.
|
|
314
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
315
|
+
const bunWasmPath = (globalThis as any).__RESVG_WASM_PATH__ as string | undefined;
|
|
316
|
+
if (bunWasmPath) {
|
|
317
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
318
|
+
return (globalThis as any).Bun.file(
|
|
319
|
+
bunWasmPath,
|
|
320
|
+
).arrayBuffer() as Promise<ArrayBuffer>;
|
|
321
|
+
}
|
|
322
|
+
const wasmUrl = new URL('../resvg.wasm', import.meta.url);
|
|
323
|
+
const bytes = await fs.readFile(wasmUrl);
|
|
324
|
+
return bytes.buffer as ArrayBuffer;
|
|
325
|
+
},
|
|
326
|
+
};
|
|
284
327
|
}
|
|
285
328
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
329
|
+
// ---- Font resolution --------------------------------------------------------
|
|
330
|
+
|
|
331
|
+
async function resolveNodeFonts(
|
|
332
|
+
args: ProduceArgs,
|
|
333
|
+
): Promise<import('@nowline/export-core').ResolvedFontPair> {
|
|
334
|
+
const { resolveFonts } = await import('@nowline/export-core');
|
|
335
|
+
const result = await resolveFonts({
|
|
336
|
+
fontSans: args.fontSans,
|
|
337
|
+
fontMono: args.fontMono,
|
|
338
|
+
headless: args.headless,
|
|
339
|
+
});
|
|
340
|
+
if (args.strict) {
|
|
341
|
+
if (result.sansFellBackToBundled) {
|
|
342
|
+
process.stderr.write(
|
|
343
|
+
'warning: sans font fell back to bundled DejaVu (no platform font found)\n',
|
|
344
|
+
);
|
|
345
|
+
}
|
|
346
|
+
if (result.monoFellBackToBundled) {
|
|
347
|
+
process.stderr.write(
|
|
348
|
+
'warning: mono font fell back to bundled DejaVu (no platform font found)\n',
|
|
349
|
+
);
|
|
350
|
+
}
|
|
293
351
|
}
|
|
294
|
-
|
|
295
|
-
return JSON.stringify(serializeToJson(parsed.document, args.contents), null, 2);
|
|
352
|
+
return { sans: result.sans, mono: result.mono };
|
|
296
353
|
}
|
|
297
354
|
|
|
355
|
+
// ---- nowline canonical-text format (not part of ExportFormat) ---------------
|
|
356
|
+
|
|
298
357
|
async function produceCanonicalNowline(args: ProduceArgs): Promise<string> {
|
|
299
358
|
if (args.inputFormat === 'json') {
|
|
300
359
|
const { ast } = parseNowlineJson(args.contents, args.displayPath);
|
|
@@ -305,93 +364,7 @@ async function produceCanonicalNowline(args: ProduceArgs): Promise<string> {
|
|
|
305
364
|
return printNowlineFile(doc.ast);
|
|
306
365
|
}
|
|
307
366
|
|
|
308
|
-
|
|
309
|
-
svg: string;
|
|
310
|
-
exportInputs: import('@nowline/export-core').ExportInputs;
|
|
311
|
-
/** Lazy: only loads the resolved font pair when a format actually needs it. */
|
|
312
|
-
fontPair: () => Promise<import('@nowline/export-core').ResolvedFontPair>;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
async function stageRoadmap(args: ProduceArgs): Promise<StagedRoadmap> {
|
|
316
|
-
const parsed = await parseAndValidate(
|
|
317
|
-
args.inputFormat === 'json'
|
|
318
|
-
? jsonToNowlineText(args.contents, args.displayPath)
|
|
319
|
-
: args.contents,
|
|
320
|
-
args,
|
|
321
|
-
);
|
|
322
|
-
const resolved = await resolveIncludes(parsed.ast, args.absInputPath, {
|
|
323
|
-
services: getServices().Nowline,
|
|
324
|
-
});
|
|
325
|
-
for (const diag of resolved.diagnostics) {
|
|
326
|
-
if (diag.severity === 'error') {
|
|
327
|
-
process.stderr.write(`${diag.sourcePath}: ${diag.message}\n`);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
if (resolved.diagnostics.some((d) => d.severity === 'error')) {
|
|
331
|
-
throw new CliError(ExitCode.ValidationError, '');
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
const model = layoutRoadmap(parsed.ast, resolved, {
|
|
335
|
-
theme: args.theme,
|
|
336
|
-
today: args.today,
|
|
337
|
-
width: args.width,
|
|
338
|
-
locale: args.locale,
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
const assetRoot = args.assetRoot
|
|
342
|
-
? path.resolve(args.assetRoot)
|
|
343
|
-
: path.dirname(args.absInputPath);
|
|
344
|
-
const resolver: AssetResolver = createAssetResolver(assetRoot);
|
|
345
|
-
|
|
346
|
-
const warnings: string[] = [];
|
|
347
|
-
const svg = await renderSvg(model, {
|
|
348
|
-
assetResolver: resolver,
|
|
349
|
-
noLinks: args.noLinks,
|
|
350
|
-
strict: args.strict,
|
|
351
|
-
warn: (msg) => warnings.push(msg),
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
for (const w of warnings) {
|
|
355
|
-
process.stderr.write(`warning: ${w}\n`);
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
let cachedFonts: import('@nowline/export-core').ResolvedFontPair | undefined;
|
|
359
|
-
const fontPair = async () => {
|
|
360
|
-
if (cachedFonts) return cachedFonts;
|
|
361
|
-
const mod = await import('@nowline/export-core');
|
|
362
|
-
const result = await mod.resolveFonts({
|
|
363
|
-
fontSans: args.fontSans,
|
|
364
|
-
fontMono: args.fontMono,
|
|
365
|
-
headless: args.headless,
|
|
366
|
-
});
|
|
367
|
-
if (args.strict) {
|
|
368
|
-
if (result.sansFellBackToBundled) {
|
|
369
|
-
process.stderr.write(
|
|
370
|
-
'warning: sans font fell back to bundled DejaVu (no platform font found)\n',
|
|
371
|
-
);
|
|
372
|
-
}
|
|
373
|
-
if (result.monoFellBackToBundled) {
|
|
374
|
-
process.stderr.write(
|
|
375
|
-
'warning: mono font fell back to bundled DejaVu (no platform font found)\n',
|
|
376
|
-
);
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
cachedFonts = { sans: result.sans, mono: result.mono };
|
|
380
|
-
return cachedFonts;
|
|
381
|
-
};
|
|
382
|
-
|
|
383
|
-
return {
|
|
384
|
-
svg,
|
|
385
|
-
exportInputs: {
|
|
386
|
-
ast: parsed.ast,
|
|
387
|
-
resolved,
|
|
388
|
-
model,
|
|
389
|
-
sourcePath: args.displayPath,
|
|
390
|
-
today: args.today,
|
|
391
|
-
},
|
|
392
|
-
fontPair,
|
|
393
|
-
};
|
|
394
|
-
}
|
|
367
|
+
// ---- Shared helpers ---------------------------------------------------------
|
|
395
368
|
|
|
396
369
|
function jsonToNowlineText(contents: string, displayPath: string): string {
|
|
397
370
|
const { ast } = parseNowlineJson(contents, displayPath);
|
|
@@ -544,6 +517,8 @@ function emitDiagnostics(
|
|
|
544
517
|
if (rendered) process.stderr.write(`${rendered}\n`);
|
|
545
518
|
}
|
|
546
519
|
|
|
520
|
+
// ---- Asset resolver (still used by serve.ts) --------------------------------
|
|
521
|
+
|
|
547
522
|
export function createAssetResolver(assetRoot: string): AssetResolver {
|
|
548
523
|
const root = path.resolve(assetRoot);
|
|
549
524
|
return async (ref: string) => {
|
package/src/generated/version.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Auto-generated by scripts/bundle-templates.mjs. Do not edit by hand.
|
|
2
2
|
|
|
3
|
-
export const CLI_VERSION = "0.0.0-dev.
|
|
3
|
+
export const CLI_VERSION = "0.0.0-dev.20260603150914.g70caedb";
|
|
4
4
|
|
|
5
5
|
export interface CliBuild {
|
|
6
6
|
/** Short git SHA at build time, or empty when not in a git checkout. */
|
|
@@ -12,7 +12,7 @@ export interface CliBuild {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export const CLI_BUILD: CliBuild = {
|
|
15
|
-
"sha": "
|
|
15
|
+
"sha": "70caedb",
|
|
16
16
|
"isRelease": false,
|
|
17
17
|
"isDirty": true
|
|
18
18
|
};
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { parseArgv } from './cli/args.js';
|
|
3
3
|
import { renderHelp, renderVersion } from './cli/help.js';
|
|
4
4
|
import { initHandler } from './commands/init.js';
|
|
5
|
+
import { mcpHandler } from './commands/mcp.js';
|
|
5
6
|
import { renderHandler } from './commands/render.js';
|
|
6
7
|
import { serveHandler } from './commands/serve.js';
|
|
7
8
|
import { CliError, ExitCode } from './io/exit-codes.js';
|
|
@@ -30,6 +31,8 @@ async function run(): Promise<number> {
|
|
|
30
31
|
await initHandler({ args: parsed });
|
|
31
32
|
} else if (parsed.mode === 'serve') {
|
|
32
33
|
await serveHandler({ args: parsed });
|
|
34
|
+
} else if (parsed.mode === 'mcp') {
|
|
35
|
+
await mcpHandler({ args: parsed });
|
|
33
36
|
} else {
|
|
34
37
|
await renderHandler({ args: parsed });
|
|
35
38
|
}
|