@barivia/barsom-mcp 0.7.2 → 0.7.6
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/README.md +25 -18
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/shared.d.ts +1 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +2 -2
- package/dist/shared.js.map +1 -1
- package/dist/tools/account.d.ts.map +1 -1
- package/dist/tools/account.js +9 -0
- package/dist/tools/account.js.map +1 -1
- package/dist/tools/explore_map.d.ts.map +1 -1
- package/dist/tools/explore_map.js +77 -9
- package/dist/tools/explore_map.js.map +1 -1
- package/dist/tools/guide_barsom.d.ts.map +1 -1
- package/dist/tools/guide_barsom.js +46 -17
- package/dist/tools/guide_barsom.js.map +1 -1
- package/dist/tools/jobs.d.ts +5 -1
- package/dist/tools/jobs.d.ts.map +1 -1
- package/dist/tools/jobs.js +35 -10
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/training_guidance.js +1 -1
- package/dist/tools/training_guidance.js.map +1 -1
- package/dist/tools/training_monitor.d.ts +8 -0
- package/dist/tools/training_monitor.d.ts.map +1 -0
- package/dist/tools/training_monitor.js +44 -0
- package/dist/tools/training_monitor.js.map +1 -0
- package/dist/tools/training_prep.d.ts.map +1 -1
- package/dist/tools/training_prep.js +26 -21
- package/dist/tools/training_prep.js.map +1 -1
- package/dist/views/src/views/results-explorer/index.html +24 -16
- package/dist/views/src/views/training-monitor/index.html +50 -43
- package/dist/views/src/views/training-prep/index.html +25 -11
- package/package.json +2 -1
|
@@ -1,15 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
const BOOTSTRAP = `## Proxy and capabilities
|
|
2
|
+
|
|
3
|
+
**What this MCP is:** A local stdio server that forwards tool calls to the Barivia REST API. Configure \`BARIVIA_API_KEY\` and \`BARIVIA_API_URL\` in the client; there is no direct DB or object storage access from the MCP process.
|
|
4
|
+
|
|
5
|
+
**Tool map (high level):**
|
|
6
|
+
- \`datasets\` — upload, preview, list, subset, delete, add_expression
|
|
7
|
+
- \`jobs\` — \`train_map\`, \`train_siom_map\`, \`train_floop_siom\` (and deprecated alias \`train_floop_chain\`), plus \`status\`, \`list\`, \`compare\`, \`cancel\`, \`delete\`, \`batch_predict\`, \`run_baseline_study\`
|
|
8
|
+
- \`results\` — get, recolor, download, export, transition_flow
|
|
9
|
+
- \`inference\` — predict, enrich, compare, report, project_columns
|
|
10
|
+
- \`account\` — status, compute credits, history
|
|
11
|
+
- \`training_guidance\` — API-served parameter hints (grid, epochs, presets, SIOM/FLooP knobs)
|
|
12
|
+
- \`training_prep\`, \`results_explorer\`, \`training_monitor\` — **optional** rich UIs (see below)
|
|
13
|
+
- \`send_feedback\`, \`guide_barsom_workflow\` (this tool)
|
|
14
|
+
|
|
15
|
+
**Async contract:** Training submits return \`job_id\` immediately. Poll \`jobs(action=status, job_id=...)\` every **10–15s**. “Still running” is not failure; allow several minutes for larger grids or FLooP-SIOM (\`max_nodes\` is a node budget, not a grid side).
|
|
16
|
+
|
|
17
|
+
**Training modes (when to use which):**
|
|
18
|
+
- **Standard SOM** — \`jobs(action=train_map)\`: fixed hex/grid map.
|
|
19
|
+
- **SIOM** — \`jobs(action=train_siom_map)\`: same grid flow with coverage regularization.
|
|
20
|
+
- **FLooP-SIOM** — \`jobs(action=train_floop_siom)\`: growing manifold; default \`topology=free\` (CHL); optional \`topology=chain\`.
|
|
11
21
|
|
|
12
|
-
|
|
22
|
+
**MCP Apps (optional rich UI):** **Not required** for any outcome—the same work completes with \`jobs\`, \`results\`, and thread text alone. **Recommended** for clarity: **preparation** → \`training_prep\`; **postprocessing / exploration** → \`results_explorer\` after completion. **Monitoring** → \`training_monitor(job_id)\` is optional polish (charts); \`jobs(action=status)\` is sufficient. If the host has no MCP Apps, ignore these or use standalone URLs from tool responses when offered.
|
|
23
|
+
|
|
24
|
+
**Where to go next:** Parameter presets and field-level hints → \`training_guidance\` or the \`prepare_training\` prompt. Full step order → **Workflow (SOP)** below.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Workflow (SOP)
|
|
29
|
+
|
|
30
|
+
`;
|
|
31
|
+
const SOP = `Step 1: Upload Data
|
|
13
32
|
- Use \`datasets(action=upload)\` with \`file_path\` to your CSV (server reads from workspace root; token-efficient). Use \`csv_data\` only for small inline pastes.
|
|
14
33
|
- BEFORE UPLOADING: Clean the dataset to remove NaNs or malformed data.
|
|
15
34
|
- Capture the \`dataset_id\` returned.
|
|
@@ -19,28 +38,38 @@ Step 2: Preview & Preprocess
|
|
|
19
38
|
- Check for skewed columns requiring 'log' or 'sqrt' transforms.
|
|
20
39
|
- Check for cyclical or temporal features (hours, days) requiring \`cyclic_features\` or \`temporal_features\` during training.
|
|
21
40
|
- Raw categorical/text columns usually stay out of the first map. If one really matters, use explicit baseline \`categorical_features\` encoding rather than assuming advanced categorical embeddings.
|
|
41
|
+
- *(Optional UI)* \`training_prep(dataset_id=...)\` helps review variables, transforms, and hyperparameters before submit—not required if you train directly with \`jobs\`.
|
|
22
42
|
|
|
23
43
|
Step 3: Train the map
|
|
24
|
-
-
|
|
25
|
-
- Carefully select columns to include (start with 5
|
|
44
|
+
- Choose one: \`jobs(action=train_map, dataset_id=...)\`, \`jobs(action=train_siom_map, dataset_id=...)\`, or \`jobs(action=train_floop_siom, dataset_id=...)\`.
|
|
45
|
+
- Carefully select columns to include (start with 5–10).
|
|
26
46
|
- Assign \`feature_weights\` when some numeric or encoded features should matter more than others.
|
|
27
47
|
- Wait for the returned \`job_id\`.
|
|
28
48
|
- For projection and inference, use the same job_id from train_som (or the new job_id returned by recolor/project when applicable).
|
|
49
|
+
- *(Optional UI)* After submit, \`training_monitor(job_id=...)\` can show progress visually; **\`jobs(action=status)\` alone is enough** to know when training finished.
|
|
29
50
|
|
|
30
51
|
Step 4: Wait for Completion (ASYNC POLLING)
|
|
31
|
-
- Use \`jobs(action=status, job_id=...)\` every 10
|
|
52
|
+
- Use \`jobs(action=status, job_id=...)\` every 10–15 seconds.
|
|
32
53
|
- Wait until status is "completed". DO NOT assume failure before 3 minutes (or longer for large grids).
|
|
33
54
|
- If it fails, read the error message and adjust parameters (e.g., reduce grid size, fix column names).
|
|
34
55
|
|
|
35
56
|
Step 5: Analyze and Export
|
|
36
57
|
- Once completed, use \`results(action=get, job_id=...)\` to get the map, metrics (QE, TE, Silhouette, etc.), and figures (U-matrix, component planes, clusters, hit histogram). There is no separate \`analyze\` tool — all visualizations and metrics come from \`results(action=get)\`.
|
|
58
|
+
- *(Optional UI)* \`results_explorer(job_id=...)\` is especially useful to browse figures and metrics interactively; **\`results(action=get)\` is sufficient** without it.
|
|
37
59
|
Step 5b (optional): Use \`jobs(action=compare, job_ids=[id1, id2, ...])\` to compare multiple train_map runs (QE, TE, explained variance, silhouette) before committing to one.
|
|
38
60
|
|
|
39
61
|
What you can do at each step:
|
|
40
62
|
- After upload: datasets(preview), datasets(subset), datasets(add_expression), datasets(delete).
|
|
41
|
-
- After training completes: results(get/download/export), results(recolor), results(transition_flow), jobs(compare), inference(predict/enrich/compare/project_columns/report)
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
- After training completes: results(get/download/export), results(recolor), results(transition_flow), jobs(compare), inference(predict/enrich/compare/project_columns/report).`;
|
|
64
|
+
export function registerGuideBarsomTool(server) {
|
|
65
|
+
server.tool("guide_barsom_workflow", `Ground-truth orientation for this MCP: (A) how the proxy works, tool categories, async training rules, training modes, and optional MCP App UIs; (B) the step-by-step mapping SOP. Call at the **start of mapping work** or when the user asks what the integration can do. For field-level training parameters only, use training_guidance or prepare_training.`, {}, async () => {
|
|
66
|
+
return {
|
|
67
|
+
content: [
|
|
68
|
+
{
|
|
69
|
+
type: "text",
|
|
70
|
+
text: BOOTSTRAP + SOP,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
44
73
|
};
|
|
45
74
|
});
|
|
46
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide_barsom.js","sourceRoot":"","sources":["../../src/tools/guide_barsom.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB
|
|
1
|
+
{"version":3,"file":"guide_barsom.js","sourceRoot":"","sources":["../../src/tools/guide_barsom.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BjB,CAAC;AAEF,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+KAgCmK,CAAC;AAEhL,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,kWAAkW,EAClW,EAAE,EACF,KAAK,IAAI,EAAE;QACT,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,GAAG,GAAG;iBACtB;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/jobs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
export declare const JOBS_DESCRIPTION_BASE = "Manage and inspect jobs.\n\n| Action | Use when |\n|--------|----------|\n| status | Polling after any async job submission \u2014 call every 10\u201315s |\n| list | Finding job IDs, checking what is pending/completed, reviewing hyperparameters. Response includes job_type (train_map, enrich, report, recolor, project, transition_flow, compare, predict) to filter or display. |\n| compare | Picking the best training run from a set of completed jobs |\n| train_map | Submitting a new map training job \u2014 returns job_id for polling |\n| train_siom_map | Submitting a self-interacting map training job \u2014 same map flow with SIOM coverage control |\n|
|
|
2
|
+
export declare const JOBS_DESCRIPTION_BASE = "Manage and inspect jobs.\n\n| Action | Use when |\n|--------|----------|\n| status | Polling after any async job submission \u2014 call every 10\u201315s |\n| list | Finding job IDs, checking what is pending/completed, reviewing hyperparameters. Response includes job_type (train_map, enrich, report, recolor, project, transition_flow, compare, predict) to filter or display. |\n| compare | Picking the best training run from a set of completed jobs |\n| train_map | Submitting a new map training job \u2014 returns job_id for polling |\n| train_siom_map | Submitting a self-interacting map training job \u2014 same map flow with SIOM coverage control |\n| train_floop_siom | Submitting a FLooP-SIOM job (growing manifold; default topology=free / CHL) |\n| train_floop_chain | Deprecated alias for train_floop_siom \u2014 same behavior; prefer train_floop_siom |\n| cancel | Stopping a running or pending job to free the worker |\n| delete | Permanently removing a job and all its S3 result files |\n\nFor parameter hints (grid, epochs, batch, model, periodic, FLooP max_nodes/effort), call the **training_guidance** tool or use the **prepare_training** prompt before training.\n\nASYNC POLLING PROTOCOL (action=status):\n- Poll every 10-15 seconds. Do NOT poll faster \u2014 it wastes context.\n- Progress increases through phases (ordering then convergence for map training). Other job types may use different phase logic.\n- For large grids (40\u00D740+), do not assume failure before 3 minutes on CPU.\n- Wait for status \"completed\" before calling results(action=get).\n- Map training typical times: 10\u00D710 ~30s | 20\u00D720 ~3\u20135 min | 40\u00D740 ~15\u201330 min.\n\nESCALATION (action=status):\n- completed \u2192 call results(action=get) to retrieve the map and metrics\n- failed \u2192 error message and optional failure_stage (e.g. preprocessing, training, metrics, visualization, upload) indicate which phase broke:\n - memory/allocation error: reduce batch_size or grid size and retrain\n - column missing: verify with datasets(action=preview)\n - NaN error: user must clean the dataset\n\naction=train_map / train_siom_map: Submits a grid-map training job. Returns job_id \u2014 poll with jobs(action=status, job_id=...).\n Presets: quick | standard | refined | high_res \u2014 use preset=... for grid/epochs/batch defaults; call training_guidance for details.\n Presets refined/high_res may use GPU. On CPU-only hosts pass backend=cpu. API expects strings \"cpu\" | \"gpu\" | \"gpu_graphs\" (no colon). Future backends (e.g. non-CUDA) may be added under the same contract.\n normalize: \"auto\" (default) = scale only non-cyclic features; \"all\" = scale every feature. Use \"auto\" when using cyclic_features.\n categorical_features: optional baseline categorical support using explicit weighted one-hot encoding. Provide the raw column name, allowed categories, and a weight. Advanced categorical embeddings are intentionally outside this default tool surface.\n train_siom_map only: siom_feature_geometry l2 (default) | mixed | auto \u2014 torus distance on cyclic (cos,sin) pairs when mixed or auto with cyclic encodings. siom_qe_backend cpu|cuda|auto and siom_qe_batch_size align siom_qe with training geometry when mixed.\naction=train_floop_siom (preferred) or train_floop_chain (deprecated alias): Submits FLooP-SIOM \u2014 a growing node-budget manifold instead of a fixed hex grid. Default topology is free (CHL dynamic graph); topology=chain is optional for a strict 1D linked-list backbone.\n Key params: topology (default free), max_nodes, effort, gamma, siom_decay.\n max_nodes is a total node budget, not a grid width or area. If omitted, the backend uses a dataset-size heuristic (roughly 2*sqrt(n_samples), capped for stability).\n effort controls passes only: quick\u224815, standard\u224830, thorough\u224860. If coverage collapses, reduce max_nodes before increasing effort.\naction=compare: Returns a metrics table (QE, TE, explained variance, silhouette) for 2+ jobs.\naction=cancel: Not instant \u2014 worker checks between phases. Expect up to 30s delay.\naction=delete: WARNING \u2014 job ID will no longer work with results or any other tool.";
|
|
3
3
|
export type TrainingPreset = {
|
|
4
4
|
grid: number[];
|
|
5
5
|
epochs: number[];
|
|
@@ -50,6 +50,10 @@ export type TrainMapLikeArgs = {
|
|
|
50
50
|
output_dpi?: "standard" | "retina" | "print";
|
|
51
51
|
colormap?: string;
|
|
52
52
|
row_range?: [number, number];
|
|
53
|
+
/** train_siom_map / SIOM jobs only */
|
|
54
|
+
siom_feature_geometry?: "l2" | "mixed" | "auto";
|
|
55
|
+
siom_qe_backend?: "cpu" | "cuda" | "auto";
|
|
56
|
+
siom_qe_batch_size?: number;
|
|
53
57
|
};
|
|
54
58
|
export declare function fetchTrainingPresets(): Promise<Record<string, TrainingPreset>>;
|
|
55
59
|
export declare function buildTrainMapParams(args: TrainMapLikeArgs, presets: Record<string, TrainingPreset>): {
|
package/dist/tools/jobs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/tools/jobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/tools/jobs.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/jobs.js
CHANGED
|
@@ -9,7 +9,8 @@ export const JOBS_DESCRIPTION_BASE = `Manage and inspect jobs.
|
|
|
9
9
|
| compare | Picking the best training run from a set of completed jobs |
|
|
10
10
|
| train_map | Submitting a new map training job — returns job_id for polling |
|
|
11
11
|
| train_siom_map | Submitting a self-interacting map training job — same map flow with SIOM coverage control |
|
|
12
|
-
|
|
|
12
|
+
| train_floop_siom | Submitting a FLooP-SIOM job (growing manifold; default topology=free / CHL) |
|
|
13
|
+
| train_floop_chain | Deprecated alias for train_floop_siom — same behavior; prefer train_floop_siom |
|
|
13
14
|
| cancel | Stopping a running or pending job to free the worker |
|
|
14
15
|
| delete | Permanently removing a job and all its S3 result files |
|
|
15
16
|
|
|
@@ -34,7 +35,9 @@ action=train_map / train_siom_map: Submits a grid-map training job. Returns job_
|
|
|
34
35
|
Presets refined/high_res may use GPU. On CPU-only hosts pass backend=cpu. API expects strings "cpu" | "gpu" | "gpu_graphs" (no colon). Future backends (e.g. non-CUDA) may be added under the same contract.
|
|
35
36
|
normalize: "auto" (default) = scale only non-cyclic features; "all" = scale every feature. Use "auto" when using cyclic_features.
|
|
36
37
|
categorical_features: optional baseline categorical support using explicit weighted one-hot encoding. Provide the raw column name, allowed categories, and a weight. Advanced categorical embeddings are intentionally outside this default tool surface.
|
|
37
|
-
|
|
38
|
+
train_siom_map only: siom_feature_geometry l2 (default) | mixed | auto — torus distance on cyclic (cos,sin) pairs when mixed or auto with cyclic encodings. siom_qe_backend cpu|cuda|auto and siom_qe_batch_size align siom_qe with training geometry when mixed.
|
|
39
|
+
action=train_floop_siom (preferred) or train_floop_chain (deprecated alias): Submits FLooP-SIOM — a growing node-budget manifold instead of a fixed hex grid. Default topology is free (CHL dynamic graph); topology=chain is optional for a strict 1D linked-list backbone.
|
|
40
|
+
Key params: topology (default free), max_nodes, effort, gamma, siom_decay.
|
|
38
41
|
max_nodes is a total node budget, not a grid width or area. If omitted, the backend uses a dataset-size heuristic (roughly 2*sqrt(n_samples), capped for stability).
|
|
39
42
|
effort controls passes only: quick≈15, standard≈30, thorough≈60. If coverage collapses, reduce max_nodes before increasing effort.
|
|
40
43
|
action=compare: Returns a metrics table (QE, TE, explained variance, silhouette) for 2+ jobs.
|
|
@@ -45,7 +48,7 @@ export async function fetchTrainingPresets() {
|
|
|
45
48
|
return configData?.presets || {};
|
|
46
49
|
}
|
|
47
50
|
export function buildTrainMapParams(args, presets) {
|
|
48
|
-
const { preset, grid_x, grid_y, epochs, model, periodic, columns, cyclic_features, temporal_features, feature_weights, transforms, auto_log_transforms, time_delay_embeddings, categorical_features, normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend, output_format, output_dpi, colormap, row_range, } = args;
|
|
51
|
+
const { preset, grid_x, grid_y, epochs, model, periodic, columns, cyclic_features, temporal_features, feature_weights, transforms, auto_log_transforms, time_delay_embeddings, categorical_features, normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend, output_format, output_dpi, colormap, row_range, siom_feature_geometry, siom_qe_backend, siom_qe_batch_size, } = args;
|
|
49
52
|
const p = preset ? presets[preset] : undefined;
|
|
50
53
|
const params = {
|
|
51
54
|
model: model ?? "SOM",
|
|
@@ -98,6 +101,12 @@ export function buildTrainMapParams(args, presets) {
|
|
|
98
101
|
params.colormap = colormap;
|
|
99
102
|
if (row_range && row_range.length >= 2 && row_range[0] <= row_range[1])
|
|
100
103
|
params.row_range = row_range;
|
|
104
|
+
if (siom_feature_geometry !== undefined)
|
|
105
|
+
params.siom_feature_geometry = siom_feature_geometry;
|
|
106
|
+
if (siom_qe_backend !== undefined)
|
|
107
|
+
params.siom_qe_backend = siom_qe_backend;
|
|
108
|
+
if (siom_qe_batch_size !== undefined)
|
|
109
|
+
params.siom_qe_batch_size = siom_qe_batch_size;
|
|
101
110
|
const effectiveGrid = params.grid;
|
|
102
111
|
const effectiveEpochs = params.epochs;
|
|
103
112
|
const effectiveBatch = params.batch_size;
|
|
@@ -115,8 +124,8 @@ export function buildTrainMapParams(args, presets) {
|
|
|
115
124
|
export function registerJobsTool(server, description) {
|
|
116
125
|
server.tool("jobs", description, {
|
|
117
126
|
action: z
|
|
118
|
-
.enum(["status", "list", "compare", "cancel", "delete", "train_map", "train_siom_map", "train_floop_chain", "batch_predict", "run_baseline_study"])
|
|
119
|
-
.describe("status: check progress; list: see all jobs; compare: metrics table; cancel: stop job; delete: remove job + files; train_map: submit standard map training; train_siom_map: submit SIOM map training;
|
|
127
|
+
.enum(["status", "list", "compare", "cancel", "delete", "train_map", "train_siom_map", "train_floop_siom", "train_floop_chain", "batch_predict", "run_baseline_study"])
|
|
128
|
+
.describe("status: check progress; list: see all jobs; compare: metrics table; cancel: stop job; delete: remove job + files; train_map: submit standard map training; train_siom_map: submit SIOM map training; train_floop_siom: submit FLooP-SIOM (preferred); train_floop_chain: deprecated alias for train_floop_siom; batch_predict: submit multiple predict jobs at once; run_baseline_study: auto-configure and train a baseline SOM"),
|
|
120
129
|
job_id: z
|
|
121
130
|
.string()
|
|
122
131
|
.optional()
|
|
@@ -197,6 +206,9 @@ export function registerJobsTool(server, description) {
|
|
|
197
206
|
siom_penalty: z.enum(["linear", "log", "exp"]).optional(),
|
|
198
207
|
penalty_alpha: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
|
|
199
208
|
reset_per_epoch: z.boolean().optional(),
|
|
209
|
+
siom_feature_geometry: z.enum(["l2", "mixed", "auto"]).optional().describe("train_siom_map: l2 (default) = legacy L2 on cos/sin columns; mixed = cyclic torus distance when cyclic pairs exist; auto = mixed only when cyclic encodings are present"),
|
|
210
|
+
siom_qe_backend: z.enum(["cpu", "cuda", "auto"]).optional().describe("train_siom_map: backend for metric-aligned siom_qe when using mixed geometry; auto uses GPU when available"),
|
|
211
|
+
siom_qe_batch_size: z.number().int().min(1).max(1_000_000).optional().describe("train_siom_map: batch size for GPU SIOM QE (default 256 on worker)"),
|
|
200
212
|
topology: z.enum(["free", "chain"]).optional().default("free"),
|
|
201
213
|
max_nodes: z.number().int().min(2).optional(),
|
|
202
214
|
effort: z.enum(["quick", "standard", "thorough"]).optional().default("standard"),
|
|
@@ -240,10 +252,11 @@ export function registerJobsTool(server, description) {
|
|
|
240
252
|
colormap: "coolwarm"
|
|
241
253
|
};
|
|
242
254
|
const data = (await apiCall("POST", "/v1/jobs", { dataset_id, params }));
|
|
243
|
-
|
|
255
|
+
const jid = String(data.id ?? "");
|
|
256
|
+
return { content: [{ type: "text", text: `Baseline study submitted. Job ID: ${jid}\nGrid size: ${side}x${side}\nNormalization: MAD\n\nPoll with jobs(action=status, job_id="${jid}") until complete, then retrieve with results(action=get, job_id="${jid}"). Optional: training_monitor(job_id="${jid}") for a visual panel—not required.` }] };
|
|
244
257
|
}
|
|
245
258
|
if (action === "train_map" || action === "train_siom_map") {
|
|
246
|
-
const { preset, grid_x, grid_y, epochs, model, periodic, columns, cyclic_features, temporal_features, feature_weights, transforms, auto_log_transforms, time_delay_embeddings, categorical_features, normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend, output_format, output_dpi, colormap, row_range, gamma, gamma_f, siom_decay, siom_penalty, penalty_alpha, reset_per_epoch, } = args;
|
|
259
|
+
const { preset, grid_x, grid_y, epochs, model, periodic, columns, cyclic_features, temporal_features, feature_weights, transforms, auto_log_transforms, time_delay_embeddings, categorical_features, normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend, output_format, output_dpi, colormap, row_range, gamma, gamma_f, siom_decay, siom_penalty, penalty_alpha, reset_per_epoch, siom_feature_geometry, siom_qe_backend, siom_qe_batch_size, } = args;
|
|
247
260
|
let PRESETS = {};
|
|
248
261
|
try {
|
|
249
262
|
PRESETS = await fetchTrainingPresets();
|
|
@@ -278,6 +291,12 @@ export function registerJobsTool(server, description) {
|
|
|
278
291
|
params.penalty_alpha = penalty_alpha;
|
|
279
292
|
if (reset_per_epoch !== undefined)
|
|
280
293
|
params.reset_per_epoch = reset_per_epoch;
|
|
294
|
+
if (siom_feature_geometry !== undefined)
|
|
295
|
+
params.siom_feature_geometry = siom_feature_geometry;
|
|
296
|
+
if (siom_qe_backend !== undefined)
|
|
297
|
+
params.siom_qe_backend = siom_qe_backend;
|
|
298
|
+
if (siom_qe_batch_size !== undefined)
|
|
299
|
+
params.siom_qe_batch_size = siom_qe_batch_size;
|
|
281
300
|
}
|
|
282
301
|
let totalRows = 0;
|
|
283
302
|
try {
|
|
@@ -299,6 +318,7 @@ export function registerJobsTool(server, description) {
|
|
|
299
318
|
if (waitMinutes > 1)
|
|
300
319
|
msg += `You are #${pending + 1} in queue. Estimated wait: ~${waitMinutes} min. `;
|
|
301
320
|
msg += `Poll with jobs(action=status, job_id="${newJobId}"). When status is completed, use results(action=get, job_id="${newJobId}") to view the map and metrics.`;
|
|
321
|
+
msg += ` Optional: training_monitor(job_id="${newJobId}") for charts—not required.`;
|
|
302
322
|
if (effectiveGrid && totalRows > 0 && effectiveGrid[0] * effectiveGrid[1] > totalRows * 0.75) {
|
|
303
323
|
msg += ` Note: Grid may be large for ${totalRows} rows (consider grid=auto for fewer dead nodes).`;
|
|
304
324
|
}
|
|
@@ -306,6 +326,7 @@ export function registerJobsTool(server, description) {
|
|
|
306
326
|
}
|
|
307
327
|
catch {
|
|
308
328
|
let msg = `Job submitted (${variantPrefix}, ${paramSummary}). Poll with jobs(action=status, job_id="${newJobId}"). When status is completed, use results(action=get, job_id="${newJobId}") to view the map and metrics.`;
|
|
329
|
+
msg += ` Optional: training_monitor(job_id="${newJobId}") for charts—not required.`;
|
|
309
330
|
if (effectiveGrid && totalRows > 0 && effectiveGrid[0] * effectiveGrid[1] > totalRows * 0.75) {
|
|
310
331
|
msg += ` Note: Grid may be large for ${totalRows} rows (consider grid=auto for fewer dead nodes).`;
|
|
311
332
|
}
|
|
@@ -313,10 +334,10 @@ export function registerJobsTool(server, description) {
|
|
|
313
334
|
}
|
|
314
335
|
return textResult(data);
|
|
315
336
|
}
|
|
316
|
-
if (action === "train_floop_chain") {
|
|
337
|
+
if (action === "train_floop_siom" || action === "train_floop_chain") {
|
|
317
338
|
const { columns, cyclic_features, temporal_features, feature_weights, transforms, auto_log_transforms, normalize, row_range, output_format, output_dpi, colormap, topology, max_nodes, effort, n_initial, n_passes, growth_interval, neighborhood_size, edge_max_age, max_degree, gamma, siom_decay, siom_penalty, penalty_alpha, error_threshold, error_decay, ring_close_threshold, sigma_0, sigma_f, eta_0, eta_f, elastic_lambda, elastic_mu, elastic_anchor, anchor_percentile, } = args;
|
|
318
339
|
if (!dataset_id)
|
|
319
|
-
throw new Error("jobs(
|
|
340
|
+
throw new Error("jobs(train_floop_siom) requires dataset_id");
|
|
320
341
|
const params = {
|
|
321
342
|
_job_type: "train_floop_siom",
|
|
322
343
|
topology,
|
|
@@ -400,7 +421,11 @@ export function registerJobsTool(server, description) {
|
|
|
400
421
|
data.effective_params = paramSummary;
|
|
401
422
|
data.message =
|
|
402
423
|
`Job submitted (${paramSummary}). Poll with jobs(action=status, job_id="${newJobId}"). ` +
|
|
403
|
-
`When status is completed, use results(action=get, job_id="${newJobId}") to view
|
|
424
|
+
`When status is completed, use results(action=get, job_id="${newJobId}") to view FLooP-SIOM figures and metrics. ` +
|
|
425
|
+
`Optional: training_monitor(job_id="${newJobId}") for charts—not required.` +
|
|
426
|
+
(action === "train_floop_chain"
|
|
427
|
+
? " Note: action=train_floop_chain is deprecated; prefer train_floop_siom."
|
|
428
|
+
: "");
|
|
404
429
|
return textResult(data);
|
|
405
430
|
}
|
|
406
431
|
if (action === "status") {
|
package/dist/tools/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/tools/jobs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/tools/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { fetchTrainingGuidanceFromApi } from "../shared.js";
|
|
2
2
|
export function registerTrainingGuidanceTool(server) {
|
|
3
|
-
server.tool("training_guidance", "Returns parameter guidance for jobs(
|
|
3
|
+
server.tool("training_guidance", "Returns parameter guidance for training jobs (grid, epochs, batch, model, periodic, SIOM/FLooP fields, categorical baselines). Domain knowledge is served from the API; requires valid API key. For full proxy orientation, tool map, async rules, and workflow SOP, call guide_barsom_workflow first. Optional visual workflows: training_prep (prep), results_explorer (postprocess)—not required; jobs + results are sufficient.", {}, async () => {
|
|
4
4
|
const text = await fetchTrainingGuidanceFromApi();
|
|
5
5
|
return { content: [{ type: "text", text }] };
|
|
6
6
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training_guidance.js","sourceRoot":"","sources":["../../src/tools/training_guidance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"training_guidance.js","sourceRoot":"","sources":["../../src/tools/training_guidance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,qaAAqa,EACra,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,4BAA4B,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare const TRAINING_MONITOR_URI = "ui://barsom/training-monitor";
|
|
3
|
+
export type TrainingMonitorStructured = {
|
|
4
|
+
type: "training-monitor";
|
|
5
|
+
jobId: string;
|
|
6
|
+
} & Record<string, unknown>;
|
|
7
|
+
export declare function registerTrainingMonitorTool(server: McpServer): void;
|
|
8
|
+
//# sourceMappingURL=training_monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training_monitor.d.ts","sourceRoot":"","sources":["../../src/tools/training_monitor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AAEnE,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAgB5B,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmCnE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerAppTool } from "@modelcontextprotocol/ext-apps/server";
|
|
3
|
+
import { apiCall, getClientSupportsMcpApps, getVizPort, structuredTextResult, } from "../shared.js";
|
|
4
|
+
export const TRAINING_MONITOR_URI = "ui://barsom/training-monitor";
|
|
5
|
+
function buildStructuredContent(job_id, data) {
|
|
6
|
+
const id = String(data.id ?? job_id);
|
|
7
|
+
return {
|
|
8
|
+
...data,
|
|
9
|
+
type: "training-monitor",
|
|
10
|
+
jobId: id,
|
|
11
|
+
id,
|
|
12
|
+
job_id: id,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function registerTrainingMonitorTool(server) {
|
|
16
|
+
registerAppTool(server, "training_monitor", {
|
|
17
|
+
title: "Training Monitor",
|
|
18
|
+
description: "Optional embedded or standalone view of training progress for a job_id. Same information is available via jobs(action=status, job_id=...)—use this when the user wants charts or a live panel; not required to complete training or read results.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
job_id: z.string().describe("Training job ID to monitor"),
|
|
21
|
+
},
|
|
22
|
+
_meta: { ui: { resourceUri: TRAINING_MONITOR_URI } },
|
|
23
|
+
}, async ({ job_id }) => {
|
|
24
|
+
const data = (await apiCall("GET", `/v1/jobs/${job_id}`));
|
|
25
|
+
const structuredContent = buildStructuredContent(job_id, data);
|
|
26
|
+
const status = String(data.status ?? "unknown");
|
|
27
|
+
const progress = (data.progress ?? 0) * 100;
|
|
28
|
+
const text = `Training monitor snapshot: job ${job_id} — ${status} (${progress.toFixed(1)}%). ` +
|
|
29
|
+
`Optional UI; polling jobs(action=status) is enough to finish the workflow.`;
|
|
30
|
+
const content = [{ type: "text", text }];
|
|
31
|
+
const port = getVizPort();
|
|
32
|
+
const standaloneUrl = port
|
|
33
|
+
? `http://localhost:${port}/viz/training-monitor?mode=standalone&job_id=${encodeURIComponent(job_id)}`
|
|
34
|
+
: undefined;
|
|
35
|
+
if (!getClientSupportsMcpApps() && standaloneUrl) {
|
|
36
|
+
content.push({
|
|
37
|
+
type: "text",
|
|
38
|
+
text: `Open in browser: ${standaloneUrl}`,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return structuredTextResult(structuredContent, text, content);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=training_monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training_monitor.js","sourceRoot":"","sources":["../../src/tools/training_monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,UAAU,EACV,oBAAoB,GAErB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAOnE,SAAS,sBAAsB,CAC7B,MAAc,EACd,IAA6B;IAE7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,EAAE;QACT,EAAE;QACF,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,eAAe,CACb,MAAM,EACN,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,mPAAmP;QACrP,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SAC1D;QACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAAE;KACrD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,YAAY,MAAM,EAAE,CAAC,CAA4B,CAAC;QACrF,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,CAAE,IAAI,CAAC,QAAmB,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACxD,MAAM,IAAI,GACR,kCAAkC,MAAM,MAAM,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YAClF,4EAA4E,CAAC;QAC/E,MAAM,OAAO,GAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,IAAI;YACxB,CAAC,CAAC,oBAAoB,IAAI,gDAAgD,kBAAkB,CAAC,MAAM,CAAC,EAAE;YACtG,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,wBAAwB,EAAE,IAAI,aAAa,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,oBAAoB,aAAa,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;QACD,OAAO,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training_prep.d.ts","sourceRoot":"","sources":["../../src/tools/training_prep.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"training_prep.d.ts","sourceRoot":"","sources":["../../src/tools/training_prep.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAoT7D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkFjE"}
|
|
@@ -71,15 +71,7 @@ async function fetchPreparePrompt(datasetId) {
|
|
|
71
71
|
}
|
|
72
72
|
return null;
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
if (!promptText)
|
|
76
|
-
return [];
|
|
77
|
-
return promptText
|
|
78
|
-
.split(/\n+/)
|
|
79
|
-
.map((line) => line.replace(/^[-*]\s*/, "").trim())
|
|
80
|
-
.filter((line) => line.length > 0)
|
|
81
|
-
.slice(0, 4);
|
|
82
|
-
}
|
|
74
|
+
const TOOL_SYNTAX_RE = /\(action=|dataset_id=|job_id=|datasets\(|jobs\(/;
|
|
83
75
|
function buildWarnings(preview, selectedColumns, params, analyze) {
|
|
84
76
|
const warnings = [];
|
|
85
77
|
const stats = preview.column_stats ?? [];
|
|
@@ -117,7 +109,7 @@ function buildWarnings(preview, selectedColumns, params, analyze) {
|
|
|
117
109
|
}
|
|
118
110
|
return warnings;
|
|
119
111
|
}
|
|
120
|
-
function
|
|
112
|
+
function buildDataRecommendations(analyze) {
|
|
121
113
|
const recommendations = [];
|
|
122
114
|
const dataRec = analyze.recommendations ?? {};
|
|
123
115
|
if ((dataRec.project_later ?? []).length > 0) {
|
|
@@ -126,16 +118,22 @@ function buildRecommendations(analyze, guidanceText, preparePrompt) {
|
|
|
126
118
|
if ((dataRec.low_variance ?? []).length > 0) {
|
|
127
119
|
recommendations.push(`Low-variance columns can usually be excluded: ${(dataRec.low_variance ?? []).join(", ")}.`);
|
|
128
120
|
}
|
|
121
|
+
return recommendations;
|
|
122
|
+
}
|
|
123
|
+
function buildGuidanceLines(guidanceText) {
|
|
124
|
+
const lines = [];
|
|
129
125
|
for (const line of guidanceText.split("\n")) {
|
|
130
126
|
const trimmed = line.replace(/^-\s*/, "").trim();
|
|
131
|
-
if (trimmed &&
|
|
132
|
-
|
|
127
|
+
if (trimmed &&
|
|
128
|
+
!trimmed.startsWith("Parameter guidance") &&
|
|
129
|
+
!trimmed.startsWith("Presets:") &&
|
|
130
|
+
!TOOL_SYNTAX_RE.test(trimmed)) {
|
|
131
|
+
lines.push(trimmed);
|
|
133
132
|
}
|
|
134
|
-
if (
|
|
133
|
+
if (lines.length >= 4)
|
|
135
134
|
break;
|
|
136
135
|
}
|
|
137
|
-
|
|
138
|
-
return [...new Set(recommendations)].slice(0, 6);
|
|
136
|
+
return [...new Set(lines)];
|
|
139
137
|
}
|
|
140
138
|
async function buildTrainingPrepPayload(datasetId, input) {
|
|
141
139
|
const [preview, analyze, presets, guidanceText, preparePrompt] = await Promise.all([
|
|
@@ -169,7 +167,8 @@ async function buildTrainingPrepPayload(datasetId, input) {
|
|
|
169
167
|
const epochs = getEpochFields(params);
|
|
170
168
|
const grid = params.grid ?? [];
|
|
171
169
|
const warnings = buildWarnings(preview, selectedColumns, params, analyze);
|
|
172
|
-
const recommendationLines =
|
|
170
|
+
const recommendationLines = buildDataRecommendations(analyze);
|
|
171
|
+
const guidanceLines = buildGuidanceLines(guidanceText);
|
|
173
172
|
const datasetName = String(preview.name ?? datasetId);
|
|
174
173
|
const sections = [
|
|
175
174
|
{
|
|
@@ -177,8 +176,10 @@ async function buildTrainingPrepPayload(datasetId, input) {
|
|
|
177
176
|
items: selectedColumns.length > 0 ? selectedColumns : ["No variables selected yet."],
|
|
178
177
|
},
|
|
179
178
|
{
|
|
180
|
-
label: "
|
|
181
|
-
items: projectLater.length > 0
|
|
179
|
+
label: "Projection Candidates",
|
|
180
|
+
items: projectLater.length > 0
|
|
181
|
+
? [...projectLater, "(These columns are good candidates for post-training projection onto the map.)"]
|
|
182
|
+
: ["None"],
|
|
182
183
|
},
|
|
183
184
|
{
|
|
184
185
|
label: "Transformations",
|
|
@@ -213,13 +214,14 @@ async function buildTrainingPrepPayload(datasetId, input) {
|
|
|
213
214
|
suggestedProjectionColumns: projectLater,
|
|
214
215
|
warnings,
|
|
215
216
|
recommendations: recommendationLines,
|
|
217
|
+
guidance: guidanceLines,
|
|
216
218
|
sections,
|
|
217
219
|
editable: {
|
|
218
220
|
values: {
|
|
219
221
|
preset: input.preset,
|
|
220
|
-
backend: String(
|
|
221
|
-
outputFormat: String(
|
|
222
|
-
model: String(
|
|
222
|
+
backend: String(params.backend ?? input.backend ?? "auto"),
|
|
223
|
+
outputFormat: String(params.output_format ?? input.output_format ?? "png"),
|
|
224
|
+
model: String(params.model ?? input.model ?? "SOM"),
|
|
223
225
|
gridX: grid.length >= 2 ? String(grid[0]) : "",
|
|
224
226
|
gridY: grid.length >= 2 ? String(grid[1]) : "",
|
|
225
227
|
epochsOrdering: epochs.ordering,
|
|
@@ -313,6 +315,9 @@ export function registerTrainingPrepTools(server) {
|
|
|
313
315
|
backend: z.enum(["auto", "cpu", "gpu", "gpu_graphs"]).optional().default("auto"),
|
|
314
316
|
output_format: z.enum(["png", "pdf", "svg"]).optional().default("png"),
|
|
315
317
|
row_range: z.tuple([z.number().int().min(1), z.number().int().min(1)]).optional(),
|
|
318
|
+
siom_feature_geometry: z.enum(["l2", "mixed", "auto"]).optional(),
|
|
319
|
+
siom_qe_backend: z.enum(["cpu", "cuda", "auto"]).optional(),
|
|
320
|
+
siom_qe_batch_size: z.number().int().min(1).max(1_000_000).optional(),
|
|
316
321
|
};
|
|
317
322
|
registerAppTool(server, "training_prep", {
|
|
318
323
|
title: "Training Preparation",
|