You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A focused follow-up to 0.11.0. The headline user-facing change is a new trim operation for stripping whitespace — available everywhere the string ops live (Compute, qualifiers, and templates). Under the hood, the MCP server got a substantial hardening pass, the SOLARO AI co-pilot now edits your live editor buffer instead of clobbering it through disk, and the training pipeline learned to actually train on tool-use conversations.
trim — strip leading and trailing whitespace (#…)
trim joins uppercase / lowercase as a first-class string operation, wired through all three surfaces that share the string ops:
Compute the <clean: trim> from <raw-input>.
Compute: Compute the <clean: trim> from <text>.
Qualifier: <value: trim> in any read position.
Templates: {{ value | trim }} in the template engine.
Strips leading and trailing whitespace and newlines; non-string inputs are stringified first, matching the other string ops.
MCP server hardening
aro mcp got a correctness and robustness pass across the protocol, tool execution, and resource layers.
Protocol / JSON-RPC
Returns real JSON-RPC errors — method-not-found (-32601), invalid-params (-32602), resource-not-found (-32002) — instead of burying failures inside a success result, and preserves the request id on every error path.
initialize now negotiates protocolVersion: it echoes the client's requested version when supported, else falls back to ours.
StdioTransport no longer treats a blank input line as EOF — a stray newline previously shut the whole server down.
Tool execution (aro_run / aro_compile)
Timeout is clamped to [1, 600]; a negative timeout previously trapped on UInt64 conversion and crashed the server.
stdout/stderr are drained concurrently before waiting, so a child emitting more than the pipe buffer can't deadlock; partial output is captured on kill.
Invokes the running executable (Bundle.main) instead of /usr/bin/env aro, so run/compile work under minimal-PATH launchers (e.g. Claude Desktop).
Timeouts are reported distinctly (SIGTERM → SIGKILL escalation), and returned output is capped at 64 KB per stream.
Resources
Rejects .. in resource URIs and confirms resolved paths stay within the base directory — a path-traversal guard.
The co-pilot's file writes previously went to disk and triggered a whole-file reload that wiped the editor undo stack and could clobber concurrent typing. It also had no project awareness and only saw the open file via disk.
Edits to the open document are now routed into the live editor buffer via optional host hooks (liveText / applyEdit / applyWrite), falling back to a disk write only when the file isn't open or the match isn't unique. AROCodeEditor applies them through an undoable STTextView.replaceCharacters, preserving undo and the caret.
The model now sees unsaved edits — focusFileMessage prefers the live editor buffer over disk.
A new OPEN PROJECT context block (source-file list) gives the model project awareness, gated so only editor embedders get it, not the plain CLI.
Training pipeline
Tool-use conversations now reach fine-tuning. The dataset assembler dropped every multi-turn messages[] tool-use trace as "empty" (it required both instruction and output), so no tool-calling conversation ever reached the trainer. Those traces are now carried through as tool_calling, unblocking the fix-chain / failure-recovery / open-file traces too.
11_function_calling adds 14 multi-turn read → analyse → check traces exercising every tool, with a coverage guard that fails the notebook if any core tool lacks a multi-turn trace.
META_PIPELINE: warm-start fine-tune timeout removed (a ~4h35m LoRA run was being killed at the old 4h cap before checkpoint selection), headless-safe progress display, per-notebook done/failed/skipped tally, and --from NN resume.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
ARO 0.11.1
A focused follow-up to 0.11.0. The headline user-facing change is a new
trimoperation for stripping whitespace — available everywhere the string ops live (Compute, qualifiers, and templates). Under the hood, the MCP server got a substantial hardening pass, the SOLARO AI co-pilot now edits your live editor buffer instead of clobbering it through disk, and the training pipeline learned to actually train on tool-use conversations.trim— strip leading and trailing whitespace (#…)trimjoinsuppercase/lowercaseas a first-class string operation, wired through all three surfaces that share the string ops:Compute the <clean: trim> from <text>.<value: trim>in any read position.{{ value | trim }}in the template engine.Strips leading and trailing whitespace and newlines; non-string inputs are stringified first, matching the other string ops.
MCP server hardening
aro mcpgot a correctness and robustness pass across the protocol, tool execution, and resource layers.Protocol / JSON-RPC
-32601), invalid-params (-32602), resource-not-found (-32002) — instead of burying failures inside a success result, and preserves the requestidon every error path.initializenow negotiatesprotocolVersion: it echoes the client's requested version when supported, else falls back to ours.StdioTransportno longer treats a blank input line as EOF — a stray newline previously shut the whole server down.Tool execution (
aro_run/aro_compile)[1, 600]; a negative timeout previously trapped onUInt64conversion and crashed the server.Bundle.main) instead of/usr/bin/env aro, so run/compile work under minimal-PATH launchers (e.g. Claude Desktop).Resources
..in resource URIs and confirms resolved paths stay within the base directory — a path-traversal guard.The
aro mcphelp now lists all 8 tools.SOLARO co-pilot — live-buffer edits + project context
The co-pilot's file writes previously went to disk and triggered a whole-file reload that wiped the editor undo stack and could clobber concurrent typing. It also had no project awareness and only saw the open file via disk.
liveText/applyEdit/applyWrite), falling back to a disk write only when the file isn't open or the match isn't unique.AROCodeEditorapplies them through an undoableSTTextView.replaceCharacters, preserving undo and the caret.focusFileMessageprefers the live editor buffer over disk.Training pipeline
messages[]tool-use trace as "empty" (it required both instruction and output), so no tool-calling conversation ever reached the trainer. Those traces are now carried through astool_calling, unblocking the fix-chain / failure-recovery / open-file traces too.11_function_callingadds 14 multi-turn read → analyse → check traces exercising every tool, with a coverage guard that fails the notebook if any core tool lacks a multi-turn trace.--from NNresume.Full diff:
0.11.0...0.11.1All reactions