@kwonye/mcpx 0.1.105 → 0.1.107

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 (75) hide show
  1. package/dist/adapters/codex.d.ts +2 -0
  2. package/dist/adapters/index.d.ts +2 -1
  3. package/dist/adapters/json.d.ts +26 -0
  4. package/dist/adapters/pi.d.ts +9 -0
  5. package/dist/chunk-0xt563m1.js +126 -0
  6. package/dist/chunk-131c6axh.js +127 -0
  7. package/dist/chunk-1yq3yb66.js +126 -0
  8. package/dist/chunk-2qbt2pxv.js +755 -0
  9. package/dist/chunk-3j4g9141.js +18 -0
  10. package/dist/{chunk-tnhekcpv.js → chunk-56z18csx.js} +1 -1
  11. package/dist/chunk-5r4vs8ct.js +18166 -0
  12. package/dist/{chunk-bnbz55g6.js → chunk-65kshh9w.js} +1 -1
  13. package/dist/{chunk-xydajvzg.js → chunk-7ky3rsw9.js} +1 -1
  14. package/dist/chunk-9bjabsqb.js +563 -0
  15. package/dist/chunk-9jqdtz2y.js +26 -0
  16. package/dist/{chunk-y9a1rx7j.js → chunk-ad74zhbk.js} +5 -3
  17. package/dist/chunk-eqcsd1kw.js +33 -0
  18. package/dist/chunk-ezk8txcy.js +23 -0
  19. package/dist/chunk-f7w0a9nn.js +30542 -0
  20. package/dist/{chunk-12vgqm89.js → chunk-gvjxpk98.js} +1 -1
  21. package/dist/{chunk-am903qjk.js → chunk-h2ex6pmn.js} +11 -5
  22. package/dist/chunk-jncje8g1.js +60 -0
  23. package/dist/{chunk-h158rkts.js → chunk-kjd00ez5.js} +17 -5
  24. package/dist/{chunk-6mxr34tc.js → chunk-mazydv41.js} +4 -3
  25. package/dist/chunk-mkf7gc7q.js +14 -0
  26. package/dist/{chunk-btbww96n.js → chunk-mztnw25b.js} +69 -56
  27. package/dist/{chunk-enzmq965.js → chunk-n0462d52.js} +1 -1
  28. package/dist/chunk-n5ahyh0j.js +254 -0
  29. package/dist/{chunk-t4hqf6yh.js → chunk-naeqpnmf.js} +8136 -8262
  30. package/dist/chunk-nx22h1y3.js +33 -0
  31. package/dist/chunk-p7yzyt87.js +19426 -0
  32. package/dist/chunk-q86c5s6r.js +7 -0
  33. package/dist/chunk-qg1rbk0d.js +825 -0
  34. package/dist/chunk-r1aebtwm.js +36 -0
  35. package/dist/{chunk-01s7rhx3.js → chunk-rbra8ws6.js} +130 -113
  36. package/dist/{chunk-91vcwk5m.js → chunk-v14bg5yp.js} +1 -1
  37. package/dist/{chunk-4y0t0tfj.js → chunk-vnka4jbe.js} +39 -3
  38. package/dist/chunk-z4j5q2x0.js +30 -0
  39. package/dist/chunk-z7ykm4da.js +138 -0
  40. package/dist/{chunk-d2v9rxy0.js → chunk-zmf014br.js} +12 -6
  41. package/dist/cli.js +3879 -1061
  42. package/dist/core/adoption.d.ts +62 -0
  43. package/dist/core/analytics.d.ts +17 -0
  44. package/dist/core/consumers.d.ts +8 -0
  45. package/dist/core/control.d.ts +18 -0
  46. package/dist/core/daemon.d.ts +2 -2
  47. package/dist/core/file-state.d.ts +7 -0
  48. package/dist/core/harnesses.d.ts +25 -0
  49. package/dist/core/index.d.ts +12 -4
  50. package/dist/core/index.js +109 -71
  51. package/dist/core/managed-index-lock.d.ts +1 -1
  52. package/dist/core/management.d.ts +32 -0
  53. package/dist/core/native-document.d.ts +4 -0
  54. package/dist/core/operations.d.ts +52 -0
  55. package/dist/core/plugin-projections.d.ts +1 -0
  56. package/dist/core/runtime-entry.d.ts +6 -0
  57. package/dist/core/runtime-snapshot.d.ts +6 -0
  58. package/dist/core/secret-keychain.d.ts +31 -0
  59. package/dist/core/secrets.d.ts +12 -2
  60. package/dist/core/served-skills.d.ts +62 -0
  61. package/dist/core/status.d.ts +1 -0
  62. package/dist/core/sync-plan.d.ts +14 -0
  63. package/dist/core/sync.d.ts +3 -0
  64. package/dist/core/telemetry.d.ts +2 -2
  65. package/dist/core/tui.d.ts +20 -0
  66. package/dist/core/verify-upstreams.d.ts +4 -0
  67. package/dist/core/work-limiter.d.ts +10 -0
  68. package/dist/gateway/server.d.ts +2 -0
  69. package/dist/types.d.ts +62 -1
  70. package/dist/util/fs.d.ts +2 -0
  71. package/dist/version.d.ts +1 -1
  72. package/package.json +1 -1
  73. package/dist/adapters/opencode.d.ts +0 -11
  74. package/dist/chunk-56whm3hm.js +0 -4055
  75. package/dist/chunk-fw8dyt89.js +0 -344
@@ -1,9 +1,19 @@
1
+ import type { SecretBackendKind } from "../types.js";
2
+ export interface SecretBackendSwitchResult {
3
+ backend: SecretBackendKind;
4
+ changed: boolean;
5
+ migrated: string[];
6
+ preserved: string[];
7
+ removedFrom: SecretBackendKind | null;
8
+ }
9
+ export declare function describeSecretBackend(backend: SecretBackendKind): string;
10
+ export declare function getSecretBackend(configPath?: string): SecretBackendKind;
11
+ export declare function switchSecretBackend(target: SecretBackendKind, configPath?: string): SecretBackendSwitchResult;
1
12
  export declare class SecretsManager {
2
13
  private readonly storePath;
3
14
  private readonly keyPath;
4
15
  constructor(storePath?: string, keyPath?: string);
5
- private readStore;
6
- private recoverCorruptStore;
16
+ get backend(): SecretBackendKind;
7
17
  listSecretNames(): string[];
8
18
  setSecret(name: string, value: string): void;
9
19
  removeSecret(name: string): void;
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import type { McpxConfig } from "../types.js";
3
+ export declare function skillVisible(config: McpxConfig, id: string, projectPath?: string): boolean;
4
+ declare const frontmatterSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ description: z.ZodString;
7
+ }, z.core.$loose>;
8
+ interface ServedSkill {
9
+ uri: string;
10
+ frontmatter: z.infer<typeof frontmatterSchema>;
11
+ resources: Array<{
12
+ uri: string;
13
+ digest: string;
14
+ size: number;
15
+ }>;
16
+ files: Map<string, Buffer>;
17
+ }
18
+ export declare function servedSkills(config: McpxConfig, projectPath?: string): ServedSkill[];
19
+ export declare function listServedSkills(config: McpxConfig, projectPath?: string, cursor?: string): {
20
+ ttlMs: number;
21
+ cacheScope: string;
22
+ nextCursor?: string | undefined;
23
+ resultType: string;
24
+ skills: {
25
+ uri: string;
26
+ frontmatter: z.infer<typeof frontmatterSchema>;
27
+ resources: Array<{
28
+ uri: string;
29
+ digest: string;
30
+ size: number;
31
+ }>;
32
+ }[];
33
+ };
34
+ export declare function getServedSkill(config: McpxConfig, uri: string, projectPath?: string): {
35
+ resultType: string;
36
+ skill: {
37
+ uri: string;
38
+ frontmatter: z.infer<typeof frontmatterSchema>;
39
+ resources: Array<{
40
+ uri: string;
41
+ digest: string;
42
+ size: number;
43
+ }>;
44
+ };
45
+ ttlMs: number;
46
+ cacheScope: string;
47
+ };
48
+ export declare function readServedSkill(config: McpxConfig, uri: string, projectPath?: string): {
49
+ contents: ({
50
+ text: string;
51
+ uri: string;
52
+ mimeType: string;
53
+ } | {
54
+ blob: string;
55
+ uri: string;
56
+ mimeType: string;
57
+ })[];
58
+ ttlMs: number;
59
+ cacheScope: string;
60
+ };
61
+ export {};
62
+ //# sourceMappingURL=served-skills.d.ts.map
@@ -32,6 +32,7 @@ export interface StatusReport {
32
32
  servers: StatusServerEntry[];
33
33
  clients: McpxConfig["clients"];
34
34
  projects?: McpxConfig["projects"];
35
+ fetchError?: string;
35
36
  totalGlobalTokens?: number;
36
37
  totalProjectTokens?: Record<string, number>;
37
38
  }
@@ -0,0 +1,14 @@
1
+ /** Read-only synchronization preview; credentials and raw configurations stay local. */
2
+ export declare function planSynchronization(targets?: string[]): {
3
+ revision: number;
4
+ harnesses: {
5
+ id: string;
6
+ configPath: string | null;
7
+ changes: {
8
+ name: string;
9
+ action: string;
10
+ }[];
11
+ message: string;
12
+ }[];
13
+ };
14
+ //# sourceMappingURL=sync-plan.d.ts.map
@@ -3,7 +3,10 @@ import { SecretsManager } from "./secrets.js";
3
3
  export interface SyncOptions {
4
4
  targetClients?: ClientId[];
5
5
  importScan?: boolean;
6
+ configPath?: string;
6
7
  }
8
+ /** Canonical sync transaction shared by the CLI, desktop service and plugins. */
9
+ export declare function synchronizeClients(options?: SyncOptions, secrets?: SecretsManager): Promise<SyncSummary>;
7
10
  export interface SyncSummary {
8
11
  gatewayUrl: string;
9
12
  imports: SyncImportReport;
@@ -17,9 +17,10 @@ declare const launchModeSchema: z.ZodEnum<{
17
17
  status: "status";
18
18
  clients: "clients";
19
19
  project: "project";
20
- skill: "skill";
21
20
  proxy: "proxy";
22
21
  auth: "auth";
22
+ skill: "skill";
23
+ list: "list";
23
24
  plugin: "plugin";
24
25
  desktop: "desktop";
25
26
  daemon: "daemon";
@@ -27,7 +28,6 @@ declare const launchModeSchema: z.ZodEnum<{
27
28
  remove: "remove";
28
29
  enable: "enable";
29
30
  disable: "disable";
30
- list: "list";
31
31
  sync: "sync";
32
32
  doctor: "doctor";
33
33
  secret: "secret";
@@ -0,0 +1,20 @@
1
+ type TuiRow = {
2
+ title: string;
3
+ state: string;
4
+ detail: string;
5
+ };
6
+ interface TuiFrameOptions {
7
+ width: number;
8
+ height: number;
9
+ revision: number;
10
+ view: number;
11
+ summary: string;
12
+ rows: TuiRow[];
13
+ selection: number;
14
+ details: string[];
15
+ status: string;
16
+ }
17
+ export declare function renderManagementTuiFrame(frame: TuiFrameOptions): string;
18
+ export declare function runManagementTui(cliPath: string): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { McpxConfig } from "../types.js";
2
+ /** Only discovery/list operations are used before retiring native registrations. */
3
+ export declare function verifyUpstreams(config: McpxConfig, names: string[]): Promise<void>;
4
+ //# sourceMappingURL=verify-upstreams.d.ts.map
@@ -0,0 +1,10 @@
1
+ /** Bounds work per upstream instance, including queued requests. */
2
+ export declare class WorkLimiter {
3
+ private readonly concurrency;
4
+ private readonly queueLimit;
5
+ private active;
6
+ private waiting;
7
+ constructor(concurrency?: number, queueLimit?: number);
8
+ run<T>(signal: AbortSignal, work: () => Promise<T>): Promise<T>;
9
+ }
10
+ //# sourceMappingURL=work-limiter.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import http from "node:http";
2
+ import { WorkLimiter } from "../core/work-limiter.js";
2
3
  import { Client } from "@modelcontextprotocol/client";
3
4
  import { StdioClientTransport } from "@modelcontextprotocol/client/stdio";
4
5
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/client";
@@ -10,6 +11,7 @@ interface GatewayServerOptions {
10
11
  secrets: SecretsManager;
11
12
  }
12
13
  interface UpstreamConnection {
14
+ limiter: WorkLimiter;
13
15
  fingerprint: string;
14
16
  client: Client;
15
17
  transport: StdioClientTransport | StreamableHTTPClientTransport;
package/dist/types.d.ts CHANGED
@@ -1,12 +1,15 @@
1
- export type ClientId = "claude" | "claude-desktop" | "codex" | "cursor" | "cline" | "opencode" | "kiro" | "vscode" | "qwen" | "openclaw" | "hermes";
1
+ /** Harness IDs come from the adapter registry, including project installations. */
2
+ export type ClientId = string;
2
3
  export type PluginComponent = "mcpServers" | "skills" | "hooks" | "agents" | "commands";
3
4
  export interface HttpServerSpec {
5
+ scope?: string;
4
6
  transport: "http";
5
7
  url: string;
6
8
  headers?: Record<string, string>;
7
9
  enabled?: boolean;
8
10
  }
9
11
  export interface StdioServerSpec {
12
+ scope?: string;
10
13
  transport: "stdio";
11
14
  command: string;
12
15
  args?: string[];
@@ -20,6 +23,8 @@ export interface GatewayConfig {
20
23
  tokenRef: string;
21
24
  autoStart: boolean;
22
25
  }
26
+ /** Where stored secrets live. `file` is the default encrypted file; `keychain` is opt-in. */
27
+ export type SecretBackendKind = "file" | "keychain";
23
28
  export type ClientStatus = "SYNCED" | "UNSUPPORTED_HTTP" | "ERROR" | "SKIPPED";
24
29
  export interface ClientSyncState {
25
30
  status: ClientStatus;
@@ -38,6 +43,44 @@ export interface ProjectScope {
38
43
  }
39
44
  export interface McpxConfig {
40
45
  schemaVersion: 1;
46
+ consumers?: Record<string, {
47
+ tokenRef: string;
48
+ projectPath?: string;
49
+ }>;
50
+ packages?: Record<string, {
51
+ id: string;
52
+ root: string;
53
+ source: string;
54
+ harness: string;
55
+ fingerprint: string;
56
+ pinned: boolean;
57
+ name?: string;
58
+ identity?: string;
59
+ servers?: string[];
60
+ skills?: Array<{
61
+ id: string;
62
+ path: string;
63
+ projectionPath: string;
64
+ }>;
65
+ scope?: string;
66
+ previous?: {
67
+ root: string;
68
+ fingerprint: string;
69
+ };
70
+ }>;
71
+ revision?: number;
72
+ harnesses?: Record<string, {
73
+ mode: "observe" | "selected" | "automatic";
74
+ }>;
75
+ origins?: Record<string, {
76
+ id: string;
77
+ kind: string;
78
+ harness: string;
79
+ source: string;
80
+ nativeKey: string;
81
+ fingerprint: string;
82
+ operationId: string;
83
+ }>;
41
84
  name?: string;
42
85
  gateway: GatewayConfig;
43
86
  servers: Record<string, UpstreamServerSpec>;
@@ -45,6 +88,9 @@ export interface McpxConfig {
45
88
  projects?: Record<string, ProjectConfig>;
46
89
  plugins?: Record<string, ManagedPlugin>;
47
90
  marketplaces?: Record<string, ManagedMarketplace>;
91
+ secrets?: {
92
+ backend: SecretBackendKind;
93
+ };
48
94
  }
49
95
  export interface ManagedEntry {
50
96
  fingerprint: string;
@@ -117,6 +163,9 @@ export interface SyncResult {
117
163
  driftedEntries?: string[];
118
164
  }
119
165
  export interface Skill {
166
+ projectionPath?: string;
167
+ scope?: string;
168
+ ownerHarness?: string;
120
169
  id: string;
121
170
  content: string;
122
171
  /** Canonical directory containing SKILL.md and optional resources. */
@@ -144,12 +193,24 @@ export interface PluginSyncResult {
144
193
  unsupported: PluginComponent[];
145
194
  error?: string;
146
195
  }
196
+ export interface HarnessDescriptor {
197
+ label?: string;
198
+ projectConfig?: string;
199
+ skillPath?: string;
200
+ projectSkills?: string;
201
+ skillLayout?: "dir" | "flat";
202
+ pluginComponents?: PluginComponent[];
203
+ }
147
204
  export interface ClientAdapter {
205
+ descriptor?: HarnessDescriptor;
206
+ managedName?(serverName: string): string;
148
207
  id: ClientId;
149
208
  detectConfigPath(): string | null;
150
209
  supportsHttp(): boolean;
151
210
  scanForImports(config: McpxConfig, managedIndex: ManagedIndex): ClientImportScanResult;
152
211
  syncGateway(config: McpxConfig, options: SyncClientOptions): SyncResult;
212
+ skillDirectory?(): string;
213
+ additionalSkillDirectories?(): string[];
153
214
  syncSkills?(skills: Skill[]): void;
154
215
  syncPlugins?(plugins: PluginSyncInput[]): PluginSyncResult;
155
216
  }
package/dist/util/fs.d.ts CHANGED
@@ -2,4 +2,6 @@ export declare function readJsonFile<T>(filePath: string, fallback: T): T;
2
2
  export declare function writeJsonAtomic(filePath: string, data: unknown): void;
3
3
  export declare function sha256(value: string): string;
4
4
  export declare function safeReadFile(filePath: string): string | null;
5
+ /** Native configuration must fail closed; malformed files are never reset. */
6
+ export declare function readJsonStrict<T>(filePath: string, fallback: T): T;
5
7
  //# sourceMappingURL=fs.d.ts.map
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const APP_VERSION = "0.1.3";
1
+ export declare const APP_VERSION = "0.1.107";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kwonye/mcpx",
3
- "version": "0.1.105",
3
+ "version": "0.1.107",
4
4
  "description": "HTTP-first MCP gateway and cross-client installer",
5
5
  "keywords": [
6
6
  "mcp",
@@ -1,11 +0,0 @@
1
- import type { ClientAdapter, ManagedIndex, McpxConfig, Skill, SyncClientOptions, SyncResult, PluginSyncInput, PluginSyncResult } from "../types.js";
2
- export declare class OpenCodeAdapter implements ClientAdapter {
3
- readonly id: "opencode";
4
- detectConfigPath(): string | null;
5
- supportsHttp(): boolean;
6
- syncPlugins(plugins: PluginSyncInput[]): PluginSyncResult;
7
- syncSkills(skills: Skill[]): void;
8
- scanForImports(_config: McpxConfig, managedIndex: ManagedIndex): import("../types.js").ClientImportScanResult;
9
- syncGateway(_config: McpxConfig, options: SyncClientOptions): SyncResult;
10
- }
11
- //# sourceMappingURL=opencode.d.ts.map