@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.
Files changed (47) hide show
  1. package/README.md +27 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/agents.test.d.ts +2 -0
  4. package/dist/__tests__/agents.test.d.ts.map +1 -0
  5. package/dist/__tests__/agents.test.js +172 -0
  6. package/dist/__tests__/agents.test.js.map +1 -0
  7. package/dist/__tests__/examples.test.d.ts +2 -0
  8. package/dist/__tests__/examples.test.d.ts.map +1 -0
  9. package/dist/__tests__/examples.test.js +140 -0
  10. package/dist/__tests__/examples.test.js.map +1 -0
  11. package/dist/__tests__/init-doctor.test.d.ts +2 -0
  12. package/dist/__tests__/init-doctor.test.d.ts.map +1 -0
  13. package/dist/__tests__/init-doctor.test.js +79 -0
  14. package/dist/__tests__/init-doctor.test.js.map +1 -0
  15. package/dist/bin.js +18 -4
  16. package/dist/bin.js.map +1 -1
  17. package/dist/commands/doctor-agents.d.ts +5 -0
  18. package/dist/commands/doctor-agents.d.ts.map +1 -0
  19. package/dist/commands/doctor-agents.js +33 -0
  20. package/dist/commands/doctor-agents.js.map +1 -0
  21. package/dist/commands/doctor.d.ts +10 -0
  22. package/dist/commands/doctor.d.ts.map +1 -1
  23. package/dist/commands/doctor.js +87 -6
  24. package/dist/commands/doctor.js.map +1 -1
  25. package/dist/commands/init.d.ts +16 -0
  26. package/dist/commands/init.d.ts.map +1 -1
  27. package/dist/commands/init.js +115 -23
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/serve.d.ts.map +1 -1
  30. package/dist/commands/serve.js +46 -9
  31. package/dist/commands/serve.js.map +1 -1
  32. package/dist/commands/token.d.ts +5 -0
  33. package/dist/commands/token.d.ts.map +1 -0
  34. package/dist/commands/token.js +23 -0
  35. package/dist/commands/token.js.map +1 -0
  36. package/dist/commands/tools.d.ts.map +1 -1
  37. package/dist/commands/tools.js +6 -4
  38. package/dist/commands/tools.js.map +1 -1
  39. package/dist/factory.d.ts +6 -2
  40. package/dist/factory.d.ts.map +1 -1
  41. package/dist/factory.js +84 -12
  42. package/dist/factory.js.map +1 -1
  43. package/dist/ui.d.ts +46 -5
  44. package/dist/ui.d.ts.map +1 -1
  45. package/dist/ui.js +141 -30
  46. package/dist/ui.js.map +1 -1
  47. 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
@@ -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,EAItB,MAAM,oBAAoB,CAAC;AAU5B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,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;iBA8H6B,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;CA9HhD,GAC1B,OAAO,CAAC,WAAW,CAAC,CAqDtB"}
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: { path: cfg.audit.path },
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
- async function buildConnector(src) {
56
- switch (src.kind) {
57
- case 'postgres': {
58
- const url = await resolveSecrets(src.url);
59
- return new SqlConnector({ id: src.id, dialect: new PostgresDialect(url) });
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
- case 'sqlite': {
62
- const url = await resolveSecrets(src.url);
63
- return new SqlConnector({ id: src.id, dialect: new SqliteDialect(url) });
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
- return new SqlConnector({ id: src.id, dialect: new MysqlDialect(url) });
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAKhB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAKL,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAW7D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAqB,EACrB,MAAM,GAAG,gBAAgB,EAAE;IAE3B,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,SAAS,GAA6B,EAAE,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,GAAsB,CAAC;YACnC,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC/B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;oBAClB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,OAAO;oBACnC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,OAAO;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,MAAM,KAAK,GAAG,oBAAoB,CAAC;QACjC,SAAS,EAAE;YACT,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,gBAAgB;YACzC,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,aAAa;SAC3C;QACD,KAAK,EAAE;YACL,8EAA8E;YAC9E,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;YAC3F,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU;gBACtB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE;gBAClE,CAAC,CAAC,EAAE,CAAC;SACR;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;YAC5C,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;SAC7C;QACD,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ;KAChC,CAAC,CAAC;IAEH,2FAA2F;IAC3F,qCAAqC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,KAAK;QACzB,CAAC,CAAC;YACE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM;YAC/B,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS;YACrC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ;SACpC;QACH,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;QACrB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO;QAC3B,UAAU;QACV,SAAS;QACT,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAClC,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC7E,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CAAC,GAAqB,EAAE,MAAmB;IACnE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;YACrF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,2BAA2B,KAAK,GAAG,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1D,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,4CAA4C,CAAC,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACN,kEAAkE;gBAClE,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACzB,MAAM,IAAI,WAAW,CACnB,6BAA6B,CAAC,CAAC,EAAE,SAAS,KAAK,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CACjF,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtD,UAAU,CAAC,IAAI,CACb,MAAM,cAAc,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAiB;IAC7C,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,OAAO,GACX,GAAG,CAAC,IAAI,KAAK,UAAU;gBACrB,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;gBACpC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ;oBACrB,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC;oBACxB,CAAC,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,YAAY,CAAC;gBACtB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO;gBACP,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC;gBACtB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxF,CAAC,CAAC;QACL,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO,IAAI,cAAc,CAAC;gBACxB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,GAAG;gBACH,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QACD,KAAK,SAAS;YACZ,MAAM,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,GAAG,CAAC;YAC/B,KAAK,WAAW,CAAC;YACjB,MAAM,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAoB;IACrC,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,WAAW,CAAC,8BAA8B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,WAAW,CAAC,KAAkB,EAAE,OAAuB;IACrE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClF,CAAC;AAED,SAAS,SAAS,CAAC,GAAiB;IAClC,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,OAAuB;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAS,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAuB;IACjD,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAuB;IACjD,MAAM,GAAG,GAA4D,EAAE,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;oBAC/B,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,CAAC,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,MAAgC,EAAE,EAAE;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AACpF,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
- * Vite/Astro-style banner: triangle, duotone wordmark, version chip, tagline.
17
- *
18
- * ▲ mcpolyglot v0.0.1
19
- * turn your databases into MCP servers
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" — the universal CLI flex. */
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;;;;;;;;;CASf,CAAC;AAMF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAkBjG;AAMD,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,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAGpE;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,kDAAkD;AAClD,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAI/D;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,IAAI,CAEhE;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;AAYD,mEAAmE;AACnE,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,CAErD"}
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
- /* Banner */
24
+ /* Width */
24
25
  /* ────────────────────────────────────────────────────────────────────── */
25
- /**
26
- * Vite/Astro-style banner: triangle, duotone wordmark, version chip, tagline.
27
- *
28
- * ▲ mcpolyglot v0.0.1
29
- * turn your databases into MCP servers
30
- */
31
- export function banner(opts, sink = stderrSink) {
32
- const wordmark = pc.cyan('m') +
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
- sink(` ${sym.ok} ${label}${detail ? ' ' + pc.dim(detail) : ''}`);
129
+ status('ok', 'OK', label, detail, sink);
55
130
  }
56
131
  export function err(label, detail, sink = stderrSink) {
57
- sink(` ${sym.err} ${pc.red(label)}${detail ? ' ' + pc.dim(detail) : ''}`);
132
+ status('err', 'ERR', label, detail, sink);
58
133
  }
59
134
  export function warn(label, detail, sink = stderrSink) {
60
- sink(` ${sym.warn} ${pc.yellow(label)}${detail ? ' ' + pc.dim(detail) : ''}`);
135
+ status('warn', '!!', label, detail, sink);
61
136
  }
62
137
  export function info(label, detail, sink = stderrSink) {
63
- sink(` ${sym.info} ${label}${detail ? ' ' + pc.dim(detail) : ''}`);
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(` ${sym.hor.repeat(50)}`);
158
+ sink(` ${pc.dim('─'.repeat(termWidth()))}`);
82
159
  }
83
- /** "ready in 123 ms" — the universal CLI flex. */
160
+ /** "ready in 123 ms" — Copilot-style ready chip + dim duration. */
84
161
  export function ready(ms, sink = stderrSink) {
85
162
  sink('');
86
- sink(` ${pc.green('ready')} ${pc.dim(`in ${ms} ms`)}`);
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) => stripAnsi(r[i] ?? '').length)));
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) => sym.hor.repeat(w)).join(' ')}`);
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcpolyglot/cli",
3
- "version": "0.1.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": "^0.7.0",
21
+ "@clack/prompts": "^1.7.0",
22
22
  "commander": "^14.0.3",
23
23
  "picocolors": "^1.1.0",
24
- "tsx": "^4.19.1",
25
- "@mcpolyglot/config": "^0.0.2",
26
- "@mcpolyglot/connector-mongo": "^0.1.0",
27
- "@mcpolyglot/connector-sql": "^0.1.0",
28
- "@mcpolyglot/core": "^0.1.0",
29
- "@mcpolyglot/security": "^0.0.2"
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
  },