Skip to content

feat(chat): spawn types + completion reporting + spawned-chat navigation#820

Merged
arul28 merged 3 commits into
mainfrom
ade/satrt-skill-screenshot-its-session-a774e57d
Jul 15, 2026
Merged

feat(chat): spawn types + completion reporting + spawned-chat navigation#820
arul28 merged 3 commits into
mainfrom
ade/satrt-skill-screenshot-its-session-a774e57d

Conversation

@arul28

@arul28 arul28 commented Jul 15, 2026

Copy link
Copy Markdown
Owner

ADE   Open in ADE  ·  ade/satrt-skill-screenshot-its-session-a774e57d branch  ·  PR #820

Summary by CodeRabbit

  • New Features

    • Added ade new chat --type options for subagent, peer, or untyped chats.
    • Added clearer child-lane creation guidance, including support for carrying unmerged work.
    • Chat views now show spawn types, active child counts, completion notices, and navigation between parent and child chats.
    • Added wake-up indicators when completed subagents return results.
  • Bug Fixes

    • Lane creation now warns when remote base information may be stale or local work is behind.
  • Documentation

    • Updated CLI help and agent guidance with spawning and lane workflow examples.

Greptile Summary

This PR adds typed spawned chats and clearer child-lane guidance. The main changes are:

  • Adds ade new chat --type for subagent, peer, and none spawn relationships.
  • Persists spawn metadata and reports completion back to parent chats based on spawn type.
  • Adds renderer navigation and UI indicators for parent and child chat sessions.
  • Adds lane creation warnings and docs for using child lanes when carrying unmerged work.

Confidence Score: 4/5

Mostly safe to merge after fixing the spawn-kind contract bug.

The CLI, service, and renderer changes are well covered, but one orchestration path ignores requested spawnKind and can send the wrong completion behavior.

apps/desktop/src/main/services/orchestration/orchestrationDomain.ts

T-Rex T-Rex Logs

What T-Rex did

  • I ran a focused Vitest repro that calls createOrchestrationDomainService().spawnAgent with spawnKind 'peer' to validate whether the requested kind is preserved.
  • The repro showed that createSession received spawnKind 'subagent' instead of 'peer', confirming the shared domain path does not preserve the requested kind.
  • Dev server logs showed Vite ready followed by Killed, matching the blocker during browser capture.
  • The Playwright capture path was exercised, and the targeted test log reported six passing tests for subagent activity navigation and spawn navigation, plus the SessionCard collection blocker.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
apps/desktop/src/main/services/orchestration/orchestrationDomain.ts Creates orchestration child sessions with spawn lineage, but hard-codes subagent and drops requested quieter spawn kinds.
apps/desktop/src/main/services/chat/agentChatService.ts Persists spawn kind, injects spawn env/guidance, emits parent start/result/completion events, and supports wake metadata.
apps/desktop/src/main/services/ai/tools/orchestrationTools.ts Adds optional spawnKind input to the orchestration spawn tool and defaults to subagent.
apps/ade-cli/src/cli.ts Adds --type parsing for chat spawns and stderr nudges for base-less lane creation with unmerged work.
apps/ade-cli/src/services/laneCreateRemoteBase.ts Refactors remote base resolution to emit non-blocking stale-base warnings and local fallback checks.
apps/desktop/src/renderer/components/chat/chatTranscriptRows.ts Extends transcript rows with spawn kind, child session ids, result summaries, and wake divider events.
apps/desktop/src/renderer/components/chat/AgentChatMessageList.tsx Renders spawn wake dividers, completion chips, and navigation affordances in chat transcripts.
apps/desktop/src/renderer/components/terminals/SessionListPane.tsx Extends session list organization with spawn lineage and child-count presentation.
apps/desktop/src/shared/types/chat.ts Adds shared spawn kind and completion metadata types to chat contracts.
apps/desktop/src/shared/types/sessions.ts Projects spawn lineage fields into terminal session summaries.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant Parent as Parent chat
participant CLI as ade new chat / spawnAgent
participant Service as AgentChatService
participant Child as Spawned chat
participant UI as Renderer UI

Parent->>CLI: request child with spawnKind
CLI->>Service: createSession(orchestrationParentSessionId, spawnKind)
Service-->>Parent: subagent_started / spawn notice
Service-->>UI: session summary includes lineage + spawnKind
Child->>Service: turn completes
alt "spawnKind = subagent"
  Service->>Parent: wake message with spawnCompletion metadata
  UI-->>Parent: spawn wake divider + open child action
else "spawnKind = peer"
  Service-->>Parent: quiet spawn_completed notice
else "spawnKind = none"
  Service-->>Parent: no completion report
end
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant Parent as Parent chat
participant CLI as ade new chat / spawnAgent
participant Service as AgentChatService
participant Child as Spawned chat
participant UI as Renderer UI

Parent->>CLI: request child with spawnKind
CLI->>Service: createSession(orchestrationParentSessionId, spawnKind)
Service-->>Parent: subagent_started / spawn notice
Service-->>UI: session summary includes lineage + spawnKind
Child->>Service: turn completes
alt "spawnKind = subagent"
  Service->>Parent: wake message with spawnCompletion metadata
  UI-->>Parent: spawn wake divider + open child action
else "spawnKind = peer"
  Service-->>Parent: quiet spawn_completed notice
else "spawnKind = none"
  Service-->>Parent: no completion report
end
Loading

Fix All in Claude Code

Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
apps/desktop/src/main/services/orchestration/orchestrationDomain.ts:146
**Preserve requested spawn kind**
`spawnAgent` now accepts `spawnKind` through the tool schema, but this shared domain path still hard-codes every worker as `subagent`. Any orchestration spawn routed through `OrchestrationSpawnAgentRequest` loses a requested `peer` or `none`, so it will wake the parent and render the wrong relationship despite the caller selecting a quieter policy. Add `spawnKind` to the request type and pass `arg.spawnKind ?? "subagent"` here.

Reviews (2): Last reviewed commit: "fix(cli): suppress lane-creation nudge w..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Add a spawner-declared spawn type (subagent | peer | none) that is cosmetic to
capabilities — a typed agent is a full ADE agent — and only sets a completion-
report policy: a subagent wakes its spawner when it finishes, a peer drops a
quiet notice, none (the default for an untyped spawn) stays silent. Delivery is
the existing provider-agnostic messageSession(kind:"wake") path plus a subagent
self-report guidance line; best-effort, non-durable.

Spawned ADE chats are now navigable from their inline card, actions-pane row,
and sidebar through one navigateToSpawnedChat helper, with a SUBAGENT/PEER type
pill, a live-children badge, and a two-way lineage breadcrumb. spawnKind +
orchestrationParentSessionId are projected onto TerminalSessionSummary. The
orchestrator's spawnAgent sets the type too.

Also adds CLI child-lane guidance: `ade lanes create` / `ade new chat
--auto-create-lane` warn when the current lane has unmerged commits (suggesting
`ade lanes child` to carry them) and when the resolved base is stale, with an
ade-lanes-git decision table. New `ade new chat --type` flag. Docs, skills, and
tests updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
ade Ignored Ignored Preview Jul 15, 2026 3:19am

@arul28 arul28 changed the title spawned-chat-navigation-ux -> Primary feat(chat): spawn types + completion reporting + spawned-chat navigation Jul 15, 2026
@arul28

arul28 commented Jul 15, 2026

Copy link
Copy Markdown
Owner Author

@copilot review but do not make fixes

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@arul28, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 15 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8ab42156-9ba3-45d7-b809-5d7cdb1fae05

📥 Commits

Reviewing files that changed from the base of the PR and between 5b5daae and f7f21c5.

📒 Files selected for processing (4)
  • apps/ade-cli/src/cli.ts
  • apps/desktop/src/renderer/components/terminals/SessionListPane.test.tsx
  • apps/desktop/src/renderer/components/terminals/SessionListPane.tsx
  • apps/desktop/src/renderer/components/terminals/TerminalsPage.tsx
📝 Walkthrough

Walkthrough

Changes

Spawn lineage and lane workflows

Layer / File(s) Summary
Lane base selection and unmerged-work nudges
apps/ade-cli/src/cli.ts, apps/ade-cli/src/adeRpcServer.ts, apps/ade-cli/src/services/laneCreateRemoteBase.ts, apps/ade-cli/src/cli.test.ts, apps/ade-cli/src/adeRpcServer.test.ts, apps/desktop/resources/agent-skills/ade-lanes-git/SKILL.md
Lane creation now selects remote bases with bounded fetches, reports stale or behind states, and warns when base-less creation would leave unmerged work behind.
CLI spawn-kind parsing and documentation
apps/ade-cli/src/cli.ts, apps/ade-cli/src/cli.test.ts, apps/ade-cli/README.md, apps/desktop/resources/agent-skills/ade-cli-control-plane/SKILL.md
ade new chat accepts and forwards --type/--spawn-type values for subagent, peer, and none, with updated help and usage examples.
Spawn metadata and completion delivery
apps/desktop/src/shared/types/chat.ts, apps/desktop/src/main/services/chat/agentChatService.ts, apps/desktop/src/main/services/ai/tools/orchestrationTools.ts, apps/desktop/src/main/services/orchestration/orchestrationDomain.ts, apps/desktop/src/main/services/ipc/registerIpc.ts, apps/desktop/src/main/services/.../*test.ts
Spawn kind and structured completion metadata now propagate through session creation, persistence, guidance, environment variables, parent wake messages, and peer notices.
Transcript completion rows and spawn navigation
apps/desktop/src/renderer/components/chat/chatTranscriptRows.ts, apps/desktop/src/renderer/components/chat/AgentChatMessageList.tsx, apps/desktop/src/renderer/components/chat/SubagentActivityCards.tsx, apps/desktop/src/renderer/components/chat/spawnNavigation.ts, apps/desktop/src/renderer/components/chat/...test.*
Transcript processing adds wake dividers and child metadata; spawn cards and notices use shared navigation to select child sessions.
Session lineage and live-child indicators
apps/desktop/src/renderer/components/chat/AgentChatPane.tsx, apps/desktop/src/renderer/components/chat/ChatSubagentsPanel.tsx, apps/desktop/src/renderer/components/terminals/SessionCard.tsx, apps/desktop/src/renderer/components/terminals/SessionListPane.tsx, apps/desktop/src/shared/types/sessions.ts, apps/desktop/src/renderer/components/terminals/SessionCard.test.tsx
Parent breadcrumbs, spawned-chat row navigation, spawn-type pills, and running-child counts are added to session displays.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • arul28/ADE#553: Modifies related CLI planning and self-mutation guard paths.
  • arul28/ADE#727: Also changes chat transcript row collapsing behavior.
  • arul28/ADE#805: Touches the related subagent lifecycle and completion pipeline.

Suggested labels: desktop, docs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main additions: spawn types, completion reporting, and spawned-chat navigation.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ade/satrt-skill-screenshot-its-session-a774e57d

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/desktop/src/renderer/components/chat/AgentChatPane.tsx`:
- Around line 4824-4833: Update the spawnLineage logic in AgentChatPane to
resolve a missing parent title through the existing parent-session
summary/loading mechanism when the parentId is not found in the local sessions
list. Preserve the local title lookup and breadcrumb link, and use the fetched
summary title before falling back to the generic label.

In `@apps/desktop/src/renderer/components/terminals/SessionListPane.tsx`:
- Around line 482-491: Update the liveChildrenByParentId useMemo to iterate over
the unfiltered loaded sessions rather than allSessions, while preserving the
existing parent/self and running-status checks so sidebar filters do not reduce
parent child-count badges.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 91054936-490c-4a58-9dd0-4f22f1d2f92c

📥 Commits

Reviewing files that changed from the base of the PR and between 843b77e and 5b5daae.

⛔ Files ignored due to path filters (3)
  • docs/features/agents/README.md is excluded by !docs/**
  • docs/features/chat/README.md is excluded by !docs/**
  • docs/features/lanes/stacking.md is excluded by !docs/**
📒 Files selected for processing (30)
  • apps/ade-cli/README.md
  • apps/ade-cli/src/adeRpcServer.test.ts
  • apps/ade-cli/src/adeRpcServer.ts
  • apps/ade-cli/src/cli.test.ts
  • apps/ade-cli/src/cli.ts
  • apps/ade-cli/src/services/laneCreateRemoteBase.ts
  • apps/desktop/resources/agent-skills/ade-cli-control-plane/SKILL.md
  • apps/desktop/resources/agent-skills/ade-lanes-git/SKILL.md
  • apps/desktop/src/main/services/ai/tools/orchestrationTools.test.ts
  • apps/desktop/src/main/services/ai/tools/orchestrationTools.ts
  • apps/desktop/src/main/services/chat/agentChatService.test.ts
  • apps/desktop/src/main/services/chat/agentChatService.ts
  • apps/desktop/src/main/services/ipc/registerIpc.ts
  • apps/desktop/src/main/services/orchestration/orchestrationDomain.test.ts
  • apps/desktop/src/main/services/orchestration/orchestrationDomain.ts
  • apps/desktop/src/renderer/components/chat/AgentChatMessageList.test.tsx
  • apps/desktop/src/renderer/components/chat/AgentChatMessageList.tsx
  • apps/desktop/src/renderer/components/chat/AgentChatPane.tsx
  • apps/desktop/src/renderer/components/chat/ChatSubagentsPanel.tsx
  • apps/desktop/src/renderer/components/chat/SubagentActivityCards.test.tsx
  • apps/desktop/src/renderer/components/chat/SubagentActivityCards.tsx
  • apps/desktop/src/renderer/components/chat/chatTranscriptRows.test.ts
  • apps/desktop/src/renderer/components/chat/chatTranscriptRows.ts
  • apps/desktop/src/renderer/components/chat/spawnNavigation.test.ts
  • apps/desktop/src/renderer/components/chat/spawnNavigation.ts
  • apps/desktop/src/renderer/components/terminals/SessionCard.test.tsx
  • apps/desktop/src/renderer/components/terminals/SessionCard.tsx
  • apps/desktop/src/renderer/components/terminals/SessionListPane.tsx
  • apps/desktop/src/shared/types/chat.ts
  • apps/desktop/src/shared/types/sessions.ts

Comment on lines +4824 to +4833
// Two-way lineage: a spawned child chat shows a "↳ from <spawner>" breadcrumb
// in its header that navigates back to the parent. Parent title resolves from
// the loaded session list; falls back to a generic label with the link intact.
const spawnLineage = useMemo(() => {
const parentId = selectedSession?.orchestrationParentSessionId?.trim();
if (!parentId || parentId === selectedSession?.sessionId) return null;
const parentTitle = sessions.find((s) => s.sessionId === parentId)?.title?.trim() || null;
return { parentId, parentTitle, spawnKind: selectedSession?.spawnKind ?? null };
}, [selectedSession?.orchestrationParentSessionId, selectedSession?.sessionId, selectedSession?.spawnKind, sessions]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- locate relevant symbols ---'
rg -n "spawnLineage|navigateToSpawnedChat|getSummary|refreshSessions|listAgentChatSessionsCached|spawned\?\.laneId|orchestrationParentSessionId" \
  apps/desktop/src/renderer/components/chat/AgentChatPane.tsx \
  apps/desktop/src/renderer/components/chat/AgentChatMessageList.tsx \
  apps/desktop/src -g '*.ts' -g '*.tsx'

echo
echo '--- outline AgentChatPane ---'
ast-grep outline apps/desktop/src/renderer/components/chat/AgentChatPane.tsx --view expanded | sed -n '1,220p'

echo
echo '--- relevant slice AgentChatPane ---'
sed -n '4800,4875p' apps/desktop/src/renderer/components/chat/AgentChatPane.tsx

echo
echo '--- relevant slice AgentChatMessageList ---'
sed -n '1,260p' apps/desktop/src/renderer/components/chat/AgentChatMessageList.tsx

Repository: arul28/ADE

Length of output: 50366


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Show the exact implementation around the cited call site and the navigation helper.
sed -n '4824,4878p' apps/desktop/src/renderer/components/chat/AgentChatPane.tsx

echo
echo '--- navigateToSpawnedChat references ---'
rg -n "navigateToSpawnedChat" apps/desktop/src -g '*.ts' -g '*.tsx' -A 6 -B 6

echo
echo '--- getSummary references ---'
rg -n "getSummary\\(" apps/desktop/src -g '*.ts' -g '*.tsx' -A 4 -B 4

echo
echo '--- listAgentChatSessionsCached references ---'
rg -n "listAgentChatSessionsCached|refreshSessions" apps/desktop/src -g '*.ts' -g '*.tsx' -A 4 -B 4

Repository: arul28/ADE

Length of output: 50367


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- spawnNavigation helper ---'
sed -n '1,120p' apps/desktop/src/renderer/components/chat/spawnNavigation.ts

echo
echo '--- select-session event listeners ---'
rg -n "ade:work:select-session|select-session" apps/desktop/src -g '*.ts' -g '*.tsx' -A 8 -B 8

echo
echo '--- any session selection by laneId in renderer ---'
rg -n "laneId.*sessionId|sessionId.*laneId|selectSession|selectedSessionId" apps/desktop/src/renderer -g '*.ts' -g '*.tsx' -A 4 -B 4

Repository: arul28/ADE

Length of output: 50367


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- event listener in TerminalsPage ---'
sed -n '248,268p' apps/desktop/src/renderer/components/terminals/TerminalsPage.tsx

echo
echo '--- focusSession implementation / usage ---'
rg -n "focusSession\\(" apps/desktop/src/renderer -g '*.ts' -g '*.tsx' -A 4 -B 4

echo
echo '--- work store session selection methods ---'
rg -n "selectLane\\(|setSelectedSessionId|selectedSessionId|focusSession" apps/desktop/src/renderer/components/terminals apps/desktop/src/renderer/state -g '*.ts' -g '*.tsx' -A 4 -B 4

Repository: arul28/ADE

Length of output: 50366


Resolve missing parent summaries for spawned chats

spawnLineage only looks at the current lane’s sessions list, so a parent from another lane falls back to the generic “spawner” label. Fetch the parent summary when it isn’t loaded locally so the breadcrumb can show the real title.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/desktop/src/renderer/components/chat/AgentChatPane.tsx` around lines
4824 - 4833, Update the spawnLineage logic in AgentChatPane to resolve a missing
parent title through the existing parent-session summary/loading mechanism when
the parentId is not found in the local sessions list. Preserve the local title
lookup and breadcrumb link, and use the fetched summary title before falling
back to the generic label.

Comment thread apps/desktop/src/renderer/components/terminals/SessionListPane.tsx Outdated
Address CodeRabbit review: the sidebar live-children badge derived its count
from the already search/lane-filtered session list, so a filter/search could
hide a running child and undercount its visible parent's badge. Thread the
unfiltered session list into SessionListPane and count from it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@arul28

arul28 commented Jul 15, 2026

Copy link
Copy Markdown
Owner Author

@codex review

@arul28

arul28 commented Jul 15, 2026

Copy link
Copy Markdown
Owner Author

Addressed the CodeRabbit review:

  • SessionListPane live-children badge (SessionListPane.tsx:491) — fixed in 50b8993. The badge now counts from the unfiltered session list threaded in via a new allSessionsUnfiltered prop, so a search/lane filter no longer undercounts a parent's running children.
  • Cross-lane parent breadcrumb (AgentChatPane.tsx:4833) — intentional graceful degradation, left as-is. The breadcrumb always navigates by the parent session id (works cross-lane); only the label falls back to "spawner" when the parent summary isn't loaded in the current lane. Fetching cross-lane parent summaries is out of scope for this UX 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: 50b8993c57

ℹ️ 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 apps/ade-cli/src/cli.ts Outdated
Comment on lines +3635 to +3636
...(!createArgs.parentLaneId && typeof createArgs.name === "string" && createArgs.name.trim()
? { laneCreationNudge: { newLaneName: createArgs.name.trim() } }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3 Badge Gate lane-creation nudges on an implicit base

When ade lanes create --base release --name x is run from a lane with commits ahead of origin/main, this condition still enables laneCreationNudge because it only excludes parent lanes. The warning then says the new lane is continuing off remote main and suggests ade lanes child, even though the explicit baseBranch is what will be used; the analogous ade new chat --auto-create-lane --base ... guard has the same gap. Please suppress the nudge whenever the create args include an explicit base/start point.

Useful? React with 👍 / 👎.

Address Codex review (P3): the unmerged-work child-lane nudge fired even when
`ade lanes create --base <ref>` / `ade new chat --auto-create-lane --base <ref>`
passed an explicit base, wrongly claiming the new lane continues off remote
main. Gate the nudge on the absence of an explicit baseBranch at both sites.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@arul28

arul28 commented Jul 15, 2026

Copy link
Copy Markdown
Owner Author

Fixed in f7f21c5 — the lane-creation nudge (both ade lanes create and ade new chat --auto-create-lane) is now gated on the absence of an explicit --base, so it no longer misfires when an explicit base is passed.

@arul28
arul28 merged commit b824f6b into main Jul 15, 2026
32 checks passed
@arul28
arul28 deleted the ade/satrt-skill-screenshot-its-session-a774e57d branch July 15, 2026 03:24
orchestrationRunId: arg.runId,
orchestrationRole: arg.role,
orchestrationParentSessionId: arg.leadSessionId,
spawnKind: "subagent",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Preserve requested spawn kind
spawnAgent now accepts spawnKind through the tool schema, but this shared domain path still hard-codes every worker as subagent. Any orchestration spawn routed through OrchestrationSpawnAgentRequest loses a requested peer or none, so it will wake the parent and render the wrong relationship despite the caller selecting a quieter policy. Add spawnKind to the request type and pass arg.spawnKind ?? "subagent" here.

Artifacts

Repro: focused Vitest test source invoking spawnAgent with spawnKind peer

  • Contains supporting evidence from the run (text/typescript; charset=utf-8).

Repro: verbose Vitest output showing requested peer became createSession subagent

  • Keeps the command output available without making the summary code-heavy.

View artifacts

T-Rex Ran code and verified through T-Rex

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/main/services/orchestration/orchestrationDomain.ts
Line: 146

Comment:
**Preserve requested spawn kind**
`spawnAgent` now accepts `spawnKind` through the tool schema, but this shared domain path still hard-codes every worker as `subagent`. Any orchestration spawn routed through `OrchestrationSpawnAgentRequest` loses a requested `peer` or `none`, so it will wake the parent and render the wrong relationship despite the caller selecting a quieter policy. Add `spawnKind` to the request type and pass `arg.spawnKind ?? "subagent"` here.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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