@mcpolyglot/cli 0.1.0 → 0.3.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 +27 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/agents.test.d.ts +2 -0
- package/dist/__tests__/agents.test.d.ts.map +1 -0
- package/dist/__tests__/agents.test.js +172 -0
- package/dist/__tests__/agents.test.js.map +1 -0
- package/dist/__tests__/examples.test.d.ts +2 -0
- package/dist/__tests__/examples.test.d.ts.map +1 -0
- package/dist/__tests__/examples.test.js +140 -0
- package/dist/__tests__/examples.test.js.map +1 -0
- package/dist/__tests__/init-doctor.test.d.ts +2 -0
- package/dist/__tests__/init-doctor.test.d.ts.map +1 -0
- package/dist/__tests__/init-doctor.test.js +79 -0
- package/dist/__tests__/init-doctor.test.js.map +1 -0
- package/dist/bin.js +18 -4
- package/dist/bin.js.map +1 -1
- package/dist/commands/doctor-agents.d.ts +5 -0
- package/dist/commands/doctor-agents.d.ts.map +1 -0
- package/dist/commands/doctor-agents.js +33 -0
- package/dist/commands/doctor-agents.js.map +1 -0
- package/dist/commands/doctor.d.ts +10 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +87 -6
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +16 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +115 -23
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +46 -9
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/token.d.ts +5 -0
- package/dist/commands/token.d.ts.map +1 -0
- package/dist/commands/token.js +23 -0
- package/dist/commands/token.js.map +1 -0
- 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/factory.d.ts +6 -2
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +84 -12
- package/dist/factory.js.map +1 -1
- package/dist/ui.d.ts +46 -5
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +141 -30
- package/dist/ui.js.map +1 -1
- package/package.json +10 -8
package/dist/factory.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { McpolyglotServer, type Connector, type SecurityHooks } from '@mcpolyglot/core';
|
|
2
|
-
import { type McpolyglotConfig } from '@mcpolyglot/config';
|
|
1
|
+
import { McpolyglotServer, type AgentGrant, type Connector, type Scope, type SecurityHooks } from '@mcpolyglot/core';
|
|
2
|
+
import { type McpolyglotConfig, type SourceConfig, type AgentConfig } from '@mcpolyglot/config';
|
|
3
3
|
export interface BuiltServer {
|
|
4
4
|
server: McpolyglotServer;
|
|
5
5
|
hooks: SecurityHooks;
|
|
6
6
|
connectors: Connector[];
|
|
7
|
+
/** Present when `cfg.agents` is set. */
|
|
8
|
+
agents?: AgentGrant[];
|
|
7
9
|
perEntity: Record<string, {
|
|
8
10
|
enabled: boolean;
|
|
9
11
|
include?: string[];
|
|
@@ -16,4 +18,6 @@ export declare function buildServerFromConfig(cfg: McpolyglotConfig, logger?: {
|
|
|
16
18
|
warn: (msg: string, fields?: Record<string, unknown>) => void;
|
|
17
19
|
error: (msg: string, fields?: Record<string, unknown>) => void;
|
|
18
20
|
}): Promise<BuiltServer>;
|
|
21
|
+
/** An agent never gets a scope its sources don't grant. */
|
|
22
|
+
export declare function agentScopes(agent: AgentConfig, sources: SourceConfig[]): Scope[];
|
|
19
23
|
//# sourceMappingURL=factory.d.ts.map
|
package/dist/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAEjB,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAY5B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,wCAAwC;IACxC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACzF;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,MAAM;iBAyM6B,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAxC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAxC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;iBAAxC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAzMhD,GAC1B,OAAO,CAAC,WAAW,CAAC,CA+DtB;AA8FD,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,CAGhF"}
|
package/dist/factory.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { McpolyglotServer, ConfigError, } from '@mcpolyglot/core';
|
|
2
2
|
import { resolveSecrets, } from '@mcpolyglot/config';
|
|
3
3
|
import { defaultSecurityHooks } from '@mcpolyglot/security';
|
|
4
|
-
import { MysqlDialect, PostgresDialect, SqlConnector, SqliteDialect, } from '@mcpolyglot/connector-sql';
|
|
4
|
+
import { MysqlDialect, narrowPolicy, PolicySchema, PostgresDialect, SqlConnector, SqliteDialect, } from '@mcpolyglot/connector-sql';
|
|
5
5
|
import { MongoConnector } from '@mcpolyglot/connector-mongo';
|
|
6
6
|
export async function buildServerFromConfig(cfg, logger = makeStderrLogger()) {
|
|
7
7
|
const connectors = [];
|
|
@@ -19,12 +19,20 @@ export async function buildServerFromConfig(cfg, logger = makeStderrLogger()) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
const agents = cfg.agents ? await buildAgents(cfg, connectors) : undefined;
|
|
22
23
|
const hooks = defaultSecurityHooks({
|
|
23
24
|
rateLimit: {
|
|
24
25
|
perMinute: cfg.rateLimit.defaultPerMinute,
|
|
25
26
|
maxConcurrent: cfg.rateLimit.maxConcurrent,
|
|
26
27
|
},
|
|
27
|
-
audit: {
|
|
28
|
+
audit: {
|
|
29
|
+
// stdout carries the MCP protocol under stdio, so audit goes to stderr there.
|
|
30
|
+
console: cfg.audit.console ? (cfg.transport.kind === 'stdio' ? 'stderr' : 'stdout') : false,
|
|
31
|
+
...(cfg.audit.path ? { path: cfg.audit.path } : {}),
|
|
32
|
+
...(cfg.audit.webhookUrl
|
|
33
|
+
? { webhook: { url: await resolveSecrets(cfg.audit.webhookUrl) } }
|
|
34
|
+
: {}),
|
|
35
|
+
},
|
|
28
36
|
redactor: {
|
|
29
37
|
denyColumns: collectDenyColumns(cfg.sources),
|
|
30
38
|
customRules: collectCustomRules(cfg.sources),
|
|
@@ -48,24 +56,74 @@ export async function buildServerFromConfig(cfg, logger = makeStderrLogger()) {
|
|
|
48
56
|
perEntity,
|
|
49
57
|
scopes: collectScopes(cfg.sources),
|
|
50
58
|
security: { hooks, defaultLimits, defaultScopes: collectScopes(cfg.sources) },
|
|
59
|
+
...(agents ? { agents } : {}),
|
|
51
60
|
logger,
|
|
52
61
|
});
|
|
53
|
-
return { server, hooks, connectors, perEntity };
|
|
62
|
+
return { server, hooks, connectors, ...(agents ? { agents } : {}), perEntity };
|
|
54
63
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
/**
|
|
65
|
+
* One grant per agent. A source listed without a policy reuses the shared connector (and its
|
|
66
|
+
* pool); a per-agent policy gets its own connector — and its own DB connection.
|
|
67
|
+
*/
|
|
68
|
+
async function buildAgents(cfg, shared) {
|
|
69
|
+
const ids = new Set();
|
|
70
|
+
const hashes = new Set();
|
|
71
|
+
const out = [];
|
|
72
|
+
for (const a of cfg.agents ?? []) {
|
|
73
|
+
if (ids.has(a.id))
|
|
74
|
+
throw new ConfigError(`Duplicate agent id "${a.id}"`);
|
|
75
|
+
ids.add(a.id);
|
|
76
|
+
for (const t of a.tokens) {
|
|
77
|
+
if (hashes.has(t.hash))
|
|
78
|
+
throw new ConfigError(`Agent "${a.id}" reuses a token hash`);
|
|
79
|
+
hashes.add(t.hash);
|
|
60
80
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
81
|
+
const sources = [];
|
|
82
|
+
const connectors = [];
|
|
83
|
+
for (const [srcId, override] of Object.entries(a.sources)) {
|
|
84
|
+
const i = cfg.sources.findIndex((s) => s.id === srcId);
|
|
85
|
+
const src = cfg.sources[i];
|
|
86
|
+
if (!src)
|
|
87
|
+
throw new ConfigError(`Agent "${a.id}" lists unknown source "${srcId}"`);
|
|
88
|
+
sources.push(src);
|
|
89
|
+
if (!override.policy) {
|
|
90
|
+
connectors.push(shared[i]);
|
|
91
|
+
}
|
|
92
|
+
else if (src.kind === 'mongo' || src.kind === 'openapi') {
|
|
93
|
+
throw new ConfigError(`Agent "${a.id}": policy is only supported on SQL sources`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// An agent's policy can only narrow the source's, never widen it.
|
|
97
|
+
const agentPolicy = PolicySchema.safeParse(override.policy);
|
|
98
|
+
if (!agentPolicy.success) {
|
|
99
|
+
throw new ConfigError(`Invalid policy for agent "${a.id}" on "${srcId}": ${agentPolicy.error.message}`);
|
|
100
|
+
}
|
|
101
|
+
const base = sqlPolicy(src) ?? PolicySchema.parse({});
|
|
102
|
+
connectors.push(await buildConnector({ ...src, policy: narrowPolicy(base, agentPolicy.data) }));
|
|
103
|
+
}
|
|
64
104
|
}
|
|
105
|
+
out.push({ id: a.id, scopes: agentScopes(a, sources), connectors });
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
async function buildConnector(src) {
|
|
110
|
+
switch (src.kind) {
|
|
111
|
+
case 'postgres':
|
|
112
|
+
case 'sqlite':
|
|
65
113
|
case 'mysql':
|
|
66
114
|
case 'mariadb': {
|
|
67
115
|
const url = await resolveSecrets(src.url);
|
|
68
|
-
|
|
116
|
+
const dialect = src.kind === 'postgres'
|
|
117
|
+
? new PostgresDialect(url, src.pool)
|
|
118
|
+
: src.kind === 'sqlite'
|
|
119
|
+
? new SqliteDialect(url)
|
|
120
|
+
: new MysqlDialect(url, src.pool);
|
|
121
|
+
return new SqlConnector({
|
|
122
|
+
id: src.id,
|
|
123
|
+
dialect,
|
|
124
|
+
policy: sqlPolicy(src),
|
|
125
|
+
...(src.maxConcurrentQueries ? { maxConcurrentQueries: src.maxConcurrentQueries } : {}),
|
|
126
|
+
});
|
|
69
127
|
}
|
|
70
128
|
case 'mongo': {
|
|
71
129
|
const url = await resolveSecrets(src.url);
|
|
@@ -84,6 +142,20 @@ async function buildConnector(src) {
|
|
|
84
142
|
}
|
|
85
143
|
}
|
|
86
144
|
}
|
|
145
|
+
function sqlPolicy(src) {
|
|
146
|
+
if (!src.policy)
|
|
147
|
+
return undefined;
|
|
148
|
+
const parsed = PolicySchema.safeParse(src.policy);
|
|
149
|
+
if (!parsed.success) {
|
|
150
|
+
throw new ConfigError(`Invalid policy for source "${src.id}": ${parsed.error.message}`);
|
|
151
|
+
}
|
|
152
|
+
return parsed.data;
|
|
153
|
+
}
|
|
154
|
+
/** An agent never gets a scope its sources don't grant. */
|
|
155
|
+
export function agentScopes(agent, sources) {
|
|
156
|
+
const allowed = collectScopes(sources);
|
|
157
|
+
return agent.scopes ? agent.scopes.filter((s) => allowed.includes(s)) : allowed;
|
|
158
|
+
}
|
|
87
159
|
function getLimits(src) {
|
|
88
160
|
return src.limits;
|
|
89
161
|
}
|
package/dist/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
|
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,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/ui.js
CHANGED
|
@@ -3,7 +3,6 @@ export const stderrSink = (s) => {
|
|
|
3
3
|
process.stderr.write(s + '\n');
|
|
4
4
|
};
|
|
5
5
|
export const stdoutSink = (s) => {
|
|
6
|
-
// eslint-disable-next-line no-console
|
|
7
6
|
console.log(s);
|
|
8
7
|
};
|
|
9
8
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
@@ -18,18 +17,34 @@ export const sym = {
|
|
|
18
17
|
bullet: pc.dim('•'),
|
|
19
18
|
pipe: pc.dim('│'),
|
|
20
19
|
hor: pc.dim('─'),
|
|
20
|
+
dot: pc.dim('·'),
|
|
21
|
+
branch: pc.dim('└'),
|
|
21
22
|
};
|
|
22
23
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
23
|
-
/*
|
|
24
|
+
/* Width */
|
|
24
25
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const MAX_WIDTH = 78;
|
|
27
|
+
const MIN_WIDTH = 56;
|
|
28
|
+
/** Width of the visual column we paint into. Prefers stderr (where banners go). */
|
|
29
|
+
function termWidth() {
|
|
30
|
+
const cols = process.stderr.columns ?? process.stdout.columns ?? 80;
|
|
31
|
+
return Math.max(MIN_WIDTH, Math.min(MAX_WIDTH, cols - 4));
|
|
32
|
+
}
|
|
33
|
+
function stripAnsi(s) {
|
|
34
|
+
return s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
35
|
+
}
|
|
36
|
+
function visibleLength(s) {
|
|
37
|
+
return stripAnsi(s).length;
|
|
38
|
+
}
|
|
39
|
+
function padRightAnsi(s, width) {
|
|
40
|
+
return s + ' '.repeat(Math.max(0, width - visibleLength(s)));
|
|
41
|
+
}
|
|
42
|
+
/* ────────────────────────────────────────────────────────────────────── */
|
|
43
|
+
/* Wordmark + gradient */
|
|
44
|
+
/* ────────────────────────────────────────────────────────────────────── */
|
|
45
|
+
/** Duotone "mcpolyglot" — cyan → magenta. */
|
|
46
|
+
function wordmark() {
|
|
47
|
+
return (pc.cyan('m') +
|
|
33
48
|
pc.cyan('c') +
|
|
34
49
|
pc.cyan('p') +
|
|
35
50
|
pc.magenta('o') +
|
|
@@ -38,11 +53,66 @@ export function banner(opts, sink = stderrSink) {
|
|
|
38
53
|
pc.magenta('g') +
|
|
39
54
|
pc.magenta('l') +
|
|
40
55
|
pc.magenta('o') +
|
|
41
|
-
pc.magenta('t');
|
|
56
|
+
pc.magenta('t'));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Pill-chip status indicator, e.g. ` OK ` on a green background. Inspired
|
|
60
|
+
* by GitHub Actions / Copilot CLI status pills. Falls back gracefully on
|
|
61
|
+
* terminals without color.
|
|
62
|
+
*/
|
|
63
|
+
export function chip(label, kind = 'neutral') {
|
|
64
|
+
const text = ` ${label} `;
|
|
65
|
+
switch (kind) {
|
|
66
|
+
case 'ok':
|
|
67
|
+
return pc.bgGreen(pc.black(pc.bold(text)));
|
|
68
|
+
case 'err':
|
|
69
|
+
return pc.bgRed(pc.white(pc.bold(text)));
|
|
70
|
+
case 'warn':
|
|
71
|
+
return pc.bgYellow(pc.black(pc.bold(text)));
|
|
72
|
+
case 'info':
|
|
73
|
+
return pc.bgCyan(pc.black(pc.bold(text)));
|
|
74
|
+
case 'ready':
|
|
75
|
+
return pc.bgGreen(pc.black(pc.bold(text)));
|
|
76
|
+
case 'neutral':
|
|
77
|
+
default:
|
|
78
|
+
return pc.inverse(pc.bold(text));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Boxed banner with rounded corners, the duotone wordmark, an optional
|
|
83
|
+
* sub-command pill on the right, and an optional subtitle line. This is the
|
|
84
|
+
* one piece every command opens with — it sets the visual frame.
|
|
85
|
+
*/
|
|
86
|
+
export function headerBar(opts, sink = stderrSink) {
|
|
87
|
+
const w = termWidth();
|
|
88
|
+
const inner = w - 2; // account for │ on each side
|
|
89
|
+
const left = `${pc.cyan('▲')} ${pc.bold(wordmark())}`;
|
|
90
|
+
const versionTag = pc.dim(`v${opts.version}`);
|
|
91
|
+
const cmdPill = opts.command ? `${chip(opts.command, 'info')} ` : '';
|
|
92
|
+
const right = `${cmdPill}${versionTag}`;
|
|
93
|
+
const gap = Math.max(2, inner - visibleLength(left) - visibleLength(right) - 2);
|
|
94
|
+
const top = pc.dim('╭' + '─'.repeat(inner) + '╮');
|
|
95
|
+
const titleLine = pc.dim('│ ') + left + ' '.repeat(gap) + right + pc.dim(' │');
|
|
96
|
+
const bottom = pc.dim('╰' + '─'.repeat(inner) + '╯');
|
|
97
|
+
sink('');
|
|
98
|
+
sink(` ${top}`);
|
|
99
|
+
sink(` ${titleLine}`);
|
|
100
|
+
if (opts.subtitle) {
|
|
101
|
+
const subPad = Math.max(0, inner - visibleLength(opts.subtitle) - 2);
|
|
102
|
+
sink(` ${pc.dim('│ ')}${pc.dim(opts.subtitle)}${' '.repeat(subPad)}${pc.dim(' │')}`);
|
|
103
|
+
}
|
|
104
|
+
sink(` ${bottom}`);
|
|
105
|
+
sink('');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Minimal banner without the box — kept for callers that want the older,
|
|
109
|
+
* lighter look (e.g. nested output). New code should prefer `headerBar`.
|
|
110
|
+
*/
|
|
111
|
+
export function banner(opts, sink = stderrSink) {
|
|
42
112
|
const triangle = pc.cyan('▲');
|
|
43
113
|
const ver = pc.dim(`v${opts.version}`);
|
|
44
114
|
sink('');
|
|
45
|
-
sink(` ${triangle} ${pc.bold(wordmark)} ${ver}`);
|
|
115
|
+
sink(` ${triangle} ${pc.bold(wordmark())} ${ver}`);
|
|
46
116
|
if (opts.tagline)
|
|
47
117
|
sink(` ${pc.dim(opts.tagline)}`);
|
|
48
118
|
sink('');
|
|
@@ -50,17 +120,22 @@ export function banner(opts, sink = stderrSink) {
|
|
|
50
120
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
51
121
|
/* Status lines */
|
|
52
122
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
123
|
+
function status(k, glyph, label, detail, sink) {
|
|
124
|
+
const tag = chip(glyph, k);
|
|
125
|
+
const main = k === 'err' ? pc.red(label) : k === 'warn' ? pc.yellow(label) : label;
|
|
126
|
+
sink(` ${tag} ${main}${detail ? ' ' + pc.dim(detail) : ''}`);
|
|
127
|
+
}
|
|
53
128
|
export function ok(label, detail, sink = stderrSink) {
|
|
54
|
-
|
|
129
|
+
status('ok', 'OK', label, detail, sink);
|
|
55
130
|
}
|
|
56
131
|
export function err(label, detail, sink = stderrSink) {
|
|
57
|
-
|
|
132
|
+
status('err', 'ERR', label, detail, sink);
|
|
58
133
|
}
|
|
59
134
|
export function warn(label, detail, sink = stderrSink) {
|
|
60
|
-
|
|
135
|
+
status('warn', '!!', label, detail, sink);
|
|
61
136
|
}
|
|
62
137
|
export function info(label, detail, sink = stderrSink) {
|
|
63
|
-
|
|
138
|
+
status('info', 'i', label, detail, sink);
|
|
64
139
|
}
|
|
65
140
|
export function bullet(label, detail, sink = stderrSink) {
|
|
66
141
|
sink(` ${sym.bullet} ${label}${detail ? ' ' + pc.dim(detail) : ''}`);
|
|
@@ -68,9 +143,11 @@ export function bullet(label, detail, sink = stderrSink) {
|
|
|
68
143
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
69
144
|
/* Layout */
|
|
70
145
|
/* ────────────────────────────────────────────────────────────────────── */
|
|
146
|
+
/** Section title with a thin underline beneath it. */
|
|
71
147
|
export function section(title, sink = stderrSink) {
|
|
72
148
|
sink('');
|
|
73
149
|
sink(` ${pc.bold(title)}`);
|
|
150
|
+
sink(` ${pc.dim('─'.repeat(Math.max(4, visibleLength(title))))}`);
|
|
74
151
|
}
|
|
75
152
|
/** Vite-style "Local / Network" key/value column. Right-pads keys for alignment. */
|
|
76
153
|
export function kv(label, value, sink = stderrSink) {
|
|
@@ -78,22 +155,64 @@ export function kv(label, value, sink = stderrSink) {
|
|
|
78
155
|
sink(` ${sym.arrow} ${pc.bold(pad)} ${value}`);
|
|
79
156
|
}
|
|
80
157
|
export function divider(sink = stderrSink) {
|
|
81
|
-
sink(` ${
|
|
158
|
+
sink(` ${pc.dim('─'.repeat(termWidth()))}`);
|
|
82
159
|
}
|
|
83
|
-
/** "ready in 123 ms" —
|
|
160
|
+
/** "ready in 123 ms" — Copilot-style ready chip + dim duration. */
|
|
84
161
|
export function ready(ms, sink = stderrSink) {
|
|
85
162
|
sink('');
|
|
86
|
-
sink(` ${
|
|
87
|
-
sink('');
|
|
163
|
+
sink(` ${chip('READY', 'ready')} ${pc.dim(`in ${ms} ms`)}`);
|
|
88
164
|
}
|
|
89
165
|
export function hint(text, sink = stderrSink) {
|
|
90
166
|
sink(` ${pc.dim(text)}`);
|
|
91
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Footer bar — separated row of keybinding / docs hints, each separated by
|
|
170
|
+
* a dim middle dot. Mirrors the bottom strip in modern TUIs.
|
|
171
|
+
*/
|
|
172
|
+
export function footerBar(items, sink = stderrSink) {
|
|
173
|
+
const sep = ` ${sym.dot} `;
|
|
174
|
+
sink('');
|
|
175
|
+
sink(` ${pc.dim(items.join(sep))}`);
|
|
176
|
+
sink('');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Step indicator for multi-step flows like `init`. Renders as
|
|
180
|
+
* `[2/3] Pick a source`.
|
|
181
|
+
*/
|
|
182
|
+
export function step(n, total, label, sink = stderrSink) {
|
|
183
|
+
sink('');
|
|
184
|
+
sink(` ${chip(`${n}/${total}`, 'info')} ${pc.bold(label)}`);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Bordered panel with rounded corners. Use sparingly — best for "next steps"
|
|
188
|
+
* or "wire into your agent" callouts where the visual frame helps the reader
|
|
189
|
+
* spot the actionable block.
|
|
190
|
+
*/
|
|
191
|
+
export function panel(opts, sink = stderrSink) {
|
|
192
|
+
const w = termWidth();
|
|
193
|
+
const inner = w - 2;
|
|
194
|
+
const top = pc.dim('╭' + '─'.repeat(inner) + '╮');
|
|
195
|
+
const bottom = pc.dim('╰' + '─'.repeat(inner) + '╯');
|
|
196
|
+
sink('');
|
|
197
|
+
if (opts.title) {
|
|
198
|
+
const t = ` ${pc.bold(opts.title)} `;
|
|
199
|
+
const pad = Math.max(0, inner - visibleLength(t) - 2);
|
|
200
|
+
sink(` ${pc.dim('╭─')}${t}${pc.dim('─'.repeat(pad) + '╮')}`);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
sink(` ${top}`);
|
|
204
|
+
}
|
|
205
|
+
for (const line of opts.lines) {
|
|
206
|
+
const pad = Math.max(0, inner - visibleLength(line) - 2);
|
|
207
|
+
sink(` ${pc.dim('│ ')}${line}${' '.repeat(pad)}${pc.dim(' │')}`);
|
|
208
|
+
}
|
|
209
|
+
sink(` ${bottom}`);
|
|
210
|
+
}
|
|
92
211
|
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) =>
|
|
212
|
+
const widths = columns.map((c, i) => Math.max(c.width ?? 0, c.header.length, ...rows.map((r) => visibleLength(r[i] ?? ''))));
|
|
94
213
|
const head = columns.map((c, i) => pc.bold(pc.dim(c.header.padEnd(widths[i])))).join(' ');
|
|
95
214
|
sink(` ${head}`);
|
|
96
|
-
sink(` ${widths.map((w) =>
|
|
215
|
+
sink(` ${widths.map((w) => pc.dim('─'.repeat(w))).join(' ')}`);
|
|
97
216
|
for (const row of rows) {
|
|
98
217
|
const line = columns
|
|
99
218
|
.map((c, i) => {
|
|
@@ -105,14 +224,6 @@ export function table(columns, rows, sink = stderrSink) {
|
|
|
105
224
|
sink(` ${line}`);
|
|
106
225
|
}
|
|
107
226
|
}
|
|
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
227
|
/** Styled URL — cyan + underline, the Vite/Astro/Wrangler look. */
|
|
117
228
|
export function link(url, label = url) {
|
|
118
229
|
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":"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"}
|
|
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,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;IAChB,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAChB,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;CACpB,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,mFAAmF;AACnF,SAAS,SAAS;IAChB,MAAM,IAAI,GAAI,OAAO,CAAC,MAA+B,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9F,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,KAAa;IAC5C,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,6CAA6C;AAC7C,SAAS,QAAQ;IACf,OAAO,CACL,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,CAChB,CAAC;AACJ,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,OAAiB,SAAS;IAC5D,MAAM,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC;IAC1B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,SAAS,CAAC;QACf;YACE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB,EAAE,OAAa,UAAU;IACpE,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B;IAElD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC;IAExC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IACpB,IAAI,CAAC,EAAE,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,IAA2C,EAAE,OAAa,UAAU;IACzF,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,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACtD,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,SAAS,MAAM,CACb,CAAW,EACX,KAAa,EACb,KAAa,EACb,MAA0B,EAC1B,IAAU;IAEV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnF,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IACxE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IACzE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IAC1E,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,MAAe,EAAE,OAAa,UAAU;IAC1E,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3C,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,sDAAsD;AACtD,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;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrE,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,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,OAAa,UAAU;IACvD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAChE,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;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAe,EAAE,OAAa,UAAU;IAChE,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,CAAS,EAAE,KAAa,EAAE,KAAa,EAAE,OAAa,UAAU;IACnF,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,IAAkB,EAAE,OAAa,UAAU;IAC/D,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IAEpB,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;AACtB,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,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACvF,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,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,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,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcpolyglot/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "mcpolyglot command-line interface. Initializes config, serves the MCP server (stdio or HTTP), and validates connectivity.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -18,18 +18,20 @@
|
|
|
18
18
|
"dist"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@clack/prompts": "^
|
|
21
|
+
"@clack/prompts": "^1.7.0",
|
|
22
22
|
"commander": "^14.0.3",
|
|
23
23
|
"picocolors": "^1.1.0",
|
|
24
|
-
"tsx": "^4.
|
|
25
|
-
"@mcpolyglot/config": "^0.0
|
|
26
|
-
"@mcpolyglot/connector-mongo": "^0.1
|
|
27
|
-
"@mcpolyglot/connector-sql": "^0.
|
|
28
|
-
"@mcpolyglot/core": "^0.
|
|
29
|
-
"@mcpolyglot/security": "^0.0
|
|
24
|
+
"tsx": "^4.23.1",
|
|
25
|
+
"@mcpolyglot/config": "^0.2.0",
|
|
26
|
+
"@mcpolyglot/connector-mongo": "^0.2.1",
|
|
27
|
+
"@mcpolyglot/connector-sql": "^0.3.0",
|
|
28
|
+
"@mcpolyglot/core": "^0.3.0",
|
|
29
|
+
"@mcpolyglot/security": "^0.1.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
+
"@types/better-sqlite3": "^7.6.11",
|
|
32
33
|
"@types/node": "^25.6.0",
|
|
34
|
+
"better-sqlite3": "^12.4.1",
|
|
33
35
|
"typescript": "^6.0.3",
|
|
34
36
|
"vitest": "^2.1.1"
|
|
35
37
|
},
|