Skip to content

[3/5] feat(orchestration): attention queue — aggregate approvals + blocked runs + unread into a 'Needs you' zone#4592

Merged
senamakel merged 10 commits into
tinyhumansai:mainfrom
oxoxDev:feat/orchestration-attention-queue
Jul 6, 2026
Merged

[3/5] feat(orchestration): attention queue — aggregate approvals + blocked runs + unread into a 'Needs you' zone#4592
senamakel merged 10 commits into
tinyhumansai:mainfrom
oxoxDev:feat/orchestration-attention-queue

Conversation

@oxoxDev

@oxoxDev oxoxDev commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds orchestration_attention — a renderer-only controller that folds the hub's three "needs you" signal sources into one priority-ordered queue: pending tool approvals, agent runs awaiting input (command-center NeedsInput), and instances with unread messages.
  • New presentational AttentionQueue ("Needs you" zone) + AttentionQueueItem (kind chip · title · one-line detail / unread count · a single kind-aware action button).
  • Pure aggregation lives in a dedicated orchestration/attention.rs module (kind ordering, action mapping, counts) so the whole assembly is unit-tested without a live approval gate, command center, or store.
  • No user-facing wiring yet: the controller + components are self-contained and unit-tested; composing them into the tab is deferred to the layout-rewrite PR so this stays independently mergeable.

Problem

A user running many agent instances has no single place that answers "what is blocked on me right now?". The signals exist but are scattered across three domains — the approval gate (approval_list_pending), the command center's NeedsInput bucket (runs awaiting_user), and per-session unread — with no aggregation and no shared shape the UI can render as one attention list.

Solution

  • Core (orchestration): orchestration_attention gathers the three sources and hands them to a pure assemble_attention that emits AttentionQueue { items: AttentionItem[], counts }. Items are ordered by kind urgency (approval → needs-input → unread), then newest-first within a kind. Each item carries a tagged action (approval / open-thread / open-run / open-session) so the renderer knows where to route. Unread ships a count (not an English string) so the frontend localizes it. The command-center read is best-effort — a failure logs and yields an empty bucket rather than sinking the whole queue.
  • Renderer: matching AttentionQueue/AttentionItem/AttentionAction types + orchestrationClient.attention(); AttentionQueue + AttentionQueueItem components with co-located tests. An empty queue renders a calm "all caught up" state (stable anchor, not hidden).
  • Full i18n (attention title/empty/labels/actions) across en + 13 locales.

Submission Checklist

  • Tests added or updated (happy path + at least one failure / edge case) — rust: empty/ordering/zero-unread-dropped/action-shapes/label-fallback (6 cases in attention.rs) + the controller-count assertion; frontend: 7 cases across the two components (approval/needs-input/unread rendering, action dispatch, empty + loading states, no-handler safety).
  • Diff coverage ≥ 80% — verified locally via diff-cover against upstream/main: Rust 93% (attention.rs 100%), frontend 90%. The pure aggregator + mappers and both components are directly unit-tested; the ~27 uncovered Rust lines are the async controller plumbing (config load / RPC awaits / to_json).
  • N/A (Coverage matrix updated): additive read-model + presentational components — no matrix feature row.
  • N/A (affected feature IDs in ## Related): none — no matrix IDs.
  • No new external network dependencies introduced — reuses existing approval / command-center / orchestration store seams.
  • N/A (Manual smoke checklist): components not yet mounted; no release-cut surface.
  • N/A (Linked issue Closes #NNN): design-driven, no tracking issue.

Impact

  • Desktop only. Additive: one internal RPC + two presentational components + i18n. No schema/migration change, no behavior change to existing chat/pairing/ingest/approval flows.
  • Security: no secrets or message bodies cross the boundary — approval summaries are the gate's already-redacted action_summary; unread surfaces a count only; the log line emits counts, not content.

Related

  • Closes: N/A
  • Part of the TinyPlace Orchestration hub redesign (3/5). Follow-ups: layout rewrite wiring RelayBadge + SelfIdentityCard + Roster + this queue into the tab; external instance launch/control.

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

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: feat/orchestration-attention-queue
  • Commit SHA: see PR head

Validation Run

  • pnpm --filter openhuman-app format:check
  • pnpm typecheck
  • Focused tests: vitest run AttentionQueue / AttentionQueueItem (7 passed); cargo test --lib openhuman::orchestration::attention + ::schemas
  • Rust fmt/check (if changed): cargo fmt --check, cargo check, cargo clippy --lib
  • N/A (Tauri fmt/check): no app/src-tauri changes

Validation Blocked

  • command: N/A
  • error: N/A
  • impact: N/A

Behavior Changes

  • Intended behavior change: new aggregated attention read surface + zone components; nothing mounted in the UI yet.
  • User-visible effect: none in this PR (wired in the layout-rewrite follow-up).

Parity Contract

  • Legacy behavior preserved: existing orchestration/approval/command-center flows unchanged; the new controller only reads.
  • Guard/fallback/dispatch parity checks: a command-center read failure degrades to an empty bucket (logged), never errors the queue; zero-unread instances are dropped.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): none
  • Canonical PR: this
  • Resolution: N/A

Summary by CodeRabbit

  • New Features
    • Added a “Needs you” attention panel in Orchestration that consolidates pending approvals, items needing input, and unread-message activity.
    • Each row now includes localized action(s) (e.g., Review/Open) and displays per-kind labeling, with an overall count badge when applicable.
    • Added new localized UI text for the panel, empty/unread states, and action labels across multiple languages.
  • Bug Fixes
    • The panel stays blank during loading and shows an empty state when there’s nothing to review.
    • Items with zero unread messages are excluded.
  • Tests
    • Added UI test coverage for panel and row rendering, states, and interactions.

oxoxDev added 5 commits July 6, 2026 23:48
Pure, cross-domain 'needs you' aggregation for the orchestration hub:
kind ordering (approval → needs-input → unread, newest-first within a
kind), tagged actions, counts, and the source-row → neutral-signal
mappers. No I/O — fully unit-tested (10 cases) without a live approval
gate, command center, or store. Kept out of the already-large ops.rs.
Renderer-only controller aggregating pending approvals + command-center
NeedsInput runs + per-instance unread into one AttentionQueue. The
handler is thin glue over the pure attention.rs mappers; the store read
and command-center mapping are extracted into unit-tested helpers.
Adds attention.rs to the log-leak-guard sources.
AttentionQueue/AttentionItem/AttentionAction types + orchestrationClient
.attention() over the orchestration_attention RPC.
Presentational 'Needs you' zone: kind chip, title, one-line detail or
unread count, and a kind-aware action button (Review approvals / Open
runs + chats). Empty state renders a calm 'all caught up'. 7 tests.
Adds 8 attention-queue keys (title/empty/labels/actions) with real
translations across en + 13 locales.
@oxoxDev oxoxDev requested a review from a team July 6, 2026 18:23
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ce0be821-f865-4704-ba8a-766f054387bd

📥 Commits

Reviewing files that changed from the base of the PR and between 5efdeb3 and 07cf0c9.

📒 Files selected for processing (1)
  • src/openhuman/orchestration/ops.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/openhuman/orchestration/ops.rs

📝 Walkthrough

Walkthrough

This PR adds an attention queue that aggregates approvals, needs-input runs, and unread sessions into one RPC-backed list. It includes new Rust queue assembly and controller wiring, a typed TypeScript client, React components and tests, and localized strings in 14 languages.

Changes

Attention Queue Feature

Layer / File(s) Summary
Rust attention model and assembly
src/openhuman/orchestration/attention.rs
Defines attention queue types and signal structs, converts domain signals into items, orders and counts the queue, and adds unit tests for filtering, sorting, and serialization.
Attention signal collection and module wiring
src/openhuman/orchestration/mod.rs, src/openhuman/orchestration/ops.rs
Exports the new module, gathers needs-input and unread signals from orchestration state, adds the unread-session and needs-input tests, and extends the log scan to cover the new module.
orchestration_attention controller
src/openhuman/orchestration/schemas.rs
Registers the new controller schema and handler, assembles approvals plus collected signals into an AttentionQueue, and updates schema coverage tests.
Attention client and UI
app/src/lib/orchestration/orchestrationClient.ts, app/src/components/intelligence/AttentionQueue.tsx, app/src/components/intelligence/AttentionQueueItem.tsx, app/src/components/intelligence/AttentionQueue*.test.tsx
Adds the client contract and RPC method, renders the queue and individual items, and verifies populated, empty, unread, and click-handling behaviors.
Attention translations
app/src/lib/i18n/{ar,bn,de,en,es,fr,hi,id,it,ko,pl,pt,ru,zh-CN}.ts
Adds tinyplaceOrchestration.attention.* strings for titles, states, actions, and kind labels in all supported languages.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant Schemas as schemas.rs
  participant Approvals as approval_list_pending
  participant Ops as ops.rs
  participant Attention as attention.rs

  Client->>Schemas: orchestration_attention RPC
  Schemas->>Approvals: fetch pending approvals
  Schemas->>Ops: collect needs-input and unread signals
  Schemas->>Attention: assemble_attention(...)
  Schemas-->>Client: AttentionQueue JSON
Loading
sequenceDiagram
  participant AttentionQueueView
  participant AttentionQueueItem
  participant User
  participant onAction

  AttentionQueueView->>AttentionQueueItem: render item props
  User->>AttentionQueueItem: click action button
  AttentionQueueItem->>onAction: item.action
Loading

Possibly related PRs

  • tinyhumansai/openhuman#4425: Introduces orchestration-domain pieces that this PR builds on for attention-queue aggregation and module wiring.

Suggested labels: feature, rust-core, agent

Suggested reviewers: sanil-23, M3gA-Mind

Poem

A rabbit hops through queues so neat,
With unread badges and action feet.
Approvals, threads, and counts align,
In many tongues, the labels shine.
🐇✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the new orchestration attention queue and its three sources: approvals, blocked runs, and unread items.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot added feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. labels Jul 6, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8b4a43a32f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

/// What the renderer should do when the user acts on an item. Tagged so the
/// frontend can `switch` on `type` and carry exactly the id it needs.
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
#[serde(tag = "type", rename_all = "kebab-case")]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Serialize attention action ids in camelCase

The enum-level rename_all only renames the variant tag, so the struct-variant fields still serialize as request_id, thread_id, run_id, and session_id. The new TS client declares requestId/threadId/runId/sessionId, so when orchestrationClient.attention() feeds an item action to the renderer router, the expected id fields are undefined and approval/open actions cannot target the right request, thread, run, or session.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 15a8aa1 — added rename_all_fields = "camelCase" so the action id fields serialize requestId/threadId/runId/sessionId, plus a serialization test asserting the tagged camelCase wire shape.

Comment thread src/openhuman/orchestration/schemas.rs Outdated
/// unit-tested [`attention::needs_input_from_command_center`].
fn command_center_needs_input(config: &Config) -> Vec<attention::NeedsInputSignal> {
use crate::openhuman::agent_orchestration::command_center::list_agent_work;
match list_agent_work(config, Some(ATTENTION_RUN_LIMIT)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Filter command-center reads before applying the limit

This calls list_agent_work with a global recent-run limit and then extracts the NeedsInput bucket, but list_agent_work queries with status: None and orders all runs by updated_at DESC LIMIT. In a busy workspace with more than 100 newer working/completed/failed runs, an older AwaitingUser run is outside the fetched page, so the attention queue silently omits a run that is still blocked on the user.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in 5efdeb3 — command_center_needs_input now queries the ledger filtered to AwaitingUser runs (status filter applied before the limit) instead of paging global recent runs then filtering, so an older still-blocked run can't be paged out.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
app/src/components/intelligence/AttentionQueueItem.test.tsx (1)

9-35: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Test fixtures assume camelCase action fields — flags the backend contract mismatch.

These fixtures (requestId, threadId, sessionId) encode the expected wire shape. As flagged in attention.rs, the current AttentionAction serde attributes will actually emit snake_case field names (request_id, thread_id, session_id), so these fixtures (and the real runtime payloads) will diverge once wired end-to-end. No change needed here once the backend fix (rename_all_fields) lands — noting for traceability.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/components/intelligence/AttentionQueueItem.test.tsx` around lines 9 -
35, The AttentionQueueItem fixtures already reflect the intended camelCase wire
shape, so the mismatch is in the backend serialization contract. Update
AttentionAction in the backend to use the appropriate serde field renaming so
its emitted action fields match requestId/threadId/sessionId, and keep these
test fixtures aligned with that contract by verifying the AttentionQueueItem
cases continue to serialize against the same shape.
🧹 Nitpick comments (1)
src/openhuman/orchestration/schemas.rs (1)

592-609: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Unread-bucket failure sinks the whole queue, unlike the command-center bucket.

command_center_needs_input degrades to an empty vec on error so approvals+unread still surface, but the approvals fetch (line 596-600) and the unread fetch via store::with_connection(...).map_err(...)? (line 608-609) both propagate errors and fail the entire handle_attention request. A transient local-DB read hiccup on the unread bucket would then hide already-successfully-fetched approvals and needs-input signals too, defeating the stated goal of a resilient "needs you" queue.

Consider applying the same best-effort/log-and-empty pattern to the unread bucket (and confirming approvals truly never errors, per the inline comment) for consistency.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/openhuman/orchestration/schemas.rs` around lines 592 - 609, The attention
queue should stay resilient when the unread bucket read fails, instead of
aborting the whole request. Update the unread fetch in handle_attention so the
store::with_connection(..., gather_unread_signals) path degrades to an empty vec
or logged fallback on error, matching the best-effort behavior used by
command_center_needs_input, and verify the approvals path around
attention::approval_signals and approval_list_pending is truly non-fatal as the
inline comment says.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/src/components/intelligence/AttentionQueueItem.tsx`:
- Around line 11-16: Update the return type annotation in AttentionQueueItem to
use a direct ReactElement type import from react instead of React.ReactElement,
since React is not imported in this module. Adjust the component’s type
signature accordingly and ensure the existing JSX/typing references in
AttentionQueueItem resolve without relying on a React namespace.

In `@src/openhuman/orchestration/schemas.rs`:
- Around line 584-662: The attention aggregation logic is living in the wrong
module: handle_attention and its helpers command_center_needs_input and
gather_unread_signals should not implement business logic in schemas.rs. Move
the orchestration work that combines approvals, command-center NeedsInput, and
unread signals into ops.rs as the RpcOutcome-style handler, keeping schemas.rs
as a thin RPC-facing wrapper that only parses params and delegates to that ops
function. Preserve the existing behavior and reuse the same unique symbols so
the wrapper still calls into the moved attention handler cleanly.

---

Duplicate comments:
In `@app/src/components/intelligence/AttentionQueueItem.test.tsx`:
- Around line 9-35: The AttentionQueueItem fixtures already reflect the intended
camelCase wire shape, so the mismatch is in the backend serialization contract.
Update AttentionAction in the backend to use the appropriate serde field
renaming so its emitted action fields match requestId/threadId/sessionId, and
keep these test fixtures aligned with that contract by verifying the
AttentionQueueItem cases continue to serialize against the same shape.

---

Nitpick comments:
In `@src/openhuman/orchestration/schemas.rs`:
- Around line 592-609: The attention queue should stay resilient when the unread
bucket read fails, instead of aborting the whole request. Update the unread
fetch in handle_attention so the store::with_connection(...,
gather_unread_signals) path degrades to an empty vec or logged fallback on
error, matching the best-effort behavior used by command_center_needs_input, and
verify the approvals path around attention::approval_signals and
approval_list_pending is truly non-fatal as the inline comment says.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 80363367-5cd5-4404-9d1d-a1cb6726214c

📥 Commits

Reviewing files that changed from the base of the PR and between 0b71713 and 8b4a43a.

📒 Files selected for processing (23)
  • app/src/components/intelligence/AttentionQueue.test.tsx
  • app/src/components/intelligence/AttentionQueue.tsx
  • app/src/components/intelligence/AttentionQueueItem.test.tsx
  • app/src/components/intelligence/AttentionQueueItem.tsx
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/it.ts
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/ru.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/lib/orchestration/orchestrationClient.ts
  • src/openhuman/orchestration/attention.rs
  • src/openhuman/orchestration/mod.rs
  • src/openhuman/orchestration/ops.rs
  • src/openhuman/orchestration/schemas.rs

Comment thread app/src/components/intelligence/AttentionQueueItem.tsx
Comment thread src/openhuman/orchestration/schemas.rs Outdated
oxoxDev added 4 commits July 7, 2026 00:07
…attention-queue

# Conflicts:
#	app/src/lib/orchestration/orchestrationClient.ts
#	src/openhuman/orchestration/schemas.rs
…humansai#4592)

The enum-level rename_all only renames the variant tag, so struct-variant
fields serialized snake_case (request_id, …) while the TS AttentionAction
union declares requestId/threadId/runId/sessionId. Add rename_all_fields =
"camelCase" so the wire matches, and lock it with a serialization test.
tinyhumansai#4592)

React is not imported in this module, so React.ReactElement did not resolve
cleanly. Use a named type import from react.
…cked-run query, harden unread (tinyhumansai#4592)

- Relocate command_center_needs_input + gather_unread_signals (and the unread
  test) from schemas.rs into ops.rs, keeping schemas.rs a thin RPC wrapper per
  the canonical module shape.
- Query the ledger filtered to AwaitingUser runs so the run limit bounds
  blocked runs only; the prior global-page-then-filter could page an older
  still-blocked run out in a busy workspace.
- Make the unread-store read best-effort (log + empty) like the command-center
  read, so a transient local-DB hiccup can't sink already-resolved signals.
@coderabbitai coderabbitai Bot added the agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. label Jul 6, 2026
…4592)

Seeds an AwaitingUser + a Running run and asserts command_center_needs_input
surfaces only the blocked one — proving the status-filtered ledger query and
keeping diff coverage on the rewritten helper.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/openhuman/orchestration/ops.rs (1)

969-988: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

N+1 query pattern with no upper bound in gather_unread_signals.

Unlike command_center_needs_input, which is bounded by ATTENTION_RUN_LIMIT, this loops over every session returned by list_sessions and issues a separate unread_count query (itself a kv_get + COUNT(*)) per session. For a workspace with many sessions, this is O(N) round trips per orchestration_attention call with no cap.

Consider adding a single aggregate query in store.rs (e.g., a join between sessions/cursor KV and messages grouped by session_id) to replace the per-session loop, or at minimum bound the scan similarly to ATTENTION_RUN_LIMIT.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/openhuman/orchestration/ops.rs` around lines 969 - 988, The
`gather_unread_signals` function is doing an unbounded N+1 scan by calling
`store::unread_count` once per session after `store::list_sessions`, which can
explode into many round trips. Replace the per-session loop with a single
aggregate query in `store.rs` that computes unread counts grouped by
`session_id` (joining the session/cursor data as needed) and then build
`UnreadSignal` from that result. If a full aggregate isn’t practical, apply a
cap similar to `ATTENTION_RUN_LIMIT` before iterating.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/openhuman/orchestration/ops.rs`:
- Around line 969-988: The `gather_unread_signals` function is doing an
unbounded N+1 scan by calling `store::unread_count` once per session after
`store::list_sessions`, which can explode into many round trips. Replace the
per-session loop with a single aggregate query in `store.rs` that computes
unread counts grouped by `session_id` (joining the session/cursor data as
needed) and then build `UnreadSignal` from that result. If a full aggregate
isn’t practical, apply a cap similar to `ATTENTION_RUN_LIMIT` before iterating.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 73291073-3521-4971-9a6a-e3685e9a1172

📥 Commits

Reviewing files that changed from the base of the PR and between 8b4a43a and 5efdeb3.

📒 Files selected for processing (19)
  • app/src/components/intelligence/AttentionQueueItem.tsx
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/it.ts
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/ru.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/lib/orchestration/orchestrationClient.ts
  • src/openhuman/orchestration/attention.rs
  • src/openhuman/orchestration/ops.rs
  • src/openhuman/orchestration/schemas.rs
✅ Files skipped from review due to trivial changes (6)
  • app/src/lib/i18n/de.ts
  • app/src/lib/i18n/pt.ts
  • app/src/lib/i18n/en.ts
  • app/src/lib/i18n/ar.ts
  • app/src/lib/i18n/es.ts
  • app/src/lib/i18n/ru.ts
🚧 Files skipped from review as they are similar to previous changes (11)
  • app/src/lib/i18n/ko.ts
  • app/src/lib/i18n/zh-CN.ts
  • app/src/lib/i18n/it.ts
  • app/src/components/intelligence/AttentionQueueItem.tsx
  • app/src/lib/i18n/bn.ts
  • app/src/lib/i18n/fr.ts
  • app/src/lib/i18n/id.ts
  • app/src/lib/i18n/hi.ts
  • app/src/lib/i18n/pl.ts
  • app/src/lib/orchestration/orchestrationClient.ts
  • src/openhuman/orchestration/attention.rs

@senamakel senamakel merged commit b21712e into tinyhumansai:main Jul 6, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. feature Net-new user-facing capability or product behavior. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants