Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@ self-hosted-runner:
- evalops-internal
- evalops-maestro-internal-rbe
- evalops-maestro-rbe
- blacksmith-4vcpu-ubuntu-2404
- blacksmith-4vcpu-ubuntu-2404-arm
- blacksmith-6vcpu-macos-15
- blacksmith-8vcpu-ubuntu-2404
36 changes: 36 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,42 @@ versioning when releases are cut.
and keep scheduled public runs inert so public publishing stays downstream of
the internal source-of-truth release.

## [0.10.54] - 2026-07-20

### Added

- Add Grok-inspired turn status row (#2933). <!-- maestro-release-note:d52b4f419d04 -->
- Move agents command to Rust (#2924). <!-- maestro-release-note:bf73aac1a8dd -->
- Adopt Grok-inspired session chrome (#2926). <!-- maestro-release-note:78870912899b -->
- Migrate modes command to Rust (#2921). <!-- maestro-release-note:0ba92aff6ac1 -->

### Changed

- Fix eval Guardian failure and unblock 0.10.53 (#2935). <!-- maestro-release-note:d85324f0c7ba -->
- Move OpenAI CLI authentication to Rust (#2934). <!-- maestro-release-note:81135348fd29 -->
- Move shared-memory CLI fully to Rust (#2932). <!-- maestro-release-note:bc9a4c8510a2 -->
- Migrate Anthropic CLI stub to Rust (#2930). <!-- maestro-release-note:ba98bd25cc03 -->
- Delete removed TypeScript exec runtime stub (#2931). <!-- maestro-release-note:55ce9b2dabb3 -->
- Move painter CLI fully to Rust (#2927). <!-- maestro-release-note:336a84ac9d85 -->
- Finish portable session transfer in Rust (#2929). <!-- maestro-release-note:1d7545b81aa8 -->
- Move skill CLI and package runtime to Rust (#2919). <!-- maestro-release-note:f3a840301d0a -->
- [maestro] Move update command to Rust and delete TypeScript handler (#2918). <!-- maestro-release-note:5f73114f3beb -->
- [maestro] Delete legacy TypeScript hosted runner command (#2917). <!-- maestro-release-note:d0c2ec8a540c -->
- [maestro] Delete migrated TypeScript utility commands (#2916). <!-- maestro-release-note:cf20e9e09c07 -->
- [maestro] Move hosted runner lifecycle to Rust (#2914). <!-- maestro-release-note:00b2db4e7c8b -->

### Fixed

- Package stripped Rust TUI binaries for every supported npm platform and build
them on Blacksmith runners before publishing.
- Make packed and registry install smokes launch a native Rust command so a
missing `vendor/maestro-tui` payload blocks publication.
- Hand off utilities before replay setup (#2925). <!-- maestro-release-note:d9552c52997f -->
- Align native utility global flags (#2923). <!-- maestro-release-note:0c5f04580384 -->
- Consume named worktree before native utilities (#2922). <!-- maestro-release-note:326239dc0057 -->
- Enforce native skill package validation (#2920). <!-- maestro-release-note:077875bf3882 -->
- Accept public runner failover variable (#2915). <!-- maestro-release-note:e94c6cadf8e5 -->

## [0.10.53] - 2026-07-20

### Added
Expand Down
2 changes: 1 addition & 1 deletion openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "Maestro Web API",
"version": "0.10.53",
"version": "0.10.54",
"description": "Auto-generated from src/web-server.ts routes. Components seeded from runtime schemas."
},
"servers": [
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@evalops/maestro",
"description": "Maestro by EvalOps - Deterministic coding agent with TUI/CLI and Web UI for AI-assisted development",
"version": "0.10.53",
"version": "0.10.54",
"private": false,
"type": "module",
"workspaces": [
Expand Down
4 changes: 2 additions & 2 deletions packages/ai/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/ai",
"version": "0.10.53",
"version": "0.10.54",
"description": "Shared Maestro AI SDK (models, transport, and agent event stream facade).",
"type": "module",
"main": "./dist/packages/ai/src/index.js",
Expand Down Expand Up @@ -131,7 +131,7 @@
"node": ">=20.0.0"
},
"dependencies": {
"@evalops/contracts": "^0.10.53",
"@evalops/contracts": "^0.10.54",
"@google/genai": "^1.29.1",
"@sinclair/typebox": "^0.34.0",
"nats": "^2.29.3"
Expand Down
4 changes: 2 additions & 2 deletions packages/consumer-sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/consumer",
"version": "0.10.53",
"version": "0.10.54",
"description": "Unified EvalOps consumer SDK for Maestro service integrations",
"type": "module",
"main": "./dist/index.js",
Expand Down Expand Up @@ -28,7 +28,7 @@
"directory": "packages/consumer-sdk"
},
"dependencies": {
"@evalops/contracts": "^0.10.53"
"@evalops/contracts": "^0.10.54"
},
"devDependencies": {
"@types/node": "^24.10.7",
Expand Down
2 changes: 1 addition & 1 deletion packages/contracts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/contracts",
"version": "0.10.53",
"version": "0.10.54",
"description": "Shared Maestro contracts for frontend/backend integration",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/maestro-core",
"version": "0.10.53",
"version": "0.10.54",
"description": "Maestro agent loop, transport, types, and sandbox primitives — the engine behind all Maestro interfaces",
"type": "module",
"main": "./dist/packages/core/src/index.js",
Expand Down
4 changes: 2 additions & 2 deletions packages/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/maestro-desktop",
"version": "0.10.53",
"version": "0.10.54",
"description": "Maestro Desktop - Beautiful Electron app for AI-assisted development",
"type": "module",
"main": "dist-electron/main/index.js",
Expand Down Expand Up @@ -37,7 +37,7 @@
"directory": "packages/desktop"
},
"dependencies": {
"@evalops/contracts": "^0.10.53",
"@evalops/contracts": "^0.10.54",
"electron-store": "^10.0.1",
"electron-updater": "^6.3.9"
},
Expand Down
6 changes: 3 additions & 3 deletions packages/github-agent/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/github-agent",
"version": "0.10.53",
"version": "0.10.54",
"description": "Autonomous GitHub agent - Maestro building Maestro",
"type": "module",
"bin": {
Expand Down Expand Up @@ -36,8 +36,8 @@
"node": ">=20.0.0"
},
"dependencies": {
"@evalops/ai": "^0.10.53",
"@evalops/contracts": "^0.10.53",
"@evalops/ai": "^0.10.54",
"@evalops/contracts": "^0.10.54",
"@octokit/rest": "^21.0.0",
"@octokit/webhooks": "^13.0.0",
"@sinclair/typebox": "^0.34.0",
Expand Down
4 changes: 2 additions & 2 deletions packages/governance-mcp-server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/governance-mcp-server",
"version": "0.10.53",
"version": "0.10.54",
"description": "MCP server exposing Platform governance proxy tools to any MCP-compatible agent.",
"type": "module",
"main": "./dist/index.js",
Expand Down Expand Up @@ -43,7 +43,7 @@
"node": ">=20.0.0"
},
"dependencies": {
"@evalops/governance": "^0.10.53",
"@evalops/governance": "^0.10.54",
"@modelcontextprotocol/sdk": "^1.25.2",
"zod": "^4.3.5"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/governance/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/governance",
"version": "0.10.53",
"version": "0.10.54",
"description": "Thin Platform governance proxy for MCP-compatible agents.",
"type": "module",
"main": "./dist/index.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/memory/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/memory",
"version": "0.10.53",
"version": "0.10.54",
"private": true,
"type": "module",
"sideEffects": false,
Expand Down
2 changes: 1 addition & 1 deletion packages/slack-agent-ui/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/slack-agent-ui",
"version": "0.10.53",
"version": "0.10.54",
"description": "Web UI for Slack Agent - Dashboard gallery, connector management, OAuth flows",
"type": "module",
"private": true,
Expand Down
6 changes: 3 additions & 3 deletions packages/slack-agent/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@evalops/slack-agent",
"version": "0.10.53",
"version": "0.10.54",
"description": "Slack teammate agent with sandbox support for Maestro",
"type": "module",
"bin": {
Expand Down Expand Up @@ -30,8 +30,8 @@
},
"dependencies": {
"@daytonaio/sdk": "^0.139.0",
"@evalops/ai": "^0.10.53",
"@evalops/contracts": "^0.10.53",
"@evalops/ai": "^0.10.54",
"@evalops/contracts": "^0.10.54",
"@sinclair/typebox": "^0.34.0",
"@slack/socket-mode": "^2.0.0",
"@slack/web-api": "^7.0.0",
Expand Down
33 changes: 31 additions & 2 deletions packages/tui-rs/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -856,8 +856,22 @@ Always use tools when they would be helpful. Be concise and direct in your respo
///
/// Exit code for the process (0 = success, non-zero = error).
pub async fn run(mut self) -> Result<i32> {
// Load workspace files for @ mentions in the input.
self.load_workspace_files();
// Paint the chrome immediately. Workspace file indexing used to run
// *before* the first frame and blocked on `rg --files --follow` of the
// entire cwd (often `$HOME`), so typing `maestro` looked hung/broken.
self.render()?;

// Index @-mention files with a bounded, killable scan (see workspace.rs).
// Kick it off on a background thread so agent spawn is not gated on it.
let (workspace_tx, workspace_rx) = std::sync::mpsc::channel();
std::thread::Builder::new()
.name("maestro-workspace-scan".into())
.spawn(move || {
let cwd = std::env::current_dir().unwrap_or_default();
let files = get_workspace_files(&cwd, 10_000);
let _ = workspace_tx.send(files);
})
.ok();

// Spawn the agent (async operation).
// This creates the channels and starts the agent task.
Expand All @@ -869,7 +883,22 @@ Always use tools when they would be helpful. Be concise and direct in your respo
}

// Main event loop - runs until should_quit is set to true.
let mut workspace_rx = Some(workspace_rx);
loop {
// Apply workspace scan results as soon as they arrive (non-blocking).
if let Some(rx) = workspace_rx.as_ref() {
match rx.try_recv() {
Ok(files) => {
self.file_search.set_files(files);
workspace_rx = None;
}
Err(std::sync::mpsc::TryRecvError::Disconnected) => {
workspace_rx = None;
}
Err(std::sync::mpsc::TryRecvError::Empty) => {}
}
}

// Render the UI to the terminal.
// This is a sync operation that writes to stdout.
self.render()?;
Expand Down
Loading
Loading