@mcpolyglot/cli 0.1.0 → 0.2.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/dist/.tsbuildinfo +1 -1
- package/dist/bin.js +2 -1
- package/dist/bin.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +8 -5
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +30 -18
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +23 -8
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +6 -4
- package/dist/commands/tools.js.map +1 -1
- package/dist/ui.d.ts +46 -5
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +142 -29
- package/dist/ui.js.map +1 -1
- package/package.json +8 -8
package/dist/commands/init.js
CHANGED
|
@@ -2,10 +2,13 @@ import { writeFileSync, existsSync } from 'node:fs';
|
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import * as p from '@clack/prompts';
|
|
4
4
|
import pc from 'picocolors';
|
|
5
|
-
import {
|
|
5
|
+
import { headerBar, panel, footerBar, step, chip, stdoutSink } from '../ui.js';
|
|
6
6
|
export async function initCommand(opts) {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
headerBar({
|
|
8
|
+
version: '0.0.1',
|
|
9
|
+
command: 'init',
|
|
10
|
+
subtitle: 'scaffold mcpolyglot.config.ts in this directory',
|
|
11
|
+
}, stdoutSink);
|
|
9
12
|
const target = resolve(opts.cwd, 'mcpolyglot.config.ts');
|
|
10
13
|
if (existsSync(target)) {
|
|
11
14
|
const proceed = await p.confirm({
|
|
@@ -17,6 +20,7 @@ export async function initCommand(opts) {
|
|
|
17
20
|
return;
|
|
18
21
|
}
|
|
19
22
|
}
|
|
23
|
+
step(1, 3, 'Pick a data source', stdoutSink);
|
|
20
24
|
const kind = await p.select({
|
|
21
25
|
message: 'Pick a data source to start with:',
|
|
22
26
|
options: [
|
|
@@ -28,13 +32,15 @@ export async function initCommand(opts) {
|
|
|
28
32
|
p.cancel('Aborted.');
|
|
29
33
|
return;
|
|
30
34
|
}
|
|
35
|
+
step(2, 3, 'Name the source', stdoutSink);
|
|
31
36
|
const id = await p.text({
|
|
32
37
|
message: 'Source id (used in tool names):',
|
|
33
38
|
initialValue: kind === 'postgres' ? 'pg.main' : 'sqlite.local',
|
|
34
|
-
validate: (v) => /^[a-z0-9._-]+$/i.test(v) ? undefined : 'Use letters, digits, dot, hyphen, underscore.',
|
|
39
|
+
validate: (v) => v && /^[a-z0-9._-]+$/i.test(v) ? undefined : 'Use letters, digits, dot, hyphen, underscore.',
|
|
35
40
|
});
|
|
36
41
|
if (p.isCancel(id))
|
|
37
42
|
return;
|
|
43
|
+
step(3, 3, 'Connection', stdoutSink);
|
|
38
44
|
let url;
|
|
39
45
|
if (kind === 'postgres') {
|
|
40
46
|
url = '${env:DATABASE_URL}';
|
|
@@ -44,7 +50,7 @@ export async function initCommand(opts) {
|
|
|
44
50
|
const path = await p.text({
|
|
45
51
|
message: 'Path to SQLite file:',
|
|
46
52
|
placeholder: './data.db',
|
|
47
|
-
validate: (v) => (v.length > 0 ? undefined : 'Required.'),
|
|
53
|
+
validate: (v) => (v && v.length > 0 ? undefined : 'Required.'),
|
|
48
54
|
});
|
|
49
55
|
if (p.isCancel(path))
|
|
50
56
|
return;
|
|
@@ -52,19 +58,25 @@ export async function initCommand(opts) {
|
|
|
52
58
|
}
|
|
53
59
|
const config = renderConfig({ kind: kind, id: id, url });
|
|
54
60
|
writeFileSync(target, config, 'utf8');
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
stdoutSink('');
|
|
62
|
+
stdoutSink(` ${chip('OK', 'ok')} wrote ${pc.bold(target)}`);
|
|
63
|
+
panel({
|
|
64
|
+
title: 'Next',
|
|
65
|
+
lines: [
|
|
66
|
+
`${pc.dim('▸')} ${pc.bold('Validate'.padEnd(10))} ${pc.cyan('mcpolyglot doctor')}`,
|
|
67
|
+
`${pc.dim('▸')} ${pc.bold('List'.padEnd(10))} ${pc.cyan('mcpolyglot tools')}`,
|
|
68
|
+
`${pc.dim('▸')} ${pc.bold('Run'.padEnd(10))} ${pc.cyan('mcpolyglot serve')}`,
|
|
69
|
+
],
|
|
70
|
+
}, stdoutSink);
|
|
71
|
+
panel({
|
|
72
|
+
title: 'Wire into your agent',
|
|
73
|
+
lines: [
|
|
74
|
+
`${pc.bold('Claude Desktop')} ${pc.dim('~/Library/Application Support/Claude/claude_desktop_config.json')}`,
|
|
75
|
+
`${pc.bold('Cursor')} ${pc.dim('~/.cursor/mcp.json')}`,
|
|
76
|
+
`${pc.bold('Claude Code')} ${pc.dim('claude mcp add mcpolyglot -- npx -y @mcpolyglot/cli serve')}`,
|
|
77
|
+
],
|
|
78
|
+
}, stdoutSink);
|
|
79
|
+
footerBar(['docs: github.com/ishay60/mcpolyglot'], stdoutSink);
|
|
68
80
|
}
|
|
69
81
|
function renderConfig(opts) {
|
|
70
82
|
return `import { defineConfig } from '@mcpolyglot/config';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFpE"}
|
package/dist/commands/serve.js
CHANGED
|
@@ -6,7 +6,7 @@ import { loadConfig } from '@mcpolyglot/config';
|
|
|
6
6
|
import { StdioTransport } from '@mcpolyglot/core/transports/stdio';
|
|
7
7
|
import { StreamableHttpTransport } from '@mcpolyglot/core/transports/streamable-http';
|
|
8
8
|
import { buildServerFromConfig } from '../factory.js';
|
|
9
|
-
import {
|
|
9
|
+
import { headerBar, section, kv, ready, footerBar, sym, link } from '../ui.js';
|
|
10
10
|
export async function serveCommand(opts) {
|
|
11
11
|
const startedAt = Date.now();
|
|
12
12
|
if (extname(opts.config) === '.ts' || extname(opts.config) === '.mts') {
|
|
@@ -17,7 +17,11 @@ export async function serveCommand(opts) {
|
|
|
17
17
|
// tsx unavailable — config loader will throw a clear error if it tries.
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
headerBar({
|
|
21
|
+
version: '0.0.1',
|
|
22
|
+
command: 'serve',
|
|
23
|
+
subtitle: 'one config, every database your agent needs',
|
|
24
|
+
});
|
|
21
25
|
const cfg = await loadConfig(opts.config);
|
|
22
26
|
const { server, connectors } = await buildServerFromConfig(cfg);
|
|
23
27
|
section('Sources');
|
|
@@ -30,21 +34,32 @@ export async function serveCommand(opts) {
|
|
|
30
34
|
const wantHttp = opts.http || cfg.transport.kind === 'http';
|
|
31
35
|
const httpHost = cfg.transport.kind === 'http' && !opts.http ? cfg.transport.host : opts.host;
|
|
32
36
|
const httpPort = cfg.transport.kind === 'http' && !opts.http ? cfg.transport.port : opts.port;
|
|
33
|
-
const
|
|
34
|
-
? cfg.transport.auth.token
|
|
35
|
-
: undefined;
|
|
37
|
+
const httpAuth = cfg.transport.kind === 'http' ? cfg.transport.auth : { type: 'bearer' };
|
|
36
38
|
let transport;
|
|
37
39
|
if (wantHttp) {
|
|
38
40
|
const httpTransport = new StreamableHttpTransport({
|
|
39
41
|
host: httpHost,
|
|
40
42
|
port: httpPort,
|
|
41
|
-
|
|
43
|
+
auth: httpAuth.type === 'oauth'
|
|
44
|
+
? {
|
|
45
|
+
kind: 'oauth',
|
|
46
|
+
issuer: httpAuth.issuer,
|
|
47
|
+
audience: httpAuth.audience,
|
|
48
|
+
...(httpAuth.jwksUri ? { jwksUri: httpAuth.jwksUri } : {}),
|
|
49
|
+
}
|
|
50
|
+
: { kind: 'bearer', ...(httpAuth.token ? { token: httpAuth.token } : {}) },
|
|
42
51
|
});
|
|
43
52
|
transport = httpTransport;
|
|
44
53
|
kv('Mode', pc.cyan('streamable-http'));
|
|
45
54
|
kv('URL', link(`http://${httpHost}:${httpPort}/mcp`));
|
|
46
55
|
kv('Health', link(`http://${httpHost}:${httpPort}/healthz`));
|
|
47
|
-
|
|
56
|
+
if (httpTransport.authKind === 'oauth' && httpAuth.type === 'oauth') {
|
|
57
|
+
kv('Auth', pc.cyan(`oauth · ${httpAuth.issuer}`));
|
|
58
|
+
kv('Audience', pc.dim(httpAuth.audience));
|
|
59
|
+
}
|
|
60
|
+
else if (httpTransport.bearerToken) {
|
|
61
|
+
kv('Token', pc.yellow(httpTransport.bearerToken));
|
|
62
|
+
}
|
|
48
63
|
kv('Config', pc.dim(basename(opts.config)));
|
|
49
64
|
}
|
|
50
65
|
else {
|
|
@@ -54,7 +69,7 @@ export async function serveCommand(opts) {
|
|
|
54
69
|
}
|
|
55
70
|
await server.start(transport);
|
|
56
71
|
ready(Date.now() - startedAt);
|
|
57
|
-
|
|
72
|
+
footerBar(['Ctrl+C to stop', 'audit: ~/.mcpolyglot/audit.log']);
|
|
58
73
|
const shutdown = async () => {
|
|
59
74
|
process.stderr.write(pc.dim('\n shutting down…\n'));
|
|
60
75
|
await server.stop().catch(() => { });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCpE"}
|
package/dist/commands/tools.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import pc from 'picocolors';
|
|
2
2
|
import { loadConfig } from '@mcpolyglot/config';
|
|
3
3
|
import { buildServerFromConfig } from '../factory.js';
|
|
4
|
-
import {
|
|
4
|
+
import { headerBar, section, table, footerBar, stdoutSink } from '../ui.js';
|
|
5
5
|
export async function toolsCommand(opts) {
|
|
6
|
-
|
|
6
|
+
headerBar({ version: '0.0.1', command: 'tools', subtitle: 'preview generated MCP tools' }, stdoutSink);
|
|
7
7
|
const cfg = await loadConfig(opts.config);
|
|
8
8
|
const { connectors } = await buildServerFromConfig(cfg);
|
|
9
9
|
const rows = [];
|
|
@@ -23,7 +23,9 @@ export async function toolsCommand(opts) {
|
|
|
23
23
|
}
|
|
24
24
|
section(`${rows.length} tool(s)`, stdoutSink);
|
|
25
25
|
table([{ header: 'NAME' }, { header: 'MODE' }, { header: 'SCOPES' }, { header: 'DESCRIPTION' }], rows, stdoutSink);
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
footerBar([
|
|
27
|
+
`serve: ${pc.cyan('mcpolyglot serve --config ' + opts.config)}`,
|
|
28
|
+
`docs: ${pc.cyan('github.com/ishay60/mcpolyglot')}`,
|
|
29
|
+
], stdoutSink);
|
|
28
30
|
}
|
|
29
31
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAM5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAkB;IACnD,SAAS,CACP,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,6BAA6B,EAAE,EAC/E,UAAU,CACX,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAExD,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;SAC7E,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC/D,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,KAAK,CACH,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EACzF,IAAI,EACJ,UAAU,CACX,CAAC;IACF,SAAS,CACP;QACE,UAAU,EAAE,CAAC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;QAC/D,SAAS,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAE;KACpD,EACD,UAAU,CACX,CAAC;AACJ,CAAC"}
|
package/dist/ui.d.ts
CHANGED
|
@@ -11,12 +11,32 @@ export declare const sym: {
|
|
|
11
11
|
bullet: string;
|
|
12
12
|
pipe: string;
|
|
13
13
|
hor: string;
|
|
14
|
+
dot: string;
|
|
15
|
+
branch: string;
|
|
14
16
|
};
|
|
17
|
+
export type ChipKind = 'ok' | 'err' | 'warn' | 'info' | 'ready' | 'neutral';
|
|
15
18
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
19
|
+
* Pill-chip status indicator, e.g. ` OK ` on a green background. Inspired
|
|
20
|
+
* by GitHub Actions / Copilot CLI status pills. Falls back gracefully on
|
|
21
|
+
* terminals without color.
|
|
22
|
+
*/
|
|
23
|
+
export declare function chip(label: string, kind?: ChipKind): string;
|
|
24
|
+
export interface HeaderOptions {
|
|
25
|
+
version: string;
|
|
26
|
+
/** Sub-command name shown as a pill on the right (e.g. "doctor"). */
|
|
27
|
+
command?: string;
|
|
28
|
+
/** Single-line subtitle rendered under the wordmark. */
|
|
29
|
+
subtitle?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Boxed banner with rounded corners, the duotone wordmark, an optional
|
|
33
|
+
* sub-command pill on the right, and an optional subtitle line. This is the
|
|
34
|
+
* one piece every command opens with — it sets the visual frame.
|
|
35
|
+
*/
|
|
36
|
+
export declare function headerBar(opts: HeaderOptions, sink?: Sink): void;
|
|
37
|
+
/**
|
|
38
|
+
* Minimal banner without the box — kept for callers that want the older,
|
|
39
|
+
* lighter look (e.g. nested output). New code should prefer `headerBar`.
|
|
20
40
|
*/
|
|
21
41
|
export declare function banner(opts: {
|
|
22
42
|
version: string;
|
|
@@ -27,13 +47,34 @@ export declare function err(label: string, detail?: string, sink?: Sink): void;
|
|
|
27
47
|
export declare function warn(label: string, detail?: string, sink?: Sink): void;
|
|
28
48
|
export declare function info(label: string, detail?: string, sink?: Sink): void;
|
|
29
49
|
export declare function bullet(label: string, detail?: string, sink?: Sink): void;
|
|
50
|
+
/** Section title with a thin underline beneath it. */
|
|
30
51
|
export declare function section(title: string, sink?: Sink): void;
|
|
31
52
|
/** Vite-style "Local / Network" key/value column. Right-pads keys for alignment. */
|
|
32
53
|
export declare function kv(label: string, value: string, sink?: Sink): void;
|
|
33
54
|
export declare function divider(sink?: Sink): void;
|
|
34
|
-
/** "ready in 123 ms" —
|
|
55
|
+
/** "ready in 123 ms" — Copilot-style ready chip + dim duration. */
|
|
35
56
|
export declare function ready(ms: number, sink?: Sink): void;
|
|
36
57
|
export declare function hint(text: string, sink?: Sink): void;
|
|
58
|
+
/**
|
|
59
|
+
* Footer bar — separated row of keybinding / docs hints, each separated by
|
|
60
|
+
* a dim middle dot. Mirrors the bottom strip in modern TUIs.
|
|
61
|
+
*/
|
|
62
|
+
export declare function footerBar(items: string[], sink?: Sink): void;
|
|
63
|
+
/**
|
|
64
|
+
* Step indicator for multi-step flows like `init`. Renders as
|
|
65
|
+
* `[2/3] Pick a source`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function step(n: number, total: number, label: string, sink?: Sink): void;
|
|
68
|
+
export interface PanelOptions {
|
|
69
|
+
title?: string;
|
|
70
|
+
lines: string[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Bordered panel with rounded corners. Use sparingly — best for "next steps"
|
|
74
|
+
* or "wire into your agent" callouts where the visual frame helps the reader
|
|
75
|
+
* spot the actionable block.
|
|
76
|
+
*/
|
|
77
|
+
export declare function panel(opts: PanelOptions, sink?: Sink): void;
|
|
37
78
|
export interface Column {
|
|
38
79
|
header: string;
|
|
39
80
|
width?: number;
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AACvC,eAAO,MAAM,UAAU,EAAE,IAExB,CAAC;AACF,eAAO,MAAM,UAAU,EAAE,IAGxB,CAAC;AAMF,eAAO,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AACvC,eAAO,MAAM,UAAU,EAAE,IAExB,CAAC;AACF,eAAO,MAAM,UAAU,EAAE,IAGxB,CAAC;AAMF,eAAO,MAAM,GAAG;;;;;;;;;;;CAWf,CAAC;AAoDF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,QAAoB,GAAG,MAAM,CAiBtE;AAMD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAuB5E;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAOjG;AAkBD,wBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAEhF;AACD,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAEjF;AACD,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAElF;AACD,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAElF;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAEpF;AAMD,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAIpE;AAED,oFAAoF;AACpF,wBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAG9E;AAED,wBAAgB,OAAO,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI,CAErD;AAED,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAG/D;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAKxE;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAG3F;AAMD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAoBvE;AAMD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/B;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAiBxF;AAED,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,CAErD"}
|
package/dist/ui.js
CHANGED
|
@@ -18,18 +18,35 @@ export const sym = {
|
|
|
18
18
|
bullet: pc.dim('•'),
|
|
19
19
|
pipe: pc.dim('│'),
|
|
20
20
|
hor: pc.dim('─'),
|
|
21
|
+
dot: pc.dim('·'),
|
|
22
|
+
branch: pc.dim('└'),
|
|
21
23
|
};
|
|
22
24
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
23
|
-
/*
|
|
25
|
+
/* Width */
|
|
24
26
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
const MAX_WIDTH = 78;
|
|
28
|
+
const MIN_WIDTH = 56;
|
|
29
|
+
/** Width of the visual column we paint into. Prefers stderr (where banners go). */
|
|
30
|
+
function termWidth() {
|
|
31
|
+
const cols = process.stderr.columns ?? process.stdout.columns ?? 80;
|
|
32
|
+
return Math.max(MIN_WIDTH, Math.min(MAX_WIDTH, cols - 4));
|
|
33
|
+
}
|
|
34
|
+
function stripAnsi(s) {
|
|
35
|
+
// eslint-disable-next-line no-control-regex
|
|
36
|
+
return s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
37
|
+
}
|
|
38
|
+
function visibleLength(s) {
|
|
39
|
+
return stripAnsi(s).length;
|
|
40
|
+
}
|
|
41
|
+
function padRightAnsi(s, width) {
|
|
42
|
+
return s + ' '.repeat(Math.max(0, width - visibleLength(s)));
|
|
43
|
+
}
|
|
44
|
+
/* ────────────────────────────────────────────────────────────────────── */
|
|
45
|
+
/* Wordmark + gradient */
|
|
46
|
+
/* ────────────────────────────────────────────────────────────────────── */
|
|
47
|
+
/** Duotone "mcpolyglot" — cyan → magenta. */
|
|
48
|
+
function wordmark() {
|
|
49
|
+
return (pc.cyan('m') +
|
|
33
50
|
pc.cyan('c') +
|
|
34
51
|
pc.cyan('p') +
|
|
35
52
|
pc.magenta('o') +
|
|
@@ -38,11 +55,66 @@ export function banner(opts, sink = stderrSink) {
|
|
|
38
55
|
pc.magenta('g') +
|
|
39
56
|
pc.magenta('l') +
|
|
40
57
|
pc.magenta('o') +
|
|
41
|
-
pc.magenta('t');
|
|
58
|
+
pc.magenta('t'));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Pill-chip status indicator, e.g. ` OK ` on a green background. Inspired
|
|
62
|
+
* by GitHub Actions / Copilot CLI status pills. Falls back gracefully on
|
|
63
|
+
* terminals without color.
|
|
64
|
+
*/
|
|
65
|
+
export function chip(label, kind = 'neutral') {
|
|
66
|
+
const text = ` ${label} `;
|
|
67
|
+
switch (kind) {
|
|
68
|
+
case 'ok':
|
|
69
|
+
return pc.bgGreen(pc.black(pc.bold(text)));
|
|
70
|
+
case 'err':
|
|
71
|
+
return pc.bgRed(pc.white(pc.bold(text)));
|
|
72
|
+
case 'warn':
|
|
73
|
+
return pc.bgYellow(pc.black(pc.bold(text)));
|
|
74
|
+
case 'info':
|
|
75
|
+
return pc.bgCyan(pc.black(pc.bold(text)));
|
|
76
|
+
case 'ready':
|
|
77
|
+
return pc.bgGreen(pc.black(pc.bold(text)));
|
|
78
|
+
case 'neutral':
|
|
79
|
+
default:
|
|
80
|
+
return pc.inverse(pc.bold(text));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Boxed banner with rounded corners, the duotone wordmark, an optional
|
|
85
|
+
* sub-command pill on the right, and an optional subtitle line. This is the
|
|
86
|
+
* one piece every command opens with — it sets the visual frame.
|
|
87
|
+
*/
|
|
88
|
+
export function headerBar(opts, sink = stderrSink) {
|
|
89
|
+
const w = termWidth();
|
|
90
|
+
const inner = w - 2; // account for │ on each side
|
|
91
|
+
const left = `${pc.cyan('▲')} ${pc.bold(wordmark())}`;
|
|
92
|
+
const versionTag = pc.dim(`v${opts.version}`);
|
|
93
|
+
const cmdPill = opts.command ? `${chip(opts.command, 'info')} ` : '';
|
|
94
|
+
const right = `${cmdPill}${versionTag}`;
|
|
95
|
+
const gap = Math.max(2, inner - visibleLength(left) - visibleLength(right) - 2);
|
|
96
|
+
const top = pc.dim('╭' + '─'.repeat(inner) + '╮');
|
|
97
|
+
const titleLine = pc.dim('│ ') + left + ' '.repeat(gap) + right + pc.dim(' │');
|
|
98
|
+
const bottom = pc.dim('╰' + '─'.repeat(inner) + '╯');
|
|
99
|
+
sink('');
|
|
100
|
+
sink(` ${top}`);
|
|
101
|
+
sink(` ${titleLine}`);
|
|
102
|
+
if (opts.subtitle) {
|
|
103
|
+
const subPad = Math.max(0, inner - visibleLength(opts.subtitle) - 2);
|
|
104
|
+
sink(` ${pc.dim('│ ')}${pc.dim(opts.subtitle)}${' '.repeat(subPad)}${pc.dim(' │')}`);
|
|
105
|
+
}
|
|
106
|
+
sink(` ${bottom}`);
|
|
107
|
+
sink('');
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Minimal banner without the box — kept for callers that want the older,
|
|
111
|
+
* lighter look (e.g. nested output). New code should prefer `headerBar`.
|
|
112
|
+
*/
|
|
113
|
+
export function banner(opts, sink = stderrSink) {
|
|
42
114
|
const triangle = pc.cyan('▲');
|
|
43
115
|
const ver = pc.dim(`v${opts.version}`);
|
|
44
116
|
sink('');
|
|
45
|
-
sink(` ${triangle} ${pc.bold(wordmark)} ${ver}`);
|
|
117
|
+
sink(` ${triangle} ${pc.bold(wordmark())} ${ver}`);
|
|
46
118
|
if (opts.tagline)
|
|
47
119
|
sink(` ${pc.dim(opts.tagline)}`);
|
|
48
120
|
sink('');
|
|
@@ -50,17 +122,22 @@ export function banner(opts, sink = stderrSink) {
|
|
|
50
122
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
51
123
|
/* Status lines */
|
|
52
124
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
125
|
+
function status(k, glyph, label, detail, sink) {
|
|
126
|
+
const tag = chip(glyph, k);
|
|
127
|
+
const main = k === 'err' ? pc.red(label) : k === 'warn' ? pc.yellow(label) : label;
|
|
128
|
+
sink(` ${tag} ${main}${detail ? ' ' + pc.dim(detail) : ''}`);
|
|
129
|
+
}
|
|
53
130
|
export function ok(label, detail, sink = stderrSink) {
|
|
54
|
-
|
|
131
|
+
status('ok', 'OK', label, detail, sink);
|
|
55
132
|
}
|
|
56
133
|
export function err(label, detail, sink = stderrSink) {
|
|
57
|
-
|
|
134
|
+
status('err', 'ERR', label, detail, sink);
|
|
58
135
|
}
|
|
59
136
|
export function warn(label, detail, sink = stderrSink) {
|
|
60
|
-
|
|
137
|
+
status('warn', '!!', label, detail, sink);
|
|
61
138
|
}
|
|
62
139
|
export function info(label, detail, sink = stderrSink) {
|
|
63
|
-
|
|
140
|
+
status('info', 'i', label, detail, sink);
|
|
64
141
|
}
|
|
65
142
|
export function bullet(label, detail, sink = stderrSink) {
|
|
66
143
|
sink(` ${sym.bullet} ${label}${detail ? ' ' + pc.dim(detail) : ''}`);
|
|
@@ -68,9 +145,11 @@ export function bullet(label, detail, sink = stderrSink) {
|
|
|
68
145
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
69
146
|
/* Layout */
|
|
70
147
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
148
|
+
/** Section title with a thin underline beneath it. */
|
|
71
149
|
export function section(title, sink = stderrSink) {
|
|
72
150
|
sink('');
|
|
73
151
|
sink(` ${pc.bold(title)}`);
|
|
152
|
+
sink(` ${pc.dim('─'.repeat(Math.max(4, visibleLength(title))))}`);
|
|
74
153
|
}
|
|
75
154
|
/** Vite-style "Local / Network" key/value column. Right-pads keys for alignment. */
|
|
76
155
|
export function kv(label, value, sink = stderrSink) {
|
|
@@ -78,22 +157,64 @@ export function kv(label, value, sink = stderrSink) {
|
|
|
78
157
|
sink(` ${sym.arrow} ${pc.bold(pad)} ${value}`);
|
|
79
158
|
}
|
|
80
159
|
export function divider(sink = stderrSink) {
|
|
81
|
-
sink(` ${
|
|
160
|
+
sink(` ${pc.dim('─'.repeat(termWidth()))}`);
|
|
82
161
|
}
|
|
83
|
-
/** "ready in 123 ms" —
|
|
162
|
+
/** "ready in 123 ms" — Copilot-style ready chip + dim duration. */
|
|
84
163
|
export function ready(ms, sink = stderrSink) {
|
|
85
164
|
sink('');
|
|
86
|
-
sink(` ${
|
|
87
|
-
sink('');
|
|
165
|
+
sink(` ${chip('READY', 'ready')} ${pc.dim(`in ${ms} ms`)}`);
|
|
88
166
|
}
|
|
89
167
|
export function hint(text, sink = stderrSink) {
|
|
90
168
|
sink(` ${pc.dim(text)}`);
|
|
91
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Footer bar — separated row of keybinding / docs hints, each separated by
|
|
172
|
+
* a dim middle dot. Mirrors the bottom strip in modern TUIs.
|
|
173
|
+
*/
|
|
174
|
+
export function footerBar(items, sink = stderrSink) {
|
|
175
|
+
const sep = ` ${sym.dot} `;
|
|
176
|
+
sink('');
|
|
177
|
+
sink(` ${pc.dim(items.join(sep))}`);
|
|
178
|
+
sink('');
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Step indicator for multi-step flows like `init`. Renders as
|
|
182
|
+
* `[2/3] Pick a source`.
|
|
183
|
+
*/
|
|
184
|
+
export function step(n, total, label, sink = stderrSink) {
|
|
185
|
+
sink('');
|
|
186
|
+
sink(` ${chip(`${n}/${total}`, 'info')} ${pc.bold(label)}`);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Bordered panel with rounded corners. Use sparingly — best for "next steps"
|
|
190
|
+
* or "wire into your agent" callouts where the visual frame helps the reader
|
|
191
|
+
* spot the actionable block.
|
|
192
|
+
*/
|
|
193
|
+
export function panel(opts, sink = stderrSink) {
|
|
194
|
+
const w = termWidth();
|
|
195
|
+
const inner = w - 2;
|
|
196
|
+
const top = pc.dim('╭' + '─'.repeat(inner) + '╮');
|
|
197
|
+
const bottom = pc.dim('╰' + '─'.repeat(inner) + '╯');
|
|
198
|
+
sink('');
|
|
199
|
+
if (opts.title) {
|
|
200
|
+
const t = ` ${pc.bold(opts.title)} `;
|
|
201
|
+
const pad = Math.max(0, inner - visibleLength(t) - 2);
|
|
202
|
+
sink(` ${pc.dim('╭─')}${t}${pc.dim('─'.repeat(pad) + '╮')}`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
sink(` ${top}`);
|
|
206
|
+
}
|
|
207
|
+
for (const line of opts.lines) {
|
|
208
|
+
const pad = Math.max(0, inner - visibleLength(line) - 2);
|
|
209
|
+
sink(` ${pc.dim('│ ')}${line}${' '.repeat(pad)}${pc.dim(' │')}`);
|
|
210
|
+
}
|
|
211
|
+
sink(` ${bottom}`);
|
|
212
|
+
}
|
|
92
213
|
export function table(columns, rows, sink = stderrSink) {
|
|
93
|
-
const widths = columns.map((c, i) => Math.max(c.width ?? 0, c.header.length, ...rows.map((r) =>
|
|
214
|
+
const widths = columns.map((c, i) => Math.max(c.width ?? 0, c.header.length, ...rows.map((r) => visibleLength(r[i] ?? ''))));
|
|
94
215
|
const head = columns.map((c, i) => pc.bold(pc.dim(c.header.padEnd(widths[i])))).join(' ');
|
|
95
216
|
sink(` ${head}`);
|
|
96
|
-
sink(` ${widths.map((w) =>
|
|
217
|
+
sink(` ${widths.map((w) => pc.dim('─'.repeat(w))).join(' ')}`);
|
|
97
218
|
for (const row of rows) {
|
|
98
219
|
const line = columns
|
|
99
220
|
.map((c, i) => {
|
|
@@ -105,14 +226,6 @@ export function table(columns, rows, sink = stderrSink) {
|
|
|
105
226
|
sink(` ${line}`);
|
|
106
227
|
}
|
|
107
228
|
}
|
|
108
|
-
function stripAnsi(s) {
|
|
109
|
-
// eslint-disable-next-line no-control-regex
|
|
110
|
-
return s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
111
|
-
}
|
|
112
|
-
function padRightAnsi(s, width) {
|
|
113
|
-
const visible = stripAnsi(s).length;
|
|
114
|
-
return s + ' '.repeat(Math.max(0, width - visible));
|
|
115
|
-
}
|
|
116
229
|
/** Styled URL — cyan + underline, the Vite/Astro/Wrangler look. */
|
|
117
230
|
export function link(url, label = url) {
|
|
118
231
|
return pc.cyan(pc.underline(label === url ? url : label));
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,MAAM,CAAC,MAAM,UAAU,GAAS,CAAC,CAAC,EAAE,EAAE;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAS,CAAC,CAAC,EAAE,EAAE;IACpC,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IACjB,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAChB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;IACpB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACnB,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACjB,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;CACjB,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,IAA2C,EAAE,OAAa,UAAU;IACzF,MAAM,QAAQ,GACZ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACZ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACZ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACZ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,QAAQ,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,CAAC;AACX,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,MAAM,UAAU,EAAE,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IACxE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IACzE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IAC1E,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IAC1E,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IAC5E,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,OAAa,UAAU;IAC5D,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,OAAa,UAAU;IACtE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAa,UAAU;IAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,OAAa,UAAU;IACvD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,OAAa,UAAU;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAYD,MAAM,UAAU,KAAK,CAAC,OAAiB,EAAE,IAAgB,EAAE,OAAa,UAAU;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAC1F,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5F,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,4CAA4C;IAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,KAAa;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,KAAK,GAAG,GAAG;IAC3C,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|