@iyulab/mloop-mcp 0.11.3 → 0.13.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/CHANGELOG.md +79 -0
- package/README.md +28 -3
- package/build/executor.d.ts +27 -2
- package/build/executor.d.ts.map +1 -1
- package/build/executor.js +105 -20
- package/build/executor.js.map +1 -1
- package/build/index.js +10 -16
- package/build/index.js.map +1 -1
- package/build/package-info.js.map +1 -1
- package/build/server.d.ts +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +40 -67
- package/build/server.js.map +1 -1
- package/build/tools/analyze.d.ts +2 -29
- package/build/tools/analyze.d.ts.map +1 -1
- package/build/tools/analyze.js +0 -28
- package/build/tools/analyze.js.map +1 -1
- package/build/tools/auto-train.d.ts +2 -27
- package/build/tools/auto-train.d.ts.map +1 -1
- package/build/tools/auto-train.js +6 -36
- package/build/tools/auto-train.js.map +1 -1
- package/build/tools/calibrate.d.ts +1 -36
- package/build/tools/calibrate.d.ts.map +1 -1
- package/build/tools/calibrate.js +0 -13
- package/build/tools/calibrate.js.map +1 -1
- package/build/tools/compare.d.ts +0 -22
- package/build/tools/compare.d.ts.map +1 -1
- package/build/tools/compare.js +1 -21
- package/build/tools/compare.js.map +1 -1
- package/build/tools/detect.d.ts +0 -26
- package/build/tools/detect.d.ts.map +1 -1
- package/build/tools/detect.js +0 -26
- package/build/tools/detect.js.map +1 -1
- package/build/tools/drift.d.ts +0 -22
- package/build/tools/drift.d.ts.map +1 -1
- package/build/tools/drift.js +0 -10
- package/build/tools/drift.js.map +1 -1
- package/build/tools/embed.d.ts +25 -0
- package/build/tools/embed.d.ts.map +1 -0
- package/build/tools/embed.js +49 -0
- package/build/tools/embed.js.map +1 -0
- package/build/tools/encoder.d.ts +27 -0
- package/build/tools/encoder.d.ts.map +1 -0
- package/build/tools/encoder.js +42 -0
- package/build/tools/encoder.js.map +1 -0
- package/build/tools/evaluate.d.ts +0 -34
- package/build/tools/evaluate.d.ts.map +1 -1
- package/build/tools/evaluate.js +18 -44
- package/build/tools/evaluate.js.map +1 -1
- package/build/tools/export-onnx.d.ts +0 -30
- package/build/tools/export-onnx.d.ts.map +1 -1
- package/build/tools/export-onnx.js +0 -12
- package/build/tools/export-onnx.js.map +1 -1
- package/build/tools/features-select.d.ts +0 -26
- package/build/tools/features-select.d.ts.map +1 -1
- package/build/tools/features-select.js +0 -26
- package/build/tools/features-select.js.map +1 -1
- package/build/tools/feedback.d.ts +1 -37
- package/build/tools/feedback.d.ts.map +1 -1
- package/build/tools/feedback.js +2 -38
- package/build/tools/feedback.js.map +1 -1
- package/build/tools/index.d.ts +3 -88
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +3 -36
- package/build/tools/index.js.map +1 -1
- package/build/tools/info.d.ts +0 -30
- package/build/tools/info.d.ts.map +1 -1
- package/build/tools/info.js +1 -32
- package/build/tools/info.js.map +1 -1
- package/build/tools/init.d.ts +0 -15
- package/build/tools/init.d.ts.map +1 -1
- package/build/tools/init.js +1 -16
- package/build/tools/init.js.map +1 -1
- package/build/tools/list.d.ts +0 -18
- package/build/tools/list.d.ts.map +1 -1
- package/build/tools/list.js +0 -18
- package/build/tools/list.js.map +1 -1
- package/build/tools/logs.d.ts +0 -18
- package/build/tools/logs.d.ts.map +1 -1
- package/build/tools/logs.js +1 -18
- package/build/tools/logs.js.map +1 -1
- package/build/tools/predict.d.ts +2 -37
- package/build/tools/predict.d.ts.map +1 -1
- package/build/tools/predict.js +1 -36
- package/build/tools/predict.js.map +1 -1
- package/build/tools/prep-plan.d.ts +0 -26
- package/build/tools/prep-plan.d.ts.map +1 -1
- package/build/tools/prep-plan.js +0 -26
- package/build/tools/prep-plan.js.map +1 -1
- package/build/tools/prep.d.ts +0 -26
- package/build/tools/prep.d.ts.map +1 -1
- package/build/tools/prep.js +0 -26
- package/build/tools/prep.js.map +1 -1
- package/build/tools/project-overview.d.ts +0 -14
- package/build/tools/project-overview.d.ts.map +1 -1
- package/build/tools/project-overview.js +4 -19
- package/build/tools/project-overview.js.map +1 -1
- package/build/tools/promote.d.ts +0 -34
- package/build/tools/promote.d.ts.map +1 -1
- package/build/tools/promote.js +0 -34
- package/build/tools/promote.js.map +1 -1
- package/build/tools/quick-start.d.ts +2 -28
- package/build/tools/quick-start.d.ts.map +1 -1
- package/build/tools/quick-start.js +7 -41
- package/build/tools/quick-start.js.map +1 -1
- package/build/tools/rollback.d.ts +0 -18
- package/build/tools/rollback.d.ts.map +1 -1
- package/build/tools/rollback.js +0 -9
- package/build/tools/rollback.js.map +1 -1
- package/build/tools/sample.d.ts +0 -39
- package/build/tools/sample.d.ts.map +1 -1
- package/build/tools/sample.js +3 -42
- package/build/tools/sample.js.map +1 -1
- package/build/tools/serve.d.ts +0 -18
- package/build/tools/serve.d.ts.map +1 -1
- package/build/tools/serve.js +49 -59
- package/build/tools/serve.js.map +1 -1
- package/build/tools/status.d.ts +0 -10
- package/build/tools/status.d.ts.map +1 -1
- package/build/tools/status.js +1 -11
- package/build/tools/status.js.map +1 -1
- package/build/tools/threshold.d.ts +0 -38
- package/build/tools/threshold.d.ts.map +1 -1
- package/build/tools/threshold.js +0 -14
- package/build/tools/threshold.js.map +1 -1
- package/build/tools/token.d.ts +27 -0
- package/build/tools/token.d.ts.map +1 -0
- package/build/tools/token.js +49 -0
- package/build/tools/token.js.map +1 -0
- package/build/tools/train.d.ts +2 -67
- package/build/tools/train.d.ts.map +1 -1
- package/build/tools/train.js +8 -77
- package/build/tools/train.js.map +1 -1
- package/build/tools/trigger.d.ts +0 -14
- package/build/tools/trigger.d.ts.map +1 -1
- package/build/tools/trigger.js +1 -15
- package/build/tools/trigger.js.map +1 -1
- package/build/tools/validate.d.ts +0 -10
- package/build/tools/validate.d.ts.map +1 -1
- package/build/tools/validate.js +1 -11
- package/build/tools/validate.js.map +1 -1
- package/build/training-run.d.ts +33 -0
- package/build/training-run.d.ts.map +1 -0
- package/build/training-run.js +107 -0
- package/build/training-run.js.map +1 -0
- package/build/utils/errors.d.ts +6 -0
- package/build/utils/errors.d.ts.map +1 -1
- package/build/utils/errors.js +22 -1
- package/build/utils/errors.js.map +1 -1
- package/package.json +6 -4
package/build/tools/sample.js
CHANGED
|
@@ -20,16 +20,16 @@ export function sampleArgs(params) {
|
|
|
20
20
|
const cliParams = {};
|
|
21
21
|
if (params.action === 'create') {
|
|
22
22
|
cliParams['from'] = params.dataFile;
|
|
23
|
-
cliParams['
|
|
23
|
+
cliParams['name'] = params.dataFile ? undefined : (params.modelName ?? 'default');
|
|
24
24
|
cliParams['rows'] = params.size;
|
|
25
25
|
cliParams['strategy'] = params.strategy;
|
|
26
26
|
cliParams['label'] = params.label;
|
|
27
27
|
cliParams['output'] = params.output;
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
|
-
cliParams['
|
|
31
|
-
cliParams['json'] = true;
|
|
30
|
+
cliParams['name'] = params.modelName;
|
|
32
31
|
}
|
|
32
|
+
cliParams['json'] = true;
|
|
33
33
|
return buildArgsWithPositional('sample', [params.action], cliParams);
|
|
34
34
|
}
|
|
35
35
|
export async function sample(params) {
|
|
@@ -56,45 +56,6 @@ export async function sample(params) {
|
|
|
56
56
|
export const sampleTool = {
|
|
57
57
|
name: 'mloop_sample',
|
|
58
58
|
description: 'Create a sampled dataset — from a model\'s logged predictions and feedback (a retraining dataset: feedback under the model\'s label, with a weight column when feedback carries weights) or from a CSV file — or view sampling statistics.',
|
|
59
|
-
inputSchema: {
|
|
60
|
-
type: 'object',
|
|
61
|
-
properties: {
|
|
62
|
-
projectPath: {
|
|
63
|
-
type: 'string',
|
|
64
|
-
description: 'Path to MLoop project directory',
|
|
65
|
-
},
|
|
66
|
-
action: {
|
|
67
|
-
type: 'string',
|
|
68
|
-
enum: ['create', 'stats'],
|
|
69
|
-
description: 'Sample action: "create" to generate a sample, "stats" to view statistics',
|
|
70
|
-
},
|
|
71
|
-
modelName: {
|
|
72
|
-
type: 'string',
|
|
73
|
-
description: 'Model whose logged predictions and feedback to sample (default: "default")',
|
|
74
|
-
},
|
|
75
|
-
dataFile: {
|
|
76
|
-
type: 'string',
|
|
77
|
-
description: 'CSV file to sample from instead of prediction logs ("create" only)',
|
|
78
|
-
},
|
|
79
|
-
size: {
|
|
80
|
-
type: 'number',
|
|
81
|
-
description: 'Number of rows to sample (default 1000)',
|
|
82
|
-
},
|
|
83
|
-
strategy: {
|
|
84
|
-
type: 'string',
|
|
85
|
-
description: 'Sampling strategy — logs: random, recent, feedback-priority, stratified, low-confidence; CSV: random, head, stratified',
|
|
86
|
-
},
|
|
87
|
-
label: {
|
|
88
|
-
type: 'string',
|
|
89
|
-
description: 'Label column for stratified CSV sampling',
|
|
90
|
-
},
|
|
91
|
-
output: {
|
|
92
|
-
type: 'string',
|
|
93
|
-
description: 'Output CSV path',
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
required: ['projectPath', 'action'],
|
|
97
|
-
},
|
|
98
59
|
handler: sample,
|
|
99
60
|
};
|
|
100
61
|
//# sourceMappingURL=sample.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/tools/sample.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACvC,oMAAoM,CAAC;IACvM,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IAC9G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAChG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,wHAAwH,CAAC;IAC3H,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACjF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC1D,CAAC,CAAC;AAIH,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACpC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/tools/sample.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACvC,oMAAoM,CAAC;IACvM,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IAC9G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAChG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,wHAAwH,CAAC;IAC3H,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACjF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CAC1D,CAAC,CAAC;AAIH,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACpC,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;QAClF,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAChC,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACxC,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QAClC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;IACvC,CAAC;IACD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACzB,OAAO,uBAAuB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,UAAU,MAAM,CAAC,MAAM,aAAa;iBACrD,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,4OAA4O;IACzP,OAAO,EAAE,MAAM;CAChB,CAAC"}
|
package/build/tools/serve.d.ts
CHANGED
|
@@ -18,24 +18,6 @@ export declare function serve(params: ServeParams): Promise<{
|
|
|
18
18
|
export declare const serveTool: {
|
|
19
19
|
name: string;
|
|
20
20
|
description: string;
|
|
21
|
-
inputSchema: {
|
|
22
|
-
type: string;
|
|
23
|
-
properties: {
|
|
24
|
-
projectPath: {
|
|
25
|
-
type: string;
|
|
26
|
-
description: string;
|
|
27
|
-
};
|
|
28
|
-
port: {
|
|
29
|
-
type: string;
|
|
30
|
-
description: string;
|
|
31
|
-
};
|
|
32
|
-
host: {
|
|
33
|
-
type: string;
|
|
34
|
-
description: string;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
required: string[];
|
|
38
|
-
};
|
|
39
21
|
handler: typeof serve;
|
|
40
22
|
};
|
|
41
23
|
//# sourceMappingURL=serve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/tools/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/tools/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,WAAW;;;;iBAItB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAKtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAqC/H;AAcD,eAAO,MAAM,SAAS;IACpB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/serve.js
CHANGED
|
@@ -2,78 +2,68 @@
|
|
|
2
2
|
* mloop_serve tool - Start REST API server
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { readFileSync } from 'fs';
|
|
6
|
+
import { tmpdir } from 'os';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { startMloopDetached, stopMloop } from '../executor.js';
|
|
9
|
+
import { stripAnsi } from '../utils/errors.js';
|
|
8
10
|
export const serveSchema = z.object({
|
|
9
11
|
projectPath: z.string().describe('Path to MLoop project directory'),
|
|
10
12
|
port: z.number().optional().describe('Port number (default: 5000)'),
|
|
11
13
|
host: z.string().optional().describe('Host to bind to'),
|
|
12
14
|
});
|
|
15
|
+
/** How long the server may take to answer `/health` — it loads and preloads models before it listens. */
|
|
16
|
+
const STARTUP_MS = 60_000;
|
|
13
17
|
export async function serve(params) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const { projectPath, host } = params;
|
|
19
|
+
const port = params.port ?? 5000;
|
|
20
|
+
const args = ['serve', '--port', String(port)];
|
|
21
|
+
if (host)
|
|
22
|
+
args.push('--host', host);
|
|
23
|
+
// The server outlives this call: it runs detached, its output in a log file the answer names.
|
|
24
|
+
const logFile = join(tmpdir(), `mloop-serve-${port}-${Date.now()}.log`);
|
|
25
|
+
const proc = startMloopDetached(args, projectPath, logFile);
|
|
26
|
+
let exited;
|
|
27
|
+
proc.on('exit', (code) => { exited = code; });
|
|
28
|
+
const url = `http://${host && host !== '0.0.0.0' && host !== '*' && host !== '+' ? host : '127.0.0.1'}:${port}`;
|
|
29
|
+
const deadline = Date.now() + STARTUP_MS;
|
|
30
|
+
while (Date.now() < deadline) {
|
|
31
|
+
if (exited !== undefined) {
|
|
32
|
+
return answer(`mloop serve exited (code ${exited}) before answering ${url}/health.\n${tail(logFile)}`, true);
|
|
19
33
|
}
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
try {
|
|
35
|
+
const response = await fetch(`${url}/health`, { signal: AbortSignal.timeout(2_000) });
|
|
36
|
+
if (response.ok) {
|
|
37
|
+
return answer(JSON.stringify({
|
|
38
|
+
url,
|
|
39
|
+
pid: proc.pid,
|
|
40
|
+
log: logFile,
|
|
41
|
+
stop: process.platform === 'win32' ? `taskkill /pid ${proc.pid} /T /F` : `kill -- -${proc.pid}`,
|
|
42
|
+
}, null, 2), false);
|
|
43
|
+
}
|
|
22
44
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const result = await executeMloop(args, {
|
|
26
|
-
cwd: projectPath,
|
|
27
|
-
timeout: 5000, // 5 seconds - just enough to start
|
|
28
|
-
});
|
|
29
|
-
const output = parseCliOutput(result.stdout);
|
|
30
|
-
return {
|
|
31
|
-
content: [{
|
|
32
|
-
type: 'text',
|
|
33
|
-
text: output || `API server starting on port ${port ?? 5000}...`,
|
|
34
|
-
}],
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
// If it's a timeout, the server likely started successfully
|
|
39
|
-
if (error instanceof Error && error.name === 'TimeoutError') {
|
|
40
|
-
return {
|
|
41
|
-
content: [{
|
|
42
|
-
type: 'text',
|
|
43
|
-
text: `API server started on port ${params.port ?? 5000}. The server is running in the background.`,
|
|
44
|
-
}],
|
|
45
|
-
};
|
|
45
|
+
catch {
|
|
46
|
+
// Not listening yet.
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
49
|
+
}
|
|
50
|
+
stopMloop(proc);
|
|
51
|
+
return answer(`mloop serve did not answer ${url}/health within ${STARTUP_MS / 1000} s and was stopped.\n${tail(logFile)}`, true);
|
|
52
|
+
}
|
|
53
|
+
function answer(text, isError) {
|
|
54
|
+
return { content: [{ type: 'text', text }], ...(isError ? { isError } : {}) };
|
|
55
|
+
}
|
|
56
|
+
function tail(logFile) {
|
|
57
|
+
try {
|
|
58
|
+
return stripAnsi(readFileSync(logFile, 'utf8')).trim().split('\n').slice(-20).join('\n');
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return '';
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
64
|
export const serveTool = {
|
|
57
65
|
name: 'mloop_serve',
|
|
58
|
-
description: 'Start the MLoop REST API server for serving predictions via HTTP.',
|
|
59
|
-
inputSchema: {
|
|
60
|
-
type: 'object',
|
|
61
|
-
properties: {
|
|
62
|
-
projectPath: {
|
|
63
|
-
type: 'string',
|
|
64
|
-
description: 'Path to MLoop project directory',
|
|
65
|
-
},
|
|
66
|
-
port: {
|
|
67
|
-
type: 'number',
|
|
68
|
-
description: 'Port number to listen on (default: 5000)',
|
|
69
|
-
},
|
|
70
|
-
host: {
|
|
71
|
-
type: 'string',
|
|
72
|
-
description: 'Host address to bind to',
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
required: ['projectPath'],
|
|
76
|
-
},
|
|
66
|
+
description: 'Start the MLoop REST API server for serving predictions via HTTP. Returns once the server answers /health, with its URL, process id, log file and the command that stops it; the server keeps running after the call.',
|
|
77
67
|
handler: serve,
|
|
78
68
|
};
|
|
79
69
|
//# sourceMappingURL=serve.js.map
|
package/build/tools/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/tools/serve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/tools/serve.ts"],"names":[],"mappings":"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"}
|
package/build/tools/status.d.ts
CHANGED
|
@@ -16,16 +16,6 @@ export declare function status(params: StatusParams): Promise<{
|
|
|
16
16
|
export declare const statusTool: {
|
|
17
17
|
name: string;
|
|
18
18
|
description: string;
|
|
19
|
-
inputSchema: {
|
|
20
|
-
type: string;
|
|
21
|
-
properties: {
|
|
22
|
-
projectPath: {
|
|
23
|
-
type: string;
|
|
24
|
-
description: string;
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
required: string[];
|
|
28
|
-
};
|
|
29
19
|
handler: typeof status;
|
|
30
20
|
};
|
|
31
21
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;iBAEvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BjI;AAED,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;iBAEvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BjI;AAED,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/status.js
CHANGED
|
@@ -11,7 +11,7 @@ export const statusSchema = z.object({
|
|
|
11
11
|
export async function status(params) {
|
|
12
12
|
try {
|
|
13
13
|
const { projectPath } = params;
|
|
14
|
-
const args = ['status'];
|
|
14
|
+
const args = ['status', '--json'];
|
|
15
15
|
const result = await executeMloop(args, {
|
|
16
16
|
cwd: projectPath,
|
|
17
17
|
});
|
|
@@ -36,16 +36,6 @@ export async function status(params) {
|
|
|
36
36
|
export const statusTool = {
|
|
37
37
|
name: 'mloop_status',
|
|
38
38
|
description: 'Show MLoop project status including models, experiments, and production deployments.',
|
|
39
|
-
inputSchema: {
|
|
40
|
-
type: 'object',
|
|
41
|
-
properties: {
|
|
42
|
-
projectPath: {
|
|
43
|
-
type: 'string',
|
|
44
|
-
description: 'Path to MLoop project directory',
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
required: ['projectPath'],
|
|
48
|
-
},
|
|
49
39
|
handler: status,
|
|
50
40
|
};
|
|
51
41
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAE/B,MAAM,IAAI,GAAa,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAE/B,MAAM,IAAI,GAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;YACtC,GAAG,EAAE,WAAW;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,kCAAkC;iBACnD,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,sFAAsF;IACnG,OAAO,EAAE,MAAM;CAChB,CAAC"}
|
|
@@ -23,44 +23,6 @@ export declare function threshold(params: ThresholdParams): Promise<{
|
|
|
23
23
|
export declare const thresholdTool: {
|
|
24
24
|
name: string;
|
|
25
25
|
description: string;
|
|
26
|
-
inputSchema: {
|
|
27
|
-
type: string;
|
|
28
|
-
properties: {
|
|
29
|
-
projectPath: {
|
|
30
|
-
type: string;
|
|
31
|
-
description: string;
|
|
32
|
-
};
|
|
33
|
-
experimentId: {
|
|
34
|
-
type: string;
|
|
35
|
-
description: string;
|
|
36
|
-
};
|
|
37
|
-
modelName: {
|
|
38
|
-
type: string;
|
|
39
|
-
description: string;
|
|
40
|
-
};
|
|
41
|
-
precision: {
|
|
42
|
-
type: string;
|
|
43
|
-
description: string;
|
|
44
|
-
};
|
|
45
|
-
precisionOf: {
|
|
46
|
-
type: string;
|
|
47
|
-
description: string;
|
|
48
|
-
};
|
|
49
|
-
dataFile: {
|
|
50
|
-
type: string;
|
|
51
|
-
description: string;
|
|
52
|
-
};
|
|
53
|
-
weight: {
|
|
54
|
-
type: string;
|
|
55
|
-
description: string;
|
|
56
|
-
};
|
|
57
|
-
clear: {
|
|
58
|
-
type: string;
|
|
59
|
-
description: string;
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
required: string[];
|
|
63
|
-
};
|
|
64
26
|
handler: typeof threshold;
|
|
65
27
|
};
|
|
66
28
|
//# sourceMappingURL=threshold.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/tools/threshold.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;iBAS1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,wBAAsB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBvI;AAED,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/tools/threshold.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;iBAS1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,wBAAsB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBvI;AAED,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/threshold.js
CHANGED
|
@@ -49,20 +49,6 @@ export async function threshold(params) {
|
|
|
49
49
|
export const thresholdTool = {
|
|
50
50
|
name: 'mloop_threshold',
|
|
51
51
|
description: 'A binary classifier\'s decision threshold, as JSON. With precision and dataFile, chooses the probability threshold at which the precision of the positive class — or of precisionOf, the negative one included (mloop >= 0.40) — reaches the target on those labeled rows, keeping the most of that class\'s recall, and writes it beside the model — predict, serve, evaluate and the gate then answer at it, and promote carries it. Without precision, shows the current one; with clear, removes it. Refused for a model that is not binary or gives no probability, or when no threshold reaches the precision (mloop >= 0.39).',
|
|
52
|
-
inputSchema: {
|
|
53
|
-
type: 'object',
|
|
54
|
-
properties: {
|
|
55
|
-
projectPath: { type: 'string', description: 'Path to MLoop project directory' },
|
|
56
|
-
experimentId: { type: 'string', description: 'Experiment (default: production)' },
|
|
57
|
-
modelName: { type: 'string', description: 'Model name for namespacing' },
|
|
58
|
-
precision: { type: 'number', description: 'Target positive precision, above 0 and at most 1' },
|
|
59
|
-
precisionOf: { type: 'string', description: 'Class whose precision is targeted, by label value (default: positive class)' },
|
|
60
|
-
dataFile: { type: 'string', description: 'Labeled evaluation file (required with precision)' },
|
|
61
|
-
weight: { type: 'string', description: 'Column that weights the rows' },
|
|
62
|
-
clear: { type: 'boolean', description: 'Remove the threshold' },
|
|
63
|
-
},
|
|
64
|
-
required: ['projectPath'],
|
|
65
|
-
},
|
|
66
52
|
handler: threshold,
|
|
67
53
|
};
|
|
68
54
|
//# sourceMappingURL=threshold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/tools/threshold.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/tools/threshold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mloop_token tool - Issue a JWT bearer token for the local serve API
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export declare const tokenSchema: z.ZodObject<{
|
|
6
|
+
projectPath: z.ZodString;
|
|
7
|
+
role: z.ZodOptional<z.ZodEnum<{
|
|
8
|
+
admin: "admin";
|
|
9
|
+
}>>;
|
|
10
|
+
subject: z.ZodOptional<z.ZodString>;
|
|
11
|
+
expiresHours: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
key: z.ZodOptional<z.ZodString>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
export type TokenParams = z.infer<typeof tokenSchema>;
|
|
15
|
+
export declare function token(params: TokenParams): Promise<{
|
|
16
|
+
content: Array<{
|
|
17
|
+
type: 'text';
|
|
18
|
+
text: string;
|
|
19
|
+
}>;
|
|
20
|
+
isError?: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const tokenTool: {
|
|
23
|
+
name: string;
|
|
24
|
+
description: string;
|
|
25
|
+
handler: typeof token;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/tools/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;iBAQtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyB/H;AAED,eAAO,MAAM,SAAS;IACpB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mloop_token tool - Issue a JWT bearer token for the local serve API
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { executeMloop } from '../executor.js';
|
|
6
|
+
import { formatError, stripAnsi } from '../utils/errors.js';
|
|
7
|
+
export const tokenSchema = z.object({
|
|
8
|
+
projectPath: z.string().describe('Path to MLoop project directory'),
|
|
9
|
+
role: z.enum(['admin']).optional()
|
|
10
|
+
.describe('admin for the write endpoints (POST /promote, /rollback, /train, /evaluate, /samples, cache); omit for predict and reads'),
|
|
11
|
+
subject: z.string().optional().describe('Who the token identifies (the sub claim); the request limit counts per subject (default: mloop-cli)'),
|
|
12
|
+
expiresHours: z.number().positive().optional().describe('Token lifetime in hours (default: 24)'),
|
|
13
|
+
key: z.string().min(32).optional()
|
|
14
|
+
.describe("The server's signing key (Jwt:Key), when it is not the development key — at least 32 characters"),
|
|
15
|
+
});
|
|
16
|
+
export async function token(params) {
|
|
17
|
+
try {
|
|
18
|
+
const { projectPath, role, subject, expiresHours, key } = params;
|
|
19
|
+
const args = ['token', '--quiet'];
|
|
20
|
+
if (role)
|
|
21
|
+
args.push('--role', role);
|
|
22
|
+
if (subject)
|
|
23
|
+
args.push('--subject', subject);
|
|
24
|
+
if (expiresHours)
|
|
25
|
+
args.push('--expires-hours', String(expiresHours));
|
|
26
|
+
if (key)
|
|
27
|
+
args.push('--key', key);
|
|
28
|
+
const result = await executeMloop(args, { cwd: projectPath });
|
|
29
|
+
const issued = stripAnsi(result.stdout).trim();
|
|
30
|
+
return {
|
|
31
|
+
content: [{
|
|
32
|
+
type: 'text',
|
|
33
|
+
text: JSON.stringify({ token: issued, header: `Authorization: Bearer ${issued}` }, null, 2),
|
|
34
|
+
}],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: 'text', text: formatError(error) }],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export const tokenTool = {
|
|
45
|
+
name: 'mloop_token',
|
|
46
|
+
description: 'Issue a JWT bearer token for a server started with mloop_serve: every endpoint but /health requires one, sent as the returned Authorization header. Signed with the development key unless key is given; role admin for the write endpoints.',
|
|
47
|
+
handler: token,
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/tools/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC/B,QAAQ,CAAC,0HAA0H,CAAC;IACvI,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qGAAqG,CAAC;IAC9I,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAChG,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC/B,QAAQ,CAAC,iGAAiG,CAAC;CAC/G,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAmB;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAEjE,MAAM,IAAI,GAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,YAAY;YAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC5F,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,8OAA8O;IAC3P,OAAO,EAAE,KAAK;CACf,CAAC"}
|
package/build/tools/train.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* mloop_train tool - Train ML models with AutoML
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
import type { ServerContext } from '@modelcontextprotocol/server';
|
|
5
6
|
export declare const trainSchema: z.ZodObject<{
|
|
6
7
|
projectPath: z.ZodString;
|
|
7
8
|
dataFile: z.ZodOptional<z.ZodString>;
|
|
@@ -23,7 +24,7 @@ export declare const trainSchema: z.ZodObject<{
|
|
|
23
24
|
portable: z.ZodOptional<z.ZodBoolean>;
|
|
24
25
|
}, z.core.$strip>;
|
|
25
26
|
export type TrainParams = z.infer<typeof trainSchema>;
|
|
26
|
-
export declare function train(params: TrainParams): Promise<{
|
|
27
|
+
export declare function train(params: TrainParams, ctx?: ServerContext): Promise<{
|
|
27
28
|
content: Array<{
|
|
28
29
|
type: 'text';
|
|
29
30
|
text: string;
|
|
@@ -33,72 +34,6 @@ export declare function train(params: TrainParams): Promise<{
|
|
|
33
34
|
export declare const trainTool: {
|
|
34
35
|
name: string;
|
|
35
36
|
description: string;
|
|
36
|
-
inputSchema: {
|
|
37
|
-
type: string;
|
|
38
|
-
properties: {
|
|
39
|
-
projectPath: {
|
|
40
|
-
type: string;
|
|
41
|
-
description: string;
|
|
42
|
-
};
|
|
43
|
-
dataFile: {
|
|
44
|
-
type: string;
|
|
45
|
-
description: string;
|
|
46
|
-
};
|
|
47
|
-
label: {
|
|
48
|
-
type: string;
|
|
49
|
-
description: string;
|
|
50
|
-
};
|
|
51
|
-
task: {
|
|
52
|
-
type: string;
|
|
53
|
-
enum: string[];
|
|
54
|
-
description: string;
|
|
55
|
-
};
|
|
56
|
-
time: {
|
|
57
|
-
type: string;
|
|
58
|
-
description: string;
|
|
59
|
-
};
|
|
60
|
-
metric: {
|
|
61
|
-
type: string;
|
|
62
|
-
description: string;
|
|
63
|
-
};
|
|
64
|
-
modelName: {
|
|
65
|
-
type: string;
|
|
66
|
-
description: string;
|
|
67
|
-
};
|
|
68
|
-
balance: {
|
|
69
|
-
type: string;
|
|
70
|
-
description: string;
|
|
71
|
-
};
|
|
72
|
-
testSplit: {
|
|
73
|
-
type: string;
|
|
74
|
-
description: string;
|
|
75
|
-
};
|
|
76
|
-
noPromote: {
|
|
77
|
-
type: string;
|
|
78
|
-
description: string;
|
|
79
|
-
};
|
|
80
|
-
dropMissingLabels: {
|
|
81
|
-
type: string;
|
|
82
|
-
description: string;
|
|
83
|
-
};
|
|
84
|
-
weight: {
|
|
85
|
-
type: string;
|
|
86
|
-
description: string;
|
|
87
|
-
};
|
|
88
|
-
additionalDataFiles: {
|
|
89
|
-
type: string;
|
|
90
|
-
items: {
|
|
91
|
-
type: string;
|
|
92
|
-
};
|
|
93
|
-
description: string;
|
|
94
|
-
};
|
|
95
|
-
portable: {
|
|
96
|
-
type: string;
|
|
97
|
-
description: string;
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
required: string[];
|
|
101
|
-
};
|
|
102
37
|
handler: typeof train;
|
|
103
38
|
};
|
|
104
39
|
//# sourceMappingURL=train.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;iBAkBtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA4CpJ;AAED,eAAO,MAAM,SAAS;IACpB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|