Commit Graph

5875 Commits

Author SHA1 Message Date
Teknium a3b6d91302 Merge branch 'simp/r2-update-doctor' into simp/integration2 2026-09-02 17:05:20 -07:00
Teknium 74b4d698fc Merge branch 'simp/r2-config-tools' into simp/integration2 2026-09-02 17:05:18 -07:00
Teknium 42ed0b4d5c Merge branch 'simp/r2-kanban-cli' into simp/integration2 2026-09-02 17:05:17 -07:00
Teknium d6f56549c0 Merge branch 'simp/r2-webserver' into simp/integration2 2026-09-02 17:05:16 -07:00
Teknium f1a3a75a03 Merge branch 'simp/r2m-runtime' into simp/integration2 2026-09-02 17:05:15 -07:00
Teknium de93b6ec3e Merge branch 'simp/r2m-switch' into simp/integration2 2026-09-02 17:05:10 -07:00
Teknium d3f556e4e2 Merge branch 'simp/r2m-models' into simp/integration2 2026-09-02 17:05:09 -07:00
Teknium d9853c57ad Merge branch 'simp/r2-climain' into simp/integration2 2026-09-02 17:05:06 -07:00
Teknium f81f8d848f Merge branch 'simp/r2m-flows' into simp/integration2 2026-09-02 17:05:06 -07:00
Teknium 93673653fa Merge branch 'simp/r2-kanban' into simp/integration2 2026-09-02 17:05:05 -07:00
Teknium fd77c095b1 Merge branch 'simp/r2-config' into simp/integration2 2026-09-02 17:05:05 -07:00
Teknium cba6a6de8e Merge branch 'simp/r2-clipy' into simp/integration2 2026-09-02 17:05:04 -07:00
Teknium e753b034a4 Merge branch 'simp/r2-auth' into simp/integration2 2026-09-02 17:05:01 -07:00
Teknium 41a26c8ba9 refactor(kanban-db): compact long docstrings (rules kept) across origin/dispatch/connect 2026-09-02 17:04:54 -07:00
Teknium 693893df5c refactor(kanban-db): compact Task field/constant comments that duplicated SCHEMA_SQL; contextlib.suppress for try/except/pass 2026-09-02 17:02:26 -07:00
Teknium d1df0f21ab refactor(hermes_cli/main): extract memory/acp/tools/insights/monitoring/skills handlers to main_agent_cmds.py 2026-09-02 17:00:17 -07:00
Teknium aa4ffc98e9 refactor(hermes_cli/main): extract WhatsApp/Slack/Skill-Sync setup wizards to main_platform_setup.py 2026-09-02 16:59:52 -07:00
Teknium 9994d2b113 refactor(hermes_cli/main): unify lazy re-export tables into _LAZY_ATTR_SOURCES; drop 26 unreferenced re-exports 2026-09-02 16:58:15 -07:00
Teknium 0556cbf52b refactor(model_setup_flows): re-export only names that existed on the origin at base
Helpers introduced by the split (_azure_*, _bedrock_text_model_ids, _configured_model_ids, ...)
never lived in model_setup_flows before, so nothing imports/patches them there; keep the
origin's re-export list to the historical surface. Corpus 396/0 diffs, 364 tests green.
2026-09-02 16:56:40 -07:00
Teknium a11464423a refactor(kanban-db): drop dead _clear_spawn_failures alias, unify per-task row/link accessors, compact three docstrings 2026-09-02 16:55:53 -07:00
Teknium ebb9f312dc refactor(status): extract credential sections into status_auth, unify redact_key
- new hermes_cli/status_auth.py: _render_api_keys / _render_auth_providers /
  _render_nous_gateway / _render_apikey_providers + their data tables and the
  OAuth/timestamp helpers; origin helpers imported lazily so status monkeypatches hold
- status.redact_key was a verbatim copy of hermes_cli.config.redact_key -> imported
- sessions/cron/deep/footer renderers compacted; 624 -> 372 lines (base 639)

Parity: r2m_status_golden.py 33 fixtures byte-identical vs base; real
`hermes status`, `status --deep`, `status --help` byte-identical after normalizing
the per-run temp HERMES_HOME path; test_status*/test_estop/test_jobs_json_utf8_bom green.
2026-09-02 16:54:55 -07:00
Teknium ce54c8e04a refactor(model_switch): collapse duplicate bodies, flatten alias/flag parsing, trim re-exports
- parse_model_flags_detailed: boolean flags via _BOOL_FLAGS table; scope ladder as data
- _load_direct_aliases / _configured_provider_matches / _config_declares_model /
  resolve_alias: single scan or builder per shape instead of parallel branches
- _route_from_model_input split at the MoA/alias seam (-> _route_after_alias)
- re-export block trimmed to the names referenced through hermes_cli.model_switch
  (acp_adapter, cli.py, tui_gateway, inventory, gateway, tests); orphaned trailing
  comment blocks folded into model_switch_providers docstrings
- 2389 -> 2079 lines; largest function _model_sort_key (90 LOC)

Parity: r2m_switch_corpus.py 434 entries byte-identical vs base; 70 model_switch test
files + tests/test_tui_gateway_server.py green.
2026-09-02 16:54:55 -07:00
Teknium e03a680592 refactor(kanban-db): split into connect/workspace/dispatch/notify modules
Byte-identical bodies moved out of hermes_cli/kanban_db.py into four sibling
modules, re-exported from the origin so kanban_db.<name> keeps resolving and
stays the single monkeypatch target; origin-resident helpers are reached via a
late-bound _kb namespace. AST-identity verified for all 329 moved symbols; SQL
statement multiset parity vs base. Three source-inspection tests repointed at
kanban_db_dispatch; the _add_column_if_missing alias test now imports the real
owner (hermes_cli.sqlite_util).
2026-09-02 16:46:52 -07:00
Teknium 1c20028afd refactor(kanban-cli): split the subcommand spec list so no function exceeds 300 LOC 2026-09-02 16:40:44 -07:00
Teknium 2df3d507c9 refactor(tools_config): reflow data tables and compact docstrings/comments in tools_config 2026-09-02 16:40:13 -07:00
Teknium 72490fa6cd refactor(model_setup_flows): extract custom-endpoint, Azure Foundry and Bedrock wizards into concern modules
hermes_cli/model_setup_flows_custom.py (_model_flow_custom, _model_flow_named_custom + helpers),
model_setup_flows_azure.py (_model_flow_azure_foundry + Entra preflight / picker),
model_setup_flows_bedrock.py (BEDROCK_GEO_PREFIXES, routability predicates, both Bedrock flows).
Bodies moved verbatim (AST slices); every name re-exported from model_setup_flows (noqa: F401)
so hermes_cli.main and test imports keep resolving. Origin: 1975 -> 1159 lines.
Flow corpus (396 cases): 0 diffs; 34 test files / 364 tests green.
2026-09-02 16:39:35 -07:00
Teknium 40230dcca7 refactor(hermes_cli/main): replace 23 thin cmd_* forwarders with a _forward_command factory table 2026-09-02 16:39:30 -07:00
Teknium 291c33040c refactor(models): fold credential-file mtime fingerprinting into one helper 2026-09-02 16:38:16 -07:00
Teknium 278669e412 fix(integration): make /browser sub-handlers module-level so _handle_browser_command works on duck-typed hosts
The simplification split _handle_browser_command into _browser_use/
_browser_connect/_browser_disconnect/_browser_status mixin methods; tests
(and any caller) invoking CLICommandsMixin._handle_browser_command on a
stub object broke with AttributeError. Hoist them to module-level
functions taking the cli host explicitly; dispatcher behavior unchanged.
2026-09-02 16:36:12 -07:00
Teknium 4d1880e0bf fix(integration): restore subprocess encoding/stdin guards dropped in simplification
Simplification workers collapsed subprocess call sites into shared kwargs
helpers and dropped the Windows/TUI safety kwargs on the way:

- encoding='utf-8', errors='replace' restored on text=True runs in
  copilot_acp_client, hermes_cli/setup (vercel install), managed_uv
  (codesign steps), local_runtime/hardware._stdout, a2a adapter.
- stdin=subprocess.DEVNULL restored on copilot probe, verify/runner
  _SUBPROCESS_KW, iron_proxy._run, google_meet playwright/system_profiler,
  simplex convert, whatsapp _RUN_TEXT, mem0 ollama serve Popen.
  google_meet sudo/brew install keeps inherited stdin (user-confirmed,
  may prompt) — marked noqa: subprocess-stdin.
- Windows-safe SIGKILL: getattr(signal, 'SIGKILL', SIGTERM) in
  verify/runner; photon _kill call re-marked windows-footgun: ok
  (unreachable on win32).
- scripts/check_subprocess_stdin.py now recognizes **kwargs splats
  (**_KW / **_kw(...)) ONLY when the same-file definition provably sets
  stdin= — covers tui_gateway _capture_run_kwargs/run_kw. Parity test added.
2026-09-02 16:36:10 -07:00
Teknium 5c9580c696 refactor(models): dedupe ollama probe failure/ollama-config lookups, pricing fetch/entry helpers; logger parity in models_local 2026-09-02 16:35:42 -07:00
Teknium 85c32cfd4e refactor(kanban-cli): compact docstrings/comments in kanban.py keeping every rationale 2026-09-02 16:34:31 -07:00
Teknium 57f828a3da refactor(model_setup_flows): shared wizard skeleton in model_setup_flows_common, flows rebuilt on it (2849 -> 1975 lines)
- new hermes_cli/model_setup_flows_common.py: _say/_ask prompt primitives, _persist_model/
  _finish_model (save model choice -> provider/base_url/api_mode -> scrub creds -> save),
  _activate_provider_model (OAuth providers), _oauth_gate (login / use / reauth / cancel),
  _curses_choice + _print_numbered (radio picker with numbered fallback); every existing
  helper moved there and re-exported from the origin (noqa: F401).
- god flows split: azure_foundry -> _azure_entra_preflight/_azure_pick_model, custom ->
  _probe_custom_endpoint/_pick_detected_model/_parse_context_length, named_custom ->
  _configured_model_ids/_discover_named_custom_models/_pick_named_custom_model, nous ->
  _nous_model_catalog, copilot -> _copilot_obtain_token, bedrock -> _bedrock_text_model_ids.
- 396-case scripted flow corpus (transcript/config.yaml/.env/auth.json): 0 diffs vs base.
2026-09-02 16:33:41 -07:00
Teknium 6eae28cb6d refactor(hermes_cli): split cmd_chat prologue into helpers; split build_top_level_parser into flags + chat builders 2026-09-02 16:33:36 -07:00
Teknium 601dfdec82 refactor(auth): pack re-export tuples; plugin registry auto-extend as one helper 2026-09-02 16:33:09 -07:00
Teknium c633aee918 refactor(kanban-db): split create_task into project-link + skills helpers 2026-09-02 16:32:35 -07:00
Teknium 55b8f0e0ab refactor(kanban-cli): extract dispatcher/maintenance verbs to kanban_ops; unify single-mutation ok/err reporting 2026-09-02 16:32:06 -07:00
Teknium 80b2cc4814 refactor(tools_config): reflow re-import blocks and TOOL_CATEGORIES env_vars rows 2026-09-02 16:31:32 -07:00
Teknium ec8e85965d refactor(tools_config): compact extracted modules (join statements, tighten comments) 2026-09-02 16:29:58 -07:00
Teknium 9ebda92cca refactor(kanban-cli): extract boards cluster to kanban_boards; unify goal-gate, id/reason, run-state and config helpers across handlers 2026-09-02 16:29:40 -07:00
Teknium bf16d5f996 refactor(doctor): trim re-exports to names referenced outside their module 2026-09-02 16:25:28 -07:00
Teknium 5cc3651b3b refactor(kanban-cli): extract data-driven argparse tree to kanban_parser and output helpers to kanban_output 2026-09-02 16:25:20 -07:00
Teknium ffa08e6591 refactor(hermes_cli/main): extract dashboard/serve support cluster to main_dashboard.py 2026-09-02 16:24:55 -07:00
Teknium 568afa038b refactor(auth): trim re-export tuples to names with a caller outside the origin package 2026-09-02 16:24:36 -07:00
Teknium 64cf496ca5 refactor(models): collapse deepinfra/custom-cache/provider-list helpers; module docstrings 2026-09-02 16:24:19 -07:00
Teknium 2a9c5d8cf5 refactor(doctor_state): unify state.db repair path, memory-provider dispatch table; doctor.py header 2026-09-02 16:23:25 -07:00
Teknium f78d519e5a refactor(auth): collapse duplicate corrupt-store warning, drop dead _SUPPORTED_PREFIXES 2026-09-02 16:23:15 -07:00
Teknium f28dfda667 refactor(web_server): flatten nested guards in auth middleware + plugin cache; module docstring describes the split 2026-09-02 16:23:06 -07:00
Teknium 55ba3cbd61 refactor(tools_config): extract MCP checklist + enable/disable command into tools_config_mcp; compact checklist/reconfigure helpers 2026-09-02 16:22:15 -07:00
Teknium 975783c31e refactor(models): table-drive opencode api-mode routing; collapse copilot/anthropic catalog helpers 2026-09-02 16:20:36 -07:00