Commit Graph
479 Commits
Author SHA1 Message Date
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 d7b2dfce7b [eric] swarm: backend tests for redaction, zip-slip/bomb, skill round-trip 2026-06-14 05:55:33 -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
Aidan 7b88be7003 [aidan] ui/ux: hide noisy memory/mode from chat title, fix token bug
Drop the inline 'Memory N% full' pill from AgentChat and the mode label from AgentCard so the chat header stays quiet until tools are connected. Backend now emits agent:context_update after compact and clear so the session token counters reflect the trimmed history instead of stale pre-compact totals, with a new _estimate_post_compact_input helper and matching invariants in test_v2_invariants.
2026-06-13 00:40:19 -07:00
AidanandGitHub 08526b6149 [aidan] bug/feat: sidebar reordering, title improvements, openai gen bug (#76)
* [aidan] ui: sidebar reorder

* [aidan] ux: sidebar naming bug fix

* [aidan] ui: title changing improvements

* [aidan] ui/ux: aux title gen streams for cx/ route + agent writes meta.json first

- All aux LLM calls (chat title, turn label, group meta, dashboard name) now stream
  instead of using messages.create; 9router's cx/ subscription response translator
  drops content for GPT-5-family models on the non-streaming path but works per-event.
- aux_max_tokens_for floors GPT-5 budget at 4K so reasoning still leaves headroom for
  a label; non-reasoning models get the base 100.
- App Builder skill: write meta.json FIRST (step 1 of Quick start) so the app's name
  surfaces in the sidebar + ViewEditor header on the agent's first tool call instead
  of waiting until end-of-turn.
- Session-end sync_output_from_meta_json takes a fallback_name (= session.name) so an
  agent that never writes meta.json still leaves the app with the aux-LLM chat title
  rather than "Untitled App".
- Title display: truncateForTitle caps at 4 words / 30 chars; displayChatTitle picks
  the right Phase 1 placeholder by session.mode; normalizeSessionName strips legacy
  Agent-XXXX names at slice intake.
- Typewriter component (char-by-char delete-then-type) drives the chat header,
  dashboard card title, sidebar Apps entry, and ViewEditor TextField + description
  field; honors useReducedMotion.

* [aidan] tune: reduce gpt-5 aux token floor
2026-06-12 23:33:32 -07:00
ciregenz a1f390ef0f [eric] browser: claim only the user-picked card, not every dashboard card (fix 5cf6e2a) 2026-06-12 20:06:56 -07:00
ciregenz 6790a7b8fe [eric] free-trial: default the trial ON now that the cloud is live on prod and arming is verified 2026-06-12 20:01:05 -07:00
ciregenz 5cf6e2a4b1 [eric] browser: honor the user's selected browser card instead of spawning a new one (selection now reaches sub-agent dispatch + is claimed for the task) 2026-06-12 17:31:46 -07:00
ciregenz 65a5138bfa [eric] free-trial: arm snaps a non-Claude default to Haiku so the free lane actually routes 2026-06-12 14:02:58 -07:00
ciregenz e47a3dbf35 [eric] settings: boot reconciles managed 9router keys so a cleared key drops the stale connection 2026-06-12 14:02:58 -07:00