zynocode 0.0.0-stage → 1.0.1

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -2
  3. package/dist/api-client.d.ts +24 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +67 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/commands/config.d.ts +6 -0
  8. package/dist/commands/config.d.ts.map +1 -0
  9. package/dist/commands/config.js +43 -0
  10. package/dist/commands/config.js.map +1 -0
  11. package/dist/commands/doctor.d.ts +6 -0
  12. package/dist/commands/doctor.d.ts.map +1 -0
  13. package/dist/commands/doctor.js +48 -0
  14. package/dist/commands/doctor.js.map +1 -0
  15. package/dist/commands/login.d.ts +6 -0
  16. package/dist/commands/login.d.ts.map +1 -0
  17. package/dist/commands/login.js +26 -0
  18. package/dist/commands/login.js.map +1 -0
  19. package/dist/commands/mcp-serve.d.ts +8 -0
  20. package/dist/commands/mcp-serve.d.ts.map +1 -0
  21. package/dist/commands/mcp-serve.js +120 -0
  22. package/dist/commands/mcp-serve.js.map +1 -0
  23. package/dist/commands/run.d.ts +7 -0
  24. package/dist/commands/run.d.ts.map +1 -0
  25. package/dist/commands/run.js +85 -0
  26. package/dist/commands/run.js.map +1 -0
  27. package/dist/commands/search.d.ts +6 -0
  28. package/dist/commands/search.d.ts.map +1 -0
  29. package/dist/commands/search.js +46 -0
  30. package/dist/commands/search.js.map +1 -0
  31. package/dist/commands/tools.d.ts +6 -0
  32. package/dist/commands/tools.d.ts.map +1 -0
  33. package/dist/commands/tools.js +52 -0
  34. package/dist/commands/tools.js.map +1 -0
  35. package/dist/commands/version.d.ts +5 -0
  36. package/dist/commands/version.d.ts.map +1 -0
  37. package/dist/commands/version.js +19 -0
  38. package/dist/commands/version.js.map +1 -0
  39. package/dist/config-store.d.ts +15 -0
  40. package/dist/config-store.d.ts.map +1 -0
  41. package/dist/config-store.js +52 -0
  42. package/dist/config-store.js.map +1 -0
  43. package/dist/index.d.ts +18 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +98 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/sdk/index.d.ts +40 -0
  48. package/dist/sdk/index.d.ts.map +1 -0
  49. package/dist/sdk/index.js +122 -0
  50. package/dist/sdk/index.js.map +1 -0
  51. package/dist/sdk/types.d.ts +56 -0
  52. package/dist/sdk/types.d.ts.map +1 -0
  53. package/dist/sdk/types.js +7 -0
  54. package/dist/sdk/types.js.map +1 -0
  55. package/package.json +59 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Zynocode Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,144 @@
1
- # Temporary Holding Version
1
+ # zynocode
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Official command-line interface for the Zynocode Labs Developer Platform. Execute developer, calculator, and text utilities from your terminal, run diagnostics, and expose local Model Context Protocol (MCP) servers for AI assistants (Cursor, Claude Desktop, VS Code).
4
+
5
+ - **Documentation**: [labs.zynocode.com/developers/cli](https://labs.zynocode.com/developers/cli)
6
+ - **Source Code**: [github.com/zynocode/zynocode-labs-free-tools/tree/main/packages/cli](https://github.com/zynocode/zynocode-labs-free-tools/tree/main/packages/cli)
7
+ - **npm Package**: [zynocode](https://www.npmjs.com/package/zynocode)
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g zynocode
13
+ ```
14
+
15
+ Or run directly without installing via `npx`:
16
+
17
+ ```bash
18
+ npx zynocode --help
19
+ ```
20
+
21
+ ## Prerequisites
22
+
23
+ - Node.js >= 18.0.0
24
+
25
+ ## Quick Start
26
+
27
+ ### 1. Authenticate
28
+
29
+ Get your API key from the [Zynocode Labs Developer Portal](https://labs.zynocode.com/developers/api-reference):
30
+
31
+ ```bash
32
+ zynocode login zyno_ak_your_api_key_here
33
+ ```
34
+
35
+ Stored securely in `~/.zynocode/config.json`.
36
+
37
+ ### 2. Verify Connectivity
38
+
39
+ ```bash
40
+ zynocode doctor
41
+ ```
42
+
43
+ Output:
44
+ ```text
45
+ Zynocode Doctor
46
+
47
+ ✓ API key configured
48
+ ✓ API URL: https://labs.zynocode.com
49
+ ✓ API reachable — 77 tools available
50
+ ✓ Node.js v20.x.x
51
+
52
+ All checks passed ✓
53
+ ```
54
+
55
+ ### 3. List and Search Tools
56
+
57
+ ```bash
58
+ # List all available tools grouped by category
59
+ zynocode tools
60
+
61
+ # Filter tools by category
62
+ zynocode tools --category=developer
63
+
64
+ # Search tools by keyword or tag
65
+ zynocode search json
66
+ ```
67
+
68
+ ### 4. Execute a Tool
69
+
70
+ Run tools directly with `--param`:
71
+
72
+ ```bash
73
+ zynocode run json-formatter --param jsonText='{"name":"Zynocode","active":true}' --param indent=2
74
+ ```
75
+
76
+ Pass structured inputs or stream responses where supported:
77
+
78
+ ```bash
79
+ zynocode run base64-encoder --param text="Hello World" --param mode="encode"
80
+ ```
81
+
82
+ ### 5. Model Context Protocol (MCP) Server
83
+
84
+ Start a stdio MCP server for AI IDEs and desktop clients:
85
+
86
+ ```bash
87
+ zynocode mcp-serve
88
+ ```
89
+
90
+ #### Claude Desktop Configuration (`claude_desktop_config.json`)
91
+
92
+ ```json
93
+ {
94
+ "mcpServers": {
95
+ "zynocode": {
96
+ "command": "npx",
97
+ "args": ["-y", "zynocode", "mcp-serve"],
98
+ "env": {
99
+ "ZYNOCODE_API_KEY": "zyno_ak_your_key_here"
100
+ }
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
106
+ #### Cursor Configuration (`~/.cursor/mcp.json`)
107
+
108
+ ```json
109
+ {
110
+ "mcpServers": {
111
+ "zynocode": {
112
+ "command": "npx",
113
+ "args": ["-y", "zynocode", "mcp-serve"],
114
+ "env": {
115
+ "ZYNOCODE_API_KEY": "zyno_ak_your_key_here"
116
+ }
117
+ }
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## CLI Commands
123
+
124
+ | Command | Description |
125
+ |---|---|
126
+ | `zynocode login <api-key>` | Authenticate and persist API key to local config |
127
+ | `zynocode logout` | Clear saved credentials |
128
+ | `zynocode tools [--category=X] [--json]` | List all registered tools in the platform catalog |
129
+ | `zynocode search <query>` | Search tools by name, description, slug, or tag |
130
+ | `zynocode run <slug> [--param key=value]` | Execute a tool via the REST API |
131
+ | `zynocode config [list\|get\|set]` | Inspect or modify CLI configuration |
132
+ | `zynocode doctor` | Verify connectivity, API key validity, and Node.js version |
133
+ | `zynocode version` | Display the installed CLI version |
134
+ | `zynocode mcp-serve` | Run stdio JSON-RPC 2.0 MCP server for AI agents |
135
+
136
+ ## Configuration & Environment Variables
137
+
138
+ - `ZYNOCODE_API_URL`: Override the target API endpoint (default: `https://labs.zynocode.com`).
139
+ - `ZYNOCODE_API_KEY`: Fallback API key used if not logged in via `login`.
140
+ - Config file location: `~/.zynocode/config.json`.
141
+
142
+ ## License
143
+
144
+ MIT © [Zynocode Labs](https://labs.zynocode.com)
@@ -0,0 +1,24 @@
1
+ /**
2
+ * API Client
3
+ * HTTP client wrapper for Zynocode Labs REST API.
4
+ * Uses Node 18+ built-in fetch. Zero dependencies.
5
+ */
6
+ interface APIResponse<T = unknown> {
7
+ success: boolean;
8
+ data?: T;
9
+ error?: string;
10
+ executionTimeMs?: number;
11
+ }
12
+ export declare class ApiClient {
13
+ private apiUrl;
14
+ private apiKey;
15
+ constructor(apiUrl?: string, apiKey?: string);
16
+ private getHeaders;
17
+ get<T = unknown>(path: string): Promise<T>;
18
+ post<T = unknown>(path: string, body: unknown): Promise<T>;
19
+ executeTool(slug: string, params: Record<string, unknown>): Promise<APIResponse>;
20
+ listTools(): Promise<unknown>;
21
+ streamTool(slug: string, params: Record<string, unknown>): Promise<Response>;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,UAAU,WAAW,CAAC,CAAC,GAAG,OAAO;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAM5C,OAAO,CAAC,UAAU;IAWZ,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAY1C,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAa1D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAIhF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;CAQnF"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * API Client
4
+ * HTTP client wrapper for Zynocode Labs REST API.
5
+ * Uses Node 18+ built-in fetch. Zero dependencies.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ApiClient = void 0;
9
+ const config_store_js_1 = require("./config-store.js");
10
+ class ApiClient {
11
+ apiUrl;
12
+ apiKey;
13
+ constructor(apiUrl, apiKey) {
14
+ const config = (0, config_store_js_1.loadConfig)();
15
+ this.apiUrl = apiUrl || config.apiUrl;
16
+ this.apiKey = apiKey || config.apiKey;
17
+ }
18
+ getHeaders() {
19
+ const headers = {
20
+ "Content-Type": "application/json",
21
+ "User-Agent": "zynocode-cli/1.0.1",
22
+ };
23
+ if (this.apiKey) {
24
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
25
+ }
26
+ return headers;
27
+ }
28
+ async get(path) {
29
+ const res = await fetch(`${this.apiUrl}${path}`, {
30
+ method: "GET",
31
+ headers: this.getHeaders(),
32
+ });
33
+ if (!res.ok) {
34
+ const body = await res.text();
35
+ throw new Error(`API error ${res.status}: ${body}`);
36
+ }
37
+ return res.json();
38
+ }
39
+ async post(path, body) {
40
+ const res = await fetch(`${this.apiUrl}${path}`, {
41
+ method: "POST",
42
+ headers: this.getHeaders(),
43
+ body: JSON.stringify(body),
44
+ });
45
+ if (!res.ok) {
46
+ const text = await res.text();
47
+ throw new Error(`API error ${res.status}: ${text}`);
48
+ }
49
+ return res.json();
50
+ }
51
+ async executeTool(slug, params) {
52
+ return this.post(`/api/v1/tools/${slug}`, params);
53
+ }
54
+ async listTools() {
55
+ return this.get("/api/v1/mcp/manifest");
56
+ }
57
+ async streamTool(slug, params) {
58
+ const res = await fetch(`${this.apiUrl}/api/v1/tools/${slug}/stream`, {
59
+ method: "POST",
60
+ headers: this.getHeaders(),
61
+ body: JSON.stringify({ params }),
62
+ });
63
+ return res;
64
+ }
65
+ }
66
+ exports.ApiClient = ApiClient;
67
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,uDAA+C;AAS/C,MAAa,SAAS;IACZ,MAAM,CAAS;IACf,MAAM,CAAqB;IAEnC,YAAY,MAAe,EAAE,MAAe;QAC1C,MAAM,MAAM,GAAG,IAAA,4BAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IACxC,CAAC;IAEO,UAAU;QAChB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,oBAAoB;SACnC,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAc,IAAY;QACjC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;YAC/C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAc,IAAY,EAAE,IAAa;QACjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,MAA+B;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAA+B;QAC5D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,iBAAiB,IAAI,SAAS,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACjC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA9DD,8BA8DC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI: config command
3
+ * Get/set CLI configuration.
4
+ */
5
+ export declare function configCommand(args: string[]): Promise<void>;
6
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCjE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * CLI: config command
4
+ * Get/set CLI configuration.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.configCommand = configCommand;
8
+ const config_store_js_1 = require("../config-store.js");
9
+ async function configCommand(args) {
10
+ const action = args[0]; // get, set, list
11
+ if (!action || action === "list") {
12
+ const config = (0, config_store_js_1.loadConfig)();
13
+ console.log("\n Zynocode CLI Configuration:\n");
14
+ console.log(` apiUrl: ${config.apiUrl}`);
15
+ console.log(` apiKey: ${config.apiKey ? config.apiKey.substring(0, 12) + "..." : "(not set)"}`);
16
+ console.log(` defaultWorkspace: ${config.defaultWorkspace || "(not set)"}`);
17
+ console.log();
18
+ return;
19
+ }
20
+ if (action === "get") {
21
+ const key = args[1];
22
+ if (!key) {
23
+ console.log(" Usage: zynocode config get <key>");
24
+ return;
25
+ }
26
+ const config = (0, config_store_js_1.loadConfig)();
27
+ console.log(config[key] || "(not set)");
28
+ return;
29
+ }
30
+ if (action === "set") {
31
+ const key = args[1];
32
+ const value = args[2];
33
+ if (!key || !value) {
34
+ console.log(" Usage: zynocode config set <key> <value>");
35
+ return;
36
+ }
37
+ (0, config_store_js_1.setConfigValue)(key, value);
38
+ console.log(` ✓ ${key} = ${value}`);
39
+ return;
40
+ }
41
+ console.log(" Usage: zynocode config [list|get|set]");
42
+ }
43
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,sCAqCC;AAvCD,wDAAgF;AAEzE,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAEzC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAA,4BAAU,GAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,gBAAgB,IAAI,WAAW,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAyB,CAAC;QAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,4BAAU,GAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAyB,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,IAAA,gCAAc,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI: doctor command
3
+ * Checks connectivity, auth, and version.
4
+ */
5
+ export declare function doctorCommand(): Promise<void>;
6
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCnD"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * CLI: doctor command
4
+ * Checks connectivity, auth, and version.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.doctorCommand = doctorCommand;
8
+ const config_store_js_1 = require("../config-store.js");
9
+ const api_client_js_1 = require("../api-client.js");
10
+ async function doctorCommand() {
11
+ const config = (0, config_store_js_1.loadConfig)();
12
+ let ok = true;
13
+ console.log("\n Zynocode Doctor\n");
14
+ // 1. Config check
15
+ if (config.apiKey) {
16
+ console.log(" ✓ API key configured");
17
+ }
18
+ else {
19
+ console.log(" ✗ API key not set (run: zynocode login <key>)");
20
+ ok = false;
21
+ }
22
+ console.log(` ✓ API URL: ${config.apiUrl}`);
23
+ // 2. Connectivity check
24
+ try {
25
+ const client = new api_client_js_1.ApiClient();
26
+ const manifest = (await client.listTools());
27
+ console.log(` ✓ API reachable — ${manifest.totalTools} tools available`);
28
+ }
29
+ catch (err) {
30
+ const e = err;
31
+ console.log(` ✗ API unreachable: ${e.message}`);
32
+ ok = false;
33
+ }
34
+ // 3. Node version check
35
+ const nodeVersion = process.version;
36
+ const major = parseInt(nodeVersion.slice(1).split(".")[0], 10);
37
+ if (major >= 18) {
38
+ console.log(` ✓ Node.js ${nodeVersion}`);
39
+ }
40
+ else {
41
+ console.log(` ✗ Node.js ${nodeVersion} — requires >=18.0.0`);
42
+ ok = false;
43
+ }
44
+ console.log();
45
+ console.log(ok ? " All checks passed ✓" : " Some checks failed ✗");
46
+ console.log();
47
+ }
48
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAKH,sCAwCC;AA3CD,wDAAgD;AAChD,oDAA6C;AAEtC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,IAAA,4BAAU,GAAE,CAAC;IAC5B,IAAI,EAAE,GAAG,IAAI,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErC,kBAAkB;IAClB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,EAAE,GAAG,KAAK,CAAC;IACb,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7C,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,yBAAS,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAA2B,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,UAAU,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAY,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,EAAE,GAAG,KAAK,CAAC;IACb,CAAC;IAED,wBAAwB;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,sBAAsB,CAAC,CAAC;QAC9D,EAAE,GAAG,KAAK,CAAC;IACb,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI: login command
3
+ * Stores API key in ~/.zynocode/config.json
4
+ */
5
+ export declare function loginCommand(args: string[]): Promise<void>;
6
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhE"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * CLI: login command
4
+ * Stores API key in ~/.zynocode/config.json
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.loginCommand = loginCommand;
8
+ const config_store_js_1 = require("../config-store.js");
9
+ async function loginCommand(args) {
10
+ const apiKey = args[0];
11
+ if (!apiKey) {
12
+ console.log("\n Usage: zynocode login <api-key>\n");
13
+ console.log(" Get your API key at: https://labs.zynocode.com/developer/agents\n");
14
+ process.exit(1);
15
+ }
16
+ if (!apiKey.startsWith("zyno_")) {
17
+ console.error(" ✗ Invalid API key format. Keys start with 'zyno_'.");
18
+ process.exit(1);
19
+ }
20
+ (0, config_store_js_1.saveConfig)({ apiKey });
21
+ const config = (0, config_store_js_1.loadConfig)();
22
+ console.log("\n ✓ API key saved successfully.");
23
+ console.log(` ✓ API URL: ${config.apiUrl}`);
24
+ console.log(" ✓ Run 'zynocode doctor' to verify your connection.\n");
25
+ }
26
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,oCAoBC;AAtBD,wDAA4D;AAErD,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAA,4BAAU,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,IAAA,4BAAU,GAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI: mcp-serve command
3
+ * Stdio MCP server for local IDE integrations.
4
+ * Reads JSON-RPC from stdin, writes responses to stdout.
5
+ * Used by Cursor, Claude Desktop, VS Code, etc.
6
+ */
7
+ export declare function mcpServeCommand(): Promise<void>;
8
+ //# sourceMappingURL=mcp-serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-serve.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-serve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiDH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCrD"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * CLI: mcp-serve command
4
+ * Stdio MCP server for local IDE integrations.
5
+ * Reads JSON-RPC from stdin, writes responses to stdout.
6
+ * Used by Cursor, Claude Desktop, VS Code, etc.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.mcpServeCommand = mcpServeCommand;
10
+ const api_client_js_1 = require("../api-client.js");
11
+ let toolsCache = null;
12
+ let toolSlugMap = null;
13
+ async function loadTools(client) {
14
+ if (toolsCache)
15
+ return;
16
+ const manifest = (await client.listTools());
17
+ toolsCache = manifest.tools.map((t) => t.tool);
18
+ toolSlugMap = new Map(manifest.tools.map((t) => [t.tool.name, t.metadata.slug]));
19
+ }
20
+ function respond(id, result) {
21
+ const msg = JSON.stringify({ jsonrpc: "2.0", id, result });
22
+ process.stdout.write(msg + "\n");
23
+ }
24
+ function respondError(id, code, message) {
25
+ const msg = JSON.stringify({ jsonrpc: "2.0", id, error: { code, message } });
26
+ process.stdout.write(msg + "\n");
27
+ }
28
+ async function mcpServeCommand() {
29
+ const client = new api_client_js_1.ApiClient();
30
+ // Read stdin line by line
31
+ let buffer = "";
32
+ process.stdin.setEncoding("utf-8");
33
+ process.stdin.on("data", async (chunk) => {
34
+ buffer += chunk;
35
+ // Process complete JSON messages (newline-delimited)
36
+ const lines = buffer.split("\n");
37
+ buffer = lines.pop() || "";
38
+ for (const line of lines) {
39
+ if (!line.trim())
40
+ continue;
41
+ try {
42
+ const req = JSON.parse(line);
43
+ await handleRequest(req, client);
44
+ }
45
+ catch {
46
+ respondError(null, -32700, "Parse error");
47
+ }
48
+ }
49
+ });
50
+ process.stdin.on("end", () => {
51
+ process.exit(0);
52
+ });
53
+ // Keep process alive
54
+ process.stdin.resume();
55
+ }
56
+ async function handleRequest(req, client) {
57
+ switch (req.method) {
58
+ case "initialize":
59
+ respond(req.id, {
60
+ protocolVersion: "2024-11-05",
61
+ capabilities: { tools: { listChanged: false } },
62
+ serverInfo: { name: "zynocode-labs", version: "1.0.0" },
63
+ });
64
+ break;
65
+ case "initialized":
66
+ // No response needed for notification
67
+ break;
68
+ case "ping":
69
+ respond(req.id, {});
70
+ break;
71
+ case "tools/list":
72
+ try {
73
+ await loadTools(client);
74
+ respond(req.id, { tools: toolsCache || [] });
75
+ }
76
+ catch (err) {
77
+ const e = err;
78
+ respondError(req.id, -32603, `Failed to list tools: ${e.message}`);
79
+ }
80
+ break;
81
+ case "tools/call": {
82
+ const toolName = req.params?.name;
83
+ const toolArgs = (req.params?.arguments || {});
84
+ if (!toolName) {
85
+ respondError(req.id, -32602, 'Missing "name" parameter');
86
+ break;
87
+ }
88
+ try {
89
+ await loadTools(client);
90
+ const slug = toolSlugMap?.get(toolName) || toolName.replace(/_/g, "-");
91
+ const params = toolArgs.params || toolArgs;
92
+ const result = await client.executeTool(slug, params);
93
+ if (result.success) {
94
+ respond(req.id, {
95
+ content: [
96
+ {
97
+ type: "text",
98
+ text: typeof result.data === "string" ? result.data : JSON.stringify(result.data, null, 2),
99
+ },
100
+ ],
101
+ });
102
+ }
103
+ else {
104
+ respond(req.id, {
105
+ content: [{ type: "text", text: JSON.stringify({ error: result.error }) }],
106
+ isError: true,
107
+ });
108
+ }
109
+ }
110
+ catch (err) {
111
+ const e = err;
112
+ respondError(req.id, -32002, e.message || "Tool execution failed");
113
+ }
114
+ break;
115
+ }
116
+ default:
117
+ respondError(req.id, -32601, `Method "${req.method}" not found`);
118
+ }
119
+ }
120
+ //# sourceMappingURL=mcp-serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-serve.js","sourceRoot":"","sources":["../../src/commands/mcp-serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * CLI: run command
3
+ * Execute a tool via the REST API.
4
+ * Usage: zynocode run <tool-slug> --param key=value
5
+ */
6
+ export declare function runCommand(args: string[]): Promise<void>;
7
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF9D"}