Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

Add new agent control layer and web socket APIs (#44)

7 months ago

2e28ef8
Authored
Max Weinbach3/17/2026, 3:49:45 AM
* Replace subagent websocket API

* Replace subagent infrastructure

* Filter unavailable models from UI

* Review codex/subagent-rearchi diff

* Add .agent-user to gitignore

* Enable cross-provider child routing

* Add cross-provider child routing

* Enable cross-provider child agents

* Add cross-provider child routing

* Delete memory.sqlite

* Validate agent todo scrollability

* fix: close child-agent MCP and raw-loop routing gaps

* Add harness config docs and expand runbook coverage

* fix: close remaining child-agent review gaps

* fix: pass delegate tools into runtime turns

* fix: preserve raw-loop child history between runs

* Fix child agent resume and wait state handling

* Fix agent replay hydration and malformed tool call retries

* Fix global Cowork auth resolution for Codex and provider flows

* Normalize stale child execution states after rehydration

* fix child agent status and snapshot persistence

* Skip flaky remote agent MCP test in default CI

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Parent646d708

174 files changed
  • .gitignore+1−0
  • README.md+1−0
  • apps/TUI/app.tsx+7−0
  • apps/TUI/component/dialog-command.tsx+9−0
  • apps/TUI/component/dialog-provider.tsx+1−0
  • apps/TUI/component/prompt/slash-commands.ts+10−0
  • apps/TUI/context/local.test.ts+82−0
  • apps/TUI/context/local.tsx+98−18
  • apps/TUI/context/sync.tsx+81−2
  • apps/TUI/context/syncEventReducer.ts+54−4
  • apps/TUI/context/syncTypes.ts+24−1
  • apps/TUI/routes/session/dialog-subagent.tsx+176−6
  • apps/TUI/routes/session/sidebar.tsx+28−0
  • apps/desktop/electron/services/persistence.ts+21−1
  • apps/desktop/src/app/store.actions/bootstrap.ts+19−3
  • apps/desktop/src/app/store.actions/explorer.ts+0−1
  • apps/desktop/src/app/store.actions/mcp.ts+0−1
  • apps/desktop/src/app/store.actions/provider.ts+0−1
  • apps/desktop/src/app/store.actions/skills.ts+0−1
  • apps/desktop/src/app/store.actions/thread.ts+3−2
  • apps/desktop/src/app/store.actions/workspace.ts+4−2
  • apps/desktop/src/app/store.actions/workspaceDefaults.ts+37−11
  • apps/desktop/src/app/store.feedMapping.ts+47−1
  • apps/desktop/src/app/store.helpers.ts+7−7
  • apps/desktop/src/app/store.helpers/controlSocket.ts+4−1
  • apps/desktop/src/app/store.helpers/runtimeState.ts+13−0
  • apps/desktop/src/app/store.helpers/threadEventReducer.ts+107−2
  • apps/desktop/src/app/types.ts+24−1
  • apps/desktop/src/lib/desktopSchemas.ts+4−1
  • apps/desktop/src/lib/modelChoices.ts+34−3
  • apps/desktop/src/lib/wsProtocol.ts+1−0
  • apps/desktop/src/styles.css+0−18
  • apps/desktop/src/ui/ChatView.tsx+6−2
  • apps/desktop/src/ui/ContextSidebar.tsx+76−3
  • apps/desktop/src/ui/chat/activityGroups.ts+2−2
  • apps/desktop/src/ui/file-explorer/WorkspaceFileExplorer.tsx+1−1
  • apps/desktop/src/ui/settings/pages/WorkspacesPage.tsx+215−26
  • apps/desktop/test/context-sidebar.test.tsx+223−0
  • apps/desktop/test/developer-page.test.tsx+5−5
  • apps/desktop/test/modelChoices.test.ts+98−2
  • apps/desktop/test/persistence-state-sanitization.test.ts+77−1
  • apps/desktop/test/store-feed-mapping.test.ts+75−1
  • apps/desktop/test/thread-reconnect.test.ts+62−0
  • apps/desktop/test/workspace-mcp-editor.test.ts+1−1
  • apps/desktop/test/workspace-settings-sync.test.ts+136−21
  • apps/desktop/test/workspaces-page.test.ts+104−2
  • docs/architecture.md+1−1
  • docs/harness/config.md+84−0
  • docs/harness/context.md+11−2
  • docs/harness/index.md+1−0
  • docs/harness/observability.md+23−0
  • docs/harness/runbook.md+75−9
  • docs/websocket-protocol.md+261−60
  • prompts/sub-agents/base.md+10−0
  • prompts/sub-agents/default.md+4−0
  • prompts/sub-agents/explorer.md+4−0
  • prompts/sub-agents/research.md+3−5
  • prompts/sub-agents/reviewer.md+4−0
  • prompts/sub-agents/worker.md+4−0
  • prompts/system-models/claude-haiku-4-5.md+1−1
  • prompts/system-models/claude-opus-4-6.md+1−1
  • prompts/system-models/claude-sonnet-4-6.md+1−1
  • prompts/system-models/gemini-3-pro-preview.md+1−1
  • prompts/system-models/gemini-3.1-pro-preview.md+1−1
  • prompts/system-models/gpt-5.2.md+1−1
  • prompts/system-models/gpt-5.4.md+1−1
  • prompts/system.md+1−1
  • scripts/check_docs.ts+4−0
  • scripts/run_raw_agent_loops.ts+376−125
  • src/agent.ts+13−5
  • src/config.ts+46−19
  • src/connect.ts+3−2
  • src/mcp/index.ts+1−0
  • src/models/childAgentModelInfo.ts+96−0
  • src/models/childModelRouting.ts+138−0
  • src/prompt.ts+127−3
  • src/providerStatus.ts+2−1
  • src/providers/authRegistry.ts+8−5
  • src/providers/catalog.ts+15−0
  • src/providers/connectionCatalog.ts+2−1
  • src/providers/index.ts+4−0
  • src/providers/modelAdapter.ts+5−2
  • src/runtime/openaiResponsesModel.ts+7−8
  • src/runtime/openaiResponsesRuntime.ts+8−0
  • src/runtime/piRuntime.ts+48−5
  • src/server/agents/AgentControl.ts+231−0
  • src/server/agents/DelegateRunner.ts+113−0
  • src/server/agents/StatusBus.ts+76−0
  • src/server/agents/modelRouter.ts+159−0
  • src/server/agents/roles.ts+79−0
  • src/server/agents/toolPolicy.ts+19−0
  • src/server/agents/types.ts+75−0
  • src/server/protocol.ts+72−14
  • src/server/protocolEventParser.ts+54−12
  • src/server/protocolParser.ts+46−10
  • src/server/session/AgentSession.ts+168−39
  • src/server/session/ProviderAuthManager.ts+29−11
  • src/server/session/ProviderCatalogManager.ts+7−4
  • src/server/session/SessionAdminManager.ts+113−17
  • src/server/session/SessionContext.ts+48−27
  • src/server/session/SessionMetadataManager.ts+50−28
  • src/server/session/SessionRuntimeSupport.ts+8−1
  • src/server/session/SessionSnapshotBuilder.ts+80−3
  • src/server/session/TurnExecutionManager.ts+177−53
  • src/server/sessionDb.ts+32−5
  • src/server/sessionDb/mappers.ts+93−13
  • src/server/sessionDb/migrations.ts+13−0
  • src/server/sessionDb/repository.ts+226−13
  • src/server/sessionStore.ts+257−17
  • src/server/startServer.ts+149−169
  • src/server/startServer/dispatchClientMessage.ts+18−4
  • src/shared/agents.ts+84−0
  • src/shared/persistentSubagents.ts+1−38
  • src/tools/api-keys.ts+3−2
  • src/tools/context.ts+21−14
  • src/tools/exa.ts+2−10
  • src/tools/index.ts+15−9
  • src/tools/persistentAgents.ts+34−35
  • src/tools/spawnAgent.ts+35−187
  • src/types.ts+21−1
  • src/utils/authHome.ts+24−0
  • tasks/lessons.md+13−0
  • test/agent.remote-mcp.grep.test.ts+4−4
  • test/agent.test.ts+24−1
  • test/agent.toolloop.test.ts+1−1
  • test/agentControl.test.ts+583−0
  • test/agentSocket.parse.test.ts+21−11
  • test/config.test.ts+79−14
  • test/delegateRunner.test.ts+110−0
  • test/fixtures/mcp-echo-server.mjs+3−0
  • test/mcp.auth-store.test.ts+1−1
  • test/mcp.config-registry.test.ts+1−1
  • test/mcp.local.integration.test.ts+2−1
  • test/mcp.test.ts+1−1
  • test/models.registry.test.ts+9−0
  • test/observability.otel-extended.test.ts+1−1
  • test/observability.otel.test.ts+1−1
  • test/observability.runtime.test.ts+1−1
  • test/permissions.test.ts+1−1
  • test/persistentAgents.tool.test.ts+55−100
  • test/prompt.test.ts+48−8
  • test/protocol.test.ts+149−26
  • test/providers/baseten.test.ts+2−2
  • test/providers/codex-cli.test.ts+14−12
  • test/providers/config-switching.test.ts+1−1
  • test/providers/helpers.ts+1−1
  • test/providers/index.test.ts+7−7
  • test/providers/modelAdapter.test.ts+13−9
  • test/providers/nvidia.test.ts+2−2
  • test/providers/saved-keys.test.ts+194−158
  • test/providers/together.test.ts+2−2
  • test/run_raw_agent_loops.test.ts+335−0
  • test/runtime.openai-responses-runtime.test.ts+67−4
  • test/runtime.pi-options.test.ts+4−4
  • test/runtime.pi-runtime.test.ts+100−42
  • test/runtime.selection.test.ts+6−6
  • test/server.commands.test.ts+1−1
  • test/server.test.ts+284−50
  • test/session-db-mappers.test.ts+39−8
  • test/session-db.test.ts+98−14
  • test/session-store.test.ts+3−3
  • test/session-title-service.test.ts+1−1
  • test/session.managers.test.ts+1−1
  • test/session.stream-pipeline.test.ts+1−1
  • test/session.test.ts+376−54
  • test/sessionSnapshotBuilder.test.ts+234−0
  • test/shared/persistentSubagents.test.ts+11−8
  • test/spawnAgent.tool.test.ts+84−251
  • test/statusBus.test.ts+25−0
  • test/tools.exa.test.ts+20−3
  • test/tools.test.ts+159−70
  • test/tui.syncEventReducer.test.ts+89−0
  • test/workspace-backups.test.ts+1−1
  • test_model.ts+1−1