@barivia/barsom-mcp 0.5.4 → 0.5.5

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 CHANGED
@@ -29,7 +29,7 @@ This is the standard pattern for MCP servers distributed as npm packages (same a
29
29
  |---|---|---|---|
30
30
  | `BARIVIA_API_KEY` | Yes | -- | API key (starts with `bv_`) |
31
31
  | `BARIVIA_API_URL` | No | `https://api.barivia.se` | API base URL |
32
- | `BARIVIA_WORKSPACE_ROOT` | No | `process.cwd()` | Directory for `file_path` and `save_to_disk`; set to your project path if paths are rejected. |
32
+ | `BARIVIA_WORKSPACE_ROOT` | No | `process.cwd()` or `PWD` | Directory for relative `file_path` and `save_to_disk`. In Cursor MCP, `process.cwd()` is often the MCP install dir — add `BARIVIA_WORKSPACE_ROOT` to your MCP config `env` with your project path (e.g. `/home/user/myproject`). Absolute paths and `file://` URIs work without it. |
33
33
 
34
34
  Legacy `BARSOM_API_KEY` / `BARSOM_API_URL` / `BARSOM_WORKSPACE_ROOT` are also accepted as fallbacks.
35
35
 
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{McpServer as e}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as t}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as o}from"zod";import{registerAppResource as a,registerAppTool as n,RESOURCE_MIME_TYPE as r}from"@modelcontextprotocol/ext-apps/server";import i from"node:fs/promises";import s from"node:path";const l=process.env.BARIVIA_API_URL??process.env.BARSOM_API_URL??"https://api.barivia.se",c=process.env.BARIVIA_API_KEY??process.env.BARSOM_API_KEY??"";c||(console.error("Error: BARIVIA_API_KEY not set. Set it in your MCP client config."),process.exit(1));const d=parseInt(process.env.BARIVIA_FETCH_TIMEOUT_MS??"30000",10),u=new Set([502,503,504]);function p(e,t){return!(void 0===t||!u.has(t))||(e instanceof DOMException&&"AbortError"===e.name||e instanceof TypeError)}async function m(e,t,o=d){const a=new AbortController,n=setTimeout(()=>a.abort(),o);try{return await fetch(e,{...t,signal:a.signal})}finally{clearTimeout(n)}}function f(e){const t=function(){const e=process.env.BARIVIA_WORKSPACE_ROOT??process.env.BARSOM_WORKSPACE_ROOT;return e?s.resolve(process.cwd(),e):process.cwd()}(),o=s.resolve(t,e);if(o!==t&&!o.startsWith(t+s.sep))throw new Error("Path must be within the workspace directory. Set BARIVIA_WORKSPACE_ROOT to your project path if needed. Absolute or parent-traversal paths are not allowed.");return o}async function g(e,t,o,a){const n=`${l}${t}`,r=a?.["Content-Type"]??"application/json",i=Math.random().toString(36).slice(2,10),s={Authorization:`Bearer ${c}`,"Content-Type":r,"X-Request-ID":i,...a};let d,u;void 0!==o&&(d="application/json"===r?JSON.stringify(o):String(o));for(let t=0;t<=2;t++)try{const o=await m(n,{method:e,headers:s,body:d}),a=await o.text();if(!o.ok){if(t<2&&p(null,o.status)){await new Promise(e=>setTimeout(e,1e3*2**t));continue}const e=(()=>{try{return JSON.parse(a)}catch{return null}})(),n=e?.error??a,r=400===o.status?" Check parameter types and required fields.":401===o.status?" Check BARIVIA_API_KEY in your environment or regenerate at https://barivia.com/dashboard.":404===o.status?" The resource may not exist or may have been deleted.":409===o.status?" The job may not be in the expected state.":429===o.status?" Rate limit exceeded — wait a moment and retry.":"",i=e?.error_code?` (error_code: ${e.error_code})`:"",s=new Error(`${n}${i}${r}`);throw s.httpStatus=o.status,s}return JSON.parse(a)}catch(e){if(u=e,t<2&&p(e)){await new Promise(e=>setTimeout(e,1e3*2**t));continue}throw e}throw u}async function _(e){const t=`${l}${e}`;let o;for(let e=0;e<=2;e++)try{const o=await m(t,{method:"GET",headers:{Authorization:`Bearer ${c}`}});if(!o.ok){if(e<2&&p(null,o.status)){await new Promise(t=>setTimeout(t,1e3*2**e));continue}throw new Error(`Request failed with status ${o.status}`)}const a=await o.arrayBuffer();return{data:Buffer.from(a),contentType:o.headers.get("content-type")??"application/octet-stream"}}catch(t){if(o=t,e<2&&p(t)){await new Promise(t=>setTimeout(t,1e3*2**e));continue}throw t}throw o}function h(e){return{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}async function b(e,t=3e4,o=1e3){const a=Date.now();for(;Date.now()-a<t;){const t=await g("GET",`/v1/jobs/${e}`),a=t.status;if("completed"===a||"failed"===a||"cancelled"===a)return{status:a,result_ref:t.result_ref,error:t.error};await new Promise(e=>setTimeout(e,o))}return{status:"timeout"}}const w=new e({name:"analytics-engine",version:"0.4.1",instructions:"# Barivia Mapping Analytics Engine\n\nYou have access to a mapping (Self-Organizing Map) analytics platform that projects high-dimensional data onto a 2D grid, revealing clusters, gradients, and anomalies.\n\n## Typical workflow\n\n1. **Upload** → `datasets(action=upload)` — ingest a CSV\n2. **Preview** → `datasets(action=preview)` — inspect columns, detect cyclics/datetimes\n3. **Train** → `jobs(action=train_map, dataset_id=...)` — returns a job_id; poll `jobs(action=status, job_id=...)` until completed\n4. **Analyze** → `results(action=get)` + `analyze` — visualize and interpret the map\n5. **Export / Inference** → `inference` (predict/enrich/compare/report)\n\n## Tool categories\n\n| Category | Tools |\n|----------|-------|\n| Data management | `datasets` (upload/preview/list/subset/delete) |\n| Jobs & training | `jobs` (train_map/status/list/compare/cancel/delete) |\n| Results | `results` (get/recolor/download/export/transition_flow), `analyze` |\n| Projection | `project` (expression/values) |\n| Inference & export | `inference` (predict/enrich/compare/report) |\n| Account | `account` (status/request_compute/compute_status/release_compute/history/add_funds) |\n| Utility | `guide_barsom_workflow`, `explore_map`, `send_feedback` |\n\n## Async job pattern\n\nMost operations are async. Every tool that submits a job either:\n- **Auto-polls** (project, results(recolor/transition_flow), inference) — waits up to the action-specific timeout then returns or gives a job_id for manual polling\n- **Returns immediately** (jobs(action=train_map)) — always requires manual `jobs(action=status, job_id=...)` polling\n\n**Do not tell the user a job failed because it is still running.** If a tool returns a job_id, poll `jobs(action=status)` every 10–15 seconds. Map training takes 30s–10min depending on grid size and dataset.\n\n## Credit and cost\n\nJobs consume compute credits. Inference jobs are priced the same as projection jobs. Check `account(action=status)` to see the remaining balance and queue depth before starting large jobs.\n\n## Key constraints\n\n- For parameter guidance (grid, epochs, presets), use `training_guidance` or `prepare_training` — do not guess.\n- Column names are case-sensitive; always match exactly what `datasets(action=preview)` returns\n- Numeric columns only (maps do not support text/categorical directly — encode first)\n- `predict` input columns must exactly match the features used during training"}),y=import.meta.dirname??s.dirname(new URL(import.meta.url).pathname);async function v(e){const t=[s.join(y,"views","src","views",e,"index.html"),s.join(y,"views",e,"index.html"),s.join(y,"..","dist","views","src","views",e,"index.html")];for(const e of t)try{return await i.readFile(e,"utf-8")}catch{continue}return null}const $="ui://barsom/map-explorer",x="ui://barsom/data-preview",j="ui://barsom/training-monitor";a(w,$,$,{mimeType:r},async()=>{const e=await v("map-explorer");return{contents:[{uri:$,mimeType:r,text:e??"<html><body>Map Explorer view not built yet. Run: npm run build:views</body></html>"}]}}),a(w,x,x,{mimeType:r},async()=>{const e=await v("data-preview");return{contents:[{uri:x,mimeType:r,text:e??"<html><body>Data Preview view not built yet.</body></html>"}]}}),a(w,j,j,{mimeType:r},async()=>{const e=await v("training-monitor");return{contents:[{uri:j,mimeType:r,text:e??"<html><body>Training Monitor view not built yet.</body></html>"}]}}),n(w,"explore_map",{title:"Explore Map",description:"Interactive map explorer dashboard. Opens an inline visualization where you can toggle features, click nodes, and export figures. Use this after results(action=get) for a richer, interactive exploration experience. Falls back to text+image on hosts that don't support MCP Apps.",inputSchema:{job_id:o.string().describe("Job ID of a completed map training job")},_meta:{ui:{resourceUri:$}}},async({job_id:e})=>{const t=await g("GET",`/v1/results/${e}`),o=t.summary??{},a=[];a.push({type:"text",text:JSON.stringify({job_id:e,summary:o,download_urls:t.download_urls})});const n=o.output_format??"pdf";return await A(a,e,`combined.${n}`),{content:a}}),w.tool("guide_barsom_workflow","Retrieve the Standard Operating Procedure (SOP) for the mapping analysis pipeline.\nALWAYS call this tool first if you are unsure of the steps to execute a complete mapping analysis.\nThe workflow explains the exact sequence of tool calls needed: Upload → Preprocess → Train → Wait → Analyze.\nFor parameter hints (grid, epochs, model, etc.), call the training_guidance tool or use the prepare_training prompt before train_map.",{},async()=>({content:[{type:"text",text:"Mapping Analysis Standard Operating Procedure (SOP)\n\nStep 1: Upload Data\n- Use `datasets(action=upload)` with a local `file_path` to your CSV.\n- BEFORE UPLOADING: Clean the dataset to remove NaNs or malformed data.\n- Capture the `dataset_id` returned.\n\nStep 2: Preview & Preprocess\n- Use `datasets(action=preview)` to inspect columns, ranges, and types.\n- Check for skewed columns requiring 'log' or 'sqrt' transforms.\n- Check for cyclical or temporal features (hours, days) requiring `cyclic_features` or `temporal_features` during training.\n\nStep 3: Train the map\n- Call `jobs(action=train_map, dataset_id=...)` with the `dataset_id`.\n- Carefully select columns to include (start with 5-10).\n- Assign `feature_weights` (especially for categorical data with natural hierarchies).\n- Wait for the returned `job_id`.\n- For projection and inference, use the same job_id from train_som (or the new job_id returned by recolor/project when applicable).\n\nStep 4: Wait for Completion (ASYNC POLLING)\n- Use `jobs(action=status, job_id=...)` every 10-15 seconds.\n- Wait until status is \"completed\". DO NOT assume failure before 3 minutes (or longer for large grids).\n- If it fails, read the error message and adjust parameters (e.g., reduce grid size, fix column names).\n\nStep 5: Analyze and Export\n- Once completed, use `results(action=get, job_id=...)` to get the map and metrics (Quantization Error, Topographic Error).\n- Use `analyze(action=component_planes)` or `analyze(action=clusters)` to interpret the results."}]})),w.tool("datasets",'Manage datasets: upload, preview, list, subset, or delete.\n\n| Action | Use when |\n|--------|----------|\n| upload | You have a CSV file to add — do this first |\n| preview | Before jobs(action=train_map) — always preview an unfamiliar dataset to spot cyclics, nulls, column types |\n| list | Finding dataset IDs for train_map, preview, or subset — see all available datasets |\n| subset | Creating a filtered/sliced view without re-uploading the full CSV |\n| delete | Cleaning up after experiments or freeing the dataset slot |\n\naction=upload: Prefer file_path over csv_data so the MCP reads the file directly. Returns dataset ID. Then use datasets(action=preview) before jobs(action=train_map).\nBEFORE UPLOADING: Ensure data has no NaNs, missing values, or formats that can\'t be handled. Categorical features should be numerically encoded or weighted.\naction=preview: Show columns, stats, sample rows, cyclic/datetime detections. ALWAYS preview before jobs(action=train_map) on an unfamiliar dataset.\naction=list: List all datasets belonging to the organisation with id, name, rows, cols, created_at (use created_at or id to distinguish datasets with the same name).\naction=subset: Create a new dataset from a subset of an existing one. Requires name and at least one of row_range or filters.\n - row_range: [start, end] 1-based inclusive (e.g. [1, 2000] for first 2000 rows)\n - filters: array of conditions, ALL must match (AND logic). Each: { column, op, value }.\n Operators: eq, ne, in, gt, lt, gte, lte, between\n Examples: { column: "region", op: "eq", value: "Europe" } | { column: "age", op: "between", value: [18, 65] }\n - Combine row_range + filters to slice both rows and values.\n - Single filter object is also accepted (auto-wrapped).\naction=delete: Remove a dataset and all S3 data permanently.\n\nBEST FOR: Tabular numeric data. CSV with header required.\nNOT FOR: Real-time data streams or binary files — upload a snapshot CSV instead.\nESCALATION: If upload fails with column errors, open the file locally and verify the header row. If preview shows unexpected nulls, the user must clean the CSV before training.',{action:o.enum(["upload","preview","list","subset","delete"]).describe("upload: add CSV; preview: inspect columns/stats; list: see all datasets; subset: create filtered subset; delete: remove dataset"),name:o.string().optional().describe("Dataset name (required for action=upload and subset)"),file_path:o.string().optional().describe("Path to local CSV (for upload; prefer over csv_data)"),csv_data:o.string().optional().describe("Inline CSV string (for upload; use for small data)"),dataset_id:o.string().optional().describe("Dataset ID (required for preview, subset, and delete)"),n_rows:o.number().int().optional().default(5).describe("Sample rows to return (preview only)"),row_range:o.tuple([o.number().int(),o.number().int()]).optional().describe("For subset: [start, end] 1-based inclusive row range (e.g. [1, 2000])"),filters:o.preprocess(e=>null==e||Array.isArray(e)?e:"object"==typeof e&&null!==e&&"column"in e?[e]:e,o.array(o.object({column:o.string(),op:o.enum(["eq","ne","in","gt","lt","gte","lte","between"]),value:o.union([o.string(),o.number(),o.array(o.union([o.string(),o.number()]))])})).optional().describe("For subset: filter conditions (AND logic). Single object or array. ops: eq, ne, in, gt, lt, gte, lte, between. Examples: { column: 'temp', op: 'between', value: [15, 30] }, { column: 'region', op: 'eq', value: 'Europe' }")),filter:o.object({column:o.string(),op:o.enum(["eq","ne","in","gt","lt","gte","lte","between"]),value:o.union([o.string(),o.number(),o.array(o.union([o.string(),o.number()]))])}).optional().describe("Deprecated — use filters instead. Single filter condition.")},async({action:e,name:t,file_path:o,csv_data:a,dataset_id:n,n_rows:r,row_range:l,filters:c,filter:d})=>{if("upload"===e){if(!t)throw new Error("datasets(upload) requires name");let e;if(o){const t=f(o),a=s.extname(t).toLowerCase();if(".csv"!==a&&".tsv"!==a)throw new Error("Only .csv and .tsv files can be uploaded as datasets.");await g("GET","/v1/system/info");try{e=await i.readFile(t,"utf-8")}catch{throw new Error("File not accessible. Verify the path is correct and readable.")}}else{if(!(a&&a.length>0))throw new Error("datasets(upload) requires file_path or csv_data");e=a}return h(await g("POST","/v1/datasets",e,{"X-Dataset-Name":t,"Content-Type":"text/csv"}))}if("preview"===e){if(!n)throw new Error("datasets(preview) requires dataset_id");const e=await g("GET",`/v1/datasets/${n}/preview?n_rows=${r??5}`),t=e.columns??[],o=e.column_stats??[],a=e.cyclic_hints??[],i=e.sample_rows??[],s=e.datetime_columns??[],l=e.temporal_suggestions??[],c=e=>null==e?"—":Number(e).toFixed(3),d=[`Dataset: ${e.name} (${e.dataset_id})`,`${e.total_rows} rows × ${e.total_cols} columns`,"","Column Statistics:","| Column | Min | Max | Mean | Std | Nulls | Numeric |","|--------|-----|-----|------|-----|-------|---------|"];for(const e of o)d.push(`| ${e.column} | ${c(e.min)} | ${c(e.max)} | ${c(e.mean)} | ${c(e.std)} | ${e.null_count??0} | ${!1!==e.is_numeric?"yes":"no"} |`);if(a.length>0){d.push("","Detected Cyclic Feature Hints:");for(const e of a)d.push(` • ${e.column} — period=${e.period} (${e.reason})`)}if(s.length>0){d.push("","Detected Datetime Columns:");for(const e of s){const t=(e.detected_formats??[]).map(e=>`${e.format} — ${e.description} (${(100*e.match_rate).toFixed(0)}% match)`).join("; ");d.push(` • ${e.column}: sample="${e.sample}" → ${t}`)}}if(l.length>0){d.push("","Temporal Feature Suggestions (require user approval):");for(const e of l)d.push(` • Columns: ${e.columns.join(" + ")} → format: "${e.format}"`),d.push(` Available components: ${e.available_components.join(", ")}`)}if(i.length>0){d.push("",`Sample Rows (first ${i.length}):`),d.push(`| ${t.join(" | ")} |`),d.push(`| ${t.map(()=>"---").join(" | ")} |`);for(const e of i)d.push(`| ${t.map(t=>String(e[t]??"")).join(" | ")} |`)}return{content:[{type:"text",text:d.join("\n")}]}}if("subset"===e){if(!n)throw new Error("datasets(subset) requires dataset_id");if(!t)throw new Error("datasets(subset) requires name");const e=c??(d?[d]:void 0);if(void 0===l&&void 0===e)throw new Error("datasets(subset) requires at least one of row_range or filters");const o={name:t};void 0!==l&&(o.row_range=l),void 0!==e&&(o.filters=e);return h(await g("POST",`/v1/datasets/${n}/subset`,o))}if("list"===e){return h(await g("GET","/v1/datasets"))}if("delete"===e){if(!n)throw new Error("datasets(delete) requires dataset_id");return h(await g("DELETE",`/v1/datasets/${n}`))}throw new Error("Invalid action")});function E(e,t,o,a){const n=t.output_format??"pdf";if("transition_flow"===e){return[`transition_flow_lag${t.lag??1}.${n}`]}if("project_variable"===e){const e=t.variable_name??"variable";return[`projected_${String(e).replace(/[^a-zA-Z0-9_]/g,"_")}.${n}`]}if("derive_variable"===e){const e=t.variable_name??"variable";return[`projected_${String(e).replace(/[^a-zA-Z0-9_]/g,"_")}.${n}`]}const r=t.features??[],i=`combined.${n}`,s=`umatrix.${n}`,l=`hit_histogram.${n}`,c=`correlation.${n}`,d=r.map((e,t)=>`component_${t+1}_${e.replace(/[^a-zA-Z0-9_]/g,"_")}.${n}`),u=[i,s,l,c,...d];if(void 0===o||"default"===o)return a?u:[i];if("combined_only"===o)return[i];if("all"===o)return u;if(Array.isArray(o)){const e={combined:i,umatrix:s,hit_histogram:l,correlation:c};return r.forEach((t,o)=>{e[`component_${o+1}`]=d[o]}),o.map(t=>{const o=t.trim().toLowerCase();return e[o]?e[o]:t.includes(".")?t:null}).filter(e=>null!=e)}return[i]}function S(e){return e.endsWith(".pdf")?"application/pdf":e.endsWith(".svg")?"image/svg+xml":"image/png"}async function A(e,t,o){if(o.endsWith(".pdf")||o.endsWith(".svg"))e.push({type:"text",text:`${o} is ready (vector format — not inlineable). Use get_result_image(job_id="${t}", filename="${o}") to download it.`});else try{const{data:a}=await _(`/v1/results/${t}/image/${o}`);e.push({type:"image",data:a.toString("base64"),mimeType:S(o),annotations:{audience:["user"],priority:.8}})}catch{e.push({type:"text",text:`(${o} not available for inline display)`})}}w.tool("results",'Retrieve, recolor, download, export, or run temporal flow on a completed map job.\n\n| Action | Use when | Sync/Async |\n|--------|----------|------------|\n| get | First look after training — combined view + quality metrics | instant |\n| export | Learning curve, raw weights, or per-node stats | instant |\n| download | Saving figures to a local folder | instant |\n| recolor | Changing colormap or output format without retraining | async (~10–30s) |\n| transition_flow | Temporal dynamics on time-ordered data | async (~30–60s) |\n\nONLY call this after jobs(action=status) returns "completed".\nESCALATION: If job not found, verify job_id. If "job not complete", poll with jobs(action=status).\n\naction=get: Returns text summary with quality metrics and inline images.\n - figures: omit = combined only. "all" = all plots. Array = specific logical names (combined, umatrix, hit_histogram, learning_curve, correlation, component_1..N).\n - include_individual: if true (and figures omitted), inlines every component plane.\n - After recolor or project, use the job_id returned by that operation to get the new artifacts, not the original training job_id.\n - After showing results, guide the user: QE interpretation, whether to retrain, which features to explore.\n - METRIC INTERPRETATION: QE<1.5 good | TE<0.1 good | Explained variance>0.7 good | Silhouette higher=better.\n\naction=export: Structured data exports. Use export_type= to choose what to export.\n - export_type=training_log: learning curve sparklines + plot. Diagnose convergence/plateau/divergence.\n - export_type=weights: full weight matrix + normalization stats. For external analysis or custom viz.\n - export_type=nodes: per-node hit count + feature stats. Profile clusters and operating modes.\n\naction=download: Save figures to disk. Use so user can open, share, or version files locally.\n - folder: e.g. "." or "./results". Interpreted relative to the client\'s current working directory (or workspace). If job has a label, a named subfolder may be created.\n - figures: "all" (default) or array of filenames.\n - include_json: also save summary.json.\n\naction=recolor: Change colormap or output format — no retraining. Returns a new job_id; auto-polls 60s.\n AFTER: use results(action=get, job_id=NEW_JOB_ID).\n Colormaps: viridis, plasma, inferno, magma, cividis, turbo, coolwarm, balance, RdBu, Spectral.\n\naction=transition_flow: Temporal state transition arrows on the map grid. Requires time-ordered data.\n - 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).\n - To persist the figure: results(action=download, job_id=<returned_job_id>).\n - lag=1 (default): immediate next-step | lag=N: N-step horizon (e.g. 24 for daily cycles in hourly data).\n - min_transitions: filter noisy arrows. Increase for large datasets.\n BEFORE calling: confirm rows are in chronological order.\nNOT FOR: Jobs that haven\'t completed. Use jobs(action=status) to check first.',{action:o.enum(["get","recolor","download","export","transition_flow"]).describe("get: inline results + metrics; recolor: new colormap/format (async); download: save to disk; export: structured data (training_log/weights/nodes); transition_flow: temporal dynamics (async)"),job_id:o.string().describe("Job ID of a completed job"),figures:o.union([o.enum(["default","combined_only","all","images"]),o.array(o.string())]).optional().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."),include_individual:o.boolean().optional().default(!1).describe("action=get only: if true and figures omitted, inline each component plane, umatrix, hit histogram"),include_json:o.boolean().optional().default(!1).describe("action=download only: also save summary.json and JSON artifacts"),folder:o.string().optional().describe("action=download: directory path to save files (e.g. '.' or './results'). Relative to the client's current working directory (or workspace)."),colormap:o.string().optional().describe("action=recolor: colormap name (default: coolwarm). action=transition_flow: U-matrix background colormap (default: grays). Examples: viridis, plasma, balance, RdBu."),output_format:o.enum(["png","pdf","svg"]).optional().default("png").describe("action=recolor / transition_flow: output image format (default: png)"),output_dpi:o.enum(["standard","retina","print"]).optional().default("retina").describe("Resolution: standard (1x), retina (2x, default), print (4x)"),recolor_figures:o.array(o.string()).optional().describe("action=recolor: which figures to re-render (default: [combined]). Options: combined, umatrix, hit_histogram, correlation, component_1..N"),export_type:o.enum(["training_log","weights","nodes"]).optional().describe("action=export: training_log=learning curve+sparklines; weights=full weight matrix; nodes=per-node stats"),lag:o.number().int().min(1).optional().default(1).describe("action=transition_flow: step lag (default 1 = consecutive rows). Use larger for periodic analysis (e.g. 24 for daily in hourly data)."),min_transitions:o.number().int().min(1).optional().describe("action=transition_flow: minimum transition count to draw an arrow (default: auto). Increase to filter noise."),top_k:o.number().int().min(1).optional().default(10).describe("action=transition_flow: number of top-flow nodes in statistics (default 10)")},async({action:e,job_id:t,figures:o,include_individual:a,include_json:n,folder:r,colormap:l,output_format:c,output_dpi:d,recolor_figures:u,export_type:p,lag:m,min_transitions:h,top_k:w})=>{const y={standard:1,retina:2,print:4};if("get"===e){const e=await g("GET",`/v1/results/${t}`),n=e.summary??{},r=null!=e.label&&""!==e.label?String(e.label):null,i=r?`Results for ${r} (job_id: ${t})`:`Results for job_id: ${t}`,s=[],l=new Set,c=n.job_type??"train_som";n.output_format;if("transition_flow"===c){const e=n.lag??1,r=n.flow_stats??{};s.push({type:"text",text:[`Transition Flow ${i}`,`Parent map job: ${n.parent_job_id??"N/A"} | Lag: ${e} | Samples: ${n.n_samples??0}`,"","Flow Statistics:",` Mean flow magnitude: ${void 0!==r.mean_magnitude?Number(r.mean_magnitude).toFixed(4):"N/A"}`,` Max flow magnitude: ${void 0!==r.max_magnitude?Number(r.max_magnitude).toFixed(4):"N/A"}`,` Nodes with flow: ${r.n_nodes_with_flow??"N/A"}`,"","Arrows show net directional drift. Long/bright = frequent transitions. Short = stable states.","Background = U-matrix. Use results(action=transition_flow, lag=N) with larger N for longer-term structure."].join("\n")});for(const e of E(c,n,o,a))await A(s,t,e),l.add(e)}else if("project_variable"===c){const e=n.variable_name??"variable",r=n.aggregation??"mean",d=n.variable_stats??{};s.push({type:"text",text:[`Projected Variable: ${e} (${r}) — ${i}`,`Parent map job: ${n.parent_job_id??"N/A"} | Samples: ${n.n_samples??0}`,"",`Variable Statistics (per-node ${r}):`,` Min: ${void 0!==d.min?Number(d.min).toFixed(3):"N/A"}`,` Max: ${void 0!==d.max?Number(d.max).toFixed(3):"N/A"}`,` Mean: ${void 0!==d.mean?Number(d.mean).toFixed(3):"N/A"}`,` Nodes with data: ${d.n_nodes_with_data??"N/A"}`].join("\n")});for(const e of E(c,n,o,a))await A(s,t,e),l.add(e)}else{const e=n.grid??[0,0],r=n.features??[],d=n.epochs,u=Array.isArray(d)?0===d[1]?`${d[0]} ordering only`:`${d[0]} ordering + ${d[1]} convergence`:String(d??"N/A"),p=e=>null!=e?Number(e).toFixed(4):"N/A",m=n.training_duration_seconds,f=n.ordering_errors,g=[`Map training ${i}`,`Grid: ${e[0]}×${e[1]} | Features: ${n.n_features??0} | Samples: ${n.n_samples??0}`,`Model: ${n.model??"SOM"} | Epochs: ${u}`,`Periodic: ${n.periodic??!0} | Normalize: ${n.normalize??"auto"}`,void 0!==n.sigma_f?`Sigma_f: ${n.sigma_f}`:"",void 0!==m?`Training duration: ${m}s`:"","","Quality Metrics:",` Quantization Error: ${p(n.quantization_error)} (lower is better)`,` Topographic Error: ${p(n.topographic_error)} (<0.1 is good)`,` Explained Variance: ${p(n.explained_variance)} (>0.7 is good)`,` Silhouette Score: ${p(n.silhouette)} (higher is better)`,` Davies-Bouldin: ${p(n.davies_bouldin)} (lower is better)`,` Calinski-Harabasz: ${p(n.calinski_harabasz)} (higher is better)`,f&&f.length>0?` Final ordering QE: ${f.at(-1)?.toFixed(4)} (use results(action=export, export_type=training_log) for full curve)`:"","",`Features: ${r.join(", ")}`,n.selected_columns?`Selected columns: ${n.selected_columns.join(", ")}`:"",n.transforms?`Transforms: ${Object.entries(n.transforms).map(([e,t])=>`${e}=${t}`).join(", ")}`:"","","Next: analyze(job_id) for deeper insights. results(action=export, export_type=training_log) for learning curve."].filter(e=>""!==e).join("\n");s.push({type:"text",text:g});const _=E(c,n,o,a);for(const e of _)await A(s,t,e),l.add(e)}const d=n.files??[],u=e=>e.endsWith(".png")||e.endsWith(".svg")||e.endsWith(".pdf");for(const e of d)if(u(e)&&!l.has(e))await A(s,t,e);else if(e.endsWith(".json")&&"summary.json"!==e){const t="weights.json"===e?"Use results(action=export, export_type=weights) for full weight matrix.":"node_stats.json"===e?"Use results(action=export, export_type=nodes) for per-node statistics.":"Use results(action=export) for structured data.";s.push({type:"text",text:`${e}: ${t}`})}const p=n.features??[],m=n.job_type??"train_som";if(d.length>0){const e="train_som"===m||"render_variant"===m?`Logical names: combined, umatrix, hit_histogram, correlation, ${p.map((e,t)=>`component_${t+1}`).join(", ")}. `:"";s.push({type:"text",text:`Available: ${d.join(", ")}. ${e}Use results(action=get, figures=[...]) for specific plots or analyze(job_id) for analysis views.`})}return{content:s}}if("export"===e){if(!p)throw new Error("results(export) requires export_type param: training_log, weights, or nodes");if("training_log"===p){const e=await g("GET",`/v1/results/${t}/training-log`),o=e.ordering_errors??[],a=e.convergence_errors??[],n=e.training_duration_seconds,r=e.epochs,i=e=>{if(0===e.length)return"(no data)";const t=Math.min(...e),o=Math.max(...e)-t||1;return e.map(e=>"▁▂▃▄▅▆▇█"[Math.min(7,Math.floor((e-t)/o*7))]).join("")},s=[`Training Log — Job ${t}`,`Grid: ${JSON.stringify(e.grid)} | Model: ${e.model??"SOM"}`,"Epochs: "+(r?`[${r[0]} ordering, ${r[1]} convergence]`:"N/A"),"Duration: "+(null!=n?`${n}s`:"N/A"),`Features: ${e.n_features??"?"} | Samples: ${e.n_samples??"?"}`,"",`Ordering Phase (${o.length} epochs):`,` Start QE: ${o[0]?.toFixed(4)??"—"} → End QE: ${o.at(-1)?.toFixed(4)??"—"}`,` Curve: ${i(o)}`];a.length>0?s.push("",`Convergence Phase (${a.length} epochs):`,` Start QE: ${a[0]?.toFixed(4)??"—"} → End QE: ${a.at(-1)?.toFixed(4)??"—"}`,` Curve: ${i(a)}`):0===(r?.[1]??0)&&s.push("","Convergence phase: skipped (epochs[1]=0)");const l=e.quantization_error,c=e.explained_variance;null!=l&&s.push("",`Final QE: ${l.toFixed(4)} | Explained Variance: ${(c??0).toFixed(4)}`);const d=[{type:"text",text:s.join("\n")}];let u=!1;for(const e of["png","svg"])try{const{data:o}=await _(`/v1/results/${t}/image/learning_curve.${e}`),a=S(`learning_curve.${e}`);d.push({type:"image",data:o.toString("base64"),mimeType:a,annotations:{audience:["user"],priority:.8}}),u=!0;break}catch{continue}return u||d.push({type:"text",text:'(learning curve plot not available — use results(action=download, figures=["learning_curve"]) to save as PDF if the job uses output_format=pdf)'}),{content:d}}if("weights"===p){const e=await g("GET",`/v1/results/${t}/weights`),o=e.features??[],a=e.n_nodes??0,n=e.grid??[0,0],r=[`Map weights — Job ${t}`,`Grid: ${n[0]}×${n[1]} | Nodes: ${a} | Features: ${o.length}`,`Features: ${o.join(", ")}`,"","Normalization Stats:"],i=e.normalization_stats??{};for(const[e,t]of Object.entries(i))r.push(` ${e}: mean=${t.mean?.toFixed(4)}, std=${t.std?.toFixed(4)}`);return r.push("","Full weight matrix in JSON below. Use denormalized_weights for original-scale values."),{content:[{type:"text",text:r.join("\n")},{type:"text",text:JSON.stringify(e,null,2)}]}}const e=await g("GET",`/v1/results/${t}/nodes`),o=[...e].sort((e,t)=>(t.hit_count??0)-(e.hit_count??0)).slice(0,10),a=e.filter(e=>0===e.hit_count).length,n=e.reduce((e,t)=>e+(t.hit_count??0),0),r=[`Node Statistics — Job ${t}`,`Total nodes: ${e.length} | Active: ${e.length-a} | Empty: ${a} | Total hits: ${n}`,"","Top 10 Most Populated Nodes:","| Node | Coords | Hits | Hit% |","|------|--------|------|------|"];for(const e of o){if(0===e.hit_count)break;const t=e.coords,o=(e.hit_count/n*100).toFixed(1);r.push(`| ${e.node_index} | (${t?.[0]?.toFixed(1)}, ${t?.[1]?.toFixed(1)}) | ${e.hit_count} | ${o}% |`)}return{content:[{type:"text",text:r.join("\n")},{type:"text",text:`\nFull node statistics JSON:\n${JSON.stringify(e,null,2)}`}]}}if("download"===e){if(!r)throw new Error("results(download) requires folder");const e=await g("GET",`/v1/results/${t}`),a=e.summary??{},l=null!=e.label&&""!==e.label?String(e.label):null,c=a.files??[],d=e=>e.endsWith(".png")||e.endsWith(".svg")||e.endsWith(".pdf");let u;"all"===o||"images"===o||void 0===o?u=n?c:c.filter(d):Array.isArray(o)?(u=o,n&&!u.includes("summary.json")&&(u=[...u,"summary.json"])):u=c.filter(d);let p=f(r);!l||"."!==r&&"./results"!==r&&"results"!==r||(p=s.join(p,l)),await i.mkdir(p,{recursive:!0});const m=[];for(const e of u)try{const{data:o}=await _(`/v1/results/${t}/image/${e}`);await i.writeFile(s.join(p,e),o),m.push(e)}catch{}return{content:[{type:"text",text:m.length>0?`Saved ${m.length} file(s) to ${r}: ${m.join(", ")}`:"No files saved. Check job_id and that the job is completed."}]}}if("recolor"===e){if(!l)throw new Error("results(recolor) requires colormap");const e={colormap:l,figures:u??["combined"],output_format:c??"png",output_dpi:y[d??"retina"]??2},o=(await g("POST",`/v1/results/${t}/render`,e)).id;if("completed"===(await b(o,6e4)).status){const e=[{type:"text",text:`Re-rendered with colormap "${l}". New job_id: ${o}.`}];for(const t of u??["combined"]){const a=c??"png",n=t.includes(".")?t:`${t}.${a}`;await A(e,o,n)}return{content:e}}return{content:[{type:"text",text:`Recolor job ${o} submitted. Poll with jobs(action=status, job_id="${o}"), then results(action=get, job_id="${o}").`}]}}if("transition_flow"===e){const e={lag:m??1,output_format:c??"png"};void 0!==h&&(e.min_transitions=h),void 0!==w&&(e.top_k=w),void 0!==l&&(e.colormap=l),d&&"retina"!==d&&(e.output_dpi=y[d]??2);const o=(await g("POST",`/v1/results/${t}/transition-flow`,e)).id,a=await b(o,12e4);if("completed"===a.status){const e=((await g("GET",`/v1/results/${o}`)).summary??{}).flow_stats??{},a=[{type:"text",text:[`Transition Flow (job: ${o}) | Parent map: ${t} | Lag: ${m??1}`,`Active flow nodes: ${e.active_flow_nodes??"N/A"} | Total transitions: ${e.total_transitions??"N/A"}`,`Mean magnitude: ${void 0!==e.mean_magnitude?Number(e.mean_magnitude).toFixed(4):"N/A"}`].join("\n")}];return await A(a,o,`transition_flow_lag${m??1}.${c??"png"}`),{content:a}}return"failed"===a.status?{content:[{type:"text",text:`Transition flow job ${o} failed: ${a.error??"unknown error"}`}]}:{content:[{type:"text",text:`Transition flow job ${o} submitted. Poll with jobs(action=status, job_id="${o}"), retrieve with results(action=get, job_id="${o}").`}]}}throw new Error("Invalid action")}),w.tool("project",'Project variables onto a trained map — either from a formula expression or a pre-computed values array.\n\n| Action | Use when | Input |\n|--------|----------|-------|\n| expression | Variable can be computed from existing dataset columns (ratio, diff, log-transform, rolling stat) | dataset_id + expression string |\n| values | Variable is externally computed (e.g. revenue from a CRM, anomaly scores from another model) | job_id + values array |\n\nMODES for action=expression:\n- Default (no project_onto_job): add the derived column to the dataset CSV. Available for future jobs(action=train_map) calls.\n- With project_onto_job: compute the column and project it onto the map — returns a visualization.\n\nCOMMON EXPRESSIONS:\n- Ratio: "revenue / cost"\n- Difference: "US10Y - US3M"\n- Log return: "log(close) - log(open)"\n- Z-score: "(volume - rolling_mean(volume, 20)) / rolling_std(volume, 20)"\n- First diff: "diff(consumption)"\n\nSUPPORTED FUNCTIONS: +, -, *, /, ^, log, sqrt, abs, exp, sin, cos, diff(col), rolling_mean(col, w), rolling_std(col, w)\nUse underscore-normalized column names (spaces → underscores: e.g. fixed_acidity not "fixed acidity").\n\nCOMMON MISTAKES:\n- action=values: values array must be exactly n_samples long (same count as training CSV rows)\n- action=expression: division by zero → set options.missing="skip"\n- Rolling functions produce NaN for the first (window-1) rows\n\nNOT FOR: Re-training. NOT FOR: Text/categorical data.\nAFTER projecting: use results(action=get) to view the projection plot if a new job_id was returned.',{action:o.enum(["expression","values"]).describe("expression: compute formula from dataset columns (add to dataset or project onto map); values: project a pre-computed numeric array onto the map"),name:o.string().describe("Name for the variable (display label; used for both expression-derived and value-projected variables)"),dataset_id:o.string().optional().describe("action=expression: Dataset ID (source of column data). Required unless project_onto_job handles the dataset."),expression:o.string().optional().describe("action=expression: Math expression referencing column names. Examples: 'revenue / cost', 'log(price)', 'rolling_mean(volume, 20)', 'diff(temperature)'"),project_onto_job:o.string().optional().describe("action=expression: If provided, project the derived variable onto this completed map training job instead of adding to dataset"),options:o.object({missing:o.enum(["skip","zero","interpolate"]).optional().default("skip").describe("Handle NaN/missing values (default: skip)"),window:o.number().int().optional().describe("Default rolling window size (default 20)"),description:o.string().optional().describe("Human-readable description of the variable")}).optional().describe("action=expression: evaluation options"),job_id:o.string().optional().describe("action=values: Job ID of a completed map training job to project onto"),variable_name:o.string().optional().describe("Deprecated — use name. Display name for the variable (alias for name; name takes precedence)."),values:o.array(o.number()).optional().describe("action=values: Pre-computed values — one per training sample, in original CSV row order. Length must match n_samples exactly."),aggregation:o.enum(["mean","median","sum","min","max","std","count"]).optional().default("mean").describe("How to aggregate values per map node when projecting (default: mean). Use sum for totals, max for peaks, count for frequencies."),output_format:o.enum(["png","pdf","svg"]).optional().default("png"),output_dpi:o.enum(["standard","retina","print"]).optional().default("retina"),colormap:o.string().optional().describe("Colormap for projection plot (default: coolwarm). Examples: viridis, plasma, RdBu, Spectral.")},async({action:e,name:t,dataset_id:o,expression:a,project_onto_job:n,options:r,job_id:i,variable_name:s,values:l,aggregation:c,output_format:d,output_dpi:u,colormap:p})=>{const m={standard:1,retina:2,print:4},f=t||s||"variable";if("values"===e){if(!i)throw new Error("project(values) requires job_id");if(!l||0===l.length)throw new Error("project(values) requires values array");const e={variable_name:f,values:l,aggregation:c??"mean",output_format:d??"png"};u&&"retina"!==u&&(e.output_dpi=m[u]??2),p&&(e.colormap=p);const t=(await g("POST",`/v1/results/${i}/project`,e)).id,o=await b(t);if("completed"===o.status){const e=(await g("GET",`/v1/results/${t}`)).summary??{},o=e.variable_stats??{},a=[{type:"text",text:[`Projected Variable: ${f} (${c??"mean"}) — job: ${t}`,`Parent map: ${i} | Samples: ${e.n_samples??0}`,`Min: ${void 0!==o.min?Number(o.min).toFixed(3):"N/A"} | Max: ${void 0!==o.max?Number(o.max).toFixed(3):"N/A"} | Mean: ${void 0!==o.mean?Number(o.mean).toFixed(3):"N/A"}`,`Nodes with data: ${o.n_nodes_with_data??"N/A"}`].join("\n")}];return await A(a,t,`projected_${f.replace(/[^a-zA-Z0-9_]/g,"_")}.${e.output_format??d??"png"}`),{content:a}}return"failed"===o.status?{content:[{type:"text",text:`project(values) job ${t} failed: ${o.error??"unknown error"}`}]}:{content:[{type:"text",text:`project(values) job ${t} submitted. Poll with jobs(action=status, job_id="${t}"), retrieve with results(action=get, job_id="${t}").`}]}}if(!a)throw new Error("project(expression) requires expression");if(n){const e={name:f,expression:a,aggregation:c??"mean",output_format:d??"png"};o&&(e.dataset_id=o),r&&(e.options=r),u&&"retina"!==u&&(e.output_dpi=m[u]??2),p&&(e.colormap=p);const t=(await g("POST",`/v1/results/${n}/derive`,e)).id,i=await b(t);if("completed"===i.status){const e=(await g("GET",`/v1/results/${t}`)).summary??{},o=e.variable_stats??{},r=[{type:"text",text:[`Derived Variable Projected: ${f} — job: ${t}`,`Expression: ${a} | Parent map: ${n} | Aggregation: ${c??"mean"}`,`Min: ${void 0!==o.min?Number(o.min).toFixed(3):"N/A"} | Max: ${void 0!==o.max?Number(o.max).toFixed(3):"N/A"} | Mean: ${void 0!==o.mean?Number(o.mean).toFixed(3):"N/A"}`,`Nodes with data: ${o.n_nodes_with_data??"N/A"}`,e.nan_count?`NaN values: ${e.nan_count}`:""].filter(Boolean).join("\n")}];return await A(r,t,`projected_${f.replace(/[^a-zA-Z0-9_]/g,"_")}.${e.output_format??d??"pdf"}`),{content:r}}return"failed"===i.status?{content:[{type:"text",text:`project(expression) job ${t} failed: ${i.error??"unknown error"}`}]}:{content:[{type:"text",text:`project(expression) job ${t} submitted. Poll with jobs(action=status, job_id="${t}"), retrieve with results(action=get, job_id="${t}").`}]}}if(!o)throw new Error("project(expression) without project_onto_job requires dataset_id");const _={name:f,expression:a};r&&(_.options=r);const h=(await g("POST",`/v1/datasets/${o}/derive`,_)).id,w=await b(h);if("completed"===w.status){const e=(await g("GET",`/v1/results/${h}`)).summary??{};return{content:[{type:"text",text:[`Derived column "${f}" added to dataset ${o}`,`Expression: ${a} | Rows: ${e.n_rows??"?"}`,e.nan_count?`NaN values: ${e.nan_count}`:"",`Min: ${e.min??"?"} | Max: ${e.max??"?"} | Mean: ${e.mean??"?"}`,"Column now available. Use datasets(action=preview) to verify, or include in jobs(action=train_map) via the 'columns' parameter."].filter(Boolean).join("\n")}]}}return"failed"===w.status?{content:[{type:"text",text:`project(expression) job ${h} failed: ${w.error??"unknown error"}`}]}:{content:[{type:"text",text:`project(expression) job ${h} submitted. Poll with jobs(action=status, job_id="${h}").`}]}}),w.tool("account","Manage your Barivia account — check plan/license info, request cloud burst compute, view billing history.\n\n| Action | Use when |\n|--------|----------|\n| status | Before large jobs — see plan tier, GPU availability, queue depth, training time estimates, credit balance |\n| request_compute | Upgrading to cloud burst (required for large grids or GPU). Leave tier blank to list options. |\n| compute_status | Checking if a burst lease is active and how much time remains |\n| release_compute | Manually terminating an active lease to stop billing |\n| history | Viewing recent compute leases and credit spend |\n| add_funds | Getting instructions to add credits |\n\naction=status: Returns plan tier, compute class (CPU/GPU), usage limits, live queue state, training time estimates, and credit balance.\n Use BEFORE large jobs to check GPU availability and estimate wait time.\naction=request_compute: Provisions an ephemeral cloud burst EC2 instance. Data is in shared R2 — no re-upload needed. Wait ~3 min after requesting before submitting jobs.\nNOT FOR: Training itself — use jobs(action=train_map). This tool only manages the account and compute lease.",{action:o.enum(["status","request_compute","compute_status","release_compute","history","add_funds"]).describe("status: plan/license/queue info; request_compute: provision burst; compute_status: check active lease; release_compute: stop lease; history: recent compute usage; add_funds: instructions"),tier:o.string().optional().describe("action=request_compute: tier ID (e.g. cpu-8, gpu-t4). Omit to list options."),duration_minutes:o.number().optional().describe("action=request_compute: lease duration in minutes (default: 60)"),limit:o.number().optional().describe("action=history: number of records to return (default: 10)")},async({action:e,tier:t,duration_minutes:o,limit:a})=>{if("status"===e){const e=await g("GET","/v1/system/info"),t=e.plan??{},o=e.backend??{},a=e.status??{},n=e.training_time_estimates_seconds??{},r=e.worker_topology??{},i=t.gpu_enabled??e.gpu_available??!1?o.gpu_model?`GPU (${o.gpu_model}${o.gpu_vram_gb?`, ${o.gpu_vram_gb}GB`:""})`:"GPU":"CPU only",s=e=>-1===e||"-1"===e?"unlimited":String(e??"?"),l=await g("GET","/v1/compute/history?limit=5").catch(()=>null),c=await g("GET","/v1/compute/lease").catch(()=>null),d=[`Plan: ${String(t.tier??"unknown").charAt(0).toUpperCase()}${String(t.tier??"unknown").slice(1)} | Compute: ${i}`,` Concurrency: ${t.max_concurrent_jobs??"?"} jobs | Datasets: ${s(t.max_datasets)} (${s(t.max_dataset_rows)} rows each)`,` Monthly Jobs: ${s(t.max_monthly_jobs)} | Grid Size: ${s(t.max_grid_size)} | Features: ${s(t.max_features)}`];l&&d.push(` Credits: $${(l.credit_balance_cents/100).toFixed(2)} remaining`),o.memory_gb&&d.push(` Backend Memory: ${o.memory_gb} GB`),c&&c.lease_id&&d.push("",`Active Burst Lease: ${c.tier} | ${Math.round(c.time_remaining_ms/6e4)} min left`);const u=Number(a.running_jobs??e.running_jobs??0),p=Number(a.pending_jobs??e.pending_jobs??0),m=Number(n?.total||0);if(d.push("",`Live Queue: ${u} running | ${p} pending | ~${Math.round((p+1)*m/60)} min wait`),void 0!==r.num_workers&&d.push(`Workers: ${r.num_workers}×${r.threads_per_worker} threads`),Object.keys(n).length>0){d.push("","Training Time Estimates:");for(const[e,t]of Object.entries(n))"formula"!==e&&d.push(` ${e}: ~${t}s`)}return{content:[{type:"text",text:d.join("\n")}]}}if("request_compute"===e){if(!t)return{content:[{type:"text",text:"Available Compute Tiers:\nCPU Tiers:\n cpu-8: 16 vCPUs, 32 GB RAM (~$0.20/hr)\n cpu-16: 32 vCPUs, 64 GB RAM (~$0.20/hr)\n cpu-24: 48 vCPUs, 96 GB RAM (~$0.28/hr)\n cpu-32: 64 vCPUs, 128 GB RAM (~$0.42/hr)\n cpu-48: 96 vCPUs, 192 GB RAM (~$0.49/hr)\nGPU Tiers:\n gpu-t4: 8 vCPUs, 32 GB, T4 16GB VRAM (~$0.22/hr)\n gpu-t4x: 16 vCPUs, 64 GB, T4 16GB VRAM (~$0.36/hr)\n gpu-t4xx: 32 vCPUs, 128 GB, T4 16GB VRAM (~$0.27/hr)\n gpu-l4: 8 vCPUs, 32 GB, L4 24GB VRAM (~$0.41/hr)\n gpu-l4x: 16 vCPUs, 64 GB, L4 24GB VRAM (~$0.37/hr)\n gpu-a10: 8 vCPUs, 32 GB, A10G 24GB VRAM (~$0.51/hr)\n gpu-a10x: 16 vCPUs, 64 GB, A10G 24GB VRAM (~$0.52/hr)"}]};const e=await g("POST","/v1/compute/lease",{tier:t,duration_minutes:o}),a="postpaid"===e.billing_mode?`Billing: Postpaid (usage logged, billed retrospectively)\nAccrued Balance: $${(e.credit_balance_cents/100).toFixed(2)}`:`Credits Remaining After Reserve: $${(e.credit_balance_cents/100).toFixed(2)}`;return{content:[{type:"text",text:`Compute Lease Requested:\nLease ID: ${e.lease_id}\nStatus: ${e.status}\nEstimated Wait: ${e.estimated_wait_minutes} minutes\nEstimated Cost: $${(e.estimated_cost_cents/100).toFixed(2)}\n${a}\n\nIMPORTANT: Cloud burst active. Data is pulled from shared Cloudflare R2, so you do NOT need to re-upload datasets. Just wait ~3 minutes and check status.`}]}}if("compute_status"===e){const e=await g("GET","/v1/compute/lease");return"none"!==e.status&&e.lease_id?{content:[{type:"text",text:`Active Compute Lease:\nLease ID: ${e.lease_id}\nStatus: ${e.status}\nTier: ${e.tier} (${e.instance_type})\nTime Remaining: ${Math.round(e.time_remaining_ms/6e4)} minutes`}]}:{content:[{type:"text",text:"No active lease -- running on default Primary Server."}]}}if("release_compute"===e){const e=await g("DELETE","/v1/compute/lease"),t="postpaid"===e.billing_mode?`Cost Logged: $${(e.cost_cents/100).toFixed(2)} (postpaid — billed retrospectively)`:`Credits Deducted: $${((e.credits_deducted||e.cost_cents)/100).toFixed(2)}`;return{content:[{type:"text",text:`Compute Released:\nDuration Billed: ${e.duration_minutes} minutes\n${t}\nBalance: $${(e.final_balance_cents/100).toFixed(2)}\n\nRouting reverted to default Primary Server.`}]}}if("history"===e){const e=await g("GET",`/v1/compute/history?limit=${a||10}`),t=e.history.map(e=>`- ${e.started_at} | ${e.tier} | ${e.duration_minutes} min | $${(e.credits_charged/100).toFixed(2)}`).join("\n");return{content:[{type:"text",text:`Credit Balance: $${(e.credit_balance_cents/100).toFixed(2)}\n\nRecent Usage:\n${t}`}]}}return"add_funds"===e?{content:[{type:"text",text:"To add funds to your account, please visit the Barivia Billing Portal (integration pending) or ask your administrator to use the CLI tool:\nbash scripts/manage-credits.sh add <org_id> <amount_usd>"}]}:{content:[{type:"text",text:`Unknown action: ${e}. Valid: status, request_compute, compute_status, release_compute, history, add_funds.`}]}}),w.prompt("info","Overview of the Barivia Mapping MCP: capabilities, workflow, tools, analysis types, and tips. Use when the user asks what this MCP can do, how to get started, or what the process is.",{},()=>({messages:[{role:"user",content:{type:"text",text:["Inform the user using this overview:","","**What it is:** Barivia MCP connects you to a mapping analytics engine that learns a 2D map from high-dimensional data for visualization, clustering, pattern discovery, and temporal analysis.","","**Core workflow:**","1. **Upload** — `datasets(action=upload)` with a CSV file path or inline data","2. **Preview** — `datasets(action=preview)` to inspect columns, stats, and detect cyclic/datetime fields","3. **Prepare** — use the `prepare_training` prompt for a guided checklist (column selection, transforms, cyclic encoding, feature weights, grid sizing)","4. **Train** — `jobs(action=train_map, dataset_id=...)` with grid size, epochs, model type, and preprocessing options. Use `preset=quick|standard|refined|high_res` for sensible defaults","5. **Monitor** — `jobs(action=status, job_id=...)` to track progress; `results(action=get, job_id=...)` to retrieve figures when complete","6. **Analyze** — `analyze` with various analysis types (see below)","7. **Feedback** — Ask the user if they'd like to submit feedback via `send_feedback` based on their experience.","8. **Iterate** — `results(action=recolor)` to change colormap, `jobs(action=compare)` to compare hyperparameters, `project(action=values)` to overlay new variables","","**Analysis types** (via `analyze`):","- `u_matrix` — cluster boundary distances","- `component_planes` — per-feature heatmaps","- `clusters` — automatic cluster detection and statistics","- `quality_report` — QE, TE, explained variance, trustworthiness, neighborhood preservation","- `hit_histogram` — data density across the map","- `transition_flow` — temporal flow patterns (requires time-ordered data)","","**Data tools:**","- `datasets(action=subset)` — filter by row range, value thresholds (gt/lt/gte/lte), equality, or set membership. Combine row_range + filter","- `project(action=expression)` — create computed columns from expressions (ratios, differences, etc.) or project onto the map","- `project(action=values)` — overlay a pre-computed array onto a trained map","","**Output options:** Format (png/pdf/svg) and colormap (coolwarm, viridis, plasma, inferno, etc.) can be set at training or changed later via results(action=recolor).","","**Key tools:** datasets, jobs (train_map/status/list/...), results, analyze, project, inference, account, guide_barsom_workflow, explore_map.","","**Tips:**","- Always `datasets(action=preview)` before training to understand your data","- Use `account(action=status)` to check GPU availability, queue depth, and plan limits before large jobs","- Start with `preset=quick` for fast iteration, then `refined` for publication quality","- For time-series data, consider `transition_flow` after training","","Keep the reply scannable with headers and bullet points."].join("\n")}}]})),w.prompt("prepare_training","Guided pre-training checklist. Use after uploading a dataset and before calling jobs(action=train_map). Walks through data inspection, column selection, transforms, cyclic/temporal features, weighting, subsetting, and grid sizing.",{dataset_id:o.string().describe("Dataset ID to prepare for training")},async({dataset_id:e})=>{let t=`Please run datasets(action="preview", dataset_id="${e}") first, then call jobs(action=train_map, dataset_id="${e}", ...) with appropriate parameters or preset.`;try{const o=await g("GET",`/v1/docs/prepare_training?dataset_id=${e}`);o.prompt&&(t=o.prompt)}catch(e){}return{messages:[{role:"user",content:{type:"text",text:t}}]}}),w.tool("inference",'Use a trained map as a persistent inference artifact — score new data, enrich the training CSV, compare datasets, or generate a PDF report.\n\n| Action | Use when | Timing |\n|--------|----------|--------|\n| predict | Scoring new/unseen observations against the trained map | 5–120s |\n| enrich | Appending BMU coordinates + cluster_id to the original training CSV | 5–60s |\n| compare | Comparing hit distributions of a second dataset against training (drift, A/B) | 30–120s |\n| report | Get a report manifest (artifact keys + URLs) to build your own report in Quarto/Notebook/script | Immediate |\n\npredict/enrich/compare are async; same polling as train_som: jobs(action=status, job_id=<returned_id>). When complete, get artifacts via results(action=download, job_id=<returned_id>) (e.g. enriched.csv for enrich, report figures for report).\nreport is synchronous: returns a manifest of primitives (figures, cluster_summary, metrics) and presigned URLs so the client composes and renders the report. No fixed PDF template. To download figures or build a PDF, use results(action=download, job_id=<training_job_id>) or the presigned URLs in the manifest.\nNOT FOR: Retraining or changing the map — all actions treat the trained map as frozen.\nESCALATION: If any action returns "missing column", verify column names with datasets(action=preview). Column names are case-sensitive and must match the training feature set exactly.\n\naction=predict: Returns predictions.csv with row_id, bmu_x, bmu_y, bmu_node_index, cluster_id, quantization_error.\n Rows must use the same schema as training (including cyclic-expanded columns, e.g. key_cos, key_sin not raw key). High QE = row is far from its nearest prototype = potential anomaly. Accepts dataset_id OR inline rows (≤500).\naction=enrich: Uses the job\'s training dataset; do not pass dataset_id. Returns enriched.csv — original training CSV + bmu_x, bmu_y, bmu_node_index, cluster_id. When complete, get enriched.csv via results(action=download, job_id=<returned_enrich_job_id>). Filename: enriched.csv.\naction=compare: dataset_id must refer to a dataset with the same feature set as the training data (same column names and preprocessing, including cyclic expansion). Returns density-diff heatmap (positive = B gained, negative = lost). Positive nodes: dataset_b has more density here. Negative: training had more. Near-zero: minimal drift.\naction=report: Returns a report manifest for the given job_id (job must be completed). Includes figure_manifest (logical names → filenames), download_urls for all artifacts, cluster_summary when available, and summary metrics. Stakeholder report PDF (if generated) is available via results(action=download, job_id=<training_job_id>), filename e.g. report.pdf. Use results(action=get) and this manifest to fetch figures/data and render your own PDF (e.g. Quarto, Jupyter). See docs: BUILD_YOUR_OWN_REPORT.md.',{action:o.enum(["predict","enrich","compare","report"]).describe("predict: score new data; enrich: annotate training CSV with BMU coords; compare: drift/cohort diff heatmap; report: manifest of primitives for custom report"),job_id:o.string().describe("Job ID of a completed map training job"),dataset_id:o.string().optional().describe("action=predict/compare: Dataset ID. predict=input data to score; compare=dataset B to compare against training."),rows:o.array(o.record(o.string(),o.number())).optional().describe("action=predict: inline rows to score (max 500). Each object maps feature name → value."),colormap:o.string().optional().describe("action=compare: colormap for diff heatmap (default: balance). action=report: n/a."),output_format:o.enum(["png","pdf","svg"]).optional().default("png").describe("action=compare: output format for heatmap (default: png)"),output_dpi:o.number().int().min(1).max(4).optional().default(2).describe("action=compare: DPI scale (default: 2)"),top_n:o.number().int().min(1).max(50).optional().default(10).describe("action=compare: number of top gained/lost nodes to report (default: 10)")},async({action:e,job_id:t,dataset_id:o,rows:a,colormap:n,output_format:r,output_dpi:i,top_n:s})=>{if("predict"===e){if(!o&&!a)throw new Error("inference(predict) requires dataset_id or rows");const e={};o&&(e.dataset_id=o),a&&(e.rows=a);const n=(await g("POST",`/v1/results/${t}/predict`,e)).id,r=await b(n,12e4);if("completed"===r.status){const e=await g("GET",`/v1/results/${n}`),t=e.summary??{},o=e.download_urls??{};return{content:[{type:"text",text:[`Predictions complete — job: ${n}`,`Rows scored: ${t.n_rows??"?"}`,`Mean QE: ${void 0!==t.mean_qe?Number(t.mean_qe).toFixed(4):"N/A"} | Max QE: ${void 0!==t.max_qe?Number(t.max_qe).toFixed(4):"N/A"}`,`Clusters: ${Object.keys(t.cluster_counts??{}).length}`,"Output: predictions.csv (row_id, bmu_x, bmu_y, bmu_node_index, cluster_id, quantization_error)",o["predictions.csv"]?`Download: ${o["predictions.csv"]}`:""].filter(Boolean).join("\n")}]}}return"failed"===r.status?{content:[{type:"text",text:`inference(predict) job ${n} failed: ${r.error??"unknown error"}`}]}:{content:[{type:"text",text:`inference(predict) job ${n} submitted. Poll with jobs(action=status, job_id="${n}").`}]}}if("enrich"===e){const e=(await g("POST",`/v1/results/${t}/enrich_dataset`,{})).id,o=await b(e,6e4);if("completed"===o.status){const t=await g("GET",`/v1/results/${e}`),o=t.summary??{},a=t.download_urls??{};return{content:[{type:"text",text:[`Enriched dataset ready — job: ${e}`,`Rows: ${o.n_rows??"?"} | Clusters: ${o.n_clusters??"?"}`,"Appended: bmu_x, bmu_y, bmu_node_index, cluster_id",a["enriched.csv"]?`Download: ${a["enriched.csv"]}`:""].filter(Boolean).join("\n")}]}}return"failed"===o.status?{content:[{type:"text",text:`inference(enrich) job ${e} failed: ${o.error??"unknown error"}`}]}:{content:[{type:"text",text:`inference(enrich) job ${e} submitted. Poll with jobs(action=status, job_id="${e}").`}]}}if("compare"===e){if(!o)throw new Error("inference(compare) requires dataset_id (dataset B)");const e={dataset_id:o,output_format:r,output_dpi:i,top_n:s};n&&(e.colormap=n);const a=(await g("POST",`/v1/results/${t}/compare_datasets`,e)).id,l=await b(a,12e4);if("completed"===l.status){const e=(await g("GET",`/v1/results/${a}`)).summary??{},t=e.top_gained_nodes??[],o=e.top_lost_nodes??[],n=e=>` node ${e.bmu_node_index??"?"} [${(e.coords??[0,0]).map(e=>Number(e).toFixed(1)).join(",")}] Δ=${Number(e.density_diff??0).toFixed(4)}`,i=[{type:"text",text:[`Dataset comparison — job: ${a}`,`Dataset A rows: ${e.n_rows_a??"?"} | Dataset B rows: ${e.n_rows_b??"?"}`,"Top gained (B > A):",...t.slice(0,5).map(n),"Top lost (A > B):",...o.slice(0,5).map(n)].join("\n")}];return await A(i,a,`density_diff.${e.output_format??r??"png"}`),{content:i}}return"failed"===l.status?{content:[{type:"text",text:`inference(compare) job ${a} failed: ${l.error??"unknown error"}`}]}:{content:[{type:"text",text:`inference(compare) job ${a} submitted. Poll with jobs(action=status, job_id="${a}").`}]}}const l=await g("GET",`/v1/results/${t}`),c=(l.summary,l.download_urls??{}),d=l.figure_manifest??[],u=l.cluster_summary;return{content:[{type:"text",text:[`Report manifest — job: ${t}`,`Use these artifacts to build your own report (Quarto, Jupyter, script). URLs expire in ${l.expires_in??900}s.`,"","Figures (figure_manifest → download_urls):",...d.slice(0,12).map(e=>` ${e.logical_name} → ${e.filename}`),d.length>12?` ... and ${d.length-12} more`:"","","Key download URLs (use get_result_image or download_urls from results(action=get)):",...Object.keys(c).filter(e=>!e.endsWith(".json")||"cluster_summary.json"===e).slice(0,8).map(e=>` ${e}: ${c[e]?.slice(0,60)}...`),"",u?.length?`Cluster summary: ${u.length} clusters (in response or GET .../cluster_summary).`:"Cluster summary: not available for this job (train with current worker to get it).","","Metrics: in summary (quantization_error, topographic_error, explained_variance, silhouette, etc.) or GET .../quality-report."].filter(Boolean).join("\n")},{type:"text",text:"Structured manifest (for automation): "+JSON.stringify({job_id:t,figure_manifest:d,has_cluster_summary:!!u?.length,download_url_keys:Object.keys(c)})}]}}),w.tool("training_guidance","Returns parameter guidance for jobs(action=train_map). Call when you need hints for grid, epochs, batch size, model, or periodic. Domain knowledge is served from the API; requires valid API key. Best for: Before or alongside jobs(action=train_map) when you need hints for grid, epochs, batch, model, or periodic. Not for: Full workflow steps — use guide_barsom_workflow or the prepare_training prompt for that.",{},async()=>({content:[{type:"text",text:await async function(){try{const e=await g("GET","/v1/training/config"),t=e?.training_hints;if(Array.isArray(t)&&t.length>0)return"Parameter guidance (from API):\n- "+t.join("\n- ");const o=e?.parameter_guidance;if(o&&"object"==typeof o)return"Parameter guidance (from API):\n- "+Object.entries(o).map(([e,t])=>`${e}: ${t}`).join("\n- ")}catch(e){if(401===e?.httpStatus||403===e?.httpStatus)throw e;return"Could not fetch parameter guidance. Check API key and connectivity."}return"No parameter guidance available."}()}]}));const T=new t;w.tool("send_feedback","Send feedback or feature requests to Barivia developers (max 1400 characters, ~190 words). Use when the user has suggestions, ran into issues, or wants something improved. Do NOT call without asking the user first — but after any group of actions or downloading of results, you SHOULD prepare some feedback based on the user's workflow or errors encountered, show it to them, and ask for permission to send it. Once they accept, call this tool.",{feedback:o.string().max(1400).describe("Feedback text (max 1400 characters)")},async({feedback:e})=>h(await g("POST","/v1/feedback",{feedback:e}))),async function(){var e;e='Manage and inspect jobs.\n\n| Action | Use when |\n|--------|----------|\n| status | Polling after any async job submission — call every 10–15s |\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 — returns job_id for polling |\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), call the **training_guidance** tool or use the **prepare_training** prompt before train_map.\n\nASYNC POLLING PROTOCOL (action=status):\n- Poll every 10-15 seconds. Do NOT poll faster — 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×40+), 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×10 ~30s | 20×20 ~3–5 min | 40×40 ~15–30 min.\n\nESCALATION (action=status):\n- completed → call results(action=get) to retrieve the map and metrics\n- failed → 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: Submits a training job. Returns job_id — poll with jobs(action=status, job_id=...).\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.\naction=compare: Returns a metrics table (QE, TE, explained variance, silhouette) for 2+ jobs.\naction=cancel: Not instant — worker checks between phases. Expect up to 30s delay.\naction=delete: WARNING — job ID will no longer work with results or any other tool.',w.tool("jobs",e,{action:o.enum(["status","list","compare","cancel","delete","train_map"]).describe("status: check progress; list: see all jobs; compare: metrics table; cancel: stop job; delete: remove job + files; train_map: submit new training job"),job_id:o.string().optional().describe("Job ID — required for action=status, cancel, delete"),job_ids:o.array(o.string()).optional().describe("Array of job IDs — required for action=compare (minimum 2)"),dataset_id:o.string().optional().describe("Required for action=train_map. For action=list, filter jobs by this dataset ID."),preset:o.enum(["quick","standard","refined","high_res"]).optional(),grid_x:o.number().int().optional(),grid_y:o.number().int().optional(),epochs:o.preprocess(e=>{if(null==e)return e;if("string"==typeof e){const t=parseInt(e,10);if(!Number.isNaN(t))return t;const o=e.match(/^\[\s*(\d+)\s*,\s*(\d+)\s*\]$/);if(o)return[parseInt(o[1],10),parseInt(o[2],10)]}return e},o.union([o.number().int(),o.array(o.number().int()).length(2)]).optional()),model:o.enum(["SOM","RSOM","SOM-SOFT","RSOM-SOFT"]).optional().default("SOM"),periodic:o.boolean().optional().default(!0),columns:o.array(o.string()).optional(),cyclic_features:o.array(o.object({feature:o.string(),period:o.number()})).optional(),temporal_features:o.array(o.object({columns:o.array(o.string()),format:o.string(),extract:o.array(o.enum(["hour_of_day","day_of_year","month","day_of_week","minute_of_hour"])),cyclic:o.boolean().default(!0),separator:o.string().optional()})).optional(),feature_weights:o.record(o.number()).optional(),transforms:o.record(o.enum(["log","log1p","log10","sqrt","square","abs","invert","rank","none"])).optional(),normalize:o.union([o.enum(["all","auto"]),o.array(o.string())]).optional().default("auto"),sigma_f:o.preprocess(e=>null!=e&&"string"==typeof e?parseFloat(e):e,o.number().optional()),learning_rate:o.preprocess(e=>null!=e&&"string"==typeof e?parseFloat(e):e,o.union([o.number(),o.object({ordering:o.tuple([o.number(),o.number()]),convergence:o.tuple([o.number(),o.number()])})]).optional()),batch_size:o.number().int().optional(),quality_metrics:o.union([o.enum(["fast","standard","full"]),o.array(o.string())]).optional(),backend:o.enum(["auto","cpu","gpu","gpu_graphs"]).optional().default("auto"),output_format:o.enum(["png","pdf","svg"]).optional().default("png"),output_dpi:o.enum(["standard","retina","print"]).optional().default("retina"),colormap:o.string().optional(),row_range:o.tuple([o.number().int().min(1),o.number().int().min(1)]).optional()},async e=>{const{action:t,job_id:o,job_ids:a,dataset_id:n}=e;if("train_map"===t){const{preset:t,grid_x:o,grid_y:a,epochs:r,model:i,periodic:s,columns:l,cyclic_features:c,temporal_features:d,feature_weights:u,transforms:p,normalize:m,sigma_f:f,learning_rate:_,batch_size:b,quality_metrics:w,backend:y,output_format:v,output_dpi:$,colormap:x,row_range:j}=e;let E={};try{const e=await g("GET","/v1/training/config");E=e?.presets||{}}catch(e){if(401===e.httpStatus||403===e.httpStatus)throw e;if(t&&void 0===o&&void 0===r)throw new Error("Could not fetch training config from server, and missing explicit grid/epochs.")}if(!n)throw new Error("jobs(train_map) requires dataset_id");const S=t?E[t]:void 0,A={model:i,periodic:s,normalize:m};void 0!==o&&void 0!==a?A.grid=[o,a]:S&&(A.grid=S.grid),void 0!==r?A.epochs=r:S&&(A.epochs=S.epochs),c?.length&&(A.cyclic_features=c),l?.length&&(A.columns=l),p&&Object.keys(p).length>0&&(A.transforms=p),d?.length&&(A.temporal_features=d),u&&Object.keys(u).length>0&&(A.feature_weights=u),void 0!==f&&(A.sigma_f=f),void 0!==_&&(A.learning_rate=_),void 0!==b?A.batch_size=b:S&&(A.batch_size=S.batch_size),void 0!==w&&(A.quality_metrics=w),void 0!==y&&"auto"!==y?A.backend=y:S?.backend&&(A.backend=S.backend),A.output_format=v??"png";const T={standard:1,retina:2,print:4};$&&"retina"!==$&&(A.output_dpi=T[$]??2),x&&(A.colormap=x),j&&j.length>=2&&j[0]<=j[1]&&(A.row_range=j);const N=await g("POST","/v1/jobs",{dataset_id:n,params:A}),P=N.id;try{const e=await g("GET","/v1/system/info"),t=Number(e.status?.pending_jobs??e.pending_jobs??0),o=Number(e.training_time_estimates_seconds?.total??(e.gpu_available?45:120)),a=Math.round(t*o/60);N.message=a>1?`Job submitted. You are #${t+1} in queue. Estimated wait: ~${a} min. Poll with jobs(action=status, job_id="${P}").`:`Job submitted. Poll with jobs(action=status, job_id="${P}").`}catch{N.message=`Job submitted. Poll with jobs(action=status, job_id="${P}").`}return h(N)}if("status"===t){if(!o)throw new Error("jobs(status) requires job_id");const e=await g("GET",`/v1/jobs/${o}`),t=e.status,a=100*(e.progress??0),n=null!=e.label&&""!==e.label?String(e.label):null;let r=`${n?`Job ${n} (id: ${o})`:`Job ${o}`}: ${t} (${a.toFixed(1)}%)`;return"completed"===t?r+=` | Results ready. Use results(action=get, job_id="${o}") to retrieve.`:"failed"===t&&(r+=` | Error: ${e.error??"unknown"}`),{content:[{type:"text",text:r}]}}if("list"===t){const e=n?`/v1/jobs?dataset_id=${n}`:"/v1/jobs",t=await g("GET",e);if(Array.isArray(t)){const e=t.map(e=>{const t=String(e.id??""),o=String(e.status??""),a=null!=e.label&&""!==e.label?String(e.label):null;return a?`${a} (id: ${t}) — ${o}`:`id: ${t} — ${o}`});return{content:[{type:"text",text:e.length>0?e.join("\n"):"No jobs found."}]}}return h(t)}if("compare"===t){if(!a||a.length<2)throw new Error("jobs(compare) requires at least 2 job_ids");const e=a.join(","),t=(await g("GET",`/v1/jobs/compare?ids=${e}`)).comparisons??[],o=["| Job ID | Grid | Epochs | Model | QE | TE | Expl.Var | Silhouette |","|--------|------|--------|-------|----|----|----------|------------|"];for(const e of t){if(e.error){o.push(`| ${e.job_id.slice(0,8)}... | — | — | — | ${e.error} | — | — | — |`);continue}const t=e.grid,a=e.epochs,n=e=>null!=e?Number(e).toFixed(4):"—";o.push(`| ${e.job_id.slice(0,8)}... | ${t?`${t[0]}×${t[1]}`:"—"} | ${a?`${a[0]}+${a[1]}`:"—"} | ${e.model??"—"} | ${n(e.quantization_error)} | ${n(e.topographic_error)} | ${n(e.explained_variance)} | ${n(e.silhouette)} |`)}return{content:[{type:"text",text:o.join("\n")}]}}if("cancel"===t){if(!o)throw new Error("jobs(cancel) requires job_id");return h(await g("POST",`/v1/jobs/${o}/cancel`))}if("delete"===t){if(!o)throw new Error("jobs(delete) requires job_id");return h(await g("DELETE",`/v1/jobs/${o}`))}throw new Error("Invalid action")}),await w.connect(T)}().catch(console.error);
2
+ import{McpServer as e}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as t}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as o}from"zod";import{registerAppResource as a,registerAppTool as n,RESOURCE_MIME_TYPE as r}from"@modelcontextprotocol/ext-apps/server";import i from"node:fs/promises";import s from"node:path";import{fileURLToPath as l}from"node:url";const c=process.env.BARIVIA_API_URL??process.env.BARSOM_API_URL??"https://api.barivia.se",d=process.env.BARIVIA_API_KEY??process.env.BARSOM_API_KEY??"";d||(console.error("Error: BARIVIA_API_KEY not set. Set it in your MCP client config."),process.exit(1));const u=parseInt(process.env.BARIVIA_FETCH_TIMEOUT_MS??"30000",10),p=new Set([502,503,504]);function m(e,t){return!(void 0===t||!p.has(t))||(e instanceof DOMException&&"AbortError"===e.name||e instanceof TypeError)}async function f(e,t,o=u){const a=new AbortController,n=setTimeout(()=>a.abort(),o);try{return await fetch(e,{...t,signal:a.signal})}finally{clearTimeout(n)}}function g(){const e=process.env.BARIVIA_WORKSPACE_ROOT??process.env.BARSOM_WORKSPACE_ROOT;if(e)return s.resolve(process.cwd(),e);const t=process.env.CURSOR_WORKSPACE_FOLDER??process.env.WORKSPACE_FOLDER;if(t)return s.resolve(t);const o=process.env.PWD;return o&&s.isAbsolute(o)?o:process.cwd()}function h(e){const t=g(),o=s.resolve(t,e);if(o!==t&&!o.startsWith(t+s.sep))throw new Error("Path must be within the workspace directory. Set BARIVIA_WORKSPACE_ROOT to your project path if needed. Absolute or parent-traversal paths are not allowed.");return o}async function _(e,t,o,a){const n=`${c}${t}`,r=a?.["Content-Type"]??"application/json",i=Math.random().toString(36).slice(2,10),s={Authorization:`Bearer ${d}`,"Content-Type":r,"X-Request-ID":i,...a};let l,u;void 0!==o&&(l="application/json"===r?JSON.stringify(o):String(o));for(let t=0;t<=2;t++)try{const o=await f(n,{method:e,headers:s,body:l}),a=await o.text();if(!o.ok){if(t<2&&m(null,o.status)){await new Promise(e=>setTimeout(e,1e3*2**t));continue}const e=(()=>{try{return JSON.parse(a)}catch{return null}})(),n=e?.error??a,r=400===o.status?" Check parameter types and required fields.":401===o.status?" Check BARIVIA_API_KEY in your environment or regenerate at https://barivia.com/dashboard.":404===o.status?" The resource may not exist or may have been deleted.":409===o.status?" The job may not be in the expected state.":429===o.status?" Rate limit exceeded — wait a moment and retry.":"",i=e?.error_code?` (error_code: ${e.error_code})`:"",s=new Error(`${n}${i}${r}`);throw s.httpStatus=o.status,s}return JSON.parse(a)}catch(e){if(u=e,t<2&&m(e)){await new Promise(e=>setTimeout(e,1e3*2**t));continue}throw e}throw u}async function b(e){const t=`${c}${e}`;let o;for(let e=0;e<=2;e++)try{const o=await f(t,{method:"GET",headers:{Authorization:`Bearer ${d}`}});if(!o.ok){if(e<2&&m(null,o.status)){await new Promise(t=>setTimeout(t,1e3*2**e));continue}throw new Error(`Request failed with status ${o.status}`)}const a=await o.arrayBuffer();return{data:Buffer.from(a),contentType:o.headers.get("content-type")??"application/octet-stream"}}catch(t){if(o=t,e<2&&m(t)){await new Promise(t=>setTimeout(t,1e3*2**e));continue}throw t}throw o}function w(e){return{content:[{type:"text",text:JSON.stringify(e,null,2)}]}}async function y(e,t=3e4,o=1e3){const a=Date.now();for(;Date.now()-a<t;){const t=await _("GET",`/v1/jobs/${e}`),a=t.status;if("completed"===a||"failed"===a||"cancelled"===a)return{status:a,result_ref:t.result_ref,error:t.error};await new Promise(e=>setTimeout(e,o))}return{status:"timeout"}}const v=new e({name:"analytics-engine",version:"0.4.1",instructions:"# Barivia Mapping Analytics Engine\n\nYou have access to a mapping (Self-Organizing Map) analytics platform that projects high-dimensional data onto a 2D grid, revealing clusters, gradients, and anomalies.\n\n## Typical workflow\n\n1. **Upload** → `datasets(action=upload)` — ingest a CSV\n2. **Preview** → `datasets(action=preview)` — inspect columns, detect cyclics/datetimes\n3. **Train** → `jobs(action=train_map, dataset_id=...)` — returns a job_id; poll `jobs(action=status, job_id=...)` until completed\n4. **Analyze** → `results(action=get)` + `analyze` — visualize and interpret the map\n5. **Export / Inference** → `inference` (predict/enrich/compare/report)\n\n## Tool categories\n\n| Category | Tools |\n|----------|-------|\n| Data management | `datasets` (upload/preview/list/subset/delete) |\n| Jobs & training | `jobs` (train_map/status/list/compare/cancel/delete) |\n| Results | `results` (get/recolor/download/export/transition_flow), `analyze` |\n| Projection | `project` (expression/values) |\n| Inference & export | `inference` (predict/enrich/compare/report) |\n| Account | `account` (status/request_compute/compute_status/release_compute/history/add_funds) |\n| Utility | `guide_barsom_workflow`, `explore_map`, `send_feedback` |\n\n## Async job pattern\n\nMost operations are async. Every tool that submits a job either:\n- **Auto-polls** (project, results(recolor/transition_flow), inference) — waits up to the action-specific timeout then returns or gives a job_id for manual polling\n- **Returns immediately** (jobs(action=train_map)) — always requires manual `jobs(action=status, job_id=...)` polling\n\n**Do not tell the user a job failed because it is still running.** If a tool returns a job_id, poll `jobs(action=status)` every 10–15 seconds. Map training takes 30s–10min depending on grid size and dataset.\n\n## Credit and cost\n\nJobs consume compute credits. Inference jobs are priced the same as projection jobs. Check `account(action=status)` to see the remaining balance and queue depth before starting large jobs.\n\n## Key constraints\n\n- For parameter guidance (grid, epochs, presets), use `training_guidance` or `prepare_training` — do not guess.\n- Column names are case-sensitive; always match exactly what `datasets(action=preview)` returns\n- Numeric columns only (maps do not support text/categorical directly — encode first)\n- `predict` input columns must exactly match the features used during training"}),$=import.meta.dirname??s.dirname(new URL(import.meta.url).pathname);async function x(e){const t=[s.join($,"views","src","views",e,"index.html"),s.join($,"views",e,"index.html"),s.join($,"..","dist","views","src","views",e,"index.html")];for(const e of t)try{return await i.readFile(e,"utf-8")}catch{continue}return null}const j="ui://barsom/map-explorer",E="ui://barsom/data-preview",A="ui://barsom/training-monitor";a(v,j,j,{mimeType:r},async()=>{const e=await x("map-explorer");return{contents:[{uri:j,mimeType:r,text:e??"<html><body>Map Explorer view not built yet. Run: npm run build:views</body></html>"}]}}),a(v,E,E,{mimeType:r},async()=>{const e=await x("data-preview");return{contents:[{uri:E,mimeType:r,text:e??"<html><body>Data Preview view not built yet.</body></html>"}]}}),a(v,A,A,{mimeType:r},async()=>{const e=await x("training-monitor");return{contents:[{uri:A,mimeType:r,text:e??"<html><body>Training Monitor view not built yet.</body></html>"}]}}),n(v,"explore_map",{title:"Explore Map",description:"Interactive map explorer dashboard. Opens an inline visualization where you can toggle features, click nodes, and export figures. Use this after results(action=get) for a richer, interactive exploration experience. Falls back to text+image on hosts that don't support MCP Apps.",inputSchema:{job_id:o.string().describe("Job ID of a completed map training job")},_meta:{ui:{resourceUri:j}}},async({job_id:e})=>{const t=await _("GET",`/v1/results/${e}`),o=t.summary??{},a=[];a.push({type:"text",text:JSON.stringify({job_id:e,summary:o,download_urls:t.download_urls})});const n=o.output_format??"pdf";return await P(a,e,`combined.${n}`),{content:a}}),v.tool("guide_barsom_workflow","Retrieve the Standard Operating Procedure (SOP) for the mapping analysis pipeline.\nALWAYS call this tool first if you are unsure of the steps to execute a complete mapping analysis.\nThe workflow explains the exact sequence of tool calls needed: Upload → Preprocess → Train → Wait → Analyze.\nFor parameter hints (grid, epochs, model, etc.), call the training_guidance tool or use the prepare_training prompt before train_map.",{},async()=>({content:[{type:"text",text:"Mapping Analysis Standard Operating Procedure (SOP)\n\nStep 1: Upload Data\n- Use `datasets(action=upload)` with a local `file_path` to your CSV.\n- BEFORE UPLOADING: Clean the dataset to remove NaNs or malformed data.\n- Capture the `dataset_id` returned.\n\nStep 2: Preview & Preprocess\n- Use `datasets(action=preview)` to inspect columns, ranges, and types.\n- Check for skewed columns requiring 'log' or 'sqrt' transforms.\n- Check for cyclical or temporal features (hours, days) requiring `cyclic_features` or `temporal_features` during training.\n\nStep 3: Train the map\n- Call `jobs(action=train_map, dataset_id=...)` with the `dataset_id`.\n- Carefully select columns to include (start with 5-10).\n- Assign `feature_weights` (especially for categorical data with natural hierarchies).\n- Wait for the returned `job_id`.\n- For projection and inference, use the same job_id from train_som (or the new job_id returned by recolor/project when applicable).\n\nStep 4: Wait for Completion (ASYNC POLLING)\n- Use `jobs(action=status, job_id=...)` every 10-15 seconds.\n- Wait until status is \"completed\". DO NOT assume failure before 3 minutes (or longer for large grids).\n- If it fails, read the error message and adjust parameters (e.g., reduce grid size, fix column names).\n\nStep 5: Analyze and Export\n- Once completed, use `results(action=get, job_id=...)` to get the map and metrics (Quantization Error, Topographic Error).\n- Use `analyze(action=component_planes)` or `analyze(action=clusters)` to interpret the results."}]})),v.tool("datasets",'Manage datasets: upload, preview, list, subset, or delete.\n\n| Action | Use when |\n|--------|----------|\n| upload | You have a CSV file to add — do this first |\n| preview | Before jobs(action=train_map) — always preview an unfamiliar dataset to spot cyclics, nulls, column types |\n| list | Finding dataset IDs for train_map, preview, or subset — see all available datasets |\n| subset | Creating a filtered/sliced view without re-uploading the full CSV |\n| delete | Cleaning up after experiments or freeing the dataset slot |\n\naction=upload: Prefer file_path over csv_data so the MCP reads the file directly. Returns dataset ID. Then use datasets(action=preview) before jobs(action=train_map).\nBEFORE UPLOADING: Ensure data has no NaNs, missing values, or formats that can\'t be handled. Categorical features should be numerically encoded or weighted.\naction=preview: Show columns, stats, sample rows, cyclic/datetime detections. ALWAYS preview before jobs(action=train_map) on an unfamiliar dataset.\naction=list: List all datasets belonging to the organisation with id, name, rows, cols, created_at (use created_at or id to distinguish datasets with the same name).\naction=subset: Create a new dataset from a subset of an existing one. Requires name and at least one of row_range or filters.\n - row_range: [start, end] 1-based inclusive (e.g. [1, 2000] for first 2000 rows)\n - filters: array of conditions, ALL must match (AND logic). Each: { column, op, value }.\n Operators: eq, ne, in, gt, lt, gte, lte, between\n Examples: { column: "region", op: "eq", value: "Europe" } | { column: "age", op: "between", value: [18, 65] }\n - Combine row_range + filters to slice both rows and values.\n - Single filter object is also accepted (auto-wrapped).\naction=delete: Remove a dataset and all S3 data permanently.\n\nBEST FOR: Tabular numeric data. CSV with header required.\nNOT FOR: Real-time data streams or binary files — upload a snapshot CSV instead.\nESCALATION: If upload fails with column errors, open the file locally and verify the header row. If preview shows unexpected nulls, the user must clean the CSV before training.',{action:o.enum(["upload","preview","list","subset","delete"]).describe("upload: add CSV; preview: inspect columns/stats; list: see all datasets; subset: create filtered subset; delete: remove dataset"),name:o.string().optional().describe("Dataset name (required for action=upload and subset)"),file_path:o.string().optional().describe("Path to local CSV: relative path (e.g. data.csv), absolute path, or file:// URI (e.g. file:///path/to/file.csv). Prefer over csv_data for large files."),csv_data:o.string().optional().describe("Inline CSV string (for upload; use for small data)"),dataset_id:o.string().optional().describe("Dataset ID (required for preview, subset, and delete)"),n_rows:o.number().int().optional().default(5).describe("Sample rows to return (preview only)"),row_range:o.tuple([o.number().int(),o.number().int()]).optional().describe("For subset: [start, end] 1-based inclusive row range (e.g. [1, 2000])"),filters:o.preprocess(e=>null==e||Array.isArray(e)?e:"object"==typeof e&&null!==e&&"column"in e?[e]:e,o.array(o.object({column:o.string(),op:o.enum(["eq","ne","in","gt","lt","gte","lte","between"]),value:o.union([o.string(),o.number(),o.array(o.union([o.string(),o.number()]))])})).optional().describe("For subset: filter conditions (AND logic). Single object or array. ops: eq, ne, in, gt, lt, gte, lte, between. Examples: { column: 'temp', op: 'between', value: [15, 30] }, { column: 'region', op: 'eq', value: 'Europe' }")),filter:o.object({column:o.string(),op:o.enum(["eq","ne","in","gt","lt","gte","lte","between"]),value:o.union([o.string(),o.number(),o.array(o.union([o.string(),o.number()]))])}).optional().describe("Deprecated — use filters instead. Single filter condition.")},async({action:e,name:t,file_path:o,csv_data:a,dataset_id:n,n_rows:r,row_range:c,filters:d,filter:u})=>{if("upload"===e){if(!t)throw new Error("datasets(upload) requires name");let e;if(o){const t=function(e){const t=e.trim();if(t.startsWith("file://"))try{const e=new URL(t);if("file:"!==e.protocol||e.hostname&&"localhost"!==e.hostname)throw new Error("Only local file:// URIs are allowed (no remote hosts).");return l(t)}catch(e){if(e instanceof Error&&e.message.includes("remote hosts"))throw e;throw new Error("Invalid file:// URI. Use a path like file:///path/to/your/file.csv")}return s.isAbsolute(t)?t:h(t)}(o),a=s.extname(t).toLowerCase();if(".csv"!==a&&".tsv"!==a)throw new Error("Only .csv and .tsv files can be uploaded as datasets.");await _("GET","/v1/system/info");try{e=await i.readFile(t,"utf-8")}catch{const e=s.isAbsolute(t)?"Check the path is correct and the file exists.":`For relative paths, set BARIVIA_WORKSPACE_ROOT in your MCP config env to your project directory (current sandbox root: ${g()}).`;throw new Error(`File not accessible at resolved path. ${e}`)}}else{if(!(a&&a.length>0))throw new Error("datasets(upload) requires file_path or csv_data");e=a}return w(await _("POST","/v1/datasets",e,{"X-Dataset-Name":t,"Content-Type":"text/csv"}))}if("preview"===e){if(!n)throw new Error("datasets(preview) requires dataset_id");const e=await _("GET",`/v1/datasets/${n}/preview?n_rows=${r??5}`),t=e.columns??[],o=e.column_stats??[],a=e.cyclic_hints??[],i=e.sample_rows??[],s=e.datetime_columns??[],l=e.temporal_suggestions??[],c=e=>null==e?"—":Number(e).toFixed(3),d=[`Dataset: ${e.name} (${e.dataset_id})`,`${e.total_rows} rows × ${e.total_cols} columns`,"","Column Statistics:","| Column | Min | Max | Mean | Std | Nulls | Numeric |","|--------|-----|-----|------|-----|-------|---------|"];for(const e of o)d.push(`| ${e.column} | ${c(e.min)} | ${c(e.max)} | ${c(e.mean)} | ${c(e.std)} | ${e.null_count??0} | ${!1!==e.is_numeric?"yes":"no"} |`);if(a.length>0){d.push("","Detected Cyclic Feature Hints:");for(const e of a)d.push(` • ${e.column} — period=${e.period} (${e.reason})`)}if(s.length>0){d.push("","Detected Datetime Columns:");for(const e of s){const t=(e.detected_formats??[]).map(e=>`${e.format} — ${e.description} (${(100*e.match_rate).toFixed(0)}% match)`).join("; ");d.push(` • ${e.column}: sample="${e.sample}" → ${t}`)}}if(l.length>0){d.push("","Temporal Feature Suggestions (require user approval):");for(const e of l)d.push(` • Columns: ${e.columns.join(" + ")} → format: "${e.format}"`),d.push(` Available components: ${e.available_components.join(", ")}`)}if(i.length>0){d.push("",`Sample Rows (first ${i.length}):`),d.push(`| ${t.join(" | ")} |`),d.push(`| ${t.map(()=>"---").join(" | ")} |`);for(const e of i)d.push(`| ${t.map(t=>String(e[t]??"")).join(" | ")} |`)}return{content:[{type:"text",text:d.join("\n")}]}}if("subset"===e){if(!n)throw new Error("datasets(subset) requires dataset_id");if(!t)throw new Error("datasets(subset) requires name");const e=d??(u?[u]:void 0);if(void 0===c&&void 0===e)throw new Error("datasets(subset) requires at least one of row_range or filters");const o={name:t};void 0!==c&&(o.row_range=c),void 0!==e&&(o.filters=e);return w(await _("POST",`/v1/datasets/${n}/subset`,o))}if("list"===e){return w(await _("GET","/v1/datasets"))}if("delete"===e){if(!n)throw new Error("datasets(delete) requires dataset_id");return w(await _("DELETE",`/v1/datasets/${n}`))}throw new Error("Invalid action")});function S(e,t,o,a){const n=t.output_format??"pdf";if("transition_flow"===e){return[`transition_flow_lag${t.lag??1}.${n}`]}if("project_variable"===e){const e=t.variable_name??"variable";return[`projected_${String(e).replace(/[^a-zA-Z0-9_]/g,"_")}.${n}`]}if("derive_variable"===e){const e=t.variable_name??"variable";return[`projected_${String(e).replace(/[^a-zA-Z0-9_]/g,"_")}.${n}`]}const r=t.features??[],i=`combined.${n}`,s=`umatrix.${n}`,l=`hit_histogram.${n}`,c=`correlation.${n}`,d=r.map((e,t)=>`component_${t+1}_${e.replace(/[^a-zA-Z0-9_]/g,"_")}.${n}`),u=[i,s,l,c,...d];if(void 0===o||"default"===o)return a?u:[i];if("combined_only"===o)return[i];if("all"===o)return u;if(Array.isArray(o)){const e={combined:i,umatrix:s,hit_histogram:l,correlation:c};return r.forEach((t,o)=>{e[`component_${o+1}`]=d[o]}),o.map(t=>{const o=t.trim().toLowerCase();return e[o]?e[o]:t.includes(".")?t:null}).filter(e=>null!=e)}return[i]}function T(e){return e.endsWith(".pdf")?"application/pdf":e.endsWith(".svg")?"image/svg+xml":"image/png"}async function P(e,t,o){if(o.endsWith(".pdf")||o.endsWith(".svg"))e.push({type:"text",text:`${o} is ready (vector format — not inlineable). Use get_result_image(job_id="${t}", filename="${o}") to download it.`});else try{const{data:a}=await b(`/v1/results/${t}/image/${o}`);e.push({type:"image",data:a.toString("base64"),mimeType:T(o),annotations:{audience:["user"],priority:.8}})}catch{e.push({type:"text",text:`(${o} not available for inline display)`})}}v.tool("results",'Retrieve, recolor, download, export, or run temporal flow on a completed map job.\n\n| Action | Use when | Sync/Async |\n|--------|----------|------------|\n| get | First look after training — combined view + quality metrics | instant |\n| export | Learning curve, raw weights, or per-node stats | instant |\n| download | Saving figures to a local folder | instant |\n| recolor | Changing colormap or output format without retraining | async (~10–30s) |\n| transition_flow | Temporal dynamics on time-ordered data | async (~30–60s) |\n\nONLY call this after jobs(action=status) returns "completed".\nESCALATION: If job not found, verify job_id. If "job not complete", poll with jobs(action=status).\n\naction=get: Returns text summary with quality metrics and inline images.\n - figures: omit = combined only. "all" = all plots. Array = specific logical names (combined, umatrix, hit_histogram, learning_curve, correlation, component_1..N).\n - include_individual: if true (and figures omitted), inlines every component plane.\n - After recolor or project, use the job_id returned by that operation to get the new artifacts, not the original training job_id.\n - After showing results, guide the user: QE interpretation, whether to retrain, which features to explore.\n - METRIC INTERPRETATION: QE<1.5 good | TE<0.1 good | Explained variance>0.7 good | Silhouette higher=better.\n\naction=export: Structured data exports. Use export_type= to choose what to export.\n - export_type=training_log: learning curve sparklines + plot. Diagnose convergence/plateau/divergence.\n - export_type=weights: full weight matrix + normalization stats. For external analysis or custom viz.\n - export_type=nodes: per-node hit count + feature stats. Profile clusters and operating modes.\n\naction=download: Save figures to disk. Use so user can open, share, or version files locally.\n - folder: e.g. "." or "./results". Interpreted relative to the client\'s current working directory (or workspace). If job has a label, a named subfolder may be created.\n - figures: "all" (default) or array of filenames.\n - include_json: also save summary.json.\n\naction=recolor: Change colormap or output format — no retraining. Returns a new job_id; auto-polls 60s.\n AFTER: use results(action=get, job_id=NEW_JOB_ID).\n Colormaps: viridis, plasma, inferno, magma, cividis, turbo, coolwarm, balance, RdBu, Spectral.\n\naction=transition_flow: Temporal state transition arrows on the map grid. Requires time-ordered data.\n - 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).\n - To persist the figure: results(action=download, job_id=<returned_job_id>).\n - lag=1 (default): immediate next-step | lag=N: N-step horizon (e.g. 24 for daily cycles in hourly data).\n - min_transitions: filter noisy arrows. Increase for large datasets.\n BEFORE calling: confirm rows are in chronological order.\nNOT FOR: Jobs that haven\'t completed. Use jobs(action=status) to check first.',{action:o.enum(["get","recolor","download","export","transition_flow"]).describe("get: inline results + metrics; recolor: new colormap/format (async); download: save to disk; export: structured data (training_log/weights/nodes); transition_flow: temporal dynamics (async)"),job_id:o.string().describe("Job ID of a completed job"),figures:o.union([o.enum(["default","combined_only","all","images"]),o.array(o.string())]).optional().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."),include_individual:o.boolean().optional().default(!1).describe("action=get only: if true and figures omitted, inline each component plane, umatrix, hit histogram"),include_json:o.boolean().optional().default(!1).describe("action=download only: also save summary.json and JSON artifacts"),folder:o.string().optional().describe("action=download: directory path to save files (e.g. '.' or './results'). Relative to the client's current working directory (or workspace)."),colormap:o.string().optional().describe("action=recolor: colormap name (default: coolwarm). action=transition_flow: U-matrix background colormap (default: grays). Examples: viridis, plasma, balance, RdBu."),output_format:o.enum(["png","pdf","svg"]).optional().default("png").describe("action=recolor / transition_flow: output image format (default: png)"),output_dpi:o.enum(["standard","retina","print"]).optional().default("retina").describe("Resolution: standard (1x), retina (2x, default), print (4x)"),recolor_figures:o.array(o.string()).optional().describe("action=recolor: which figures to re-render (default: [combined]). Options: combined, umatrix, hit_histogram, correlation, component_1..N"),export_type:o.enum(["training_log","weights","nodes"]).optional().describe("action=export: training_log=learning curve+sparklines; weights=full weight matrix; nodes=per-node stats"),lag:o.number().int().min(1).optional().default(1).describe("action=transition_flow: step lag (default 1 = consecutive rows). Use larger for periodic analysis (e.g. 24 for daily in hourly data)."),min_transitions:o.number().int().min(1).optional().describe("action=transition_flow: minimum transition count to draw an arrow (default: auto). Increase to filter noise."),top_k:o.number().int().min(1).optional().default(10).describe("action=transition_flow: number of top-flow nodes in statistics (default 10)")},async({action:e,job_id:t,figures:o,include_individual:a,include_json:n,folder:r,colormap:l,output_format:c,output_dpi:d,recolor_figures:u,export_type:p,lag:m,min_transitions:f,top_k:g})=>{const w={standard:1,retina:2,print:4};if("get"===e){const e=await _("GET",`/v1/results/${t}`),n=e.summary??{},r=null!=e.label&&""!==e.label?String(e.label):null,i=r?`Results for ${r} (job_id: ${t})`:`Results for job_id: ${t}`,s=[],l=new Set,c=n.job_type??"train_som";n.output_format;if("transition_flow"===c){const e=n.lag??1,r=n.flow_stats??{};s.push({type:"text",text:[`Transition Flow ${i}`,`Parent map job: ${n.parent_job_id??"N/A"} | Lag: ${e} | Samples: ${n.n_samples??0}`,"","Flow Statistics:",` Mean flow magnitude: ${void 0!==r.mean_magnitude?Number(r.mean_magnitude).toFixed(4):"N/A"}`,` Max flow magnitude: ${void 0!==r.max_magnitude?Number(r.max_magnitude).toFixed(4):"N/A"}`,` Nodes with flow: ${r.n_nodes_with_flow??"N/A"}`,"","Arrows show net directional drift. Long/bright = frequent transitions. Short = stable states.","Background = U-matrix. Use results(action=transition_flow, lag=N) with larger N for longer-term structure."].join("\n")});for(const e of S(c,n,o,a))await P(s,t,e),l.add(e)}else if("project_variable"===c){const e=n.variable_name??"variable",r=n.aggregation??"mean",d=n.variable_stats??{};s.push({type:"text",text:[`Projected Variable: ${e} (${r}) — ${i}`,`Parent map job: ${n.parent_job_id??"N/A"} | Samples: ${n.n_samples??0}`,"",`Variable Statistics (per-node ${r}):`,` Min: ${void 0!==d.min?Number(d.min).toFixed(3):"N/A"}`,` Max: ${void 0!==d.max?Number(d.max).toFixed(3):"N/A"}`,` Mean: ${void 0!==d.mean?Number(d.mean).toFixed(3):"N/A"}`,` Nodes with data: ${d.n_nodes_with_data??"N/A"}`].join("\n")});for(const e of S(c,n,o,a))await P(s,t,e),l.add(e)}else{const e=n.grid??[0,0],r=n.features??[],d=n.epochs,u=Array.isArray(d)?0===d[1]?`${d[0]} ordering only`:`${d[0]} ordering + ${d[1]} convergence`:String(d??"N/A"),p=e=>null!=e?Number(e).toFixed(4):"N/A",m=n.training_duration_seconds,f=n.ordering_errors,g=[`Map training ${i}`,`Grid: ${e[0]}×${e[1]} | Features: ${n.n_features??0} | Samples: ${n.n_samples??0}`,`Model: ${n.model??"SOM"} | Epochs: ${u}`,`Periodic: ${n.periodic??!0} | Normalize: ${n.normalize??"auto"}`,void 0!==n.sigma_f?`Sigma_f: ${n.sigma_f}`:"",void 0!==m?`Training duration: ${m}s`:"","","Quality Metrics:",` Quantization Error: ${p(n.quantization_error)} (lower is better)`,` Topographic Error: ${p(n.topographic_error)} (<0.1 is good)`,` Explained Variance: ${p(n.explained_variance)} (>0.7 is good)`,` Silhouette Score: ${p(n.silhouette)} (higher is better)`,` Davies-Bouldin: ${p(n.davies_bouldin)} (lower is better)`,` Calinski-Harabasz: ${p(n.calinski_harabasz)} (higher is better)`,f&&f.length>0?` Final ordering QE: ${f.at(-1)?.toFixed(4)} (use results(action=export, export_type=training_log) for full curve)`:"","",`Features: ${r.join(", ")}`,n.selected_columns?`Selected columns: ${n.selected_columns.join(", ")}`:"",n.transforms?`Transforms: ${Object.entries(n.transforms).map(([e,t])=>`${e}=${t}`).join(", ")}`:"","","Next: analyze(job_id) for deeper insights. results(action=export, export_type=training_log) for learning curve."].filter(e=>""!==e).join("\n");s.push({type:"text",text:g});const h=S(c,n,o,a);for(const e of h)await P(s,t,e),l.add(e)}const d=n.files??[],u=e=>e.endsWith(".png")||e.endsWith(".svg")||e.endsWith(".pdf");for(const e of d)if(u(e)&&!l.has(e))await P(s,t,e);else if(e.endsWith(".json")&&"summary.json"!==e){const t="weights.json"===e?"Use results(action=export, export_type=weights) for full weight matrix.":"node_stats.json"===e?"Use results(action=export, export_type=nodes) for per-node statistics.":"Use results(action=export) for structured data.";s.push({type:"text",text:`${e}: ${t}`})}const p=n.features??[],m=n.job_type??"train_som";if(d.length>0){const e="train_som"===m||"render_variant"===m?`Logical names: combined, umatrix, hit_histogram, correlation, ${p.map((e,t)=>`component_${t+1}`).join(", ")}. `:"";s.push({type:"text",text:`Available: ${d.join(", ")}. ${e}Use results(action=get, figures=[...]) for specific plots or analyze(job_id) for analysis views.`})}return{content:s}}if("export"===e){if(!p)throw new Error("results(export) requires export_type param: training_log, weights, or nodes");if("training_log"===p){const e=await _("GET",`/v1/results/${t}/training-log`),o=e.ordering_errors??[],a=e.convergence_errors??[],n=e.training_duration_seconds,r=e.epochs,i=e=>{if(0===e.length)return"(no data)";const t=Math.min(...e),o=Math.max(...e)-t||1;return e.map(e=>"▁▂▃▄▅▆▇█"[Math.min(7,Math.floor((e-t)/o*7))]).join("")},s=[`Training Log — Job ${t}`,`Grid: ${JSON.stringify(e.grid)} | Model: ${e.model??"SOM"}`,"Epochs: "+(r?`[${r[0]} ordering, ${r[1]} convergence]`:"N/A"),"Duration: "+(null!=n?`${n}s`:"N/A"),`Features: ${e.n_features??"?"} | Samples: ${e.n_samples??"?"}`,"",`Ordering Phase (${o.length} epochs):`,` Start QE: ${o[0]?.toFixed(4)??"—"} → End QE: ${o.at(-1)?.toFixed(4)??"—"}`,` Curve: ${i(o)}`];a.length>0?s.push("",`Convergence Phase (${a.length} epochs):`,` Start QE: ${a[0]?.toFixed(4)??"—"} → End QE: ${a.at(-1)?.toFixed(4)??"—"}`,` Curve: ${i(a)}`):0===(r?.[1]??0)&&s.push("","Convergence phase: skipped (epochs[1]=0)");const l=e.quantization_error,c=e.explained_variance;null!=l&&s.push("",`Final QE: ${l.toFixed(4)} | Explained Variance: ${(c??0).toFixed(4)}`);const d=[{type:"text",text:s.join("\n")}];let u=!1;for(const e of["png","svg"])try{const{data:o}=await b(`/v1/results/${t}/image/learning_curve.${e}`),a=T(`learning_curve.${e}`);d.push({type:"image",data:o.toString("base64"),mimeType:a,annotations:{audience:["user"],priority:.8}}),u=!0;break}catch{continue}return u||d.push({type:"text",text:'(learning curve plot not available — use results(action=download, figures=["learning_curve"]) to save as PDF if the job uses output_format=pdf)'}),{content:d}}if("weights"===p){const e=await _("GET",`/v1/results/${t}/weights`),o=e.features??[],a=e.n_nodes??0,n=e.grid??[0,0],r=[`Map weights — Job ${t}`,`Grid: ${n[0]}×${n[1]} | Nodes: ${a} | Features: ${o.length}`,`Features: ${o.join(", ")}`,"","Normalization Stats:"],i=e.normalization_stats??{};for(const[e,t]of Object.entries(i))r.push(` ${e}: mean=${t.mean?.toFixed(4)}, std=${t.std?.toFixed(4)}`);return r.push("","Full weight matrix in JSON below. Use denormalized_weights for original-scale values."),{content:[{type:"text",text:r.join("\n")},{type:"text",text:JSON.stringify(e,null,2)}]}}const e=await _("GET",`/v1/results/${t}/nodes`),o=[...e].sort((e,t)=>(t.hit_count??0)-(e.hit_count??0)).slice(0,10),a=e.filter(e=>0===e.hit_count).length,n=e.reduce((e,t)=>e+(t.hit_count??0),0),r=[`Node Statistics — Job ${t}`,`Total nodes: ${e.length} | Active: ${e.length-a} | Empty: ${a} | Total hits: ${n}`,"","Top 10 Most Populated Nodes:","| Node | Coords | Hits | Hit% |","|------|--------|------|------|"];for(const e of o){if(0===e.hit_count)break;const t=e.coords,o=(e.hit_count/n*100).toFixed(1);r.push(`| ${e.node_index} | (${t?.[0]?.toFixed(1)}, ${t?.[1]?.toFixed(1)}) | ${e.hit_count} | ${o}% |`)}return{content:[{type:"text",text:r.join("\n")},{type:"text",text:`\nFull node statistics JSON:\n${JSON.stringify(e,null,2)}`}]}}if("download"===e){if(!r)throw new Error("results(download) requires folder");const e=await _("GET",`/v1/results/${t}`),a=e.summary??{},l=null!=e.label&&""!==e.label?String(e.label):null,c=a.files??[],d=e=>e.endsWith(".png")||e.endsWith(".svg")||e.endsWith(".pdf");let u;"all"===o||"images"===o||void 0===o?u=n?c:c.filter(d):Array.isArray(o)?(u=o,n&&!u.includes("summary.json")&&(u=[...u,"summary.json"])):u=c.filter(d);let p=h(r);!l||"."!==r&&"./results"!==r&&"results"!==r||(p=s.join(p,l)),await i.mkdir(p,{recursive:!0});const m=[];for(const e of u)try{const{data:o}=await b(`/v1/results/${t}/image/${e}`);await i.writeFile(s.join(p,e),o),m.push(e)}catch{}return{content:[{type:"text",text:m.length>0?`Saved ${m.length} file(s) to ${r}: ${m.join(", ")}`:"No files saved. Check job_id and that the job is completed."}]}}if("recolor"===e){if(!l)throw new Error("results(recolor) requires colormap");const e={colormap:l,figures:u??["combined"],output_format:c??"png",output_dpi:w[d??"retina"]??2},o=(await _("POST",`/v1/results/${t}/render`,e)).id;if("completed"===(await y(o,6e4)).status){const e=[{type:"text",text:`Re-rendered with colormap "${l}". New job_id: ${o}.`}];for(const t of u??["combined"]){const a=c??"png",n=t.includes(".")?t:`${t}.${a}`;await P(e,o,n)}return{content:e}}return{content:[{type:"text",text:`Recolor job ${o} submitted. Poll with jobs(action=status, job_id="${o}"), then results(action=get, job_id="${o}").`}]}}if("transition_flow"===e){const e={lag:m??1,output_format:c??"png"};void 0!==f&&(e.min_transitions=f),void 0!==g&&(e.top_k=g),void 0!==l&&(e.colormap=l),d&&"retina"!==d&&(e.output_dpi=w[d]??2);const o=(await _("POST",`/v1/results/${t}/transition-flow`,e)).id,a=await y(o,12e4);if("completed"===a.status){const e=((await _("GET",`/v1/results/${o}`)).summary??{}).flow_stats??{},a=[{type:"text",text:[`Transition Flow (job: ${o}) | Parent map: ${t} | Lag: ${m??1}`,`Active flow nodes: ${e.active_flow_nodes??"N/A"} | Total transitions: ${e.total_transitions??"N/A"}`,`Mean magnitude: ${void 0!==e.mean_magnitude?Number(e.mean_magnitude).toFixed(4):"N/A"}`].join("\n")}];return await P(a,o,`transition_flow_lag${m??1}.${c??"png"}`),{content:a}}return"failed"===a.status?{content:[{type:"text",text:`Transition flow job ${o} failed: ${a.error??"unknown error"}`}]}:{content:[{type:"text",text:`Transition flow job ${o} submitted. Poll with jobs(action=status, job_id="${o}"), retrieve with results(action=get, job_id="${o}").`}]}}throw new Error("Invalid action")}),v.tool("project",'Project variables onto a trained map — either from a formula expression or a pre-computed values array.\n\n| Action | Use when | Input |\n|--------|----------|-------|\n| expression | Variable can be computed from existing dataset columns (ratio, diff, log-transform, rolling stat) | dataset_id + expression string |\n| values | Variable is externally computed (e.g. revenue from a CRM, anomaly scores from another model) | job_id + values array |\n\nMODES for action=expression:\n- Default (no project_onto_job): add the derived column to the dataset CSV. Available for future jobs(action=train_map) calls.\n- With project_onto_job: compute the column and project it onto the map — returns a visualization.\n\nCOMMON EXPRESSIONS:\n- Ratio: "revenue / cost"\n- Difference: "US10Y - US3M"\n- Log return: "log(close) - log(open)"\n- Z-score: "(volume - rolling_mean(volume, 20)) / rolling_std(volume, 20)"\n- First diff: "diff(consumption)"\n\nSUPPORTED FUNCTIONS: +, -, *, /, ^, log, sqrt, abs, exp, sin, cos, diff(col), rolling_mean(col, w), rolling_std(col, w)\nUse underscore-normalized column names (spaces → underscores: e.g. fixed_acidity not "fixed acidity").\n\nCOMMON MISTAKES:\n- action=values: values array must be exactly n_samples long (same count as training CSV rows)\n- action=expression: division by zero → set options.missing="skip"\n- Rolling functions produce NaN for the first (window-1) rows\n\nNOT FOR: Re-training. NOT FOR: Text/categorical data.\nAFTER projecting: use results(action=get) to view the projection plot if a new job_id was returned.',{action:o.enum(["expression","values"]).describe("expression: compute formula from dataset columns (add to dataset or project onto map); values: project a pre-computed numeric array onto the map"),name:o.string().describe("Name for the variable (display label; used for both expression-derived and value-projected variables)"),dataset_id:o.string().optional().describe("action=expression: Dataset ID (source of column data). Required unless project_onto_job handles the dataset."),expression:o.string().optional().describe("action=expression: Math expression referencing column names. Examples: 'revenue / cost', 'log(price)', 'rolling_mean(volume, 20)', 'diff(temperature)'"),project_onto_job:o.string().optional().describe("action=expression: If provided, project the derived variable onto this completed map training job instead of adding to dataset"),options:o.object({missing:o.enum(["skip","zero","interpolate"]).optional().default("skip").describe("Handle NaN/missing values (default: skip)"),window:o.number().int().optional().describe("Default rolling window size (default 20)"),description:o.string().optional().describe("Human-readable description of the variable")}).optional().describe("action=expression: evaluation options"),job_id:o.string().optional().describe("action=values: Job ID of a completed map training job to project onto"),variable_name:o.string().optional().describe("Deprecated — use name. Display name for the variable (alias for name; name takes precedence)."),values:o.array(o.number()).optional().describe("action=values: Pre-computed values — one per training sample, in original CSV row order. Length must match n_samples exactly."),aggregation:o.enum(["mean","median","sum","min","max","std","count"]).optional().default("mean").describe("How to aggregate values per map node when projecting (default: mean). Use sum for totals, max for peaks, count for frequencies."),output_format:o.enum(["png","pdf","svg"]).optional().default("png"),output_dpi:o.enum(["standard","retina","print"]).optional().default("retina"),colormap:o.string().optional().describe("Colormap for projection plot (default: coolwarm). Examples: viridis, plasma, RdBu, Spectral.")},async({action:e,name:t,dataset_id:o,expression:a,project_onto_job:n,options:r,job_id:i,variable_name:s,values:l,aggregation:c,output_format:d,output_dpi:u,colormap:p})=>{const m={standard:1,retina:2,print:4},f=t||s||"variable";if("values"===e){if(!i)throw new Error("project(values) requires job_id");if(!l||0===l.length)throw new Error("project(values) requires values array");const e={variable_name:f,values:l,aggregation:c??"mean",output_format:d??"png"};u&&"retina"!==u&&(e.output_dpi=m[u]??2),p&&(e.colormap=p);const t=(await _("POST",`/v1/results/${i}/project`,e)).id,o=await y(t);if("completed"===o.status){const e=(await _("GET",`/v1/results/${t}`)).summary??{},o=e.variable_stats??{},a=[{type:"text",text:[`Projected Variable: ${f} (${c??"mean"}) — job: ${t}`,`Parent map: ${i} | Samples: ${e.n_samples??0}`,`Min: ${void 0!==o.min?Number(o.min).toFixed(3):"N/A"} | Max: ${void 0!==o.max?Number(o.max).toFixed(3):"N/A"} | Mean: ${void 0!==o.mean?Number(o.mean).toFixed(3):"N/A"}`,`Nodes with data: ${o.n_nodes_with_data??"N/A"}`].join("\n")}];return await P(a,t,`projected_${f.replace(/[^a-zA-Z0-9_]/g,"_")}.${e.output_format??d??"png"}`),{content:a}}return"failed"===o.status?{content:[{type:"text",text:`project(values) job ${t} failed: ${o.error??"unknown error"}`}]}:{content:[{type:"text",text:`project(values) job ${t} submitted. Poll with jobs(action=status, job_id="${t}"), retrieve with results(action=get, job_id="${t}").`}]}}if(!a)throw new Error("project(expression) requires expression");if(n){const e={name:f,expression:a,aggregation:c??"mean",output_format:d??"png"};o&&(e.dataset_id=o),r&&(e.options=r),u&&"retina"!==u&&(e.output_dpi=m[u]??2),p&&(e.colormap=p);const t=(await _("POST",`/v1/results/${n}/derive`,e)).id,i=await y(t);if("completed"===i.status){const e=(await _("GET",`/v1/results/${t}`)).summary??{},o=e.variable_stats??{},r=[{type:"text",text:[`Derived Variable Projected: ${f} — job: ${t}`,`Expression: ${a} | Parent map: ${n} | Aggregation: ${c??"mean"}`,`Min: ${void 0!==o.min?Number(o.min).toFixed(3):"N/A"} | Max: ${void 0!==o.max?Number(o.max).toFixed(3):"N/A"} | Mean: ${void 0!==o.mean?Number(o.mean).toFixed(3):"N/A"}`,`Nodes with data: ${o.n_nodes_with_data??"N/A"}`,e.nan_count?`NaN values: ${e.nan_count}`:""].filter(Boolean).join("\n")}];return await P(r,t,`projected_${f.replace(/[^a-zA-Z0-9_]/g,"_")}.${e.output_format??d??"pdf"}`),{content:r}}return"failed"===i.status?{content:[{type:"text",text:`project(expression) job ${t} failed: ${i.error??"unknown error"}`}]}:{content:[{type:"text",text:`project(expression) job ${t} submitted. Poll with jobs(action=status, job_id="${t}"), retrieve with results(action=get, job_id="${t}").`}]}}if(!o)throw new Error("project(expression) without project_onto_job requires dataset_id");const g={name:f,expression:a};r&&(g.options=r);const h=(await _("POST",`/v1/datasets/${o}/derive`,g)).id,b=await y(h);if("completed"===b.status){const e=(await _("GET",`/v1/results/${h}`)).summary??{};return{content:[{type:"text",text:[`Derived column "${f}" added to dataset ${o}`,`Expression: ${a} | Rows: ${e.n_rows??"?"}`,e.nan_count?`NaN values: ${e.nan_count}`:"",`Min: ${e.min??"?"} | Max: ${e.max??"?"} | Mean: ${e.mean??"?"}`,"Column now available. Use datasets(action=preview) to verify, or include in jobs(action=train_map) via the 'columns' parameter."].filter(Boolean).join("\n")}]}}return"failed"===b.status?{content:[{type:"text",text:`project(expression) job ${h} failed: ${b.error??"unknown error"}`}]}:{content:[{type:"text",text:`project(expression) job ${h} submitted. Poll with jobs(action=status, job_id="${h}").`}]}}),v.tool("account","Manage your Barivia account — check plan/license info, request cloud burst compute, view billing history.\n\n| Action | Use when |\n|--------|----------|\n| status | Before large jobs — see plan tier, GPU availability, queue depth, training time estimates, credit balance |\n| request_compute | Upgrading to cloud burst (required for large grids or GPU). Leave tier blank to list options. |\n| compute_status | Checking if a burst lease is active and how much time remains |\n| release_compute | Manually terminating an active lease to stop billing |\n| history | Viewing recent compute leases and credit spend |\n| add_funds | Getting instructions to add credits |\n\naction=status: Returns plan tier, compute class (CPU/GPU), usage limits, live queue state, training time estimates, and credit balance.\n Use BEFORE large jobs to check GPU availability and estimate wait time.\naction=request_compute: Provisions an ephemeral cloud burst EC2 instance. Data is in shared R2 — no re-upload needed. Wait ~3 min after requesting before submitting jobs.\nNOT FOR: Training itself — use jobs(action=train_map). This tool only manages the account and compute lease.",{action:o.enum(["status","request_compute","compute_status","release_compute","history","add_funds"]).describe("status: plan/license/queue info; request_compute: provision burst; compute_status: check active lease; release_compute: stop lease; history: recent compute usage; add_funds: instructions"),tier:o.string().optional().describe("action=request_compute: tier ID (e.g. cpu-8, gpu-t4). Omit to list options."),duration_minutes:o.number().optional().describe("action=request_compute: lease duration in minutes (default: 60)"),limit:o.number().optional().describe("action=history: number of records to return (default: 10)")},async({action:e,tier:t,duration_minutes:o,limit:a})=>{if("status"===e){const e=await _("GET","/v1/system/info"),t=e.plan??{},o=e.backend??{},a=e.status??{},n=e.training_time_estimates_seconds??{},r=e.worker_topology??{},i=t.gpu_enabled??e.gpu_available??!1?o.gpu_model?`GPU (${o.gpu_model}${o.gpu_vram_gb?`, ${o.gpu_vram_gb}GB`:""})`:"GPU":"CPU only",s=e=>-1===e||"-1"===e?"unlimited":String(e??"?"),l=await _("GET","/v1/compute/history?limit=5").catch(()=>null),c=await _("GET","/v1/compute/lease").catch(()=>null),d=[`Plan: ${String(t.tier??"unknown").charAt(0).toUpperCase()}${String(t.tier??"unknown").slice(1)} | Compute: ${i}`,` Concurrency: ${t.max_concurrent_jobs??"?"} jobs | Datasets: ${s(t.max_datasets)} (${s(t.max_dataset_rows)} rows each)`,` Monthly Jobs: ${s(t.max_monthly_jobs)} | Grid Size: ${s(t.max_grid_size)} | Features: ${s(t.max_features)}`];l&&d.push(` Credits: $${(l.credit_balance_cents/100).toFixed(2)} remaining`),o.memory_gb&&d.push(` Backend Memory: ${o.memory_gb} GB`),c&&c.lease_id&&d.push("",`Active Burst Lease: ${c.tier} | ${Math.round(c.time_remaining_ms/6e4)} min left`);const u=Number(a.running_jobs??e.running_jobs??0),p=Number(a.pending_jobs??e.pending_jobs??0),m=Number(n?.total||0);if(d.push("",`Live Queue: ${u} running | ${p} pending | ~${Math.round((p+1)*m/60)} min wait`),void 0!==r.num_workers&&d.push(`Workers: ${r.num_workers}×${r.threads_per_worker} threads`),Object.keys(n).length>0){d.push("","Training Time Estimates:");for(const[e,t]of Object.entries(n))"formula"!==e&&d.push(` ${e}: ~${t}s`)}return{content:[{type:"text",text:d.join("\n")}]}}if("request_compute"===e){if(!t)return{content:[{type:"text",text:"Available Compute Tiers:\nCPU Tiers:\n cpu-8: 16 vCPUs, 32 GB RAM (~$0.20/hr)\n cpu-16: 32 vCPUs, 64 GB RAM (~$0.20/hr)\n cpu-24: 48 vCPUs, 96 GB RAM (~$0.28/hr)\n cpu-32: 64 vCPUs, 128 GB RAM (~$0.42/hr)\n cpu-48: 96 vCPUs, 192 GB RAM (~$0.49/hr)\nGPU Tiers:\n gpu-t4: 8 vCPUs, 32 GB, T4 16GB VRAM (~$0.22/hr)\n gpu-t4x: 16 vCPUs, 64 GB, T4 16GB VRAM (~$0.36/hr)\n gpu-t4xx: 32 vCPUs, 128 GB, T4 16GB VRAM (~$0.27/hr)\n gpu-l4: 8 vCPUs, 32 GB, L4 24GB VRAM (~$0.41/hr)\n gpu-l4x: 16 vCPUs, 64 GB, L4 24GB VRAM (~$0.37/hr)\n gpu-a10: 8 vCPUs, 32 GB, A10G 24GB VRAM (~$0.51/hr)\n gpu-a10x: 16 vCPUs, 64 GB, A10G 24GB VRAM (~$0.52/hr)"}]};const e=await _("POST","/v1/compute/lease",{tier:t,duration_minutes:o}),a="postpaid"===e.billing_mode?`Billing: Postpaid (usage logged, billed retrospectively)\nAccrued Balance: $${(e.credit_balance_cents/100).toFixed(2)}`:`Credits Remaining After Reserve: $${(e.credit_balance_cents/100).toFixed(2)}`;return{content:[{type:"text",text:`Compute Lease Requested:\nLease ID: ${e.lease_id}\nStatus: ${e.status}\nEstimated Wait: ${e.estimated_wait_minutes} minutes\nEstimated Cost: $${(e.estimated_cost_cents/100).toFixed(2)}\n${a}\n\nIMPORTANT: Cloud burst active. Data is pulled from shared Cloudflare R2, so you do NOT need to re-upload datasets. Just wait ~3 minutes and check status.`}]}}if("compute_status"===e){const e=await _("GET","/v1/compute/lease");return"none"!==e.status&&e.lease_id?{content:[{type:"text",text:`Active Compute Lease:\nLease ID: ${e.lease_id}\nStatus: ${e.status}\nTier: ${e.tier} (${e.instance_type})\nTime Remaining: ${Math.round(e.time_remaining_ms/6e4)} minutes`}]}:{content:[{type:"text",text:"No active lease -- running on default Primary Server."}]}}if("release_compute"===e){const e=await _("DELETE","/v1/compute/lease"),t="postpaid"===e.billing_mode?`Cost Logged: $${(e.cost_cents/100).toFixed(2)} (postpaid — billed retrospectively)`:`Credits Deducted: $${((e.credits_deducted||e.cost_cents)/100).toFixed(2)}`;return{content:[{type:"text",text:`Compute Released:\nDuration Billed: ${e.duration_minutes} minutes\n${t}\nBalance: $${(e.final_balance_cents/100).toFixed(2)}\n\nRouting reverted to default Primary Server.`}]}}if("history"===e){const e=await _("GET",`/v1/compute/history?limit=${a||10}`),t=e.history.map(e=>`- ${e.started_at} | ${e.tier} | ${e.duration_minutes} min | $${(e.credits_charged/100).toFixed(2)}`).join("\n");return{content:[{type:"text",text:`Credit Balance: $${(e.credit_balance_cents/100).toFixed(2)}\n\nRecent Usage:\n${t}`}]}}return"add_funds"===e?{content:[{type:"text",text:"To add funds to your account, please visit the Barivia Billing Portal (integration pending) or ask your administrator to use the CLI tool:\nbash scripts/manage-credits.sh add <org_id> <amount_usd>"}]}:{content:[{type:"text",text:`Unknown action: ${e}. Valid: status, request_compute, compute_status, release_compute, history, add_funds.`}]}}),v.prompt("info","Overview of the Barivia Mapping MCP: capabilities, workflow, tools, analysis types, and tips. Use when the user asks what this MCP can do, how to get started, or what the process is.",{},()=>({messages:[{role:"user",content:{type:"text",text:["Inform the user using this overview:","","**What it is:** Barivia MCP connects you to a mapping analytics engine that learns a 2D map from high-dimensional data for visualization, clustering, pattern discovery, and temporal analysis.","","**Core workflow:**","1. **Upload** — `datasets(action=upload)` with a CSV file path or inline data","2. **Preview** — `datasets(action=preview)` to inspect columns, stats, and detect cyclic/datetime fields","3. **Prepare** — use the `prepare_training` prompt for a guided checklist (column selection, transforms, cyclic encoding, feature weights, grid sizing)","4. **Train** — `jobs(action=train_map, dataset_id=...)` with grid size, epochs, model type, and preprocessing options. Use `preset=quick|standard|refined|high_res` for sensible defaults","5. **Monitor** — `jobs(action=status, job_id=...)` to track progress; `results(action=get, job_id=...)` to retrieve figures when complete","6. **Analyze** — `analyze` with various analysis types (see below)","7. **Feedback** — Ask the user if they'd like to submit feedback via `send_feedback` based on their experience.","8. **Iterate** — `results(action=recolor)` to change colormap, `jobs(action=compare)` to compare hyperparameters, `project(action=values)` to overlay new variables","","**Analysis types** (via `analyze`):","- `u_matrix` — cluster boundary distances","- `component_planes` — per-feature heatmaps","- `clusters` — automatic cluster detection and statistics","- `quality_report` — QE, TE, explained variance, trustworthiness, neighborhood preservation","- `hit_histogram` — data density across the map","- `transition_flow` — temporal flow patterns (requires time-ordered data)","","**Data tools:**","- `datasets(action=subset)` — filter by row range, value thresholds (gt/lt/gte/lte), equality, or set membership. Combine row_range + filter","- `project(action=expression)` — create computed columns from expressions (ratios, differences, etc.) or project onto the map","- `project(action=values)` — overlay a pre-computed array onto a trained map","","**Output options:** Format (png/pdf/svg) and colormap (coolwarm, viridis, plasma, inferno, etc.) can be set at training or changed later via results(action=recolor).","","**Key tools:** datasets, jobs (train_map/status/list/...), results, analyze, project, inference, account, guide_barsom_workflow, explore_map.","","**Tips:**","- Always `datasets(action=preview)` before training to understand your data","- Use `account(action=status)` to check GPU availability, queue depth, and plan limits before large jobs","- Start with `preset=quick` for fast iteration, then `refined` for publication quality","- For time-series data, consider `transition_flow` after training","","Keep the reply scannable with headers and bullet points."].join("\n")}}]})),v.prompt("prepare_training","Guided pre-training checklist. Use after uploading a dataset and before calling jobs(action=train_map). Walks through data inspection, column selection, transforms, cyclic/temporal features, weighting, subsetting, and grid sizing.",{dataset_id:o.string().describe("Dataset ID to prepare for training")},async({dataset_id:e})=>{let t=`Please run datasets(action="preview", dataset_id="${e}") first, then call jobs(action=train_map, dataset_id="${e}", ...) with appropriate parameters or preset.`;try{const o=await _("GET",`/v1/docs/prepare_training?dataset_id=${e}`);o.prompt&&(t=o.prompt)}catch(e){}return{messages:[{role:"user",content:{type:"text",text:t}}]}}),v.tool("inference",'Use a trained map as a persistent inference artifact — score new data, enrich the training CSV, compare datasets, or generate a PDF report.\n\n| Action | Use when | Timing |\n|--------|----------|--------|\n| predict | Scoring new/unseen observations against the trained map | 5–120s |\n| enrich | Appending BMU coordinates + cluster_id to the original training CSV | 5–60s |\n| compare | Comparing hit distributions of a second dataset against training (drift, A/B) | 30–120s |\n| report | Get a report manifest (artifact keys + URLs) to build your own report in Quarto/Notebook/script | Immediate |\n\npredict/enrich/compare are async; same polling as train_som: jobs(action=status, job_id=<returned_id>). When complete, get artifacts via results(action=download, job_id=<returned_id>) (e.g. enriched.csv for enrich, report figures for report).\nreport is synchronous: returns a manifest of primitives (figures, cluster_summary, metrics) and presigned URLs so the client composes and renders the report. No fixed PDF template. To download figures or build a PDF, use results(action=download, job_id=<training_job_id>) or the presigned URLs in the manifest.\nNOT FOR: Retraining or changing the map — all actions treat the trained map as frozen.\nESCALATION: If any action returns "missing column", verify column names with datasets(action=preview). Column names are case-sensitive and must match the training feature set exactly.\n\naction=predict: Returns predictions.csv with row_id, bmu_x, bmu_y, bmu_node_index, cluster_id, quantization_error.\n Rows must use the same schema as training (including cyclic-expanded columns, e.g. key_cos, key_sin not raw key). High QE = row is far from its nearest prototype = potential anomaly. Accepts dataset_id OR inline rows (≤500).\naction=enrich: Uses the job\'s training dataset; do not pass dataset_id. Returns enriched.csv — original training CSV + bmu_x, bmu_y, bmu_node_index, cluster_id. When complete, get enriched.csv via results(action=download, job_id=<returned_enrich_job_id>). Filename: enriched.csv.\naction=compare: dataset_id must refer to a dataset with the same feature set as the training data (same column names and preprocessing, including cyclic expansion). Returns density-diff heatmap (positive = B gained, negative = lost). Positive nodes: dataset_b has more density here. Negative: training had more. Near-zero: minimal drift.\naction=report: Returns a report manifest for the given job_id (job must be completed). Includes figure_manifest (logical names → filenames), download_urls for all artifacts, cluster_summary when available, and summary metrics. Stakeholder report PDF (if generated) is available via results(action=download, job_id=<training_job_id>), filename e.g. report.pdf. Use results(action=get) and this manifest to fetch figures/data and render your own PDF (e.g. Quarto, Jupyter). See docs: BUILD_YOUR_OWN_REPORT.md.',{action:o.enum(["predict","enrich","compare","report"]).describe("predict: score new data; enrich: annotate training CSV with BMU coords; compare: drift/cohort diff heatmap; report: manifest of primitives for custom report"),job_id:o.string().describe("Job ID of a completed map training job"),dataset_id:o.string().optional().describe("action=predict/compare: Dataset ID. predict=input data to score; compare=dataset B to compare against training."),rows:o.array(o.record(o.string(),o.number())).optional().describe("action=predict: inline rows to score (max 500). Each object maps feature name → value."),colormap:o.string().optional().describe("action=compare: colormap for diff heatmap (default: balance). action=report: n/a."),output_format:o.enum(["png","pdf","svg"]).optional().default("png").describe("action=compare: output format for heatmap (default: png)"),output_dpi:o.number().int().min(1).max(4).optional().default(2).describe("action=compare: DPI scale (default: 2)"),top_n:o.number().int().min(1).max(50).optional().default(10).describe("action=compare: number of top gained/lost nodes to report (default: 10)")},async({action:e,job_id:t,dataset_id:o,rows:a,colormap:n,output_format:r,output_dpi:i,top_n:s})=>{if("predict"===e){if(!o&&!a)throw new Error("inference(predict) requires dataset_id or rows");const e={};o&&(e.dataset_id=o),a&&(e.rows=a);const n=(await _("POST",`/v1/results/${t}/predict`,e)).id,r=await y(n,12e4);if("completed"===r.status){const e=await _("GET",`/v1/results/${n}`),t=e.summary??{},o=e.download_urls??{};return{content:[{type:"text",text:[`Predictions complete — job: ${n}`,`Rows scored: ${t.n_rows??"?"}`,`Mean QE: ${void 0!==t.mean_qe?Number(t.mean_qe).toFixed(4):"N/A"} | Max QE: ${void 0!==t.max_qe?Number(t.max_qe).toFixed(4):"N/A"}`,`Clusters: ${Object.keys(t.cluster_counts??{}).length}`,"Output: predictions.csv (row_id, bmu_x, bmu_y, bmu_node_index, cluster_id, quantization_error)",o["predictions.csv"]?`Download: ${o["predictions.csv"]}`:""].filter(Boolean).join("\n")}]}}return"failed"===r.status?{content:[{type:"text",text:`inference(predict) job ${n} failed: ${r.error??"unknown error"}`}]}:{content:[{type:"text",text:`inference(predict) job ${n} submitted. Poll with jobs(action=status, job_id="${n}").`}]}}if("enrich"===e){const e=(await _("POST",`/v1/results/${t}/enrich_dataset`,{})).id,o=await y(e,6e4);if("completed"===o.status){const t=await _("GET",`/v1/results/${e}`),o=t.summary??{},a=t.download_urls??{};return{content:[{type:"text",text:[`Enriched dataset ready — job: ${e}`,`Rows: ${o.n_rows??"?"} | Clusters: ${o.n_clusters??"?"}`,"Appended: bmu_x, bmu_y, bmu_node_index, cluster_id",a["enriched.csv"]?`Download: ${a["enriched.csv"]}`:""].filter(Boolean).join("\n")}]}}return"failed"===o.status?{content:[{type:"text",text:`inference(enrich) job ${e} failed: ${o.error??"unknown error"}`}]}:{content:[{type:"text",text:`inference(enrich) job ${e} submitted. Poll with jobs(action=status, job_id="${e}").`}]}}if("compare"===e){if(!o)throw new Error("inference(compare) requires dataset_id (dataset B)");const e={dataset_id:o,output_format:r,output_dpi:i,top_n:s};n&&(e.colormap=n);const a=(await _("POST",`/v1/results/${t}/compare_datasets`,e)).id,l=await y(a,12e4);if("completed"===l.status){const e=(await _("GET",`/v1/results/${a}`)).summary??{},t=e.top_gained_nodes??[],o=e.top_lost_nodes??[],n=e=>` node ${e.bmu_node_index??"?"} [${(e.coords??[0,0]).map(e=>Number(e).toFixed(1)).join(",")}] Δ=${Number(e.density_diff??0).toFixed(4)}`,i=[{type:"text",text:[`Dataset comparison — job: ${a}`,`Dataset A rows: ${e.n_rows_a??"?"} | Dataset B rows: ${e.n_rows_b??"?"}`,"Top gained (B > A):",...t.slice(0,5).map(n),"Top lost (A > B):",...o.slice(0,5).map(n)].join("\n")}];return await P(i,a,`density_diff.${e.output_format??r??"png"}`),{content:i}}return"failed"===l.status?{content:[{type:"text",text:`inference(compare) job ${a} failed: ${l.error??"unknown error"}`}]}:{content:[{type:"text",text:`inference(compare) job ${a} submitted. Poll with jobs(action=status, job_id="${a}").`}]}}const l=await _("GET",`/v1/results/${t}`),c=(l.summary,l.download_urls??{}),d=l.figure_manifest??[],u=l.cluster_summary;return{content:[{type:"text",text:[`Report manifest — job: ${t}`,`Use these artifacts to build your own report (Quarto, Jupyter, script). URLs expire in ${l.expires_in??900}s.`,"","Figures (figure_manifest → download_urls):",...d.slice(0,12).map(e=>` ${e.logical_name} → ${e.filename}`),d.length>12?` ... and ${d.length-12} more`:"","","Key download URLs (use get_result_image or download_urls from results(action=get)):",...Object.keys(c).filter(e=>!e.endsWith(".json")||"cluster_summary.json"===e).slice(0,8).map(e=>` ${e}: ${c[e]?.slice(0,60)}...`),"",u?.length?`Cluster summary: ${u.length} clusters (in response or GET .../cluster_summary).`:"Cluster summary: not available for this job (train with current worker to get it).","","Metrics: in summary (quantization_error, topographic_error, explained_variance, silhouette, etc.) or GET .../quality-report."].filter(Boolean).join("\n")},{type:"text",text:"Structured manifest (for automation): "+JSON.stringify({job_id:t,figure_manifest:d,has_cluster_summary:!!u?.length,download_url_keys:Object.keys(c)})}]}}),v.tool("training_guidance","Returns parameter guidance for jobs(action=train_map). Call when you need hints for grid, epochs, batch size, model, or periodic. Domain knowledge is served from the API; requires valid API key. Best for: Before or alongside jobs(action=train_map) when you need hints for grid, epochs, batch, model, or periodic. Not for: Full workflow steps — use guide_barsom_workflow or the prepare_training prompt for that.",{},async()=>({content:[{type:"text",text:await async function(){try{const e=await _("GET","/v1/training/config"),t=e?.training_hints;if(Array.isArray(t)&&t.length>0)return"Parameter guidance (from API):\n- "+t.join("\n- ");const o=e?.parameter_guidance;if(o&&"object"==typeof o)return"Parameter guidance (from API):\n- "+Object.entries(o).map(([e,t])=>`${e}: ${t}`).join("\n- ")}catch(e){if(401===e?.httpStatus||403===e?.httpStatus)throw e;return"Could not fetch parameter guidance. Check API key and connectivity."}return"No parameter guidance available."}()}]}));const N=new t;v.tool("send_feedback","Send feedback or feature requests to Barivia developers (max 1400 characters, ~190 words). Use when the user has suggestions, ran into issues, or wants something improved. Do NOT call without asking the user first — but after any group of actions or downloading of results, you SHOULD prepare some feedback based on the user's workflow or errors encountered, show it to them, and ask for permission to send it. Once they accept, call this tool.",{feedback:o.string().max(1400).describe("Feedback text (max 1400 characters)")},async({feedback:e})=>{try{return w(await _("POST","/v1/feedback",{feedback:e}))}catch(t){if(401===t?.httpStatus)try{const t=`${c}/v1/feedback`,o=await f(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({feedback:e})}),a=await o.text();if(o.ok){return w({...JSON.parse(a),note:"Feedback sent anonymously (API key invalid or expired)."})}}catch{}throw t}}),async function(){var e;e='Manage and inspect jobs.\n\n| Action | Use when |\n|--------|----------|\n| status | Polling after any async job submission — call every 10–15s |\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 — returns job_id for polling |\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), call the **training_guidance** tool or use the **prepare_training** prompt before train_map.\n\nASYNC POLLING PROTOCOL (action=status):\n- Poll every 10-15 seconds. Do NOT poll faster — 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×40+), 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×10 ~30s | 20×20 ~3–5 min | 40×40 ~15–30 min.\n\nESCALATION (action=status):\n- completed → call results(action=get) to retrieve the map and metrics\n- failed → 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: Submits a training job. Returns job_id — poll with jobs(action=status, job_id=...).\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.\naction=compare: Returns a metrics table (QE, TE, explained variance, silhouette) for 2+ jobs.\naction=cancel: Not instant — worker checks between phases. Expect up to 30s delay.\naction=delete: WARNING — job ID will no longer work with results or any other tool.',v.tool("jobs",e,{action:o.enum(["status","list","compare","cancel","delete","train_map"]).describe("status: check progress; list: see all jobs; compare: metrics table; cancel: stop job; delete: remove job + files; train_map: submit new training job"),job_id:o.string().optional().describe("Job ID — required for action=status, cancel, delete"),job_ids:o.array(o.string()).optional().describe("Array of job IDs — required for action=compare (minimum 2)"),dataset_id:o.string().optional().describe("Required for action=train_map. For action=list, filter jobs by this dataset ID."),preset:o.enum(["quick","standard","refined","high_res"]).optional(),grid_x:o.number().int().optional(),grid_y:o.number().int().optional(),epochs:o.preprocess(e=>{if(null==e)return e;if("string"==typeof e){const t=parseInt(e,10);if(!Number.isNaN(t))return t;const o=e.match(/^\[\s*(\d+)\s*,\s*(\d+)\s*\]$/);if(o)return[parseInt(o[1],10),parseInt(o[2],10)]}return e},o.union([o.number().int(),o.array(o.number().int()).length(2)]).optional()),model:o.enum(["SOM","RSOM","SOM-SOFT","RSOM-SOFT"]).optional().default("SOM"),periodic:o.boolean().optional().default(!0),columns:o.array(o.string()).optional(),cyclic_features:o.array(o.object({feature:o.string(),period:o.number()})).optional(),temporal_features:o.array(o.object({columns:o.array(o.string()),format:o.string(),extract:o.array(o.enum(["hour_of_day","day_of_year","month","day_of_week","minute_of_hour"])),cyclic:o.boolean().default(!0),separator:o.string().optional()})).optional(),feature_weights:o.record(o.number()).optional(),transforms:o.record(o.enum(["log","log1p","log10","sqrt","square","abs","invert","rank","none"])).optional(),normalize:o.union([o.enum(["all","auto"]),o.array(o.string())]).optional().default("auto"),sigma_f:o.preprocess(e=>null!=e&&"string"==typeof e?parseFloat(e):e,o.number().optional()),learning_rate:o.preprocess(e=>null!=e&&"string"==typeof e?parseFloat(e):e,o.union([o.number(),o.object({ordering:o.tuple([o.number(),o.number()]),convergence:o.tuple([o.number(),o.number()])})]).optional()),batch_size:o.number().int().optional(),quality_metrics:o.union([o.enum(["fast","standard","full"]),o.array(o.string())]).optional(),backend:o.enum(["auto","cpu","gpu","gpu_graphs"]).optional().default("auto"),output_format:o.enum(["png","pdf","svg"]).optional().default("png"),output_dpi:o.enum(["standard","retina","print"]).optional().default("retina"),colormap:o.string().optional(),row_range:o.tuple([o.number().int().min(1),o.number().int().min(1)]).optional()},async e=>{const{action:t,job_id:o,job_ids:a,dataset_id:n}=e;if("train_map"===t){const{preset:t,grid_x:o,grid_y:a,epochs:r,model:i,periodic:s,columns:l,cyclic_features:c,temporal_features:d,feature_weights:u,transforms:p,normalize:m,sigma_f:f,learning_rate:g,batch_size:h,quality_metrics:b,backend:y,output_format:v,output_dpi:$,colormap:x,row_range:j}=e;let E={};try{const e=await _("GET","/v1/training/config");E=e?.presets||{}}catch(e){if(401===e.httpStatus||403===e.httpStatus)throw e;if(t&&void 0===o&&void 0===r)throw new Error("Could not fetch training config from server, and missing explicit grid/epochs.")}if(!n)throw new Error("jobs(train_map) requires dataset_id");const A=t?E[t]:void 0,S={model:i,periodic:s,normalize:m};void 0!==o&&void 0!==a?S.grid=[o,a]:A&&(S.grid=A.grid),void 0!==r?S.epochs=r:A&&(S.epochs=A.epochs),c?.length&&(S.cyclic_features=c),l?.length&&(S.columns=l),p&&Object.keys(p).length>0&&(S.transforms=p),d?.length&&(S.temporal_features=d),u&&Object.keys(u).length>0&&(S.feature_weights=u),void 0!==f&&(S.sigma_f=f),void 0!==g&&(S.learning_rate=g),void 0!==h?S.batch_size=h:A&&(S.batch_size=A.batch_size),void 0!==b&&(S.quality_metrics=b),void 0!==y&&"auto"!==y?S.backend=y:A?.backend&&(S.backend=A.backend),S.output_format=v??"png";const T={standard:1,retina:2,print:4};$&&"retina"!==$&&(S.output_dpi=T[$]??2),x&&(S.colormap=x),j&&j.length>=2&&j[0]<=j[1]&&(S.row_range=j);const P=await _("POST","/v1/jobs",{dataset_id:n,params:S}),N=P.id;try{const e=await _("GET","/v1/system/info"),t=Number(e.status?.pending_jobs??e.pending_jobs??0),o=Number(e.training_time_estimates_seconds?.total??(e.gpu_available?45:120)),a=Math.round(t*o/60);P.message=a>1?`Job submitted. You are #${t+1} in queue. Estimated wait: ~${a} min. Poll with jobs(action=status, job_id="${N}").`:`Job submitted. Poll with jobs(action=status, job_id="${N}").`}catch{P.message=`Job submitted. Poll with jobs(action=status, job_id="${N}").`}return w(P)}if("status"===t){if(!o)throw new Error("jobs(status) requires job_id");const e=await _("GET",`/v1/jobs/${o}`),t=e.status,a=100*(e.progress??0),n=null!=e.label&&""!==e.label?String(e.label):null;let r=`${n?`Job ${n} (id: ${o})`:`Job ${o}`}: ${t} (${a.toFixed(1)}%)`;return"completed"===t?r+=` | Results ready. Use results(action=get, job_id="${o}") to retrieve.`:"failed"===t&&(r+=` | Error: ${e.error??"unknown"}`),{content:[{type:"text",text:r}]}}if("list"===t){const e=n?`/v1/jobs?dataset_id=${n}`:"/v1/jobs",t=await _("GET",e);if(Array.isArray(t)){const e=t.map(e=>{const t=String(e.id??""),o=String(e.status??""),a=null!=e.label&&""!==e.label?String(e.label):null;return a?`${a} (id: ${t}) — ${o}`:`id: ${t} — ${o}`});return{content:[{type:"text",text:e.length>0?e.join("\n"):"No jobs found."}]}}return w(t)}if("compare"===t){if(!a||a.length<2)throw new Error("jobs(compare) requires at least 2 job_ids");const e=a.join(","),t=(await _("GET",`/v1/jobs/compare?ids=${e}`)).comparisons??[],o=["| Job ID | Grid | Epochs | Model | QE | TE | Expl.Var | Silhouette |","|--------|------|--------|-------|----|----|----------|------------|"];for(const e of t){if(e.error){o.push(`| ${e.job_id.slice(0,8)}... | — | — | — | ${e.error} | — | — | — |`);continue}const t=e.grid,a=e.epochs,n=e=>null!=e?Number(e).toFixed(4):"—";o.push(`| ${e.job_id.slice(0,8)}... | ${t?`${t[0]}×${t[1]}`:"—"} | ${a?`${a[0]}+${a[1]}`:"—"} | ${e.model??"—"} | ${n(e.quantization_error)} | ${n(e.topographic_error)} | ${n(e.explained_variance)} | ${n(e.silhouette)} |`)}return{content:[{type:"text",text:o.join("\n")}]}}if("cancel"===t){if(!o)throw new Error("jobs(cancel) requires job_id");return w(await _("POST",`/v1/jobs/${o}/cancel`))}if("delete"===t){if(!o)throw new Error("jobs(delete) requires job_id");return w(await _("DELETE",`/v1/jobs/${o}`))}throw new Error("Invalid action")}),await v.connect(N)}().catch(console.error);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barivia/barsom-mcp",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "barSOM MCP proxy — connect any MCP client to the barSOM cloud API for Self-Organizing Map analytics",
5
5
  "keywords": [
6
6
  "mcp",