@iyulab/mloop-mcp 0.14.0 → 0.15.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 (109) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +16 -3
  3. package/build/server.d.ts.map +1 -1
  4. package/build/server.js +4 -1
  5. package/build/server.js.map +1 -1
  6. package/build/tool-hints.d.ts.map +1 -1
  7. package/build/tool-hints.js +4 -1
  8. package/build/tool-hints.js.map +1 -1
  9. package/build/tools/analyze.d.ts +1 -0
  10. package/build/tools/analyze.d.ts.map +1 -1
  11. package/build/tools/analyze.js +7 -1
  12. package/build/tools/analyze.js.map +1 -1
  13. package/build/tools/calibrate.d.ts +1 -0
  14. package/build/tools/calibrate.d.ts.map +1 -1
  15. package/build/tools/calibrate.js +4 -1
  16. package/build/tools/calibrate.js.map +1 -1
  17. package/build/tools/compare.d.ts +4 -1
  18. package/build/tools/compare.d.ts.map +1 -1
  19. package/build/tools/compare.js +11 -2
  20. package/build/tools/compare.js.map +1 -1
  21. package/build/tools/detect.d.ts +1 -0
  22. package/build/tools/detect.d.ts.map +1 -1
  23. package/build/tools/detect.js +4 -1
  24. package/build/tools/detect.js.map +1 -1
  25. package/build/tools/docker.d.ts +23 -0
  26. package/build/tools/docker.d.ts.map +1 -0
  27. package/build/tools/docker.js +38 -0
  28. package/build/tools/docker.js.map +1 -0
  29. package/build/tools/embed.d.ts +1 -0
  30. package/build/tools/embed.d.ts.map +1 -1
  31. package/build/tools/embed.js +6 -3
  32. package/build/tools/embed.js.map +1 -1
  33. package/build/tools/encoder.d.ts +5 -1
  34. package/build/tools/encoder.d.ts.map +1 -1
  35. package/build/tools/encoder.js +18 -9
  36. package/build/tools/encoder.js.map +1 -1
  37. package/build/tools/explain.d.ts +29 -0
  38. package/build/tools/explain.d.ts.map +1 -0
  39. package/build/tools/explain.js +57 -0
  40. package/build/tools/explain.js.map +1 -0
  41. package/build/tools/feedback.d.ts +3 -0
  42. package/build/tools/feedback.d.ts.map +1 -1
  43. package/build/tools/feedback.js +7 -0
  44. package/build/tools/feedback.js.map +1 -1
  45. package/build/tools/index.d.ts +3 -0
  46. package/build/tools/index.d.ts.map +1 -1
  47. package/build/tools/index.js +3 -0
  48. package/build/tools/index.js.map +1 -1
  49. package/build/tools/info.d.ts +1 -0
  50. package/build/tools/info.d.ts.map +1 -1
  51. package/build/tools/info.js +5 -1
  52. package/build/tools/info.js.map +1 -1
  53. package/build/tools/init.d.ts +2 -0
  54. package/build/tools/init.d.ts.map +1 -1
  55. package/build/tools/init.js +8 -1
  56. package/build/tools/init.js.map +1 -1
  57. package/build/tools/list.d.ts +1 -0
  58. package/build/tools/list.d.ts.map +1 -1
  59. package/build/tools/list.js +4 -1
  60. package/build/tools/list.js.map +1 -1
  61. package/build/tools/logs.d.ts +2 -0
  62. package/build/tools/logs.d.ts.map +1 -1
  63. package/build/tools/logs.js +6 -0
  64. package/build/tools/logs.js.map +1 -1
  65. package/build/tools/predict.d.ts +2 -0
  66. package/build/tools/predict.d.ts.map +1 -1
  67. package/build/tools/predict.js +8 -1
  68. package/build/tools/predict.js.map +1 -1
  69. package/build/tools/prep-plan.d.ts +1 -0
  70. package/build/tools/prep-plan.d.ts.map +1 -1
  71. package/build/tools/prep-plan.js +4 -1
  72. package/build/tools/prep-plan.js.map +1 -1
  73. package/build/tools/promote.d.ts +1 -0
  74. package/build/tools/promote.d.ts.map +1 -1
  75. package/build/tools/promote.js +4 -1
  76. package/build/tools/promote.js.map +1 -1
  77. package/build/tools/runtime.d.ts +31 -0
  78. package/build/tools/runtime.d.ts.map +1 -0
  79. package/build/tools/runtime.js +42 -0
  80. package/build/tools/runtime.js.map +1 -0
  81. package/build/tools/sample.d.ts +2 -1
  82. package/build/tools/sample.d.ts.map +1 -1
  83. package/build/tools/sample.js +5 -3
  84. package/build/tools/sample.js.map +1 -1
  85. package/build/tools/status.d.ts +1 -0
  86. package/build/tools/status.d.ts.map +1 -1
  87. package/build/tools/status.js +4 -1
  88. package/build/tools/status.js.map +1 -1
  89. package/build/tools/threshold.d.ts +1 -0
  90. package/build/tools/threshold.d.ts.map +1 -1
  91. package/build/tools/threshold.js +4 -1
  92. package/build/tools/threshold.js.map +1 -1
  93. package/build/tools/train.d.ts +5 -0
  94. package/build/tools/train.d.ts.map +1 -1
  95. package/build/tools/train.js +17 -0
  96. package/build/tools/train.js.map +1 -1
  97. package/build/tools/trigger.d.ts +2 -0
  98. package/build/tools/trigger.d.ts.map +1 -1
  99. package/build/tools/trigger.js +6 -0
  100. package/build/tools/trigger.js.map +1 -1
  101. package/build/tools/validate.d.ts +1 -0
  102. package/build/tools/validate.d.ts.map +1 -1
  103. package/build/tools/validate.js +3 -0
  104. package/build/tools/validate.js.map +1 -1
  105. package/build/training-run.d.ts +7 -1
  106. package/build/training-run.d.ts.map +1 -1
  107. package/build/training-run.js +9 -1
  108. package/build/training-run.js.map +1 -1
  109. package/package.json +2 -3
package/CHANGELOG.md CHANGED
@@ -6,6 +6,39 @@ 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.15.0] - 2026-11-02
10
+
11
+ ### Added
12
+
13
+ - `mloop_predict` takes `scoreThreshold`, passed as `mloop predict --score-threshold`: for an object-detection model, the confidence a box needs to be reported (default 0.5). A detector that finds objects without being 0.5 confident scores `map_50` 0 and shows nothing at the default; `0.3` (then lower) shows what it finds. Needs an `mloop` that has the flag; any other task refuses it.
14
+ - `mloop_train` takes `epochs`, passed as `mloop train --epochs`: how many epochs a deep-learning task (text classification, sentence similarity, NER,
15
+ question answering, object detection) trains for. `time` does not shorten such a fit, so the epoch count is its one dial on cost - try 2 first to see
16
+ what an epoch costs on the machine. Needs an `mloop` that has the flag; a task that does not count epochs refuses it.
17
+ - Options the CLI had and the tools could not pass now are fields: `records` (the dotted path to the rows of a JSON data file) on `mloop_info`,
18
+ `mloop_analyze`, `mloop_threshold`, `mloop_calibrate` and `mloop_detect`; `trials` on `mloop_list` (one experiment's trial leaderboard);
19
+ `from` / `to` on `mloop_logs` and `mloop_feedback` (`list`, `metrics`) and `limit` on `mloop_feedback` `list`; `accuracy` and `feedback`
20
+ thresholds on `mloop_trigger`; `best`, `metric` and `metricsFile` on `mloop_compare` (its `experiments` may now be left out, to compare the
21
+ model's completed experiments); `model` (a model file) on `mloop_predict`.
22
+ - `mloop_train` takes `analyzeData` (check the data quality and train nothing), `generateScript` (write a preprocessing script from that check), `autoMerge`
23
+ (merge the CSV files of one schema in `datasets/`) and `autoTime` (`true` sizes the time budget from the data even where `mloop.yaml` sets one, `false`
24
+ keeps the 300 s default). The answer of a data check carries `analysis` (the findings, each with a suggested fix; an empty list when there are none) and,
25
+ with `generateScript`, `script` (the path written) in place of `result`. The events come from an `mloop` newer than 0.48: older ones say nothing for
26
+ `--analyze-data --json`, and both fields are then null.
27
+ - `decideOnly` on `mloop_promote` (report what `latest`/`best` would promote and move nothing), `modelName` and `label` on `mloop_init`, `verbose` on
28
+ `mloop_status` and `mloop_validate`, `list` on `mloop_prep_plan`, and `textFile` on `mloop_embed` (a file of texts, one per line).
29
+ - `mloop_sample` takes `records` (the dotted path to the rows of a JSON data file) and says that `dataFile` may be a TSV, JSON, Excel or Parquet file - the sample is
30
+ written as CSV. Needs an `mloop` that reads those formats in `sample create --from`.
31
+ - Three tools for commands the CLI had and the server did not: `mloop_explain` (which input columns a model relies on — permutation importance on a labeled
32
+ file; needs an `mloop` newer than 0.48), `mloop_runtime` (list, install or remove the deep-learning runtimes `tf`, `torch`, `onnxruntime`) and
33
+ `mloop_docker` (write the Dockerfile and docker-compose.yml that serve a model). `mloop_encoder` also takes `add`: register an encoder of your own from its
34
+ definition file, ONNX graph and, for a text encoder, tokenizer.
35
+
36
+ ### Fixed
37
+
38
+ - The package's `repository` field names this repository (`iyulab/mloop-mcp`). It pointed at the `MLoop` repository with a `mcp` directory, which that repository does
39
+ not have, so the npm page linked to a repository that does not hold this code (and a provenance statement made from this repository's
40
+ workflow would not have matched it).
41
+
9
42
  ## [0.14.0] - 2026-10-30
10
43
 
11
44
  ### Added
package/README.md CHANGED
@@ -94,13 +94,26 @@ plugins:
94
94
  | `mloop_serve` | Start the REST API server; returns once it answers `/health`, and leaves it running |
95
95
  | `mloop_token` | Issue the bearer token the server requires on every endpoint but `/health` (`role: admin` for writes) |
96
96
  | `mloop_embed` | Images or texts to vectors with a pretrained encoder, with the encoder's identity (texts: mloop >= 0.46) |
97
- | `mloop_encoder` | List, install (catalog: `dinov2-small`, `multilingual-minilm`) or remove pretrained encoders |
97
+ | `mloop_encoder` | List, install (catalog: `dinov2-small`, `multilingual-minilm`), add your own (definition, ONNX graph, tokenizer) or remove pretrained encoders |
98
+ | `mloop_explain` | Which input columns a model relies on — permutation importance on a labeled file, in the metric `mloop_evaluate` reports (an `mloop` newer than 0.48) |
99
+ | `mloop_runtime` | List, install or remove the on-demand deep-learning runtimes (`tf`, `torch`, `onnxruntime`) |
100
+ | `mloop_docker` | Generate the Dockerfile and docker-compose.yml that serve a project's model |
101
+ | `mloop_init` | Initialize a new MLoop project (`mloop.yaml`, `datasets/`, `models/`) |
102
+ | `mloop_quick_start` | One step from zero to a production model: initialize, train, auto-promote |
103
+ | `mloop_auto_train` | Profile the data, train with an automatic time budget and list the experiments in one call |
104
+ | `mloop_project_overview` | Status, every experiment and the production model's metrics in one call |
105
+ | `mloop_validate` | Validate `mloop.yaml` (syntax, missing fields, invalid values) |
106
+ | `mloop_prep` | Run a model's declared preprocessing steps over a CSV file and write the prepared file |
107
+ | `mloop_logs` | View a model's prediction logs |
108
+ | `mloop_feedback` | Add the actual value for a logged prediction (source, optional weight), list feedback, or read its metrics |
109
+ | `mloop_sample` | Create a sampled dataset from a CSV file, or a retraining dataset from logged predictions and feedback |
110
+ | `mloop_trigger` | Check whether retraining is due, as JSON: one result per condition |
98
111
 
99
112
  Every tool declares the MCP safety hints (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) in `tools/list`, so a
100
113
  client can apply an approval policy without reading tool names: the reading tools (`mloop_list`, `mloop_status`, `mloop_info`,
101
114
  `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`.
115
+ `mloop_project_overview`, `mloop_token`, `mloop_explain`) change nothing; the others write, and `destructiveHint: true` marks the ones that can overwrite a
116
+ file at a path you name or delete a setting, a threshold, an installed encoder or runtime. The table is `src/tool-hints.ts`.
104
117
 
105
118
  ## Tool Examples
106
119
 
@@ -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;AAqF7E;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAexC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAsB,MAAM,8BAA8B,CAAC;AA2F7E;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAexC"}
package/build/server.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * MCP Server for MLoop CLI
3
3
  */
4
4
  import { McpServer } from '@modelcontextprotocol/server';
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';
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, explainTool, explainSchema, runtimeTool, runtimeSchema, dockerTool, dockerSchema, 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
8
  import { hintsFor } from './tool-hints.js';
@@ -36,6 +36,9 @@ const tools = [
36
36
  [tokenTool, tokenSchema],
37
37
  [embedTool, embedSchema],
38
38
  [encoderTool, encoderSchema],
39
+ [explainTool, explainSchema],
40
+ [runtimeTool, runtimeSchema],
41
+ [dockerTool, dockerSchema],
39
42
  [quickStartTool, quickStartSchema],
40
43
  [autoTrainTool, autoTrainSchema],
41
44
  [projectOverviewTool, projectOverviewSchema],
@@ -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;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAa3C,8GAA8G;AAC9G,MAAM,KAAK,GAA0D;IACnE,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,aAAa,EAAE,eAAe,CAAC;IAChC,CAAC,aAAa,EAAE,eAAe,CAAC;IAChC,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAClC,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAC1C,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,WAAW,EAAE,aAAa,CAAC;IAC5B,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAClC,CAAC,aAAa,EAAE,eAAe,CAAC;IAChC,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACnC,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxF,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAC7F,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CA4C1D,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAKhD"}
@@ -34,6 +34,7 @@ export const TOOL_HINTS = {
34
34
  mloop_trigger: READS,
35
35
  mloop_drift: READS,
36
36
  mloop_embed: READS,
37
+ mloop_explain: READS,
37
38
  mloop_project_overview: READS,
38
39
  mloop_token: READS, // issues a signed token; nothing is stored
39
40
  // Adds
@@ -56,8 +57,10 @@ export const TOOL_HINTS = {
56
57
  mloop_features_select: WRITES_OVER,
57
58
  mloop_sample: WRITES_OVER,
58
59
  mloop_detect: WRITES_OVER, // writes only when `output` is given
59
- // Installs download weights; remove deletes them
60
+ mloop_docker: WRITES_OVER, // writes a Dockerfile and a compose file over the ones there
61
+ // Installs download weights or a runtime; remove deletes them
60
62
  mloop_encoder: hints(false, true, true, true),
63
+ mloop_runtime: hints(false, true, true, true),
61
64
  };
62
65
  /** The hints of tool <paramref name="name"/>; throws when it has none. */
63
66
  export function hintsFor(name) {
@@ -1 +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"}
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,aAAa,EAAE,KAAK;IACpB,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;IAChE,YAAY,EAAE,WAAW,EAAE,6DAA6D;IAExF,8DAA8D;IAC9D,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC7C,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"}
@@ -23,6 +23,7 @@ export declare const analyzeSchema: z.ZodObject<{
23
23
  maxLag: z.ZodOptional<z.ZodNumber>;
24
24
  aroundTrend: z.ZodOptional<z.ZodBoolean>;
25
25
  modelName: z.ZodOptional<z.ZodString>;
26
+ records: z.ZodOptional<z.ZodString>;
26
27
  }, z.core.$strip>;
27
28
  export type AnalyzeParams = z.infer<typeof analyzeSchema>;
28
29
  export declare function analyze(params: AnalyzeParams): Promise<{
@@ -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;;;;;;;;;;;;;;;;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"}
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;;;;;;;;;;;;;;;;;iBA+CxB,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,CA+ChF;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IAIX,OAAO;CACR,CAAC"}
@@ -49,11 +49,17 @@ export const analyzeSchema = z.object({
49
49
  .string()
50
50
  .optional()
51
51
  .describe('Model name to read label configuration from mloop.yaml (default: "default")'),
52
+ records: z
53
+ .string()
54
+ .optional()
55
+ .describe('For a JSON data file: the dotted path to the array whose items are the rows'),
52
56
  });
53
57
  export async function analyze(params) {
54
58
  try {
55
- const { aspect, dataFile, projectPath, label, modelName, column, maxLag, aroundTrend } = params;
59
+ const { aspect, dataFile, projectPath, label, modelName, column, maxLag, aroundTrend, records } = params;
56
60
  const cliParams = {};
61
+ if (records)
62
+ cliParams['records'] = records;
57
63
  if (aspect === 'series') {
58
64
  // A series has no label and no model: its options are the column and the two test choices.
59
65
  if (column)
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare const calibrateSchema: z.ZodObject<{
14
14
  }>>;
15
15
  weight: z.ZodOptional<z.ZodString>;
16
16
  clear: z.ZodOptional<z.ZodBoolean>;
17
+ records: z.ZodOptional<z.ZodString>;
17
18
  }, z.core.$strip>;
18
19
  export type CalibrateParams = z.infer<typeof calibrateSchema>;
19
20
  export declare function calibrate(params: CalibrateParams): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"calibrate.d.ts","sourceRoot":"","sources":["../../src/tools/calibrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;;;;iBAQ1B,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,CAwBvI;AAED,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"calibrate.d.ts","sourceRoot":"","sources":["../../src/tools/calibrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAS1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,wBAAsB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBvI;AAED,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -13,10 +13,11 @@ export const calibrateSchema = z.object({
13
13
  method: z.enum(['platt', 'isotonic', 'temperature']).optional().describe('Binary: platt (default; steady on a few hundred rows) or isotonic (no shape assumed, needs more rows). Multiclass: temperature (default; answers unchanged)'),
14
14
  weight: z.string().optional().describe('Column that weights the rows (1/π for a recheck sample)'),
15
15
  clear: z.boolean().optional().describe('Remove the calibration: the model answers with its own probabilities again'),
16
+ records: z.string().optional().describe('For a JSON dataFile: the dotted path to the array whose items are the rows'),
16
17
  });
17
18
  export async function calibrate(params) {
18
19
  try {
19
- const { projectPath, experimentId, modelName, dataFile, method, weight, clear } = params;
20
+ const { projectPath, experimentId, modelName, dataFile, method, weight, clear, records } = params;
20
21
  const args = ['calibrate'];
21
22
  if (experimentId)
22
23
  args.push(experimentId);
@@ -28,6 +29,8 @@ export async function calibrate(params) {
28
29
  args.push('--method', method);
29
30
  if (weight)
30
31
  args.push('--weight', weight);
32
+ if (records)
33
+ args.push('--records', records);
31
34
  if (clear)
32
35
  args.push('--clear');
33
36
  args.push('--json');
@@ -1 +1 @@
1
- {"version":3,"file":"calibrate.js","sourceRoot":"","sources":["../../src/tools/calibrate.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,yDAAyD,CAAC;IACvG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;IACtH,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6JAA6J,CAAC;IACvO,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;IACjG,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;CACrH,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAuB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAEzF,MAAM,IAAI,GAAa,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,YAAY;YAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;SAC7F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,spBAAspB;IACnqB,OAAO,EAAE,SAAS;CACnB,CAAC"}
1
+ {"version":3,"file":"calibrate.js","sourceRoot":"","sources":["../../src/tools/calibrate.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,11 @@
4
4
  import { z } from 'zod';
5
5
  export declare const compareSchema: z.ZodObject<{
6
6
  projectPath: z.ZodString;
7
- experiments: z.ZodArray<z.ZodString>;
7
+ experiments: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
8
  modelName: z.ZodOptional<z.ZodString>;
9
+ best: z.ZodOptional<z.ZodNumber>;
10
+ metric: z.ZodOptional<z.ZodString>;
11
+ metricsFile: z.ZodOptional<z.ZodString>;
9
12
  }, z.core.$strip>;
10
13
  export type CompareParams = z.infer<typeof compareSchema>;
11
14
  export declare function compare(params: CompareParams): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/tools/compare.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;iBAIxB,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,CA8BnI;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/tools/compare.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;iBAOxB,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,CAiCnI;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -7,16 +7,25 @@ import { parseCliOutput } from '../utils/parser.js';
7
7
  import { formatError } from '../utils/errors.js';
8
8
  export const compareSchema = z.object({
9
9
  projectPath: z.string().describe('Path to MLoop project directory'),
10
- experiments: z.array(z.string()).min(2).describe('Experiment IDs to compare (at least 2)'),
10
+ experiments: z.array(z.string()).min(2).optional().describe('Experiment IDs to compare (at least 2; leave out to compare the model\'s completed experiments)'),
11
11
  modelName: z.string().optional().describe('Model name'),
12
+ best: z.number().int().positive().optional().describe('Compare only the top N experiments by metric (without experiments)'),
13
+ metric: z.string().optional().describe('Rank by this metric instead of the one the model was trained to optimize'),
14
+ metricsFile: z.string().optional().describe('Rank candidates from a JSON file of metrics, with no MLoop project needed (an external system of record\'s candidates): [{"id": ..., "metrics": {...}}, ...]'),
12
15
  });
13
16
  export async function compare(params) {
14
17
  try {
15
- const { projectPath, experiments, modelName } = params;
18
+ const { projectPath, experiments = [], modelName, best, metric, metricsFile } = params;
16
19
  const args = ['compare', ...experiments, '--json'];
17
20
  if (modelName) {
18
21
  args.push('--name', modelName);
19
22
  }
23
+ if (best !== undefined)
24
+ args.push('--best', String(best));
25
+ if (metric)
26
+ args.push('--metric', metric);
27
+ if (metricsFile)
28
+ args.push('--metrics-file', metricsFile);
20
29
  const result = await executeMloop(args, {
21
30
  cwd: projectPath,
22
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/tools/compare.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,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC1F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;CACxD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAEvD,MAAM,IAAI,GAAa,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;YACtC,GAAG,EAAE,WAAW;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,+BAA+B;iBAChD,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,oFAAoF;IACjG,OAAO,EAAE,OAAO;CACjB,CAAC"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/tools/compare.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,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;IAC9J,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IAC3H,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;IAClH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8JAA8J,CAAC;CAC5M,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEvF,MAAM,IAAI,GAAa,CAAC,SAAS,EAAE,GAAG,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;YACtC,GAAG,EAAE,WAAW;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,+BAA+B;iBAChD,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,oFAAoF;IACjG,OAAO,EAAE,OAAO;CACjB,CAAC"}
@@ -8,6 +8,7 @@ export declare const detectSchema: z.ZodObject<{
8
8
  threshold: z.ZodOptional<z.ZodNumber>;
9
9
  sensitivity: z.ZodOptional<z.ZodNumber>;
10
10
  output: z.ZodOptional<z.ZodString>;
11
+ records: z.ZodOptional<z.ZodString>;
11
12
  }, z.core.$strip>;
12
13
  export type DetectParams = z.infer<typeof detectSchema>;
13
14
  export declare function detect(params: DetectParams): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/tools/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY;;;;;;iBAMvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmCjI;AAED,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/tools/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY;;;;;;;iBAOvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAoCjI;AAED,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -12,11 +12,14 @@ export const detectSchema = z.object({
12
12
  threshold: z.number().positive().optional().describe("Score above which a point is an anomaly (> 0; the score is a point's saliency relative to the points before it; default 3)"),
13
13
  sensitivity: z.number().gt(0).lt(100).optional().describe('Coverage of the control limits in percent (0-100, exclusive; 99.73 = 3 sigma; default 99.73)'),
14
14
  output: z.string().optional().describe('Also write the full per-point result to this CSV file'),
15
+ records: z.string().optional().describe('For a JSON data file: the dotted path to the array whose items are the rows'),
15
16
  });
16
17
  export async function detect(params) {
17
18
  try {
18
- const { dataPath, column, threshold, sensitivity, output } = params;
19
+ const { dataPath, column, threshold, sensitivity, output, records } = params;
19
20
  const cliParams = {};
21
+ if (records)
22
+ cliParams['records'] = records;
20
23
  if (column)
21
24
  cliParams['column'] = column;
22
25
  if (threshold !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/tools/detect.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;AACjD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;IAClH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4HAA4H,CAAC;IAClL,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;IACzJ,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;CAChG,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAEpE,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,MAAM;YAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACzC,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QAChE,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;QACtE,IAAI,MAAM;YAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACzC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;QAEtE,4FAA4F;QAC5F,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;YACtC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC1C,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,IAAI,sBAAsB;iBAC3C,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,gcAAgc;IAC7c,OAAO,EAAE,MAAM;CAChB,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/tools/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * mloop_docker tool - Generate the Docker configuration that serves a model
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const dockerSchema: z.ZodObject<{
6
+ projectPath: z.ZodString;
7
+ modelName: z.ZodOptional<z.ZodString>;
8
+ port: z.ZodOptional<z.ZodNumber>;
9
+ }, z.core.$strip>;
10
+ export type DockerParams = z.infer<typeof dockerSchema>;
11
+ export declare function docker(params: DockerParams): Promise<{
12
+ content: Array<{
13
+ type: 'text';
14
+ text: string;
15
+ }>;
16
+ isError?: boolean;
17
+ }>;
18
+ export declare const dockerTool: {
19
+ name: string;
20
+ description: string;
21
+ handler: typeof docker;
22
+ };
23
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/tools/docker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;;;iBAIvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmBjI;AAED,eAAO,MAAM,UAAU;IACrB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * mloop_docker tool - Generate the Docker configuration that serves a model
3
+ */
4
+ import { z } from 'zod';
5
+ import { executeMloop } from '../executor.js';
6
+ import { parseCliOutput } from '../utils/parser.js';
7
+ import { formatError } from '../utils/errors.js';
8
+ export const dockerSchema = z.object({
9
+ projectPath: z.string().describe('Path to MLoop project directory (the files are written here)'),
10
+ modelName: z.string().optional().describe('Model to containerize (default: "default")'),
11
+ port: z.number().int().positive().max(65535).optional().describe('Port the API is exposed on (default 5000)'),
12
+ });
13
+ export async function docker(params) {
14
+ try {
15
+ const { projectPath, modelName, port } = params;
16
+ const args = ['docker'];
17
+ if (modelName)
18
+ args.push('--name', modelName);
19
+ if (port !== undefined)
20
+ args.push('--port', String(port));
21
+ const result = await executeMloop(args, { cwd: projectPath });
22
+ return {
23
+ content: [{ type: 'text', text: parseCliOutput(result.stdout) || 'Docker files generated.' }],
24
+ };
25
+ }
26
+ catch (error) {
27
+ return {
28
+ content: [{ type: 'text', text: formatError(error) }],
29
+ isError: true,
30
+ };
31
+ }
32
+ }
33
+ export const dockerTool = {
34
+ name: 'mloop_docker',
35
+ description: 'Generate the Docker configuration that serves a project\'s model with `mloop serve` (a Dockerfile and a docker-compose.yml, whose compose service mounts the project\'s models read-only and needs a JWT_SIGNING_KEY of 32+ characters to start) into the project directory. Files already there are overwritten. Answers the console text: this command has no JSON output.',
36
+ handler: docker,
37
+ };
38
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/tools/docker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;IAChG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACvF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC9G,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAEhD,MAAM,IAAI,GAAa,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,yBAAyB,EAAE,CAAC;SAC9F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,8WAA8W;IAC3X,OAAO,EAAE,MAAM;CAChB,CAAC"}
@@ -8,6 +8,7 @@ export declare const embedSchema: z.ZodObject<{
8
8
  texts: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
9
  encoder: z.ZodOptional<z.ZodString>;
10
10
  patches: z.ZodOptional<z.ZodBoolean>;
11
+ textFile: z.ZodOptional<z.ZodString>;
11
12
  }, z.core.$strip>;
12
13
  export type EmbedParams = z.infer<typeof embedSchema>;
13
14
  export declare function embed(params: EmbedParams): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/tools/embed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;iBAMtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2B/H;AAED,eAAO,MAAM,SAAS;IACpB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/tools/embed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;iBAOtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA4B/H;AAED,eAAO,MAAM,SAAS;IACpB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -11,12 +11,13 @@ export const embedSchema = z.object({
11
11
  texts: z.array(z.string()).max(256).optional().describe('Texts to embed with a text encoder, at most 256 — instead of images'),
12
12
  encoder: z.string().optional().describe('The encoder to use (mloop_encoder list); may be left out when only one of the kind is installed'),
13
13
  patches: z.boolean().optional().describe('Also one vector per patch of each image, on the encoder\'s grid (images only, at most 8)'),
14
+ textFile: z.string().optional().describe('A UTF-8 file of texts to embed, one per line (at most 256 together with texts) — instead of images'),
14
15
  });
15
16
  export async function embed(params) {
16
- const { projectPath, images = [], texts = [], encoder, patches } = params;
17
- if ((images.length === 0) === (texts.length === 0)) {
17
+ const { projectPath, images = [], texts = [], textFile, encoder, patches } = params;
18
+ if ((images.length === 0) === (texts.length === 0 && !textFile)) {
18
19
  return {
19
- content: [{ type: 'text', text: 'Give either images or texts to embed (one of the two, not both).' }],
20
+ content: [{ type: 'text', text: 'Give either images or texts (texts or textFile) to embed (one of the two, not both).' }],
20
21
  isError: true,
21
22
  };
22
23
  }
@@ -24,6 +25,8 @@ export async function embed(params) {
24
25
  const args = ['embed', ...images];
25
26
  for (const text of texts)
26
27
  args.push('--text', text);
28
+ if (textFile)
29
+ args.push('--text-file', textFile);
27
30
  if (encoder)
28
31
  args.push('--encoder', encoder);
29
32
  if (patches)
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/tools/embed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;IAClH,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC1G,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IAC9H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;IAC1I,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;CACrI,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAmB;IAC7C,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC;YACrG,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAa,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,wQAAwQ;IACrR,OAAO,EAAE,KAAK;CACf,CAAC"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/tools/embed.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,19 @@
1
1
  /**
2
- * mloop_encoder tool - List, install or remove pretrained encoders
2
+ * mloop_encoder tool - List, install, add or remove pretrained encoders
3
3
  */
4
4
  import { z } from 'zod';
5
5
  export declare const encoderSchema: z.ZodObject<{
6
6
  projectPath: z.ZodString;
7
7
  action: z.ZodEnum<{
8
+ add: "add";
8
9
  install: "install";
9
10
  list: "list";
10
11
  remove: "remove";
11
12
  }>;
12
13
  encoder: z.ZodOptional<z.ZodString>;
14
+ definition: z.ZodOptional<z.ZodString>;
15
+ model: z.ZodOptional<z.ZodString>;
16
+ tokenizer: z.ZodOptional<z.ZodString>;
13
17
  }, z.core.$strip>;
14
18
  export type EncoderParams = z.infer<typeof encoderSchema>;
15
19
  export declare function encoder(params: EncoderParams): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/tools/encoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;iBAIxB,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"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/tools/encoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;;;;;iBAOxB,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,CA8BnI;AAED,eAAO,MAAM,WAAW;IACtB,IAAI;IACJ,WAAW;IACX,OAAO;CACR,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * mloop_encoder tool - List, install or remove pretrained encoders
2
+ * mloop_encoder tool - List, install, add or remove pretrained encoders
3
3
  */
4
4
  import { z } from 'zod';
5
5
  import { executeMloop } from '../executor.js';
@@ -7,24 +7,33 @@ import { parseCliOutput } from '../utils/parser.js';
7
7
  import { formatError } from '../utils/errors.js';
8
8
  export const encoderSchema = z.object({
9
9
  projectPath: z.string().describe('Working directory (encoders are kept per user, not per project)'),
10
- action: z.enum(['list', 'install', 'remove']).describe('list the installed encoders, install one from the catalog, or remove one'),
11
- encoder: z.string().optional().describe('The encoder id — for install, a catalog id (dinov2-small for images, multilingual-minilm for text)'),
10
+ action: z.enum(['list', 'install', 'add', 'remove']).describe('list the installed encoders, install one from the catalog, add one of your own from its files, or remove one'),
11
+ encoder: z.string().optional().describe('The encoder id — for install, a catalog id (dinov2-small for images, multilingual-minilm for text); for remove, an installed one'),
12
+ definition: z.string().optional().describe('add: the encoder\'s definition file (encoder.json)'),
13
+ model: z.string().optional().describe('add: the encoder\'s ONNX graph'),
14
+ tokenizer: z.string().optional().describe('add, a text encoder: its tokenizer model (SentencePiece .model)'),
12
15
  });
13
16
  export async function encoder(params) {
14
- const { projectPath, action, encoder: id } = params;
15
- if (action !== 'list' && !id) {
17
+ const { projectPath, action, encoder: id, definition, model, tokenizer } = params;
18
+ if (action === 'add') {
19
+ if (!definition || !model)
20
+ return { content: [{ type: 'text', text: '"add" needs definition (the encoder.json) and model (its ONNX graph).' }], isError: true };
21
+ }
22
+ else if (action !== 'list' && !id) {
16
23
  return { content: [{ type: 'text', text: `Name the encoder to ${action}.` }], isError: true };
17
24
  }
18
25
  try {
19
- // remove has no --json: its answer is a confirmation line.
26
+ // add and remove have no --json: their answer is a confirmation line.
20
27
  const args = action === 'list'
21
28
  ? ['encoder', 'list', '--json']
22
29
  : action === 'install'
23
30
  ? ['encoder', 'install', id, '--json']
24
- : ['encoder', 'remove', id];
31
+ : action === 'add'
32
+ ? ['encoder', 'add', definition, '--model', model, ...(tokenizer ? ['--tokenizer', tokenizer] : [])]
33
+ : ['encoder', 'remove', id];
25
34
  const result = await executeMloop(args, { cwd: projectPath });
26
35
  return {
27
- content: [{ type: 'text', text: parseCliOutput(result.stdout) || `Encoder '${id}' removed.` }],
36
+ content: [{ type: 'text', text: parseCliOutput(result.stdout) || (action === 'add' ? 'Encoder added.' : `Encoder '${id}' removed.`) }],
28
37
  };
29
38
  }
30
39
  catch (error) {
@@ -36,7 +45,7 @@ export async function encoder(params) {
36
45
  }
37
46
  export const encoderTool = {
38
47
  name: 'mloop_encoder',
39
- description: 'Manage the pretrained encoders mloop_embed and encoder-read text columns run: list the installed ones, install a catalog encoder (its weights are downloaded and checked against a pinned SHA-256 — dinov2-small ~88 MB, multilingual-minilm ~470 MB), or remove one.',
48
+ description: 'Manage the pretrained encoders mloop_embed and encoder-read text columns run: list the installed ones, install a catalog encoder (its weights are downloaded and checked against a pinned SHA-256 — dinov2-small ~88 MB, multilingual-minilm ~470 MB), add one of your own from its definition file and ONNX graph (and tokenizer, for a text encoder), or remove one.',
40
49
  handler: encoder,
41
50
  };
42
51
  //# sourceMappingURL=encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/tools/encoder.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,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IACnG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,0EAA0E,CAAC;IAClI,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;CAC9I,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IACpD,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,MAAM,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChG,CAAC;IAED,IAAI,CAAC;QACH,2DAA2D;QAC3D,MAAM,IAAI,GAAa,MAAM,KAAK,MAAM;YACtC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;YAC/B,CAAC,CAAC,MAAM,KAAK,SAAS;gBACpB,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,EAAG,EAAE,QAAQ,CAAC;gBACvC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAG,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,YAAY,EAAE,CAAC;SAC/F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,uQAAuQ;IACpR,OAAO,EAAE,OAAO;CACjB,CAAC"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/tools/encoder.ts"],"names":[],"mappings":"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"}