Skip to content

🤖 feat: make Project Chat the orchestration control plane - #3808

Open
ammar-agent wants to merge 65 commits into
mainfrom
fix/subagent-progress-guidance
Open

🤖 feat: make Project Chat the orchestration control plane#3808
ammar-agent wants to merge 65 commits into
mainfrom
fix/subagent-progress-guidance

Conversation

@ammar-agent

@ammar-agent ammar-agent commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Turn each project into a persistent control plane. Selecting a project now opens Project Chat, a workspace-quality chat backed by a hidden project session and a fixed, coordination-only Orchestrator. The Orchestrator creates and follows up in ordinary project workspaces, keeps running work in the background so the user can continue chatting, and explicitly manages workspace archive/removal lifecycle. Individual workspace chats remain available as drill-down views.

This also retains and extends the original sub-agent progress work in this PR: foreground task waits now hand incremental child reports to the parent as real interactions instead of encouraging another automatic wait.

Background

The old project page was primarily a New Workspace form. That made workspace creation the product's top-level action and pulled users into individual execution chats for every task. A parent that compiles, tests, or blocks on child output also stops being available as a coordinator.

Project Chat reverses that hierarchy: users talk to the project, and workspaces become durable execution units that appear in the sidebar for optional detail. The project parent delegates implementation, remains responsive to new input, and owns how long its workspaces persist.

Prior first-class Orchestrator and Chat-with-Mux implementations were evaluated as prior art. This implementation deliberately avoids a hidden WorkspaceConfig entry: historical hidden workspaces leaked into workspace-wide background jobs and downgrade behavior. Project Chat has a separate persisted session identity and storage root instead.

Implementation

Persistent project chat

  • Add a versioned ProjectConfig.projectChat contract with a backend-generated project-session_* ID.
  • Store history and session sidecars under ~/.mux/project-sessions/<session-id> while ordinary workspace sessions remain under ~/.mux/sessions.
  • Expose projects.chat.getOrCreate; the renderer consumes backend-returned virtual metadata and never synthesizes identity.
  • Keep Project Chat out of workspace.list, workspace.getInfo, sidebar workspace counts, archive lists, project-removal blockers, and generic workspace lifecycle APIs.
  • Preserve project-chat identity/history across reloads, reserve explicit, basename-backed, and generated legacy workspace identities before repairing imported Project Chat IDs, migrate colliding Project Chat state with copy-before-save and verified cleanup semantics, retain the last verified Project Chat route across transient config-read failures (or fail closed before first verification), quiesce every active owned workspace turn, and only then delete session state after stream/history/timing cleanup.

Fixed Orchestrator and continuous availability

  • Add a hidden, non-subagent built-in Orchestrator with a strict coordination-only tool policy.
  • Force the built-in definition for Project Chat even when a caller requests another agent, a project/global same-name override exists, or local agent settings disable Orchestrator.
  • Run Project Chat against the trusted project root with a local execution context, but deny direct edit/command tools; substantive implementation, compilation, and tests belong in ordinary workspace turns.
  • Default Project Chat workspace launches to background mode. New parent input backgrounds any foreground wait without stopping the child, and restart-safe terminal attention wakes Project Chat exactly once when work finishes.

Project workspace orchestration

  • Generalize durable full-workspace turns to support a Project Chat owner while retaining existing workspace-owner restrictions.
  • Allow Project Chat to create ordinary same-project workspaces and continue work in any ordinary same-project workspace.
  • Reject cross-project, scratch, hidden/system, Project Chat self, child-task, and multi-project targets.
  • Preserve workspace lifetime by default. Interrupting a turn keeps the workspace; archive remains the safe cleanup action; permanent removal requires archived state; active-turn interruption and untracked-file confirmation remain mandatory. Removing a Project Chat terminalizes all of its active turn handles while retaining their ordinary workspaces.
  • Apply the same effective project-over-global runtime default precedence used by manual creation, including parent-owned defaults for sub-project Project Chat; detect both standalone and enclosing Git worktrees while propagating operational probe/branch failures; reject unsupported automatic SSH/Coder/Docker/devcontainer creation instead of silently falling back to a worktree.
  • Add the bulk project_workspace_list tool for canonical active/archived workspace IDs and latest turn state, plus a responsive transcript card with workspace drill-down.

Project-centric UI

  • Make the base project route open Project Chat; the project row selects it and reflects aria-current state. Untrusted projects stop at an inline trust gate before the project session is created.
  • Keep manual workspace creation on the dedicated project + action and Ctrl/Cmd+N.
  • Reuse transcript hydration, streaming, queue, interrupt, model/thinking, and tool-card infrastructure with project-specific header/chrome.
  • Omit workspace-only terminal, editor, branch, archive, review-sidebar, and footer affordances—including their keyboard handlers—from Project Chat.
  • Keep agent selection fixed to Orchestrator and register the project session as an auxiliary active chat without leaking it into normal workspace metadata sync.
  • Add desktop and pinned-phone Project Chat stories and verify no horizontal overflow at 1200px and 390px.

Interactive sub-agent progress

  • Carry full in-progress reports in typed foreground-wait interruptions.
  • Consume the duplicate queued synthetic report only after a waiter is released.
  • Prompt the parent to acknowledge or steer the reporting child through task_send_message, with an exception for explicitly requested routine periodic reports.
  • Keep terminal reports visible while suppressing only redundant completion wake-ups.

Validation

  • make static-check-full (including lockfile-free packed-CLI installation and docs link checking)
  • Exact production AI SDK provider versions verified to avoid unpublished registry releases selected by lockfile-free caret resolution
  • Comprehensive Project Chat backend regression suite: 956 tests passed across TaskService, WorkspaceService, project cleanup, task/attention stores, agent resolution, AIService, workspace-turn tools, lifecycle tools, and project workspace listing
  • Latest trust/recovery hardening validated after rebase with the complete TaskService/Config/path batch (512), WorkspaceService (314), and ProjectService (72) suites plus all post-compaction attachment tests (6)
  • Project workspace-list strict-schema regression covers OpenAI-style null optional input while preserving the documented include_archived: true default
  • Project Chat task strict-schema regression covers provider-normalized run_in_background: null while preserving the non-blocking default
  • Ordinary task strict-schema regression verifies provider-normalized run_in_background: null preserves the foreground default
  • Config regression covers Project Chat collisions with explicit, parent-owned sub-project, basename-backed, and generated legacy workspace IDs, including deterministic replacement collisions
  • Configured-ownership regressions preserve activity and post-compaction plan context for legacy workspaces whose IDs match the Project Chat syntax
  • Deterministic serialized-removal regression verifies a concurrently created sub-project chat is captured and cleaned
  • Config-write/read failure regressions prove project removal preserves both transcript and secrets unless disk-backed ownership removal can be verified
  • Owned-turn shutdown regressions cancel queued follow-ups first, stop all running turns, cancel pending retries through AgentSession, then verify quiescence once per workspace
  • Runtime regressions cover global local fallback, parent project worktree precedence over global/sub-project local, and explicit rejection of unsupported remote/container defaults
  • Session-routing regression proves active processes retain verified Project Chat ownership across malformed config reads while fresh processes fail closed
  • Enclosing-Git and operational-probe/branch failure regressions prevent accidental in-place local fallback; lifecycle regression revalidates exact sub-project scope after acquiring the workspace lock
  • Project Chat UI regression suite: all targeted component/store tests passed
  • Full-app real-IPC Project Chat navigation/persistence and inline trust-confirmation tests passed (2/2)
  • Attachment regression coverage passed for both deferred ordinary workspaces and Project Chat's project-root path
  • Responsive Storybook checks at 1200×800 and 390×844 with viewport width equal to document/body scroll width and no workspace-only chrome; targeted phone-width trust-gate interaction story passed
  • Project workspace-list card visual verification at 1200px and 390px, with active/completed/archived states and no horizontal overflow
  • Storybook coverage contract passed. The repository's snapshot-budget test is already over its exact baseline on origin/main (82/79 files and 348/305 estimated snapshots); the new isolated tool-card story is explicitly Pixel-disabled and does not add enabled snapshots.

Risks

The highest-risk areas are virtual-session routing and durable ownership/recovery. Project Chat storage and behavior are selected only when verified project metadata owns the ID (with a scoped retained route during cleanup); load-time repair reserves every explicit, basename-backed, or generated legacy workspace identity, and the last verified Project Chat route survives transient unreadable/malformed config so active writes never jump roots. Cleanup captures fresh ownership inside serialized config removal, uses throwing disk-backed reads to verify ownership is gone, preserves project secrets until that verification succeeds, terminalizes every active owned turn, cancels queued follow-ups and pending auto-retries, then verifies quiescence once per workspace before deleting Project Chat state. Failed persistence, unreadable config, or failed shutdown preserves state instead of deleting underneath live/configured work. Fixed built-in agent resolution prevents custom overrides from broadening the tool surface. Project-owned creation follows effective project/global runtime defaults, fails on uncertain Git discovery, and rejects unsupported automatic remote/container creation rather than silently changing runtime type. Lifecycle operations revalidate exact ownership inside the per-workspace lock before mutation, retain existing archive/active/confirmation guards, and dual-root task/terminal-attention scans cover restart recovery. UI registration is auxiliary so normal workspace refreshes cannot remove the active Project Chat transcript.

Pains

The existing chat/session stack is deeply workspace-ID keyed, so the implementation required narrow compatibility seams rather than a parallel chat stack. The prior hidden Chat-with-Mux design also demonstrated why a fake workspace entry would be unsafe. Lockfile-free CI also exposed unpublished AI SDK patch versions selected by broad caret ranges, requiring exact production-provider pins. Storybook's repository-wide snapshot budget is currently above its exact checked-in ceiling on main; this change keeps its added interaction story Pixel-disabled and uses the existing full-app stories for responsive visual coverage.

Latest orchestration capabilities

  • Project Chat can explicitly choose fresh workspace creation or a canonical existing workspace. Fresh creation is the default; reuse requires positive relevance evidence from the bulk workspace inventory.
  • New workspace turns accept full typed runtime configuration (local, worktree, SSH/Coder, Docker, and devcontainer), branch/trunk, and a distinct workspace display title. Existing turns may update the workspace title but cannot mutate its runtime.
  • Each request may override model, thinking level, and reasoning mode. Accepted sends persist those resolved Exec settings, so later turns in the same workspace inherit the last-used values unless explicitly overridden again.
  • The bulk workspace list exposes runtime, persisted Exec AI settings, canonical activity recency, latest turn context, project/sub-project assignment, and registered empty sub-project targets without per-workspace history reads.
  • Parent Project Chat can coordinate its root and registered direct sub-projects; child Project Chat remains scoped to its own sub-project. Creation, reuse, and lifecycle authorization share exact registered-path validation and post-lock revalidation.
  • Ordinary workspace turns can emit correlated in-progress agent_report updates to Project Chat while remaining durable ordinary workspaces. Progress does not settle the turn; the final assistant response and message reference still arrive through task_await.
  • Sub-project trust resolves through the parent, and failed Project Chat identity migration preparation retains the old identity for a safe retry.

Generated with mux • Model: openai:gpt-5.6-sol • Thinking: high • Cost: $1457.25

@mintlify

mintlify Bot commented Aug 5, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Mux 🟢 Ready View Preview Aug 5, 2026, 10:55 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Please review the parent/child progress interaction semantics, especially typed wait interruption propagation and per-child response classification.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b61309bf38

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed the per-child scoping issue: text only counts when exactly one child is pending, while multi-child turns require successful same-child guidance. Added a mixed text + guidance regression test.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d4dbec6a5f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
Comment thread src/node/services/tools/task_await.ts
Comment thread src/browser/features/Tools/TaskToolCall.tsx Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed all three findings:

  • plain-text attribution considers every outstanding sibling before candidate filtering;
  • progress interrupts release the whole multi-task await immediately;
  • guidance UI uses sent/sending/failed wording based on the actual result.

Added targeted regression coverage for each case.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ef2c7d8b79

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/tools/task.ts Outdated
Comment thread src/browser/utils/messages/modelMessageTransform.test.ts Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed both findings:

  • foreground task spawn interruptions now render the same semantic paused-for-update state as task_await;
  • the coalescing test now uses consecutive identical wait pairs so deleting the interruption guard would fail it.

Added component coverage and re-verified the full-app phone and desktop stories.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 3766bfb265

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Rebased onto the latest main; the interaction changes are unchanged. Re-ran static checks, touched behavior tests, the exact CI isolated unit batch, and phone/desktop story verification.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fa658da627

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed the completion race: a queued progress update that already released a foreground wait is now claimed and preserved until the parent receives it, while unclaimed stale updates are still removed. Added regressions across queue, direct enqueue, prequeued waiter registration, and terminal cleanup.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0241b79bb9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed the ordering race by replacing a claimed queued progress entry in place with the completed report envelope. This preserves the interaction boundary without producing completed → stale in-progress context. Added queue and TaskService regressions.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 084ce9da17

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed the crash-recovery gap: terminal queue replacement now has a persisted requires_task_await recovery notification backed by the report artifact. Queue acceptance consumes it; cancellation or pre-stream failure preserves/re-arms it for an idle recovery wake. Added targeted lifecycle tests.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a899d2d5ab

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed the artifact durability gap: recovery is now armed only after the parent-owned report artifact is read back and verified. Failed artifact persistence falls back to the durable history + already-injected wake path. Added a deterministic failed-artifact regression.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9bacd42659

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Addressed the scope durability gap: queue recovery is now armed only after both the report payload and the parent session’s scope-visible artifact index are verified. An index write/read failure falls back to durable history delivery. Added deterministic payload- and index-failure regressions.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d52d803773

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
@ammar-agent
ammar-agent force-pushed the fix/subagent-progress-guidance branch 2 times, most recently from 00dcb17 to d2dafc5 Compare August 6, 2026 01:12
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Replaced the queue-recovery stack with a simpler authoritative handoff: the interrupted task/task_await result carries the full progress report, and the duplicate queued wake is consumed once the foreground waiter is released. This removes the PREPARING/acceptance race rather than adding another recovery state. Added queue, response-attribution, terminal-card, rendering, and responsive regressions; make static-check and the touched suites pass.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d2dafc5e68

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d97c9f760e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/node/services/taskService.ts Outdated
Comment thread src/node/services/workspaceService.ts Outdated
Keep the exact logical Project Chat target config separate from the parent-owned storage and trust config so omitted runtime settings match manual workspace creation for root and child selections.
Inspect runtime deletion Results during project-scope revalidation rollback,
log failed cleanup locations, and return actionable manual cleanup errors
without persisting invalid workspace metadata.
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

Addressed both current-head Codex findings in the latest commits:

  • PRRT_kwDOPxxmWM6XDwCE: Project Chat now retains the exact logical selected-project config separately from parent-owned storage/trust config. Omitted runtime settings use the selected child project's override and then the global default, matching manual creation, while trust, checkout, branches, secrets, and storage remain parent-owned.
  • PRRT_kwDOPxxmWM6XDwCH: serialized scope-change rollback now handles both thrown cleanup failures and { success: false } results. Failed physical cleanup is logged and surfaced with the workspace path and manual-cleanup guidance; successful cleanup preserves the original scope error.

Validation passed: full TaskService (377) and WorkspaceService (318) suites, make static-check-full, and mandatory pre-push make static-check.

@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

Both latest P2 findings are addressed on current head 42b0259ea; please re-review.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 42b0259eac

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Materialize child attach_file outputs into owner-session storage, expose durable descriptors through task results, and show compact UI availability summaries.
Introduce versioned execution handles, owner-scoped persistence, and read-only adapters for workspace-turn and legacy agent-task records.\n\n---\n\n_Generated with  • Model:  • Thinking: _\n\n<!-- mux-attribution: model=openai:gpt-5.6-sol thinking=high -->
Wire canonical execution persistence into task launch and migrate list/send/terminate scope resolution through the execution registry while retaining legacy workspace aliases.
Make new task executions return created handles immediately while preserving legacy completed-result parsing for historical transcripts.\n\n---\n\n_Generated with `mux` • Model: `openai:gpt-5.6-sol` • Thinking: `high` • Cost: `.09`_\n\n<!-- mux-attribution: model=openai:gpt-5.6-sol thinking=high costs=3.09 -->
Add registry-owned snapshots, active upserts, terminal settlement, and abortable/timeout waits with alias resolution and restart-durable results.
Route task_await canonical agent IDs and aliases through ExecutionRegistry snapshots and terminal waits while preserving legacy artifact fallback and foreground wait behavior.
Route current task executions through explicit workspace targets, retain only the narrow legacy transcript fallback, and cover canonical task/task_await navigation plus phone overflow behavior.

_Generated with `mux` • Model: `openai:gpt-5.6-sol` • Thinking: `high` • Cost: `$32.81`_

<!-- mux-attribution: model=openai:gpt-5.6-sol thinking=high costs=32.81 -->
Return canonical execution IDs for new workspace turns and resolve await,
list, terminate, lifecycle, attention, and progress operations through the
execution registry while retaining wst shadow aliases for compatibility.
Persist transcript-only workspace metadata, add the idempotent WorkspaceService retirement API, and reject new messages for retired workspaces. Preserve config, session, and history while using existing archive safeguards before runtime cleanup.
Route completed canonical cleanup through bounded transcript retirement while preserving legacy removal behavior and retained transcript nodes.
Use the repository-preferred interface declaration for the focused cleanup test harness.
Centralize canonical versus legacy task workspace classification, restrict legacy sidebar branches, and allow archived transcript-only execution targets to open.
Route opaque workflow task IDs through the scoped execution wait API while preserving legacy report waits. Canonical timeouts avoid report reprompts and resolve target workspaces before hard-timeout termination.
Keep AbortSignal.reason behind an unknown boundary before rethrowing canonical wait interruptions.
Add canonical and legacy agent execution graph listing, active filtering, depth, descendant queries, and canonical-aware legacy parent adaptation.\n\n---\n\n_Generated with `mux` • Model: `openai:gpt-5.6-sol` • Thinking: `high` • Cost: `$1.23`_\n\n<!-- mux-attribution: model=openai:gpt-5.6-sol thinking=high costs=1.23 -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant