@iyulab/mloop-mcp 0.12.0 → 0.14.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 +48 -0
- package/LICENSE +21 -0
- package/README.md +8 -2
- package/build/server.d.ts.map +1 -1
- package/build/server.js +2 -1
- package/build/server.js.map +1 -1
- package/build/tasks.d.ts +26 -0
- package/build/tasks.d.ts.map +1 -0
- package/build/tasks.js +26 -0
- package/build/tasks.js.map +1 -0
- package/build/tool-hints.d.ts +26 -0
- package/build/tool-hints.d.ts.map +1 -0
- package/build/tool-hints.js +69 -0
- package/build/tool-hints.js.map +1 -0
- package/build/tools/analyze.d.ts +4 -0
- package/build/tools/analyze.d.ts.map +1 -1
- package/build/tools/analyze.js +35 -8
- package/build/tools/analyze.js.map +1 -1
- package/build/tools/evaluate.d.ts +2 -0
- package/build/tools/evaluate.d.ts.map +1 -1
- package/build/tools/evaluate.js +9 -1
- package/build/tools/evaluate.js.map +1 -1
- package/build/tools/feedback.js +2 -2
- package/build/tools/feedback.js.map +1 -1
- package/build/tools/init.d.ts +13 -0
- package/build/tools/init.d.ts.map +1 -1
- package/build/tools/init.js +3 -2
- package/build/tools/init.js.map +1 -1
- package/build/tools/predict.d.ts +2 -0
- package/build/tools/predict.d.ts.map +1 -1
- package/build/tools/predict.js +7 -1
- package/build/tools/predict.js.map +1 -1
- package/build/tools/quick-start.d.ts +14 -1
- package/build/tools/quick-start.d.ts.map +1 -1
- package/build/tools/quick-start.js +8 -5
- package/build/tools/quick-start.js.map +1 -1
- package/build/tools/sample.js +3 -3
- package/build/tools/sample.js.map +1 -1
- package/build/tools/threshold.d.ts +1 -0
- package/build/tools/threshold.d.ts.map +1 -1
- package/build/tools/threshold.js +5 -2
- package/build/tools/threshold.js.map +1 -1
- package/build/tools/train.d.ts +24 -0
- package/build/tools/train.d.ts.map +1 -1
- package/build/tools/train.js +27 -2
- package/build/tools/train.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,54 @@ Releases before 0.11.3 are described by their commits. 0.12.0 includes the 0.11.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.14.0] - 2026-10-30
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `mloop_train` takes `maxTrials`, passed as `mloop train --max-trials`: the trainer search stops after that many trials within `time`, so the
|
|
14
|
+
same call trains the same search on a fast machine and a slow one. Needs an `mloop` that has the flag; a task that runs no search refuses it.
|
|
15
|
+
- `mloop_init`, `mloop_train` and `mloop_quick_start` take every task the `mloop` CLI has — all sixteen, where they listed three
|
|
16
|
+
(`regression` and the two classification tasks) and an agent could not start a forecasting, clustering, image or text project.
|
|
17
|
+
The list is one module (`src/tasks.ts`); `npm run check:cli` now also compares it with `mloop init --help` and reports a task the
|
|
18
|
+
tools lack or one the CLI does not know.
|
|
19
|
+
- `mloop_train` passes `groupColumn` (ranking), `encoder` and `bankSize` (image-anomaly), `maxRows`, `samplingStrategy`, `seed` and
|
|
20
|
+
`records` (a JSON data file's row path) to the matching `mloop train` options.
|
|
21
|
+
`encoder`, `bankSize` and the `image-anomaly` task need `mloop` 0.47 or later.
|
|
22
|
+
- `mloop_evaluate` takes `normalClass` (the subfolder of normal pictures for an image-anomaly model) and `records`; `mloop_predict` takes `records` and
|
|
23
|
+
`includeFeatures` (false leaves the input columns out of the output file).
|
|
24
|
+
|
|
25
|
+
- `mloop_analyze` takes the `series` aspect with `column`, `maxLag` and `aroundTrend`: one column read as an ordered series, answered as the
|
|
26
|
+
autocorrelation and partial autocorrelation functions with their bands, the ADF and KPSS stationarity tests read together, and the
|
|
27
|
+
dominant period. It needs `mloop` 0.48 or later. A label and a model name are not used by this aspect and are not passed.
|
|
28
|
+
- Every tool now carries the four MCP safety hints (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`), so a client's
|
|
29
|
+
approval policy can read what a tool may do instead of guessing from its name. Twelve tools only read (`mloop_list`, `mloop_status`,
|
|
30
|
+
`mloop_info`, `mloop_analyze`, `mloop_compare`, `mloop_evaluate`, `mloop_validate`, `mloop_logs`, `mloop_trigger`, `mloop_drift`,
|
|
31
|
+
`mloop_embed`, `mloop_project_overview`) and so does `mloop_token`; the rest write, and those that can overwrite a file at a path
|
|
32
|
+
the caller names or delete a setting, a threshold or an installed encoder say `destructiveHint: true`. The hints live in one table
|
|
33
|
+
(`src/tool-hints.ts`) and the server refuses to start with a tool that has none.
|
|
34
|
+
- The repository and the package carry a `LICENSE` file (MIT, as `package.json` already declared).
|
|
35
|
+
- `mloop_threshold` takes `guarantee`, a risk such as 0.05 used with `precision`: the threshold is then the lowest one whose
|
|
36
|
+
precision is certified to reach the target (wrong in at most that share of the files it could be run on) instead of the lowest
|
|
37
|
+
one that reached it on the file, and the command refuses, writing nothing, when the file has too few rows to carry the
|
|
38
|
+
guarantee. It needs `mloop` 0.48 or later.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- `mloop_quick_start`'s `label` is optional (omit it for a task that learns without one) and its `dataFile` may be a folder of pictures.
|
|
43
|
+
|
|
44
|
+
## [0.13.0] - 2026-10-27
|
|
45
|
+
|
|
46
|
+
`mloop_feedback`, `mloop_sample`, `mloop_init` and `mloop_quick_start` need `mloop` 0.47 or later; the other tools
|
|
47
|
+
work with `mloop` 0.40 or later as before.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- **Breaking for a server run against an older `mloop`:** `mloop_feedback` (list, metrics) and `mloop_sample` name the
|
|
52
|
+
model with `--name` — the CLI's spelling for a model name since 0.47, where `--model` now means a model file — and
|
|
53
|
+
ask for `--json`.
|
|
54
|
+
- `mloop_init`, `mloop_feedback` (add) and `mloop_sample` (create) answer the command's JSON (`--json`, new in `mloop`
|
|
55
|
+
0.47) instead of its console text, as every other tool does; `mloop_quick_start` initialises through the same JSON.
|
|
56
|
+
|
|
9
57
|
## [0.12.0] - 2026-10-26
|
|
10
58
|
|
|
11
59
|
Every tool works with `mloop` 0.40 or later; `mloop_train`, `mloop_auto_train` and `mloop_quick_start` report
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 iyulab
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ If MLoop is not in PATH, set the `MLOOP_PATH` environment variable:
|
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
36
|
# Windows
|
|
37
|
-
set MLOOP_PATH
|
|
37
|
+
set MLOOP_PATH=%USERPROFILE%\tools\mloop.exe
|
|
38
38
|
|
|
39
39
|
# Linux/macOS
|
|
40
40
|
export MLOOP_PATH=/usr/local/bin/mloop
|
|
@@ -83,7 +83,7 @@ plugins:
|
|
|
83
83
|
| `mloop_calibrate` | Fit a classifier's probability calibration (binary platt · isotonic, multiclass temperature) on labeled rows without retraining, show it, or clear it (mloop >= 0.40) |
|
|
84
84
|
| `mloop_export_onnx` | Model as ONNX + manifest (inputs and their data columns, outputs, classes, hashes) for runtimes without ML.NET |
|
|
85
85
|
| `mloop_info` | Analyze and profile datasets |
|
|
86
|
-
| `mloop_analyze` | Run one read-only EDA aspect (profile/correlation/importance/outliers/distribution) as structured JSON |
|
|
86
|
+
| `mloop_analyze` | Run one read-only EDA aspect (profile/correlation/importance/outliers/distribution/series) as structured JSON |
|
|
87
87
|
| `mloop_drift` | Recent inputs and answers vs the training data — PSI per column, for the answers (mloop >= 0.39), for free-text columns by length and unseen words (mloop >= 0.40), per slice, as JSON (mloop >= 0.38) |
|
|
88
88
|
| `mloop_detect` | One-shot time-series anomaly detection with SPC bounds — no training, no project required (mloop >= 0.21) |
|
|
89
89
|
| `mloop_prep_plan` | Declare a preprocessing step in mloop.yaml (policy only, no data change) as structured JSON |
|
|
@@ -96,6 +96,12 @@ plugins:
|
|
|
96
96
|
| `mloop_embed` | Images or texts to vectors with a pretrained encoder, with the encoder's identity (texts: mloop >= 0.46) |
|
|
97
97
|
| `mloop_encoder` | List, install (catalog: `dinov2-small`, `multilingual-minilm`) or remove pretrained encoders |
|
|
98
98
|
|
|
99
|
+
Every tool declares the MCP safety hints (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) in `tools/list`, so a
|
|
100
|
+
client can apply an approval policy without reading tool names: the reading tools (`mloop_list`, `mloop_status`, `mloop_info`,
|
|
101
|
+
`mloop_analyze`, `mloop_compare`, `mloop_evaluate`, `mloop_validate`, `mloop_logs`, `mloop_trigger`, `mloop_drift`, `mloop_embed`,
|
|
102
|
+
`mloop_project_overview`, `mloop_token`) change nothing; the others write, and `destructiveHint: true` marks the ones that can overwrite a
|
|
103
|
+
file at a path you name or delete a setting, a threshold or an installed encoder. The table is `src/tool-hints.ts`.
|
|
104
|
+
|
|
99
105
|
## Tool Examples
|
|
100
106
|
|
|
101
107
|
### Train a model
|
package/build/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAsB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAsB,MAAM,8BAA8B,CAAC;AAqF7E;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAexC"}
|
package/build/server.js
CHANGED
|
@@ -5,6 +5,7 @@ import { McpServer } from '@modelcontextprotocol/server';
|
|
|
5
5
|
import { trainTool, trainSchema, predictTool, predictSchema, listTool, listSchema, promoteTool, promoteSchema, rollbackTool, rollbackSchema, thresholdTool, thresholdSchema, calibrateTool, calibrateSchema, exportOnnxTool, exportOnnxSchema, infoTool, infoSchema, statusTool, statusSchema, compareTool, compareSchema, evaluateTool, evaluateSchema, serveTool, serveSchema, initTool, initSchema, validateTool, validateSchema, prepTool, prepSchema, logsTool, logsSchema, feedbackTool, feedbackSchema, sampleTool, sampleSchema, triggerTool, triggerSchema, driftTool, driftSchema, analyzeTool, analyzeSchema, detectTool, detectSchema, prepPlanTool, prepPlanSchema, featuresSelectTool, featuresSelectSchema, tokenTool, tokenSchema, embedTool, embedSchema, encoderTool, encoderSchema, quickStartTool, quickStartSchema, autoTrainTool, autoTrainSchema, projectOverviewTool, projectOverviewSchema, } from './tools/index.js';
|
|
6
6
|
import { packageVersion } from './package-info.js';
|
|
7
7
|
import { withRequestSignal } from './executor.js';
|
|
8
|
+
import { hintsFor } from './tool-hints.js';
|
|
8
9
|
/** Every tool, with the schema its arguments are validated against — in the order `tools/list` names them. */
|
|
9
10
|
const tools = [
|
|
10
11
|
[trainTool, trainSchema],
|
|
@@ -48,7 +49,7 @@ export function createServer() {
|
|
|
48
49
|
version: packageVersion,
|
|
49
50
|
});
|
|
50
51
|
for (const [tool, schema] of tools) {
|
|
51
|
-
server.registerTool(tool.name, { description: tool.description, inputSchema: schema }, async (params, ctx) => withRequestSignal(ctx.mcpReq.signal, () => tool.handler(params, ctx)));
|
|
52
|
+
server.registerTool(tool.name, { description: tool.description, inputSchema: schema, annotations: hintsFor(tool.name) }, async (params, ctx) => withRequestSignal(ctx.mcpReq.signal, () => tool.handler(params, ctx)));
|
|
52
53
|
}
|
|
53
54
|
return server;
|
|
54
55
|
}
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAsB,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EACL,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,aAAa,EAC1B,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,aAAa,EAC1B,YAAY,EAAE,cAAc,EAC5B,aAAa,EAAE,eAAe,EAC9B,aAAa,EAAE,eAAe,EAC9B,cAAc,EAAE,gBAAgB,EAChC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,YAAY,EACxB,WAAW,EAAE,aAAa,EAC1B,YAAY,EAAE,cAAc,EAC5B,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,cAAc,EAC5B,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,cAAc,EAC5B,UAAU,EAAE,YAAY,EACxB,WAAW,EAAE,aAAa,EAC1B,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,aAAa,EAC1B,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,cAAc,EAC5B,kBAAkB,EAAE,oBAAoB,EACxC,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,aAAa,EAC1B,cAAc,EAAE,gBAAgB,EAChC,aAAa,EAAE,eAAe,EAC9B,mBAAmB,EAAE,qBAAqB,GAC3C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/build/tasks.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ML task types `mloop` knows (`mloop init --help`). One list for every tool that takes a `task`: a tool with its own
|
|
3
|
+
* shorter copy is a CLI an agent can only partly drive. `scripts/check-cli-options.mjs` compares this list with the
|
|
4
|
+
* installed CLI's.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export declare const MLOOP_TASKS: readonly ['regression', 'binary-classification', 'multiclass-classification', 'anomaly-detection', 'clustering', 'ranking', 'forecasting', 'time-series-anomaly', 'image-classification', 'object-detection', 'image-anomaly', 'text-classification', 'sentence-similarity', 'ner', 'question-answering', 'recommendation'];
|
|
8
|
+
export declare const taskSchema: z.ZodEnum<{
|
|
9
|
+
"anomaly-detection": "anomaly-detection";
|
|
10
|
+
"binary-classification": "binary-classification";
|
|
11
|
+
clustering: "clustering";
|
|
12
|
+
forecasting: "forecasting";
|
|
13
|
+
"image-anomaly": "image-anomaly";
|
|
14
|
+
"image-classification": "image-classification";
|
|
15
|
+
"multiclass-classification": "multiclass-classification";
|
|
16
|
+
ner: "ner";
|
|
17
|
+
"object-detection": "object-detection";
|
|
18
|
+
"question-answering": "question-answering";
|
|
19
|
+
ranking: "ranking";
|
|
20
|
+
recommendation: "recommendation";
|
|
21
|
+
regression: "regression";
|
|
22
|
+
"sentence-similarity": "sentence-similarity";
|
|
23
|
+
"text-classification": "text-classification";
|
|
24
|
+
"time-series-anomaly": "time-series-anomaly";
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW,YACtB,YAAY,EACZ,uBAAuB,EACvB,2BAA2B,EAC3B,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,EACL,oBAAoB,EACpB,gBAAgB,CACR,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;EAAsB,CAAC"}
|
package/build/tasks.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ML task types `mloop` knows (`mloop init --help`). One list for every tool that takes a `task`: a tool with its own
|
|
3
|
+
* shorter copy is a CLI an agent can only partly drive. `scripts/check-cli-options.mjs` compares this list with the
|
|
4
|
+
* installed CLI's.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
export const MLOOP_TASKS = [
|
|
8
|
+
'regression',
|
|
9
|
+
'binary-classification',
|
|
10
|
+
'multiclass-classification',
|
|
11
|
+
'anomaly-detection',
|
|
12
|
+
'clustering',
|
|
13
|
+
'ranking',
|
|
14
|
+
'forecasting',
|
|
15
|
+
'time-series-anomaly',
|
|
16
|
+
'image-classification',
|
|
17
|
+
'object-detection',
|
|
18
|
+
'image-anomaly',
|
|
19
|
+
'text-classification',
|
|
20
|
+
'sentence-similarity',
|
|
21
|
+
'ner',
|
|
22
|
+
'question-answering',
|
|
23
|
+
'recommendation',
|
|
24
|
+
];
|
|
25
|
+
export const taskSchema = z.enum(MLOOP_TASKS);
|
|
26
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,uBAAuB;IACvB,2BAA2B;IAC3B,mBAAmB;IACnB,YAAY;IACZ,SAAS;IACT,aAAa;IACb,qBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,qBAAqB;IACrB,qBAAqB;IACrB,KAAK;IACL,oBAAoB;IACpB,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safety hints (MCP tool annotations) of every tool — the one place that says what a tool may do to the world, so an
|
|
3
|
+
* approval policy reads a mechanism instead of guessing from names.
|
|
4
|
+
*
|
|
5
|
+
* The four hints follow the MCP definitions and are written for the worst thing a tool can do in any of its modes:
|
|
6
|
+
* - readOnly — it changes nothing: no file written, no process started, no state of the project touched.
|
|
7
|
+
* - destructive — it can delete or overwrite something that is not regenerated by the same call: a file at a path the
|
|
8
|
+
* caller names, a setting, an installed encoder. Adding a new experiment, or replacing production
|
|
9
|
+
* (the replaced model is backed up and `mloop_rollback` returns it) is not destructive.
|
|
10
|
+
* - idempotent — the same call again has no further effect (a retry is safe).
|
|
11
|
+
* - openWorld — it reaches beyond the local machine and project: a download, a listener other hosts can call.
|
|
12
|
+
* A read-only tool says `destructiveHint: false`; the field is only meaningful otherwise, but a policy should not have to
|
|
13
|
+
* know that. Where a tool has modes (`mloop_threshold` chooses or clears), the hint is the worst mode's.
|
|
14
|
+
*
|
|
15
|
+
* `hintsFor` throws for a tool without an entry, so a tool added to the server cannot ship unannotated.
|
|
16
|
+
*/
|
|
17
|
+
export interface ToolHints {
|
|
18
|
+
readOnlyHint: boolean;
|
|
19
|
+
destructiveHint: boolean;
|
|
20
|
+
idempotentHint: boolean;
|
|
21
|
+
openWorldHint: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const TOOL_HINTS: Readonly<Record<string, ToolHints>>;
|
|
24
|
+
/** The hints of tool <paramref name="name"/>; throws when it has none. */
|
|
25
|
+
export declare function hintsFor(name: string): ToolHints;
|
|
26
|
+
//# sourceMappingURL=tool-hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-hints.d.ts","sourceRoot":"","sources":["../src/tool-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAYD,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAyC1D,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAKhD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safety hints (MCP tool annotations) of every tool — the one place that says what a tool may do to the world, so an
|
|
3
|
+
* approval policy reads a mechanism instead of guessing from names.
|
|
4
|
+
*
|
|
5
|
+
* The four hints follow the MCP definitions and are written for the worst thing a tool can do in any of its modes:
|
|
6
|
+
* - readOnly — it changes nothing: no file written, no process started, no state of the project touched.
|
|
7
|
+
* - destructive — it can delete or overwrite something that is not regenerated by the same call: a file at a path the
|
|
8
|
+
* caller names, a setting, an installed encoder. Adding a new experiment, or replacing production
|
|
9
|
+
* (the replaced model is backed up and `mloop_rollback` returns it) is not destructive.
|
|
10
|
+
* - idempotent — the same call again has no further effect (a retry is safe).
|
|
11
|
+
* - openWorld — it reaches beyond the local machine and project: a download, a listener other hosts can call.
|
|
12
|
+
* A read-only tool says `destructiveHint: false`; the field is only meaningful otherwise, but a policy should not have to
|
|
13
|
+
* know that. Where a tool has modes (`mloop_threshold` chooses or clears), the hint is the worst mode's.
|
|
14
|
+
*
|
|
15
|
+
* `hintsFor` throws for a tool without an entry, so a tool added to the server cannot ship unannotated.
|
|
16
|
+
*/
|
|
17
|
+
const hints = (readOnlyHint, destructiveHint, idempotentHint, openWorldHint = false) => ({ readOnlyHint, destructiveHint, idempotentHint, openWorldHint });
|
|
18
|
+
/** Reads the project or a data file and writes nothing. */
|
|
19
|
+
const READS = hints(true, false, true);
|
|
20
|
+
/** Writes at a path the caller names or declares settings — a repeat gives the same result, and it can overwrite. */
|
|
21
|
+
const WRITES_OVER = hints(false, true, true);
|
|
22
|
+
/** Adds to the project (an experiment, an entry, a process) — a repeat adds again. */
|
|
23
|
+
const ADDS = hints(false, false, false);
|
|
24
|
+
export const TOOL_HINTS = {
|
|
25
|
+
// Reads
|
|
26
|
+
mloop_list: READS,
|
|
27
|
+
mloop_status: READS,
|
|
28
|
+
mloop_info: READS,
|
|
29
|
+
mloop_analyze: READS,
|
|
30
|
+
mloop_compare: READS,
|
|
31
|
+
mloop_evaluate: READS,
|
|
32
|
+
mloop_validate: READS,
|
|
33
|
+
mloop_logs: READS,
|
|
34
|
+
mloop_trigger: READS,
|
|
35
|
+
mloop_drift: READS,
|
|
36
|
+
mloop_embed: READS,
|
|
37
|
+
mloop_project_overview: READS,
|
|
38
|
+
mloop_token: READS, // issues a signed token; nothing is stored
|
|
39
|
+
// Adds
|
|
40
|
+
mloop_train: ADDS, // a new experiment; a better model replaces production, the old one is backed up
|
|
41
|
+
mloop_auto_train: ADDS, // profiles, then trains
|
|
42
|
+
mloop_quick_start: ADDS, // init, train and promote in one call
|
|
43
|
+
mloop_init: ADDS, // a new project directory
|
|
44
|
+
mloop_feedback: ADDS, // `add` appends an entry
|
|
45
|
+
mloop_rollback: ADDS, // again returns to what production held before the rollback
|
|
46
|
+
mloop_predict: hints(false, true, false), // `output` overwrites the named file; `log` appends to the prediction log
|
|
47
|
+
mloop_serve: hints(false, false, false, true), // starts a server that keeps running and listens for other hosts
|
|
48
|
+
// Replaces the production pointer with a backup, and repeats are no-ops
|
|
49
|
+
mloop_promote: hints(false, false, true),
|
|
50
|
+
// Writes beside the model or at a caller-named path; `clear` / `reset` / `remove` modes delete
|
|
51
|
+
mloop_threshold: WRITES_OVER,
|
|
52
|
+
mloop_calibrate: WRITES_OVER,
|
|
53
|
+
mloop_export_onnx: WRITES_OVER,
|
|
54
|
+
mloop_prep: WRITES_OVER,
|
|
55
|
+
mloop_prep_plan: WRITES_OVER,
|
|
56
|
+
mloop_features_select: WRITES_OVER,
|
|
57
|
+
mloop_sample: WRITES_OVER,
|
|
58
|
+
mloop_detect: WRITES_OVER, // writes only when `output` is given
|
|
59
|
+
// Installs download weights; remove deletes them
|
|
60
|
+
mloop_encoder: hints(false, true, true, true),
|
|
61
|
+
};
|
|
62
|
+
/** The hints of tool <paramref name="name"/>; throws when it has none. */
|
|
63
|
+
export function hintsFor(name) {
|
|
64
|
+
const found = TOOL_HINTS[name];
|
|
65
|
+
if (!found)
|
|
66
|
+
throw new Error(`Tool '${name}' has no safety hints: add it to TOOL_HINTS in src/tool-hints.ts.`);
|
|
67
|
+
return found;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=tool-hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-hints.js","sourceRoot":"","sources":["../src/tool-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,MAAM,KAAK,GAAG,CAAC,YAAqB,EAAE,eAAwB,EAAE,cAAuB,EAAE,aAAa,GAAG,KAAK,EAAa,EAAE,CAC3H,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,CAAC;AAErE,2DAA2D;AAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC,qHAAqH;AACrH,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,sFAAsF;AACtF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAwC;IAC7D,QAAQ;IACR,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;IACrB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,KAAK;IAClB,sBAAsB,EAAE,KAAK;IAC7B,WAAW,EAAE,KAAK,EAAE,2CAA2C;IAE/D,OAAO;IACP,WAAW,EAAE,IAAI,EAAS,iFAAiF;IAC3G,gBAAgB,EAAE,IAAI,EAAI,wBAAwB;IAClD,iBAAiB,EAAE,IAAI,EAAG,sCAAsC;IAChE,UAAU,EAAE,IAAI,EAAU,0BAA0B;IACpD,cAAc,EAAE,IAAI,EAAM,yBAAyB;IACnD,cAAc,EAAE,IAAI,EAAM,4DAA4D;IACtF,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,0EAA0E;IACpH,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,iEAAiE;IAEhH,wEAAwE;IACxE,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IAExC,+FAA+F;IAC/F,eAAe,EAAE,WAAW;IAC5B,eAAe,EAAE,WAAW;IAC5B,iBAAiB,EAAE,WAAW;IAC9B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,WAAW;IAC5B,qBAAqB,EAAE,WAAW;IAClC,YAAY,EAAE,WAAW;IACzB,YAAY,EAAE,WAAW,EAAE,qCAAqC;IAEhE,iDAAiD;IACjD,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;CAC9C,CAAC;AAEF,0EAA0E;AAC1E,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK;QACR,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,mEAAmE,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/build/tools/analyze.d.ts
CHANGED
|
@@ -14,10 +14,14 @@ export declare const analyzeSchema: z.ZodObject<{
|
|
|
14
14
|
importance: "importance";
|
|
15
15
|
outliers: "outliers";
|
|
16
16
|
profile: "profile";
|
|
17
|
+
series: "series";
|
|
17
18
|
}>;
|
|
18
19
|
dataFile: z.ZodOptional<z.ZodString>;
|
|
19
20
|
projectPath: z.ZodOptional<z.ZodString>;
|
|
20
21
|
label: z.ZodOptional<z.ZodString>;
|
|
22
|
+
column: z.ZodOptional<z.ZodString>;
|
|
23
|
+
maxLag: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
aroundTrend: z.ZodOptional<z.ZodBoolean>;
|
|
21
25
|
modelName: z.ZodOptional<z.ZodString>;
|
|
22
26
|
}, z.core.$strip>;
|
|
23
27
|
export type AnalyzeParams = z.infer<typeof analyzeSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;iBA2CxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,GACpB,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,CA8ChF;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IAIX,OAAO;CACR,CAAC"}
|
package/build/tools/analyze.js
CHANGED
|
@@ -12,12 +12,14 @@ import { parseCliOutput } from '../utils/parser.js';
|
|
|
12
12
|
import { formatError } from '../utils/errors.js';
|
|
13
13
|
export const analyzeSchema = z.object({
|
|
14
14
|
aspect: z
|
|
15
|
-
.enum(['profile', 'correlation', 'importance', 'outliers', 'distribution'])
|
|
15
|
+
.enum(['profile', 'correlation', 'importance', 'outliers', 'distribution', 'series'])
|
|
16
16
|
.describe('EDA aspect to compute: "profile" (column types, null %, cardinality, constant columns), ' +
|
|
17
17
|
'"correlation" (high-correlation pairs + multicollinearity), ' +
|
|
18
18
|
'"importance" (feature-importance ranking, requires a label), ' +
|
|
19
19
|
'"outliers" (count/rate/isolation-forest threshold), ' +
|
|
20
|
-
'"distribution" (skewness/kurtosis/normality tests)'
|
|
20
|
+
'"distribution" (skewness/kurtosis/normality tests), ' +
|
|
21
|
+
'"series" (one column read as an ordered series: autocorrelation/partial autocorrelation with their bands, ' +
|
|
22
|
+
'ADF and KPSS stationarity tests read together, dominant period; needs mloop 0.48 or later)'),
|
|
21
23
|
dataFile: z
|
|
22
24
|
.string()
|
|
23
25
|
.optional()
|
|
@@ -29,6 +31,20 @@ export const analyzeSchema = z.object({
|
|
|
29
31
|
.string()
|
|
30
32
|
.optional()
|
|
31
33
|
.describe('Label/target column name (overrides mloop.yaml; required for the "importance" aspect)'),
|
|
34
|
+
column: z
|
|
35
|
+
.string()
|
|
36
|
+
.optional()
|
|
37
|
+
.describe('Series column to analyze (only the "series" aspect; optional when the CSV has a single column)'),
|
|
38
|
+
maxLag: z
|
|
39
|
+
.number()
|
|
40
|
+
.int()
|
|
41
|
+
.positive()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Largest lag of the autocorrelation functions (only "series"; default min(10*log10 n, n - 1))'),
|
|
44
|
+
aroundTrend: z
|
|
45
|
+
.boolean()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('Test stationarity around a linear trend instead of a constant level (only "series")'),
|
|
32
48
|
modelName: z
|
|
33
49
|
.string()
|
|
34
50
|
.optional()
|
|
@@ -36,12 +52,23 @@ export const analyzeSchema = z.object({
|
|
|
36
52
|
});
|
|
37
53
|
export async function analyze(params) {
|
|
38
54
|
try {
|
|
39
|
-
const { aspect, dataFile, projectPath, label, modelName } = params;
|
|
55
|
+
const { aspect, dataFile, projectPath, label, modelName, column, maxLag, aroundTrend } = params;
|
|
40
56
|
const cliParams = {};
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
if (aspect === 'series') {
|
|
58
|
+
// A series has no label and no model: its options are the column and the two test choices.
|
|
59
|
+
if (column)
|
|
60
|
+
cliParams['column'] = column;
|
|
61
|
+
if (maxLag !== undefined)
|
|
62
|
+
cliParams['maxLag'] = maxLag;
|
|
63
|
+
if (aroundTrend)
|
|
64
|
+
cliParams['aroundTrend'] = true;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (label)
|
|
68
|
+
cliParams['label'] = label;
|
|
69
|
+
if (modelName)
|
|
70
|
+
cliParams['name'] = modelName;
|
|
71
|
+
}
|
|
45
72
|
// Always emit the structured JSON envelope for LLM consumption.
|
|
46
73
|
cliParams['json'] = true;
|
|
47
74
|
// dataFile is optional: when omitted, the CLI defaults to the project's configured train data.
|
|
@@ -76,7 +103,7 @@ export const analyzeTool = {
|
|
|
76
103
|
name: 'mloop_analyze',
|
|
77
104
|
description: 'Run a single, read-only exploratory-data-analysis (EDA) aspect on a dataset and return a ' +
|
|
78
105
|
'structured JSON envelope for feature-engineering decisions. Aspects: profile, correlation, ' +
|
|
79
|
-
'importance (needs a label), outliers, distribution. Never mutates the data file or mloop.yaml.',
|
|
106
|
+
'importance (needs a label), outliers, distribution, series (a column as an ordered series). Never mutates the data file or mloop.yaml.',
|
|
80
107
|
handler: analyze,
|
|
81
108
|
};
|
|
82
109
|
//# sourceMappingURL=analyze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export declare const evaluateSchema: z.ZodObject<{
|
|
|
9
9
|
experimentId: z.ZodOptional<z.ZodString>;
|
|
10
10
|
sliceBy: z.ZodOptional<z.ZodString>;
|
|
11
11
|
weight: z.ZodOptional<z.ZodString>;
|
|
12
|
+
normalClass: z.ZodOptional<z.ZodString>;
|
|
13
|
+
records: z.ZodOptional<z.ZodString>;
|
|
12
14
|
against: z.ZodOptional<z.ZodString>;
|
|
13
15
|
}, z.core.$strip>;
|
|
14
16
|
export type EvaluateParams = z.infer<typeof evaluateSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/tools/evaluate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/tools/evaluate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;;;;;;;;;iBAUzB,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,CAgErI;AAED,eAAO,MAAM,YAAY;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/evaluate.js
CHANGED
|
@@ -12,11 +12,13 @@ export const evaluateSchema = z.object({
|
|
|
12
12
|
experimentId: z.string().optional().describe('Specific experiment to evaluate'),
|
|
13
13
|
sliceBy: z.string().optional().describe('Also report the metrics for each value of this column of the test data'),
|
|
14
14
|
weight: z.string().optional().describe('Column that weights the test rows (defaults to the experiment\'s training weight when the file has it)'),
|
|
15
|
+
normalClass: z.string().optional().describe('image-anomaly: the subfolder of the test folder that holds the normal pictures (default: normal, good or ok); every other subfolder is anomalous (mloop >= 0.47)'),
|
|
16
|
+
records: z.string().optional().describe('For a JSON test file: the dotted path to the array whose items are the rows'),
|
|
15
17
|
against: z.string().optional().describe('Also evaluate this experiment id (or "production") on the same rows and weights, and compare the two row by row (mloop >= 0.39)'),
|
|
16
18
|
});
|
|
17
19
|
export async function evaluate(params) {
|
|
18
20
|
try {
|
|
19
|
-
const { projectPath, dataFile, modelName, experimentId, sliceBy, weight, against } = params;
|
|
21
|
+
const { projectPath, dataFile, modelName, experimentId, sliceBy, weight, against, normalClass, records } = params;
|
|
20
22
|
// CLI usage: mloop evaluate [<experiment-id> [<test-data>]] [options]
|
|
21
23
|
// Both experiment-id and test-data are positional arguments
|
|
22
24
|
// Note: test-data can only be specified after experiment-id (positional order)
|
|
@@ -48,6 +50,12 @@ export async function evaluate(params) {
|
|
|
48
50
|
if (against) {
|
|
49
51
|
args.push('--against', against);
|
|
50
52
|
}
|
|
53
|
+
if (normalClass) {
|
|
54
|
+
args.push('--normal-class', normalClass);
|
|
55
|
+
}
|
|
56
|
+
if (records) {
|
|
57
|
+
args.push('--records', records);
|
|
58
|
+
}
|
|
51
59
|
args.push('--json');
|
|
52
60
|
const result = await executeMloop(args, {
|
|
53
61
|
cwd: projectPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/tools/evaluate.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;IACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACzE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;IACjH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wGAAwG,CAAC;IAChJ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iIAAiI,CAAC;CAC3K,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/tools/evaluate.ts"],"names":[],"mappings":"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"}
|
package/build/tools/feedback.js
CHANGED
|
@@ -24,9 +24,9 @@ export function feedbackArgs(params) {
|
|
|
24
24
|
cliParams['weight'] = params.weight;
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
|
-
cliParams['
|
|
28
|
-
cliParams['json'] = true;
|
|
27
|
+
cliParams['name'] = params.modelName;
|
|
29
28
|
}
|
|
29
|
+
cliParams['json'] = true;
|
|
30
30
|
return buildArgsWithPositional('feedback', [params.action], cliParams);
|
|
31
31
|
}
|
|
32
32
|
export async function feedback(params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/tools/feedback.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,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACrG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACtG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IAC7G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClD,6IAA6I,CAAC;CACjJ,CAAC,CAAC;AAIH,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,SAAS,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QACjD,SAAS,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACzC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/tools/feedback.ts"],"names":[],"mappings":"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"}
|
package/build/tools/init.d.ts
CHANGED
|
@@ -5,9 +5,22 @@ import { z } from 'zod';
|
|
|
5
5
|
export declare const initSchema: z.ZodObject<{
|
|
6
6
|
projectPath: z.ZodString;
|
|
7
7
|
task: z.ZodEnum<{
|
|
8
|
+
"anomaly-detection": "anomaly-detection";
|
|
8
9
|
"binary-classification": "binary-classification";
|
|
10
|
+
clustering: "clustering";
|
|
11
|
+
forecasting: "forecasting";
|
|
12
|
+
"image-anomaly": "image-anomaly";
|
|
13
|
+
"image-classification": "image-classification";
|
|
9
14
|
"multiclass-classification": "multiclass-classification";
|
|
15
|
+
ner: "ner";
|
|
16
|
+
"object-detection": "object-detection";
|
|
17
|
+
"question-answering": "question-answering";
|
|
18
|
+
ranking: "ranking";
|
|
19
|
+
recommendation: "recommendation";
|
|
10
20
|
regression: "regression";
|
|
21
|
+
"sentence-similarity": "sentence-similarity";
|
|
22
|
+
"text-classification": "text-classification";
|
|
23
|
+
"time-series-anomaly": "time-series-anomaly";
|
|
11
24
|
}>;
|
|
12
25
|
}, z.core.$strip>;
|
|
13
26
|
export type InitParams = z.infer<typeof initSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/tools/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/tools/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;iBAIrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,wBAAsB,IAAI,CAAC,MAAM,EAAE,UAAU,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,CAwB7H;AAED,eAAO,MAAM,QAAQ;IACnB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/init.js
CHANGED
|
@@ -6,16 +6,17 @@ import { mkdirSync } from 'fs';
|
|
|
6
6
|
import { executeMloop, buildArgsWithPositional } from '../executor.js';
|
|
7
7
|
import { parseCliOutput } from '../utils/parser.js';
|
|
8
8
|
import { formatError } from '../utils/errors.js';
|
|
9
|
+
import { taskSchema } from '../tasks.js';
|
|
9
10
|
export const initSchema = z.object({
|
|
10
11
|
projectPath: z.string().describe('Path to create/initialize the MLoop project'),
|
|
11
|
-
task:
|
|
12
|
+
task: taskSchema
|
|
12
13
|
.describe('ML task type for this project'),
|
|
13
14
|
});
|
|
14
15
|
export async function init(params) {
|
|
15
16
|
try {
|
|
16
17
|
// Ensure project directory exists
|
|
17
18
|
mkdirSync(params.projectPath, { recursive: true });
|
|
18
|
-
const args = buildArgsWithPositional('init', ['.'], { task: params.task });
|
|
19
|
+
const args = buildArgsWithPositional('init', ['.'], { task: params.task, json: true });
|
|
19
20
|
const result = await executeMloop(args, { cwd: params.projectPath });
|
|
20
21
|
const output = parseCliOutput(result.stdout);
|
|
21
22
|
return {
|
package/build/tools/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/tools/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,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;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/tools/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,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;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC/E,IAAI,EAAE,UAAU;SACb,QAAQ,CAAC,+BAA+B,CAAC;CAC7C,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAkB;IAC3C,IAAI,CAAC;QACH,kCAAkC;QAClC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,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,QAAQ,GAAG;IACtB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,qFAAqF;IAClG,OAAO,EAAE,IAAI;CACd,CAAC"}
|
package/build/tools/predict.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export declare const predictSchema: z.ZodObject<{
|
|
|
9
9
|
experimentId: z.ZodOptional<z.ZodString>;
|
|
10
10
|
output: z.ZodOptional<z.ZodString>;
|
|
11
11
|
log: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
+
includeFeatures: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
+
records: z.ZodOptional<z.ZodString>;
|
|
12
14
|
unknownStrategy: z.ZodOptional<z.ZodEnum<{
|
|
13
15
|
auto: "auto";
|
|
14
16
|
error: "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predict.d.ts","sourceRoot":"","sources":["../../src/tools/predict.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"predict.d.ts","sourceRoot":"","sources":["../../src/tools/predict.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;iBAYxB,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,CAyDnI;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/predict.js
CHANGED
|
@@ -13,12 +13,14 @@ export const predictSchema = z.object({
|
|
|
13
13
|
.describe('Predict with this experiment (e.g. a staging candidate) instead of production — production does not move'),
|
|
14
14
|
output: z.string().optional().describe('Output file path'),
|
|
15
15
|
log: z.boolean().optional().describe('Log the predictions; without an output file each returned row carries the predictionId that feedback takes'),
|
|
16
|
+
includeFeatures: z.boolean().optional().describe('Whether the output file repeats the input feature columns (the CLI default is yes; false leaves them out)'),
|
|
17
|
+
records: z.string().optional().describe('For a JSON data file: the dotted path to the array whose items are the rows'),
|
|
16
18
|
unknownStrategy: z.enum(['auto', 'error', 'use-most-frequent', 'use-missing']).optional()
|
|
17
19
|
.describe('Strategy for handling unknown categorical values in prediction data'),
|
|
18
20
|
});
|
|
19
21
|
export async function predict(params) {
|
|
20
22
|
try {
|
|
21
|
-
const { projectPath, dataFile, modelName, experimentId, output, log, unknownStrategy } = params;
|
|
23
|
+
const { projectPath, dataFile, modelName, experimentId, output, log, unknownStrategy, includeFeatures, records } = params;
|
|
22
24
|
// dataFile is a positional argument
|
|
23
25
|
const positional = [];
|
|
24
26
|
if (dataFile)
|
|
@@ -34,6 +36,10 @@ export async function predict(params) {
|
|
|
34
36
|
cliParams['log'] = true;
|
|
35
37
|
if (unknownStrategy)
|
|
36
38
|
cliParams['unknown-strategy'] = unknownStrategy;
|
|
39
|
+
if (includeFeatures === false)
|
|
40
|
+
cliParams['include-features'] = 'false';
|
|
41
|
+
if (records)
|
|
42
|
+
cliParams['records'] = records;
|
|
37
43
|
// Structured propagation: without an explicit output file, request `--json` so the agent receives the
|
|
38
44
|
// full prediction rows (predictedLabel, probabilities, conformal band, and the normalized `confidence`
|
|
39
45
|
// MLoop now owns) instead of scraped Spectre text — this is what unblocked MCP structured consumption.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predict.js","sourceRoot":"","sources":["../../src/tools/predict.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,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAChG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAChC,QAAQ,CAAC,0GAA0G,CAAC;IACvH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC1D,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4GAA4G,CAAC;IAClJ,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE;SACtF,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"predict.js","sourceRoot":"","sources":["../../src/tools/predict.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,24 @@ import type { ServerContext } from '@modelcontextprotocol/server';
|
|
|
6
6
|
export declare const quickStartSchema: z.ZodObject<{
|
|
7
7
|
projectPath: z.ZodString;
|
|
8
8
|
dataFile: z.ZodString;
|
|
9
|
-
label: z.ZodString
|
|
9
|
+
label: z.ZodOptional<z.ZodString>;
|
|
10
10
|
task: z.ZodEnum<{
|
|
11
|
+
"anomaly-detection": "anomaly-detection";
|
|
11
12
|
"binary-classification": "binary-classification";
|
|
13
|
+
clustering: "clustering";
|
|
14
|
+
forecasting: "forecasting";
|
|
15
|
+
"image-anomaly": "image-anomaly";
|
|
16
|
+
"image-classification": "image-classification";
|
|
12
17
|
"multiclass-classification": "multiclass-classification";
|
|
18
|
+
ner: "ner";
|
|
19
|
+
"object-detection": "object-detection";
|
|
20
|
+
"question-answering": "question-answering";
|
|
21
|
+
ranking: "ranking";
|
|
22
|
+
recommendation: "recommendation";
|
|
13
23
|
regression: "regression";
|
|
24
|
+
"sentence-similarity": "sentence-similarity";
|
|
25
|
+
"text-classification": "text-classification";
|
|
26
|
+
"time-series-anomaly": "time-series-anomaly";
|
|
14
27
|
}>;
|
|
15
28
|
time: z.ZodOptional<z.ZodNumber>;
|
|
16
29
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-start.d.ts","sourceRoot":"","sources":["../../src/tools/quick-start.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"quick-start.d.ts","sourceRoot":"","sources":["../../src/tools/quick-start.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAMlE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;iBAQ3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,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,CA+C9J;AAED,eAAO,MAAM,cAAc;IACzB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
|
@@ -6,11 +6,12 @@ import { mkdirSync } from 'fs';
|
|
|
6
6
|
import { executeMloop, buildArgsWithPositional } from '../executor.js';
|
|
7
7
|
import { runTraining } from '../training-run.js';
|
|
8
8
|
import { formatError } from '../utils/errors.js';
|
|
9
|
+
import { taskSchema } from '../tasks.js';
|
|
9
10
|
export const quickStartSchema = z.object({
|
|
10
11
|
projectPath: z.string().describe('Project directory path'),
|
|
11
|
-
dataFile: z.string().describe('Training data CSV file
|
|
12
|
-
label: z.string().describe('Label column name'),
|
|
13
|
-
task:
|
|
12
|
+
dataFile: z.string().describe('Training data: a CSV (or other table) file, or for the image tasks a folder of pictures'),
|
|
13
|
+
label: z.string().optional().describe('Label column name (omit for tasks that learn without one: clustering, anomaly-detection, image-anomaly, ...)'),
|
|
14
|
+
task: taskSchema
|
|
14
15
|
.describe('ML task type'),
|
|
15
16
|
time: z.number().positive().optional()
|
|
16
17
|
.describe('Training time in seconds (omit for auto-time)'),
|
|
@@ -20,11 +21,13 @@ export async function quickStart(params, ctx) {
|
|
|
20
21
|
try {
|
|
21
22
|
// Step 1: Init (ensure directory exists)
|
|
22
23
|
mkdirSync(params.projectPath, { recursive: true });
|
|
23
|
-
const initArgs = buildArgsWithPositional('init', ['.'], { task: params.task });
|
|
24
|
+
const initArgs = buildArgsWithPositional('init', ['.'], { task: params.task, json: true });
|
|
24
25
|
await executeMloop(initArgs, { cwd: params.projectPath });
|
|
25
26
|
steps.push('Project initialized');
|
|
26
27
|
// Step 2: Train (auto-time if time not specified)
|
|
27
|
-
const trainParams = {
|
|
28
|
+
const trainParams = {};
|
|
29
|
+
if (params.label)
|
|
30
|
+
trainParams['label'] = params.label;
|
|
28
31
|
if (params.time)
|
|
29
32
|
trainParams['time'] = params.time;
|
|
30
33
|
const trainArgs = buildArgsWithPositional('train', [params.dataFile], trainParams);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-start.js","sourceRoot":"","sources":["../../src/tools/quick-start.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"quick-start.js","sourceRoot":"","sources":["../../src/tools/quick-start.ts"],"names":[],"mappings":"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"}
|
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) {
|
|
@@ -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":"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"}
|
|
@@ -8,6 +8,7 @@ export declare const thresholdSchema: z.ZodObject<{
|
|
|
8
8
|
modelName: z.ZodOptional<z.ZodString>;
|
|
9
9
|
precision: z.ZodOptional<z.ZodNumber>;
|
|
10
10
|
precisionOf: z.ZodOptional<z.ZodString>;
|
|
11
|
+
guarantee: z.ZodOptional<z.ZodNumber>;
|
|
11
12
|
dataFile: z.ZodOptional<z.ZodString>;
|
|
12
13
|
weight: z.ZodOptional<z.ZodString>;
|
|
13
14
|
clear: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -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
|
|
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;;;;;;;;;;iBAU1B,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,CA0BvI;AAED,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/threshold.js
CHANGED
|
@@ -11,13 +11,14 @@ export const thresholdSchema = z.object({
|
|
|
11
11
|
modelName: z.string().optional().describe('Model name'),
|
|
12
12
|
precision: z.number().optional().describe('Target positive precision (above 0, at most 1): the lowest threshold reaching it on dataFile is chosen'),
|
|
13
13
|
precisionOf: z.string().optional().describe('The class whose precision is targeted, by its label value (default: the positive class) — the negative class too, when a wrong "no" is the costly answer'),
|
|
14
|
+
guarantee: z.number().optional().describe('Risk δ, above 0 and below 1 (e.g. 0.05), with precision: choose the lowest threshold whose precision is certified to reach the target — wrong in at most δ of the files it could be run on — or refuse when the file cannot carry it (mloop >= 0.48)'),
|
|
14
15
|
dataFile: z.string().optional().describe('Labeled evaluation file the threshold is chosen on (required with precision)'),
|
|
15
16
|
weight: z.string().optional().describe('Column that weights the rows'),
|
|
16
17
|
clear: z.boolean().optional().describe('Remove the threshold: the model answers at 0.5 again'),
|
|
17
18
|
});
|
|
18
19
|
export async function threshold(params) {
|
|
19
20
|
try {
|
|
20
|
-
const { projectPath, experimentId, modelName, precision, precisionOf, dataFile, weight, clear } = params;
|
|
21
|
+
const { projectPath, experimentId, modelName, precision, precisionOf, guarantee, dataFile, weight, clear } = params;
|
|
21
22
|
const args = ['threshold'];
|
|
22
23
|
if (experimentId)
|
|
23
24
|
args.push(experimentId);
|
|
@@ -27,6 +28,8 @@ export async function threshold(params) {
|
|
|
27
28
|
args.push('--precision', String(precision));
|
|
28
29
|
if (precisionOf)
|
|
29
30
|
args.push('--precision-of', precisionOf);
|
|
31
|
+
if (guarantee !== undefined)
|
|
32
|
+
args.push('--guarantee', String(guarantee));
|
|
30
33
|
if (dataFile)
|
|
31
34
|
args.push('--data', dataFile);
|
|
32
35
|
if (weight)
|
|
@@ -48,7 +51,7 @@ export async function threshold(params) {
|
|
|
48
51
|
}
|
|
49
52
|
export const thresholdTool = {
|
|
50
53
|
name: 'mloop_threshold',
|
|
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).',
|
|
54
|
+
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. With guarantee (a risk such as 0.05, mloop >= 0.48) the threshold is the lowest one whose precision is certified, not merely observed on the file — the usual choice is the luckiest reading of its rows, and on synthetic files its true precision fell below the target about half the time; a certified one needs enough rows (29 right answers for 0.90 at 0.05) and is refused, writing nothing, when the file cannot carry 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
55
|
handler: threshold,
|
|
53
56
|
};
|
|
54
57
|
//# sourceMappingURL=threshold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/tools/threshold.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,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IAClH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wGAAwG,CAAC;IACnJ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0JAA0J,CAAC;IACvM,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IACxH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;CAC/F,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAuB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/tools/threshold.ts"],"names":[],"mappings":"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"}
|
package/build/tools/train.d.ts
CHANGED
|
@@ -8,11 +8,25 @@ export declare const trainSchema: z.ZodObject<{
|
|
|
8
8
|
dataFile: z.ZodOptional<z.ZodString>;
|
|
9
9
|
label: z.ZodOptional<z.ZodString>;
|
|
10
10
|
task: z.ZodOptional<z.ZodEnum<{
|
|
11
|
+
"anomaly-detection": "anomaly-detection";
|
|
11
12
|
"binary-classification": "binary-classification";
|
|
13
|
+
clustering: "clustering";
|
|
14
|
+
forecasting: "forecasting";
|
|
15
|
+
"image-anomaly": "image-anomaly";
|
|
16
|
+
"image-classification": "image-classification";
|
|
12
17
|
"multiclass-classification": "multiclass-classification";
|
|
18
|
+
ner: "ner";
|
|
19
|
+
"object-detection": "object-detection";
|
|
20
|
+
"question-answering": "question-answering";
|
|
21
|
+
ranking: "ranking";
|
|
22
|
+
recommendation: "recommendation";
|
|
13
23
|
regression: "regression";
|
|
24
|
+
"sentence-similarity": "sentence-similarity";
|
|
25
|
+
"text-classification": "text-classification";
|
|
26
|
+
"time-series-anomaly": "time-series-anomaly";
|
|
14
27
|
}>>;
|
|
15
28
|
time: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
maxTrials: z.ZodOptional<z.ZodNumber>;
|
|
16
30
|
metric: z.ZodOptional<z.ZodString>;
|
|
17
31
|
modelName: z.ZodOptional<z.ZodString>;
|
|
18
32
|
balance: z.ZodOptional<z.ZodString>;
|
|
@@ -22,6 +36,16 @@ export declare const trainSchema: z.ZodObject<{
|
|
|
22
36
|
weight: z.ZodOptional<z.ZodString>;
|
|
23
37
|
additionalDataFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
24
38
|
portable: z.ZodOptional<z.ZodBoolean>;
|
|
39
|
+
groupColumn: z.ZodOptional<z.ZodString>;
|
|
40
|
+
encoder: z.ZodOptional<z.ZodString>;
|
|
41
|
+
bankSize: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
maxRows: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
samplingStrategy: z.ZodOptional<z.ZodEnum<{
|
|
44
|
+
random: "random";
|
|
45
|
+
stratified: "stratified";
|
|
46
|
+
}>>;
|
|
47
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
records: z.ZodOptional<z.ZodString>;
|
|
25
49
|
}, z.core.$strip>;
|
|
26
50
|
export type TrainParams = z.infer<typeof trainSchema>;
|
|
27
51
|
export declare function train(params: TrainParams, ctx?: ServerContext): Promise<{
|
|
@@ -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;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,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;AAKlE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BtB,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,CAoDpJ;AAED,eAAO,MAAM,SAAS;IACpB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
|
package/build/tools/train.js
CHANGED
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { buildArgsWithPositional } from '../executor.js';
|
|
6
6
|
import { runTraining } from '../training-run.js';
|
|
7
|
+
import { taskSchema } from '../tasks.js';
|
|
7
8
|
export const trainSchema = z.object({
|
|
8
9
|
projectPath: z.string().describe('Path to MLoop project directory'),
|
|
9
10
|
dataFile: z.string().optional().describe('Training data file (default: datasets/train.csv)'),
|
|
10
11
|
label: z.string().optional().describe('Label column name'),
|
|
11
|
-
task:
|
|
12
|
+
task: taskSchema
|
|
12
13
|
.optional()
|
|
13
|
-
.describe('ML task type'),
|
|
14
|
+
.describe('ML task type (default: the project\'s, from mloop.yaml)'),
|
|
14
15
|
time: z.number().positive().optional().describe('Training time in seconds'),
|
|
16
|
+
maxTrials: z.number().int().positive().optional().describe('Stop the trainer search after this many trials, within time — the same search on a fast machine and a slow one. Tasks that run no search (clustering, anomaly detection, recommendation, forecasting, deep learning) refuse it'),
|
|
15
17
|
metric: z.string().optional().describe('Optimization metric'),
|
|
16
18
|
modelName: z.string().optional().describe('Model name (default: "default")'),
|
|
17
19
|
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)'),
|
|
@@ -21,6 +23,13 @@ export const trainSchema = z.object({
|
|
|
21
23
|
weight: z.string().optional().describe('Column that weights the rows (e.g. 1/π for sampled labels); never a feature'),
|
|
22
24
|
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'),
|
|
23
25
|
portable: z.boolean().optional().describe('Train only with steps ONNX can express, so mloop_export_onnx can export the model'),
|
|
26
|
+
groupColumn: z.string().optional().describe('Ranking: the column that groups rows into query contexts'),
|
|
27
|
+
encoder: z.string().optional().describe('image-anomaly: the installed image encoder the pictures are embedded with (default: the only one installed — see mloop_encoder)'),
|
|
28
|
+
bankSize: z.number().int().positive().optional().describe('image-anomaly: the most patches the bank holds; a limit keeps a coreset of the patches (default: every patch)'),
|
|
29
|
+
maxRows: z.number().int().positive().optional().describe('Most training rows; more are sampled'),
|
|
30
|
+
samplingStrategy: z.enum(['random', 'stratified']).optional().describe('How rows are sampled when maxRows applies (default: by task)'),
|
|
31
|
+
seed: z.number().int().optional().describe('Random seed for the sampling (default: 42)'),
|
|
32
|
+
records: z.string().optional().describe('For a JSON data file: the dotted path to the array whose items are the rows'),
|
|
24
33
|
});
|
|
25
34
|
export async function train(params, ctx) {
|
|
26
35
|
try {
|
|
@@ -39,6 +48,8 @@ export async function train(params, ctx) {
|
|
|
39
48
|
cliParams['task'] = options.task;
|
|
40
49
|
if (options.time)
|
|
41
50
|
cliParams['time'] = options.time;
|
|
51
|
+
if (options.maxTrials)
|
|
52
|
+
cliParams['max-trials'] = options.maxTrials;
|
|
42
53
|
if (options.metric)
|
|
43
54
|
cliParams['metric'] = options.metric;
|
|
44
55
|
if (options.modelName)
|
|
@@ -55,6 +66,20 @@ export async function train(params, ctx) {
|
|
|
55
66
|
cliParams['weight'] = options.weight;
|
|
56
67
|
if (options.portable)
|
|
57
68
|
cliParams['portable'] = true;
|
|
69
|
+
if (options.groupColumn)
|
|
70
|
+
cliParams['group-column'] = options.groupColumn;
|
|
71
|
+
if (options.encoder)
|
|
72
|
+
cliParams['encoder'] = options.encoder;
|
|
73
|
+
if (options.bankSize)
|
|
74
|
+
cliParams['bank-size'] = options.bankSize;
|
|
75
|
+
if (options.maxRows)
|
|
76
|
+
cliParams['max-rows'] = options.maxRows;
|
|
77
|
+
if (options.samplingStrategy)
|
|
78
|
+
cliParams['sampling-strategy'] = options.samplingStrategy;
|
|
79
|
+
if (options.seed !== undefined)
|
|
80
|
+
cliParams['seed'] = options.seed;
|
|
81
|
+
if (options.records)
|
|
82
|
+
cliParams['records'] = options.records;
|
|
58
83
|
const args = buildArgsWithPositional('train', positional, cliParams);
|
|
59
84
|
if (more.length > 0)
|
|
60
85
|
args.push('--data', dataFile ?? 'datasets/train.csv', ...more);
|
package/build/tools/train.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iyulab/mloop-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "MCP server for MLoop CLI - ML.NET MLOps tool",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"files": [
|
|
54
54
|
"build",
|
|
55
55
|
"README.md",
|
|
56
|
-
"CHANGELOG.md"
|
|
56
|
+
"CHANGELOG.md",
|
|
57
|
+
"LICENSE"
|
|
57
58
|
]
|
|
58
59
|
}
|