@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
@@ -17,20 +17,6 @@ export declare function trigger(params: TriggerParams): Promise<{
17
17
  export declare const triggerTool: {
18
18
  name: string;
19
19
  description: string;
20
- inputSchema: {
21
- type: string;
22
- properties: {
23
- projectPath: {
24
- type: string;
25
- description: string;
26
- };
27
- modelName: {
28
- type: string;
29
- description: string;
30
- };
31
- };
32
- required: string[];
33
- };
34
20
  handler: typeof trigger;
35
21
  };
36
22
  //# sourceMappingURL=trigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/tools/trigger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;iBAGxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAsB,OAAO,CAAC,MAAM,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,CAyBnI;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAkBvB,CAAC"}
1
+ {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/tools/trigger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;iBAGxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAsB,OAAO,CAAC,MAAM,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,CAyBnI;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -37,21 +37,7 @@ export async function trigger(params) {
37
37
  }
38
38
  export const triggerTool = {
39
39
  name: 'mloop_trigger',
40
- description: 'Check whether retraining is due, as JSON: each default condition — feedback accuracy, feedback volume, time since training and input drift (PSI of the production model\'s logged inputs against its training data, met at 0.25) — with its threshold, current value, whether it is met and why; the drift condition carries every column\'s PSI under drift. A condition that could not be measured says so in details.',
41
- inputSchema: {
42
- type: 'object',
43
- properties: {
44
- projectPath: {
45
- type: 'string',
46
- description: 'Path to MLoop project directory',
47
- },
48
- modelName: {
49
- type: 'string',
50
- description: 'Model name (default: "default")',
51
- },
52
- },
53
- required: ['projectPath'],
54
- },
40
+ description: 'Check whether retraining is due, as JSON: each default condition — feedback accuracy (the production experiment\'s own answers, met once the drop is established: at least 30 rows of feedback and the 95% interval\'s upper end below the threshold), feedback volume, time since training and input drift (PSI of the production model\'s logged inputs against its training data, met at 0.25) — with its threshold, current value, whether it is met and why; the drift condition carries every column\'s PSI under drift. A condition that could not be measured says so in details.',
55
41
  handler: trigger,
56
42
  };
57
43
  //# sourceMappingURL=trigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/tools/trigger.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,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC7E,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC;QACH,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,SAAS;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3D,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,uBAAuB,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,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,mCAAmC;iBACpD,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,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,0ZAA0Z;IACva,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,OAAO,EAAE,OAAO;CACjB,CAAC"}
1
+ {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/tools/trigger.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,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC7E,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC;QACH,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,SAAS;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3D,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,uBAAuB,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,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,mCAAmC;iBACpD,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,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,2jBAA2jB;IACxkB,OAAO,EAAE,OAAO;CACjB,CAAC"}
@@ -16,16 +16,6 @@ export declare function validate(params: ValidateParams): Promise<{
16
16
  export declare const validateTool: {
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 validate;
30
20
  };
31
21
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;iBAEzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,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,CAqBrI;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcxB,CAAC"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;iBAEzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,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,CAqBrI;AAED,eAAO,MAAM,YAAY;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -10,7 +10,7 @@ export const validateSchema = z.object({
10
10
  });
11
11
  export async function validate(params) {
12
12
  try {
13
- const args = ['validate'];
13
+ const args = ['validate', '--json'];
14
14
  const result = await executeMloop(args, { cwd: params.projectPath });
15
15
  const output = parseCliOutput(result.stdout);
16
16
  return {
@@ -33,16 +33,6 @@ export async function validate(params) {
33
33
  export const validateTool = {
34
34
  name: 'mloop_validate',
35
35
  description: 'Validate the mloop.yaml configuration file. Checks for syntax errors, missing fields, and invalid values.',
36
- inputSchema: {
37
- type: 'object',
38
- properties: {
39
- projectPath: {
40
- type: 'string',
41
- description: 'Path to MLoop project directory',
42
- },
43
- },
44
- required: ['projectPath'],
45
- },
46
36
  handler: validate,
47
37
  };
48
38
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.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,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAa,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,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,yBAAyB;iBAC1C,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,YAAY,GAAG;IAC1B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,2GAA2G;IACxH,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,QAAQ;CAClB,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.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,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,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,yBAAyB;iBAC1C,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,YAAY,GAAG;IAC1B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,2GAA2G;IACxH,OAAO,EAAE,QAAQ;CAClB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Runs `mloop train --json` for a tool call: its events become the call's progress notifications, cancelling the call
3
+ * stops the run, and the answer is the run's own result rather than its console text.
4
+ */
5
+ import type { ServerContext } from '@modelcontextprotocol/server';
6
+ /** One line of `mloop train --json`: phase · trial · warning · result · error. */
7
+ interface TrainEvent {
8
+ event: string;
9
+ [key: string]: unknown;
10
+ }
11
+ /**
12
+ * What a finished run answers: the `result` event, the `promotion` event (whether it went to production, and why not),
13
+ * and the warnings it raised on the way. `promotion` is null from a CLI older than the event.
14
+ */
15
+ export interface TrainingOutcome {
16
+ result: TrainEvent | null;
17
+ promotion: TrainEvent | null;
18
+ warnings: string[];
19
+ }
20
+ /**
21
+ * The wall-clock bound of a run with a time budget: the budget plus room for loading, evaluation and saving. A run
22
+ * without one sizes its own budget from the data, so it has no wall-clock bound — only the idle one.
23
+ */
24
+ export declare function trainingTimeout(timeSeconds: number | undefined): number | null;
25
+ /**
26
+ * Runs `args` (a `train` command line without `--json`) in `cwd`. Progress is sent only when the caller asked for it
27
+ * with a progress token. Its value counts the notifications — the protocol wants it to rise with every one, which
28
+ * elapsed time rounded to a readable step does not, and a run's end is not known ahead of it (a budget is not a
29
+ * deadline: loading, evaluation and saving come after) — and its message says what happened and the time so far.
30
+ */
31
+ export declare function runTraining(args: string[], cwd: string, timeSeconds: number | undefined, ctx?: ServerContext): Promise<TrainingOutcome>;
32
+ export {};
33
+ //# sourceMappingURL=training-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-run.d.ts","sourceRoot":"","sources":["../src/training-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,kFAAkF;AAClF,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9E;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,CAAC,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CAoE1B"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Runs `mloop train --json` for a tool call: its events become the call's progress notifications, cancelling the call
3
+ * stops the run, and the answer is the run's own result rather than its console text.
4
+ */
5
+ import { executeMloop } from './executor.js';
6
+ import { CliExecutionError, formatError } from './utils/errors.js';
7
+ /** How often trial progress is sent at most — a search can finish dozens of trials a second. */
8
+ const PROGRESS_INTERVAL_MS = 1_000;
9
+ /**
10
+ * The wall-clock bound of a run with a time budget: the budget plus room for loading, evaluation and saving. A run
11
+ * without one sizes its own budget from the data, so it has no wall-clock bound — only the idle one.
12
+ */
13
+ export function trainingTimeout(timeSeconds) {
14
+ return timeSeconds === undefined ? null : timeSeconds * 1000 + Math.max(600_000, timeSeconds * 500);
15
+ }
16
+ /**
17
+ * Runs `args` (a `train` command line without `--json`) in `cwd`. Progress is sent only when the caller asked for it
18
+ * with a progress token. Its value counts the notifications — the protocol wants it to rise with every one, which
19
+ * elapsed time rounded to a readable step does not, and a run's end is not known ahead of it (a budget is not a
20
+ * deadline: loading, evaluation and saving come after) — and its message says what happened and the time so far.
21
+ */
22
+ export async function runTraining(args, cwd, timeSeconds, ctx) {
23
+ const token = ctx?.mcpReq._meta?.progressToken;
24
+ const started = Date.now();
25
+ let lastSent = 0;
26
+ let sent = 0;
27
+ let trials = 0;
28
+ const warnings = [];
29
+ let result = null;
30
+ let promotion = null;
31
+ const progress = (message, force) => {
32
+ if (token === undefined || ctx === undefined)
33
+ return;
34
+ const now = Date.now();
35
+ if (!force && now - lastSent < PROGRESS_INTERVAL_MS)
36
+ return;
37
+ lastSent = now;
38
+ void ctx.mcpReq.notify({
39
+ method: 'notifications/progress',
40
+ params: {
41
+ progressToken: token,
42
+ progress: ++sent,
43
+ message: `${message} · ${elapsed(now - started)}${timeSeconds !== undefined ? ` of a ${timeSeconds} s budget` : ''}`,
44
+ },
45
+ }).catch(() => undefined);
46
+ };
47
+ const onLine = (line) => {
48
+ const event = parse(line);
49
+ if (!event)
50
+ return;
51
+ switch (event.event) {
52
+ case 'phase':
53
+ progress(`phase ${String(event['phase'])}`, true);
54
+ break;
55
+ case 'trial': {
56
+ trials++;
57
+ // Which score is best is the CLI's judgment (a metric's direction); the line reports this trial's.
58
+ const value = typeof event['value'] === 'number' ? ` ${String(event['metric'])} ${event['value'].toFixed(4)}` : '';
59
+ progress(`trial ${trials}: ${String(event['trainer'] ?? '').replace(/ \(.*$/, '')}${value}`, false);
60
+ break;
61
+ }
62
+ case 'warning':
63
+ warnings.push(String(event['message'] ?? ''));
64
+ break;
65
+ case 'result':
66
+ result = event;
67
+ break;
68
+ case 'promotion':
69
+ promotion = event;
70
+ break;
71
+ }
72
+ };
73
+ try {
74
+ await executeMloop([...args, '--json'], {
75
+ cwd,
76
+ timeout: trainingTimeout(timeSeconds),
77
+ onStdoutLine: onLine,
78
+ });
79
+ }
80
+ catch (error) {
81
+ // The run says why it failed as error events; the console text on stderr repeats them for a person.
82
+ if (error instanceof CliExecutionError) {
83
+ const reasons = error.stdout.split('\n').map(parse)
84
+ .filter((e) => e?.event === 'error')
85
+ .map(e => String(e['message'] ?? ''));
86
+ if (reasons.length > 0)
87
+ throw new Error(reasons.join('\n'));
88
+ }
89
+ throw new Error(formatError(error));
90
+ }
91
+ return { result, promotion, warnings };
92
+ }
93
+ function parse(line) {
94
+ if (!line.startsWith('{'))
95
+ return null;
96
+ try {
97
+ const value = JSON.parse(line);
98
+ return typeof value === 'object' && value !== null && 'event' in value ? value : null;
99
+ }
100
+ catch {
101
+ return null;
102
+ }
103
+ }
104
+ function elapsed(ms) {
105
+ return `${(ms / 1000).toFixed(1)} s`;
106
+ }
107
+ //# sourceMappingURL=training-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-run.js","sourceRoot":"","sources":["../src/training-run.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,12 @@ export declare class TimeoutError extends Error {
21
21
  readonly timeoutMs: number;
22
22
  constructor(message: string, timeoutMs: number);
23
23
  }
24
+ /**
25
+ * The request a command ran for was cancelled, and the command was stopped.
26
+ */
27
+ export declare class CancelledError extends Error {
28
+ constructor();
29
+ }
24
30
  /**
25
31
  * Format error for MCP response
26
32
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;gBAH9B,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,SAAS,EAAE,MAAM;gBADjC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM;CAKpC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAuBlD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;IAJhC,YACE,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAI/B;CACF;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,SAAS,EAAE,MAAM;IAFnC,YACE,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EAIlC;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,cAGC;CACF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAmClD"}
@@ -34,11 +34,32 @@ export class TimeoutError extends Error {
34
34
  this.name = 'TimeoutError';
35
35
  }
36
36
  }
37
+ /**
38
+ * The request a command ran for was cancelled, and the command was stopped.
39
+ */
40
+ export class CancelledError extends Error {
41
+ constructor() {
42
+ super('Cancelled: the request was cancelled and the command stopped');
43
+ this.name = 'CancelledError';
44
+ }
45
+ }
37
46
  /**
38
47
  * Format error for MCP response
39
48
  */
40
49
  export function formatError(error) {
41
50
  if (error instanceof CliExecutionError) {
51
+ // A command asked for --json that fails with a structured answer (validate's errors, a refused promotion) says
52
+ // so on stdout as JSON; that answer is the result, the console text on stderr repeats it for a person.
53
+ const answer = stripAnsi(error.stdout).trim();
54
+ if (answer.startsWith('{') || answer.startsWith('[')) {
55
+ try {
56
+ JSON.parse(answer);
57
+ return answer;
58
+ }
59
+ catch {
60
+ // Not one JSON document — fall through to the full report.
61
+ }
62
+ }
42
63
  const parts = [`CLI Error (exit code ${error.exitCode})`];
43
64
  if (error.stderr) {
44
65
  parts.push(`\nStderr: ${stripAnsi(error.stderr)}`);
@@ -49,7 +70,7 @@ export function formatError(error) {
49
70
  return parts.join('');
50
71
  }
51
72
  if (error instanceof TimeoutError) {
52
- return `Timeout: Command did not complete within ${error.timeoutMs}ms`;
73
+ return `Timeout: ${error.message}`;
53
74
  }
54
75
  if (error instanceof Error) {
55
76
  return error.message;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,4CAA4C;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGxB;IACA;IACA;IAJlB,YACE,OAAe,EACC,QAAgB,EAChB,MAAc,EACd,MAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAGnB;IAFlB,YACE,OAAe,EACC,SAAiB;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,wBAAwB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,4CAA4C,KAAK,CAAC,SAAS,IAAI,CAAC;IACzE,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,4CAA4C;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGxB,QAAQ;IACR,MAAM;IACN,MAAM;IAJxB,YACE,OAAe,EACC,QAAgB,EAChB,MAAc,EACd,MAAc;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;wBAJC,QAAQ;sBACR,MAAM;sBACN,MAAM;QAGtB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAGnB,SAAS;IAF3B,YACE,OAAe,EACC,SAAiB;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;yBAFC,SAAS;QAGzB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACvC,+GAA+G;QAC/G,uGAAuG;QACvG,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;YAC7D,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,wBAAwB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iyulab/mloop-mcp",
3
- "version": "0.11.3",
3
+ "version": "0.12.0",
4
4
  "description": "MCP server for MLoop CLI - ML.NET MLOps tool",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -41,16 +41,18 @@
41
41
  "node": ">=22.0.0"
42
42
  },
43
43
  "dependencies": {
44
- "@modelcontextprotocol/sdk": "^1.32.1",
44
+ "@modelcontextprotocol/server": "^2.4.0",
45
45
  "zod": "^4.6.7"
46
46
  },
47
47
  "devDependencies": {
48
+ "@modelcontextprotocol/client": "^2.4.0",
48
49
  "@types/node": "^22.0.0",
49
50
  "rimraf": "^6.0.0",
50
- "typescript": "^5.7.0"
51
+ "typescript": "^7.0.2"
51
52
  },
52
53
  "files": [
53
54
  "build",
54
- "README.md"
55
+ "README.md",
56
+ "CHANGELOG.md"
55
57
  ]
56
58
  }