haikdc
a28ac6b642
[haik]: refactor: apply p_/P_ naming convention to browser_agent.py and 31 test files. In browser_agent.py, rename 6 module-internal functions from leading-underscore to p_ prefix (_strip_lone_surrogates -> p_strip_lone_surrogates, _format_tool_result -> p_format_tool_result, _delta_state -> p_delta_state, _send_index_in_state -> p_send_index_in_state, _is_composer_fill -> p_is_composer_fill) and update all call sites. Across 31 test files, rename test helper functions from _func to p_func or descriptive names (_tu -> p_tu, _rp -> p_rp, _install -> p_install, _log -> action_log, _isolated_skills -> isolated_skills), drop leading underscores from local variables (_nm -> nm, _send_browser_command -> send_browser_command), and update module attribute references from BH._browser_history/BH._domain_notes to BH.BROWSER_HISTORY/BH.P_DOMAIN_NOTES. ~1023 insertions, ~1024 deletions, no behavioral changes
2026-06-14 01:11:48 -07:00
haikdc
5c99dbbd80
[haik]: stop importing TERMINAL_STATUSES from seq_log.py and define it as a local constant in ws_manager.py — seq_log renamed it to P_TERMINAL_STATUSES (private), so ws_manager now owns its own copy to avoid a cross-module coupling on session lifecycle states
2026-06-14 00:05:55 -07:00
haikdc
0a7ae03405
[haik]: refactor(ws_manager): rename private constants and methods from underscore to P_ prefix — convert _BROWSER_CMD_TIMEOUT_DEFAULT, _BROWSER_CMD_TIMEOUTS, _BROWSER_CMD_REBROADCAST_S, WS_RECONNECT_WAIT_S to P prefix and _strip_replayed_closes, filter_stale_approvals to p prefix, updating all internal references
2026-06-13 23:58:15 -07:00
haikdc
d7349cce18
[haik]: refactor: rename ws_manager singleton to WS_MANAGER and await_reconnect to await_reconnect across 8 files. Module-level ConnectionManager instance follows P/uppercase constant convention (ws_manager -> WS_MANAGER in ws_manager.py). Cross-module helper _await_reconnect drops leading underscore since browser_agent.py imports it directly. Updated all ~80 call sites in agent_manager.py, agents.py, browser_agent.py, main.py, and ws_manager.py; updated monkeypatch targets in test_browser_agent_loop.py, test_browser_fast_path.py, and test_disconnect_resilience.py. 176 insertions, 176 deletions, no behavioral changes.
2026-06-13 23:51:26 -07:00
haikdc
08eb4b561f
[haik]: refactor: systematize naming conventions across 20+ backend modules. Private module-level vars renamed _foo to P_FOO, private funcs _foo to p_foo, cross-module public funcs drop leading underscores entirely (e.g. _discover_mcp_tools_http -> discover_mcp_tools_http, _load_all -> load_all_tools, _classify_services -> classify_services). Local vars inside functions lose underscores (_backend -> backend_dir, _port -> port). Unnecessary import aliases removed (import json as _json -> import json). Imports reorganized to proper source modules (derive_mcp_config from mcp_config, oauth refresh funcs from oauth_tokens). Added Public comments documenting cross-module API boundaries. Extracted PENDING_OAUTH to oauth_state.py to break circular import. No behavioral changes.
2026-06-13 23:38:39 -07:00
haikdc
67fce8ee89
[haik]: refactor: canonicalize settings imports and public API naming - move all load_settings imports from backend.apps.settings.settings to backend.apps.settings.store (agent_manager, agents, browser_agent, mcp_preflight, anthropic_proxy, auth/router, dashboards, outputs, service, subscription/router, web) so consumers point at the source module instead of the re-export; rename _atomic_write_settings to atomic_write_settings and _has_own_model to has_own_model since both are called across module boundaries; rename _summarize_block to summarize_block and UPLOAD_DIR to P_UPLOAD_DIR in settings.py; clean up unused var names (_base to _, _ext to _, _httpx to httpx); update test_auth_router.py imports and _save_settings references to match
2026-06-13 22:22:31 -07:00
haikdc
87f09e9695
[haik]: refactor naming convention and clean up dead code across backend outputs and service modules. Replace all leading-underscore private names with explicit p_/P_ prefix for module-internal symbols and drop the underscore for cross-module public APIs (load_all, save, load, walk_directory, find_free_port, etc). Rename the runtime module singleton from manager to RUNTIME_MANAGER. Remove unused legacy shims from client.py (submit_event, submit_session_close, record, set_test_sink, set_user_id, update_identity), drop clear() from ring_buffer.py and buffer.py, and remove the VIEW_BUILDER_SKILL backward-compat alias. Switch runtime.py from relative to absolute imports, rename the _d route param to data, and add public-usage comments to clarify cross-module API boundaries
2026-06-13 22:01:17 -07:00
haikdc
fafbe45187
[haik]: refactor backend naming conventions across 14 files: rename module-internal functions from _fn to p_fn, module-level constants from _CONST to P_CONST, and cross-module public functions from _fn to fn (e.g. _load/_save to load/save in dashboards, _pending_oauth to PENDING_OAUTH in oauth_state, _nr to nr in sync, _process to P_PROCESS in process); hoist inline import json to module-level in modes.py; clean up redundant import subprocess alias and unused _aux_base variable; update all import sites in browser_agent, prompt_context, main, sync, and sync_custom
2026-06-13 20:34:25 -07:00
haikdc
61687726da
[haik]: refactor internal naming convention from leading-underscore (foo/FOO) to p/P prefix across anthropic_proxy, anthropic_to_openai, ssrf_guard, web tools, web_mcp_server, and auth router; clean up import aliases and local variable names in proxy handler; remove unused dashboard_layout module (models + router); remove orphaned healthcheck endpoint from anthropic proxy
2026-06-13 19:53:07 -07:00
haikdc
f0d3cabc47
[haik]: refactor: standardize backend naming and import structure - strip leading underscores from all internal functions/constants across agents, settings, session, and provider modules in favor of public names or P_ prefix for module-private symbols; replace nine_router/init.py barrel re-exports with direct submodule imports (process, sync, sync_custom, oauth); hoist inline stdlib imports to module level; delete dead openai_passthrough.py GPT-5 proxy and the redundant _save_settings alias
2026-06-13 19:30:34 -07:00
haikdc
211f939560
[haik]: refactor: standardize naming convention across browser agent modules — replace _CONSTANT/_func leading-underscore privates with P_PREFIX for module-level constants and p_func for internal helpers, promote public API functions (safe_resp_text, detect_loop, hash_tool_call, clean_bullet, etc.) by dropping the underscore, switch module-level imports to explicit function-level imports in browser_agent.py and agents.py, and add browser_skills.py to the linter no-underscore-names exception list
2026-06-13 17:30:35 -07:00
haikdc
07199caf34
[haik]: refactor: adopt P-prefix naming convention for module-level private symbols, replacing leading underscores with P_ prefix (e.g. _STEP_TOOLS -> P_STEP_TOOLS, _BROWSY_RE -> P_BROWSY_RE, _domain_notes -> P_DOMAIN_NOTES) and removing underscores from public API functions (e.g. _trim_history_by_turns -> trim_history_by_turns, _validate_message_pairing -> validate_message_pairing). Updated across browser_history, browser_agent, browser_batch_replay, browser_fast_path, browser_fast_read, browser_extract, browser_agent_mcp_server, and aux_llm. Added linter no-underscore-names exclusions for agent_manager, agents, and browser_agent
2026-06-13 16:49:37 -07:00
haikdc
8c7f9a7016
[haik]: migrate error_classify.py from underscore-prefix to p_/P_ naming convention: rename _is_auth_error, _is_free_trial_exhausted, _is_long_context_error, _is_transient_capacity_error, _is_unknown_model_error to public (drop _), rename _TRANSIENT_CAPACITY_PATTERNS and NON_TRANSIENT_PATTERNS to P upper-snake. Update all call sites in agent_manager.py and test imports in test_v2_invariants.py. Enhance p-private linter: make is_p() case-insensitive so P UPPER_SNAKE constants are enforced, add # p-private-ignore inline suppression (bare and scoped forms), thread source lines through check functions. Enable no-underscore-names rule in config. Update README and config descriptions.
2026-06-13 16:28:03 -07:00
haikdc
8f649eb82c
[haik]: rename _sanitize_server_name to sanitize_mcp_server_name (mcp_config canonical, agent_manager, prompt_context, main, tests, toolLabels comment), add no-underscore-names linter check banning leading-underscore Python names in backend, extract _models.py from classes.py for shared pydantic BaseModel field detection used by both classes and vulture checks, add vulture-ignore inline comment suppression and automatic pydantic field-name whitelisting to vulture.py, remove leaked payload arg from client.py sync, update README with new check docs and inline-ignore usage
2026-06-13 15:15:44 -07:00
haikdc
d89fb7d870
[haik]: backend cleanup: remove unused imports (anthropic, json, time, sys, HTTPException, ws_manager, etc.), drop unused context params from tool hooks and execute methods, delete dead _resolve_model helper and entire thinking.py module, prune multi-provider subagent model fallback block in agent_manager, fix session_store to import SESSIONS_DIR directly from config.paths, re-home compute_tiers/compute_billing_kind imports from registry to pricing in agents.py, add google-workspace-mcp==2.0.1 to requirements-dev
2026-06-13 11:45:55 -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
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
0a81bfa17a
Merge PR #70 [Aidan] appbuilder: inject selected-app context into dashboard agent chat
2026-06-11 02:51:05 -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
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
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
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
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