Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
45ad7a6
🧭 feat: Let a Parent Choose Its Subagent's Code Machine Per Call
danny-avila Oct 5, 2026
9d2a990
🧭 fix: Reserve Default Routes Early and Route a Routed Subagent's Gra…
danny-avila Oct 5, 2026
b55612a
🧭 fix: Settle Concurrent Inherited Routes and Register Routed Graph M…
danny-avila Oct 5, 2026
aaeef87
🧭 fix: Re-read Inherited Routes After Resolving Subagent Targets
danny-avila Oct 5, 2026
c78629f
πŸ§ͺ test: Prove a Routed Graph Member Takes Its Machine's Policy Throug…
danny-avila Oct 5, 2026
e841b31
🧭 fix: Hold a Lazily Loaded Graph Member's Default Machine While It I…
danny-avila Oct 5, 2026
a6ce0fa
🧭 fix: Validate the Approval Mode Against Every Machine a Subagent Ma…
danny-avila Oct 5, 2026
ab9e7c7
🧭 fix: Admit, Prime, and Cancel Per-Call Subagent Routes Conservatively
danny-avila Oct 5, 2026
f570bca
🧭 fix: Release Unused Route Claims and Scope Per-Call Machines to The…
danny-avila Oct 5, 2026
9469c22
🧭 fix: Give Back a Route When Its Placement Verification Fails
danny-avila Oct 5, 2026
a9727a5
🧭 fix: Commit a Lazy Child's Routes Only When Its Whole Resolution Su…
danny-avila Oct 5, 2026
a6c1757
🧭 fix: Drop a Failed Lazy Resolution's Config from the Graph Cache
danny-avila Oct 5, 2026
dcc783b
🧭 fix: Follow a Routed Agent Through Self-Spawned Runs and Scope Rout…
danny-avila Oct 5, 2026
f63b34e
🧭 fix: Pass a Machine On Through Self-Spawned Runs of Agents Without …
danny-avila Oct 5, 2026
f3f8b82
🧭 fix: Keep a Pass-Through Route Only When Its Resolution Succeeds
danny-avila Oct 5, 2026
331c2e7
🧭 fix: Settle a Lazy Child's Routing State at the SDK Handoff
danny-avila Oct 5, 2026
faded6d
🧭 fix: Keep Per-Agent Tool Contexts on Live Placements and Queue Targ…
danny-avila Oct 5, 2026
1a25692
🧭 refactor: Load Routed Graph Members Through a packages/api Service
danny-avila Oct 5, 2026
f274737
🧭 fix: Share a Lazy Child's Config with Later Graphs Only After It Co…
danny-avila Oct 5, 2026
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
7 changes: 5 additions & 2 deletions api/server/controllers/agents/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ const {
buildToolApprovalExecutionConfig,
collectAttachedCodeEnvironmentAgentIds,
collectAttachedCodeEnvironmentPolicySettings,
collectAttachedCodeApprovalPolicies,
collectAttachedCodeRoutePolicies,
buildAttachedCodeEnvironmentAdmissionHooks,
resolveAttachedCodeApprovalMode,
markNativeCodeToolApprovalRequests,
Expand Down Expand Up @@ -1986,7 +1988,7 @@ class AgentClient extends BaseClient {
const topLevelAgents = [this.options.agent, ...(this.agentConfigs?.values() ?? [])];
const codeApprovalMode = resolveAttachedCodeApprovalMode(
this.options.req.body.codeApprovalMode,
collectAttachedCodeEnvironmentPolicySettings(topLevelAgents),
collectAttachedCodeApprovalPolicies(topLevelAgents),
agentsEConfig?.toolApproval?.enabled !== false,
);
const persistedCodeEnvironmentDecision = resolvePersistableCodeEnvironmentDecision({
Expand Down Expand Up @@ -4563,7 +4565,7 @@ class AgentClient extends BaseClient {
collectAttachedCodeEnvironmentPolicySettings(topLevelAgents);
const codeApprovalMode = resolveAttachedCodeApprovalMode(
this.options.req.body.codeApprovalMode,
attachedCodeEnvironmentSettings,
collectAttachedCodeApprovalPolicies(topLevelAgents),
Comment on lines 4566 to +4568

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 Badge Include alternate policies in scheduled pause admission

When a lazy child has a permissive attached default but a routable alternate machine whose policy can return ask, approval-mode validation now examines both routes, but buildAttachedCodeEnvironmentAdmissionHooks still receives the default-only attachedCodeEnvironmentSettings. On a scheduled run, runCanPause can therefore remain false and skip the Redis/durable-checkpointer requirements; if the model selects the alternate, lazy registration changes the runtime hook to ask only after that preflight, leaving the resulting pause on an unsupported topology. Build admission metadata conservatively from every codeExecutionChoice, not only the default context.

Useful? React with πŸ‘Β / πŸ‘Ž.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in ab9e7c7: buildAttachedCodeEnvironmentAdmissionHooks now also takes each agent's per-call route policies (collectAttachedCodeRoutePolicies: default route plus every attached codeExecutionChoice), and an agent counts as able to pause for a category when any of those machines asks. The client's scheduled-run admission passes them, so a permissive default no longer hides an asking alternate and the Redis/durable-checkpointer requirements apply. Covered by a test.

agentsEConfig?.toolApproval?.enabled !== false,
);
const effectiveToolApprovalPolicy = resolveToolApprovalPolicy({
Expand All @@ -4584,6 +4586,7 @@ class AgentClient extends BaseClient {
attachedCodeEnvironmentAgentIds,
attachedCodeEnvironmentSettings,
codeApprovalMode,
collectAttachedCodeRoutePolicies(topLevelAgents),
),
];
const askUserQuestionAdminDisabled = isAskUserQuestionAdminDisabled(appConfig);
Expand Down
Loading
Loading