Harness spec 3.2.0 in the CLI: effort levels, reasoning round-trip, no absolute paths
ci / check (push) Waiting to run
ci / check (push) Waiting to run
Levels (models/schema.json levels): provider/effort.ts levelsOf/levelFields/ readLevel — `off` only with thinking_switch and sends enable_thinking false and no effort, `default` for a model that takes no efforts and sends nothing, a level not offered is read as the start level. The engine's effort is a level; /effort shows nothing for one level, a Thinking switch for [off, X], a list otherwise; the status bar follows. /v1/models' thinking_switch, efforts [] and capacity.parallel are read (lembas/webui.ts); session/capacity.ts counts parallel slots. Reasoning (context.md §8): an assistant message of the current turn carries reasoning_content (provider/common.ts turnReasoning, openai-chat.ts); step-boundary deliveries, nudges and the wrap-up are marked turn: false and do not start a turn. Paths (context.md §11): the <env> block names the project and, started below the root, that directory relative to it (assemble.ts envLines); instruction files and @ attachments are named from the root or as ~/…; file tools and bash resolve relative paths against the project root. The team rules (team/team.ts) and conformance runners for levels, reasoning, paths and team; the team runtime follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
36 files changed
+1168
-153
No files matched your search
+4
-3
@@ -14,6 +14,7 @@ import type { ImagePart } from "../provider/types.ts"
|
||||
import { commandSet, sourcesOf } from "../session/commands.ts"
|
||||
import type { PlanReply, PlanRequest } from "../tool/plan_submit.ts"
|
||||
import type { QuestionReply, QuestionRequest } from "../tool/ask_user.ts"
|
||||
import { readLevel } from "../provider/effort.ts"
|
||||
import { clampMode, effortOf, markRemote, permissionParams, planParams, planReplyFrom, questionParams, questionReplyFrom, replyFrom, STOP, type PromptResult } from "./agent.ts"
|
||||
import { jobList, jobOutput, jobSend, jobStop, jobTranscript } from "./jobs.ts"
|
||||
import type { SessionContext } from "../app.ts"
|
||||
@@ -390,7 +391,7 @@ export class Share {
|
||||
// is the instance's.
|
||||
modelConnection: this.app.engine.model.connectionName,
|
||||
mode: this.app.engine.mode,
|
||||
effort: this.app.engine.effort ?? "off",
|
||||
effort: this.app.engine.effort,
|
||||
busy: Boolean(this.app.turns.current),
|
||||
explicit,
|
||||
},
|
||||
@@ -596,9 +597,9 @@ export class Share {
|
||||
// same model as `deepseek/x`, and switching to it again would reset the effort.
|
||||
if (typeof p?.model === "string" && p.model && this.app.canonicalRef(p.model) !== this.app.engine.model.ref) this.app.switchModel(p.model)
|
||||
const effort = effortOf(p?.effort)
|
||||
if (effort !== undefined) this.app.engine.effort = effort === "off" ? null : effort
|
||||
if (effort !== undefined) this.app.engine.effort = readLevel(this.app.engine.model, effort)
|
||||
this.hooks.changed()
|
||||
return { model: this.app.engine.model.ref, effort: this.app.engine.effort ?? "off" }
|
||||
return { model: this.app.engine.model.ref, effort: this.app.engine.effort }
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user