@iyulab/mloop-mcp 0.11.3 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +28 -3
  3. package/build/executor.d.ts +27 -2
  4. package/build/executor.d.ts.map +1 -1
  5. package/build/executor.js +105 -20
  6. package/build/executor.js.map +1 -1
  7. package/build/index.js +10 -16
  8. package/build/index.js.map +1 -1
  9. package/build/package-info.js.map +1 -1
  10. package/build/server.d.ts +1 -1
  11. package/build/server.d.ts.map +1 -1
  12. package/build/server.js +40 -67
  13. package/build/server.js.map +1 -1
  14. package/build/tools/analyze.d.ts +2 -29
  15. package/build/tools/analyze.d.ts.map +1 -1
  16. package/build/tools/analyze.js +0 -28
  17. package/build/tools/analyze.js.map +1 -1
  18. package/build/tools/auto-train.d.ts +2 -27
  19. package/build/tools/auto-train.d.ts.map +1 -1
  20. package/build/tools/auto-train.js +6 -36
  21. package/build/tools/auto-train.js.map +1 -1
  22. package/build/tools/calibrate.d.ts +1 -36
  23. package/build/tools/calibrate.d.ts.map +1 -1
  24. package/build/tools/calibrate.js +0 -13
  25. package/build/tools/calibrate.js.map +1 -1
  26. package/build/tools/compare.d.ts +0 -22
  27. package/build/tools/compare.d.ts.map +1 -1
  28. package/build/tools/compare.js +1 -21
  29. package/build/tools/compare.js.map +1 -1
  30. package/build/tools/detect.d.ts +0 -26
  31. package/build/tools/detect.d.ts.map +1 -1
  32. package/build/tools/detect.js +0 -26
  33. package/build/tools/detect.js.map +1 -1
  34. package/build/tools/drift.d.ts +0 -22
  35. package/build/tools/drift.d.ts.map +1 -1
  36. package/build/tools/drift.js +0 -10
  37. package/build/tools/drift.js.map +1 -1
  38. package/build/tools/embed.d.ts +25 -0
  39. package/build/tools/embed.d.ts.map +1 -0
  40. package/build/tools/embed.js +49 -0
  41. package/build/tools/embed.js.map +1 -0
  42. package/build/tools/encoder.d.ts +27 -0
  43. package/build/tools/encoder.d.ts.map +1 -0
  44. package/build/tools/encoder.js +42 -0
  45. package/build/tools/encoder.js.map +1 -0
  46. package/build/tools/evaluate.d.ts +0 -34
  47. package/build/tools/evaluate.d.ts.map +1 -1
  48. package/build/tools/evaluate.js +18 -44
  49. package/build/tools/evaluate.js.map +1 -1
  50. package/build/tools/export-onnx.d.ts +0 -30
  51. package/build/tools/export-onnx.d.ts.map +1 -1
  52. package/build/tools/export-onnx.js +0 -12
  53. package/build/tools/export-onnx.js.map +1 -1
  54. package/build/tools/features-select.d.ts +0 -26
  55. package/build/tools/features-select.d.ts.map +1 -1
  56. package/build/tools/features-select.js +0 -26
  57. package/build/tools/features-select.js.map +1 -1
  58. package/build/tools/feedback.d.ts +1 -37
  59. package/build/tools/feedback.d.ts.map +1 -1
  60. package/build/tools/feedback.js +0 -36
  61. package/build/tools/feedback.js.map +1 -1
  62. package/build/tools/index.d.ts +3 -88
  63. package/build/tools/index.d.ts.map +1 -1
  64. package/build/tools/index.js +3 -36
  65. package/build/tools/index.js.map +1 -1
  66. package/build/tools/info.d.ts +0 -30
  67. package/build/tools/info.d.ts.map +1 -1
  68. package/build/tools/info.js +1 -32
  69. package/build/tools/info.js.map +1 -1
  70. package/build/tools/init.d.ts +0 -15
  71. package/build/tools/init.d.ts.map +1 -1
  72. package/build/tools/init.js +0 -15
  73. package/build/tools/init.js.map +1 -1
  74. package/build/tools/list.d.ts +0 -18
  75. package/build/tools/list.d.ts.map +1 -1
  76. package/build/tools/list.js +0 -18
  77. package/build/tools/list.js.map +1 -1
  78. package/build/tools/logs.d.ts +0 -18
  79. package/build/tools/logs.d.ts.map +1 -1
  80. package/build/tools/logs.js +1 -18
  81. package/build/tools/logs.js.map +1 -1
  82. package/build/tools/predict.d.ts +2 -37
  83. package/build/tools/predict.d.ts.map +1 -1
  84. package/build/tools/predict.js +1 -36
  85. package/build/tools/predict.js.map +1 -1
  86. package/build/tools/prep-plan.d.ts +0 -26
  87. package/build/tools/prep-plan.d.ts.map +1 -1
  88. package/build/tools/prep-plan.js +0 -26
  89. package/build/tools/prep-plan.js.map +1 -1
  90. package/build/tools/prep.d.ts +0 -26
  91. package/build/tools/prep.d.ts.map +1 -1
  92. package/build/tools/prep.js +0 -26
  93. package/build/tools/prep.js.map +1 -1
  94. package/build/tools/project-overview.d.ts +0 -14
  95. package/build/tools/project-overview.d.ts.map +1 -1
  96. package/build/tools/project-overview.js +4 -19
  97. package/build/tools/project-overview.js.map +1 -1
  98. package/build/tools/promote.d.ts +0 -34
  99. package/build/tools/promote.d.ts.map +1 -1
  100. package/build/tools/promote.js +0 -34
  101. package/build/tools/promote.js.map +1 -1
  102. package/build/tools/quick-start.d.ts +2 -28
  103. package/build/tools/quick-start.d.ts.map +1 -1
  104. package/build/tools/quick-start.js +6 -40
  105. package/build/tools/quick-start.js.map +1 -1
  106. package/build/tools/rollback.d.ts +0 -18
  107. package/build/tools/rollback.d.ts.map +1 -1
  108. package/build/tools/rollback.js +0 -9
  109. package/build/tools/rollback.js.map +1 -1
  110. package/build/tools/sample.d.ts +0 -39
  111. package/build/tools/sample.d.ts.map +1 -1
  112. package/build/tools/sample.js +0 -39
  113. package/build/tools/sample.js.map +1 -1
  114. package/build/tools/serve.d.ts +0 -18
  115. package/build/tools/serve.d.ts.map +1 -1
  116. package/build/tools/serve.js +49 -59
  117. package/build/tools/serve.js.map +1 -1
  118. package/build/tools/status.d.ts +0 -10
  119. package/build/tools/status.d.ts.map +1 -1
  120. package/build/tools/status.js +1 -11
  121. package/build/tools/status.js.map +1 -1
  122. package/build/tools/threshold.d.ts +0 -38
  123. package/build/tools/threshold.d.ts.map +1 -1
  124. package/build/tools/threshold.js +0 -14
  125. package/build/tools/threshold.js.map +1 -1
  126. package/build/tools/token.d.ts +27 -0
  127. package/build/tools/token.d.ts.map +1 -0
  128. package/build/tools/token.js +49 -0
  129. package/build/tools/token.js.map +1 -0
  130. package/build/tools/train.d.ts +2 -67
  131. package/build/tools/train.d.ts.map +1 -1
  132. package/build/tools/train.js +8 -77
  133. package/build/tools/train.js.map +1 -1
  134. package/build/tools/trigger.d.ts +0 -14
  135. package/build/tools/trigger.d.ts.map +1 -1
  136. package/build/tools/trigger.js +1 -15
  137. package/build/tools/trigger.js.map +1 -1
  138. package/build/tools/validate.d.ts +0 -10
  139. package/build/tools/validate.d.ts.map +1 -1
  140. package/build/tools/validate.js +1 -11
  141. package/build/tools/validate.js.map +1 -1
  142. package/build/training-run.d.ts +33 -0
  143. package/build/training-run.d.ts.map +1 -0
  144. package/build/training-run.js +107 -0
  145. package/build/training-run.js.map +1 -0
  146. package/build/utils/errors.d.ts +6 -0
  147. package/build/utils/errors.d.ts.map +1 -1
  148. package/build/utils/errors.js +22 -1
  149. package/build/utils/errors.js.map +1 -1
  150. package/package.json +6 -4
@@ -2,78 +2,68 @@
2
2
  * mloop_serve tool - Start REST API server
3
3
  */
4
4
  import { z } from 'zod';
5
- import { executeMloop } from '../executor.js';
6
- import { parseCliOutput } from '../utils/parser.js';
7
- import { formatError } from '../utils/errors.js';
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
- try {
15
- const { projectPath, port, host } = params;
16
- const args = ['serve'];
17
- if (port) {
18
- args.push('--port', String(port));
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
- if (host) {
21
- args.push('--host', host);
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
- // Note: serve is a long-running command, so we use a short timeout
24
- // and expect it to "fail" when it starts successfully
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
- return {
48
- content: [{
49
- type: 'text',
50
- text: formatError(error),
51
- }],
52
- isError: true,
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
@@ -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,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,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,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;CACxD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAmB;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAE3C,MAAM,IAAI,GAAa,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,mEAAmE;QACnE,sDAAsD;QACtD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;YACtC,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE,IAAI,EAAE,mCAAmC;SACnD,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,+BAA+B,IAAI,IAAI,IAAI,KAAK;iBACjE,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4DAA4D;QAC5D,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,8BAA8B,MAAM,CAAC,IAAI,IAAI,IAAI,4CAA4C;qBACpG,CAAC;aACH,CAAC;QACJ,CAAC;QAED,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,SAAS,GAAG;IACvB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,mEAAmE;IAChF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0CAA0C;aACxD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yBAAyB;aACvC;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,OAAO,EAAE,KAAK;CACf,CAAC"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/tools/serve.ts"],"names":[],"mappings":"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"}
@@ -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;;;;;;;;;;;;;;CActB,CAAC"}
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"}
@@ -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;QAElC,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,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,OAAO,EAAE,MAAM;CAChB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBzB,CAAC"}
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"}
@@ -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"}
@@ -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;AAKxB,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,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,CAiD/H;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoErB,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"}
@@ -2,9 +2,8 @@
2
2
  * mloop_train tool - Train ML models with AutoML
3
3
  */
4
4
  import { z } from 'zod';
5
- import { executeMloop, buildArgsWithPositional } from '../executor.js';
6
- import { parseCliOutput } from '../utils/parser.js';
7
- import { formatError } from '../utils/errors.js';
5
+ import { buildArgsWithPositional } from '../executor.js';
6
+ import { runTraining } from '../training-run.js';
8
7
  export const trainSchema = z.object({
9
8
  projectPath: z.string().describe('Path to MLoop project directory'),
10
9
  dataFile: z.string().optional().describe('Training data file (default: datasets/train.csv)'),
@@ -15,7 +14,7 @@ export const trainSchema = z.object({
15
14
  time: z.number().positive().optional().describe('Training time in seconds'),
16
15
  metric: z.string().optional().describe('Optimization metric'),
17
16
  modelName: z.string().optional().describe('Model name (default: "default")'),
18
- balance: z.string().optional().describe('Class balancing strategy: "auto" (balance to 10:1), "none", or target ratio (e.g., "5" for 5:1)'),
17
+ balance: z.string().optional().describe('Class balancing strategy for classification (image classification included — it oversamples its training split): "auto" (balance to 10:1), "none", or target ratio (e.g., "5" for 5:1)'),
19
18
  testSplit: z.number().min(0).max(1).optional().describe('Test data split ratio (0.0-1.0, default: 0.2)'),
20
19
  noPromote: z.boolean().optional().describe('Skip automatic promotion to production'),
21
20
  dropMissingLabels: z.boolean().optional().describe('Drop rows with missing label values before training'),
@@ -23,7 +22,7 @@ export const trainSchema = z.object({
23
22
  additionalDataFiles: z.array(z.string()).optional().describe('Files merged after dataFile (e.g. a retraining set from mloop_sample create); a file without the weight column counts its rows 1'),
24
23
  portable: z.boolean().optional().describe('Train only with steps ONNX can express, so mloop_export_onnx can export the model'),
25
24
  });
26
- export async function train(params) {
25
+ export async function train(params, ctx) {
27
26
  try {
28
27
  const { projectPath, dataFile, label, ...options } = params;
29
28
  // Build positional arguments
@@ -59,15 +58,11 @@ export async function train(params) {
59
58
  const args = buildArgsWithPositional('train', positional, cliParams);
60
59
  if (more.length > 0)
61
60
  args.push('--data', dataFile ?? 'datasets/train.csv', ...more);
62
- const result = await executeMloop(args, {
63
- cwd: projectPath,
64
- timeout: 600_000, // 10 minutes for training
65
- });
66
- const output = parseCliOutput(result.stdout);
61
+ const outcome = await runTraining(args, projectPath, options.time, ctx);
67
62
  return {
68
63
  content: [{
69
64
  type: 'text',
70
- text: output || 'Training completed successfully.',
65
+ text: JSON.stringify(outcome, null, 2),
71
66
  }],
72
67
  };
73
68
  }
@@ -75,7 +70,7 @@ export async function train(params) {
75
70
  return {
76
71
  content: [{
77
72
  type: 'text',
78
- text: formatError(error),
73
+ text: error instanceof Error ? error.message : String(error),
79
74
  }],
80
75
  isError: true,
81
76
  };
@@ -83,71 +78,7 @@ export async function train(params) {
83
78
  }
84
79
  export const trainTool = {
85
80
  name: 'mloop_train',
86
- description: 'Train an ML model using AutoML. Runs mloop train command with specified parameters.',
87
- inputSchema: {
88
- type: 'object',
89
- properties: {
90
- projectPath: {
91
- type: 'string',
92
- description: 'Path to MLoop project directory',
93
- },
94
- dataFile: {
95
- type: 'string',
96
- description: 'Training data file path (default: datasets/train.csv)',
97
- },
98
- label: {
99
- type: 'string',
100
- description: 'Label column name for training',
101
- },
102
- task: {
103
- type: 'string',
104
- enum: ['binary-classification', 'multiclass-classification', 'regression'],
105
- description: 'ML task type',
106
- },
107
- time: {
108
- type: 'number',
109
- description: 'Training time limit in seconds',
110
- },
111
- metric: {
112
- type: 'string',
113
- description: 'Optimization metric (e.g., Accuracy, F1Score, RSquared)',
114
- },
115
- modelName: {
116
- type: 'string',
117
- description: 'Model name for namespacing (default: "default")',
118
- },
119
- balance: {
120
- type: 'string',
121
- description: 'Class balancing strategy for imbalanced datasets: "auto" (balance to 10:1 if needed), "none" (no balancing), or a number like "5" for 5:1 target ratio',
122
- },
123
- testSplit: {
124
- type: 'number',
125
- description: 'Test data split ratio (0.0-1.0, default: 0.2)',
126
- },
127
- noPromote: {
128
- type: 'boolean',
129
- description: 'Skip automatic promotion to production after training',
130
- },
131
- dropMissingLabels: {
132
- type: 'boolean',
133
- description: 'Drop rows with missing label values before training',
134
- },
135
- weight: {
136
- type: 'string',
137
- description: 'Column whose values weight the rows — the relative frequency each row should have (1/π for a row sampled with probability π, lower for a less reliable label source). Never used as a feature; the test metrics are weighted too. Binary, multiclass and regression; refused with --balance, on the label, or on another task',
138
- },
139
- additionalDataFiles: {
140
- type: 'array',
141
- items: { type: 'string' },
142
- description: 'Files merged after dataFile (e.g. a retraining set from mloop_sample create); a file without the weight column counts its rows 1',
143
- },
144
- portable: {
145
- type: 'boolean',
146
- description: 'Train only with steps an ONNX runtime computes exactly (text columns as character n-gram counts), so mloop_export_onnx can export the model. Binary, multiclass and regression',
147
- },
148
- },
149
- required: ['projectPath'],
150
- },
81
+ description: 'Train an ML model using AutoML. Runs mloop train command with specified parameters. Answers the run\'s result (experiment id, trainer, metrics, promotion) and warnings as JSON; reports progress per trial when the call carries a progress token; cancelling the call stops the run. Without time, the run sizes its own budget from the data.',
151
82
  handler: train,
152
83
  };
153
84
  //# sourceMappingURL=train.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,YAAY,CAAC,CAAC;SAC/E,QAAQ,EAAE;SACV,QAAQ,CAAC,cAAc,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wLAAwL,CAAC;IACjO,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACxG,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACpF,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACzG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACrH,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1D,kIAAkI,CAAC;IACrI,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;CAC/H,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAmB,EAAE,GAAmB;IAClE,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;QAE5D,6BAA6B;QAC7B,kGAAkG;QAClG,MAAM,IAAI,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7D,8BAA8B;QAC9B,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,KAAK;YAAE,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM;YAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzD,IAAI,OAAO,CAAC,SAAS;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC7D,IAAI,OAAO,CAAC,OAAO;YAAE,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACjF,IAAI,OAAO,CAAC,SAAS;YAAE,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACtD,IAAI,OAAO,CAAC,iBAAiB;YAAE,SAAS,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM;YAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzD,IAAI,OAAO,CAAC,QAAQ;YAAE,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAEnD,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,oBAAoB,EAAE,GAAG,IAAI,CAAC,CAAC;QAEpF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAExE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,kVAAkV;IAC/V,OAAO,EAAE,KAAK;CACf,CAAC"}