Commit Graph
117 Commits
Author SHA1 Message Date
Steven EnamakelandGitHub 7fd935e7a9 test(e2e): stabilize chat release-lane tail (#4527) 2026-07-04 17:23:17 -07:00
Steven EnamakelandGitHub bb642dc301 test(e2e): onboarding-modes — select vault default and flip to a selectable STT provider (#4521) 2026-07-04 17:05:17 -07:00
Steven EnamakelandGitHub 20d8c8808f fix(ci): unblock release lane — Rust E0063, macOS E0463, and E2E login-consume fixtures (#4511) 2026-07-04 14:05:05 -07:00
Steven EnamakelandGitHub a968f72b2b docs: remove stale plan/status docs and clean dangling references (#4508) 2026-07-04 11:55:50 -07:00
Steven EnamakelandGitHub 760e5cbbda test: Phase 2 — drop duplicate/vacuous tests, consolidate connectors, de-overfit (#4494) 2026-07-04 04:01:57 -07:00
Cyrus GrayandGitHub a5b6a13d5c feat(flows): Workflows B5a — list page + nav tab (/flows) (#4471) 2026-07-04 01:51:50 +05:30
YellowSnnowmannandGitHub 4e75a631a8 feat(rewards): surface achievement token rewards and fix rewards page display (#4424) 2026-07-03 16:44:28 +05:30
3ed93c1a38 feat(skills): activation persistence, latency instrumentation, registry browse cache + pagination (#4288)
Co-authored-by: M3gA-Mind <megamind@mahadao.com>
2026-06-30 19:53:41 +05:30
Steven EnamakelandGitHub a29878ed40 feat(shortcuts): global keyboard shortcuts + help directory (#4126) 2026-06-25 13:33:36 -07:00
Cyrus GrayandGitHub fc563ebe9c fix(channels): unify the messaging default-channel selector into one grid (#4109) 2026-06-25 16:30:18 +05:30
Cyrus GrayandGitHub ee62fe6eba feat(chat): in-composer stop button to cancel generation (#4103) 2026-06-25 16:30:06 +05:30
Steven EnamakelandGitHub 8719ac57e4 feat(chat): surface cron, subconscious & memory sync in Background tasks panel (#4086) 2026-06-24 20:30:25 -07:00
Steven EnamakelandGitHub 39fd83e866 feat(chat): per-thread todo list strip above the composer (#4017) 2026-06-23 17:31:29 -07:00
1f00ab79b1 feat(rewards): Discord connect + disconnect/re-link on the Rewards page (#3766)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:38:08 +05:30
e2355ba142 feat(agent-world): native tiny.place integration (Feed, Messages, Jobs, Bounties, Marketplace, x402, Signal DMs) (#3780)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-06-18 13:29:49 -07:00
461f39bd6b feat(agent-team): live teammate execution + messaging (#3374) (#3637)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-06-16 12:49:31 +05:30
a54854af03 [merge 4/5] test(e2e): agent harness behaviors browser spec (#3471) (#3669)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 17:01:32 -07:00
Steven Enamakel's DroidandGitHub 6ceee181d1 test(e2e): repair desktop Appium suite after IA refactors (#3649) 2026-06-13 13:28:39 -07:00
d61d72c092 feat(settings): Desktop Agent setup panel (permissions, seamless mode, always-on, wake-word) (#3634)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-06-13 19:20:32 +05:30
Cyrus GrayandGitHub 55522ad48b fix(i18n): restore "Subconscious" as the user-facing label (#3573) 2026-06-10 15:51:55 +05:30
Cyrus GrayandGitHub 04bec23405 IA revamp: restructure app navigation and settings for everyday users (phased) (#3518) 2026-06-09 21:00:00 -07:00
Steven EnamakelandGitHub 3ae5bab787 feat(mcp-registry): redesign MCP tab with official registry as primary source (#3480) 2026-06-07 21:22:29 -07:00
Steven Enamakel's DroidandGitHub 6cf53c0282 feat(memory): add Conversation as a memory source kind (#3441) 2026-06-06 15:55:20 -04:00
Steven EnamakelandGitHub 5c6dbf3649 feat(agent): gate subagent delegation by allowlist (#3426) 2026-06-06 11:42:24 -04:00
CodeGhost21andGitHub a7516a83bd feat(voice): global push-to-talk hotkey (#3090) (#3349) 2026-06-05 18:38:03 -04:00
Cyrus GrayandGitHub 9411188ea8 feat(memory-sync): configurable global sync interval (4h/12h/24h/manual) (#3408) 2026-06-05 10:12:07 -04:00
95118d5a7d refactor(workflows): merge skills into the unified workflows primitive (#3324)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com>
2026-06-04 23:44:39 -04:00
Cyrus GrayandGitHub cac09cbca3 test(e2e): update composer selectors for new placeholder + voice button (#3206) 2026-06-02 16:30:52 +05:30
1e03dd2687 fix(e2e): fix 32 failing E2E tests across chat, onboarding, skills, connectors and settings (#3137)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-06-01 23:20:52 -07:00
Steven EnamakelandGitHub fbe89ba7b6 feat(subagent): persist sub-agent runs and let orchestrator relay user messages (#3055) 2026-05-30 23:51:33 -07:00
Steven EnamakelandGitHub 4c911240df feat(search): add registry-backed search module (#2999) 2026-05-29 19:41:01 -07:00
Mega MindandGitHub 99ad66364c feat(composio): add tags query param to GitHub tool list API (#2714) 2026-05-27 04:42:57 +05:30
Mega MindandGitHub 730017e2ef test(loopback-oauth): extract classify_request and add routing unit tests (#2646) 2026-05-26 15:08:19 +05:30
Mega MindandGitHub 099570cddc fix(channels): thread workspace identity through channel events to prevent cross-workspace persistence (#2633) 2026-05-26 15:07:41 +05:30
Steven EnamakelandGitHub e7e7e8a951 Migrate E2E coverage to Playwright (#2610) 2026-05-25 23:38:34 -07:00
Mega MindandGitHub 0d62e8489f fix(inference): preserve connected-app tools when BYOK provider is configured (#2632) 2026-05-25 22:58:57 +05:30
sanil-23andGitHub f756893153 test(e2e): default file keyring + RPC diagnostics to unblock Linux Appium (re-delivers #2609) (#2645) 2026-05-25 21:29:55 +05:30
Mega MindandGitHub cdee8f73fb fix(startup): recover from core port 7788 conflict automatically (#2626) 2026-05-25 20:09:08 +05:30
Steven EnamakelandGitHub 45a1502629 fix(e2e): stabilize appium docker harness (#2589) 2026-05-24 19:48:13 -07:00
Steven EnamakelandGitHub b62409a0cf perf(e2e): full-suite hardening — sharded build/test, loopback auth, +23 specs (#2578) 2026-05-24 13:21:33 -07:00
Steven EnamakelandGitHub a47740d4c9 test(memory): extend memory coverage across retrieval and tooling (#2574) 2026-05-24 13:21:12 -07:00
48548a223b feat(app): UI control for max_actions_per_hour (#2486) (#2500)
Co-authored-by: Chen Qian <cq@Chens-MacBook-Pro.local>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 00:52:54 -07:00
Steven EnamakelandGitHub 25da30f6b6 test(e2e): expand agent-harness coverage for channels + prompt flows (#2518) 2026-05-23 00:29:14 -07:00
Steven EnamakelandGitHub e53204c7ec test(e2e): expand e2e coverage for 12 missing high-priority flows (#2512) 2026-05-22 22:15:12 -07:00
03d1e2512e feat(e2e): complete E2E v2 suite — 66 specs, orchestrator, bug fixes (#2353)
Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-22 17:23:01 -07:00
Mega MindandGitHub 2a935d35b1 test(e2e): add E2E coverage for 15 Composio connector flows (#2351) 2026-05-22 00:08:11 +05:30
c9f293d8ec test(e2e): wait for route readiness
## Summary

- Replaces the fixed post-hash `browser.pause(2_000)` with a route readiness wait.
- `navigateViaHash()` now waits for the target hash, `document.readyState === "complete"`, and a mounted React root before returning.
- `walkOnboarding()` now waits for `#/home` and a Home-page marker after the onboarding next button unmounts.
- Documents the navigation-readiness pattern in the E2E guide.

## Problem

- #1864 reports a first-navigation race after onboarding: the hash changes, but the target panel can be empty because React has not settled yet.
- The old helper returned after a fixed pause, so specs could start looking for panel text before the routed view mounted.

## Solution

- Add `waitForHashRouteReady()` to make hash navigation wait on concrete browser/app signals.
- Add `waitForPostOnboardingHome()` so the onboarding walker does not hand control back until Home is actually ready.
- Throw navigation readiness failures immediately instead of hiding them behind a later text timeout.

## Submission Checklist

- [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - helper behavior tightened; E2E suite is the exercising path.
- [x] **Diff coverage >= 80%** - N/A locally: E2E helper/doc change; CI E2E jobs are authoritative.
- [x] Coverage matrix updated - N/A: E2E helper behavior change, no feature row added/removed/renamed.
- [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` - N/A: no matrix feature ID applies.
- [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy))
- [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) - N/A: no release-cut surface.
- [x] Linked issue closed via `Closes #NNN` in the `## Related` section

## Impact

- Runtime/user impact: none; test helper only.
- E2E impact: hash navigation and post-onboarding transitions now wait on real readiness signals instead of fixed sleeps.
- Failure mode improves: route readiness failures surface at navigation time with the target hash in the error.

## Related

- Closes #1864
- Follow-up PR(s)/TODOs: N/A

---

## AI Authored PR Metadata (required for Codex/Linear PRs)

### Linear Issue
- Key: N/A
- URL: N/A

### Commit & Branch
- Branch: `codex/1864-e2e-navigation-readiness`
- Commit SHA: `15f56af3c6c865fbd322010d25b047a998ebd964`

### Validation Run
- [x] `pnpm --filter openhuman-app exec prettier --check test/e2e/helpers/shared-flows.ts` - passed
- [x] `pnpm typecheck` - passed
- [x] Focused tests: N/A, E2E helper change not run locally
- [x] Rust fmt/check (if changed): `cargo fmt --all --check` - passed; `git diff --check` - passed
- [x] Tauri fmt/check (if changed): N/A

### Validation Blocked
- `command:` full E2E rerun
- `error:` not run locally; requires built desktop app/Appium harness
- `impact:` remote E2E CI remains authoritative for the harness change

### Behavior Changes
- Intended behavior change: E2E helpers wait for route/onboarding readiness before specs continue.
- User-visible effect: none.

### Parity Contract
- Legacy behavior preserved: same routes and onboarding flow; only readiness timing changed.
- Guard/fallback/dispatch parity checks: existing text assertions remain in specs after helper navigation.

### Duplicate / Superseded PR Handling
- Duplicate PR(s): N/A
- Canonical PR: this PR
- Resolution (closed/superseded/updated): N/A


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **Tests**
  * Enhanced E2E helpers for more reliable hash-based navigation and for stronger verification that onboarding completes and the Home page is fully settled.

* **Documentation**
  * Updated E2E testing guide with cross-platform navigation guidance recommending the hash navigation helper and noting post-onboarding Home-page readiness checks.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2304?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: aqilaziz <gonzes7@gmail.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-20 16:52:19 -07:00
0f5e91421b test(e2e): use stable cron test ids
## Summary

- Adds shared `waitForTestId` and `clickTestId` E2E helpers for stable DOM hooks.
- Adds missing `cron-jobs-panel` and `cron-refresh` hooks to the Cron Jobs settings panel.
- Migrates the reference cron E2E flow away from Tailwind class/DOM walking to cron row/action test IDs.
- Documents the E2E `data-testid` naming taxonomy in the E2E guide.

## Problem

- #1861 calls out `cron-jobs-flow.spec.ts` as the concrete example of brittle selectors: it found `morning_briefing` via Tailwind class strings and `closest('div.p-4')`.
- That breaks on harmless class/layout refactors and makes the reference spec a weak template for future E2E work.

## Solution

- Use existing `CoreJobList` cron row/action hooks directly from the spec.
- Add the missing panel/refresh hooks so the whole cron flow can avoid text/button discovery for row actions.
- Centralize test ID waiting/clicking in `element-helpers.ts` instead of keeping local DOM snippets in specs.

## Submission Checklist

- [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - updated the reference cron E2E spec and helper path.
- [x] **Diff coverage >= 80%** - N/A locally: E2E helper/spec/doc change; CI diff coverage is authoritative.
- [x] Coverage matrix updated - N/A: E2E selector-hardening change, no feature row added/removed/renamed.
- [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` - N/A: no matrix feature ID applies.
- [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy))
- [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) - N/A: no release-cut surface.
- [x] Linked issue closed via `Closes #NNN` in the `## Related` section - N/A: this is a scoped slice that references #1861 without closing the broader audit issue.

## Impact

- Runtime impact: none outside stable `data-testid` attributes on the Cron Jobs panel.
- Test impact: cron E2E is less coupled to Tailwind classes and container structure.
- Compatibility: `waitForTestId` is documented as tauri-driver/DOM-backed; Mac2 specs should keep accessibility/text helpers unless IDs are mirrored into accessible labels.

## Related

- Refs #1861
- Follow-up PR(s)/TODOs: add stable hooks/migrations for the remaining settings, skills, conversation, onboarding, and notification E2E surfaces tracked by #1861.

---

## AI Authored PR Metadata (required for Codex/Linear PRs)

### Linear Issue
- Key: N/A
- URL: N/A

### Commit & Branch
- Branch: `codex/1861-cron-e2e-testids`
- Commit SHA: `28eca40a3d2e3a75b61105887e4faf58d4c0866e`

### Validation Run
- [x] `pnpm --filter openhuman-app exec prettier --check src/components/settings/panels/CronJobsPanel.tsx test/e2e/helpers/element-helpers.ts test/e2e/specs/cron-jobs-flow.spec.ts` - passed
- [x] `pnpm typecheck` - passed
- [x] Focused tests: N/A, E2E spec migration not run locally
- [x] Rust fmt/check (if changed): `cargo fmt --all --check` - passed; `git diff --check` - passed
- [x] Tauri fmt/check (if changed): N/A

### Validation Blocked
- `command:` `pnpm --filter openhuman-app exec tsc -p test/tsconfig.e2e.json --noEmit`
- `error:` local command could not find `tsc` / `@wdio/globals/types` via that invocation
- `impact:` app-wide `pnpm typecheck` passes; remote E2E/TS jobs remain authoritative for the E2E tsconfig

### Behavior Changes
- Intended behavior change: none for users; E2E selectors now target stable hooks.
- User-visible effect: none.

### Parity Contract
- Legacy behavior preserved: cron load, refresh, pause/resume, run-history, and remove behavior unchanged.
- Guard/fallback/dispatch parity checks: spec still asserts the same UI and sidecar persistence behavior.

### Duplicate / Superseded PR Handling
- Duplicate PR(s): N/A
- Canonical PR: this PR
- Resolution (closed/superseded/updated): N/A


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **Tests**
  * Added E2E helpers and updated cron-jobs flow to use stable test identifiers for more reliable UI interactions and polling.

* **Documentation**
  * Added guidance on stable test ID naming and how to use the new E2E helpers in the testing guide.

* **Maintenance**
  * Cron Jobs panel and controls now expose stable identifiers for testing (no user-facing behavior changes).

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2301?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: aqilaziz <gonzes7@gmail.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-20 16:51:38 -07:00
5cbf4adda0 fix(oauth): sign-in failed on first launch (oauth flow) (#1689)
## Summary

- Add an OAuth auth-readiness gate that waits for BootCheckGate’s persisted core mode, a successful `core.ping`, and CoreStateProvider bootstrap before consuming login tokens.
- Start deep-link auth processing when the user clicks Google/GitHub (not only when the callback arrives) so Welcome shows “Signing you in…” and focus handlers do not drop the loading state early.
- Preflight local core startup before opening the system browser on desktop.
- Replace the generic “Sign-in failed. Please try again.” with actionable messages when the runtime is not ready yet.

## Problem

Fresh Windows/macOS installs reported Google/GitHub sign-in failing on the Welcome screen with a generic error ([#1689](https://github.com/tinyhumansai/openhuman/issues/1689)). The auth deep-link handler only waited ~1.5s for bootstrap while BootCheckGate was still up or the embedded core had not answered RPC, then called `consume_login_token` / `auth_store_session` against an unreachable core.

## Solution

Introduce `waitForOAuthAuthReadiness()` (owned under `app/src/components/oauth/`) and wire it from `desktopDeepLinkListener` and `OAuthProviderButton`. The gate polls until `openhuman_core_mode` is set, invokes `start_core_process` for local mode, confirms `core.ping`, and waits for `isBootstrapping` to clear. Failures return user-visible guidance instead of proceeding into a doomed RPC path.

## Submission Checklist

- [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement)
- [x] **Diff coverage ≥ 80%** — focused Vitest coverage run on changed OAuth modules locally; full `pnpm test:coverage` + `pnpm test:rust` deferred to CI (no Rust changes in this PR)
- [x] Coverage matrix updated — `N/A: behaviour-only change on existing Welcome OAuth flow; no new matrix row`
- [x] All affected feature IDs from the matrix are listed in the PR description under `## Related`
- [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy))
- [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) — `N/A: automated regression only`
- [x] Linked issue closed via `Closes #NNN` in the `## Related` section

## Impact

- Desktop OAuth sign-in on first launch after the runtime picker.
- No migration or API contract changes.

## Related

- Closes #1689

---

## AI Authored PR Metadata (required for Codex/Linear PRs)

### Linear Issue
- Key: N/A (GitHub #1689)
- URL: https://github.com/tinyhumansai/openhuman/issues/1689

### Commit & Branch
- Branch: `cursor/a02-1689-signin-failed-first-time`
- Commit SHA: 6019ea2f

### Validation Run
- [x] `pnpm --filter openhuman-app format:check`
- [x] `pnpm typecheck`
- [x] Focused tests: `pnpm debug unit src/components/oauth/__tests__/oauthAuthReadiness.test.ts src/components/oauth/__tests__/OAuthProviderButton.test.tsx src/utils/__tests__/desktopDeepLinkListener.test.ts` (18 passed)
- [x] Rust fmt/check (if changed): N/A — no Rust files changed
- [x] Tauri fmt/check (if changed): N/A

### Validation Blocked
- `command:` `pnpm test:coverage` and `pnpm test:rust` (full merge-gate suite)
- `error:` Not run locally in this session due to runtime cost; CI `coverage.yml` / `test.yml` will execute on the PR.
- `impact:` Diff-coverage gate validated in CI; changed lines covered by new/updated unit tests listed above.

### Behavior Changes
- Intended behavior change: OAuth sign-in waits for runtime readiness and reports specific errors when the core is not up yet.
- User-visible effect: First-launch Google/GitHub sign-in should succeed after choosing Local runtime; failures explain setup/runtime issues instead of a generic retry message.

### Parity Contract
- Legacy behavior preserved: Successful sign-in still stores session via `auth_store_session` and routes to `/home`.
- Guard/fallback/dispatch parity checks: Deep-link `openhuman://auth` and `openhuman://oauth/*` routing unchanged; only readiness timing and error copy changed.

### Duplicate / Superseded PR Handling
- Duplicate PR(s): none
- Canonical PR: this PR
- Resolution (closed/superseded/updated): N/A

Made with [Cursor](https://cursor.com)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * OAuth sign-in now includes a runtime readiness gate and a preflight launch step before opening the browser, with user-facing messages explaining block reasons and recovery steps.
  * Deep-link auth flow respects the OAuth readiness gate but still allows direct-session injection paths.

* **Bug Fixes**
  * Clearer deep-link auth start/stop behavior and improved error reporting.
  * More robust boot-check dismissal in end-to-end flows.

* **Tests**
  * Expanded tests covering readiness validation, deep-link handling, and the OAuth startup preflight.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2247?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Ghost Scripter <ghostscripter@zerolend.xyz>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-20 16:40:13 -07:00
15df9855c3 fix(orchestrator): route live facts to research
## Summary

- Routes live/current factual requests (weather, forecasts, recent web facts, "use Grok/live data") to the available `research` tool.
- Replaces the stale `delegate_researcher` prompt reference with the synthesized tool name `research`.
- Updates the chat harness subagent fixture to emit `research` so the forced tool call matches the current delegation surface.
- Adds a prompt-builder regression test that locks the live-data rule and rejects the stale tool name.

## Problem

- The orchestrator could acknowledge live weather/research requests with "on it" without actually calling the research tool.
- The prompt named `delegate_researcher`, but the current researcher tool is exposed as `research` via `delegate_name = "research"`.
- Users who named an unwired provider like Grok could stall the agent instead of falling back to the available live research path.

## Solution

- Teach the orchestrator to call `research` for live/current/time-sensitive facts that direct tools cannot answer.
- Explicitly tell it not to stop at "on it" and not to wait for the exact named provider when that provider is not wired in.
- Align the E2E harness fixture with the real `research` tool name.

## Submission Checklist

- [x] Tests added or updated (happy path + at least one failure / edge case) per [Testing Strategy](../gitbooks/developing/testing-strategy.md#failure-path-requirement) - added prompt regression assertion and updated E2E forced tool fixture.
- [x] **Diff coverage >= 80%** - N/A locally: tiny prompt/test fixture change; CI diff coverage will be authoritative.
- [x] Coverage matrix updated - N/A: prompt routing change, no feature row added/removed/renamed.
- [x] All affected feature IDs from the matrix are listed in the PR description under `## Related` - N/A: no matrix feature ID applies.
- [x] No new external network dependencies introduced (mock backend used per [Testing Strategy](../gitbooks/developing/testing-strategy.md#mock-policy))
- [x] Manual smoke checklist updated if this touches release-cut surfaces ([`docs/RELEASE-MANUAL-SMOKE.md`](../docs/RELEASE-MANUAL-SMOKE.md)) - N/A: no release-cut surface.
- [x] Linked issue closed via `Closes #NNN` in the `## Related` section

## Impact

- Runtime: orchestrator prompt only, plus E2E harness fixture alignment.
- User-visible effect: live weather/current fact requests should call research instead of ending with an acknowledgement.
- No migration, security, or dependency impact.

## Related

- Closes #2164
- Follow-up PR(s)/TODOs: N/A

---

## AI Authored PR Metadata (required for Codex/Linear PRs)

### Linear Issue
- Key: N/A
- URL: N/A

### Commit & Branch
- Branch: `codex/2164-live-data-research`
- Commit SHA: `dc63d1d3e1ea531a1609594debd1e0ca95329b27`

### Validation Run
- [x] `pnpm --filter openhuman-app exec prettier --check test/e2e/specs/chat-harness-subagent.spec.ts` - passed
- [x] `pnpm typecheck` - N/A: comments/string fixture plus Rust prompt text only
- [x] Focused tests: `cargo test --lib build_routes_live_facts_to_research_tool` attempted; blocked before test execution by local `libclang` setup
- [x] Rust fmt/check (if changed): `cargo fmt --all --check` - passed; `git diff --check` - passed
- [x] Tauri fmt/check (if changed): N/A

### Validation Blocked
- `command:` `cargo test --lib build_routes_live_facts_to_research_tool`
- `error:` `whisper-rs-sys` build could not find `clang.dll` / `libclang.dll`; `LIBCLANG_PATH` is unset in this Windows environment
- `impact:` Rust prompt unit test did not execute locally; remote CI environment should validate it

### Behavior Changes
- Intended behavior change: live/current factual requests route to `research` when no direct tool can answer.
- User-visible effect: requests like "forecast for Bremerhaven today" should produce a researched answer instead of a bare "on it" acknowledgement.

### Parity Contract
- Legacy behavior preserved: direct answers, connected integration routing, crypto/code/planner/critic/archive routing remain unchanged.
- Guard/fallback/dispatch parity checks: prompt test asserts live facts mention weather/forecast/Grok fallback and rejects stale `delegate_researcher` naming.

### Duplicate / Superseded PR Handling
- Duplicate PR(s): N/A
- Canonical PR: this PR
- Resolution (closed/superseded/updated): N/A


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

## Release Notes

* **Tests**
  * Enhanced test coverage for research request handling and subagent communication.

* **Chores**
  * Improved internal routing and terminology for research operations to support live, time-sensitive fact queries more effectively.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2299?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: aqilaziz <gonzes7@gmail.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-20 15:21:23 -07:00