@barivia/barsom-mcp 0.6.5 → 0.7.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 (37) hide show
  1. package/README.md +7 -5
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/shared.d.ts +85 -0
  5. package/dist/shared.d.ts.map +1 -1
  6. package/dist/shared.js +49 -1
  7. package/dist/shared.js.map +1 -1
  8. package/dist/tools/account.js +1 -1
  9. package/dist/tools/account.js.map +1 -1
  10. package/dist/tools/explore_map.d.ts +2 -1
  11. package/dist/tools/explore_map.d.ts.map +1 -1
  12. package/dist/tools/explore_map.js +121 -31
  13. package/dist/tools/explore_map.js.map +1 -1
  14. package/dist/tools/inference.d.ts.map +1 -1
  15. package/dist/tools/inference.js +5 -3
  16. package/dist/tools/inference.js.map +1 -1
  17. package/dist/tools/jobs.d.ts +68 -1
  18. package/dist/tools/jobs.d.ts.map +1 -1
  19. package/dist/tools/jobs.js +231 -81
  20. package/dist/tools/jobs.js.map +1 -1
  21. package/dist/tools/results.d.ts.map +1 -1
  22. package/dist/tools/results.js +47 -7
  23. package/dist/tools/results.js.map +1 -1
  24. package/dist/tools/training_prep.d.ts +4 -0
  25. package/dist/tools/training_prep.d.ts.map +1 -0
  26. package/dist/tools/training_prep.js +342 -0
  27. package/dist/tools/training_prep.js.map +1 -0
  28. package/dist/tools/training_review_store.d.ts +17 -0
  29. package/dist/tools/training_review_store.d.ts.map +1 -0
  30. package/dist/tools/training_review_store.js +54 -0
  31. package/dist/tools/training_review_store.js.map +1 -0
  32. package/dist/views/src/views/results-explorer/index.html +357 -0
  33. package/dist/views/src/views/training-prep/index.html +359 -0
  34. package/dist/viz-server.d.ts.map +1 -1
  35. package/dist/viz-server.js +51 -1
  36. package/dist/viz-server.js.map +1 -1
  37. package/package.json +2 -2
@@ -8,6 +8,8 @@ export const JOBS_DESCRIPTION_BASE = `Manage and inspect jobs.
8
8
  | 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. |
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
+ | train_siom_map | Submitting a self-interacting map training job — same map flow with SIOM coverage control |
12
+ | train_floop_chain | Submitting a FLooP-SIOM principal-curve training job |
11
13
  | cancel | Stopping a running or pending job to free the worker |
12
14
  | delete | Permanently removing a job and all its S3 result files |
13
15
 
@@ -27,18 +29,95 @@ ESCALATION (action=status):
27
29
  - column missing: verify with datasets(action=preview)
28
30
  - NaN error: user must clean the dataset
29
31
 
30
- action=train_map: Submits a training job. Returns job_id — poll with jobs(action=status, job_id=...).
32
+ action=train_map / train_siom_map: Submits a grid-map training job. Returns job_id — poll with jobs(action=status, job_id=...).
31
33
  Presets: quick | standard | refined | high_res — use preset=... for grid/epochs/batch defaults; call training_guidance for details.
32
34
  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.
33
35
  normalize: "auto" (default) = scale only non-cyclic features; "all" = scale every feature. Use "auto" when using cyclic_features.
36
+ action=train_floop_chain: Submits a FLooP-SIOM job. Use when you want a growing chain/free-topology manifold instead of a fixed hex grid. Key params: topology=free|chain, max_nodes, effort, gamma, siom_decay.
34
37
  action=compare: Returns a metrics table (QE, TE, explained variance, silhouette) for 2+ jobs.
35
38
  action=cancel: Not instant — worker checks between phases. Expect up to 30s delay.
36
39
  action=delete: WARNING — job ID will no longer work with results or any other tool.`;
40
+ export async function fetchTrainingPresets() {
41
+ const configData = (await apiCall("GET", "/v1/training/config"));
42
+ return configData?.presets || {};
43
+ }
44
+ export function buildTrainMapParams(args, presets) {
45
+ 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, mca_features, hierarchical_features, normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend, output_format, output_dpi, colormap, row_range, } = args;
46
+ const p = preset ? presets[preset] : undefined;
47
+ const params = {
48
+ model: model ?? "SOM",
49
+ periodic: periodic ?? true,
50
+ normalize: normalize ?? "auto",
51
+ };
52
+ if (grid_x !== undefined && grid_y !== undefined)
53
+ params.grid = [grid_x, grid_y];
54
+ else if (p)
55
+ params.grid = p.grid;
56
+ if (epochs !== undefined)
57
+ params.epochs = epochs;
58
+ else if (p)
59
+ params.epochs = p.epochs;
60
+ if (cyclic_features?.length)
61
+ params.cyclic_features = cyclic_features;
62
+ if (columns?.length)
63
+ params.columns = columns;
64
+ if (auto_log_transforms)
65
+ params.auto_log_transforms = auto_log_transforms;
66
+ if (time_delay_embeddings?.length)
67
+ params.time_delay_embeddings = time_delay_embeddings;
68
+ if (categorical_features?.length)
69
+ params.categorical_features = categorical_features;
70
+ if (mca_features?.length)
71
+ params.mca_features = mca_features;
72
+ if (hierarchical_features?.length)
73
+ params.hierarchical_features = hierarchical_features;
74
+ if (transforms && Object.keys(transforms).length > 0)
75
+ params.transforms = transforms;
76
+ if (temporal_features?.length)
77
+ params.temporal_features = temporal_features;
78
+ if (feature_weights && Object.keys(feature_weights).length > 0)
79
+ params.feature_weights = feature_weights;
80
+ if (sigma_f !== undefined)
81
+ params.sigma_f = sigma_f;
82
+ if (learning_rate !== undefined)
83
+ params.learning_rate = learning_rate;
84
+ if (batch_size !== undefined)
85
+ params.batch_size = batch_size;
86
+ else if (p)
87
+ params.batch_size = p.batch_size;
88
+ if (quality_metrics !== undefined)
89
+ params.quality_metrics = quality_metrics;
90
+ if (backend !== undefined && backend !== "auto")
91
+ params.backend = backend;
92
+ else if (p?.backend)
93
+ params.backend = p.backend;
94
+ params.output_format = output_format ?? "png";
95
+ const dpiMap = { standard: 1, retina: 2, print: 4 };
96
+ if (output_dpi && output_dpi !== "retina")
97
+ params.output_dpi = dpiMap[output_dpi] ?? 2;
98
+ if (colormap)
99
+ params.colormap = colormap;
100
+ if (row_range && row_range.length >= 2 && row_range[0] <= row_range[1])
101
+ params.row_range = row_range;
102
+ const effectiveGrid = params.grid;
103
+ const effectiveEpochs = params.epochs;
104
+ const effectiveBatch = params.batch_size;
105
+ const effectiveBackend = params.backend;
106
+ const paramSummary = [
107
+ effectiveGrid ? `grid=${effectiveGrid[0]}×${effectiveGrid[1]}` : "grid=auto",
108
+ effectiveEpochs ? `epochs=${Array.isArray(effectiveEpochs) ? effectiveEpochs.join("+") : effectiveEpochs}` : "epochs=auto",
109
+ effectiveBatch ? `batch=${effectiveBatch}` : "batch=auto",
110
+ `model=${params.model}`,
111
+ effectiveBackend ? `backend=${effectiveBackend}` : "",
112
+ preset ? `(from preset: ${preset})` : "",
113
+ ].filter(Boolean).join(", ");
114
+ return { params, paramSummary, effectiveGrid };
115
+ }
37
116
  export function registerJobsTool(server, description) {
38
117
  server.tool("jobs", description, {
39
118
  action: z
40
- .enum(["status", "list", "compare", "cancel", "delete", "train_map", "batch_predict", "run_baseline_study"])
41
- .describe("status: check progress; list: see all jobs; compare: metrics table; cancel: stop job; delete: remove job + files; train_map: submit new training job; batch_predict: submit multiple predict jobs at once; run_baseline_study: auto-configure and train a baseline SOM"),
119
+ .enum(["status", "list", "compare", "cancel", "delete", "train_map", "train_siom_map", "train_floop_chain", "batch_predict", "run_baseline_study"])
120
+ .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_chain: submit FLooP-SIOM training; batch_predict: submit multiple predict jobs at once; run_baseline_study: auto-configure and train a baseline SOM"),
42
121
  job_id: z
43
122
  .string()
44
123
  .optional()
@@ -123,14 +202,39 @@ export function registerJobsTool(server, description) {
123
202
  output_dpi: z.enum(["standard", "retina", "print"]).optional().default("retina"),
124
203
  colormap: z.string().optional(),
125
204
  row_range: z.tuple([z.number().int().min(1), z.number().int().min(1)]).optional(),
205
+ gamma: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
206
+ gamma_f: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
207
+ siom_decay: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
208
+ siom_penalty: z.enum(["linear", "log", "exp"]).optional(),
209
+ penalty_alpha: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
210
+ reset_per_epoch: z.boolean().optional(),
211
+ topology: z.enum(["free", "chain"]).optional().default("free"),
212
+ max_nodes: z.number().int().min(2).optional(),
213
+ effort: z.enum(["quick", "standard", "thorough"]).optional().default("standard"),
214
+ n_initial: z.number().int().min(2).optional(),
215
+ n_passes: z.number().int().min(1).optional(),
216
+ growth_interval: z.number().int().min(1).optional(),
217
+ neighborhood_size: z.number().int().min(1).optional(),
218
+ edge_max_age: z.number().int().min(1).optional(),
219
+ max_degree: z.number().int().min(0).optional(),
220
+ error_threshold: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
221
+ error_decay: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
222
+ ring_close_threshold: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
223
+ sigma_0: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
224
+ eta_0: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
225
+ eta_f: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
226
+ elastic_lambda: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
227
+ elastic_mu: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
228
+ elastic_anchor: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
229
+ anchor_percentile: z.preprocess((v) => (v !== undefined && v !== null && typeof v === "string") ? parseFloat(v) : v, z.number().optional()),
126
230
  }, async (args) => {
127
231
  const { action, job_id, job_ids, dataset_id } = args;
128
232
  if (action === "run_baseline_study") {
129
233
  if (!dataset_id)
130
234
  throw new Error("jobs(run_baseline_study) requires dataset_id");
131
- // Fetch dataset info to get row count
132
- const dsInfo = await apiCall("GET", `/v1/datasets/${dataset_id}`);
133
- const nSamples = dsInfo.rows || 1000;
235
+ // Fetch dataset preview to get row count
236
+ const dsInfo = await apiCall("GET", `/v1/datasets/${dataset_id}/preview?n_rows=1`);
237
+ const nSamples = dsInfo.total_rows || 1000;
134
238
  // Heuristic grid size: 5 * sqrt(N)
135
239
  const totalNodes = Math.round(5 * Math.sqrt(nSamples));
136
240
  const side = Math.max(5, Math.round(Math.sqrt(totalNodes)));
@@ -141,21 +245,19 @@ export function registerJobsTool(server, description) {
141
245
  grid: [side, side],
142
246
  epochs: [10, 20],
143
247
  batch_size: 32,
144
- quality_metrics: true,
248
+ quality_metrics: "standard",
145
249
  output_format: "png",
146
250
  output_dpi: 2,
147
- colormap: "coolwarm",
148
- _job_type: "train_map"
251
+ colormap: "coolwarm"
149
252
  };
150
- const data = (await apiCall("POST", `/v1/datasets/${dataset_id}/jobs`, params));
253
+ const data = (await apiCall("POST", "/v1/jobs", { dataset_id, params }));
151
254
  return { content: [{ type: "text", text: `Baseline study submitted. Job ID: ${data.id}\nGrid size: ${side}x${side}\nNormalization: MAD\n\nPoll with jobs(action=status, job_id="${data.id}") until complete, then retrieve with results(action=get, job_id="${data.id}").` }] };
152
255
  }
153
- if (action === "train_map") {
154
- 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, mca_features, hierarchical_features, normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend, output_format, output_dpi, colormap, row_range, } = args;
256
+ if (action === "train_map" || action === "train_siom_map") {
257
+ 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, mca_features, hierarchical_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;
155
258
  let PRESETS = {};
156
259
  try {
157
- const configData = (await apiCall("GET", "/v1/training/config"));
158
- PRESETS = configData?.presets || {};
260
+ PRESETS = await fetchTrainingPresets();
159
261
  }
160
262
  catch (e) {
161
263
  if (e.httpStatus === 401 || e.httpStatus === 403)
@@ -166,58 +268,28 @@ export function registerJobsTool(server, description) {
166
268
  }
167
269
  if (!dataset_id)
168
270
  throw new Error("jobs(train_map) requires dataset_id");
169
- const p = preset ? PRESETS[preset] : undefined;
170
- const params = { model, periodic, normalize };
171
- if (grid_x !== undefined && grid_y !== undefined)
172
- params.grid = [grid_x, grid_y];
173
- else if (p)
174
- params.grid = p.grid;
175
- if (epochs !== undefined)
176
- params.epochs = epochs;
177
- else if (p)
178
- params.epochs = p.epochs;
179
- if (cyclic_features?.length)
180
- params.cyclic_features = cyclic_features;
181
- if (columns?.length)
182
- params.columns = columns;
183
- if (auto_log_transforms)
184
- params.auto_log_transforms = auto_log_transforms;
185
- if (time_delay_embeddings?.length)
186
- params.time_delay_embeddings = time_delay_embeddings;
187
- if (categorical_features?.length)
188
- params.categorical_features = categorical_features;
189
- if (mca_features?.length)
190
- params.mca_features = mca_features;
191
- if (hierarchical_features?.length)
192
- params.hierarchical_features = hierarchical_features;
193
- if (transforms && Object.keys(transforms).length > 0)
194
- params.transforms = transforms;
195
- if (temporal_features?.length)
196
- params.temporal_features = temporal_features;
197
- if (feature_weights && Object.keys(feature_weights).length > 0)
198
- params.feature_weights = feature_weights;
199
- if (sigma_f !== undefined)
200
- params.sigma_f = sigma_f;
201
- if (learning_rate !== undefined)
202
- params.learning_rate = learning_rate;
203
- if (batch_size !== undefined)
204
- params.batch_size = batch_size;
205
- else if (p)
206
- params.batch_size = p.batch_size;
207
- if (quality_metrics !== undefined)
208
- params.quality_metrics = quality_metrics;
209
- if (backend !== undefined && backend !== "auto")
210
- params.backend = backend;
211
- else if (p?.backend)
212
- params.backend = p.backend;
213
- params.output_format = output_format ?? "png";
214
- const dpiMap = { standard: 1, retina: 2, print: 4 };
215
- if (output_dpi && output_dpi !== "retina")
216
- params.output_dpi = dpiMap[output_dpi] ?? 2;
217
- if (colormap)
218
- params.colormap = colormap;
219
- if (row_range && row_range.length >= 2 && row_range[0] <= row_range[1])
220
- params.row_range = row_range;
271
+ const { params, paramSummary, effectiveGrid } = buildTrainMapParams({
272
+ preset, grid_x, grid_y, epochs, model, periodic, columns, cyclic_features,
273
+ temporal_features, feature_weights, transforms, auto_log_transforms,
274
+ time_delay_embeddings, categorical_features, mca_features, hierarchical_features,
275
+ normalize, sigma_f, learning_rate, batch_size, quality_metrics, backend,
276
+ output_format, output_dpi, colormap, row_range,
277
+ }, PRESETS);
278
+ if (action === "train_siom_map") {
279
+ params._job_type = "train_siom";
280
+ if (gamma !== undefined)
281
+ params.gamma = gamma;
282
+ if (gamma_f !== undefined)
283
+ params.gamma_f = gamma_f;
284
+ if (siom_decay !== undefined)
285
+ params.siom_decay = siom_decay;
286
+ if (siom_penalty !== undefined)
287
+ params.siom_penalty = siom_penalty;
288
+ if (penalty_alpha !== undefined)
289
+ params.penalty_alpha = penalty_alpha;
290
+ if (reset_per_epoch !== undefined)
291
+ params.reset_per_epoch = reset_per_epoch;
292
+ }
221
293
  let totalRows = 0;
222
294
  try {
223
295
  const preview = (await apiCall("GET", `/v1/datasets/${dataset_id}/preview?n_rows=1`));
@@ -226,26 +298,15 @@ export function registerJobsTool(server, description) {
226
298
  catch { /* ignore */ }
227
299
  const data = (await apiCall("POST", "/v1/jobs", { dataset_id, params }));
228
300
  const newJobId = data.id;
229
- const effectiveGrid = params.grid;
230
- const effectiveEpochs = params.epochs;
231
- const effectiveBatch = params.batch_size;
232
- const effectiveBackend = params.backend;
233
- const paramSummary = [
234
- effectiveGrid ? `grid=${effectiveGrid[0]}×${effectiveGrid[1]}` : "grid=auto",
235
- effectiveEpochs ? `epochs=${Array.isArray(effectiveEpochs) ? effectiveEpochs.join("+") : effectiveEpochs}` : "epochs=auto",
236
- effectiveBatch ? `batch=${effectiveBatch}` : "batch=auto",
237
- `model=${model}`,
238
- effectiveBackend ? `backend=${effectiveBackend}` : "",
239
- preset ? `(from preset: ${preset})` : "",
240
- ].filter(Boolean).join(", ");
241
- data.effective_params = paramSummary;
301
+ const variantPrefix = action === "train_siom_map" ? "variant=siom" : "variant=som";
302
+ data.effective_params = `${variantPrefix}, ${paramSummary}`;
242
303
  try {
243
304
  const sys = (await apiCall("GET", "/v1/system/info"));
244
305
  const pending = Number(sys.status?.pending_jobs ?? sys.pending_jobs ?? 0);
245
306
  const totalEta = Number(sys.training_time_estimates_seconds?.total ??
246
307
  (sys.gpu_available ? 45 : 120));
247
308
  const waitMinutes = Math.round((pending * totalEta) / 60);
248
- let msg = `Job submitted (${paramSummary}). `;
309
+ let msg = `Job submitted (${variantPrefix}, ${paramSummary}). `;
249
310
  if (waitMinutes > 1)
250
311
  msg += `You are #${pending + 1} in queue. Estimated wait: ~${waitMinutes} min. `;
251
312
  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.`;
@@ -255,7 +316,7 @@ export function registerJobsTool(server, description) {
255
316
  data.message = msg;
256
317
  }
257
318
  catch {
258
- let msg = `Job submitted (${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.`;
319
+ 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.`;
259
320
  if (effectiveGrid && totalRows > 0 && effectiveGrid[0] * effectiveGrid[1] > totalRows * 0.75) {
260
321
  msg += ` Note: Grid may be large for ${totalRows} rows (consider grid=auto for fewer dead nodes).`;
261
322
  }
@@ -263,6 +324,95 @@ export function registerJobsTool(server, description) {
263
324
  }
264
325
  return textResult(data);
265
326
  }
327
+ if (action === "train_floop_chain") {
328
+ 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;
329
+ if (!dataset_id)
330
+ throw new Error("jobs(train_floop_chain) requires dataset_id");
331
+ const params = {
332
+ _job_type: "train_floop_siom",
333
+ topology,
334
+ effort,
335
+ normalize,
336
+ output_format: output_format ?? "png",
337
+ };
338
+ if (max_nodes !== undefined)
339
+ params.max_nodes = max_nodes;
340
+ if (columns?.length)
341
+ params.columns = columns;
342
+ if (cyclic_features?.length)
343
+ params.cyclic_features = cyclic_features;
344
+ if (temporal_features?.length)
345
+ params.temporal_features = temporal_features;
346
+ if (feature_weights && Object.keys(feature_weights).length > 0)
347
+ params.feature_weights = feature_weights;
348
+ if (transforms && Object.keys(transforms).length > 0)
349
+ params.transforms = transforms;
350
+ if (auto_log_transforms)
351
+ params.auto_log_transforms = auto_log_transforms;
352
+ if (row_range && row_range.length >= 2 && row_range[0] <= row_range[1])
353
+ params.row_range = row_range;
354
+ const dpiMap = { standard: 1, retina: 2, print: 4 };
355
+ if (output_dpi && output_dpi !== "retina")
356
+ params.output_dpi = dpiMap[output_dpi] ?? 2;
357
+ if (colormap)
358
+ params.colormap = colormap;
359
+ if (n_initial !== undefined)
360
+ params.n_initial = n_initial;
361
+ if (n_passes !== undefined)
362
+ params.n_passes = n_passes;
363
+ if (growth_interval !== undefined)
364
+ params.growth_interval = growth_interval;
365
+ if (neighborhood_size !== undefined)
366
+ params.neighborhood_size = neighborhood_size;
367
+ if (edge_max_age !== undefined)
368
+ params.edge_max_age = edge_max_age;
369
+ if (max_degree !== undefined)
370
+ params.max_degree = max_degree;
371
+ if (gamma !== undefined)
372
+ params.gamma = gamma;
373
+ if (siom_decay !== undefined)
374
+ params.siom_decay = siom_decay;
375
+ if (siom_penalty !== undefined)
376
+ params.siom_penalty = siom_penalty;
377
+ if (penalty_alpha !== undefined)
378
+ params.penalty_alpha = penalty_alpha;
379
+ if (error_threshold !== undefined)
380
+ params.error_threshold = error_threshold;
381
+ if (error_decay !== undefined)
382
+ params.error_decay = error_decay;
383
+ if (ring_close_threshold !== undefined)
384
+ params.ring_close_threshold = ring_close_threshold;
385
+ if (sigma_0 !== undefined)
386
+ params.sigma_0 = sigma_0;
387
+ if (sigma_f !== undefined)
388
+ params.sigma_f = sigma_f;
389
+ if (eta_0 !== undefined)
390
+ params.eta_0 = eta_0;
391
+ if (eta_f !== undefined)
392
+ params.eta_f = eta_f;
393
+ if (elastic_lambda !== undefined)
394
+ params.elastic_lambda = elastic_lambda;
395
+ if (elastic_mu !== undefined)
396
+ params.elastic_mu = elastic_mu;
397
+ if (elastic_anchor !== undefined)
398
+ params.elastic_anchor = elastic_anchor;
399
+ if (anchor_percentile !== undefined)
400
+ params.anchor_percentile = anchor_percentile;
401
+ const data = (await apiCall("POST", "/v1/jobs", { dataset_id, params }));
402
+ const newJobId = data.id;
403
+ const paramSummary = [
404
+ "variant=floop",
405
+ `topology=${topology ?? "free"}`,
406
+ `max_nodes=${max_nodes ?? 60}`,
407
+ `effort=${effort ?? "standard"}`,
408
+ gamma !== undefined ? `gamma=${gamma}` : "",
409
+ ].filter(Boolean).join(", ");
410
+ data.effective_params = paramSummary;
411
+ data.message =
412
+ `Job submitted (${paramSummary}). Poll with jobs(action=status, job_id="${newJobId}"). ` +
413
+ `When status is completed, use results(action=get, job_id="${newJobId}") to view the chain artifacts and metrics.`;
414
+ return textResult(data);
415
+ }
266
416
  if (action === "status") {
267
417
  if (!job_id)
268
418
  throw new Error("jobs(status) requires job_id");
@@ -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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oFAoC+C,CAAC;AA4CrF,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAA4B,CAAC;IAC5F,OAAQ,UAAU,EAAE,OAA0C,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAsB,EACtB,OAAuC;IAMvC,MAAM,EACJ,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,eAAe,EACf,OAAO,EACP,aAAa,EACb,UAAU,EACV,QAAQ,EACR,SAAS,GACV,GAAG,IAAI,CAAC;IACT,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,MAAM,MAAM,GAA4B;QACtC,KAAK,EAAE,KAAK,IAAI,KAAK;QACrB,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,SAAS,EAAE,SAAS,IAAI,MAAM;KAC/B,CAAC;IACF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC5E,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;SAC5C,IAAI,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,eAAe,EAAE,MAAM;QAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IACtE,IAAI,OAAO,EAAE,MAAM;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9C,IAAI,mBAAmB;QAAE,MAAM,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IAC1E,IAAI,qBAAqB,EAAE,MAAM;QAAE,MAAM,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACxF,IAAI,oBAAoB,EAAE,MAAM;QAAE,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACrF,IAAI,YAAY,EAAE,MAAM;QAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IAC7D,IAAI,qBAAqB,EAAE,MAAM;QAAE,MAAM,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACxF,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACrF,IAAI,iBAAiB,EAAE,MAAM;QAAE,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC5E,IAAI,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IACzG,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACpD,IAAI,aAAa,KAAK,SAAS;QAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACtE,IAAI,UAAU,KAAK,SAAS;QAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;SACxD,IAAI,CAAC;QAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IAC7C,IAAI,eAAe,KAAK,SAAS;QAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IAC5E,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;SACrE,IAAI,CAAC,EAAE,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,CAAC,aAAa,GAAG,aAAa,IAAI,KAAK,CAAC;IAC9C,MAAM,MAAM,GAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC5E,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ;QAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvF,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAErG,MAAM,aAAa,GAAG,MAAM,CAAC,IAA4B,CAAC;IAC1D,MAAM,eAAe,GAAG,MAAM,CAAC,MAAuC,CAAC;IACvE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAgC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAA6B,CAAC;IAC9D,MAAM,YAAY,GAAG;QACnB,aAAa,CAAC,CAAC,CAAC,QAAQ,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;QAC5E,eAAe,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,aAAa;QAC1H,cAAc,CAAC,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY;QACzD,SAAS,MAAM,CAAC,KAAe,EAAE;QACjC,gBAAgB,CAAC,CAAC,CAAC,WAAW,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE;QACrD,MAAM,CAAC,CAAC,CAAC,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;KACzC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,WAAmB;IACrE,MAAM,CAAC,IAAI,CACT,MAAM,EACN,WAAW,EACX;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC;aAClJ,QAAQ,CAAC,sWAAsW,CAAC;QACnX,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0FAA0F,CAAC;QACvG,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC3D,CAAC,CAAC;aACF,QAAQ,EAAE;aACV,QAAQ,CAAC,0GAA0G,CAAC;QACvH,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,iFAAiF,CAAC;QAC9F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;QACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,CAAC,CAAC,UAAU,CAClB,CAAC,CAAC,EAAE,EAAE;YACJ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACnD,IAAI,CAAC;oBAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,EACD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC5E;QACD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACjF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACvC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAClG,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACjC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAChD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrH,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1D,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACpC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACd,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QACjH,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACjI,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC7I,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC/C,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACvC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAChG,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QAChF,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACtE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACjF,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/H,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACjI,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpI,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;QACzD,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACvI,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACvC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;QAChF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC5C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACnD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACrD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9C,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACzI,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACrI,oBAAoB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC9I,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACjI,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/H,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/H,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACxI,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpI,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACxI,iBAAiB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;KAC5I,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAErD,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAEjF,yCAAyC;YACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,gBAAgB,UAAU,mBAAmB,CAAQ,CAAC;YAC1F,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;YAE3C,mCAAmC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAE5D,MAAM,MAAM,GAA4B;gBACtC,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,KAAK,EAAE,uBAAuB;gBACzC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAClB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;gBAChB,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,UAAU;gBAC3B,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,UAAU;aACrB,CAAC;YAEF,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAA4B,CAAC;YACpG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qCAAqC,IAAI,CAAC,EAAE,gBAAgB,IAAI,IAAI,IAAI,iEAAiE,IAAI,CAAC,EAAE,qEAAqE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3R,CAAC;QAED,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAC1D,MAAM,EACJ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EACzE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB,EACnE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,EAAE,qBAAqB,EAChF,SAAS,EAAE,OAAO,EAAE,aAAa,EACjC,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EACpF,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,GACzE,GAAG,IAAI,CAAC;YACT,IAAI,OAAO,GAAmC,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAK,CAAS,CAAC,UAAU,KAAK,GAAG,IAAK,CAAS,CAAC,UAAU,KAAK,GAAG;oBAAE,MAAM,CAAC,CAAC;gBAC5E,IAAI,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC3D,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;YACD,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACxE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC;gBAClE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe;gBACzE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB;gBACnE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,EAAE,qBAAqB;gBAChF,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO;gBACvE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;aAC/C,EAAE,OAAO,CAAC,CAAC;YACZ,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAChC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;gBAChC,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC9C,IAAI,OAAO,KAAK,SAAS;oBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBACpD,IAAI,UAAU,KAAK,SAAS;oBAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;gBAC7D,IAAI,YAAY,KAAK,SAAS;oBAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;gBACnE,IAAI,aAAa,KAAK,SAAS;oBAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;gBACtE,IAAI,eAAe,KAAK,SAAS;oBAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;YAC9E,CAAC;YACD,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,gBAAgB,UAAU,mBAAmB,CAAC,CAA4B,CAAC;gBACjH,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAA4B,CAAC;YACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAY,CAAC;YACnC,MAAM,aAAa,GAAG,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;YAClF,IAAgC,CAAC,gBAAgB,GAAG,GAAG,aAAa,KAAK,YAAY,EAAE,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAA4B,CAAC;gBACjF,MAAM,OAAO,GAAG,MAAM,CAAE,GAAG,CAAC,MAAkC,EAAE,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;gBACvG,MAAM,QAAQ,GAAG,MAAM,CACpB,GAAG,CAAC,+BAA2D,EAAE,KAAK;oBACvE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAC/B,CAAC;gBACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1D,IAAI,GAAG,GAAG,kBAAkB,aAAa,KAAK,YAAY,KAAK,CAAC;gBAChE,IAAI,WAAW,GAAG,CAAC;oBAAE,GAAG,IAAI,YAAY,OAAO,GAAG,CAAC,+BAA+B,WAAW,QAAQ,CAAC;gBACtG,GAAG,IAAI,yCAAyC,QAAQ,iEAAiE,QAAQ,iCAAiC,CAAC;gBACnK,IAAI,aAAa,IAAI,SAAS,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;oBAC7F,GAAG,IAAI,gCAAgC,SAAS,kDAAkD,CAAC;gBACrG,CAAC;gBACA,IAAgC,CAAC,OAAO,GAAG,GAAG,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,GAAG,kBAAkB,aAAa,KAAK,YAAY,4CAA4C,QAAQ,iEAAiE,QAAQ,iCAAiC,CAAC;gBACzN,IAAI,aAAa,IAAI,SAAS,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;oBAC7F,GAAG,IAAI,gCAAgC,SAAS,kDAAkD,CAAC;gBACrG,CAAC;gBACA,IAAgC,CAAC,OAAO,GAAG,GAAG,CAAC;YAClD,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACnC,MAAM,EACJ,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB,EAC7F,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EACzD,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EACjE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAC3C,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAC9C,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAClF,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,GAC9D,GAAG,IAAI,CAAC;YACT,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAChF,MAAM,MAAM,GAA4B;gBACtC,SAAS,EAAE,kBAAkB;gBAC7B,QAAQ;gBACR,MAAM;gBACN,SAAS;gBACT,aAAa,EAAE,aAAa,IAAI,KAAK;aACtC,CAAC;YACF,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1D,IAAI,OAAO,EAAE,MAAM;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC9C,IAAI,eAAe,EAAE,MAAM;gBAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;YACtE,IAAI,iBAAiB,EAAE,MAAM;gBAAE,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC5E,IAAI,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;YACzG,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YACrF,IAAI,mBAAmB;gBAAE,MAAM,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAC1E,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YACrG,MAAM,MAAM,GAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5E,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ;gBAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvF,IAAI,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzC,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1D,IAAI,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACvD,IAAI,eAAe,KAAK,SAAS;gBAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;YAC5E,IAAI,iBAAiB,KAAK,SAAS;gBAAE,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAClF,IAAI,YAAY,KAAK,SAAS;gBAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;YACnE,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7D,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9C,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7D,IAAI,YAAY,KAAK,SAAS;gBAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;YACnE,IAAI,aAAa,KAAK,SAAS;gBAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;YACtE,IAAI,eAAe,KAAK,SAAS;gBAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;YAC5E,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;YAChE,IAAI,oBAAoB,KAAK,SAAS;gBAAE,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YAC3F,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YACpD,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YACpD,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9C,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9C,IAAI,cAAc,KAAK,SAAS;gBAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;YACzE,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7D,IAAI,cAAc,KAAK,SAAS;gBAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;YACzE,IAAI,iBAAiB,KAAK,SAAS;gBAAE,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAElF,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAA4B,CAAC;YACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAY,CAAC;YACnC,MAAM,YAAY,GAAG;gBACnB,eAAe;gBACf,YAAY,QAAQ,IAAI,MAAM,EAAE;gBAChC,aAAa,SAAS,IAAI,EAAE,EAAE;gBAC9B,UAAU,MAAM,IAAI,UAAU,EAAE;gBAChC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;aAC5C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAgC,CAAC,gBAAgB,GAAG,YAAY,CAAC;YACjE,IAAgC,CAAC,OAAO;gBACvC,kBAAkB,YAAY,4CAA4C,QAAQ,MAAM;oBACxF,6DAA6D,QAAQ,6CAA6C,CAAC;YACrH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,YAAY,MAAM,EAAE,CAAC,CAA4B,CAAC;YACrF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;YACrC,MAAM,QAAQ,GAAG,CAAE,IAAI,CAAC,QAAmB,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC;YACzE,IAAI,IAAI,GAAG,GAAG,OAAO,KAAK,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,IAAI,IAAI,qDAAqD,MAAM,iBAAiB,CAAC;YACvF,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,IAAI,aAAa,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;YACjD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/E,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAc,CAAC;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAI,IAAkC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC5D,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC/E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;gBACtE,CAAC,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YAChH,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACjG,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,EAAE,CAAC,CAA4B,CAAC;YAC9F,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAA8B,CAAC;YAC1E,MAAM,KAAK,GAAa;gBACtB,sEAAsE;gBACtE,sEAAsE;aACvE,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,MAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC;oBAC9F,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAuB,CAAC;gBACpC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAyB,CAAC;gBACvC,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACvF,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,MAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAO,CAAC,CAAC,KAAuB,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1R,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,YAAY,MAAM,SAAS,CAAC,CAAC;YAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,YAAY,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC1F,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACvG,CAAC;YACD,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,eAAe,MAAM,gBAAgB,EAAE,IAAI,CAAC,CAA4B,CAAC;YAC7G,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAa,CAAC;YACzC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,kBAAkB,GAAG,CAAC,MAAM,8BAA8B,MAAM,6DAA6D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACpJ,CAAC;aACH,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/tools/results.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,GAAG;IAAE,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,OAAO,CAAC;YAAE,KAAK,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAA;CAAE,GACzF,IAAI,CAygBN"}
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/tools/results.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,GAAG;IAAE,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,OAAO,CAAC;YAAE,KAAK,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAA;CAAE,GACzF,IAAI,CA8iBN"}
@@ -35,7 +35,7 @@ action=download: Save figures to disk. Use so user can open, share, or version f
35
35
 
36
36
  action=recolor: Change colormap or output format — no retraining. Returns a new job_id; auto-polls 60s.
37
37
  AFTER: use results(action=get, job_id=NEW_JOB_ID).
38
- Colormaps: viridis, plasma, inferno, magma, cividis, turbo, coolwarm, balance, RdBu, Spectral.
38
+ Colormaps: viridis, plasma, inferno, magma, cividis, turbo, coolwarm, balance, hsv, twilight, RdBu, Spectral. Also: thermal, hot, grays, RdYlBu, delta, curl, phase, rainbow, tol_bright, tol_muted.
39
39
 
40
40
  action=transition_flow: Temporal state transition arrows on the map grid. Only use when rows are in chronological order. If your data has no temporal ordering, transition_flow will still run but the arrows are meaningless — use for time-ordered data only.
41
41
  - You pass the training job_id; the API returns a new result job_id. Use that new job_id for results(get) or results(download).
@@ -50,7 +50,7 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
50
50
  figures: z
51
51
  .union([z.enum(["default", "combined_only", "all", "images"]), z.array(z.string())])
52
52
  .optional()
53
- .describe("action=get: omit=combined only; 'all'=all plots; array=specific (combined,umatrix,hit_histogram,correlation,component_1..N). action=download: 'all'=all image files; array=specific filenames."),
53
+ .describe("action=get: omit=combined only; 'all'=all plots; array=specific (combined,umatrix,hit_histogram,learning_curve,correlation,component_1..N). action=download: 'all'=all image files; array=specific filenames."),
54
54
  include_individual: z
55
55
  .boolean()
56
56
  .optional()
@@ -68,7 +68,7 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
68
68
  colormap: z
69
69
  .string()
70
70
  .optional()
71
- .describe("action=recolor: colormap name (default: coolwarm). action=transition_flow: U-matrix background colormap (default: grays). Examples: viridis, plasma, balance, RdBu."),
71
+ .describe("action=recolor: colormap name (default: coolwarm). action=transition_flow: U-matrix background colormap (default: grays). Examples: viridis, plasma, balance, hsv, twilight, RdBu, phase, rainbow."),
72
72
  output_format: z
73
73
  .enum(["png", "pdf", "svg"])
74
74
  .optional()
@@ -219,6 +219,40 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
219
219
  `Use results(action=download, job_id="${job_id}") to save predictions.csv.`,
220
220
  ].join("\n") });
221
221
  }
222
+ else if (jobType === "train_floop_siom") {
223
+ const siom = summary.siom ?? {};
224
+ const growthEvents = summary.growth_events ?? [];
225
+ const files = summary.files ?? [];
226
+ const lines = [
227
+ `FLooP-SIOM training ${resultsHeader}`,
228
+ `Topology: ${summary.topology ?? "free"} | Nodes: ${summary.final_length ?? "?"} / ${summary.max_nodes ?? "?"} | Features: ${summary.n_features ?? 0} | Samples: ${summary.n_samples ?? 0}`,
229
+ `Passes: ${summary.n_passes ?? "?"} | Growth interval: ${summary.growth_interval ?? "?"} | Ring: ${summary.is_ring ?? false}`,
230
+ `Converged: ${summary.converged ?? false} | Total steps: ${summary.total_steps ?? "?"}`,
231
+ summary.training_duration_seconds !== undefined ? `Training duration: ${summary.training_duration_seconds}s` : "",
232
+ ``,
233
+ `Quality Metrics:`,
234
+ ` Quantization Error: ${summary.quantization_error !== undefined ? Number(summary.quantization_error).toFixed(4) : "N/A"} (lower is better)`,
235
+ ` Topographic Error: ${summary.topographic_error !== undefined ? Number(summary.topographic_error).toFixed(4) : "N/A"} (lower is better)`,
236
+ ``,
237
+ `SIOM Coverage:`,
238
+ ` Utilization: ${siom.utilization !== undefined ? Number(siom.utilization).toFixed(4) : "N/A"}`,
239
+ ` Dead fraction: ${siom.dead_fraction !== undefined ? Number(siom.dead_fraction).toFixed(4) : "N/A"}`,
240
+ ` Gini: ${siom.gini !== undefined ? Number(siom.gini).toFixed(4) : "N/A"}`,
241
+ ` Entropy: ${siom.entropy !== undefined ? Number(siom.entropy).toFixed(4) : "N/A"}`,
242
+ ``,
243
+ `Features: ${(summary.features ?? []).join(", ")}`,
244
+ growthEvents.length > 0 ? `Growth events: ${growthEvents.length} (latest length ${growthEvents.at(-1)?.length ?? "?"})` : "Growth events: none recorded",
245
+ files.length > 0 ? `Artifacts: ${files.join(", ")}` : "",
246
+ ].filter((l) => l !== "");
247
+ content.push({ type: "text", text: lines.join("\n") });
248
+ for (const name of getResultsImagesToFetch(jobType, summary, figures, include_individual)) {
249
+ const cap = getCaptionForImage(name);
250
+ if (cap)
251
+ content.push({ type: "text", text: cap });
252
+ await tryAttachImage(content, job_id, name);
253
+ inlinedImages.add(name);
254
+ }
255
+ }
222
256
  else {
223
257
  const grid = summary.grid ?? [0, 0];
224
258
  const features = summary.features ?? [];
@@ -252,6 +286,7 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
252
286
  const topCorrLine = topCorrs && topCorrs.length > 0
253
287
  ? `Strongest feature correlations: ${topCorrs.map((t) => `${t.f1 ?? "?"} & ${t.f2 ?? "?"} (${typeof t.r === "number" ? Number(t.r).toFixed(2) : t.r})`).join(", ")}`
254
288
  : "";
289
+ const siom = summary.siom;
255
290
  const textSummary = [
256
291
  `Map training ${resultsHeader}`,
257
292
  `Grid: ${grid[0]}×${grid[1]} | Features: ${summary.n_features ?? 0} | Samples: ${summary.n_samples ?? 0}`,
@@ -272,6 +307,11 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
272
307
  ...(compLines ? [`Component value ranges:\n${compLines}`] : []),
273
308
  ...(clusterLines ? ["", "Cluster map (defining features):", clusterLines] : []),
274
309
  ...(topCorrLine ? ["", topCorrLine] : []),
310
+ ...(siom ? ["", "SIOM coverage metrics:",
311
+ ` Utilization: ${siom.utilization !== undefined ? Number(siom.utilization).toFixed(4) : "N/A"}`,
312
+ ` Dead fraction: ${siom.dead_fraction !== undefined ? Number(siom.dead_fraction).toFixed(4) : "N/A"}`,
313
+ ` Gini: ${siom.gini !== undefined ? Number(siom.gini).toFixed(4) : "N/A"}`,
314
+ ` Entropy: ${siom.entropy !== undefined ? Number(siom.entropy).toFixed(4) : "N/A"}`] : []),
275
315
  ``, `Features: ${features.join(", ")}`,
276
316
  summary.selected_columns ? `Selected columns: ${summary.selected_columns.join(", ")}` : "",
277
317
  summary.transforms ? `Transforms: ${Object.entries(summary.transforms).map(([k, v]) => `${k}=${v}`).join(", ")}` : "",
@@ -285,7 +325,7 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
285
325
  return "";
286
326
  return `Columns not used in training: ${excluded.join(", ")}. You can project them onto this map with inference(action=project_columns, job_id=${job_id}, dataset_id=<dataset_id>, columns=[${excluded.map((c) => `"${c}"`).join(", ")}]) to see how they distribute across the topology. If you ran datasets(action=analyze) before training, any columns it recommended as "project later" are especially good candidates.`;
287
327
  })(),
288
- ...(jobType === "train_som" ? ["", `Next: results(action=export, export_type=training_log) for learning curve; results(action=download) to save figures; jobs(action=compare, job_ids=[...]) to compare runs; inference(action=predict) to score new data; inference(action=project_columns) to project other variables onto the map.`] : []),
328
+ ...((jobType === "train_som" || jobType === "train_siom") ? ["", `Next: results(action=export, export_type=training_log) for learning curve; results(action=download) to save figures; jobs(action=compare, job_ids=[...]) to compare runs; inference(action=predict) to score new data; inference(action=project_columns) to project other variables onto the map.`] : []),
289
329
  ].filter((l) => l !== "").join("\n");
290
330
  content.push({ type: "text", text: textSummary });
291
331
  const imagesToFetch = getResultsImagesToFetch(jobType, summary, figures, include_individual);
@@ -309,13 +349,13 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
309
349
  await tryAttachImage(content, job_id, fname);
310
350
  }
311
351
  }
312
- if (hasExportableJson && (jobType2 === "train_som" || jobType2 === "render_variant")) {
352
+ if (hasExportableJson && (jobType2 === "train_som" || jobType2 === "train_siom" || jobType2 === "render_variant")) {
313
353
  content.push({ type: "text", text: `Structured data: results(action=export, export_type=weights|nodes|training_log)` });
314
354
  }
315
355
  const featuresForLog = summary.features ?? [];
316
356
  const showAvailable = files.length > 0 && !(figures === "all" || figures === "images");
317
357
  if (showAvailable) {
318
- const logicalNames = jobType2 === "train_som" || jobType2 === "render_variant"
358
+ const logicalNames = jobType2 === "train_som" || jobType2 === "train_siom" || jobType2 === "render_variant"
319
359
  ? `Logical names: combined, umatrix, hit_histogram, correlation, ${featuresForLog.map((_, i) => `component_${i + 1}`).join(", ")}. `
320
360
  : "";
321
361
  content.push({ type: "text", text: `Available: ${files.join(", ")}. ${logicalNames}Use results(action=get, figures=[...]) for specific plots or results(action=get, figures=all) for all plots.` });
@@ -324,7 +364,7 @@ NOT FOR: Jobs that haven't completed. Use jobs(action=status) to check first.`,
324
364
  }
325
365
  if (action === "export") {
326
366
  if (!exportType)
327
- throw new Error("results(export) requires export_type param: training_log, weights, or nodes");
367
+ throw new Error("results(export) requires export_type: training_log, weights, nodes, clusters, or transition_matrix");
328
368
  if (exportType === "training_log") {
329
369
  const data = (await apiCall("GET", `/v1/results/${job_id}/training-log`));
330
370
  const ordErrors = data.ordering_errors ?? [];