tuningengines-cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +75 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +68 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +161 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/account.d.ts +4 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +73 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/billing.d.ts +4 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +83 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +42 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/jobs.d.ts +4 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +300 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/models.d.ts +4 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +241 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +105 -0
- package/dist/config.js.map +1 -0
- package/dist/mcp.d.ts +2 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +245 -0
- package/dist/mcp.js.map +1 -0
- package/dist/output.d.ts +8 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +53 -0
- package/dist/output.js.map +1 -0
- package/package.json +44 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadConfig = loadConfig;
|
|
37
|
+
exports.getApiKey = getApiKey;
|
|
38
|
+
exports.getApiUrl = getApiUrl;
|
|
39
|
+
exports.saveConfig = saveConfig;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const os = __importStar(require("os"));
|
|
43
|
+
const CONFIG_DIR = path.join(os.homedir(), ".tuningengines");
|
|
44
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
45
|
+
const DEFAULT_API_URL = "https://app.tuningengines.com";
|
|
46
|
+
function loadConfig() {
|
|
47
|
+
const config = {};
|
|
48
|
+
// File config (lowest priority)
|
|
49
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
50
|
+
try {
|
|
51
|
+
const data = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
52
|
+
if (data.api_key)
|
|
53
|
+
config.api_key = data.api_key;
|
|
54
|
+
if (data.api_url)
|
|
55
|
+
config.api_url = data.api_url;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Ignore parse errors
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Environment variables override file config
|
|
62
|
+
if (process.env.TE_API_KEY)
|
|
63
|
+
config.api_key = process.env.TE_API_KEY;
|
|
64
|
+
if (process.env.TE_API_URL)
|
|
65
|
+
config.api_url = process.env.TE_API_URL;
|
|
66
|
+
return config;
|
|
67
|
+
}
|
|
68
|
+
function getApiKey() {
|
|
69
|
+
const config = loadConfig();
|
|
70
|
+
if (!config.api_key) {
|
|
71
|
+
console.error("Error: No API key configured.\n\n" +
|
|
72
|
+
"Set your API key with:\n" +
|
|
73
|
+
" te config set-token <your-api-key>\n\n" +
|
|
74
|
+
"Or set the TE_API_KEY environment variable.");
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
return config.api_key;
|
|
78
|
+
}
|
|
79
|
+
function getApiUrl() {
|
|
80
|
+
const config = loadConfig();
|
|
81
|
+
return config.api_url || DEFAULT_API_URL;
|
|
82
|
+
}
|
|
83
|
+
function saveConfig(updates) {
|
|
84
|
+
// Ensure config directory exists
|
|
85
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
86
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
87
|
+
}
|
|
88
|
+
// Load existing config
|
|
89
|
+
let config = {};
|
|
90
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
91
|
+
try {
|
|
92
|
+
config = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Start fresh
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Merge updates
|
|
99
|
+
Object.assign(config, updates);
|
|
100
|
+
// Write with restrictive permissions
|
|
101
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2) + "\n", {
|
|
102
|
+
mode: 0o600,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,gCAmBC;AAED,8BAYC;AAED,8BAGC;AAED,gCAuBC;AA5ED,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAOxD,SAAgB,UAAU;IACxB,MAAM,MAAM,GAAW,EAAE,CAAC;IAE1B,gCAAgC;IAChC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACpE,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEpE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CACX,mCAAmC;YACjC,0BAA0B;YAC1B,0CAA0C;YAC1C,6CAA6C,CAChD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;AAC3C,CAAC;AAED,SAAgB,UAAU,CAAC,OAAwB;IACjD,iCAAiC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,qCAAqC;IACrC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QACpE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AASA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAwQpD"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startMcpServer = startMcpServer;
|
|
4
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
7
|
+
const client_1 = require("./client");
|
|
8
|
+
const config_1 = require("./config");
|
|
9
|
+
async function startMcpServer() {
|
|
10
|
+
const client = new client_1.TuningEnginesClient({
|
|
11
|
+
apiKey: (0, config_1.getApiKey)(),
|
|
12
|
+
apiUrl: (0, config_1.getApiUrl)(),
|
|
13
|
+
});
|
|
14
|
+
const server = new index_js_1.Server({ name: "tuning-engines", version: "0.1.0" }, { capabilities: { tools: {} } });
|
|
15
|
+
// List available tools
|
|
16
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
17
|
+
tools: [
|
|
18
|
+
{
|
|
19
|
+
name: "list_jobs",
|
|
20
|
+
description: "List training jobs on Tuning Engines. Returns recent jobs with status, model info, and cost.",
|
|
21
|
+
inputSchema: {
|
|
22
|
+
type: "object",
|
|
23
|
+
properties: {
|
|
24
|
+
status: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "Filter by status: queued, running, succeeded, failed, canceled",
|
|
27
|
+
},
|
|
28
|
+
limit: {
|
|
29
|
+
type: "number",
|
|
30
|
+
description: "Max results (default 20)",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "show_job",
|
|
37
|
+
description: "Get details of a specific training job including status, model, GPU usage, and cost.",
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {
|
|
41
|
+
job_id: { type: "string", description: "Job ID (UUID)" },
|
|
42
|
+
},
|
|
43
|
+
required: ["job_id"],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "create_job",
|
|
48
|
+
description: "Submit a new fine-tuning training job. Requires a base model, output name, and repo URL.",
|
|
49
|
+
inputSchema: {
|
|
50
|
+
type: "object",
|
|
51
|
+
properties: {
|
|
52
|
+
base_model: {
|
|
53
|
+
type: "string",
|
|
54
|
+
description: "HuggingFace model ID to fine-tune",
|
|
55
|
+
},
|
|
56
|
+
output_name: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: "Name for the resulting model",
|
|
59
|
+
},
|
|
60
|
+
repo_url: {
|
|
61
|
+
type: "string",
|
|
62
|
+
description: "GitHub repository URL with training data",
|
|
63
|
+
},
|
|
64
|
+
branch: { type: "string", description: "Git branch (default: main)" },
|
|
65
|
+
num_epochs: { type: "number", description: "Training epochs" },
|
|
66
|
+
max_examples: {
|
|
67
|
+
type: "number",
|
|
68
|
+
description: "Maximum training examples",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
required: ["base_model", "output_name", "repo_url"],
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "cancel_job",
|
|
76
|
+
description: "Cancel a running or queued training job.",
|
|
77
|
+
inputSchema: {
|
|
78
|
+
type: "object",
|
|
79
|
+
properties: {
|
|
80
|
+
job_id: { type: "string", description: "Job ID to cancel" },
|
|
81
|
+
},
|
|
82
|
+
required: ["job_id"],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "job_status",
|
|
87
|
+
description: "Get live status of a training job including GPU minutes, charges, and balance.",
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {
|
|
91
|
+
job_id: { type: "string", description: "Job ID" },
|
|
92
|
+
},
|
|
93
|
+
required: ["job_id"],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "retry_job",
|
|
98
|
+
description: "Retry a failed training job from its last checkpoint. Creates a new job.",
|
|
99
|
+
inputSchema: {
|
|
100
|
+
type: "object",
|
|
101
|
+
properties: {
|
|
102
|
+
job_id: {
|
|
103
|
+
type: "string",
|
|
104
|
+
description: "ID of the failed job to retry",
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
required: ["job_id"],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "estimate_job",
|
|
112
|
+
description: "Get a cost estimate for a training job before submitting it.",
|
|
113
|
+
inputSchema: {
|
|
114
|
+
type: "object",
|
|
115
|
+
properties: {
|
|
116
|
+
base_model: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: "HuggingFace model ID",
|
|
119
|
+
},
|
|
120
|
+
num_epochs: { type: "number", description: "Training epochs" },
|
|
121
|
+
max_examples: { type: "number", description: "Maximum examples" },
|
|
122
|
+
},
|
|
123
|
+
required: ["base_model"],
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: "list_models",
|
|
128
|
+
description: "List your trained and imported models on Tuning Engines.",
|
|
129
|
+
inputSchema: {
|
|
130
|
+
type: "object",
|
|
131
|
+
properties: {},
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: "show_model",
|
|
136
|
+
description: "Get details of a specific trained model.",
|
|
137
|
+
inputSchema: {
|
|
138
|
+
type: "object",
|
|
139
|
+
properties: {
|
|
140
|
+
model_id: { type: "string", description: "Model ID (UUID)" },
|
|
141
|
+
},
|
|
142
|
+
required: ["model_id"],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: "delete_model",
|
|
147
|
+
description: "Delete a trained model from cloud storage.",
|
|
148
|
+
inputSchema: {
|
|
149
|
+
type: "object",
|
|
150
|
+
properties: {
|
|
151
|
+
model_id: { type: "string", description: "Model ID to delete" },
|
|
152
|
+
},
|
|
153
|
+
required: ["model_id"],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "get_balance",
|
|
158
|
+
description: "Check your Tuning Engines account balance and recent transactions.",
|
|
159
|
+
inputSchema: {
|
|
160
|
+
type: "object",
|
|
161
|
+
properties: {},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
}));
|
|
166
|
+
// Handle tool calls
|
|
167
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
168
|
+
const { name, arguments: args } = request.params;
|
|
169
|
+
try {
|
|
170
|
+
let result;
|
|
171
|
+
switch (name) {
|
|
172
|
+
case "list_jobs":
|
|
173
|
+
result = await client.listJobs({
|
|
174
|
+
status: args?.status,
|
|
175
|
+
limit: args?.limit,
|
|
176
|
+
});
|
|
177
|
+
break;
|
|
178
|
+
case "show_job":
|
|
179
|
+
result = await client.getJob(args.job_id);
|
|
180
|
+
break;
|
|
181
|
+
case "create_job":
|
|
182
|
+
result = await client.createJob({
|
|
183
|
+
base_model: args.base_model,
|
|
184
|
+
output_name: args.output_name,
|
|
185
|
+
repo_url: args?.repo_url,
|
|
186
|
+
branch: args?.branch,
|
|
187
|
+
num_epochs: args?.num_epochs,
|
|
188
|
+
max_examples: args?.max_examples,
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
case "cancel_job":
|
|
192
|
+
result = await client.cancelJob(args.job_id);
|
|
193
|
+
break;
|
|
194
|
+
case "job_status":
|
|
195
|
+
result = await client.getJobStatus(args.job_id);
|
|
196
|
+
break;
|
|
197
|
+
case "retry_job":
|
|
198
|
+
result = await client.retryJob(args.job_id);
|
|
199
|
+
break;
|
|
200
|
+
case "estimate_job":
|
|
201
|
+
result = await client.estimateJob({
|
|
202
|
+
base_model: args.base_model,
|
|
203
|
+
num_epochs: args?.num_epochs,
|
|
204
|
+
max_examples: args?.max_examples,
|
|
205
|
+
});
|
|
206
|
+
break;
|
|
207
|
+
case "list_models":
|
|
208
|
+
result = await client.listUserModels();
|
|
209
|
+
break;
|
|
210
|
+
case "show_model":
|
|
211
|
+
result = await client.getUserModel(args.model_id);
|
|
212
|
+
break;
|
|
213
|
+
case "delete_model":
|
|
214
|
+
result = await client.deleteUserModel(args.model_id);
|
|
215
|
+
break;
|
|
216
|
+
case "get_balance":
|
|
217
|
+
result = await client.getBilling();
|
|
218
|
+
break;
|
|
219
|
+
default:
|
|
220
|
+
return {
|
|
221
|
+
content: [
|
|
222
|
+
{ type: "text", text: `Unknown tool: ${name}` },
|
|
223
|
+
],
|
|
224
|
+
isError: true,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
content: [
|
|
229
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
230
|
+
],
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
return {
|
|
235
|
+
content: [
|
|
236
|
+
{ type: "text", text: `Error: ${error.message}` },
|
|
237
|
+
],
|
|
238
|
+
isError: true,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
243
|
+
await server.connect(transport);
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function table(headers: string[], rows: string[][], options?: {
|
|
2
|
+
maxWidth?: number;
|
|
3
|
+
}): void;
|
|
4
|
+
export declare function json(data: any): void;
|
|
5
|
+
export declare function keyValue(pairs: [string, any][]): void;
|
|
6
|
+
export declare function formatCents(cents: number | null | undefined): string;
|
|
7
|
+
export declare function formatStatus(status: string): string;
|
|
8
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CACnB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,IAAI,CAiCN;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAEpC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAOrD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGpE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.table = table;
|
|
4
|
+
exports.json = json;
|
|
5
|
+
exports.keyValue = keyValue;
|
|
6
|
+
exports.formatCents = formatCents;
|
|
7
|
+
exports.formatStatus = formatStatus;
|
|
8
|
+
function table(headers, rows, options) {
|
|
9
|
+
const maxWidth = options?.maxWidth || process.stdout.columns || 120;
|
|
10
|
+
// Calculate column widths
|
|
11
|
+
const colWidths = headers.map((h, i) => {
|
|
12
|
+
const maxData = Math.max(...rows.map((r) => (r[i] || "").length), 0);
|
|
13
|
+
return Math.max(h.length, maxData);
|
|
14
|
+
});
|
|
15
|
+
// Truncate columns if total exceeds terminal width
|
|
16
|
+
const totalWidth = colWidths.reduce((a, b) => a + b, 0) + (headers.length - 1) * 3;
|
|
17
|
+
if (totalWidth > maxWidth) {
|
|
18
|
+
const lastCol = colWidths.length - 1;
|
|
19
|
+
const excess = totalWidth - maxWidth;
|
|
20
|
+
colWidths[lastCol] = Math.max(10, colWidths[lastCol] - excess);
|
|
21
|
+
}
|
|
22
|
+
const formatRow = (cells) => {
|
|
23
|
+
return cells
|
|
24
|
+
.map((cell, i) => {
|
|
25
|
+
const width = colWidths[i];
|
|
26
|
+
const str = cell || "";
|
|
27
|
+
return str.length > width ? str.slice(0, width - 1) + "\u2026" : str.padEnd(width);
|
|
28
|
+
})
|
|
29
|
+
.join(" ");
|
|
30
|
+
};
|
|
31
|
+
console.log(formatRow(headers));
|
|
32
|
+
console.log(colWidths.map((w) => "\u2500".repeat(w)).join(" "));
|
|
33
|
+
rows.forEach((row) => console.log(formatRow(row)));
|
|
34
|
+
}
|
|
35
|
+
function json(data) {
|
|
36
|
+
console.log(JSON.stringify(data, null, 2));
|
|
37
|
+
}
|
|
38
|
+
function keyValue(pairs) {
|
|
39
|
+
const maxKeyLen = Math.max(...pairs.map(([k]) => k.length));
|
|
40
|
+
pairs.forEach(([key, value]) => {
|
|
41
|
+
const displayValue = value === null || value === undefined ? "-" : String(value);
|
|
42
|
+
console.log(`${key.padEnd(maxKeyLen)} ${displayValue}`);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function formatCents(cents) {
|
|
46
|
+
if (cents === null || cents === undefined)
|
|
47
|
+
return "-";
|
|
48
|
+
return `$${(cents / 100).toFixed(2)}`;
|
|
49
|
+
}
|
|
50
|
+
function formatStatus(status) {
|
|
51
|
+
return status;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tuningengines-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for Tuning Engines — fine-tune LLMs from your terminal",
|
|
5
|
+
"main": "dist/cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"te": "dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"start": "node dist/cli.js"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
16
|
+
"commander": "^12.0.0"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^20.0.0",
|
|
20
|
+
"typescript": "^5.4.0"
|
|
21
|
+
},
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=18.0.0"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist"
|
|
27
|
+
],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"mcpName": "io.github.cerebrixos/tuning-engines",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/ockhamlabs/tuning-engines-cli.git"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"mcp",
|
|
36
|
+
"llm",
|
|
37
|
+
"fine-tuning",
|
|
38
|
+
"training",
|
|
39
|
+
"ai",
|
|
40
|
+
"tuning-engines",
|
|
41
|
+
"model-context-protocol"
|
|
42
|
+
],
|
|
43
|
+
"homepage": "https://tuningengines.com"
|
|
44
|
+
}
|