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
4 changes: 2 additions & 2 deletions docs/interactive-capabilities/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ OpenBitFun Playbook currently contains **22 features**, **21 settings pages**, a
- Generated per-item interaction audit: `docs/interactive-capabilities/technical/product-control-open-audit.json`
- Generated low-level audit map: `docs/interactive-capabilities/technical/tauri-command-map.json`

说明书、网站、搜索和智能体只看“功能 + 设置 + 子能力”。每项子能力都必须引用已注册 Tauri Command 或可解析的源码标记;这些证据不会进入公开目录。当前 **664** 个 Tauri 命令只用于实现覆盖审计。产品 UI 交互源码会在生成和检查时扫描并校验,但不会保存成随普通 UI 改动频繁变化的版本化快照。
说明书、网站、搜索和智能体只看“功能 + 设置 + 子能力”。每项子能力都必须引用已注册 Tauri Command 或可解析的源码标记;这些证据不会进入公开目录。当前 **665** 个 Tauri 命令只用于实现覆盖审计。产品 UI 交互源码会在生成和检查时扫描并校验,但不会保存成随普通 UI 改动频繁变化的版本化快照。

Docs, website, search, and agents see only features, settings, and documented sub-capabilities. Every sub-capability must reference a registered Tauri command or a resolvable source marker; evidence is stripped from public projections. The **664** Tauri commands remain implementation-audit evidence only. Product UI interaction sources are scanned and validated during generation and checks, but are not stored as a versioned snapshot that churns with ordinary UI changes.
Docs, website, search, and agents see only features, settings, and documented sub-capabilities. Every sub-capability must reference a registered Tauri command or a resolvable source marker; evidence is stripped from public projections. The **665** Tauri commands remain implementation-audit evidence only. Product UI interaction sources are scanned and validated during generation and checks, but are not stored as a versioned snapshot that churns with ordinary UI changes.

## 控制边界 / Control boundary

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
},
"evidence": [
"command:start_dialog_turn",
"command:manage_dialog_queue",
"command:steer_dialog_turn",
"command:interrupt_dialog_turn",
"command:cancel_dialog_turn",
Expand Down
22 changes: 19 additions & 3 deletions docs/interactive-capabilities/technical/tauri-command-map.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"schemaVersion": 2,
"generatedFrom": "src/shared/interactive-capabilities/catalog.json",
"catalogDigest": "6587344a6b5e75a80457ea4ba2670bf37cf3038bdb436089ae402eb7b5a5a025",
"commandCount": 664,
"commandCount": 665,
"coverage": {
"commandCount": 664,
"documentedCommandCount": 616,
"commandCount": 665,
"documentedCommandCount": 617,
"implementationCommandCount": 48,
"implementationDigest": "f6d38a24a70708988cb47ada81d07eccf0668684e8734c9ee5155b9ffa7e3db8"
},
Expand Down Expand Up @@ -5424,6 +5424,22 @@
"signature": "fn logout_subscription_account( request: SubscriptionProviderRequest, ) -> Result<openbitfun_core::infrastructure::subscription_auth::SubscriptionLogoutResult, String>",
"remoteWorkspacePolicy": "LocalOnly"
},
{
"id": "manage_dialog_queue",
"moduleId": "agentic",
"capabilityId": "feature.ai-assistant",
"capabilityIds": [
"feature.ai-assistant"
],
"documentedItemIds": [
"feature.ai-assistant:turn-control"
],
"visibility": "documented",
"rustPath": "api::agentic_api::manage_dialog_queue",
"sourceFile": "src/apps/desktop/src/api/agentic_api.rs",
"signature": "fn manage_dialog_queue( runtime: State<'_, DesktopRuntimeContext>, request: openbitfun_runtime_ports::DialogQueueRequest, ) -> Result<openbitfun_runtime_ports::DialogQueueSnapshot, String>",
"remoteWorkspacePolicy": "RemoteRouted"
},
{
"id": "mark_announcement_seen",
"moduleId": "announcement",
Expand Down
14 changes: 14 additions & 0 deletions src/apps/cli/src/peer_host/commands/dialog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -502,3 +502,17 @@ mod image_attachment_tests {
assert!(peer_image_attachments(&json!({"imageContexts": "bad"})).is_err());
}
}

pub(crate) async fn manage_dialog_queue(
state: &PeerHostState,
args: &Value,
) -> Result<Value, String> {
let request = serde_json::from_value(request_value(args).clone())
.map_err(|e| format!("Invalid queue request: {e}"))?;
let snapshot = state
.agent_runtime
.manage_dialog_queue(request)
.await
.map_err(|e| e.into_message())?;
serde_json::to_value(snapshot).map_err(|e| e.to_string())
}
2 changes: 2 additions & 0 deletions src/apps/cli/src/peer_host/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ pub(crate) fn dispatch<'a>(
"get_session_files" => Box::pin(snapshot::get_session_files(state, args)),

// Dialog / tools
"manage_dialog_queue" => Box::pin(dialog::manage_dialog_queue(state, args)),
"start_dialog_turn" => Box::pin(dialog::start_dialog_turn(state, args)),
"cancel_dialog_turn" => Box::pin(dialog::cancel_dialog_turn(state, args)),
"start_user_question_interaction" => Box::pin(dialog::start_user_question_interaction(state, args)),
Expand Down Expand Up @@ -336,6 +337,7 @@ pub(crate) const HANDLED_COMMANDS: &[&str] = &[
"set_external_tool_targets_enabled_command",
"set_active_workspace",
"start_dialog_turn",
"manage_dialog_queue",
"submit_user_answers",
"start_user_question_interaction",
"subscribe_permission_requests",
Expand Down
12 changes: 12 additions & 0 deletions src/apps/desktop/src/api/agentic_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2472,6 +2472,18 @@ pub async fn ensure_coordinator_session(
.map_err(|error| error.to_string())
}

#[tauri::command]
pub async fn manage_dialog_queue(
runtime: State<'_, DesktopRuntimeContext>,
request: openbitfun_runtime_ports::DialogQueueRequest,
) -> Result<openbitfun_runtime_ports::DialogQueueSnapshot, String> {
runtime
.agent_runtime()
.manage_dialog_queue(request)
.await
.map_err(|e| e.into_message())
}

#[tauri::command]
pub async fn start_dialog_turn(
_app: AppHandle,
Expand Down
1 change: 1 addition & 0 deletions src/apps/desktop/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1286,6 +1286,7 @@ pub async fn run() {
api::agentic_api::interrupt_dialog_turn,
api::agentic_api::recover_interrupted_dialog_turn,
api::agentic_api::steer_dialog_turn,
api::agentic_api::manage_dialog_queue,
api::agentic_api::control_deep_review_queue,
api::agentic_api::cancel_session,
api::agentic_api::set_subagent_timeout,
Expand Down
6 changes: 6 additions & 0 deletions src/crates/assembly/core/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,9 @@ For remote search ID binding without a live SSH connection:
```bash
cargo test --locked -p openbitfun-core --no-default-features --features agent-runtime,git,ssh-remote --lib service::search::remote::identity_tests
```

For host-owned user queue admission, cancellation, steering receipts and client disconnects:

```bash
cargo test --locked -p openbitfun-core --no-default-features --features remote-connect,git --lib host_queue_
```
Loading
Loading