Commit Graph
449 Commits
Author SHA1 Message Date
AidanandGitHub 6404d98b3a [aidan] feat/scheduled-tasks: agent workflow scheduling and in-chat convert (#98)
* [aidan] feat/workflow-suggest: nudge user to convert repeatable chat to workflow

Add SuggestConvertToWorkflow MCP tool that agents call at the end of a task
when they've completed something worth repeating (daily report, weekly check,
recurring data pull). Frontend detects the tool call and glows the "Convert to
workflow" button 3 times to draw the eye. When user clicks it, the suggested
cadence (e.g. "every weekday at 9am") is stored in the draft and seeded into
the scheduling agent's first prompt, so the agent can act on the suggestion
rather than asking the user again.

Tool is never auto-called — agents decide when a task is genuinely repeatable
(not debugging, creative work, one-off lookup). Tool description emphasizes
sparse, high-confidence use only (once per session max).

Files changed:
- backend/apps/agents/schedule_mcp_server.py: add SuggestConvertToWorkflow tool
- frontend/src/shared/mcpToolMeta.ts: add label for new tool
- frontend/src/app/pages/Dashboard/cards/AgentCard.tsx: detect suggestion in
  session messages, show+glow "Convert to workflow" button, pass cadence to draft
- frontend/src/shared/state/workflowsSlice.ts: add suggested_cadence field to
  Workflow interface
- frontend/src/app/pages/Workflows/SchedulingView.tsx: seed scheduling agent
  prompt with suggested cadence hint

* [aidan] feat/agent-scheduling: route recurring asks through native workflows, deny claude cron skill

* [aidan] feat/workflow-convert: in-chat convert popup and auto-open scheduled workflow card
2026-06-19 03:47:35 -07:00
abccodes 111b527979 [aidan] refactor/private-names: rename error and schedule classifiers from _ to p_ 2026-06-19 03:33:11 -07:00
abccodes b0725083a3 [aidan] feat/workflow-model: persist edit-agent model on save with switch notice and fresh drafts 2026-06-18 23:30:43 -07:00
abccodes 02f0736c63 [aidan] fix/agent-tokens: friendly out-of-tokens card across all agent surfaces 2026-06-18 23:30:43 -07:00
abccodes 2ec2ef94f8 [aidan] feat/mcp-suggestions: suggest both Google and Microsoft when provider is ambiguous 2026-06-18 23:30:43 -07:00
abccodes 168a49bae9 [aidan] feat/mcp-suggestions: dismissable integration banner with per-session cooldown 2026-06-18 04:13:39 -07:00
abccodes 3f780bf2b3 [aidan] feat/workflows: validate steps before scheduling and keep chat tool memory 2026-06-18 04:12:52 -07:00
abccodes f650bb6e01 [aidan] feat/workflows: require at least one step to save a workflow 2026-06-18 04:10:32 -07:00
abccodes 4894b608b9 [aidan] feat/schedule-calendar: add calendar occurrences endpoint and concrete timezones 2026-06-18 03:56:33 -07:00
abccodes 506bcb7cbf [aidan] feat/workflow-runs: add pause, resume, and stop controls for live runs 2026-06-18 03:53:27 -07:00
AidanandGitHub 5f45db08a0 [aidan] feat/history-popover: add chat history and scheduled tasks run log tabs (#96) 2026-06-17 23:22:40 -07:00
AidanandGitHub 72dd5208a6 [aidan] feat/workflows: auto-name workflows and polish the build flow (#95)
* [aidan] feat/workflow-auto-naming: auto-generate workflow titles from steps

Generate a title + description from a workflow's steps (one aux call,
reused for step labels) whenever it is still auto_named, so a workflow
built in the Edit Agent names itself on commit instead of staying
"New workflow". A manual rename sets auto_named=False and is never
overwritten. Stream the aux call (non-streaming drops content on some
9router lanes) and fall back to a step-derived title when the model is
unavailable.

* [aidan] feat/workflows: hide unsaved new workflows until first save

A brand-new "+ New" workflow is created with unsaved=true and kept out
of the hub's scheduled/unscheduled lists while the user is still building
it in the Edit Agent. The first commit (Save) clears the flag and the
workflow appears. Every other create path stays visible immediately.

* [aidan] ux/workflows: remove redundant save workflow button

The Edit Agent already has Discard/Save controls in its strip, so the
header "Save Workflow" button was a duplicate save path. Remove it and
its pulse/edit-session-id wiring; the model/time subtitle stays.

* [aidan] ux/workflows: animate title on auto-rename

Wrap the workflow card title in the same Typewriter the chat card uses,
so when the auto-generated name replaces the placeholder after Save it
retypes letter-by-letter. Gated on a real (non-placeholder) title so it
never animates on mount or for already-named workflows.

* [aidan] ux/workflows: animate sidebar title on auto-rename

Wrap the calendar hub's sidebar row title in the same Typewriter the
workflow card uses, so a title that auto-renames retypes letter-by-letter
in the sidebar too. Extract the placeholder/isRealTitle guard into the
shared workflowVisuals so the card and sidebar stay in sync.
2026-06-17 20:27:08 -07:00
abccodes 0bbc5c894b [aidan] fix/workflow-scheduling: save unscheduled workflows as drafts 2026-06-17 17:39:07 -07:00
abccodes 5aeef89206 [aidan] feat/workflow-edit: add draft testing save flow 2026-06-17 00:33:27 -07:00
abccodes d3532f7a26 [aidan] chore/merge: merge scheduled tasks upstream 2026-06-17 00:23:09 -07:00
AidanandGitHub 2bb5657ec0 [aidan] feat/scheduled-tasks: calendar, rename, and edit workflows (#94)
* [aidan] bug: fix schedule button

* [aidan] fix/agent-errors: surface provider rate limits

* [aidan] ux/cards: click-to-rename for chat and workflow titles

Single-click a card's title to enter edit mode inline. Commit on Enter/blur,
cancel on Escape. Rename persists via PATCH for workflows and sessions.

* [aidan] feat/workflows: seed build prompt for zero-step workflows

When a new workflow has no steps, seed the agent with a prompt asking
the user to describe what the workflow should do, rather than starting blank.

* [aidan] feat/workflows: add-to-schedule popover for unscheduled workflows

Clicking the "+" on an unscheduled workflow row opens a popover with two options:
- Keep this schedule: enables the workflow's existing cadence and moves it to Scheduled
- Change schedule: opens the scheduling editor to pick a different time

* [aidan] ux/workflows: wire add-to-schedule popover and simplify New button

- Made the "+" icon on unscheduled workflow rows clickable, opening a popover
  to keep or change the schedule
- Removed AddIcon from toolbar "New" button (now reads "New" instead of "+ New")

* [aidan] fix/scheduled-tasks: open schedule calendar when Schedule pill clicked

Fixed the Schedule pill click being swallowed by the toolbar's dismiss handler.
Exempted the toolbar pills via data-toolbar-pills so their click handlers fire.

* [aidan] ux/workflows: open New workflow in agent build chat instead of empty card

When creating a new workflow from the hub, open it in edit_agent view (with the
agent builder chat) instead of a preview card. The workflow is created on the
backend first so the embedded session has a real ID.
2026-06-16 23:53:04 -07:00
AidanandGitHub e84eceee5b [aidan] feat/task-scheduling: add hourly and minute (15-min minimum) schedule intervals (#93) 2026-06-16 23:50:52 -07:00
abccodes ae68c1289b [aidan] feat/scheduled-tasks: remember workflow tool permissions across runs 2026-06-16 22:37:53 -07:00
abccodes 5a5046d5a9 [aidan] fix: schedule time in chat 2026-06-16 00:51:56 -07:00
abccodes 43ffe63b31 [aidan] feat/scheduled-tasks: keep step labels in sync on edit and show chevron on every step 2026-06-16 00:06:59 -07:00
abccodes e8b1cf3b87 [aidan] chore/scheduled-tasks: merge eric/workflow feature onto current eric/dev 2026-06-15 16:02:21 -07:00
ciregenz 62acc4b8c0 [eric] models: drop banned Claude Fable + unrunnable Gemini 3.1 Pro from the picker 2026-06-15 13:44:22 -07:00
ciregenz 076c47617a [eric] gemini: prefer connected Antigravity over AI Studio key + fail-fast read timeout 2026-06-15 12:36:29 -07:00
ciregenz 235fa47d15 [eric] providers: openai own-key keeps cp-openai/ prefix so 9router can route it 2026-06-15 11:59:11 -07:00
ciregenz f93d6e02d1 [eric] 9router: port the 0.4.x /api auth gate (x-9r-cli-token) to unblock a version bump 2026-06-14 20:27:39 -07:00
ciregenz 124b128ed1 [eric] proxy: fix non-Anthropic first-msg 400s (Gemini allowlist + gpt-5 sampling strip) 2026-06-14 16:58:26 -07:00
ciregenz 9086ef5af2 Merge remote-tracking branch 'origin/eric/dev' into eric/dev 2026-06-14 08:59:19 -07:00
cireandGitHub e47ac3bf67 Revert "[aidan] bug: dashboard not renaming during first run" (#83)
This reverts commit 2d7be0e8ac.
2026-06-14 08:58:49 -07:00
ciregenz 7eeb864a29 [eric] swarm: archive checksum (reject tampered) + transactional rollback on import 2026-06-14 08:07:17 -07:00
AidanandGitHub f08f71313f [aidan] ui/ux: auth flow fixes (#84)
* aidan] bug: fixed 2 auth claude login issue

* [aidan] bug: claude login w email+pw

* [aidan] ui: edited message for cases where anthropic redirects to enter email code even after login'

* [aidan] ui/ux: fix connecting status accuracy
2026-06-14 07:55:24 -07:00
ciregenz 4e1df63b7c Merge remote-tracking branch 'origin/eric/dev' into eric/dev 2026-06-14 07:44:15 -07:00
ciregenz 6899ea5bd1 [eric] swarm: dashboard export/import (closure of agents+apps+modes, two-class deps) 2026-06-14 06:44:16 -07:00
ciregenz 9b80d0417a [eric] swarm: workflow export/import entity (lazy store, schedule-off + PII-strip on import) 2026-06-14 06:27:52 -07:00
ciregenz d2a7b79eaf [eric] swarm: app export/import (workspace tree, .env regen) + code-safety review 2026-06-14 06:11:16 -07:00
ciregenz ace783f4ef [eric] swarm: .swarm bundle engine + skill export/import endpoints 2026-06-14 05:55:28 -07:00
AidanandGitHub 2d7be0e8ac [aidan] bug: dashboard not renaming during first run 2026-06-14 01:22:13 -07:00
ciregenz 685314b313 [eric] free-trial: skip the idle cache-warm ping on the free lane (useless across rotating pool accounts, and it'd burn a run at idle) 2026-06-13 19:06:57 -07:00
ciregenz bf8b450e33 [eric] free-trial: tag the remaining per-query aux calls (turn-label, group-meta, cache-warm, preflight) so one query stays one run 2026-06-13 19:03:35 -07:00
ciregenz 846c13e8ad [eric] free-trial: tag title-gen with the session id so a query + its title-gen = one run 2026-06-13 18:52:51 -07:00
ciregenz 01df3cde17 [eric] free-trial: fresh task-id per query so each query is its own run (cancel or not) 2026-06-13 18:42:49 -07:00
ciregenz 94e17c4b50 [eric] free-trial: arm gate ignores our own managed Claude node (trial no longer self-clears on relaunch) 2026-06-13 18:09:03 -07:00
ciregenz e4740b74c1 [eric] free-trial: pin the trial to Haiku end-to-end (desktop + subagent) so the CLI never sends effort 2026-06-13 17:38:06 -07:00
ciregenz c8a86cd3ff [eric] free-trial: set ENABLE_TOOL_SEARCH=auto on the proxy branch (tool-defer+cache_control 400) 2026-06-13 17:17:28 -07:00
ciregenz b9d90250b7 [eric] updater: evergreen silent install-on-idle (staged update + idle + no agents) 2026-06-13 16:06:26 -07:00
ciregenz 8b6a65fc4b [eric] free-trial: tag free-lane calls with the session id so 1 task = 1 run 2026-06-13 16:03:02 -07:00
ciregenz 10fa59057d [eric] settings: boot drops the managed Pro connection when disconnected, so 'disconnect Pro -> free trial arms' actually works 2026-06-13 04:19:46 -07:00
ciregenz 861f3520f9 [eric] app-builder: drop the em-dash from the skill prompt (precedence: no em/en-dashes anywhere) 2026-06-13 02:08:31 -07:00
ciregenz 5291a4ae60 [aidan] merge #79: QoL, sidebar ui/ux, titles, text compaction, bug fixes 2026-06-13 02:06:54 -07:00
ciregenz 490bbf4113 [aidan] merge #80: cross-origin iframe perception + spawned card end UX 2026-06-13 01:53:47 -07:00
AidanandGitHub 3f4d91d8b4 [aidan] bug: cross-origin iframe perception + spawned card end UX (#78)
Browser sub-agents can now drive Google Drive’s share-doc flow end to end: same-process cross-origin iframes (the share dialog) are visible through a frame-tree-aware AX walk, and combobox autocomplete fields fill in one click_index call via DOM.focus + Input.insertText. When a spawned browser card’s agent finishes, the card now fades through a “Task done” pill with a Keep button for ~3s instead of snapping out, so the user sees what happened.
2026-06-13 00:58:44 -07:00