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
Umbrella issue for the four tickets below. Each is independently shippable; this one holds the end state they add up to, so the whole is readable in one place.
The feature
An iterion assistant that is always there, knows iterion, knows what you are looking at, and runs on a model you chose.
Concretely, from anywhere in the studio:
I am on /pipelines, a card is red. I open the chat from the bottom of the screen — same button on every page. It already knows I am on that card; I did not retype an id. I ask why it failed. It reads the run itself, tells me the node and the diagnostic, and explains what C083 means because it knows the DSL. I drag a second run onto the composer to compare. Before all that, in settings, I picked which model answers me — and I can see what it costs and what it can do.
Four things have to be true for that paragraph to work, and none of them is true today:
#
What it takes
Issue
1
The chat is reachable from every page, not one route
Today: one route (/whats-next), one hard-coded bot, an assistant whose expertise is a target repo rather than iterion, and a model pinned in a .bot behind an env var.
The engine stays bot-agnostic (CLAUDE.md): no bot id in pkg//cmd/, and no if bot == "whats-next" in the studio either. The chat surface and the model preference are generic seams; a second conversational bot must need zero product code.
References, not blobs — context is passed by typed reference and resolved on demand.
Visible context — whatever the assistant is assumed to be looking at is shown as a dismissible chip. No invisible injection.
Verify, don't assert — anything the assistant produces that iterion can check (a .bot it wrote) goes through iterion validate before being presented as working.
The model choice is not neutral — a model without tool-calling breaks the assistant outright, and ultracode only holds on claude-opus-4-8. Free choice, recommended default kept visible, capability gaps surfaced before launch rather than discovered mid-run.
Done when
the assistant opens from the same control on every authenticated route, and keeps its session across navigation
it knows what page you are on without you typing an id, and you can drop a run / card / node / bot onto it
it answers iterion questions — DSL, diagnostics, run triage — and validates the workflows it writes
you can see and change which model answers you, with what it can do and roughly what it costs
adding a second conversational bot requires a bundle, not a studio or engine change
Umbrella issue for the four tickets below. Each is independently shippable; this one holds the end state they add up to, so the whole is readable in one place.
The feature
An iterion assistant that is always there, knows iterion, knows what you are looking at, and runs on a model you chose.
Concretely, from anywhere in the studio:
Four things have to be true for that paragraph to work, and none of them is true today:
Today: one route (
/whats-next), one hard-coded bot, an assistant whose expertise is a target repo rather than iterion, and a model pinned in a.botbehind an env var.How the pieces fit
FloatingChatPanel(already a non-modal floating panel with a bottom bubble and a right dock) into aChatDockmounted once at shell level, so it survives navigation and hosts any conversational session.run/<id>,card/<id>,bot/<path>, …) fed by two paths: explicit (you dropped it) and implicit (you are on it). References are resolved by the assistant through its own tools, never inlined into the prompt — a reference stays live as the run advances, a blob does not. This vocabulary is the coupling point between studio: manifest-driven first-class chat surface + drag & drop of iterion context into the composer #333 and studio: ubiquitous chat dock — extract FloatingChatPanel into a global surface with route context #338: design it once, in whichever lands first.GET /api/models: known × usable-with-my-credentials × capabilities × price) plus a persisted choice, replacing today's free-text field fed by heuristics.Suggested order
model_overridesinto the session launch. Few lines, no engine code, immediately useful.Invariants across all four
CLAUDE.md): no bot id inpkg//cmd/, and noif bot == "whats-next"in the studio either. The chat surface and the model preference are generic seams; a second conversational bot must need zero product code..botit wrote) goes throughiterion validatebefore being presented as working.ultracodeonly holds onclaude-opus-4-8. Free choice, recommended default kept visible, capability gaps surfaced before launch rather than discovered mid-run.Done when