SirKentut and Claude Opus 4.8
a35bfaaf7d
[pierre] feat/app-agent: drive web apps through the OPENSWARM_APP bridge
...
Browser agent gains app-control logic + schema, app-builder skill doc,
run.sh agent-bridge presence check, and app-agent tests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-15 15:06:10 -07:00
SirKentut
f90975f006
feat(webapp-template): ship agent bridge (window.OPENSWARM_APP) as a hook, not a doc
...
Add agentBridge.ts and import it FIRST in index.tsx so the bridge is
installed on the window before any app code runs.
The visitor / door / doorbell analogy:
- The visitor is the agent. It shows up wanting to operate the app:
read the rules, see the controls, take an action, check what happened.
- The door is window.OPENSWARM_APP. A single, always-present surface the
visitor can knock on: describe() to learn the app, getState() to read a
snapshot, invoke(name, args) to act.
- The doorbell is register({ rules, controls, getState, invoke }). The app
presses it on mount to say "I'm home, here's how to talk to me." Until it
does, describe()/getState() answer { __ready: false } so the visitor
knows the app is still booting and waits, instead of concluding nobody
lives here.
Why a hook and not just an .md:
A markdown instruction ("please expose your controls on window.X") is a
request the app can forget, half-implement, or drift from, and nothing
fails when it does. The bridge ships WITH the template and is imported
before app code, so the door exists from first paint whether or not the
author thought about agents. The app's only job is to press the doorbell
once; it never wires the plumbing, so it cannot get the plumbing wrong.
The contract is executable, not aspirational, which is the difference
between every generated app being agent-operable by default and hoping
each one remembered to be.
2026-06-14 07:49:13 -07:00
SirKentut and Claude Opus 4.8
eb6278ff5c
fix(webapp-template): self-heal half-installed vite warm cache
...
An npm install killed mid-warm leaves node_modules/ populated but no
.bin/, so _ensure_warm_cache (which only checked the dir exists) trusted
the half-tree forever and every app symlinked to it died with
`vite: command not found`. Gate the cache on .bin/vite existing, and
harden the app's frontend/run.sh skip-install guard the same way.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 02:35:19 -07:00
SirKentut
b498ed3097
implemented app-describe for agent use: exposing the command tree of an app
2026-06-13 01:01:11 -07:00
ciregenz
775b24d285
Merge PR #68 [aidan] bug: ui/ux fixes (back/forward disabled-state, browser-card dashboard scoping + resize, selection-overlay clipping, dashboard-duplicate carries chats)
...
AppShell conflict resolved: kept the lucide/redesign + folded in the back/forward disabled-state logic.
2026-06-11 02:59:30 -07:00
ciregenz
0a81bfa17a
Merge PR #70 [Aidan] appbuilder: inject selected-app context into dashboard agent chat
2026-06-11 02:51:05 -07:00
Aidan and GitHub
d69854520b
fix: carry agent chats over when duplicating a dashboard ( #73 )
...
duplicate_dashboard cloned the layout but left every browser_card pointing at
the source's browser_id and never copied the sessions, so the new dashboard
showed the browser but no chat. Now we mint fresh browser_ids, duplicate every
session attached to the source dashboard (in-memory + on-disk), remap
browser_id / parent_session_id / spawned_by / cards / expanded_session_ids onto
the new ids, and persist via _save_session. Also restores top-level agent cards
(layout.cards), which were silently dropped on duplicate.
2026-06-11 01:16:00 -07:00
ciregenz
ddd0641cac
[eric] merge free-trial + value-first onboarding (flag off, reorder gated so no-trial = today's flow)
...
# Conflicts:
# frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx
2026-06-10 23:20:18 -07:00
ciregenz
6b5f10e287
[eric] bash defaults to always-allow like other actions (catastrophic/scheduling/sensitive-path guards still prompt); drop the working status dot
2026-06-10 23:13:02 -07:00
Aidan and GitHub
e8e19661e6
Inject selected-app context into dashboard agent chat ( #69 )
...
When a user selects an App card on the dashboard via the "Select UI element" picker, thread the selected Output ids to the backend (mirroring the selected_browser_ids path) and inject a per-app context block into the system prompt: each app's absolute workspace path, entry point, meta.json, and a pointer to its SKILL.md. This lets the agent edit existing apps in place from the main view (the dashboard card's Vite runtime live-reloads on save) without switching to the Apps tab.
2026-06-10 21:29:02 -07:00
ciregenz
100d6491f7
[eric] models: track model errors (diagnostic) + friendly 'not on your plan' card for the 1211 unknown-model wall
2026-06-10 19:10:57 -07:00
ciregenz
a126c42a07
[eric] free-trial: hand the wheel back when a real model is connected mid-trial (key or 9router sub)
2026-06-10 16:32:25 -07:00
ciregenz
893f016461
[eric] outputs: idle-paused (SIGSTOP) runtimes stop advertising their frozen port, the real fix for the app-switch ERR_FAILED
2026-06-10 01:44:53 -07:00
ciregenz
b13cc5c2b9
[eric] outputs: gate preview URL on a live runtime, a crashed vite no longer hands the webview a dead port (ERR_FAILED on reopen)
2026-06-10 01:35:12 -07:00
ciregenz
e8692159a3
[eric] outputs: PUT clears session_id on explicit null (exclude_unset), Apps stale-link self-heal finally sticks
2026-06-10 01:16:28 -07:00
ciregenz
fb178648df
[eric] free-trial: backend dispatch injection, hardware fingerprint, mint/clear, exhaustion upsell
2026-06-09 23:54:10 -07:00
Aidan and ciregenz
0a704d4690
[aidan] chat: isolate branch history, fresh session on edit/switch ( #62 )
2026-06-09 22:29:31 -07:00
ciregenz
1fd32b7bc3
[eric] backend: add Fable 5 subscription (cc/) row, verified live 200 on the Claude sub
2026-06-09 15:58:19 -07:00
ciregenz
f728a1e485
[eric] service: spool 429/timeout/5xx instead of dropping, warn on 4xx rejects + spool evictions
2026-06-09 15:50:40 -07:00
ciregenz
ed2aa322ca
[eric] backend: PUT settings preserves server-owned fields, stale drafts wiped pro bearers
2026-06-09 15:10:55 -07:00
ciregenz
7ab61057df
[eric] backend: surface Fable 5 in the model picker on the api-key route + price it $10/$50
2026-06-09 14:55:07 -07:00
ciregenz
1be1ce581d
[eric] providers: Fable 5 turns thinking off by omitting the param, not thinking:disabled (which 400s)
2026-06-09 14:06:18 -07:00
ciregenz
a774f68b96
[eric] providers: add Claude Fable 5 on the API-key route (sub route held on pinned 9router)
2026-06-09 13:27:45 -07:00
ciregenz
49bd292746
[eric] backend: answer client:ping on /ws/dashboard, the missing pong let the client heartbeat kill the socket every 35s
2026-06-09 12:59:00 -07:00
ciregenz
e24a63c13c
[eric] browser: steer paginated gathers to sweep in batch (RepeatFlow + sessionStorage / scroll-then-read), not one page per turn
2026-06-09 02:39:31 -07:00
ciregenz
bfcad98b76
[eric] browser: BrowserSaveData writes a big page dataset to one sandboxed file, ending the dispatch-per-chunk waste
2026-06-09 02:05:26 -07:00
ciregenz
9eb0e2cb2b
[eric] browser: new gathered data resets the spin backstop, so a page-by-page gather runs to completion instead of getting cut with partial results
2026-06-08 23:47:26 -07:00
ciregenz
ba41409577
[eric] browser: spin backstop nudges a clean Done wrap-up, not a mid-thought cutoff
2026-06-08 23:26:15 -07:00
ciregenz
438d1e36d4
[eric] browser: arm the send-completion shortcut only for send tasks, not gathers (cookie click faked a send)
2026-06-08 23:02:55 -07:00
ciregenz
07f911d200
[eric] browser: a clean success needs an explicit Done; recognize gather asks, steer them to BrowserExtract
2026-06-08 22:37:33 -07:00
ciregenz
91073becec
[eric] browser: finish via a Done(message) tool so the user gets a plain conversational reply, not the OUTCOME tag
2026-06-08 22:15:52 -07:00
ciregenz
1d57ee6680
[eric] settings: new agent chats spawn expanded by default (toggle off in Settings > Interface)
2026-06-08 13:15:48 -07:00
ciregenz
110dc1c745
[eric] browser: fast-path emits a synthetic BrowserAgent tool-call/result so the 'Browser Agent' bubble always shows, even when the orchestrator is skipped
2026-06-08 13:07:12 -07:00
ciregenz
b634638677
[eric] browser: poll the interactives list for the real Send button after a composer fill so the handoff actually fires (was 0/10, racing the lazy render)
2026-06-08 12:42:18 -07:00
ciregenz
8d9c75803c
[eric] browser: restore the Send-button handoff (points the model at the Send index after a fill); deleting it brought the Send-hunt back, it was NOT redundant with the wait
2026-06-08 00:58:38 -07:00
ciregenz
bf5f95573a
[eric] browser: wait up to 6s (not 2.5s) for the lazy-rendering Send button after a composer fill, kills the re-list turn and the late-Send miss
2026-06-08 00:44:26 -07:00
ciregenz
cdba825277
[eric] browser: final message is ONLY the OUTCOME line in plain human words, no narration preamble or UI jargon
2026-06-08 00:31:27 -07:00
ciregenz
2d59a0fbf1
[eric] browser: stall-path completion text is a plain confirmation, never the raw action-log proof (indices/coords)
2026-06-08 00:15:39 -07:00
ciregenz
f8c812353e
[eric] browser: agent writes a plain human final message (no UI jargon/OUTCOME mechanics); delete the leaky send-ready advisory, dead prefix flag, and humanize aux experiment
2026-06-08 00:09:50 -07:00
ciregenz
ce8e74b96a
[eric] browser: skill-replay returns a normal OUTCOME line so the parent translates it, no more 'learned skill replay (N steps, no LLM)' leaking to users
2026-06-07 23:49:21 -07:00
ciregenz
725578b2a8
[eric] browser: orchestrator translates the OUTCOME line into a plain human confirmation; drop hardcoded task-specific examples from prompts
2026-06-07 23:44:39 -07:00
ciregenz
d5fc146123
[eric] browser: never leave a tool_use unanswered (backfill mid-turn + validate both directions) so a 30s upstream reset stops 400-killing the run
2026-06-07 23:04:59 -07:00
ciregenz
2409e2d4cd
[eric] browser: fire the learning self-audit every 25 finished tasks in a daemon thread (zero hot-path latency)
2026-06-07 21:33:38 -07:00
ciregenz
6ef7b33667
[eric] browser: cross-site meta-playbook (tier 3) + self-audit of the learning machinery (tier 4, proposes for human review, never self-edits)
2026-06-07 21:20:40 -07:00
ciregenz
7ec05613fe
[eric] browser: hand the Send button to the model after a composer fill, and commit to an already-open thread instead of re-verifying
2026-06-07 19:28:51 -07:00
ciregenz
1204e733b5
[eric] browser: stall backstop only fires after a real action, never cuts short early orientation
2026-06-07 19:12:43 -07:00
ciregenz
e19def1ae5
[eric] browser: a clean Send-class click ends the run; bound the look-only spin even when the send cant be auto-detected
2026-06-07 19:07:34 -07:00
ciregenz
0f63697765
[eric] browser: confirm waits for the target to actually render so a send isnt falsely 'not confirmed' under load
2026-06-07 18:58:43 -07:00
ciregenz
889c7707e4
[eric] browser: a confirmed send ends the run, no more stalling to re-verify what the confirm proved
2026-06-07 18:52:20 -07:00
ciregenz
a54b4c0452
[eric] browser: run the action and remind on a missing ReportProgress instead of rejecting the turn
2026-06-07 18:19:39 -07:00