You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 60cf7a4
Browse filesBrowse the repository at this point in the historyBrowse files
feat(profiles): gate subagent launches on session profile authority
Require corroborated session profile authority before subagent_run,
subagent_continue and every launch stage. Test session fakes now expose
getSessionFile like real session managers.
Refs #1064
if(!root||(workspaceRoot!==undefined&&(!isAbsolute(workspaceRoot)||safeBootstrapDirectory(workspaceRoot)!==root)))thrownewError("Writer bootstrap requires the original safe project root.");
if(!current()||!awaitprepareBoundSessionRepository(originalManager,originalCwd,signal)||!current()||safeBootstrapDirectory(originalCwd)!==root||resolveSessionWorktree(originalCwd,originalCwd)?.root!==root)thrownewError("Writer repository preparation was unavailable or its session/target changed.");
1561
1562
}
1563
+
requireSessionProfileAuthority(originalManager);
1562
1564
constparentCwd=ctx.sessionManager.getCwd();
1563
1565
// An explicit target is validated before any queue or session-dir writes.
if(typeofparams.agent!=="string"||!params.agent.trim()||typeofparams.task!=="string"||!params.task.trim()||(params.context!==undefined&&typeofparams.context!=="string")||(params.label!==undefined&&typeofparams.label!=="string"))thrownewError("Subagent dispatch requires a named agent, non-empty task and string context/label.");
"Resume a finished subagent task in its own session with a follow-up prompt.",
2123
2128
{required: ["task_id","prompt"],properties: {task_id: {type: "string"},prompt: {type: "string"},label: {type: "string",description: "Three to six words naming the follow-up."},mode: {type: "string",enum: ["task","background"]}}},
if(Object.hasOwn(params,"sdd_change")||Object.hasOwn(params,"remediation")||Object.hasOwn(params,"research_selection"))returntext("Error: retired SDD delegation is not supported.",{error: "retired SDD delegation"});
@@ -3995,7 +3995,7 @@ test("the card follows the active session: after /new the earlier session's task
3995
3995
assert.doesNotMatch(overlay.render(80).map(stripAnsi).join("\n"),/◐Subagentexplore/,"retained children of a replaced session do not imply an open orchestrator");
0 commit comments