- DevicePanel in the 448px SlidePanel: ?app= routes (home + 8 sub-apps via dynamic imports), ?device=full|tablet|phone size toggle, per-agent accent-derived wallpaper theme + feTurbulence grain, glassy dock + grid home screen, Computer button in the chat header - Apps: Files (3 drives, real listings), Skills (installed + add from library), Routines (list/refresh/empty state), Claw Chat (threads + sensitive badge + detail), Settings (push/pop nav: edit profile PATCHes the system prompt, Other-Claws access toggle PUTs the policy, confirmed destructive delete), Slack (§7.3 pre-connect gate), Add Apps (live /api/apps directory + search), Browser (chrome + spec'd empty state) - /skills Skill Library page + nav entry; curated /api/apps directory endpoint; e2e seed gains a catalog skill - P3 exit E2E (6 journeys): themed home screen + device toggle in URL, agent-written file appears in Files, agent-scheduled routine appears in Routines, system-prompt edit persists across reload, deep-link cold-load of ?app=settings&device=full, every app reachable, library installs 132 Rust + 63 frontend tests + 20 Playwright journeys. Co-Authored-By: Claude Fable 5 <[email protected]>
66 lines
1.7 KiB
TOML
66 lines
1.7 KiB
TOML
# Scenario script for the deterministic `scripted` LLM provider.
|
|
# A prompt containing a `marker` plays that scenario's turns; each tool
|
|
# round-trip advances to the next turn. Unmatched prompts get an echo.
|
|
|
|
[[scenario]]
|
|
marker = "[[scenario:hello]]"
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = "Hello! I'm Scout, your research analyst." },
|
|
]
|
|
|
|
[[scenario]]
|
|
marker = "[[scenario:tool-time]]"
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = "Let me check the clock." },
|
|
{ type = "tool_use", name = "clock.now", input = {} },
|
|
]
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = "Done — I checked the current time for you." },
|
|
]
|
|
|
|
[[scenario]]
|
|
marker = "[[scenario:gated-email]]"
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = "I'll send that email once you approve it." },
|
|
{ type = "tool_use", name = "email.send", input = { to = "[email protected]", subject = "Q2 numbers", body = "Revenue is up 14% quarter over quarter." } },
|
|
]
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = " The email step is finished." },
|
|
]
|
|
|
|
[[scenario]]
|
|
marker = "[[scenario:save-report]]"
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "tool_use", name = "files.write", input = { path = "reports/q2.md", content = "Q2 revenue is up 14%." } },
|
|
]
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = "Saved the report to your documents drive." },
|
|
]
|
|
|
|
[[scenario]]
|
|
marker = "[[scenario:schedule-digest]]"
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "tool_use", name = "routine.schedule", input = { name = "Morning digest", cron = "0 9 * * *", message = "Compile the morning digest." } },
|
|
]
|
|
|
|
[[scenario.turns]]
|
|
events = [
|
|
{ type = "text", text = "Scheduled the morning digest for 9am daily." },
|
|
]
|