The spec: plan_write and plan_update (new, shared, offered in every mode) and plan_submit (now shared) keep one structured plan — findings, objectives, phases of tasks — in place of the todo list, which lives on as a former name of plan_write. The shared system text is one text for both projects, with variables for what differs; the mode texts, a prototypes block and a library block are shared. acp.md: the client hands the device what only it knows (context, library, prototypes), the plan travels as a structure (plan_state), library calls carry the chat's scope, and a client may rewind a session. loop.json says its numbers as numbers. Four conformance areas: plan, prototype, library_scope, toolcall_index. The CLI: the plan is kept per session in the store and drawn above the prompt and on the approval card; the prompt is assembled from the spec's texts with their variables filled; the link reads the instance's instructions, personalization, knowledge scope and prototype offer, sends the plan as a structure and answers rewind; library calls to the instance carry the session as scope; a prototype written in the terminal is saved as a file and named in the transcript; a tool-call fragment without an index continues the last call; the default theme is Moria; dead exports and Hermes leftovers removed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { TextAttributes } from "@opentui/core"
|
|
import { Show } from "solid-js"
|
|
import { VERSION } from "../../version.ts"
|
|
import { useTui } from "../context.ts"
|
|
|
|
export function Welcome() {
|
|
const { theme, app } = useTui()
|
|
const c = () => theme().colors
|
|
return (
|
|
<box border borderStyle="rounded" borderColor={c().border} flexDirection="column" paddingLeft={1} paddingRight={1} marginTop={1} flexShrink={0}>
|
|
<text fg={c().title} attributes={TextAttributes.BOLD}>
|
|
{theme().branding.agentName} <span style={{ fg: c().dim, attributes: 0 }}>{VERSION}</span>
|
|
</text>
|
|
<text fg={c().text} wrapMode="none" truncate>
|
|
<span style={{ fg: c().label }}>model </span>
|
|
{app.engine.model.ref}
|
|
</text>
|
|
<text fg={c().text} wrapMode="none" truncate>
|
|
<span style={{ fg: c().label }}>project </span>
|
|
{app.project.root}
|
|
<span style={{ fg: c().dim }}>{app.project.gitRoot ? " (git)" : " (no git)"}</span>
|
|
</text>
|
|
<Show when={!app.trusted}>
|
|
<text fg={c().warn} wrapMode="word">
|
|
This project is not trusted: its .agent config, commands and servers are ignored. /trust to change that.
|
|
</text>
|
|
</Show>
|
|
<text fg={c().dim} wrapMode="word">
|
|
enter send · shift+enter newline · shift+tab mode · /help
|
|
</text>
|
|
</box>
|
|
)
|
|
}
|