Subagents in the CLI (harness spec 3.3.0): the model, capacity, the offer, /context
ci / check (push) Canceled after 0s
ci / check (push) Canceled after 0s
- A task subagent or a team member runs on the session's model unless the person named another in this session's own messages (team/subagents.ts; engine.personSaid reads every prompt and mid-turn message, compacted ones included). Not named: refused; an agent file's own model is not used. - Another model on the session's one-model server is refused; a one-request session model is not its own subagent, and nothing else is picked. - The team is offered when a model could serve: the session's with two slots, or any usable model off its one-model server; the size note adds team_own when the session's model cannot serve its own. - "Subagents" in /effort, /team, /settings and the config schema; the status bar reads "agents 3/4 · 2 subagents working". - /context: used of the window, one bar by category, each category's share, what is free, and "N until auto-compact". - Conformance runner for the subagents area (26 cases); helper -> task. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
21 files changed
+401
-104
No files matched your search
@@ -22,6 +22,7 @@ import { estimateTokens, estimateValue } from "../provider/tokens.ts"
|
||||
import { duration } from "../duration.ts"
|
||||
import { memoryResults, presentIds, ResultContext } from "./results.ts"
|
||||
import { render } from "../plan/plan.ts"
|
||||
import { personTexts } from "../team/subagents.ts"
|
||||
import { compactAsk, isNote, NO_CHANGING, noteFor, offeredFor, PREFIX_META, summaryOf, today, toldAt, unavailable, type Changing, type Kept, type Now, type Requirement, type Told } from "./prefix.ts"
|
||||
|
||||
export interface EngineOptions {
|
||||
@@ -611,6 +612,13 @@ export class Engine {
|
||||
if (this.o.store && this.sessionId) this.lastRowId = this.o.store.append(this.sessionId, m)
|
||||
}
|
||||
|
||||
/** What the person typed in this session, oldest first (subagents.md §2) — compacted messages
|
||||
* included, as the store keeps them; never a note, a marked message or a machine turn. */
|
||||
personSaid(): string[] {
|
||||
const all = this.o.store && this.sessionId ? this.o.store.messages(this.sessionId) : this.messages
|
||||
return personTexts(all, this.o.steerMark ?? STEER_MARK)
|
||||
}
|
||||
|
||||
/** `extra`: attachments (@files, images) and the like — sent to the model after the text, never shown as typed.
|
||||
* `meta`: the turn's id and what was attached, said on the `prompt` event. */
|
||||
async prompt(text: string, extra: (string | ImagePart)[] = [], shown = text, meta: PromptMeta = {}): Promise<"stop" | "steps" | "budget" | "cancelled" | "error"> {
|
||||
|
||||
Reference in new issue
Block a user