| Files | Last commit | Last update |
|---|---|---|
Add a Routines canvas that hands a routine's answer from agent to agent (#1447) * Add diagrams canvas designs in Storybook Add the shared UI for diagrams (#1203): a canvas where routines start agents, with the last run's input and output for each agent, a run panel, and a small chat panel to edit the diagram through an agent. Add an Agents, Channels and Diagrams switch over the sidebar list. The switch shows only when the app handles it, so the app is unchanged until it is wired. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show what each routine does on the diagram canvas A routine card now shows its instruction, a seven-day strip with a tick at each time it fires, and its last runs as status dots. It glows while the run it started is in progress. The run panel for a routine shows what it does, the agents it starts and how far the run reaches, the times it fires this week, and its run history. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Animate the diagram assistant when it opens and closes The panel grows out of the launcher's pill shape and folds back into it, with a little overshoot on open and a faster close. Its content settles just after the shape. Focus moves to the input on open and back to the launcher on close, and the folded panel lets the pointer reach the canvas. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the open chat in the diagram workspace story On the Agents and Channels views the middle of the workspace story now shows the open chat, as the app does. The canvas shows only on the Diagrams view, and leaving it returns to the last open chat. The agent chat setup and the channel transcript move to shared story modules, so the conversation stories and the workspace story use the same code. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Channels view from the sidebar switch The switch now has two views: Agents, the chat list with its channels as before, and Diagrams, which shows how routines start agents. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show each routine's run when one agent has several routines A diagram keeps the last run of every routine, not one run for the whole canvas. One routine is in focus at a time: a picker in the header, the chips on each agent card, or the "Started by" list in the run panel sets it. The canvas then shows that routine's path, steps and last run in its colour and dims the rest; the panel shows what each agent received and returned in that run. The focus follows the newest run until the user picks one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add a story for a routine that starts one agent alone Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show an agent's routines beside its canvas The sidebar keeps the chat list in both views; the switch is now Agents and Routines. On Routines, opening an agent shows a list of every routine whose run reaches it, with schedule, next run, run history and last result, and the canvas of the routine picked in the list. Each routine is its own diagram. The sidebar's diagram list is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Put an agent's routines on one canvas with tabs The Routines tab no longer adds a routine list column. The open agent gets one canvas with every routine whose run reaches it, and the tabs in the canvas header pick the routine whose path and last run show. The run panel starts closed and opens when a card is picked, so the canvas has the whole width. A connection can now belong to one routine. A run follows only its own routine's connections and the shared ones, so a check that one agent runs alone stops at that agent even when the agent hands work on in other routines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Pick the highlighted routine from a selector The routine tabs in the canvas header become one select: All routines, then each routine with its colour and how its last run went. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the run details panel by default Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Start the diagram assistant closed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Run routine flows in the desktop app The Routines view of the sidebar now shows the open agent's routines from the local host: schedules, next runs, run history and what each agent received and answered in the last run. On the canvas, connecting one agent to another inside a routine makes the routine hand the first agent's answer on when it runs. Migration 28 adds the link, position and step tables, written directly, not through the event log. The Effect-based RoutineFlows service sweeps on turn, queue and routine events and at startup: it records the answer of a run that ended, settles steps whose delivery ended, and sends the next messages as deliveries from the routine. An agent with several inputs waits for all of them; an agent whose inputs failed is skipped. A link applies only to runs that start after it. Remote servers answer that routine flows are only for agents on this computer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the routine canvas header drag the window The canvas and run details headers sit at the top of the window like the chat header, so they now carry window-drag as it does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let an agent edit the routine canvas from its chat panel The Routines view now shows the chat panel. A request goes to the open agent's conversation, and the panel shows the answer of the turn that read it. Agents get list_routine_flows, connect_routine_agents and disconnect_routine_agents. The canvas walked all links as one graph, so two routines that link the same agents in opposite directions froze the renderer. Each routine is now walked on its own links, and a new connection is checked against the focused routine only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Name the canvas chat placeholder a routine change Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas chat launcher Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat composer in the canvas chat panel The panel input is now the chat's compact composer: one line with the round send button, and the same editor and send shortcut. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user drag the canvas chat Drag the chat by its button or the panel header. It stays inside the canvas. A press that moves less than 4 px is still a click. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show a new canvas connection before the host saves it The link draws at once. When the host refuses it, the link goes away and an error toast says why. A pending link cannot be removed until it is saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the week strip from routine cards The run details panel still shows it. The fit uses the shorter card. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas header Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the canvas header to the agent chat header 38 px high, with the same 18 px avatar, name size and start position. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Move the routine picker onto the canvas The picker sits at the top centre of the canvas, level with Add agent. Add agent and the header Run now use the extra-small button and icon. The canvas status message moves below the picker. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the last run status from the canvas header The run details panel still shows it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the canvas zoom controls as a column of square buttons Zoom in, zoom out and fit, one outlined button each. The fit button's name still says the zoom level. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use smaller, muted icons in the canvas zoom buttons Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the run details button to the chat header, and slide the panel in The button uses the chat header's panel toggle. The run details panel opens with the settings panel's slide-in, and without it when the user asks for reduced motion. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Open run details as the chat's browser sidebar opens The panel appears at the right edge, and the canvas eases its padding to make room, with the chat panel's transition. This replaces the slide-in. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Rename run details to routine details, and close it with a chevron The close button uses the browser sidebar's right chevron. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close routine details from the canvas header The header button toggles the panel: the panel icon opens it, and a right chevron in the same place closes it. The panel has no close button of its own. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the routine details chevron without a fill Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the header chevron style for the step details back button Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre every agent Bloub on the canvas view One rule replaces the header and chat fixes and also centres the step list and canvas card avatars. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Focus a routine when the user clicks its card The card click now also does what picking the routine in the select does, and the panel still shows the routine's details. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Select a canvas card from a click anywhere on it Before, only the card's title row selected it; a click on its body started a drag that did nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove Run now from the routine details panel The canvas header keeps it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user change an agent's task in a routine The Task field in an agent's routine details is editable. For the routine's own agent it changes the routine's instruction; for any other agent it changes the instruction of the links that reach it in that routine, through the new routineFlows.updateLink endpoint. The card and the panel show the task of the routine in focus. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the routine canvas the chat's edge background The header row takes the sidebar colour, and the canvas below is the same inset panel with its top line and rounded corner. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the small header button for hiding the canvas chat Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Add agent and Add routine toolbar from the canvas Agents join a routine through a connection or the canvas assistant. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Render agent answers as Markdown in the canvas chat, and follow the newest An agent's answer uses the chat's Markdown renderer, and its links open in the external browser as in the chat. The message list scrolls to the end when a message arrives or the agent starts working. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add agents to the routine canvas from a right-click menu Right-click the canvas to place an agent that is not on it yet at that spot, or to create a new one there in a small card: name, what it does, and the model it runs on. The new agent is created without leaving the canvas. Placing an agent shows it at once and takes it off again when the host does not save it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat header's model pill in the new agent card The pill sits below what the agent does, shows the reasoning effort, and sends the chosen effort with the new agent. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the agent form's model field in the new agent card The card shows the model as the agent setup form does, below what the agent does. The host picks the reasoning effort, as it does for that form. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the new agent card's model field at the height of its inputs Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close the new agent card on a press outside it A press inside the card or in its model list keeps it open, and so does an agent that is being created. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the canvas menu icons as outlines The sidebar menu's fill-in effect turned the person icon into a solid shape while its submenu was open. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep SVG ids in a closing menu's copy The copy that plays a menu's exit removed every id, so an avatar drawn through url(#id) masks showed as a solid square while it faded. SVG elements now keep their ids; the copy goes in only after the original has left the page. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Resend a routine handoff that a restart left without a delivery A restart between writing a step and attaching its delivery left the step running with nothing to settle it, and the flow stopped. The sweep now sends such a step again under the step's own key, so the mailbox returns the first delivery instead of sending twice. Also stop exporting what nothing else imports (knip). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Drop a connection whose card is gone, and save a move before leaving Removing the card a connection started on cancels the connection, and a connection needs both cards on the canvas. A card moved just before the user leaves the canvas is saved then instead of dropped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the canvas menu's agent rows room for name and title Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the exactOptionalPropertyTypes ratchet at its baseline The new routine flow code adds no errors under the option, the moved story messages leave out absent fields, and the Conversation story's baseline goes down to its one remaining error. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Tie canvas chat answers to their request, and ignore stale canvas loads The assistant reads its request in the conversation around its own message. A request still queued takes no answer, a failed or cancelled delivery ends it with an error, and an answer must come from the request's own turn. A canvas load for an agent the user has left changes nothing, and removing an agent drops its pending move. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Find a long turn's answer for the canvas chat on the newest page When the page around the request ends before the answer, the chat reads the newest page, where the answer of a turn that has just ended is. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Say a canvas connection is made only after the host saves it The canvas announced the connection as soon as it was drawn, so a connection the host refused showed both a success line and an error. onConnect now answers whether the connection was saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Read only one turn's assistant messages for a routine flow answer The flow sweep looked up each finished run's answer by loading and parsing the whole conversation of the agent. It now reads the assistant messages of that one turn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show the last answer of a long turn in the canvas chat An earlier message of the turn on the page around the request no longer stands in for the answer: once the turn has ended, the answer on the newest page wins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show webhook routines on the routine canvas and set their webhook The canvas listed scheduled routines only. It now reads routines of every trigger kind, and a webhook routine carries its endpoint, event type and filters. Its card says which events start it, and its details use the routine settings' webhook card: copy the endpoint, regenerate the signing secret, and save the event type and filters through the events API. Run now and the owner's task use the events API for these routines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Seed one webhook routine in the development showcase data Launch gets "Release published", started by release.published events with one filter. The seed cannot reach Electron's safe storage, so it stores a placeholder secret: requests answer 503 until the secret is regenerated in the app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Place canvas agents on their routine's row and add a webhook routine story An agent now goes on the row of its first routine, or of the agent that hands work to it, so an edge does not pass behind another card. Run now stays at the right edge of a routine card that has no runs. A Storybook story shows a routine that a webhook starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 1 month ago | |
Add a Routines canvas that hands a routine's answer from agent to agent (#1447) * Add diagrams canvas designs in Storybook Add the shared UI for diagrams (#1203): a canvas where routines start agents, with the last run's input and output for each agent, a run panel, and a small chat panel to edit the diagram through an agent. Add an Agents, Channels and Diagrams switch over the sidebar list. The switch shows only when the app handles it, so the app is unchanged until it is wired. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show what each routine does on the diagram canvas A routine card now shows its instruction, a seven-day strip with a tick at each time it fires, and its last runs as status dots. It glows while the run it started is in progress. The run panel for a routine shows what it does, the agents it starts and how far the run reaches, the times it fires this week, and its run history. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Animate the diagram assistant when it opens and closes The panel grows out of the launcher's pill shape and folds back into it, with a little overshoot on open and a faster close. Its content settles just after the shape. Focus moves to the input on open and back to the launcher on close, and the folded panel lets the pointer reach the canvas. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the open chat in the diagram workspace story On the Agents and Channels views the middle of the workspace story now shows the open chat, as the app does. The canvas shows only on the Diagrams view, and leaving it returns to the last open chat. The agent chat setup and the channel transcript move to shared story modules, so the conversation stories and the workspace story use the same code. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Channels view from the sidebar switch The switch now has two views: Agents, the chat list with its channels as before, and Diagrams, which shows how routines start agents. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show each routine's run when one agent has several routines A diagram keeps the last run of every routine, not one run for the whole canvas. One routine is in focus at a time: a picker in the header, the chips on each agent card, or the "Started by" list in the run panel sets it. The canvas then shows that routine's path, steps and last run in its colour and dims the rest; the panel shows what each agent received and returned in that run. The focus follows the newest run until the user picks one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add a story for a routine that starts one agent alone Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show an agent's routines beside its canvas The sidebar keeps the chat list in both views; the switch is now Agents and Routines. On Routines, opening an agent shows a list of every routine whose run reaches it, with schedule, next run, run history and last result, and the canvas of the routine picked in the list. Each routine is its own diagram. The sidebar's diagram list is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Put an agent's routines on one canvas with tabs The Routines tab no longer adds a routine list column. The open agent gets one canvas with every routine whose run reaches it, and the tabs in the canvas header pick the routine whose path and last run show. The run panel starts closed and opens when a card is picked, so the canvas has the whole width. A connection can now belong to one routine. A run follows only its own routine's connections and the shared ones, so a check that one agent runs alone stops at that agent even when the agent hands work on in other routines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Pick the highlighted routine from a selector The routine tabs in the canvas header become one select: All routines, then each routine with its colour and how its last run went. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the run details panel by default Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Start the diagram assistant closed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Run routine flows in the desktop app The Routines view of the sidebar now shows the open agent's routines from the local host: schedules, next runs, run history and what each agent received and answered in the last run. On the canvas, connecting one agent to another inside a routine makes the routine hand the first agent's answer on when it runs. Migration 28 adds the link, position and step tables, written directly, not through the event log. The Effect-based RoutineFlows service sweeps on turn, queue and routine events and at startup: it records the answer of a run that ended, settles steps whose delivery ended, and sends the next messages as deliveries from the routine. An agent with several inputs waits for all of them; an agent whose inputs failed is skipped. A link applies only to runs that start after it. Remote servers answer that routine flows are only for agents on this computer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the routine canvas header drag the window The canvas and run details headers sit at the top of the window like the chat header, so they now carry window-drag as it does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let an agent edit the routine canvas from its chat panel The Routines view now shows the chat panel. A request goes to the open agent's conversation, and the panel shows the answer of the turn that read it. Agents get list_routine_flows, connect_routine_agents and disconnect_routine_agents. The canvas walked all links as one graph, so two routines that link the same agents in opposite directions froze the renderer. Each routine is now walked on its own links, and a new connection is checked against the focused routine only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Name the canvas chat placeholder a routine change Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas chat launcher Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat composer in the canvas chat panel The panel input is now the chat's compact composer: one line with the round send button, and the same editor and send shortcut. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user drag the canvas chat Drag the chat by its button or the panel header. It stays inside the canvas. A press that moves less than 4 px is still a click. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show a new canvas connection before the host saves it The link draws at once. When the host refuses it, the link goes away and an error toast says why. A pending link cannot be removed until it is saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the week strip from routine cards The run details panel still shows it. The fit uses the shorter card. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas header Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the canvas header to the agent chat header 38 px high, with the same 18 px avatar, name size and start position. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Move the routine picker onto the canvas The picker sits at the top centre of the canvas, level with Add agent. Add agent and the header Run now use the extra-small button and icon. The canvas status message moves below the picker. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the last run status from the canvas header The run details panel still shows it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the canvas zoom controls as a column of square buttons Zoom in, zoom out and fit, one outlined button each. The fit button's name still says the zoom level. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use smaller, muted icons in the canvas zoom buttons Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the run details button to the chat header, and slide the panel in The button uses the chat header's panel toggle. The run details panel opens with the settings panel's slide-in, and without it when the user asks for reduced motion. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Open run details as the chat's browser sidebar opens The panel appears at the right edge, and the canvas eases its padding to make room, with the chat panel's transition. This replaces the slide-in. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Rename run details to routine details, and close it with a chevron The close button uses the browser sidebar's right chevron. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close routine details from the canvas header The header button toggles the panel: the panel icon opens it, and a right chevron in the same place closes it. The panel has no close button of its own. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the routine details chevron without a fill Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the header chevron style for the step details back button Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre every agent Bloub on the canvas view One rule replaces the header and chat fixes and also centres the step list and canvas card avatars. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Focus a routine when the user clicks its card The card click now also does what picking the routine in the select does, and the panel still shows the routine's details. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Select a canvas card from a click anywhere on it Before, only the card's title row selected it; a click on its body started a drag that did nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove Run now from the routine details panel The canvas header keeps it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user change an agent's task in a routine The Task field in an agent's routine details is editable. For the routine's own agent it changes the routine's instruction; for any other agent it changes the instruction of the links that reach it in that routine, through the new routineFlows.updateLink endpoint. The card and the panel show the task of the routine in focus. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the routine canvas the chat's edge background The header row takes the sidebar colour, and the canvas below is the same inset panel with its top line and rounded corner. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the small header button for hiding the canvas chat Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Add agent and Add routine toolbar from the canvas Agents join a routine through a connection or the canvas assistant. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Render agent answers as Markdown in the canvas chat, and follow the newest An agent's answer uses the chat's Markdown renderer, and its links open in the external browser as in the chat. The message list scrolls to the end when a message arrives or the agent starts working. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add agents to the routine canvas from a right-click menu Right-click the canvas to place an agent that is not on it yet at that spot, or to create a new one there in a small card: name, what it does, and the model it runs on. The new agent is created without leaving the canvas. Placing an agent shows it at once and takes it off again when the host does not save it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat header's model pill in the new agent card The pill sits below what the agent does, shows the reasoning effort, and sends the chosen effort with the new agent. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the agent form's model field in the new agent card The card shows the model as the agent setup form does, below what the agent does. The host picks the reasoning effort, as it does for that form. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the new agent card's model field at the height of its inputs Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close the new agent card on a press outside it A press inside the card or in its model list keeps it open, and so does an agent that is being created. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the canvas menu icons as outlines The sidebar menu's fill-in effect turned the person icon into a solid shape while its submenu was open. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep SVG ids in a closing menu's copy The copy that plays a menu's exit removed every id, so an avatar drawn through url(#id) masks showed as a solid square while it faded. SVG elements now keep their ids; the copy goes in only after the original has left the page. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Resend a routine handoff that a restart left without a delivery A restart between writing a step and attaching its delivery left the step running with nothing to settle it, and the flow stopped. The sweep now sends such a step again under the step's own key, so the mailbox returns the first delivery instead of sending twice. Also stop exporting what nothing else imports (knip). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Drop a connection whose card is gone, and save a move before leaving Removing the card a connection started on cancels the connection, and a connection needs both cards on the canvas. A card moved just before the user leaves the canvas is saved then instead of dropped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the canvas menu's agent rows room for name and title Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the exactOptionalPropertyTypes ratchet at its baseline The new routine flow code adds no errors under the option, the moved story messages leave out absent fields, and the Conversation story's baseline goes down to its one remaining error. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Tie canvas chat answers to their request, and ignore stale canvas loads The assistant reads its request in the conversation around its own message. A request still queued takes no answer, a failed or cancelled delivery ends it with an error, and an answer must come from the request's own turn. A canvas load for an agent the user has left changes nothing, and removing an agent drops its pending move. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Find a long turn's answer for the canvas chat on the newest page When the page around the request ends before the answer, the chat reads the newest page, where the answer of a turn that has just ended is. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Say a canvas connection is made only after the host saves it The canvas announced the connection as soon as it was drawn, so a connection the host refused showed both a success line and an error. onConnect now answers whether the connection was saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Read only one turn's assistant messages for a routine flow answer The flow sweep looked up each finished run's answer by loading and parsing the whole conversation of the agent. It now reads the assistant messages of that one turn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show the last answer of a long turn in the canvas chat An earlier message of the turn on the page around the request no longer stands in for the answer: once the turn has ended, the answer on the newest page wins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show webhook routines on the routine canvas and set their webhook The canvas listed scheduled routines only. It now reads routines of every trigger kind, and a webhook routine carries its endpoint, event type and filters. Its card says which events start it, and its details use the routine settings' webhook card: copy the endpoint, regenerate the signing secret, and save the event type and filters through the events API. Run now and the owner's task use the events API for these routines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Seed one webhook routine in the development showcase data Launch gets "Release published", started by release.published events with one filter. The seed cannot reach Electron's safe storage, so it stores a placeholder secret: requests answer 503 until the secret is regenerated in the app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Place canvas agents on their routine's row and add a webhook routine story An agent now goes on the row of its first routine, or of the agent that hands work to it, so an edge does not pass behind another card. Run now stays at the right edge of a routine card that has no runs. A Storybook story shows a routine that a webhook starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 1 month ago | |
Add a Routines canvas that hands a routine's answer from agent to agent (#1447) * Add diagrams canvas designs in Storybook Add the shared UI for diagrams (#1203): a canvas where routines start agents, with the last run's input and output for each agent, a run panel, and a small chat panel to edit the diagram through an agent. Add an Agents, Channels and Diagrams switch over the sidebar list. The switch shows only when the app handles it, so the app is unchanged until it is wired. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show what each routine does on the diagram canvas A routine card now shows its instruction, a seven-day strip with a tick at each time it fires, and its last runs as status dots. It glows while the run it started is in progress. The run panel for a routine shows what it does, the agents it starts and how far the run reaches, the times it fires this week, and its run history. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Animate the diagram assistant when it opens and closes The panel grows out of the launcher's pill shape and folds back into it, with a little overshoot on open and a faster close. Its content settles just after the shape. Focus moves to the input on open and back to the launcher on close, and the folded panel lets the pointer reach the canvas. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the open chat in the diagram workspace story On the Agents and Channels views the middle of the workspace story now shows the open chat, as the app does. The canvas shows only on the Diagrams view, and leaving it returns to the last open chat. The agent chat setup and the channel transcript move to shared story modules, so the conversation stories and the workspace story use the same code. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Channels view from the sidebar switch The switch now has two views: Agents, the chat list with its channels as before, and Diagrams, which shows how routines start agents. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show each routine's run when one agent has several routines A diagram keeps the last run of every routine, not one run for the whole canvas. One routine is in focus at a time: a picker in the header, the chips on each agent card, or the "Started by" list in the run panel sets it. The canvas then shows that routine's path, steps and last run in its colour and dims the rest; the panel shows what each agent received and returned in that run. The focus follows the newest run until the user picks one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add a story for a routine that starts one agent alone Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show an agent's routines beside its canvas The sidebar keeps the chat list in both views; the switch is now Agents and Routines. On Routines, opening an agent shows a list of every routine whose run reaches it, with schedule, next run, run history and last result, and the canvas of the routine picked in the list. Each routine is its own diagram. The sidebar's diagram list is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Put an agent's routines on one canvas with tabs The Routines tab no longer adds a routine list column. The open agent gets one canvas with every routine whose run reaches it, and the tabs in the canvas header pick the routine whose path and last run show. The run panel starts closed and opens when a card is picked, so the canvas has the whole width. A connection can now belong to one routine. A run follows only its own routine's connections and the shared ones, so a check that one agent runs alone stops at that agent even when the agent hands work on in other routines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Pick the highlighted routine from a selector The routine tabs in the canvas header become one select: All routines, then each routine with its colour and how its last run went. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the run details panel by default Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Start the diagram assistant closed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Run routine flows in the desktop app The Routines view of the sidebar now shows the open agent's routines from the local host: schedules, next runs, run history and what each agent received and answered in the last run. On the canvas, connecting one agent to another inside a routine makes the routine hand the first agent's answer on when it runs. Migration 28 adds the link, position and step tables, written directly, not through the event log. The Effect-based RoutineFlows service sweeps on turn, queue and routine events and at startup: it records the answer of a run that ended, settles steps whose delivery ended, and sends the next messages as deliveries from the routine. An agent with several inputs waits for all of them; an agent whose inputs failed is skipped. A link applies only to runs that start after it. Remote servers answer that routine flows are only for agents on this computer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the routine canvas header drag the window The canvas and run details headers sit at the top of the window like the chat header, so they now carry window-drag as it does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let an agent edit the routine canvas from its chat panel The Routines view now shows the chat panel. A request goes to the open agent's conversation, and the panel shows the answer of the turn that read it. Agents get list_routine_flows, connect_routine_agents and disconnect_routine_agents. The canvas walked all links as one graph, so two routines that link the same agents in opposite directions froze the renderer. Each routine is now walked on its own links, and a new connection is checked against the focused routine only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Name the canvas chat placeholder a routine change Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas chat launcher Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat composer in the canvas chat panel The panel input is now the chat's compact composer: one line with the round send button, and the same editor and send shortcut. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user drag the canvas chat Drag the chat by its button or the panel header. It stays inside the canvas. A press that moves less than 4 px is still a click. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show a new canvas connection before the host saves it The link draws at once. When the host refuses it, the link goes away and an error toast says why. A pending link cannot be removed until it is saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the week strip from routine cards The run details panel still shows it. The fit uses the shorter card. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas header Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the canvas header to the agent chat header 38 px high, with the same 18 px avatar, name size and start position. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Move the routine picker onto the canvas The picker sits at the top centre of the canvas, level with Add agent. Add agent and the header Run now use the extra-small button and icon. The canvas status message moves below the picker. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the last run status from the canvas header The run details panel still shows it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the canvas zoom controls as a column of square buttons Zoom in, zoom out and fit, one outlined button each. The fit button's name still says the zoom level. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use smaller, muted icons in the canvas zoom buttons Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the run details button to the chat header, and slide the panel in The button uses the chat header's panel toggle. The run details panel opens with the settings panel's slide-in, and without it when the user asks for reduced motion. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Open run details as the chat's browser sidebar opens The panel appears at the right edge, and the canvas eases its padding to make room, with the chat panel's transition. This replaces the slide-in. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Rename run details to routine details, and close it with a chevron The close button uses the browser sidebar's right chevron. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close routine details from the canvas header The header button toggles the panel: the panel icon opens it, and a right chevron in the same place closes it. The panel has no close button of its own. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the routine details chevron without a fill Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the header chevron style for the step details back button Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre every agent Bloub on the canvas view One rule replaces the header and chat fixes and also centres the step list and canvas card avatars. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Focus a routine when the user clicks its card The card click now also does what picking the routine in the select does, and the panel still shows the routine's details. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Select a canvas card from a click anywhere on it Before, only the card's title row selected it; a click on its body started a drag that did nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove Run now from the routine details panel The canvas header keeps it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user change an agent's task in a routine The Task field in an agent's routine details is editable. For the routine's own agent it changes the routine's instruction; for any other agent it changes the instruction of the links that reach it in that routine, through the new routineFlows.updateLink endpoint. The card and the panel show the task of the routine in focus. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the routine canvas the chat's edge background The header row takes the sidebar colour, and the canvas below is the same inset panel with its top line and rounded corner. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the small header button for hiding the canvas chat Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Add agent and Add routine toolbar from the canvas Agents join a routine through a connection or the canvas assistant. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Render agent answers as Markdown in the canvas chat, and follow the newest An agent's answer uses the chat's Markdown renderer, and its links open in the external browser as in the chat. The message list scrolls to the end when a message arrives or the agent starts working. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add agents to the routine canvas from a right-click menu Right-click the canvas to place an agent that is not on it yet at that spot, or to create a new one there in a small card: name, what it does, and the model it runs on. The new agent is created without leaving the canvas. Placing an agent shows it at once and takes it off again when the host does not save it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat header's model pill in the new agent card The pill sits below what the agent does, shows the reasoning effort, and sends the chosen effort with the new agent. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the agent form's model field in the new agent card The card shows the model as the agent setup form does, below what the agent does. The host picks the reasoning effort, as it does for that form. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the new agent card's model field at the height of its inputs Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close the new agent card on a press outside it A press inside the card or in its model list keeps it open, and so does an agent that is being created. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the canvas menu icons as outlines The sidebar menu's fill-in effect turned the person icon into a solid shape while its submenu was open. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep SVG ids in a closing menu's copy The copy that plays a menu's exit removed every id, so an avatar drawn through url(#id) masks showed as a solid square while it faded. SVG elements now keep their ids; the copy goes in only after the original has left the page. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Resend a routine handoff that a restart left without a delivery A restart between writing a step and attaching its delivery left the step running with nothing to settle it, and the flow stopped. The sweep now sends such a step again under the step's own key, so the mailbox returns the first delivery instead of sending twice. Also stop exporting what nothing else imports (knip). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Drop a connection whose card is gone, and save a move before leaving Removing the card a connection started on cancels the connection, and a connection needs both cards on the canvas. A card moved just before the user leaves the canvas is saved then instead of dropped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the canvas menu's agent rows room for name and title Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the exactOptionalPropertyTypes ratchet at its baseline The new routine flow code adds no errors under the option, the moved story messages leave out absent fields, and the Conversation story's baseline goes down to its one remaining error. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Tie canvas chat answers to their request, and ignore stale canvas loads The assistant reads its request in the conversation around its own message. A request still queued takes no answer, a failed or cancelled delivery ends it with an error, and an answer must come from the request's own turn. A canvas load for an agent the user has left changes nothing, and removing an agent drops its pending move. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Find a long turn's answer for the canvas chat on the newest page When the page around the request ends before the answer, the chat reads the newest page, where the answer of a turn that has just ended is. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Say a canvas connection is made only after the host saves it The canvas announced the connection as soon as it was drawn, so a connection the host refused showed both a success line and an error. onConnect now answers whether the connection was saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Read only one turn's assistant messages for a routine flow answer The flow sweep looked up each finished run's answer by loading and parsing the whole conversation of the agent. It now reads the assistant messages of that one turn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show the last answer of a long turn in the canvas chat An earlier message of the turn on the page around the request no longer stands in for the answer: once the turn has ended, the answer on the newest page wins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show webhook routines on the routine canvas and set their webhook The canvas listed scheduled routines only. It now reads routines of every trigger kind, and a webhook routine carries its endpoint, event type and filters. Its card says which events start it, and its details use the routine settings' webhook card: copy the endpoint, regenerate the signing secret, and save the event type and filters through the events API. Run now and the owner's task use the events API for these routines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Seed one webhook routine in the development showcase data Launch gets "Release published", started by release.published events with one filter. The seed cannot reach Electron's safe storage, so it stores a placeholder secret: requests answer 503 until the secret is regenerated in the app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Place canvas agents on their routine's row and add a webhook routine story An agent now goes on the row of its first routine, or of the agent that hands work to it, so an edge does not pass behind another card. Run now stays at the right edge of a routine card that has no runs. A Storybook story shows a routine that a webhook starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 1 month ago | |
Skip linked agents after a quiet routine run (#5030) A scheduled, script or webhook run whose agent has nothing to report keeps no answer. The routine flow still handed it on, so each linked agent started with "(no answer text)". The flow now skips these agents, as routine results and workflows already send nothing for a quiet run. A Test or manual run with an empty answer still hands on. Fixes #5022 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 5 days ago | |
Add a Routines canvas that hands a routine's answer from agent to agent (#1447) * Add diagrams canvas designs in Storybook Add the shared UI for diagrams (#1203): a canvas where routines start agents, with the last run's input and output for each agent, a run panel, and a small chat panel to edit the diagram through an agent. Add an Agents, Channels and Diagrams switch over the sidebar list. The switch shows only when the app handles it, so the app is unchanged until it is wired. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show what each routine does on the diagram canvas A routine card now shows its instruction, a seven-day strip with a tick at each time it fires, and its last runs as status dots. It glows while the run it started is in progress. The run panel for a routine shows what it does, the agents it starts and how far the run reaches, the times it fires this week, and its run history. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Animate the diagram assistant when it opens and closes The panel grows out of the launcher's pill shape and folds back into it, with a little overshoot on open and a faster close. Its content settles just after the shape. Focus moves to the input on open and back to the launcher on close, and the folded panel lets the pointer reach the canvas. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the open chat in the diagram workspace story On the Agents and Channels views the middle of the workspace story now shows the open chat, as the app does. The canvas shows only on the Diagrams view, and leaving it returns to the last open chat. The agent chat setup and the channel transcript move to shared story modules, so the conversation stories and the workspace story use the same code. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Channels view from the sidebar switch The switch now has two views: Agents, the chat list with its channels as before, and Diagrams, which shows how routines start agents. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show each routine's run when one agent has several routines A diagram keeps the last run of every routine, not one run for the whole canvas. One routine is in focus at a time: a picker in the header, the chips on each agent card, or the "Started by" list in the run panel sets it. The canvas then shows that routine's path, steps and last run in its colour and dims the rest; the panel shows what each agent received and returned in that run. The focus follows the newest run until the user picks one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add a story for a routine that starts one agent alone Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show an agent's routines beside its canvas The sidebar keeps the chat list in both views; the switch is now Agents and Routines. On Routines, opening an agent shows a list of every routine whose run reaches it, with schedule, next run, run history and last result, and the canvas of the routine picked in the list. Each routine is its own diagram. The sidebar's diagram list is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Put an agent's routines on one canvas with tabs The Routines tab no longer adds a routine list column. The open agent gets one canvas with every routine whose run reaches it, and the tabs in the canvas header pick the routine whose path and last run show. The run panel starts closed and opens when a card is picked, so the canvas has the whole width. A connection can now belong to one routine. A run follows only its own routine's connections and the shared ones, so a check that one agent runs alone stops at that agent even when the agent hands work on in other routines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Pick the highlighted routine from a selector The routine tabs in the canvas header become one select: All routines, then each routine with its colour and how its last run went. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the run details panel by default Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Start the diagram assistant closed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Run routine flows in the desktop app The Routines view of the sidebar now shows the open agent's routines from the local host: schedules, next runs, run history and what each agent received and answered in the last run. On the canvas, connecting one agent to another inside a routine makes the routine hand the first agent's answer on when it runs. Migration 28 adds the link, position and step tables, written directly, not through the event log. The Effect-based RoutineFlows service sweeps on turn, queue and routine events and at startup: it records the answer of a run that ended, settles steps whose delivery ended, and sends the next messages as deliveries from the routine. An agent with several inputs waits for all of them; an agent whose inputs failed is skipped. A link applies only to runs that start after it. Remote servers answer that routine flows are only for agents on this computer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the routine canvas header drag the window The canvas and run details headers sit at the top of the window like the chat header, so they now carry window-drag as it does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let an agent edit the routine canvas from its chat panel The Routines view now shows the chat panel. A request goes to the open agent's conversation, and the panel shows the answer of the turn that read it. Agents get list_routine_flows, connect_routine_agents and disconnect_routine_agents. The canvas walked all links as one graph, so two routines that link the same agents in opposite directions froze the renderer. Each routine is now walked on its own links, and a new connection is checked against the focused routine only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Name the canvas chat placeholder a routine change Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas chat launcher Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat composer in the canvas chat panel The panel input is now the chat's compact composer: one line with the round send button, and the same editor and send shortcut. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user drag the canvas chat Drag the chat by its button or the panel header. It stays inside the canvas. A press that moves less than 4 px is still a click. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show a new canvas connection before the host saves it The link draws at once. When the host refuses it, the link goes away and an error toast says why. A pending link cannot be removed until it is saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the week strip from routine cards The run details panel still shows it. The fit uses the shorter card. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre the Bloub in the canvas header Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the canvas header to the agent chat header 38 px high, with the same 18 px avatar, name size and start position. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Move the routine picker onto the canvas The picker sits at the top centre of the canvas, level with Add agent. Add agent and the header Run now use the extra-small button and icon. The canvas status message moves below the picker. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the last run status from the canvas header The run details panel still shows it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Show the canvas zoom controls as a column of square buttons Zoom in, zoom out and fit, one outlined button each. The fit button's name still says the zoom level. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use smaller, muted icons in the canvas zoom buttons Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Match the run details button to the chat header, and slide the panel in The button uses the chat header's panel toggle. The run details panel opens with the settings panel's slide-in, and without it when the user asks for reduced motion. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Open run details as the chat's browser sidebar opens The panel appears at the right edge, and the canvas eases its padding to make room, with the chat panel's transition. This replaces the slide-in. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Rename run details to routine details, and close it with a chevron The close button uses the browser sidebar's right chevron. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close routine details from the canvas header The header button toggles the panel: the panel icon opens it, and a right chevron in the same place closes it. The panel has no close button of its own. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the routine details chevron without a fill Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the header chevron style for the step details back button Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Centre every agent Bloub on the canvas view One rule replaces the header and chat fixes and also centres the step list and canvas card avatars. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Focus a routine when the user clicks its card The card click now also does what picking the routine in the select does, and the panel still shows the routine's details. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Select a canvas card from a click anywhere on it Before, only the card's title row selected it; a click on its body started a drag that did nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove Run now from the routine details panel The canvas header keeps it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Let the user change an agent's task in a routine The Task field in an agent's routine details is editable. For the routine's own agent it changes the routine's instruction; for any other agent it changes the instruction of the links that reach it in that routine, through the new routineFlows.updateLink endpoint. The card and the panel show the task of the routine in focus. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the routine canvas the chat's edge background The header row takes the sidebar colour, and the canvas below is the same inset panel with its top line and rounded corner. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the small header button for hiding the canvas chat Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Remove the Add agent and Add routine toolbar from the canvas Agents join a routine through a connection or the canvas assistant. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Render agent answers as Markdown in the canvas chat, and follow the newest An agent's answer uses the chat's Markdown renderer, and its links open in the external browser as in the chat. The message list scrolls to the end when a message arrives or the agent starts working. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add agents to the routine canvas from a right-click menu Right-click the canvas to place an agent that is not on it yet at that spot, or to create a new one there in a small card: name, what it does, and the model it runs on. The new agent is created without leaving the canvas. Placing an agent shows it at once and takes it off again when the host does not save it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the chat header's model pill in the new agent card The pill sits below what the agent does, shows the reasoning effort, and sends the chosen effort with the new agent. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Use the agent form's model field in the new agent card The card shows the model as the agent setup form does, below what the agent does. The host picks the reasoning effort, as it does for that form. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Draw the new agent card's model field at the height of its inputs Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Close the new agent card on a press outside it A press inside the card or in its model list keeps it open, and so does an agent that is being created. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the canvas menu icons as outlines The sidebar menu's fill-in effect turned the person icon into a solid shape while its submenu was open. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep SVG ids in a closing menu's copy The copy that plays a menu's exit removed every id, so an avatar drawn through url(#id) masks showed as a solid square while it faded. SVG elements now keep their ids; the copy goes in only after the original has left the page. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Resend a routine handoff that a restart left without a delivery A restart between writing a step and attaching its delivery left the step running with nothing to settle it, and the flow stopped. The sweep now sends such a step again under the step's own key, so the mailbox returns the first delivery instead of sending twice. Also stop exporting what nothing else imports (knip). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Drop a connection whose card is gone, and save a move before leaving Removing the card a connection started on cancels the connection, and a connection needs both cards on the canvas. A card moved just before the user leaves the canvas is saved then instead of dropped. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Give the canvas menu's agent rows room for name and title Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the exactOptionalPropertyTypes ratchet at its baseline The new routine flow code adds no errors under the option, the moved story messages leave out absent fields, and the Conversation story's baseline goes down to its one remaining error. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Tie canvas chat answers to their request, and ignore stale canvas loads The assistant reads its request in the conversation around its own message. A request still queued takes no answer, a failed or cancelled delivery ends it with an error, and an answer must come from the request's own turn. A canvas load for an agent the user has left changes nothing, and removing an agent drops its pending move. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Find a long turn's answer for the canvas chat on the newest page When the page around the request ends before the answer, the chat reads the newest page, where the answer of a turn that has just ended is. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Say a canvas connection is made only after the host saves it The canvas announced the connection as soon as it was drawn, so a connection the host refused showed both a success line and an error. onConnect now answers whether the connection was saved. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Read only one turn's assistant messages for a routine flow answer The flow sweep looked up each finished run's answer by loading and parsing the whole conversation of the agent. It now reads the assistant messages of that one turn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show the last answer of a long turn in the canvas chat An earlier message of the turn on the page around the request no longer stands in for the answer: once the turn has ended, the answer on the newest page wins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Show webhook routines on the routine canvas and set their webhook The canvas listed scheduled routines only. It now reads routines of every trigger kind, and a webhook routine carries its endpoint, event type and filters. Its card says which events start it, and its details use the routine settings' webhook card: copy the endpoint, regenerate the signing secret, and save the event type and filters through the events API. Run now and the owner's task use the events API for these routines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Seed one webhook routine in the development showcase data Launch gets "Release published", started by release.published events with one filter. The seed cannot reach Electron's safe storage, so it stores a placeholder secret: requests answer 503 until the secret is regenerated in the app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Place canvas agents on their routine's row and add a webhook routine story An agent now goes on the row of its first routine, or of the agent that hands work to it, so an edge does not pass behind another card. Run now stays at the right edge of a routine card that has no runs. A Storybook story shows a routine that a webhook starts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 1 month ago | |
Skip linked agents after a quiet routine run (#5030) A scheduled, script or webhook run whose agent has nothing to report keeps no answer. The routine flow still handed it on, so each linked agent started with "(no answer text)". The flow now skips these agents, as routine results and workflows already send nothing for a quiet run. A Test or manual run with an empty answer still hands on. Fixes #5022 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> | 5 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 5 days ago | ||
| 1 month ago | ||
| 5 days ago |