ciregenz
2583c80f6c
[eric] agents: a session about to continue reports running, and releases it if the continuation dies (ENG-390)
2026-08-21 11:51:14 -07:00
ciregenz and Claude Fable 5
42e4f9116b
[eric] agents: transport heals respawn the CLI on the same transcript instead of rebuilding it (ENG-382)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-21 00:20:04 -07:00
ciregenz
3235324122
[eric] agents: a user's Stop or Close is final; no watchdog resend, disk reload, read, or late-booting child revives the card
2026-08-20 19:39:33 -07:00
ciregenz
b14791074f
Revert "[eric] agents: Stop disarms every queued injection, so a stopped agent can never resurrect"
...
This reverts commit 332ae7d183 .
2026-08-20 16:13:50 -07:00
ciregenz and Claude Opus 5
332ae7d183
[eric] agents: Stop disarms every queued injection, so a stopped agent can never resurrect
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 15:50:55 -07:00
ciregenz and Claude Opus 5
0f2543db65
[eric] agents: a finished turn always leaves the user something to read
...
Every silent-stop fix so far was a detector for a shape somebody had already
found in the field, which is why the class kept coming back wearing a new hat.
turn_spoke.py moves the question down a tier: at the one exit every terminal
path passes through, ask whether anything readable appeared since the user last
spoke, and if not, say the honest line. Cause no longer has to be enumerated for
the user to be answered.
proactive_prune.py is the hermes trigger we were missing. Their own tests say
our bug out loud: on a large window, a percentage-of-window compaction check
almost never fires, so aged tool output rides in history and is re-sent verbatim
every turn. Measured here, our shaping cut 0.0% at every session size; with a
fixed 60K-token cost trigger it cuts 88% at 12 turns, 93% at 30, 94% at 60. The
prompt-cache contract is load-bearing rather than optional, because our prune is
a rebuild: it commits only when it reclaims enough to pay for the busted prefix,
then disarms until history has regrown a full runway.
Also: lane preflight now treats only 401/403 as a dead credential, since
testStatus=="unavailable" conflated a throttled lane with a revoked one and told
users to reconnect a merely rate-limited Gemini; and awaiting_reconnect is
cleared when the retry budget is spent, so a stale flag can no longer muzzle the
floor and end an ask in total silence.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 11:36:34 -07:00
ciregenz and Claude Opus 5
9a7570092f
[eric] agents: never spend a turn on a lane the router gave up on, and stop our own retries stacking cards
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 09:20:46 -07:00
ciregenz and Claude Opus 5
58e376496e
[eric] agents: an outage parks the turn and resumes when the provider answers; OAuth connects survive a backend restart
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 08:39:41 -07:00
ciregenz
4be2f10d02
[eric] agents: every sub lane self-heals a mid-run token expiry before any card; codex retries wait out the rotation window instead of burning the one shot inside it
2026-08-19 17:24:23 -07:00
ciregenz
cbfb8ea9b6
[eric] agents: the error path dispatches an armed self-heal continuation; the recap-free policy retry armed and then rotted because only the success path had a dispatcher (exp.19 drill catch)
2026-08-19 16:39:32 -07:00
ciregenz
260d5a3de3
[eric] agents: the CLI's silent provider-500 retries become breadcrumbs and near-miss ledger entries
2026-08-07 05:39:46 -07:00
ciregenz
dbea61b109
[eric] telemetry: the last two envelope-less diagnostics (pressure valve, router start) now carry context too
2026-08-07 01:08:00 -07:00
ciregenz
d082af7e03
[eric] telemetry: envelopes get real concurrency via a sessions provider, every turn opens with a baseline crumb
2026-08-06 22:57:53 -07:00
ciregenz
8042da10da
[eric] agents: the CLI pre-warms while the user types, first-turn answer median 2.42s to 1.23s, one spawn per session enforced
2026-08-06 15:50:32 -07:00
ciregenz
bd822c16ed
[eric] agents: spawn-phase logs carry monotonic ms stamps so a turn's latency attributes itself from one grep
2026-08-06 15:31:03 -07:00
ciregenz
42103a4e23
[eric] agents: launch honors its prompt instead of silently dropping it, spawn phases log their trail (the ENG-131 ghost hang)
2026-08-06 15:19:02 -07:00
ciregenz
cc50fda07b
[eric] agents: a silent-quit turn gets one hidden continue nudge, and the context meter reads real context not summed billing
2026-08-03 20:12:50 -07:00
ciregenz
9eef9d6a1d
[eric] agents: a context overflow now compacts and retries once instead of dying, and never fakes a completed
2026-08-03 15:24:11 -07:00
ciregenz
b5d0461828
[eric] backend: queue messages typed mid-turn and replay them when the turn ends
2026-07-31 14:21:47 -07:00
ciregenz
df0e4a2393
[eric] merge eric/onboarding into eric/dev; version 1.6.0
2026-07-28 22:20:34 -07:00
ciregenz
2a42a1c460
[eric] agents: AV-repair card for missing CLI, stderr tail on masked exit-1 cards, group-unwrap in the fatal path
2026-07-28 15:49:59 -07:00
ciregenz
e498484409
[eric] agents: pool state typed end to end (protocol attrs + SdkClientLike casts), pyright clean
2026-07-28 11:06:53 -07:00
ciregenz
128869f0e6
[eric] agents: native SpawnAgent tool (prompt + run_in_background only) replaces the CLI's built-in Agent; child runs as a real dashboard session
2026-07-15 17:13:37 -07:00
ciregenz
63bfb7cfae
[eric] agents: admission gate caps concurrent root turns (children bypass, queued pill)
2026-07-07 18:09:57 -07:00
ciregenz
1b96bc597c
[eric] context: lossless tool-report spill (browser+gws caps point at the full file) + visible recovery pill
2026-07-06 14:16:31 -07:00
ciregenz
f787414fc6
[eric] agents: context-pressure valve, one fresh-recap retry when the CLI dies mid-compaction-churn
2026-07-05 21:40:16 -07:00
ciregenz
0cd5e0022c
[eric] agents: strip the temporary TTFT probes (pool drift-diag stays, gated OPENSWARM_POOL_DIAG)
2026-07-03 15:49:57 -07:00
ciregenz
3e0c4811e2
[eric] agents: wire persistent client behind OSW_TTFT_PERSISTENT_CLIENT (warm TTFT 535ms -> 6ms)
2026-07-03 02:48:16 -07:00
ciregenz
ab0caa1054
[eric] agents: gated TTFT phase probes (OSW_TTFT_PROBE) for latency profiling
2026-07-03 02:23:32 -07:00
ciregenz
36626be089
[eric] backend: one-line comments + collapse blank runs across backend root + tests (AST-verified, 1 test skipped: embedded #-lines)
2026-06-25 03:04:16 -07:00
ciregenz
0d093cc5f8
[eric] backend: one-line every comment + collapse 3+ blank runs across apps/ (AST-verified identical, -lines); CLAUDE.md one-line-comment rule
2026-06-25 02:29:04 -07:00
ciregenz
87db6a8a2b
[eric] agents: drop orphaned compaction comment block (code moved in refactor) + tighten a 15-line narrow-wrapped comment to 3
2026-06-25 01:57:12 -07:00
ciregenz
448c0deafd
[eric] agents: rename cryptic names — LivePartial->PartialReply, session/lifecycle.py->resume_and_duplicate.py (it held resume/duplicate, and collided with SessionLifecycle)
2026-06-25 00:58:57 -07:00
ciregenz
b9cea6c647
[eric] agents: drop the Mixin suffix, name the 9 manager classes by domain (Messaging, SessionLifecycle, ...) + AgentManagerState -> AgentManagerProtocol
2026-06-25 00:50:47 -07:00
ciregenz
d0dd5e799b
[eric] agents: typed AgentManagerState mixin base re-enables pyright attr-access + fixes 2 broken outputs imports (pyright caught them)
2026-06-25 00:32:16 -07:00
ciregenz
6419ed6436
[eric] agents: bind turn + stderr before build_agent_options so the no-provider error path doesn't UnboundLocalError
2026-06-24 21:00:44 -07:00
ciregenz
6bf543831f
[eric] agents: rename single-export modules to match their export (handle_run_error, register_builtin_mcp_servers)
2026-06-24 01:03:55 -07:00
ciregenz
553b307a57
[eric] agents: run/ decomposition follows conventions (naming, @typechecked+types, p-private)
2026-06-24 00:33:21 -07:00
ciregenz
a18b99cc84
[eric] agents: extract per-turn options build into manager/run/run_options.py (RunOptionsMixin) + helpers (web-mcp/web-hint/thinking/pre-send-guard); agent_manager 933->256, now UNDER the 300 ceiling
2026-06-24 00:03:15 -07:00
ciregenz
70b4cae84f
[eric] agents: extract streaming-turn + capacity-retry into manager/run/turn_runner.py (TurnRunnerMixin); agent_manager 933->709, trim now-unused imports
2026-06-23 22:45:15 -07:00
ciregenz
b3e1fe224e
[eric] agents: extract run-error classification (long-context/capacity/free-trial/auth/unknown-model cards) into manager/run/error_cards.py; agent_manager 1166->932
2026-06-23 22:37:38 -07:00
ciregenz
6ab6217ac7
[eric] backend: final leading-_ cleanup, file-local shorts + move session cancel-event to manager-side table (off the pydantic model, kills the last underscore); naming linter now 0/0
2026-06-23 21:57:20 -07:00
ciregenz
71b2b33fae
[eric] tools_lib: leading-_ -> p_/public across tools_lib/mcp_config/mcp_discovery/oauth_tokens/tool_taxonomy; promote cross-file public (load_all_tools/sanitize_server_name/discover_mcp_tools_*), fix re-export + attr test refs
2026-06-23 20:30:14 -07:00
ciregenz
751bb77032
[eric] agents: publicize cross-mixin members (p_run_agent_loop, p_build_mcp_servers, etc.) + safe_resp_text so the decomposition passes p-private
2026-06-23 16:44:41 -07:00
ciregenz
8c0a5010e1
[eric] agents: split bulk startup/shutdown persistence into SessionPersistenceMixin (one-session vs all-sessions)
2026-06-23 14:40:20 -07:00
ciregenz
5c725ed52d
[eric] agents: extract no-SDK mock loop into MockAgentMixin (AgentLaunchMixin now under ceiling)
2026-06-23 14:37:55 -07:00
ciregenz
e792fb3370
[eric] agents: split session-control ops out of MessagingMixin (turn-producing vs control), drop dead analytics stubs
2026-06-23 14:35:26 -07:00
ciregenz
c3b8f53619
[eric] agents: error_classify convention-clean (6 is_* funcs + 2 pattern consts off leading-_, @typechecked)
2026-06-23 14:13:39 -07:00
ciregenz
830d5dd36e
[eric] agents: FIX masked App Builder sidebar name-flip (dropped _load_all import -> p_load_all NameError)
2026-06-23 13:02:22 -07:00
ciregenz
9b0116ca41
[eric] agents: session_store convention-clean (5 funcs off leading-_) + FIX auth/signout _save_session import bug
2026-06-23 12:16:38 -07:00