Spaces:
Paused
Paused
Commit History
-
Fix auxiliary fallback selection and enforce free OpenRouter models.
Amin +1: CursorCo-authored-by: Cursor <cursoragent@cursor.com>cebe6c4 -
Persist Hermes advisory provider config and stop boot-time overwrites.
Amin +1: CursorCo-authored-by: Cursor <cursoragent@cursor.com>255b13e -
Wire OPENROUTER_ANALYSIS_MODEL into sync_hf fallback chains instead of hardcoded openrouter/free.
Amin +1: CursorOperators can now control advisory provider models via legacy analysis env vars; defaults use capable paid-tier models with explicit boot logging. Co-authored-by: Cursor <cursoragent@cursor.com>f05c460 -
Fix crash-loop in sync_hf skill install on fresh HERMES_HOME.
Amin +1: CursorUse copytree per skill directory (matching plugin install) so destination paths exist before file copies; add fresh-install regression test. Co-authored-by: Cursor <cursoragent@cursor.com>a532a88 -
Deploy Hermes-native futures advisory migration and UI authority-contrast upgrade.
Amin +1: CursorMove tool registration to the futures_trading plugin, route advisory through the futures_advisory auxiliary task, add advisory outcomes logging, and refine the Luxury dashboard states and docs without changing execution URLs or Paper gates. Co-authored-by: Cursor <cursoragent@cursor.com>1f8cf56
-
fix(futures): stop 422 on NO_TRADE plans, harden expires_at parsing
AminRoot cause: trade_cycle._empty_plan() (used for every NO_TRADE / rejected analysis) set expires_at=None, while plans_repo.validate_plan() requires a parseable expires_at on every persisted plan -- including NO_TRADE ones, checked before the NO_TRADE early return. Every rejected analysis therefore failed plan persistence with 422 "Trade plan validation failed" / PlanValidationError("expires_at must be a valid UTC timestamp"). - trade_cycle.py: _empty_plan() now sets expires_at to a real, short-lived UTC expiry (created_at + NO_TRADE_PLAN_TTL_SECONDS, new independently configurable env var, defaults to the existing PLAN_MAX_AGE_SECONDS). decision stays NO_TRADE and executable stays False, so this plan can never be traded regardless of expiry -- the timestamp only exists to satisfy the domain schema. - plans_repo.py: _epoch() now accepts general ISO-8601 (fractional seconds, explicit UTC/non-UTC offsets) in addition to the canonical "%Y-%m-%dT%H:%M:%SZ" fast path, and norma…15b2eec -
fix: auto-provision audit signing secret, log real futures_analyze failure reasons
Aminf8166a7 -
fix: don't abort entire state backup on one secret-flagged file
AminBundled/vendored files under skills/ (re-synced from the image on every boot) can contain example content like an 'api_key: <placeholder>' line that trips the secret-content scanner. build_backup() previously raised and aborted the WHOLE backup when this happened, meaning real user state (memories, plans, cron) silently never got persisted to the HF dataset - every periodic sync cycle failed with BackupAllowlistError. Now a flagged file is excluded from the archive and recorded in manifest['rejected_files'] (still never copied - no secret-like content leaves the host), while the rest of the approved state backs up normally. sync_hf.py logs a warning listing any excluded files so it is visible, not silent.62fe507 -
fix: self-migrate reconciliation supervisor on fresh HERMES_HOME
AminReconciliationSupervisor.run_once() is started unconditionally on app startup (_start_reconciliation_lifecycle), unlike every other durable- state entry point (health.ready_status, ExecutionService.__init__, durable_store.audit, recovery.startup_recovery_check, _dashboard_principal) which all call apply_migrations() first. On a fresh HERMES_HOME -- before any authenticated request has ever hit the dashboard -- list_enabled_paper_accounts() crashed every interval with sqlite3.OperationalError: no such table: exchange_accounts, logged and silently retried forever by run(). run_once() now calls apply_migrations() first, matching the rest of the codebase. apply_migrations() is idempotent, so this is a cheap no-op once the schema is current. Adds a regression test that runs the supervisor against a directory that has never been migrated.aadd570 -
fix: allow non-executable risk-rejected plans to persist without quantity
Aminvalidate_plan() required a positive numeric quantity for every LONG/SHORT plan, but trade_cycle.run_futures_cycle() only assigns quantity after calculate_futures_size() succeeds. When sizing is rejected by a hard risk gate (e.g. notional below exchange minimum), quantity stays None and the plan is a legitimate non-executable analysis record -- yet create_plan() raised PlanValidationError, surfaced to the dashboard as a generic 422 Trade plan validation failed on /api/futures/analyze. Quantity/leverage positivity and validate_plan_financials(require_quantity) are now only enforced when plan.executable is True (or a quantity was actually supplied), matching financial_bounds.validate_plan_financials which already supported require_quantity=False for this exact case. Adds regression tests covering both the non-executable/no-quantity path and that executable plans still require quantity.30e28b3 -
Upload hermes_futures_desk_luxury.html
Verified signature1136721
-
Deploy: HermesFace finalized project to HF Space
Amin2e658e7