Teknium
4bae44d654
refactor(web): extract dashboard theme/font/plugin routes into web_routers/dashboard_ui.py
2026-09-02 13:32:05 -07:00
Teknium
312378d9b1
refactor(agent/aux): unify _read_main_{model,provider,api_key,base_url} and relay call-context builders
2026-09-02 13:32:03 -07:00
Teknium
94309ad40a
refactor(web): extract raw-config + analytics routes into web_routers/analytics.py
2026-09-02 13:32:02 -07:00
Teknium
067028eb22
refactor(web): extract OAuth provider routes into web_routers/oauth.py
2026-09-02 13:32:01 -07:00
Teknium
4022e69e69
refactor(agent/aux): lift max_tokens forwarding policy and Nous dual-wire check out of _build_call_kwargs
2026-09-02 13:32:00 -07:00
Teknium
dcbf263a09
refactor(agent/aux): unify same-provider retry and fallback-candidate prep across sync/async (_prepare_same_provider_retry, _plan_fallback_candidate)
2026-09-02 13:31:57 -07:00
Teknium
127a179ae5
refactor(agent/aux): share call_llm/async_call_llm route resolution (_resolve_call_client) and recovery ladder (_aux_recovery_ladder generator) across sync/async wires
2026-09-02 13:31:57 -07:00
Teknium
659c6b9fff
refactor(gateway): simplify session, status, stream_consumer, kanban_watchers, relay adapter, hosted-room driver/discussion/replicas, shutdown/lifecycle, pairing, channel_directory, control_socket and small modules
2026-09-02 13:31:54 -07:00
Teknium
aed6720dab
refactor(gateway/run, slash_commands): dispatch tables, helper unification and hand-reviewed comment compaction
...
run.py:
- built-in adapter creation: 9-branch if/elif -> _BUILTIN_ADAPTERS table
- idle slash-command routing: 35 `if canonical == ...` branches -> _gateway_idle_command_handlers()
- shared helpers: _send_command_ack (4 sites), _command_origin_for_source (2), _session_entry_for_manager
(goal/heartbeat), _toggle_adapter_auto_tts_set (2), _load_env_or_agent_cfg_timeout (2), _float_env reuse (2),
_resolve_session_key_or_none (3), _running_agent_ids (4), _schedule_rename_from_title_thread (2),
_write_runtime_status_quiet (5), _AUTO_RESET_CONTEXT_NOTES/_auto_reset_reason_text
- ruff SIM102/SIM103/SIM105/SIM108/SIM118 + F401 across gateway/ (semantics re-reviewed; sqlite Row
`.keys()` and side-effecting assignments kept)
- two hand-reviewed comment/docstring compaction passes (AST-identical, rationale kept)
slash_commands.py:
- /model: typed path and picker callback shared one 200-line commit block -> _perform_model_switch +
_commit_model_switch
- comment/docstring compaction (AST-identical)
2026-09-02 13:31:53 -07:00
Teknium
cc9ef82355
refactor(gateway-cli): dispatch-table subcommands and shared service helpers in hermes_cli/gateway.py
...
hermes_cli/gateway.py (9178 -> 6906):
- `hermes gateway` subcommand routing: if/elif chain -> _GATEWAY_SUBCOMMANDS dispatch table of
_cmd_* handlers; _stop_installed_service and _refuse_from_inside_gateway unify the
stop/restart/uninstall service-stop and self-target guards.
- One systemd unit template; _systemctl_show, systemctl reset+action, is-active probes,
_installed_service_kind ladder (3 sites), launchctl-list PID probe, launchd bootstrap+kickstart
helper, legacy-unit removal loop, loop-tick witness ping, ps/wmic line parsers, planned-stop
marker helper, _CAPTURE_TEXT subprocess kwargs (21 sites), _gw_windows() accessor (15 lazy
imports).
- run_gateway startup helpers, reaper exclusion set, Windows process listing extracted; wizard
service actions and platform-setup prompts unified (_setup_service_action).
- Dead: _windows_scheduled_task_running (test-only), _container_systemd_operational (inlined),
whatsapp/email/matrix built-in status branches (those platforms are registry plugins).
- try/except-pass around single statements -> contextlib.suppress; comments/docstrings compacted
to the WHY (bounded_probe_run vs subprocess.run on Windows, pythonw launcher-stub filtering,
raw-record vs validated-probe exclusion in the orphan reaper, Scheduled-Task Ready-vs-Running).
- `hermes gateway --help` byte-identical.
2026-09-02 13:31:44 -07:00
Teknium
75bafc197a
refactor(plugins): unify provider registration and unload paths in hermes_cli/plugins.py
...
hermes_cli/plugins.py (7193 -> 4961):
- _register_scoped_provider: one body for the 8 scope-keyed register_*_provider methods;
_track_callback/_track_mapping_entry unify manager-mapping lease tracking (4 sites);
_track_scoped_registration for the ownership ledger. Public method names, signatures,
return values and warning strings unchanged.
- Manifest v2 type checks table-driven (_manifest_field_of_type); _unload_scoped split into
_unload_target_keys + _reset_after_unload_all; _gate_manifest/_record_placeholder out of
_discover_and_load_inner; _track_tool_override_policy/_attribute_registrations out of
_load_plugin_scoped; bounded hook worker lifted into _run_hook_callback_bounded;
prompt-section rendering extracted; resolve_pre_tool_block delegates to
_dispatch_pre_tool_call_hooks; _evict_modules (3 sites); _remove_name_if_unowned and
_nowait_plugin_set unify unowned-name cleanup and *_nowait probes.
- Dead (zero references outside their own test): unload_plugins, has_portable_mcp_servers,
_classify_entrypoint_kind, _reset_event_bus, get_plugin_subscriptions,
get_telegram_handler_factories, pass-through _restore_* helpers; _env_enabled is now an alias
of utils.env_var_enabled (plugins/memory still imports it).
- Docstrings/comments compacted; contract sentences and rationale kept (multi-profile ledger
keying, persistent auth-provider registration, capability declaration is not a grant).
2026-09-02 13:31:44 -07:00
Teknium
13fb87af92
refactor(cron): decompose scheduler run_job/_deliver_result and dedupe delivery lanes
...
cron/scheduler.py (8535 -> 6353):
- _deliver_result split into per-target helpers: _resolve_target_transport (live/relay/standalone
transport + enablement), _deliver_via_live_adapter (_live_route_metadata for Telegram DM-topic
vs forum routing, _live_send_text with the cancel()-based timeout disambiguation,
_live_send_media, _seed_live_delivery_sessions), _standalone_send/_deliver_standalone. The
three interpreter-shutdown skip branches and the repeated log+append+continue pattern collapse
into one _note_target_error / one shutdown message; _TargetDelivery carries per-target state.
- Thread/channel session seeding unified into _seed_cron_session (was two near-identical
functions).
- run_job decomposed into _run_no_agent_job, _apply_monitor_gate, _load_cron_job_config
(_CronJobConfig), _resolve_job_runtime, _check_model_drift, _open_cron_session_db,
_run_agent_with_watchdog, _finalize_cron_session, plus one _run_doc_header and one _audit
closure for the success/failure paths.
- _run_one_job_body: ownership-lost bookkeeping, delivery composition and outcome classification
extracted; tick: _acquire_tick_lock/_release_tick_lock, _maybe_reap_dead_owners,
_sweep_stale_inflight_for_tick, _process_due_job, _submit_with_guard.
- _build_job_prompt: context_from injection and skill loading extracted; one
_prepend_context_block for the four fenced-data blocks.
- One _start_heartbeat_thread for the script- and fire-claim heartbeat threads.
- Dropped unreachable return in SharedRouteAdapters.get; boolean-return and nested-if shapes
collapsed.
- Comments/docstrings compacted by hand, rationale kept (fd-leak reason for the late SessionDB
close callback, title-persistence rules, no_agent classification gate, inactivity-vs-provider
timeout ordering, stale-claim force-release, interruption token keying).
2026-09-02 13:31:43 -07:00
Teknium
d3b768232e
refactor(web): extract status/health/curator/learning/portal routes into web_routers/status.py
2026-09-02 13:30:56 -07:00
Teknium
094dba5a2f
refactor(web): extract gateway/update/action-status routes into web_routers/actions.py
2026-09-02 13:30:55 -07:00
Teknium
401efb0b2b
refactor(cli): decompose _cmd_update_impl into phase helpers, unify duplicated update helpers, compact comments
...
hermes_cli/update_cmd.py 11217 -> 10204 LOC; _cmd_update_impl 2797 -> 521 LOC.
Decomposition (behavior-neutral, AST free-name verified) — _cmd_update_impl is
now a thin orchestrator calling, in order:
_clear_windows_venv_holders_or_exit -> _prepare_checkout_for_update
(-> _CheckoutPlan) -> _repair_current_checkout | _pull_updates ->
_sync_python_dependencies_after_pull -> _run_post_update_maintenance ->
_restart_gateway_fleet_after_update (-> _GatewayRestartOutcome;
_restart_systemd_gateway_units) -> _resume_windows_gateways_and_merge_outcome
-> _verify_fleet_after_update. _resolve_manage_cmd hoisted to module level.
Unified helpers: _git_run (49 captured git subprocess.run sites),
_systemctl / _systemctl_reset_and_restart (17 sites + 2 pairs),
_sweep_bytecode_after_update (3x), _print_bundled_skills_sync_report (ZIP+git),
_ensure_venv_pip (ZIP+git), _self_and_non_gateway_ancestor_pids (2x),
_record_update_step (4x), _write_gateway_update_exit_code for the 3 inline
".update_exit_code" writes. Dropped duplicate nested copies of
_wait_for_service_active/_service_restart_sec/_print_items, dead
upstream_exists, a dead if/pass branch and unused imports.
Comments/docstrings hand-compacted (236 blocks, AST-identical with docstrings
normalized); rationale/invariant sentences kept.
Tests: source-inspection guards repointed to the helper that now owns the code
(test_update_self_lock, test_update_fleet_check_fail_closed,
test_update_apply_shallow_count); new regression test drives the real Windows
resume/merge helper.
2026-09-02 13:30:54 -07:00
Teknium
9de17448dd
refactor(web): extract audio/TTS routes into web_routers/audio.py
2026-09-02 13:30:53 -07:00
Teknium
feeb1074a3
refactor(web): extract config/env/custom-endpoint routes into web_routers/config_env.py
2026-09-02 13:30:53 -07:00
Teknium
1f4ab19eae
refactor(web): extract model assignment routes into web_routers/models.py
2026-09-02 13:30:53 -07:00
Teknium
11bc6bbe11
refactor(web): extract memory-provider setup routes into web_routers/memory_providers.py
2026-09-02 13:30:51 -07:00
Teknium
ffd628c3ee
refactor(gateway/config): table-drive _apply_env_overrides via env-extra/home-channel helpers; extract plugin enable pass
2026-09-02 13:30:50 -07:00
Teknium
1f77a129da
refactor(web): extract messaging onboarding/platform routes into web_routers/messaging.py
2026-09-02 13:30:50 -07:00
Teknium
3c7069bdcb
refactor(gateway): dead-code removal, helper unification, defensive-layer collapse and rationale-preserving comment compaction across 40 modules
...
authz_mixin, browser_control_broker, delivery, delivery_ledger, display_config, drain_control,
hosted_room_links/peer/policy_checkpoint, hosted_rooms, platform_registry, relay/__init__,
relay/ws_transport, run.py and slash_commands.py (comments), session_context, session_state,
streaming_tts_consumer, turn_lease and small modules.
- HostedRoomPolicyCheckpoint._apply_event -> per-kind handler table
- WebSocketRelayTransport._handle_frame -> frame-handler table
- GatewayAuthorizationMixin: unified adapter setting/flag/extra readers
- dead symbols removed (verified zero references): RoomLinkProbe/select_room_link,
relay_bot_username, is_restart_loop_tripped, debug_rows, DeadTargetRegistry.all_dead,
BrowserControlBroker.detach_owner/_prune_tickets, StreamingTTSConsumer.started/_enqueue_done/
_iter_stream_chunks/_next_stream_chunk, RecoverableHandleCache.status_for, _auth_env,
_copy_default_catalog, _parse_timestamp_prefix, _present_* helpers, _send_result_error_kind,
_truthy_env, SessionFieldView/TurnLeaseTokenView dunder shims, and their orphaned tests.
- lost WHY/invariant text from the earlier compaction restored compactly (541 hunks audited)
2026-09-02 13:30:50 -07:00
Teknium
0cca195418
refactor(web): extract pairing/webhooks/credential-pool/memory/ops routes into web_routers/ops.py
2026-09-02 13:30:50 -07:00
Teknium
3b1ecfc0a1
refactor(cli): decompose list_authenticated_providers and switch_model
...
model_switch.py (4405 -> 3712):
- list_authenticated_providers (1367 lines) is a thin driver over _PickerBuild
state and one builder per section (_lap_builtin_rows, _lap_overlay_rows,
_lap_canonical_rows, _lap_user_provider_rows, _lap_bare_custom_row,
_lap_custom_provider_rows). Credential checks shared with
_collect_authed_provider_slugs are single-copy helpers
(_iter_builtin_candidates, _auth_store_has_provider, _raw_pool_usable,
_pool_usable, _overlay_has_env_creds, _has_aws_sdk_creds_for_listing);
live/curated lookup (_live_or_curated_ids, _aws_live_or_curated_ids,
_nous_picker_model_ids), endpoint discovery (_discover_endpoint_models) and
config-entry parsing are deduped across sections 1/2/2b/3/3b/4.
- switch_model: _switch_fail, _runtime_creds, _entry_configured_key,
_ollama_configured_base, _unknown_provider_message, _aggregator_alias_error,
_aggregator_catalog_match, _config_declares_model,
_apply_direct_alias_endpoint replace inline blocks; four copies of the
resolve_runtime_provider unpack collapse to one.
- _model_sort_key: one _flush() for the four repeated version-flush blocks
(identical on 400k random ids).
Row dicts, ordering, error strings and lazy-import patch points unchanged;
picker rows and the interactive hermes model screen byte-identical vs base.
2026-09-02 13:30:39 -07:00
Teknium
369ebf7532
refactor(agent/aux): resolve_provider_client — single _route() for sync/async return, dedupe named-custom OpenAI-wire build
2026-09-02 13:30:38 -07:00
Teknium
313b244e8f
refactor(plugins/model-providers): reuse agent.reasoning_effort clamps, per-model dict tables, compact profiles
2026-09-02 13:30:28 -07:00
Teknium
c408601937
refactor(agent/review): simplify curator, background_review, verify, insights, title and learning modules (-22% LOC)
...
Cluster: agent/{curator,curator_backup,background_review,review_engine,
review_idle_queue,insights,learning_graph,learning_graph_render,
learning_mutations,learn_prompt,verification_evidence,verification_stop,
verify_hooks,side_question,title_generator,turn_summary,
manual_compression_feedback,trajectory,moa_trace,trace_upload,verify/*}.
13662 -> 10693 LOC (-2969, -21.7%), behavior-neutral.
- Dead code: 27 private helpers with zero references removed
(_auto_title_session, _resolve_review_model, _parse_make_targets,
_filter_verifiable_paths, _find_subsequence, _is_under_root/_temp_dir,
_merge_runs, learning_graph_render bucket/period/node helpers,
_memories_dir/_memory_local_index/_node_detail, _cron_jobs_file,
_retention_cutoff, _scope_for_args, _clean_token, _count_diff_lines,
_ordered_verbs, _hermes_meta, _iter_skill_files).
- Unified helpers: _read_config_section (curator + curator_backup),
_write_file/_write_json (4 curator report writers), _msg_text
(background_review <- side_question), _report_failure/_notify_title
(title_generator instant/auto paths), _is_under (verification_evidence),
_scoped SQL pair builder + _query (insights), _optional_lock
(background_review), verify.recipes table-driven detection.
- if/elif routing -> dict dispatch: side_question role labels,
curator_backup summary bits, learning_graph_render buckets, insights
section rendering, verify recipe pickers.
- Redundant defensive layers, single-use wrappers and verbose narrative
comments collapsed; every non-obvious WHY/invariant kept in compact form.
Verification: parity.py (all REMOVED symbols zero-ref), import smoke for
every module + cli/run_agent/gateway.run/hermes_cli.main/
agent.conversation_loop/tui_gateway.server, old-vs-new fuzz parity on all
shared pure functions, SQL trace parity for insights and
verification_evidence, cluster tests 1354 passed / 0 failed (46 files).
2026-09-02 13:30:25 -07:00
Teknium
ab48b1ddc5
refactor(agent): extract per-call API message build into turn_context.build_api_messages
2026-09-02 13:30:23 -07:00
Teknium
30b0759bb3
refactor(agent): extract content_filter refusal handling into turn_truncation.handle_content_policy_refusal
2026-09-02 13:30:23 -07:00
Teknium
4f53d7bd28
refactor(agent): extract post-tool-call compression decision into turn_preflight.compress_after_tool_results
2026-09-02 13:30:23 -07:00
Teknium
f0d2355e26
refactor(agent): extract text-response stop gates (verify-on-stop, pre_verify hook, kanban guard) into agent/turn_stop_gates.py
2026-09-02 13:30:23 -07:00
Teknium
22cba7dd41
refactor(agent): extract classified-error routing (compaction gate, long-context tier, eager/auth fallback, Nous 429) into turn_recovery.route_classified_error
2026-09-02 13:30:23 -07:00
Teknium
ef9dc88348
refactor(agent): drop write-only _bot_capability_refreshed attribute (zero readers repo-wide)
2026-09-02 13:30:22 -07:00
Teknium
7df9d3be5c
refactor(agent): extract pre-API preflight compression gate into agent/turn_preflight.py
2026-09-02 13:30:21 -07:00
Teknium
0028951f35
refactor(agent): extract tool-call name/JSON validation into agent/turn_tool_validation.py
2026-09-02 13:30:21 -07:00
Teknium
d398d91529
refactor(agent): extract empty/thinking-only response recovery ladder into agent/turn_empty_response.py
2026-09-02 13:30:20 -07:00
Teknium
e4711620a1
refactor(cron): simplify jobs.py store and lifecycle_guard
...
jobs.py (4654 -> 3332):
- _acquire_flock/_release_flock: one bounded LOCK_NB acquisition shared by _jobs_lock and
_fire_job_lock (was two copies).
- _get_due_jobs_locked split into per-concern helpers over a _DueScan state object
(record repair, persisted-error re-arm, timezone-migration catch-up, missed-run fast-forward,
per-job due evaluation); raw-record repair loops unified.
- atomic_write_text used for heartbeat/counter/error/output writers (drops
_atomic_write_counter/_atomic_write_epoch duplicates); save_jobs stage+verify loop deduped.
- create_job/update_job field normalization table-driven (_normalize_job_updates,
_normalize_str_list, _normalize_context_from); parse_schedule croniter validation via
_cron_schedule; single-record mutators routed through _with_job; completion/activation record
writers and claim refresh shared; _parse_aware used for record repair and stale-error re-arm.
- Dead: clear_drift_alerted, _set_preflight_alerted shim (zero references).
- Comments/docstrings compacted by hand; rules, invariants and WHY (profile-home anchoring,
bounded lock rationale, timezone-naive schedule rule, missed-run visibility) kept.
lifecycle_guard.py (1271 -> 906): shared cloud-path check, executed-command index,
resolve-or-skip yield, control-preserving segment split; regexes and matching semantics
byte-preserved; comments compacted.
2026-09-02 13:30:19 -07:00
Teknium
df42f37e09
refactor(agent): extract response-shape validation, invalid-response diagnostics and Codex incomplete continuation
2026-09-02 13:30:19 -07:00
Teknium
8b958e1b0f
refactor(agent): unify interruptible backoff sleeps and fallback-restart arming; extract compute_error_backoff
2026-09-02 13:30:18 -07:00
Teknium
661c9af826
refactor(agent): extract finish_reason=length truncation recovery into agent/turn_truncation.py
2026-09-02 13:30:18 -07:00
Teknium
645db06053
refactor(agent): extract 413/context-overflow compression recovery into agent/turn_overflow.py
2026-09-02 13:30:17 -07:00
Teknium
5543e7ae0f
refactor(agent): resume — extract API-error attempt logging into turn_recovery.log_api_error_attempt (verified partial work)
2026-09-02 13:30:17 -07:00
Teknium
25b165add5
refactor(agent): extract terminal API-failure result builders into agent/turn_recovery.py
2026-09-02 13:30:16 -07:00
Teknium
649c227e9e
refactor(agent): extract per-response usage accounting into agent/turn_usage.py
2026-09-02 13:30:16 -07:00
Teknium
b12e4a90c4
refactor(agent/aux): dedupe api-key auto-chain client build (pool vs env creds) and provider-profile header lookup
2026-09-02 13:30:15 -07:00
Teknium
fefc471deb
refactor(agent): extract post-classification one-shot recovery chain into agent/turn_recovery.py
2026-09-02 13:30:15 -07:00
Teknium
7e9c8a714e
refactor(agent/aux): unify Codex/Anthropic/Bedrock chat shims + async adapters into _ChatShim/_AsyncCompletionsAdapter/_AsyncAuxiliaryClientBase
2026-09-02 13:30:15 -07:00
Teknium
d7c6cef154
refactor(agent/aux): drop zero-reference helpers (_resolve_single_provider, get_async_text_auxiliary_client, _is_streaming_rejected_error, get_accounting_context, unused copy import)
2026-09-02 13:30:15 -07:00
Teknium
7b8aed652f
refactor(agent/aux): compact module/function docstrings and comment essays to their invariants (behavior-neutral)
...
Worker was killed mid-flight by the Nous credential refresh stampede.
Unreviewed, unverified. Preserved verbatim so it can be assessed.
2026-09-02 13:30:14 -07:00
Teknium
5d78bd817d
refactor(plugins): disk-cleanup and security-guidance — table-driven scans/patterns, safety lists unchanged
2026-09-02 13:30:10 -07:00