Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 12 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,15 @@ octosense-app-hub = { git = "https://github.com/OctoSense-org/OctoSense-App-Hub"
# 1.x for the whole build (Cargo.lock pins the exact version OctoSense ships)
# and App Hub and Rinx no longer need the same App Hub commit.
octosense-app-contract = "1"
# --- octos: ONE source for every octos crate (octos-org/octos main at the
# merge of octos#2675, hydrate rows that name a tool row's call and tool;
# --- octos: ONE source for every octos crate (octos-org/octos main at
# 39e22d45, after #2709 and #2704, a deleted sub-account's or profile's
# keychain items released; #2697 and #2695, peer/purge residue kept on its
# tombstone; #2692, a stdio turn's terminal after its queued envelopes;
# #2677, option-like revisions refused in workspace history show/diff;
# #2666, a profile's open stores handed to its replacement runtime; #2667,
# the resolved model route exported to skills; and #2465, the opt-in
# context/state_reported. Before that the merge of octos#2675, hydrate rows
# that name a tool row's call and tool;
# after #2672, the accepted client_commands echoed on session/open, #2671
# and #2669, docs, #2665, undeclared secrets kept from strict skills, #2664,
# octos's own dev profile, and #2261, a credential store that keeps
Expand All @@ -131,12 +138,12 @@ octosense-app-contract = "1"
# keeps its peer/input, and #2645, Bing News's Chinese results).
# Move octos-core, octos-cli and octos-research together; the Android kernel
# artifact (liboctos.so) is built from this same revision.
octos-core = { git = "https://github.com/octos-org/octos.git", rev = "056173e85b150e387805fc307fe231064ac1ed35" }
octos-cli = { git = "https://github.com/octos-org/octos.git", rev = "056173e85b150e387805fc307fe231064ac1ed35", default-features = false }
octos-core = { git = "https://github.com/octos-org/octos.git", rev = "39e22d457c47df57d7c7c9fa64539979c9da93fd" }
octos-cli = { git = "https://github.com/octos-org/octos.git", rev = "39e22d457c47df57d7c7c9fa64539979c9da93fd", default-features = false }
# The research engine (the metasearch, the SSRF-safe polite reader and the
# toolbox scope) for the toolbox's `octos-engine` feature. Same source and
# revision as above.
octos-research = { git = "https://github.com/octos-org/octos.git", rev = "056173e85b150e387805fc307fe231064ac1ed35", default-features = false }
octos-research = { git = "https://github.com/octos-org/octos.git", rev = "39e22d457c47df57d7c7c9fa64539979c9da93fd", default-features = false }
# --- AppCard's inline renderers.
streaming-markdown-kit = { git = "https://github.com/Project-Robius-China/streaming-markdown-kit.git", branch = "main" }
makepad-diagram-kit = { git = "https://github.com/Project-Robius-China/makepad-diagram-kit.git", branch = "main" }
Expand Down
2 changes: 2 additions & 0 deletions apps/appcard/app/app/src/backend/octos_ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,8 @@ impl OctosUiAgent {
| UiNotification::TurnSteerDropped(_)
| UiNotification::BackgroundActivity(_)
| UiNotification::ContextNormalizationReported(_)
// `context.state.v1` is not requested, so this never arrives.
| UiNotification::ContextStateReported(_)
| UiNotification::SessionOrchestration(_)
// 2026-07 protocol catch-up: no plan pane / voice surface here.
| UiNotification::PlanUpdated(_)
Expand Down
3 changes: 3 additions & 0 deletions apps/appcard/app/crates/octos-app-store/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,9 @@ fn apply_protocol(state: &mut AppState, cursor: Option<UiCursor>, n: UiNotificat
// the top-bar usage chip.
state.context = Some(e.context_state);
}
// Live context fullness mid-turn: octos sends it only to a client
// that asks for `context.state.v1`, which this one does not.
UiNotification::ContextStateReported(_) => {}
// Voice sessions have no surface in octos-app yet (streamed TTS
// audio included).
UiNotification::VoiceExit(_) => {}
Expand Down
2 changes: 1 addition & 1 deletion crates/toolbox/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ The wiring is in place behind `toolbox-peers` (`crates/ai-host/src/toolbox_peers

## Commands

The pinned octos (`056173e8`) includes `octos-research`, so no override is needed any more. On 2 Oct 2026 `cargo test --locked -p octosense-toolbox` passed at the pin (83 tests). The others below were run on 28 Sep 2026 against octos's merge of #2585 (7bec0918) through a local override, before the pin moved; at the pin `apps.yml` runs the plain, `live` and `octos-engine` tests and both clippy lines, and the live and real-model runs are **unverified** at the pin.
The pinned octos (`39e22d45`) includes `octos-research`, so no override is needed any more. On 6 Oct 2026 `cargo test --locked -p octosense-toolbox` passed at the pin (83 tests). The others below were run on 28 Sep 2026 against octos's merge of #2585 (7bec0918) through a local override, before the pin moved; at the pin `apps.yml` runs the plain, `live` and `octos-engine` tests and both clippy lines, and the live and real-model runs are **unverified** at the pin.

```sh
cargo test --locked -p octosense-toolbox # 83 tests, fixtures only (the thin scope parser)
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0004-native-apps-hosting-and-peers.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

### What octos provides (octos `main` e6223ef, verified)

Verified at e6223ef when this ADR was written. OctoSense now pins octos 056173e8 (the merge of octos#2675, `session/hydrate` rows that carry a tool row's `tool_call_id` and `tool_name` and an assistant row's `tool_calls`, so a reloaded transcript names its tool rows; after #2672, #2671, #2669, #2665, #2664 and #2261; before that ae230ce0, the merge of octos#2656, low fixes for host-owned app peers; after #2655, the unknown-outcome interlock kept across a kernel restart, and #2653, a bound workspace that no longer resolves to its recorded path is refused rather than re-rooted; before that 4a3ec9f9, the merge of octos#2648, a host session's durable exact tool list, `session/tool_list/set`; after #2649, `peer/purge`, #2647, `peer/context/open` `read_parent`, #2658, `peer/tools/unregister`, #2657, a host session's tools registered by the host's own connection without an app peer's token, #2654, host tool claims bounded per peer, #2652, a refused host `turn/start` no longer consumes its `peer/input`, #2651, the model cannot `peer_close` a host-owned app peer, and #2650; before that fe08d8e6, the merge of octos#2645, which holds #2644, a running turn shown in the other lane's shared history, and #2636, the parallel person context with shared history; after #2626, the shared peer conversation, #2630, `peer_gather` accepting the kernel's own `result.md`, #2621, `peer/input/reject`, and #2616, the #2567 follow-ups); the corrections dated 2026-09-29 below were checked against c608384d, the pin before it.
Verified at e6223ef when this ADR was written. OctoSense now pins octos 39e22d45 (octos main after #2709; since 056173e8 it adds #2692, a stdio turn's terminal delivered after its queued envelopes, #2697 and #2695, a purge whose erase fails stops as `peer_purge_incomplete` and keeps the peer staged, and #2677, option-like revisions refused in workspace history; before that 056173e8, the merge of octos#2675, `session/hydrate` rows that carry a tool row's `tool_call_id` and `tool_name` and an assistant row's `tool_calls`, so a reloaded transcript names its tool rows; after #2672, #2671, #2669, #2665, #2664 and #2261; before that ae230ce0, the merge of octos#2656, low fixes for host-owned app peers; after #2655, the unknown-outcome interlock kept across a kernel restart, and #2653, a bound workspace that no longer resolves to its recorded path is refused rather than re-rooted; before that 4a3ec9f9, the merge of octos#2648, a host session's durable exact tool list, `session/tool_list/set`; after #2649, `peer/purge`, #2647, `peer/context/open` `read_parent`, #2658, `peer/tools/unregister`, #2657, a host session's tools registered by the host's own connection without an app peer's token, #2654, host tool claims bounded per peer, #2652, a refused host `turn/start` no longer consumes its `peer/input`, #2651, the model cannot `peer_close` a host-owned app peer, and #2650; before that fe08d8e6, the merge of octos#2645, which holds #2644, a running turn shown in the other lane's shared history, and #2636, the parallel person context with shared history; after #2626, the shared peer conversation, #2630, `peer_gather` accepting the kernel's own `result.md`, #2621, `peer/input/reject`, and #2616, the #2567 follow-ups); the corrections dated 2026-09-29 below were checked against c608384d, the pin before it.

- **Peers are sessions, not processes.** One kernel process per shell; every peer is a session in it (tokio tasks) with its own workspace, memory namespace, transcript and model lane. Tools such as the shell run as short child processes in the peer's workspace.
- **No 8-peer ceiling.** `peer/prepare` stages 1–8 peers **per call** (`n`); the only total is a soft cap of 8192 live peer registrations. The model's `peer_handoff` tool is limited to 4 per turn; host-owned app peers are not created through it. OctoSense's broker prepares one peer per call.
Expand Down
Loading
Loading