From b3da52d0c53e5164ecf0e641c4c73c9fffa2c860 Mon Sep 17 00:00:00 2001 From: Cowork 3P Date: Thu, 4 Jun 2026 06:31:45 +0000 Subject: [PATCH] test,docs: fix all stale references to deleted multi-agent subsystem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test fixes (6 files, -303 lines): - Delete app_controller_acp_mount_resilience_test.dart (entirely about deleted types) - Remove multi-agent test cases from gateway_acp_client_auth_test.dart - Rename _manifestWithDesktopMultiAgentEnabled → _defaultDesktopManifest in assistant_execution_target_test, assistant_lower_pane_test, mobile_assistant_page_test Docs fixes (6 files): - Regenerate public-symbol-inventory.json/md via make docs-public-api - Remove multi-agent sections from public-api/models-and-config.md, app-orchestration.md, runtime-contracts.md - Fix xworkmate/ → xworkmate-app/ paths in cloud-session doc - Remove multiAgent references from app-external-service-api-test-matrix.md --- ...ce-multi-device-architecture-2026-03-30.md | 20 +- .../_generated/public-symbol-inventory.json | 1594 +++++++++-------- .../_generated/public-symbol-inventory.md | 872 ++++----- .../public-api/app-orchestration.md | 5 - .../public-api/models-and-config.md | 43 - .../public-api/runtime-contracts.md | 31 +- .../app-external-service-api-test-matrix.md | 7 +- .../assistant/assistant_lower_pane_test.dart | 20 +- .../mobile/mobile_assistant_page_test.dart | 14 +- ..._controller_acp_mount_resilience_test.dart | 163 -- .../assistant_execution_target_test.dart | 20 +- .../runtime/gateway_acp_client_auth_test.dart | 94 - 12 files changed, 1306 insertions(+), 1577 deletions(-) delete mode 100644 test/runtime/app_controller_acp_mount_resilience_test.dart diff --git a/docs/architecture/cloud-session-service-multi-device-architecture-2026-03-30.md b/docs/architecture/cloud-session-service-multi-device-architecture-2026-03-30.md index 94c4867c..14ad0a2b 100644 --- a/docs/architecture/cloud-session-service-multi-device-architecture-2026-03-30.md +++ b/docs/architecture/cloud-session-service-multi-device-architecture-2026-03-30.md @@ -20,15 +20,15 @@ Terminal 先不作为当前目标的一等端,只保留为未来可扩展方 当前仓库里已经存在一组很适合作为目标架构起点的实现: -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/runtime/runtime_models_runtime_payloads.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/runtime/runtime_models_runtime_payloads.dart) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/runtime/runtime_models_runtime_payloads.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/runtime/runtime_models_runtime_payloads.dart) 已定义 `TaskThread`、`WorkspaceBinding`、`ExecutionBinding`、`ThreadContextState`、`ThreadLifecycleState` 等核心线程模型。 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_session_repository.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_session_repository.dart) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_session_repository.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_session_repository.dart) 已有浏览器本地缓存和远端会话仓库的抽象雏形。 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_store.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_store.dart) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_store.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_store.dart) 已有 Web 端本地持久化、会话 client id、远端 relay token 的存储能力。 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/app/app_controller_web_gateway_relay.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/app/app_controller_web_gateway_relay.dart) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/app/app_controller_web_gateway_relay.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/app/app_controller_web_gateway_relay.dart) 已有远端 relay 连接、会话刷新、历史同步和模型刷新逻辑。 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/app/app_controller_desktop_thread_sessions.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/app/app_controller_desktop_thread_sessions.dart) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/app/app_controller_desktop_thread_sessions.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/app/app_controller_desktop_thread_sessions.dart) 已有桌面端围绕 `sessionKey` / `TaskThread` 的线程上下文读取逻辑。 因此,目标不是重写,而是把“本地控制器 + relay + 线程模型”升级成“跨端会话平台”。 @@ -288,7 +288,7 @@ Terminal 先不纳入当前落地范围。 ### 7.2 `WebSessionRepository` 升级方向 -当前 [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_session_repository.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_session_repository.dart) 已经有 `BrowserWebSessionRepository` 和 `RemoteWebSessionRepository`。 +当前 [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_session_repository.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_session_repository.dart) 已经有 `BrowserWebSessionRepository` 和 `RemoteWebSessionRepository`。 建议后续演进为: @@ -304,7 +304,7 @@ Terminal 先不纳入当前落地范围。 ### 7.3 `WebStore` 的边界 -当前 [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_store.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/lib/web/web_store.dart) 适合作为: +当前 [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_store.dart`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/lib/web/web_store.dart) 适合作为: - client id 存储 - 本地草稿缓存 @@ -456,11 +456,11 @@ sequenceDiagram ## 12. 与现有文档的关系 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/docs/architecture/task-control-plane-unification.md`](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/docs/architecture/task-control-plane-unification.md) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/task-control-plane-unification.md`](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/task-control-plane-unification.md) 说明当前 `TaskThread` 主模型。 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/docs/architecture/task-thread-session-key-isolation-20260329.md`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/docs/architecture/task-thread-session-key-isolation-20260329.md) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/task-thread-session-key-isolation-20260329.md`](file:///Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/task-thread-session-key-isolation-20260329.md) 说明 `sessionKey` 与线程身份隔离约束。 -- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/docs/architecture/xworkmate-layered-architecture.md`](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate/docs/architecture/xworkmate-layered-architecture.md) +- [`/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/xworkmate-layered-architecture.md`](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/xworkmate-layered-architecture.md) 说明当前内部状态如何围绕 `TaskThread` 组织。 本文在这些基础上进一步上升一层,定义跨设备会话的目标架构。 diff --git a/docs/architecture/public-api/_generated/public-symbol-inventory.json b/docs/architecture/public-api/_generated/public-symbol-inventory.json index a93fbb52..9ba69aac 100644 --- a/docs/architecture/public-api/_generated/public-symbol-inventory.json +++ b/docs/architecture/public-api/_generated/public-symbol-inventory.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-05-13T08:37:25.180831+00:00", + "generatedAt": "2026-06-04T06:23:23.858629+00:00", "targets": [ "lib/app", "lib/runtime", @@ -11,13 +11,13 @@ "coverageScopes": [ { "scope": "lib/app", - "fileCount": 30, - "symbolCount": 68 + "fileCount": 31, + "symbolCount": 69 }, { "scope": "lib/runtime", - "fileCount": 66, - "symbolCount": 372 + "fileCount": 55, + "symbolCount": 333 }, { "scope": "lib/models", @@ -27,17 +27,17 @@ { "scope": "lib/features/assistant", "fileCount": 16, - "symbolCount": 79 + "symbolCount": 86 }, { "scope": "lib/features/settings", - "fileCount": 4, - "symbolCount": 5 + "fileCount": 7, + "symbolCount": 8 }, { "scope": "lib/features/mobile", - "fileCount": 6, - "symbolCount": 19 + "fileCount": 13, + "symbolCount": 27 }, { "scope": "lib/theme", @@ -51,14 +51,14 @@ } ], "totals": { - "fileCount": 129, - "symbolCount": 603 + "fileCount": 132, + "symbolCount": 590 }, "groups": [ { "group": "lib/app", - "fileCount": 30, - "symbolCount": 68, + "fileCount": 31, + "symbolCount": 69, "files": [ { "path": "lib/app/app.dart", @@ -110,7 +110,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_core.dart", - "line": 57, + "line": 53, "kind": "enum", "name": "CodexCooperationState", "signature": "enum CodexCooperationState { notStarted, bridgeOnly, registered }" @@ -118,18 +118,18 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_core.dart", - "line": 59, + "line": 55, "kind": "class", - "name": "SingleAgentSkillScanRootInternal", - "signature": "class SingleAgentSkillScanRootInternal {" + "name": "AppController", + "signature": "class AppController extends ChangeNotifier {" }, { "language": "dart", "path": "lib/app/app_controller_desktop_core.dart", - "line": 91, - "kind": "class", - "name": "AppController", - "signature": "class AppController extends ChangeNotifier {" + "line": 599, + "kind": "top-level function", + "name": "resolveUserHomeDirectoryFromControllerEnvironmentInternal", + "signature": "String resolveUserHomeDirectoryFromControllerEnvironmentInternal( Map? environment, ) {" } ] }, @@ -141,7 +141,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_external_acp_routing.dart", - "line": 39, + "line": 37, "kind": "extension", "name": "AppControllerDesktopExternalAcpRouting", "signature": "extension AppControllerDesktopExternalAcpRouting on AppController {" @@ -156,7 +156,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_gateway.dart", - "line": 48, + "line": 46, "kind": "extension", "name": "AppControllerDesktopGateway", "signature": "extension AppControllerDesktopGateway on AppController {" @@ -171,7 +171,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_navigation.dart", - "line": 47, + "line": 45, "kind": "extension", "name": "AppControllerDesktopNavigation", "signature": "extension AppControllerDesktopNavigation on AppController {" @@ -186,7 +186,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 48, + "line": 46, "kind": "top-level function", "name": "refreshAcpCapabilitiesRuntimeInternal", "signature": "Future refreshAcpCapabilitiesRuntimeInternal( AppController controller, { bool forceRefresh = false, bool persistMountTargets = false, }) async {" @@ -194,7 +194,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 98, + "line": 80, "kind": "top-level function", "name": "refreshSingleAgentCapabilitiesRuntimeInternal", "signature": "Future refreshSingleAgentCapabilitiesRuntimeInternal( AppController controller, { bool forceRefresh = false, }) async {" @@ -202,7 +202,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 170, + "line": 104, "kind": "top-level function", "name": "assistantWorkingDirectoryForSessionRuntimeInternal", "signature": "String? assistantWorkingDirectoryForSessionRuntimeInternal( AppController controller, String sessionKey, ) {" @@ -210,7 +210,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 181, + "line": 128, "kind": "top-level function", "name": "assistantRemoteWorkingDirectoryHintForSessionRuntimeInternal", "signature": "String? assistantRemoteWorkingDirectoryHintForSessionRuntimeInternal( AppController controller, String sessionKey, ) {" @@ -218,7 +218,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 200, + "line": 147, "kind": "top-level function", "name": "resolveLocalAssistantWorkingDirectoryForSessionRuntimeInternal", "signature": "String? resolveLocalAssistantWorkingDirectoryForSessionRuntimeInternal( AppController controller, String sessionKey, { bool requireLocalExistence = true, }) {" @@ -226,7 +226,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 223, + "line": 170, "kind": "top-level function", "name": "buildCodeAgentNodeStateRuntimeInternal", "signature": "CodeAgentNodeState buildCodeAgentNodeStateRuntimeInternal( AppController controller, { AssistantExecutionTarget? executionTarget, }) {" @@ -234,7 +234,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 239, + "line": 186, "kind": "top-level function", "name": "bridgeGatewayModeRuntimeInternal", "signature": "GatewayMode bridgeGatewayModeRuntimeInternal(AppController controller) {" @@ -242,7 +242,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 249, + "line": 196, "kind": "top-level function", "name": "ensureCodexGatewayRegistrationRuntimeInternal", "signature": "Future ensureCodexGatewayRegistrationRuntimeInternal( AppController controller, ) async {" @@ -250,7 +250,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 317, + "line": 264, "kind": "top-level function", "name": "clearCodexGatewayRegistrationRuntimeInternal", "signature": "void clearCodexGatewayRegistrationRuntimeInternal(AppController controller) {" @@ -258,7 +258,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_coordination_impl.dart", - "line": 327, + "line": 274, "kind": "top-level function", "name": "recomputeTasksRuntimeInternal", "signature": "void recomputeTasksRuntimeInternal(AppController controller) {" @@ -296,7 +296,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_runtime_helpers.dart", - "line": 53, + "line": 51, "kind": "extension", "name": "AppControllerDesktopRuntimeHelpers", "signature": "extension AppControllerDesktopRuntimeHelpers on AppController {" @@ -311,7 +311,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_settings.dart", - "line": 48, + "line": 46, "kind": "extension", "name": "AppControllerDesktopSettings", "signature": "extension AppControllerDesktopSettings on AppController {" @@ -326,7 +326,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_settings_runtime.dart", - "line": 50, + "line": 48, "kind": "extension", "name": "AppControllerDesktopSettingsRuntime", "signature": "extension AppControllerDesktopSettingsRuntime on AppController {" @@ -341,7 +341,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_skill_permissions.dart", - "line": 48, + "line": 46, "kind": "extension", "name": "AppControllerDesktopSkillPermissions", "signature": "extension AppControllerDesktopSkillPermissions on AppController {" @@ -356,7 +356,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_actions.dart", - "line": 51, + "line": 50, "kind": "extension", "name": "AppControllerDesktopThreadActions", "signature": "extension AppControllerDesktopThreadActions on AppController {" @@ -371,7 +371,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_binding.dart", - "line": 47, + "line": 45, "kind": "class", "name": "DesktopThreadBindingSnapshotInternal", "signature": "class DesktopThreadBindingSnapshotInternal {" @@ -379,7 +379,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_binding.dart", - "line": 76, + "line": 74, "kind": "extension", "name": "AppControllerDesktopThreadBinding", "signature": "extension AppControllerDesktopThreadBinding on AppController {" @@ -387,7 +387,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_binding.dart", - "line": 337, + "line": 351, "kind": "top-level function", "name": "pickDraftThreadExecutionTargetInternal", "signature": "AssistantExecutionTarget pickDraftThreadExecutionTargetInternal({ required AssistantExecutionTarget currentTarget, required Iterable visibleTargets, bool? localWorkspaceAvailable, }) {" @@ -402,7 +402,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions.dart", - "line": 55, + "line": 53, "kind": "top-level function", "name": "resolveGatewayThreadConnectionStateInternal", "signature": "AssistantThreadConnectionState resolveGatewayThreadConnectionStateInternal({ required AssistantExecutionTarget target, required bool bridgeReady, required String bridgeLabel, required AccountSyncState? accountSyncState, required bool accountSignedIn, required bool bridgeConfigured, bool bridgeDiscoveryAttempted = false, String bridgeDiscoveryError = '', bool providerCatalogEmpty = false, }) {" @@ -410,7 +410,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions.dart", - "line": 180, + "line": 178, "kind": "top-level function", "name": "bridgeCapabilityReadyForExecutionTargetInternal", "signature": "bool bridgeCapabilityReadyForExecutionTargetInternal({ required AssistantExecutionTarget target, required bool bridgeConfigured, required List providers, required List availableTargets, }) {" @@ -418,7 +418,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions.dart", - "line": 192, + "line": 190, "kind": "extension", "name": "AppControllerDesktopThreadSessions", "signature": "extension AppControllerDesktopThreadSessions on AppController {" @@ -426,7 +426,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions.dart", - "line": 655, + "line": 650, "kind": "top-level function", "name": "resolveAssistantExecutionTargetFromRecordForTest", "signature": "AssistantExecutionTarget resolveAssistantExecutionTargetFromRecordForTest( TaskThread? record, { required AssistantExecutionTarget defaultExecutionTarget, }) {" @@ -436,12 +436,12 @@ { "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", "language": "dart", - "symbolCount": 13, + "symbolCount": 10, "symbols": [ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 49, + "line": 47, "kind": "top-level function", "name": "loadAiGatewayApiKeyThreadSessionInternal", "signature": "Future loadAiGatewayApiKeyThreadSessionInternal( AppController controller, ) async {" @@ -449,31 +449,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 55, - "kind": "top-level function", - "name": "saveMultiAgentConfigThreadSessionInternal", - "signature": "Future saveMultiAgentConfigThreadSessionInternal( AppController controller, MultiAgentConfig config, ) async {" - }, - { - "language": "dart", - "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 72, - "kind": "top-level function", - "name": "refreshMultiAgentMountsThreadSessionInternal", - "signature": "Future refreshMultiAgentMountsThreadSessionInternal( AppController controller, { bool sync = false, }) async {" - }, - { - "language": "dart", - "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 97, - "kind": "top-level function", - "name": "runMultiAgentCollaborationThreadSessionInternal", - "signature": "Future runMultiAgentCollaborationThreadSessionInternal( AppController controller, { required String rawPrompt, required String composedPrompt, required List attachments, required List selectedSkillLabels, }) async {" - }, - { - "language": "dart", - "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 283, + "line": 53, "kind": "top-level function", "name": "openOnlineWorkspaceThreadSessionInternal", "signature": "Future openOnlineWorkspaceThreadSessionInternal( AppController controller, ) async {" @@ -481,7 +457,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 304, + "line": 74, "kind": "top-level function", "name": "aiGatewayModelChoicesThreadSessionInternal", "signature": "List aiGatewayModelChoicesThreadSessionInternal( AppController controller, ) {" @@ -489,7 +465,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 310, + "line": 80, "kind": "top-level function", "name": "connectedGatewayModelChoicesThreadSessionInternal", "signature": "List connectedGatewayModelChoicesThreadSessionInternal( AppController controller, ) {" @@ -497,7 +473,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 322, + "line": 92, "kind": "top-level function", "name": "assistantModelChoicesThreadSessionInternal", "signature": "List assistantModelChoicesThreadSessionInternal( AppController controller, ) {" @@ -505,7 +481,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 331, + "line": 101, "kind": "top-level function", "name": "assistantModelChoicesForSessionThreadSessionInternal", "signature": "List assistantModelChoicesForSessionThreadSessionInternal( AppController controller, String sessionKey, ) {" @@ -513,7 +489,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 346, + "line": 116, "kind": "top-level function", "name": "resolvedDefaultModelThreadSessionInternal", "signature": "String resolvedDefaultModelThreadSessionInternal(AppController controller) {" @@ -521,7 +497,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 368, + "line": 138, "kind": "top-level function", "name": "canQuickConnectGatewayThreadSessionInternal", "signature": "bool canQuickConnectGatewayThreadSessionInternal(AppController controller) {" @@ -529,7 +505,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 388, + "line": 158, "kind": "top-level function", "name": "joinConnectionPartsThreadSessionInternal", "signature": "String joinConnectionPartsThreadSessionInternal(List parts) {" @@ -537,7 +513,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart", - "line": 396, + "line": 166, "kind": "top-level function", "name": "gatewayAddressLabelThreadSessionInternal", "signature": "String gatewayAddressLabelThreadSessionInternal( GatewayConnectionProfile profile, ) {" @@ -552,7 +528,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_thread_storage.dart", - "line": 47, + "line": 45, "kind": "extension", "name": "AppControllerDesktopThreadStorage", "signature": "extension AppControllerDesktopThreadStorage on AppController {" @@ -567,7 +543,7 @@ { "language": "dart", "path": "lib/app/app_controller_desktop_workspace_execution.dart", - "line": 48, + "line": 46, "kind": "extension", "name": "AppControllerDesktopWorkspaceExecution", "signature": "extension AppControllerDesktopWorkspaceExecution on AppController {" @@ -582,13 +558,36 @@ { "language": "dart", "path": "lib/app/app_controller_openclaw_task_queue.dart", - "line": 9, + "line": 7, "kind": "class", "name": "OpenClawGatewayQueuedTurnInternal", "signature": "class OpenClawGatewayQueuedTurnInternal {" } ] }, + { + "path": "lib/app/app_logger.dart", + "language": "dart", + "symbolCount": 2, + "symbols": [ + { + "language": "dart", + "path": "lib/app/app_logger.dart", + "line": 3, + "kind": "class", + "name": "AppLogger", + "signature": "class AppLogger {" + }, + { + "language": "dart", + "path": "lib/app/app_logger.dart", + "line": 31, + "kind": "top-level function", + "name": "appLog", + "signature": "void appLog(String message) {" + } + ] + }, { "path": "lib/app/app_metadata.dart", "language": "dart", @@ -716,7 +715,7 @@ { "language": "dart", "path": "lib/app/ui_feature_manifest_core.dart", - "line": 57, + "line": 60, "kind": "class", "name": "UiFeatureFlag", "signature": "class UiFeatureFlag {" @@ -724,7 +723,7 @@ { "language": "dart", "path": "lib/app/ui_feature_manifest_core.dart", - "line": 89, + "line": 92, "kind": "class", "name": "UiFeatureManifest", "signature": "class UiFeatureManifest {" @@ -732,7 +731,7 @@ { "language": "dart", "path": "lib/app/ui_feature_manifest_core.dart", - "line": 336, + "line": 339, "kind": "class", "name": "UiFeatureAccess", "signature": "class UiFeatureAccess {" @@ -740,7 +739,7 @@ { "language": "dart", "path": "lib/app/ui_feature_manifest_core.dart", - "line": 466, + "line": 476, "kind": "class", "name": "UiFeatureManifestLoader", "signature": "class UiFeatureManifestLoader {" @@ -773,12 +772,12 @@ { "path": "lib/app/workspace_page_registry.dart", "language": "dart", - "symbolCount": 4, + "symbolCount": 6, "symbols": [ { "language": "dart", "path": "lib/app/workspace_page_registry.dart", - "line": 8, + "line": 10, "kind": "enum", "name": "WorkspacePageSurface", "signature": "enum WorkspacePageSurface { desktop, mobile }" @@ -786,7 +785,15 @@ { "language": "dart", "path": "lib/app/workspace_page_registry.dart", - "line": 10, + "line": 12, + "kind": "class", + "name": "MobileWorkspaceActions", + "signature": "class MobileWorkspaceActions {" + }, + { + "language": "dart", + "path": "lib/app/workspace_page_registry.dart", + "line": 20, "kind": "typedef", "name": "WorkspacePageBuilder", "signature": "typedef WorkspacePageBuilder = Widget Function( AppController controller, ValueChanged onOpenDetail, );" @@ -794,7 +801,15 @@ { "language": "dart", "path": "lib/app/workspace_page_registry.dart", - "line": 16, + "line": 26, + "kind": "typedef", + "name": "MobileWorkspacePageBuilder", + "signature": "typedef MobileWorkspacePageBuilder = Widget Function( AppController controller, ValueChanged onOpenDetail, MobileWorkspaceActions mobileActions, );" + }, + { + "language": "dart", + "path": "lib/app/workspace_page_registry.dart", + "line": 33, "kind": "class", "name": "WorkspacePageSpec", "signature": "class WorkspacePageSpec {" @@ -802,10 +817,10 @@ { "language": "dart", "path": "lib/app/workspace_page_registry.dart", - "line": 56, + "line": 72, "kind": "top-level function", "name": "buildWorkspacePage", - "signature": "Widget buildWorkspacePage({ required WorkspaceDestination destination, required AppController controller, required ValueChanged onOpenDetail, required WorkspacePageSurface surface, }) {" + "signature": "Widget buildWorkspacePage({ required WorkspaceDestination destination, required AppController controller, required ValueChanged onOpenDetail, required WorkspacePageSurface surface, MobileWorkspaceActions mobileActions = const MobileWorkspaceActions(), }) {" } ] } @@ -813,9 +828,32 @@ }, { "group": "lib/features", - "fileCount": 26, - "symbolCount": 103, + "fileCount": 39, + "symbolCount": 128, "files": [ + { + "path": "lib/features/assistant/assistant_attachment_payloads.dart", + "language": "dart", + "symbolCount": 2, + "symbols": [ + { + "language": "dart", + "path": "lib/features/assistant/assistant_attachment_payloads.dart", + "line": 12, + "kind": "class", + "name": "AssistantAttachmentLimitException", + "signature": "class AssistantAttachmentLimitException implements Exception {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_attachment_payloads.dart", + "line": 93, + "kind": "top-level function", + "name": "formatAssistantAttachmentBytesInternal", + "signature": "String formatAssistantAttachmentBytesInternal(int bytes) {" + } + ] + }, { "path": "lib/features/assistant/assistant_page.dart", "language": "dart", @@ -830,7 +868,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_components.dart", - "line": 40, + "line": 38, "kind": "class", "name": "AssistantTaskRailInternal", "signature": "class AssistantTaskRailInternal extends StatefulWidget {" @@ -838,7 +876,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_components.dart", - "line": 73, + "line": 71, "kind": "class", "name": "AssistantTaskRailStateInternal", "signature": "class AssistantTaskRailStateInternal extends State {" @@ -846,7 +884,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_components.dart", - "line": 283, + "line": 281, "kind": "top-level function", "name": "groupTasksForRailInternal", "signature": "List groupTasksForRailInternal( List tasks, List visibleExecutionTargets, ) {" @@ -854,7 +892,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_components.dart", - "line": 313, + "line": 311, "kind": "class", "name": "AssistantTaskTileInternal", "signature": "class AssistantTaskTileInternal extends StatelessWidget {" @@ -862,7 +900,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_components.dart", - "line": 462, + "line": 460, "kind": "class", "name": "AssistantTaskGroupHeaderInternal", "signature": "class AssistantTaskGroupHeaderInternal extends StatelessWidget {" @@ -870,7 +908,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_components.dart", - "line": 526, + "line": 524, "kind": "class", "name": "AssistantEmptyStateInternal", "signature": "class AssistantEmptyStateInternal extends StatelessWidget {" @@ -891,7 +929,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_bar.dart", - "line": 40, + "line": 38, "kind": "class", "name": "ComposerBarInternal", "signature": "class ComposerBarInternal extends StatefulWidget {" @@ -899,7 +937,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_bar.dart", - "line": 90, + "line": 88, "kind": "class", "name": "ComposerBarStateInternal", "signature": "class ComposerBarStateInternal extends State {" @@ -914,7 +952,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_clipboard.dart", - "line": 40, + "line": 38, "kind": "class", "name": "ComposerAttachmentInternal", "signature": "class ComposerAttachmentInternal {" @@ -922,7 +960,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_clipboard.dart", - "line": 82, + "line": 80, "kind": "class", "name": "AssistantPasteIntent", "signature": "class AssistantPasteIntent extends Intent {" @@ -930,7 +968,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_clipboard.dart", - "line": 86, + "line": 84, "kind": "top-level function", "name": "readClipboardImageAsXFileInternal", "signature": "Future readClipboardImageAsXFileInternal() async {" @@ -938,7 +976,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_clipboard.dart", - "line": 118, + "line": 116, "kind": "top-level function", "name": "readClipboardImageForFormatInternal", "signature": "Future readClipboardImageForFormatInternal( ClipboardReader reader, { required FileFormat format, required String extension, required String mimeType, }) async {" @@ -946,45 +984,22 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_clipboard.dart", - "line": 171, + "line": 169, "kind": "top-level function", "name": "resolveClipboardAttachmentTempDirectoryInternal", "signature": "Future resolveClipboardAttachmentTempDirectoryInternal() async {" } ] }, - { - "path": "lib/features/assistant/assistant_page_composer_skill_models.dart", - "language": "dart", - "symbolCount": 2, - "symbols": [ - { - "language": "dart", - "path": "lib/features/assistant/assistant_page_composer_skill_models.dart", - "line": 40, - "kind": "top-level function", - "name": "skillOptionFromGatewayInternal", - "signature": "ComposerSkillOptionInternal skillOptionFromGatewayInternal( GatewaySkillSummary skill, ) {" - }, - { - "language": "dart", - "path": "lib/features/assistant/assistant_page_composer_skill_models.dart", - "line": 61, - "kind": "class", - "name": "ComposerSkillOptionInternal", - "signature": "class ComposerSkillOptionInternal {" - } - ] - }, { "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", "language": "dart", - "symbolCount": 3, + "symbolCount": 10, "symbols": [ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", - "line": 40, + "line": 38, "kind": "class", "name": "ComposerSelectedSkillChipInternal", "signature": "class ComposerSelectedSkillChipInternal extends StatelessWidget {" @@ -992,7 +1007,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", - "line": 69, + "line": 67, "kind": "class", "name": "SkillPickerPopoverInternal", "signature": "class SkillPickerPopoverInternal extends StatelessWidget {" @@ -1000,10 +1015,66 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", - "line": 202, + "line": 261, + "kind": "top-level function", + "name": "skillPickerSectionsInternal", + "signature": "List skillPickerSectionsInternal( List skills, ) {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 291, + "kind": "class", + "name": "SkillPickerRowInternal", + "signature": "class SkillPickerRowInternal {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 299, + "kind": "class", + "name": "SkillPickerGroupHeaderInternal", + "signature": "class SkillPickerGroupHeaderInternal extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 323, "kind": "class", "name": "SkillPickerTileInternal", "signature": "class SkillPickerTileInternal extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 378, + "kind": "top-level function", + "name": "skillOptionFromGatewayInternal", + "signature": "ComposerSkillOptionInternal skillOptionFromGatewayInternal( GatewaySkillSummary skill, ) {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 402, + "kind": "top-level function", + "name": "skillGroupForSourceInternal", + "signature": "ComposerSkillGroupInternal skillGroupForSourceInternal(String source) {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 434, + "kind": "class", + "name": "ComposerSkillGroupInternal", + "signature": "class ComposerSkillGroupInternal {" + }, + { + "language": "dart", + "path": "lib/features/assistant/assistant_page_composer_skill_picker.dart", + "line": 444, + "kind": "class", + "name": "ComposerSkillOptionInternal", + "signature": "class ComposerSkillOptionInternal {" } ] }, @@ -1015,7 +1086,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_state_helpers.dart", - "line": 44, + "line": 42, "kind": "top-level function", "name": "buildSkillPickerOverlayForInternal", "signature": "Widget buildSkillPickerOverlayForInternal( ComposerBarStateInternal state, BuildContext context, ) {" @@ -1030,7 +1101,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 40, + "line": 38, "kind": "class", "name": "ComposerIconButtonInternal", "signature": "class ComposerIconButtonInternal extends StatefulWidget {" @@ -1038,7 +1109,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 50, + "line": 48, "kind": "class", "name": "ComposerResizeHandleInternal", "signature": "class ComposerResizeHandleInternal extends StatefulWidget {" @@ -1046,7 +1117,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 60, + "line": 58, "kind": "class", "name": "ComposerResizeHandleStateInternal", "signature": "class ComposerResizeHandleStateInternal extends State {" @@ -1054,7 +1125,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 102, + "line": 100, "kind": "class", "name": "ComposerIconButtonStateInternal", "signature": "class ComposerIconButtonStateInternal extends State {" @@ -1062,7 +1133,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 129, + "line": 127, "kind": "class", "name": "ComposerToolbarChipInternal", "signature": "class ComposerToolbarChipInternal extends StatefulWidget {" @@ -1070,7 +1141,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 153, + "line": 151, "kind": "class", "name": "ComposerToolbarChipStateInternal", "signature": "class ComposerToolbarChipStateInternal extends State {" @@ -1078,7 +1149,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 198, + "line": 196, "kind": "extension", "name": "AssistantExecutionTargetIconInternal", "signature": "extension AssistantExecutionTargetIconInternal on AssistantExecutionTarget {" @@ -1086,7 +1157,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 205, + "line": 203, "kind": "extension", "name": "AssistantPermissionLevelIconInternal", "signature": "extension AssistantPermissionLevelIconInternal on AssistantPermissionLevel {" @@ -1094,7 +1165,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_composer_support.dart", - "line": 212, + "line": 210, "kind": "class", "name": "SingleAgentProviderBadgeInternal", "signature": "class SingleAgentProviderBadgeInternal extends StatelessWidget {" @@ -1109,7 +1180,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 56, + "line": 54, "kind": "typedef", "name": "AssistantClipboardImageReader", "signature": "typedef AssistantClipboardImageReader = Future Function();" @@ -1117,7 +1188,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 58, + "line": 56, "kind": "class", "name": "AssistantPage", "signature": "class AssistantPage extends StatefulWidget {" @@ -1125,7 +1196,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 80, + "line": 78, "kind": "class", "name": "AssistantPageStateInternal", "signature": "class AssistantPageStateInternal extends State {" @@ -1133,7 +1204,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 278, + "line": 363, "kind": "enum", "name": "AssistantSidePaneInternal", "signature": "enum AssistantSidePaneInternal { tasks, navigation, focused }" @@ -1141,7 +1212,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 280, + "line": 365, "kind": "class", "name": "AssistantUnifiedSidePaneInternal", "signature": "class AssistantUnifiedSidePaneInternal extends StatelessWidget {" @@ -1149,7 +1220,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 352, + "line": 437, "kind": "class", "name": "AssistantSideTabRailInternal", "signature": "class AssistantSideTabRailInternal extends StatelessWidget {" @@ -1157,7 +1228,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 452, + "line": 537, "kind": "class", "name": "AssistantSideTabButtonInternal", "signature": "class AssistantSideTabButtonInternal extends StatefulWidget {" @@ -1165,7 +1236,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 471, + "line": 556, "kind": "class", "name": "AssistantSideTabButtonStateInternal", "signature": "class AssistantSideTabButtonStateInternal extends State {" @@ -1173,7 +1244,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 520, + "line": 605, "kind": "class", "name": "AssistantLowerPaneInternal", "signature": "class AssistantLowerPaneInternal extends StatelessWidget {" @@ -1181,7 +1252,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_main.dart", - "line": 604, + "line": 695, "kind": "class", "name": "ConversationAreaInternal", "signature": "class ConversationAreaInternal extends StatelessWidget {" @@ -1196,7 +1267,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 40, + "line": 38, "kind": "class", "name": "MessageBubbleInternal", "signature": "class MessageBubbleInternal extends StatelessWidget {" @@ -1204,7 +1275,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 113, + "line": 111, "kind": "class", "name": "MessageBubbleBodyInternal", "signature": "class MessageBubbleBodyInternal extends StatefulWidget {" @@ -1212,7 +1283,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 130, + "line": 128, "kind": "class", "name": "MessageBubbleBodyStateInternal", "signature": "class MessageBubbleBodyStateInternal extends State {" @@ -1220,7 +1291,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 294, + "line": 292, "kind": "class", "name": "PromptDebugSnapshotInternal", "signature": "class PromptDebugSnapshotInternal {" @@ -1228,7 +1299,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 365, + "line": 363, "kind": "class", "name": "MessageMetaToggleButtonInternal", "signature": "class MessageMetaToggleButtonInternal extends StatelessWidget {" @@ -1236,7 +1307,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 409, + "line": 407, "kind": "class", "name": "MessageMetaBlockInternal", "signature": "class MessageMetaBlockInternal extends StatelessWidget {" @@ -1244,7 +1315,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 437, + "line": 435, "kind": "class", "name": "ToolCallTileInternal", "signature": "class ToolCallTileInternal extends StatefulWidget {" @@ -1252,7 +1323,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 457, + "line": 455, "kind": "class", "name": "ToolCallTileStateInternal", "signature": "class ToolCallTileStateInternal extends State {" @@ -1260,7 +1331,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 588, + "line": 586, "kind": "class", "name": "StatusPillInternal", "signature": "class StatusPillInternal extends StatelessWidget {" @@ -1268,7 +1339,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 621, + "line": 619, "kind": "class", "name": "ConnectionChipInternal", "signature": "class ConnectionChipInternal extends StatelessWidget {" @@ -1276,7 +1347,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 653, + "line": 651, "kind": "class", "name": "ConnectionStatusChipInternal", "signature": "class ConnectionStatusChipInternal extends StatelessWidget {" @@ -1284,7 +1355,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_message_widgets.dart", - "line": 691, + "line": 689, "kind": "class", "name": "MessageViewModeChipInternal", "signature": "class MessageViewModeChipInternal extends StatelessWidget {" @@ -1299,7 +1370,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_state_actions.dart", - "line": 42, + "line": 39, "kind": "extension", "name": "AssistantPageStateActionsInternal", "signature": "extension AssistantPageStateActionsInternal on AssistantPageStateInternal {" @@ -1314,7 +1385,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_state_closure.dart", - "line": 44, + "line": 42, "kind": "extension", "name": "AssistantPageStateClosureInternal", "signature": "extension AssistantPageStateClosureInternal on AssistantPageStateInternal {" @@ -1344,7 +1415,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 40, + "line": 38, "kind": "enum", "name": "BubbleToneInternal", "signature": "enum BubbleToneInternal { user, assistant, agent }" @@ -1352,7 +1423,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 42, + "line": 40, "kind": "enum", "name": "TimelineItemKindInternal", "signature": "enum TimelineItemKindInternal { user, assistant, agent, toolCall }" @@ -1360,7 +1431,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 44, + "line": 42, "kind": "class", "name": "TimelineItemInternal", "signature": "class TimelineItemInternal {" @@ -1368,7 +1439,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 89, + "line": 93, "kind": "class", "name": "AssistantTaskSeedInternal", "signature": "class AssistantTaskSeedInternal {" @@ -1376,7 +1447,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 128, + "line": 132, "kind": "class", "name": "AssistantTaskEntryInternal", "signature": "class AssistantTaskEntryInternal {" @@ -1384,7 +1455,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 182, + "line": 186, "kind": "class", "name": "AssistantTaskGroupInternal", "signature": "class AssistantTaskGroupInternal {" @@ -1392,7 +1463,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 192, + "line": 196, "kind": "class", "name": "PillStyleInternal", "signature": "class PillStyleInternal {" @@ -1400,7 +1471,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 202, + "line": 206, "kind": "class", "name": "MetaPillInternal", "signature": "class MetaPillInternal extends StatelessWidget {" @@ -1408,7 +1479,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 256, + "line": 260, "kind": "top-level function", "name": "pillStyleForStatusInternal", "signature": "PillStyleInternal pillStyleForStatusInternal( BuildContext context, String label, ) {" @@ -1416,7 +1487,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 282, + "line": 286, "kind": "top-level function", "name": "normalizedTaskStatusInternal", "signature": "String normalizedTaskStatusInternal(String status) {" @@ -1424,7 +1495,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 295, + "line": 299, "kind": "top-level function", "name": "toolCallStatusLabelInternal", "signature": "String toolCallStatusLabelInternal(String status) =>" @@ -1432,7 +1503,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 303, + "line": 307, "kind": "top-level function", "name": "assistantThinkingLabelInternal", "signature": "String assistantThinkingLabelInternal(String level) => switch (level) {" @@ -1440,7 +1511,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 310, + "line": 314, "kind": "top-level function", "name": "sessionDisplayTitleInternal", "signature": "String sessionDisplayTitleInternal(GatewaySessionSummary session) {" @@ -1448,7 +1519,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 318, + "line": 322, "kind": "top-level function", "name": "fallbackSessionTitleInternal", "signature": "String fallbackSessionTitleInternal(String sessionKey) {" @@ -1456,7 +1527,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 326, + "line": 330, "kind": "top-level function", "name": "sessionPreviewInternal", "signature": "String? sessionPreviewInternal(GatewaySessionSummary session) {" @@ -1464,7 +1535,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 338, + "line": 342, "kind": "top-level function", "name": "sessionStatusInternal", "signature": "String sessionStatusInternal( GatewaySessionSummary session, { required bool sessionPending, String lifecycleStatus = '', }) {" @@ -1472,7 +1543,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 359, + "line": 366, "kind": "top-level function", "name": "sessionUpdatedAtLabelInternal", "signature": "String sessionUpdatedAtLabelInternal(double? updatedAtMs) {" @@ -1480,7 +1551,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 378, + "line": 385, "kind": "top-level function", "name": "estimatedComposerWrapSectionHeightInternal", "signature": "double estimatedComposerWrapSectionHeightInternal({ required int itemCount, required double availableWidth, required double averageChipWidth, }) {" @@ -1488,7 +1559,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_task_models.dart", - "line": 394, + "line": 401, "kind": "top-level function", "name": "sessionKeysMatchInternal", "signature": "bool sessionKeysMatchInternal(String incoming, String current) {" @@ -1503,7 +1574,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 40, + "line": 38, "kind": "top-level function", "name": "executionTargetTooltipInternal", "signature": "String executionTargetTooltipInternal(AssistantExecutionTarget target) =>" @@ -1511,7 +1582,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 46, + "line": 44, "kind": "top-level function", "name": "providerTooltipInternal", "signature": "String providerTooltipInternal(SingleAgentProvider provider) => appText( '智能体 Provider: ${provider.label}', 'Agent provider: ${provider.label}', );" @@ -1519,7 +1590,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 51, + "line": 49, "kind": "top-level function", "name": "modelTooltipInternal", "signature": "String modelTooltipInternal(String modelLabel) {" @@ -1527,7 +1598,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 59, + "line": 57, "kind": "top-level function", "name": "skillsTooltipInternal", "signature": "String skillsTooltipInternal(int selectedCount) => selectedCount <= 0" @@ -1535,7 +1606,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 63, + "line": 61, "kind": "top-level function", "name": "permissionTooltipInternal", "signature": "String permissionTooltipInternal(AssistantPermissionLevel level) =>" @@ -1543,7 +1614,7 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 66, + "line": 64, "kind": "top-level function", "name": "thinkingTooltipInternal", "signature": "String thinkingTooltipInternal(String level) => appText( '推理强度: ${assistantThinkingLabelInternal(level)}', 'Reasoning: ${assistantThinkingLabelInternal(level)}', );" @@ -1551,13 +1622,320 @@ { "language": "dart", "path": "lib/features/assistant/assistant_page_tooltip_labels.dart", - "line": 71, + "line": 69, "kind": "top-level function", "name": "skillOptionTooltipInternal", "signature": "String skillOptionTooltipInternal(ComposerSkillOptionInternal option) {" } ] }, + { + "path": "lib/features/desktop/desktop_client.dart", + "language": "dart", + "symbolCount": 3, + "symbols": [ + { + "language": "dart", + "path": "lib/features/desktop/desktop_client.dart", + "line": 6, + "kind": "top-level function", + "name": "desktopConnectionStateName", + "signature": "String desktopConnectionStateName(RTCPeerConnectionState state) {" + }, + { + "language": "dart", + "path": "lib/features/desktop/desktop_client.dart", + "line": 11, + "kind": "top-level function", + "name": "desktopOfferParams", + "signature": "Map desktopOfferParams({ required String sessionId, required String? sdpOffer, required String display, required int width, required int height, required int fps, required int bitrate, required bool useGpu, }) {" + }, + { + "language": "dart", + "path": "lib/features/desktop/desktop_client.dart", + "line": 33, + "kind": "class", + "name": "DesktopClient", + "signature": "class DesktopClient {" + } + ] + }, + { + "path": "lib/features/desktop/desktop_input_handler.dart", + "language": "dart", + "symbolCount": 3, + "symbols": [ + { + "language": "dart", + "path": "lib/features/desktop/desktop_input_handler.dart", + "line": 5, + "kind": "class", + "name": "DesktopInputHandler", + "signature": "class DesktopInputHandler {" + }, + { + "language": "dart", + "path": "lib/features/desktop/desktop_input_handler.dart", + "line": 84, + "kind": "top-level function", + "name": "desktopKeyName", + "signature": "String? desktopKeyName(LogicalKeyboardKey key) {" + }, + { + "language": "dart", + "path": "lib/features/desktop/desktop_input_handler.dart", + "line": 158, + "kind": "top-level function", + "name": "desktopContentPosition", + "signature": "Offset? desktopContentPosition( Offset localPosition, Size viewportSize, { Size? contentSize, }) {" + } + ] + }, + { + "path": "lib/features/desktop/desktop_view.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/desktop/desktop_view.dart", + "line": 11, + "kind": "class", + "name": "DesktopView", + "signature": "class DesktopView extends StatefulWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_assistant_list_page.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_list_page.dart", + "line": 11, + "kind": "class", + "name": "MobileAssistantListPage", + "signature": "class MobileAssistantListPage extends StatefulWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_assistant_nav_page.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_nav_page.dart", + "line": 9, + "kind": "class", + "name": "MobileAssistantNavPage", + "signature": "class MobileAssistantNavPage extends StatefulWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_assistant_page.dart", + "language": "dart", + "symbolCount": 0, + "symbols": [] + }, + { + "path": "lib/features/mobile/mobile_assistant_page_composer.dart", + "language": "dart", + "symbolCount": 2, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_composer.dart", + "line": 12, + "kind": "class", + "name": "MobileAssistantComposer", + "signature": "class MobileAssistantComposer extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_composer.dart", + "line": 259, + "kind": "class", + "name": "MobileAssistantActionChip", + "signature": "class MobileAssistantActionChip extends StatelessWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_assistant_page_conversation.dart", + "language": "dart", + "symbolCount": 2, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_conversation.dart", + "line": 9, + "kind": "class", + "name": "MobileAssistantConversation", + "signature": "class MobileAssistantConversation extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_conversation.dart", + "line": 110, + "kind": "class", + "name": "MobileAssistantEmptyState", + "signature": "class MobileAssistantEmptyState extends StatelessWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_assistant_page_core.dart", + "language": "dart", + "symbolCount": 2, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_core.dart", + "line": 19, + "kind": "class", + "name": "MobileAssistantDetailPage", + "signature": "class MobileAssistantDetailPage extends StatefulWidget {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_core.dart", + "line": 239, + "kind": "class", + "name": "MobileAssistantStatusBanner", + "signature": "class MobileAssistantStatusBanner extends StatelessWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "language": "dart", + "symbolCount": 8, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 10, + "kind": "top-level function", + "name": "showMobileAssistantTargetSheet", + "signature": "Future showMobileAssistantTargetSheet( BuildContext context, { required AppController controller, required Future Function(AssistantExecutionTarget target) onSelected, }) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 46, + "kind": "top-level function", + "name": "showMobileAssistantProviderSheet", + "signature": "Future showMobileAssistantProviderSheet( BuildContext context, { required AppController controller, required AssistantExecutionTarget target, required SingleAgentProvider selectedProvider, required Future Function(SingleAgentProvider provider) onSelected, }) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 100, + "kind": "top-level function", + "name": "showMobileAssistantPermissionSheet", + "signature": "Future showMobileAssistantPermissionSheet( BuildContext context, { required AppController controller, }) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 125, + "kind": "top-level function", + "name": "showMobileAssistantThinkingSheet", + "signature": "Future showMobileAssistantThinkingSheet( BuildContext context, { required String value, required ValueChanged onSelected, }) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 151, + "kind": "top-level function", + "name": "showMobileAssistantSheet", + "signature": "Future showMobileAssistantSheet( BuildContext context, { required String title, required List children, }) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 196, + "kind": "top-level function", + "name": "mobileThinkingLabel", + "signature": "String mobileThinkingLabel(String value) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 206, + "kind": "top-level function", + "name": "mobilePermissionIcon", + "signature": "IconData mobilePermissionIcon(AssistantPermissionLevel level) {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_assistant_page_sheets.dart", + "line": 213, + "kind": "top-level function", + "name": "mobileProviderBadgeLabel", + "signature": "String mobileProviderBadgeLabel(SingleAgentProvider provider) {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_settings_page.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_settings_page.dart", + "line": 14, + "kind": "class", + "name": "MobileSettingsPage", + "signature": "class MobileSettingsPage extends StatefulWidget {" + } + ] + }, + { + "path": "lib/features/mobile/mobile_settings_page_widgets.dart", + "language": "dart", + "symbolCount": 4, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_settings_page_widgets.dart", + "line": 6, + "kind": "class", + "name": "MobileSettingsTabSelectorInternal", + "signature": "class MobileSettingsTabSelectorInternal extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_settings_page_widgets.dart", + "line": 44, + "kind": "class", + "name": "MobileSettingsCardInternal", + "signature": "class MobileSettingsCardInternal extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_settings_page_widgets.dart", + "line": 109, + "kind": "class", + "name": "MobileSettingsTextFieldInternal", + "signature": "class MobileSettingsTextFieldInternal extends StatelessWidget {" + }, + { + "language": "dart", + "path": "lib/features/mobile/mobile_settings_page_widgets.dart", + "line": 147, + "kind": "class", + "name": "MobileSettingsMetaRowInternal", + "signature": "class MobileSettingsMetaRowInternal extends StatelessWidget {" + } + ] + }, { "path": "lib/features/mobile/mobile_shell.dart", "language": "dart", @@ -1572,7 +1950,7 @@ { "language": "dart", "path": "lib/features/mobile/mobile_shell_core.dart", - "line": 21, + "line": 13, "kind": "enum", "name": "MobileShellTab", "signature": "enum MobileShellTab { assistant, settings }" @@ -1580,7 +1958,7 @@ { "language": "dart", "path": "lib/features/mobile/mobile_shell_core.dart", - "line": 23, + "line": 15, "kind": "extension", "name": "MobileShellTabPresentationInternal", "signature": "extension MobileShellTabPresentationInternal on MobileShellTab {" @@ -1588,7 +1966,7 @@ { "language": "dart", "path": "lib/features/mobile/mobile_shell_core.dart", - "line": 35, + "line": 27, "kind": "class", "name": "MobileShell", "signature": "class MobileShell extends StatefulWidget {" @@ -1596,7 +1974,7 @@ { "language": "dart", "path": "lib/features/mobile/mobile_shell_core.dart", - "line": 44, + "line": 36, "kind": "class", "name": "MobileShellStateInternal", "signature": "class MobileShellStateInternal extends State {" @@ -1611,13 +1989,28 @@ { "language": "dart", "path": "lib/features/mobile/mobile_shell_nav.dart", - "line": 19, + "line": 6, "kind": "class", "name": "BottomPillNavInternal", "signature": "class BottomPillNavInternal extends StatelessWidget {" } ] }, + { + "path": "lib/features/mobile/mobile_workspace_files_page.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/mobile/mobile_workspace_files_page.dart", + "line": 9, + "kind": "class", + "name": "MobileWorkspaceFilesPage", + "signature": "class MobileWorkspaceFilesPage extends StatefulWidget {" + } + ] + }, { "path": "lib/features/settings/settings_about_panel.dart", "language": "dart", @@ -1652,7 +2045,37 @@ "line": 6, "kind": "class", "name": "SettingsAccountPanel", - "signature": "class SettingsAccountPanel extends StatelessWidget {" + "signature": "class SettingsAccountPanel extends StatefulWidget {" + } + ] + }, + { + "path": "lib/features/settings/settings_archived_tasks_panel.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/settings/settings_archived_tasks_panel.dart", + "line": 7, + "kind": "class", + "name": "SettingsArchivedTasksPanel", + "signature": "class SettingsArchivedTasksPanel extends StatefulWidget {" + } + ] + }, + { + "path": "lib/features/settings/settings_logs_panel.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/settings/settings_logs_panel.dart", + "line": 8, + "kind": "class", + "name": "SettingsLogsPanel", + "signature": "class SettingsLogsPanel extends StatefulWidget {" } ] }, @@ -1670,7 +2093,7 @@ { "language": "dart", "path": "lib/features/settings/settings_page_core.dart", - "line": 19, + "line": 23, "kind": "top-level function", "name": "loadBridgeMetadataForSettingsAbout", "signature": "Future> loadBridgeMetadataForSettingsAbout({ required Uri bridgeEndpoint, required Future Function(Uri endpoint) authorizationResolver, HttpClient Function()? clientFactory, }) async {" @@ -1678,12 +2101,27 @@ { "language": "dart", "path": "lib/features/settings/settings_page_core.dart", - "line": 109, + "line": 124, "kind": "class", "name": "SettingsPage", "signature": "class SettingsPage extends StatefulWidget {" } ] + }, + { + "path": "lib/features/settings/settings_remote_desktop_panel.dart", + "language": "dart", + "symbolCount": 1, + "symbols": [ + { + "language": "dart", + "path": "lib/features/settings/settings_remote_desktop_panel.dart", + "line": 7, + "kind": "class", + "name": "SettingsRemoteDesktopPanel", + "signature": "class SettingsRemoteDesktopPanel extends StatefulWidget {" + } + ] } ] }, @@ -1783,7 +2221,7 @@ "line": 152, "kind": "enum", "name": "SettingsTab", - "signature": "enum SettingsTab { gateway }" + "signature": "enum SettingsTab { gateway, archivedTasks, remoteDesktop, logs }" }, { "language": "dart", @@ -1796,7 +2234,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 160, + "line": 163, "kind": "class", "name": "QuickAction", "signature": "class QuickAction {" @@ -1804,7 +2242,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 172, + "line": 175, "kind": "class", "name": "RecentSession", "signature": "class RecentSession {" @@ -1812,7 +2250,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 184, + "line": 187, "kind": "class", "name": "MetricSummary", "signature": "class MetricSummary {" @@ -1820,7 +2258,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 200, + "line": 203, "kind": "class", "name": "TaskSummary", "signature": "class TaskSummary {" @@ -1828,7 +2266,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 218, + "line": 221, "kind": "class", "name": "ModuleSummary", "signature": "class ModuleSummary {" @@ -1836,7 +2274,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 234, + "line": 237, "kind": "class", "name": "NodeSummary", "signature": "class NodeSummary {" @@ -1844,7 +2282,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 252, + "line": 255, "kind": "class", "name": "AgentSummary", "signature": "class AgentSummary {" @@ -1852,7 +2290,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 268, + "line": 271, "kind": "class", "name": "SkillSummary", "signature": "class SkillSummary {" @@ -1860,7 +2298,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 286, + "line": 289, "kind": "class", "name": "ConnectorSummary", "signature": "class ConnectorSummary {" @@ -1868,7 +2306,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 302, + "line": 305, "kind": "class", "name": "SecretSummary", "signature": "class SecretSummary {" @@ -1876,7 +2314,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 318, + "line": 321, "kind": "class", "name": "SecretReference", "signature": "class SecretReference {" @@ -1884,7 +2322,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 334, + "line": 337, "kind": "class", "name": "ProviderSummary", "signature": "class ProviderSummary {" @@ -1892,7 +2330,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 348, + "line": 351, "kind": "class", "name": "AuditSummary", "signature": "class AuditSummary {" @@ -1900,7 +2338,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 366, + "line": 369, "kind": "class", "name": "SettingSummary", "signature": "class SettingSummary {" @@ -1908,7 +2346,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 378, + "line": 381, "kind": "class", "name": "WorkspaceProfile", "signature": "class WorkspaceProfile {" @@ -1916,7 +2354,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 392, + "line": 395, "kind": "class", "name": "DetailPanelData", "signature": "class DetailPanelData {" @@ -1924,7 +2362,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 414, + "line": 417, "kind": "class", "name": "DetailSection", "signature": "class DetailSection {" @@ -1932,7 +2370,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 421, + "line": 424, "kind": "class", "name": "DetailItem", "signature": "class DetailItem {" @@ -1940,7 +2378,7 @@ { "language": "dart", "path": "lib/models/app_models.dart", - "line": 428, + "line": 431, "kind": "class", "name": "CommandEntry", "signature": "class CommandEntry {" @@ -1951,8 +2389,8 @@ }, { "group": "lib/runtime", - "fileCount": 66, - "symbolCount": 372, + "fileCount": 55, + "symbolCount": 333, "files": [ { "path": "lib/runtime/account_runtime_client.dart", @@ -2063,21 +2501,6 @@ } ] }, - { - "path": "lib/runtime/aris_llm_chat_client.dart", - "language": "dart", - "symbolCount": 1, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/aris_llm_chat_client.dart", - "line": 3, - "kind": "class", - "name": "ArisLlmChatClient", - "signature": "class ArisLlmChatClient {" - } - ] - }, { "path": "lib/runtime/assistant_artifacts.dart", "language": "dart", @@ -2454,7 +2877,7 @@ { "language": "dart", "path": "lib/runtime/external_code_agent_acp_desktop_transport.dart", - "line": 10, + "line": 11, "kind": "class", "name": "ExternalCodeAgentAcpDesktopTransport", "signature": "class ExternalCodeAgentAcpDesktopTransport implements ExternalCodeAgentAcpTransport {" @@ -2464,7 +2887,7 @@ { "path": "lib/runtime/file_store_support.dart", "language": "dart", - "symbolCount": 17, + "symbolCount": 18, "symbols": [ { "language": "dart", @@ -2533,7 +2956,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 220, + "line": 222, "kind": "top-level function", "name": "normalizeStoreDirectoryPath", "signature": "String normalizeStoreDirectoryPath(String path) {" @@ -2541,7 +2964,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 237, + "line": 239, "kind": "top-level function", "name": "ensureDirectory", "signature": "Future ensureDirectory(String path) async {" @@ -2549,7 +2972,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 245, + "line": 247, "kind": "top-level function", "name": "ensureOwnerOnlyDirectory", "signature": "Future ensureOwnerOnlyDirectory(Directory directory) async {" @@ -2557,7 +2980,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 252, + "line": 254, "kind": "top-level function", "name": "ensureOwnerOnlyFile", "signature": "Future ensureOwnerOnlyFile(File file) async {" @@ -2565,7 +2988,15 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 259, + "line": 261, + "kind": "top-level function", + "name": "shouldApplyUnixOwnerOnlyPermissionsInternal", + "signature": "bool shouldApplyUnixOwnerOnlyPermissionsInternal({String? operatingSystem}) {" + }, + { + "language": "dart", + "path": "lib/runtime/file_store_support.dart", + "line": 266, "kind": "top-level function", "name": "encodeStableFileKey", "signature": "String encodeStableFileKey(String key) {" @@ -2573,7 +3004,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 263, + "line": 270, "kind": "top-level function", "name": "atomicWriteString", "signature": "Future atomicWriteString( File file, String contents, { bool ownerOnly = false, }) async {" @@ -2581,7 +3012,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 285, + "line": 292, "kind": "top-level function", "name": "deleteIfExists", "signature": "Future deleteIfExists(File file) async {" @@ -2589,7 +3020,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 291, + "line": 298, "kind": "top-level function", "name": "decodeYamlDocument", "signature": "Object? decodeYamlDocument(String raw) {" @@ -2597,7 +3028,7 @@ { "language": "dart", "path": "lib/runtime/file_store_support.dart", - "line": 316, + "line": 323, "kind": "top-level function", "name": "encodeYamlDocument", "signature": "String encodeYamlDocument(Object? value) {" @@ -2607,12 +3038,12 @@ { "path": "lib/runtime/gateway_acp_client.dart", "language": "dart", - "symbolCount": 6, + "symbolCount": 5, "symbols": [ { "language": "dart", "path": "lib/runtime/gateway_acp_client.dart", - "line": 16, + "line": 18, "kind": "class", "name": "GatewayAcpException", "signature": "class GatewayAcpException implements Exception {" @@ -2620,7 +3051,7 @@ { "language": "dart", "path": "lib/runtime/gateway_acp_client.dart", - "line": 33, + "line": 35, "kind": "class", "name": "GatewayAcpCapabilities", "signature": "class GatewayAcpCapabilities {" @@ -2628,15 +3059,7 @@ { "language": "dart", "path": "lib/runtime/gateway_acp_client.dart", - "line": 91, - "kind": "class", - "name": "GatewayAcpMultiAgentRequest", - "signature": "class GatewayAcpMultiAgentRequest {" - }, - { - "language": "dart", - "path": "lib/runtime/gateway_acp_client.dart", - "line": 111, + "line": 113, "kind": "class", "name": "GatewayAcpClient", "signature": "class GatewayAcpClient {" @@ -2644,18 +3067,18 @@ { "language": "dart", "path": "lib/runtime/gateway_acp_client.dart", - "line": 1392, - "kind": "top-level function", - "name": "gatewayAcpHttpResponseTimeoutFor", - "signature": "Duration gatewayAcpHttpResponseTimeoutFor( Uri endpoint, String method, [ Map params = const {}, ]) {" + "line": 1384, + "kind": "class", + "name": "GatewayAcpRuntimeSessionClient", + "signature": "class GatewayAcpRuntimeSessionClient implements GatewayRuntimeSessionClient {" }, { "language": "dart", "path": "lib/runtime/gateway_acp_client.dart", - "line": 1412, + "line": 1478, "kind": "top-level function", - "name": "gatewayAcpTaskRuntimeBudgetMinutesForParams", - "signature": "int gatewayAcpTaskRuntimeBudgetMinutesForParams(Map params) {" + "name": "gatewayAcpHttpResponseTimeoutFor", + "signature": "Duration gatewayAcpHttpResponseTimeoutFor( Uri endpoint, String method, [ Map params = const {}, ]) {" } ] }, @@ -2668,7 +3091,7 @@ { "path": "lib/runtime/gateway_runtime_api.dart", "language": "dart", - "symbolCount": 1, + "symbolCount": 2, "symbols": [ { "language": "dart", @@ -2677,6 +3100,14 @@ "kind": "extension", "name": "GatewayRuntimeApiInternal", "signature": "extension GatewayRuntimeApiInternal on GatewayRuntime {" + }, + { + "language": "dart", + "path": "lib/runtime/gateway_runtime_api.dart", + "line": 608, + "kind": "top-level function", + "name": "skillMissingListInternal", + "signature": "List skillMissingListInternal( Map skill, String nestedKey, String flatKey, ) {" } ] }, @@ -2922,7 +3353,7 @@ { "language": "dart", "path": "lib/runtime/gateway_runtime_session_client.dart", - "line": 196, + "line": 197, "kind": "top-level function", "name": "gatewayConnectionSnapshotFromJson", "signature": "GatewayConnectionSnapshot gatewayConnectionSnapshotFromJson( Map json, ) {" @@ -2930,7 +3361,7 @@ { "language": "dart", "path": "lib/runtime/gateway_runtime_session_client.dart", - "line": 223, + "line": 224, "kind": "top-level function", "name": "runtimeLogEntryFromJson", "signature": "RuntimeLogEntry runtimeLogEntryFromJson(Map json) {" @@ -2976,21 +3407,6 @@ } ] }, - { - "path": "lib/runtime/go_multi_agent_mount_desktop_client.dart", - "language": "dart", - "symbolCount": 1, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/go_multi_agent_mount_desktop_client.dart", - "line": 5, - "kind": "class", - "name": "GoMultiAgentMountDesktopClient", - "signature": "class GoMultiAgentMountDesktopClient implements MultiAgentMountResolver {" - } - ] - }, { "path": "lib/runtime/go_runtime_dispatch_desktop_client.dart", "language": "dart", @@ -3009,12 +3425,12 @@ { "path": "lib/runtime/go_task_service_client.dart", "language": "dart", - "symbolCount": 19, + "symbolCount": 20, "symbols": [ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 3, + "line": 7, "kind": "enum", "name": "GoTaskServiceRoute", "signature": "enum GoTaskServiceRoute { externalAcpSingle, externalAcpMulti }" @@ -3022,7 +3438,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 5, + "line": 9, "kind": "enum", "name": "GoTaskServiceCollaborationMode", "signature": "enum GoTaskServiceCollaborationMode { standard, multiAgent }" @@ -3030,7 +3446,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 7, + "line": 11, "kind": "class", "name": "ExternalCodeAgentAcpCapabilities", "signature": "class ExternalCodeAgentAcpCapabilities {" @@ -3038,7 +3454,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 33, + "line": 37, "kind": "class", "name": "ExternalCodeAgentAcpRoutingResolution", "signature": "class ExternalCodeAgentAcpRoutingResolution {" @@ -3046,7 +3462,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 82, + "line": 86, "kind": "enum", "name": "ExternalCodeAgentAcpRoutingMode", "signature": "enum ExternalCodeAgentAcpRoutingMode { auto, explicit }" @@ -3054,7 +3470,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 84, + "line": 88, "kind": "class", "name": "ExternalCodeAgentAcpAvailableSkill", "signature": "class ExternalCodeAgentAcpAvailableSkill {" @@ -3062,7 +3478,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 107, + "line": 111, "kind": "class", "name": "ExternalCodeAgentAcpRoutingConfig", "signature": "class ExternalCodeAgentAcpRoutingConfig {" @@ -3070,7 +3486,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 167, + "line": 188, "kind": "class", "name": "ExternalCodeAgentAcpSkillInstallApproval", "signature": "class ExternalCodeAgentAcpSkillInstallApproval {" @@ -3078,7 +3494,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 187, + "line": 208, "kind": "class", "name": "GoTaskServiceRequest", "signature": "class GoTaskServiceRequest {" @@ -3086,7 +3502,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 359, + "line": 385, "kind": "class", "name": "GoTaskServiceUpdate", "signature": "class GoTaskServiceUpdate {" @@ -3094,7 +3510,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 388, + "line": 414, "kind": "class", "name": "GoTaskServiceArtifact", "signature": "class GoTaskServiceArtifact {" @@ -3102,7 +3518,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 443, + "line": 469, "kind": "class", "name": "GoTaskServiceResult", "signature": "class GoTaskServiceResult {" @@ -3110,7 +3526,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 577, + "line": 629, "kind": "top-level function", "name": "goTaskServiceGatewayEntryState", "signature": "String? goTaskServiceGatewayEntryState({ required AssistantExecutionTarget requestedTarget, required GoTaskServiceResult result, }) {" @@ -3118,7 +3534,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 612, + "line": 664, "kind": "abstract interface", "name": "ExternalCodeAgentAcpTransport", "signature": "abstract class ExternalCodeAgentAcpTransport {" @@ -3126,7 +3542,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 644, + "line": 703, "kind": "abstract interface", "name": "GoTaskServiceClient", "signature": "abstract class GoTaskServiceClient {" @@ -3134,7 +3550,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 678, + "line": 744, "kind": "top-level function", "name": "goTaskServiceUpdateFromAcpNotification", "signature": "GoTaskServiceUpdate? goTaskServiceUpdateFromAcpNotification( Map notification, ) {" @@ -3142,7 +3558,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 719, + "line": 785, "kind": "top-level function", "name": "goTaskServiceResultFromAcpResponse", "signature": "GoTaskServiceResult goTaskServiceResultFromAcpResponse( Map response, { required GoTaskServiceRoute route, String streamedText = '', String? completedMessage, }) {" @@ -3150,7 +3566,7 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 913, + "line": 979, "kind": "top-level function", "name": "mergeGoTaskServiceResponseResult", "signature": "Map mergeGoTaskServiceResponseResult( Map response, Map overlay, ) {" @@ -3158,10 +3574,18 @@ { "language": "dart", "path": "lib/runtime/go_task_service_client.dart", - "line": 937, + "line": 1003, "kind": "top-level function", "name": "goTaskServiceBase64Size", "signature": "int goTaskServiceBase64Size(String base64) {" + }, + { + "language": "dart", + "path": "lib/runtime/go_task_service_client.dart", + "line": 1014, + "kind": "top-level function", + "name": "goTaskServiceAttachmentSha256", + "signature": "String goTaskServiceAttachmentSha256(GatewayChatAttachmentPayload attachment) {" } ] }, @@ -3227,285 +3651,6 @@ } ] }, - { - "path": "lib/runtime/multi_agent_frameworks.dart", - "language": "dart", - "symbolCount": 3, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_frameworks.dart", - "line": 3, - "kind": "abstract interface", - "name": "FrameworkPreset", - "signature": "abstract class FrameworkPreset {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_frameworks.dart", - "line": 16, - "kind": "class", - "name": "NativeFrameworkPreset", - "signature": "class NativeFrameworkPreset extends FrameworkPreset {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_frameworks.dart", - "line": 45, - "kind": "class", - "name": "ArisFrameworkPreset", - "signature": "class ArisFrameworkPreset extends FrameworkPreset {" - } - ] - }, - { - "path": "lib/runtime/multi_agent_mount_resolver.dart", - "language": "dart", - "symbolCount": 2, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_mount_resolver.dart", - "line": 3, - "kind": "class", - "name": "ArisMountProbe", - "signature": "class ArisMountProbe {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mount_resolver.dart", - "line": 39, - "kind": "abstract interface", - "name": "MultiAgentMountResolver", - "signature": "abstract class MultiAgentMountResolver {" - } - ] - }, - { - "path": "lib/runtime/multi_agent_mounts.dart", - "language": "dart", - "symbolCount": 7, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 9, - "kind": "class", - "name": "MultiAgentMountManager", - "signature": "class MultiAgentMountManager {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 90, - "kind": "abstract interface", - "name": "CliMountAdapter", - "signature": "abstract class CliMountAdapter {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 112, - "kind": "class", - "name": "CodexMountAdapter", - "signature": "class CodexMountAdapter extends CliMountAdapter {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 154, - "kind": "class", - "name": "ClaudeMountAdapter", - "signature": "class ClaudeMountAdapter extends CliMountAdapter {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 193, - "kind": "class", - "name": "GeminiMountAdapter", - "signature": "class GeminiMountAdapter extends CliMountAdapter {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 232, - "kind": "class", - "name": "OpencodeMountAdapter", - "signature": "class OpencodeMountAdapter extends CliMountAdapter {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_mounts.dart", - "line": 273, - "kind": "class", - "name": "OpenClawMountAdapter", - "signature": "class OpenClawMountAdapter extends CliMountAdapter {" - } - ] - }, - { - "path": "lib/runtime/multi_agent_orchestrator.dart", - "language": "dart", - "symbolCount": 0, - "symbols": [] - }, - { - "path": "lib/runtime/multi_agent_orchestrator_core.dart", - "language": "dart", - "symbolCount": 1, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_core.dart", - "line": 20, - "kind": "class", - "name": "MultiAgentOrchestrator", - "signature": "class MultiAgentOrchestrator extends ChangeNotifier {" - } - ] - }, - { - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "language": "dart", - "symbolCount": 13, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 17, - "kind": "typedef", - "name": "CliProcessStarter", - "signature": "typedef CliProcessStarter = Future Function( String executable, List arguments, { Map? environment, String? workingDirectory, });" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 26, - "kind": "class", - "name": "CollaborationLogEntry", - "signature": "class CollaborationLogEntry {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 47, - "kind": "enum", - "name": "CollaborationLogLevel", - "signature": "enum CollaborationLogLevel { debug, info, warning, error, success }" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 50, - "kind": "class", - "name": "CliResult", - "signature": "class CliResult {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 65, - "kind": "class", - "name": "ArchitectResult", - "signature": "class ArchitectResult {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 78, - "kind": "class", - "name": "EngineerResult", - "signature": "class EngineerResult {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 93, - "kind": "class", - "name": "TesterResult", - "signature": "class TesterResult {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 108, - "kind": "class", - "name": "CollaborationStep", - "signature": "class CollaborationStep {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 137, - "kind": "enum", - "name": "StepStatus", - "signature": "enum StepStatus { pending, running, completed, failed }" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 140, - "kind": "class", - "name": "SubTask", - "signature": "class SubTask {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 154, - "kind": "enum", - "name": "SubTaskType", - "signature": "enum SubTaskType { design, implementation, testing, documentation, deployment }" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 157, - "kind": "class", - "name": "CollaborationAttachment", - "signature": "class CollaborationAttachment {" - }, - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_protocol.dart", - "line": 170, - "kind": "class", - "name": "CollaborationResult", - "signature": "class CollaborationResult {" - } - ] - }, - { - "path": "lib/runtime/multi_agent_orchestrator_support.dart", - "language": "dart", - "symbolCount": 1, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_support.dart", - "line": 17, - "kind": "extension", - "name": "MultiAgentOrchestratorSupportInternal", - "signature": "extension MultiAgentOrchestratorSupportInternal on MultiAgentOrchestrator {" - } - ] - }, - { - "path": "lib/runtime/multi_agent_orchestrator_workflow.dart", - "language": "dart", - "symbolCount": 1, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/multi_agent_orchestrator_workflow.dart", - "line": 17, - "kind": "extension", - "name": "MultiAgentOrchestratorWorkflowInternal", - "signature": "extension MultiAgentOrchestratorWorkflowInternal on MultiAgentOrchestrator {" - } - ] - }, { "path": "lib/runtime/opencode_config_bridge.dart", "language": "dart", @@ -3676,7 +3821,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_entities.dart", - "line": 48, + "line": 97, "kind": "class", "name": "ModelsController", "signature": "class ModelsController extends ChangeNotifier {" @@ -3684,7 +3829,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_entities.dart", - "line": 121, + "line": 170, "kind": "class", "name": "CronJobsController", "signature": "class CronJobsController extends ChangeNotifier {" @@ -3692,7 +3837,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_entities.dart", - "line": 155, + "line": 204, "kind": "class", "name": "DevicesController", "signature": "class DevicesController extends ChangeNotifier {" @@ -3771,7 +3916,7 @@ { "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", "language": "dart", - "symbolCount": 9, + "symbolCount": 11, "symbols": [ { "language": "dart", @@ -3800,7 +3945,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", - "line": 158, + "line": 160, "kind": "top-level function", "name": "restoreAccountSessionSettingsInternal", "signature": "Future restoreAccountSessionSettingsInternal( SettingsController controller, { String baseUrl = '', bool quiet = false, }) async {" @@ -3808,7 +3953,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", - "line": 225, + "line": 227, "kind": "top-level function", "name": "syncAccountSettingsInternal", "signature": "Future syncAccountSettingsInternal( SettingsController controller, { String baseUrl = '', bool quiet = false, Map profilePayloadOverride = const {}, }) async {" @@ -3816,7 +3961,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", - "line": 371, + "line": 373, "kind": "top-level function", "name": "logoutAccountSettingsInternal", "signature": "Future logoutAccountSettingsInternal( SettingsController controller, { String statusMessage = 'Signed out', bool quiet = false, }) async {" @@ -3824,7 +3969,15 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", - "line": 424, + "line": 426, + "kind": "top-level function", + "name": "markAccountBridgeRuntimeUnavailableInternal", + "signature": "Future markAccountBridgeRuntimeUnavailableInternal( SettingsController controller, { required String message, }) async {" + }, + { + "language": "dart", + "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", + "line": 444, "kind": "top-level function", "name": "cancelAccountMfaChallengeSettingsInternal", "signature": "Future cancelAccountMfaChallengeSettingsInternal( SettingsController controller, ) async {" @@ -3832,7 +3985,7 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", - "line": 454, + "line": 474, "kind": "top-level function", "name": "normalizeAccountBaseUrlSettingsInternal", "signature": "String normalizeAccountBaseUrlSettingsInternal( String raw, { String fallback = '', }) {" @@ -3840,10 +3993,18 @@ { "language": "dart", "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", - "line": 574, + "line": 594, "kind": "top-level function", "name": "resolveAcpBridgeServerEffectiveConfigInternal", "signature": "AcpBridgeServerEffectiveConfig resolveAcpBridgeServerEffectiveConfigInternal( SettingsController controller, { required AcpBridgeServerModeConfig config, }) {" + }, + { + "language": "dart", + "path": "lib/runtime/runtime_controllers_settings_account_impl.dart", + "line": 615, + "kind": "top-level function", + "name": "buildSavedAccountProfileSettingsInternal", + "signature": "Future buildSavedAccountProfileSettingsInternal( SettingsController controller, { required SettingsSnapshot settings, required String accountBaseUrl, required String accountIdentifier, required String bridgeServerUrl, required String bridgeToken, required bool isManualBridge, }) async {" } ] }, @@ -4573,7 +4734,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 36, + "line": 39, "kind": "class", "name": "GatewayInstanceSummary", "signature": "class GatewayInstanceSummary {" @@ -4581,7 +4742,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 66, + "line": 69, "kind": "class", "name": "GatewaySkillSummary", "signature": "class GatewaySkillSummary {" @@ -4589,7 +4750,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 92, + "line": 95, "kind": "class", "name": "GatewayConnectorSummary", "signature": "class GatewayConnectorSummary {" @@ -4597,7 +4758,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 120, + "line": 123, "kind": "class", "name": "GatewayModelSummary", "signature": "class GatewayModelSummary {" @@ -4605,7 +4766,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 136, + "line": 139, "kind": "class", "name": "GatewayCronJobSummary", "signature": "class GatewayCronJobSummary {" @@ -4613,7 +4774,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 162, + "line": 165, "kind": "class", "name": "GatewayDevicePairingList", "signature": "class GatewayDevicePairingList {" @@ -4621,7 +4782,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 173, + "line": 176, "kind": "class", "name": "GatewayPendingDevice", "signature": "class GatewayPendingDevice {" @@ -4629,7 +4790,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 200, + "line": 203, "kind": "class", "name": "GatewayPairedDevice", "signature": "class GatewayPairedDevice {" @@ -4637,7 +4798,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 229, + "line": 232, "kind": "class", "name": "GatewayDeviceTokenSummary", "signature": "class GatewayDeviceTokenSummary {" @@ -4645,7 +4806,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 249, + "line": 252, "kind": "class", "name": "SecretReferenceEntry", "signature": "class SecretReferenceEntry {" @@ -4653,7 +4814,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 265, + "line": 268, "kind": "class", "name": "SecretAuditEntry", "signature": "class SecretAuditEntry {" @@ -4661,7 +4822,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 305, + "line": 308, "kind": "class", "name": "DerivedTaskItem", "signature": "class DerivedTaskItem {" @@ -4669,7 +4830,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_gateway_entities.dart", - "line": 329, + "line": 332, "kind": "class", "name": "LocalDeviceIdentity", "signature": "class LocalDeviceIdentity {" @@ -4679,68 +4840,12 @@ { "path": "lib/runtime/runtime_models_multi_agent.dart", "language": "dart", - "symbolCount": 12, + "symbolCount": 3, "symbols": [ { "language": "dart", "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 13, - "kind": "enum", - "name": "MultiAgentRole", - "signature": "enum MultiAgentRole {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 19, - "kind": "enum", - "name": "MultiAgentFramework", - "signature": "enum MultiAgentFramework { native, aris }" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 21, - "kind": "extension", - "name": "MultiAgentFrameworkCopy", - "signature": "extension MultiAgentFrameworkCopy on MultiAgentFramework {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 35, - "kind": "extension", - "name": "MultiAgentRoleCopy", - "signature": "extension MultiAgentRoleCopy on MultiAgentRole {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 49, - "kind": "enum", - "name": "AiGatewayInjectionPolicy", - "signature": "enum AiGatewayInjectionPolicy { disabled, launchScoped, appManagedDefault }" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 51, - "kind": "extension", - "name": "AiGatewayInjectionPolicyCopy", - "signature": "extension AiGatewayInjectionPolicyCopy on AiGatewayInjectionPolicy {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 73, - "kind": "class", - "name": "AgentWorkerConfig", - "signature": "class AgentWorkerConfig {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 105, + "line": 1, "kind": "class", "name": "ManagedSkillEntry", "signature": "class ManagedSkillEntry {" @@ -4748,7 +4853,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 146, + "line": 42, "kind": "class", "name": "ManagedMcpServerEntry", "signature": "class ManagedMcpServerEntry {" @@ -4756,26 +4861,10 @@ { "language": "dart", "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 222, + "line": 118, "kind": "class", "name": "ManagedMountTargetState", "signature": "class ManagedMountTargetState {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 431, - "kind": "class", - "name": "MultiAgentConfig", - "signature": "class MultiAgentConfig {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_multi_agent.dart", - "line": 788, - "kind": "class", - "name": "MultiAgentRunEvent", - "signature": "class MultiAgentRunEvent {" } ] }, @@ -4949,7 +5038,7 @@ { "path": "lib/runtime/runtime_models_runtime_payloads.dart", "language": "dart", - "symbolCount": 31, + "symbolCount": 32, "symbols": [ { "language": "dart", @@ -5010,15 +5099,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 391, - "kind": "class", - "name": "AssistantThreadSkillEntry", - "signature": "class AssistantThreadSkillEntry {" - }, - { - "language": "dart", - "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 457, + "line": 393, "kind": "enum", "name": "ThreadRealm", "signature": "enum ThreadRealm { local, remote }" @@ -5026,7 +5107,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 459, + "line": 395, "kind": "extension", "name": "ThreadRealmCopy", "signature": "extension ThreadRealmCopy on ThreadRealm {" @@ -5034,7 +5115,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 468, + "line": 404, "kind": "enum", "name": "ThreadSubjectType", "signature": "enum ThreadSubjectType { tenant, user }" @@ -5042,7 +5123,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 470, + "line": 406, "kind": "extension", "name": "ThreadSubjectTypeCopy", "signature": "extension ThreadSubjectTypeCopy on ThreadSubjectType {" @@ -5050,7 +5131,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 479, + "line": 415, "kind": "enum", "name": "WorkspaceKind", "signature": "enum WorkspaceKind { localFs, remoteFs }" @@ -5058,7 +5139,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 481, + "line": 417, "kind": "extension", "name": "WorkspaceKindCopy", "signature": "extension WorkspaceKindCopy on WorkspaceKind {" @@ -5066,7 +5147,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 500, + "line": 436, "kind": "top-level function", "name": "isLegacyAutoThreadExecutionModeValue", "signature": "bool isLegacyAutoThreadExecutionModeValue(String? value) {" @@ -5074,7 +5155,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 504, + "line": 440, "kind": "enum", "name": "ThreadExecutionMode", "signature": "enum ThreadExecutionMode { agent, gateway }" @@ -5082,7 +5163,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 506, + "line": 442, "kind": "extension", "name": "ThreadExecutionModeCopy", "signature": "extension ThreadExecutionModeCopy on ThreadExecutionMode {" @@ -5090,7 +5171,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 515, + "line": 451, "kind": "enum", "name": "ThreadSelectionSource", "signature": "enum ThreadSelectionSource { inherited, explicit }" @@ -5098,7 +5179,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 517, + "line": 453, "kind": "extension", "name": "ThreadSelectionSourceCopy", "signature": "extension ThreadSelectionSourceCopy on ThreadSelectionSource {" @@ -5106,7 +5187,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 526, + "line": 462, "kind": "class", "name": "ThreadOwnerScope", "signature": "class ThreadOwnerScope {" @@ -5114,7 +5195,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 574, + "line": 510, "kind": "class", "name": "WorkspaceBinding", "signature": "class WorkspaceBinding {" @@ -5122,7 +5203,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 638, + "line": 574, "kind": "class", "name": "ExecutionBinding", "signature": "class ExecutionBinding {" @@ -5130,7 +5211,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 702, + "line": 638, "kind": "top-level function", "name": "threadExecutionModeFromAssistantExecutionTarget", "signature": "ThreadExecutionMode threadExecutionModeFromAssistantExecutionTarget( AssistantExecutionTarget target, ) {" @@ -5138,7 +5219,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 711, + "line": 647, "kind": "top-level function", "name": "assistantExecutionTargetFromExecutionMode", "signature": "AssistantExecutionTarget assistantExecutionTargetFromExecutionMode( ThreadExecutionMode mode, ) {" @@ -5146,7 +5227,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 720, + "line": 656, "kind": "top-level function", "name": "workspaceRefKindFromWorkspaceKind", "signature": "WorkspaceRefKind workspaceRefKindFromWorkspaceKind(WorkspaceKind kind) {" @@ -5154,7 +5235,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 727, + "line": 663, "kind": "class", "name": "ThreadContextState", "signature": "class ThreadContextState {" @@ -5162,7 +5243,23 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 935, + "line": 851, + "kind": "class", + "name": "TaskInputAttachmentRecord", + "signature": "class TaskInputAttachmentRecord {" + }, + { + "language": "dart", + "path": "lib/runtime/runtime_models_runtime_payloads.dart", + "line": 915, + "kind": "class", + "name": "OpenClawTaskAssociation", + "signature": "class OpenClawTaskAssociation {" + }, + { + "language": "dart", + "path": "lib/runtime/runtime_models_runtime_payloads.dart", + "line": 1090, "kind": "class", "name": "ThreadLifecycleState", "signature": "class ThreadLifecycleState {" @@ -5170,7 +5267,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 991, + "line": 1146, "kind": "class", "name": "TaskThread", "signature": "class TaskThread {" @@ -5178,7 +5275,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 1332, + "line": 1496, "kind": "top-level function", "name": "isNewConversationTaskTitle", "signature": "bool isNewConversationTaskTitle(String title) {" @@ -5186,7 +5283,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 1337, + "line": 1501, "kind": "top-level function", "name": "firstUserMessageTaskTitle", "signature": "String firstUserMessageTaskTitle( Iterable messages, { String fallback = '', }) {" @@ -5194,7 +5291,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_runtime_payloads.dart", - "line": 1359, + "line": 1523, "kind": "top-level function", "name": "derivePersistedTaskTitle", "signature": "String derivePersistedTaskTitle( String currentTitle, Iterable messages, { String fallback = '', bool hasCustomTitle = false, }) {" @@ -5209,7 +5306,7 @@ { "language": "dart", "path": "lib/runtime/runtime_models_settings_snapshot.dart", - "line": 17, + "line": 16, "kind": "class", "name": "SettingsSnapshot", "signature": "class SettingsSnapshot {" @@ -5331,61 +5428,6 @@ "signature": "class SettingsStore {" } ] - }, - { - "path": "lib/runtime/skill_directory_access.dart", - "language": "dart", - "symbolCount": 6, - "symbols": [ - { - "language": "dart", - "path": "lib/runtime/skill_directory_access.dart", - "line": 10, - "kind": "abstract interface", - "name": "SkillDirectoryAccessService", - "signature": "abstract class SkillDirectoryAccessService {" - }, - { - "language": "dart", - "path": "lib/runtime/skill_directory_access.dart", - "line": 33, - "kind": "class", - "name": "SkillDirectoryAccessHandle", - "signature": "class SkillDirectoryAccessHandle {" - }, - { - "language": "dart", - "path": "lib/runtime/skill_directory_access.dart", - "line": 47, - "kind": "top-level function", - "name": "createSkillDirectoryAccessService", - "signature": "SkillDirectoryAccessService createSkillDirectoryAccessService() {" - }, - { - "language": "dart", - "path": "lib/runtime/skill_directory_access.dart", - "line": 58, - "kind": "class", - "name": "UnsupportedSkillDirectoryAccessService", - "signature": "class UnsupportedSkillDirectoryAccessService implements SkillDirectoryAccessService {" - }, - { - "language": "dart", - "path": "lib/runtime/skill_directory_access.dart", - "line": 90, - "kind": "class", - "name": "FileSelectorSkillDirectoryAccessService", - "signature": "class FileSelectorSkillDirectoryAccessService implements SkillDirectoryAccessService {" - }, - { - "language": "dart", - "path": "lib/runtime/skill_directory_access.dart", - "line": 154, - "kind": "class", - "name": "MacOsSkillDirectoryAccessService", - "signature": "class MacOsSkillDirectoryAccessService implements SkillDirectoryAccessService {" - } - ] } ] }, diff --git a/docs/architecture/public-api/_generated/public-symbol-inventory.md b/docs/architecture/public-api/_generated/public-symbol-inventory.md index fc71ba08..8c41c89a 100644 --- a/docs/architecture/public-api/_generated/public-symbol-inventory.md +++ b/docs/architecture/public-api/_generated/public-symbol-inventory.md @@ -5,18 +5,18 @@ > Scope: `lib/app`, `lib/runtime`, `lib/models`, `lib/features/**`, `lib/theme`, `rust/src`. > Excludes private `_` symbols and non-top-level Dart members. -- Generated at: `2026-05-13T08:37:25.180831+00:00` -- Files scanned: `129` -- Public symbols extracted: `603` +- Generated at: `2026-06-04T06:23:23.858629+00:00` +- Files scanned: `132` +- Public symbols extracted: `590` ## Group Summary | Group | Files | Public Symbols | | --- | ---: | ---: | -| `lib/app` | 30 | 68 | -| `lib/features` | 26 | 103 | +| `lib/app` | 31 | 69 | +| `lib/features` | 39 | 128 | | `lib/models` | 1 | 31 | -| `lib/runtime` | 66 | 372 | +| `lib/runtime` | 55 | 333 | | `lib/theme` | 2 | 13 | | `rust/src` | 4 | 16 | @@ -24,19 +24,19 @@ | Scope | Files | Public Symbols | | --- | ---: | ---: | -| `lib/app` | 30 | 68 | -| `lib/runtime` | 66 | 372 | +| `lib/app` | 31 | 69 | +| `lib/runtime` | 55 | 333 | | `lib/models` | 1 | 31 | -| `lib/features/assistant` | 16 | 79 | -| `lib/features/settings` | 4 | 5 | -| `lib/features/mobile` | 6 | 19 | +| `lib/features/assistant` | 16 | 86 | +| `lib/features/settings` | 7 | 8 | +| `lib/features/mobile` | 13 | 27 | | `lib/theme` | 2 | 13 | | `rust/src` | 4 | 16 | ## lib/app -- Files: `30` -- Public symbols: `68` +- Files: `31` +- Public symbols: `69` ### `lib/app/app.dart` @@ -77,9 +77,9 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 57 | `enum` | `CodexCooperationState` | `enum CodexCooperationState { notStarted, bridgeOnly, registered }` | -| 59 | `class` | `SingleAgentSkillScanRootInternal` | `class SingleAgentSkillScanRootInternal {` | -| 91 | `class` | `AppController` | `class AppController extends ChangeNotifier {` | +| 53 | `enum` | `CodexCooperationState` | `enum CodexCooperationState { notStarted, bridgeOnly, registered }` | +| 55 | `class` | `AppController` | `class AppController extends ChangeNotifier {` | +| 599 | `top-level function` | `resolveUserHomeDirectoryFromControllerEnvironmentInternal` | `String resolveUserHomeDirectoryFromControllerEnvironmentInternal( Map? environment, ) {` | ### `lib/app/app_controller_desktop_external_acp_routing.dart` @@ -88,7 +88,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 39 | `extension` | `AppControllerDesktopExternalAcpRouting` | `extension AppControllerDesktopExternalAcpRouting on AppController {` | +| 37 | `extension` | `AppControllerDesktopExternalAcpRouting` | `extension AppControllerDesktopExternalAcpRouting on AppController {` | ### `lib/app/app_controller_desktop_gateway.dart` @@ -97,7 +97,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 48 | `extension` | `AppControllerDesktopGateway` | `extension AppControllerDesktopGateway on AppController {` | +| 46 | `extension` | `AppControllerDesktopGateway` | `extension AppControllerDesktopGateway on AppController {` | ### `lib/app/app_controller_desktop_navigation.dart` @@ -106,7 +106,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 47 | `extension` | `AppControllerDesktopNavigation` | `extension AppControllerDesktopNavigation on AppController {` | +| 45 | `extension` | `AppControllerDesktopNavigation` | `extension AppControllerDesktopNavigation on AppController {` | ### `lib/app/app_controller_desktop_runtime_coordination_impl.dart` @@ -115,16 +115,16 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 48 | `top-level function` | `refreshAcpCapabilitiesRuntimeInternal` | `Future refreshAcpCapabilitiesRuntimeInternal( AppController controller, { bool forceRefresh = false, bool persistMountTargets = false, }) async {` | -| 98 | `top-level function` | `refreshSingleAgentCapabilitiesRuntimeInternal` | `Future refreshSingleAgentCapabilitiesRuntimeInternal( AppController controller, { bool forceRefresh = false, }) async {` | -| 170 | `top-level function` | `assistantWorkingDirectoryForSessionRuntimeInternal` | `String? assistantWorkingDirectoryForSessionRuntimeInternal( AppController controller, String sessionKey, ) {` | -| 181 | `top-level function` | `assistantRemoteWorkingDirectoryHintForSessionRuntimeInternal` | `String? assistantRemoteWorkingDirectoryHintForSessionRuntimeInternal( AppController controller, String sessionKey, ) {` | -| 200 | `top-level function` | `resolveLocalAssistantWorkingDirectoryForSessionRuntimeInternal` | `String? resolveLocalAssistantWorkingDirectoryForSessionRuntimeInternal( AppController controller, String sessionKey, { bool requireLocalExistence = true, }) {` | -| 223 | `top-level function` | `buildCodeAgentNodeStateRuntimeInternal` | `CodeAgentNodeState buildCodeAgentNodeStateRuntimeInternal( AppController controller, { AssistantExecutionTarget? executionTarget, }) {` | -| 239 | `top-level function` | `bridgeGatewayModeRuntimeInternal` | `GatewayMode bridgeGatewayModeRuntimeInternal(AppController controller) {` | -| 249 | `top-level function` | `ensureCodexGatewayRegistrationRuntimeInternal` | `Future ensureCodexGatewayRegistrationRuntimeInternal( AppController controller, ) async {` | -| 317 | `top-level function` | `clearCodexGatewayRegistrationRuntimeInternal` | `void clearCodexGatewayRegistrationRuntimeInternal(AppController controller) {` | -| 327 | `top-level function` | `recomputeTasksRuntimeInternal` | `void recomputeTasksRuntimeInternal(AppController controller) {` | +| 46 | `top-level function` | `refreshAcpCapabilitiesRuntimeInternal` | `Future refreshAcpCapabilitiesRuntimeInternal( AppController controller, { bool forceRefresh = false, bool persistMountTargets = false, }) async {` | +| 80 | `top-level function` | `refreshSingleAgentCapabilitiesRuntimeInternal` | `Future refreshSingleAgentCapabilitiesRuntimeInternal( AppController controller, { bool forceRefresh = false, }) async {` | +| 104 | `top-level function` | `assistantWorkingDirectoryForSessionRuntimeInternal` | `String? assistantWorkingDirectoryForSessionRuntimeInternal( AppController controller, String sessionKey, ) {` | +| 128 | `top-level function` | `assistantRemoteWorkingDirectoryHintForSessionRuntimeInternal` | `String? assistantRemoteWorkingDirectoryHintForSessionRuntimeInternal( AppController controller, String sessionKey, ) {` | +| 147 | `top-level function` | `resolveLocalAssistantWorkingDirectoryForSessionRuntimeInternal` | `String? resolveLocalAssistantWorkingDirectoryForSessionRuntimeInternal( AppController controller, String sessionKey, { bool requireLocalExistence = true, }) {` | +| 170 | `top-level function` | `buildCodeAgentNodeStateRuntimeInternal` | `CodeAgentNodeState buildCodeAgentNodeStateRuntimeInternal( AppController controller, { AssistantExecutionTarget? executionTarget, }) {` | +| 186 | `top-level function` | `bridgeGatewayModeRuntimeInternal` | `GatewayMode bridgeGatewayModeRuntimeInternal(AppController controller) {` | +| 196 | `top-level function` | `ensureCodexGatewayRegistrationRuntimeInternal` | `Future ensureCodexGatewayRegistrationRuntimeInternal( AppController controller, ) async {` | +| 264 | `top-level function` | `clearCodexGatewayRegistrationRuntimeInternal` | `void clearCodexGatewayRegistrationRuntimeInternal(AppController controller) {` | +| 274 | `top-level function` | `recomputeTasksRuntimeInternal` | `void recomputeTasksRuntimeInternal(AppController controller) {` | ### `lib/app/app_controller_desktop_runtime_exceptions.dart` @@ -143,7 +143,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 53 | `extension` | `AppControllerDesktopRuntimeHelpers` | `extension AppControllerDesktopRuntimeHelpers on AppController {` | +| 51 | `extension` | `AppControllerDesktopRuntimeHelpers` | `extension AppControllerDesktopRuntimeHelpers on AppController {` | ### `lib/app/app_controller_desktop_settings.dart` @@ -152,7 +152,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 48 | `extension` | `AppControllerDesktopSettings` | `extension AppControllerDesktopSettings on AppController {` | +| 46 | `extension` | `AppControllerDesktopSettings` | `extension AppControllerDesktopSettings on AppController {` | ### `lib/app/app_controller_desktop_settings_runtime.dart` @@ -161,7 +161,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 50 | `extension` | `AppControllerDesktopSettingsRuntime` | `extension AppControllerDesktopSettingsRuntime on AppController {` | +| 48 | `extension` | `AppControllerDesktopSettingsRuntime` | `extension AppControllerDesktopSettingsRuntime on AppController {` | ### `lib/app/app_controller_desktop_skill_permissions.dart` @@ -170,7 +170,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 48 | `extension` | `AppControllerDesktopSkillPermissions` | `extension AppControllerDesktopSkillPermissions on AppController {` | +| 46 | `extension` | `AppControllerDesktopSkillPermissions` | `extension AppControllerDesktopSkillPermissions on AppController {` | ### `lib/app/app_controller_desktop_thread_actions.dart` @@ -179,7 +179,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 51 | `extension` | `AppControllerDesktopThreadActions` | `extension AppControllerDesktopThreadActions on AppController {` | +| 50 | `extension` | `AppControllerDesktopThreadActions` | `extension AppControllerDesktopThreadActions on AppController {` | ### `lib/app/app_controller_desktop_thread_binding.dart` @@ -188,9 +188,9 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 47 | `class` | `DesktopThreadBindingSnapshotInternal` | `class DesktopThreadBindingSnapshotInternal {` | -| 76 | `extension` | `AppControllerDesktopThreadBinding` | `extension AppControllerDesktopThreadBinding on AppController {` | -| 337 | `top-level function` | `pickDraftThreadExecutionTargetInternal` | `AssistantExecutionTarget pickDraftThreadExecutionTargetInternal({ required AssistantExecutionTarget currentTarget, required Iterable visibleTargets, bool? localWorkspaceAvailable, }) {` | +| 45 | `class` | `DesktopThreadBindingSnapshotInternal` | `class DesktopThreadBindingSnapshotInternal {` | +| 74 | `extension` | `AppControllerDesktopThreadBinding` | `extension AppControllerDesktopThreadBinding on AppController {` | +| 351 | `top-level function` | `pickDraftThreadExecutionTargetInternal` | `AssistantExecutionTarget pickDraftThreadExecutionTargetInternal({ required AssistantExecutionTarget currentTarget, required Iterable visibleTargets, bool? localWorkspaceAvailable, }) {` | ### `lib/app/app_controller_desktop_thread_sessions.dart` @@ -199,31 +199,28 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 55 | `top-level function` | `resolveGatewayThreadConnectionStateInternal` | `AssistantThreadConnectionState resolveGatewayThreadConnectionStateInternal({ required AssistantExecutionTarget target, required bool bridgeReady, required String bridgeLabel, required AccountSyncState? accountSyncState, required bool accountSignedIn, required bool bridgeConfigured, bool bridgeDiscoveryAttempted = false, String bridgeDiscoveryError = '', bool providerCatalogEmpty = false, }) {` | -| 180 | `top-level function` | `bridgeCapabilityReadyForExecutionTargetInternal` | `bool bridgeCapabilityReadyForExecutionTargetInternal({ required AssistantExecutionTarget target, required bool bridgeConfigured, required List providers, required List availableTargets, }) {` | -| 192 | `extension` | `AppControllerDesktopThreadSessions` | `extension AppControllerDesktopThreadSessions on AppController {` | -| 655 | `top-level function` | `resolveAssistantExecutionTargetFromRecordForTest` | `AssistantExecutionTarget resolveAssistantExecutionTargetFromRecordForTest( TaskThread? record, { required AssistantExecutionTarget defaultExecutionTarget, }) {` | +| 53 | `top-level function` | `resolveGatewayThreadConnectionStateInternal` | `AssistantThreadConnectionState resolveGatewayThreadConnectionStateInternal({ required AssistantExecutionTarget target, required bool bridgeReady, required String bridgeLabel, required AccountSyncState? accountSyncState, required bool accountSignedIn, required bool bridgeConfigured, bool bridgeDiscoveryAttempted = false, String bridgeDiscoveryError = '', bool providerCatalogEmpty = false, }) {` | +| 178 | `top-level function` | `bridgeCapabilityReadyForExecutionTargetInternal` | `bool bridgeCapabilityReadyForExecutionTargetInternal({ required AssistantExecutionTarget target, required bool bridgeConfigured, required List providers, required List availableTargets, }) {` | +| 190 | `extension` | `AppControllerDesktopThreadSessions` | `extension AppControllerDesktopThreadSessions on AppController {` | +| 650 | `top-level function` | `resolveAssistantExecutionTargetFromRecordForTest` | `AssistantExecutionTarget resolveAssistantExecutionTargetFromRecordForTest( TaskThread? record, { required AssistantExecutionTarget defaultExecutionTarget, }) {` | ### `lib/app/app_controller_desktop_thread_sessions_collaboration_impl.dart` - Language: `dart` -- Public symbols: `13` +- Public symbols: `10` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 49 | `top-level function` | `loadAiGatewayApiKeyThreadSessionInternal` | `Future loadAiGatewayApiKeyThreadSessionInternal( AppController controller, ) async {` | -| 55 | `top-level function` | `saveMultiAgentConfigThreadSessionInternal` | `Future saveMultiAgentConfigThreadSessionInternal( AppController controller, MultiAgentConfig config, ) async {` | -| 72 | `top-level function` | `refreshMultiAgentMountsThreadSessionInternal` | `Future refreshMultiAgentMountsThreadSessionInternal( AppController controller, { bool sync = false, }) async {` | -| 97 | `top-level function` | `runMultiAgentCollaborationThreadSessionInternal` | `Future runMultiAgentCollaborationThreadSessionInternal( AppController controller, { required String rawPrompt, required String composedPrompt, required List attachments, required List selectedSkillLabels, }) async {` | -| 283 | `top-level function` | `openOnlineWorkspaceThreadSessionInternal` | `Future openOnlineWorkspaceThreadSessionInternal( AppController controller, ) async {` | -| 304 | `top-level function` | `aiGatewayModelChoicesThreadSessionInternal` | `List aiGatewayModelChoicesThreadSessionInternal( AppController controller, ) {` | -| 310 | `top-level function` | `connectedGatewayModelChoicesThreadSessionInternal` | `List connectedGatewayModelChoicesThreadSessionInternal( AppController controller, ) {` | -| 322 | `top-level function` | `assistantModelChoicesThreadSessionInternal` | `List assistantModelChoicesThreadSessionInternal( AppController controller, ) {` | -| 331 | `top-level function` | `assistantModelChoicesForSessionThreadSessionInternal` | `List assistantModelChoicesForSessionThreadSessionInternal( AppController controller, String sessionKey, ) {` | -| 346 | `top-level function` | `resolvedDefaultModelThreadSessionInternal` | `String resolvedDefaultModelThreadSessionInternal(AppController controller) {` | -| 368 | `top-level function` | `canQuickConnectGatewayThreadSessionInternal` | `bool canQuickConnectGatewayThreadSessionInternal(AppController controller) {` | -| 388 | `top-level function` | `joinConnectionPartsThreadSessionInternal` | `String joinConnectionPartsThreadSessionInternal(List parts) {` | -| 396 | `top-level function` | `gatewayAddressLabelThreadSessionInternal` | `String gatewayAddressLabelThreadSessionInternal( GatewayConnectionProfile profile, ) {` | +| 47 | `top-level function` | `loadAiGatewayApiKeyThreadSessionInternal` | `Future loadAiGatewayApiKeyThreadSessionInternal( AppController controller, ) async {` | +| 53 | `top-level function` | `openOnlineWorkspaceThreadSessionInternal` | `Future openOnlineWorkspaceThreadSessionInternal( AppController controller, ) async {` | +| 74 | `top-level function` | `aiGatewayModelChoicesThreadSessionInternal` | `List aiGatewayModelChoicesThreadSessionInternal( AppController controller, ) {` | +| 80 | `top-level function` | `connectedGatewayModelChoicesThreadSessionInternal` | `List connectedGatewayModelChoicesThreadSessionInternal( AppController controller, ) {` | +| 92 | `top-level function` | `assistantModelChoicesThreadSessionInternal` | `List assistantModelChoicesThreadSessionInternal( AppController controller, ) {` | +| 101 | `top-level function` | `assistantModelChoicesForSessionThreadSessionInternal` | `List assistantModelChoicesForSessionThreadSessionInternal( AppController controller, String sessionKey, ) {` | +| 116 | `top-level function` | `resolvedDefaultModelThreadSessionInternal` | `String resolvedDefaultModelThreadSessionInternal(AppController controller) {` | +| 138 | `top-level function` | `canQuickConnectGatewayThreadSessionInternal` | `bool canQuickConnectGatewayThreadSessionInternal(AppController controller) {` | +| 158 | `top-level function` | `joinConnectionPartsThreadSessionInternal` | `String joinConnectionPartsThreadSessionInternal(List parts) {` | +| 166 | `top-level function` | `gatewayAddressLabelThreadSessionInternal` | `String gatewayAddressLabelThreadSessionInternal( GatewayConnectionProfile profile, ) {` | ### `lib/app/app_controller_desktop_thread_storage.dart` @@ -232,7 +229,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 47 | `extension` | `AppControllerDesktopThreadStorage` | `extension AppControllerDesktopThreadStorage on AppController {` | +| 45 | `extension` | `AppControllerDesktopThreadStorage` | `extension AppControllerDesktopThreadStorage on AppController {` | ### `lib/app/app_controller_desktop_workspace_execution.dart` @@ -241,7 +238,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 48 | `extension` | `AppControllerDesktopWorkspaceExecution` | `extension AppControllerDesktopWorkspaceExecution on AppController {` | +| 46 | `extension` | `AppControllerDesktopWorkspaceExecution` | `extension AppControllerDesktopWorkspaceExecution on AppController {` | ### `lib/app/app_controller_openclaw_task_queue.dart` @@ -250,7 +247,17 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 9 | `class` | `OpenClawGatewayQueuedTurnInternal` | `class OpenClawGatewayQueuedTurnInternal {` | +| 7 | `class` | `OpenClawGatewayQueuedTurnInternal` | `class OpenClawGatewayQueuedTurnInternal {` | + +### `lib/app/app_logger.dart` + +- Language: `dart` +- Public symbols: `2` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 3 | `class` | `AppLogger` | `class AppLogger {` | +| 31 | `top-level function` | `appLog` | `void appLog(String message) {` | ### `lib/app/app_metadata.dart` @@ -314,10 +321,10 @@ _No extracted public top-level symbols._ | 14 | `enum` | `UiFeatureBuildMode` | `enum UiFeatureBuildMode { debug, profile, release }` | | 16 | `top-level function` | `currentUiFeatureBuildMode` | `UiFeatureBuildMode currentUiFeatureBuildMode() {` | | 26 | `top-level function` | `resolveUiFeaturePlatformFromContext` | `UiFeaturePlatform resolveUiFeaturePlatformFromContext(BuildContext context) {` | -| 57 | `class` | `UiFeatureFlag` | `class UiFeatureFlag {` | -| 89 | `class` | `UiFeatureManifest` | `class UiFeatureManifest {` | -| 336 | `class` | `UiFeatureAccess` | `class UiFeatureAccess {` | -| 466 | `class` | `UiFeatureManifestLoader` | `class UiFeatureManifestLoader {` | +| 60 | `class` | `UiFeatureFlag` | `class UiFeatureFlag {` | +| 92 | `class` | `UiFeatureManifest` | `class UiFeatureManifest {` | +| 339 | `class` | `UiFeatureAccess` | `class UiFeatureAccess {` | +| 476 | `class` | `UiFeatureManifestLoader` | `class UiFeatureManifestLoader {` | ### `lib/app/workspace_navigation.dart` @@ -332,19 +339,31 @@ _No extracted public top-level symbols._ ### `lib/app/workspace_page_registry.dart` - Language: `dart` -- Public symbols: `4` +- Public symbols: `6` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 8 | `enum` | `WorkspacePageSurface` | `enum WorkspacePageSurface { desktop, mobile }` | -| 10 | `typedef` | `WorkspacePageBuilder` | `typedef WorkspacePageBuilder = Widget Function( AppController controller, ValueChanged onOpenDetail, );` | -| 16 | `class` | `WorkspacePageSpec` | `class WorkspacePageSpec {` | -| 56 | `top-level function` | `buildWorkspacePage` | `Widget buildWorkspacePage({ required WorkspaceDestination destination, required AppController controller, required ValueChanged onOpenDetail, required WorkspacePageSurface surface, }) {` | +| 10 | `enum` | `WorkspacePageSurface` | `enum WorkspacePageSurface { desktop, mobile }` | +| 12 | `class` | `MobileWorkspaceActions` | `class MobileWorkspaceActions {` | +| 20 | `typedef` | `WorkspacePageBuilder` | `typedef WorkspacePageBuilder = Widget Function( AppController controller, ValueChanged onOpenDetail, );` | +| 26 | `typedef` | `MobileWorkspacePageBuilder` | `typedef MobileWorkspacePageBuilder = Widget Function( AppController controller, ValueChanged onOpenDetail, MobileWorkspaceActions mobileActions, );` | +| 33 | `class` | `WorkspacePageSpec` | `class WorkspacePageSpec {` | +| 72 | `top-level function` | `buildWorkspacePage` | `Widget buildWorkspacePage({ required WorkspaceDestination destination, required AppController controller, required ValueChanged onOpenDetail, required WorkspacePageSurface surface, MobileWorkspaceActions mobileActions = const MobileWorkspaceActions(), }) {` | ## lib/features -- Files: `26` -- Public symbols: `103` +- Files: `39` +- Public symbols: `128` + +### `lib/features/assistant/assistant_attachment_payloads.dart` + +- Language: `dart` +- Public symbols: `2` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 12 | `class` | `AssistantAttachmentLimitException` | `class AssistantAttachmentLimitException implements Exception {` | +| 93 | `top-level function` | `formatAssistantAttachmentBytesInternal` | `String formatAssistantAttachmentBytesInternal(int bytes) {` | ### `lib/features/assistant/assistant_page.dart` @@ -360,12 +379,12 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `class` | `AssistantTaskRailInternal` | `class AssistantTaskRailInternal extends StatefulWidget {` | -| 73 | `class` | `AssistantTaskRailStateInternal` | `class AssistantTaskRailStateInternal extends State {` | -| 283 | `top-level function` | `groupTasksForRailInternal` | `List groupTasksForRailInternal( List tasks, List visibleExecutionTargets, ) {` | -| 313 | `class` | `AssistantTaskTileInternal` | `class AssistantTaskTileInternal extends StatelessWidget {` | -| 462 | `class` | `AssistantTaskGroupHeaderInternal` | `class AssistantTaskGroupHeaderInternal extends StatelessWidget {` | -| 526 | `class` | `AssistantEmptyStateInternal` | `class AssistantEmptyStateInternal extends StatelessWidget {` | +| 38 | `class` | `AssistantTaskRailInternal` | `class AssistantTaskRailInternal extends StatefulWidget {` | +| 71 | `class` | `AssistantTaskRailStateInternal` | `class AssistantTaskRailStateInternal extends State {` | +| 281 | `top-level function` | `groupTasksForRailInternal` | `List groupTasksForRailInternal( List tasks, List visibleExecutionTargets, ) {` | +| 311 | `class` | `AssistantTaskTileInternal` | `class AssistantTaskTileInternal extends StatelessWidget {` | +| 460 | `class` | `AssistantTaskGroupHeaderInternal` | `class AssistantTaskGroupHeaderInternal extends StatelessWidget {` | +| 524 | `class` | `AssistantEmptyStateInternal` | `class AssistantEmptyStateInternal extends StatelessWidget {` | ### `lib/features/assistant/assistant_page_components_core.dart` @@ -381,8 +400,8 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `class` | `ComposerBarInternal` | `class ComposerBarInternal extends StatefulWidget {` | -| 90 | `class` | `ComposerBarStateInternal` | `class ComposerBarStateInternal extends State {` | +| 38 | `class` | `ComposerBarInternal` | `class ComposerBarInternal extends StatefulWidget {` | +| 88 | `class` | `ComposerBarStateInternal` | `class ComposerBarStateInternal extends State {` | ### `lib/features/assistant/assistant_page_composer_clipboard.dart` @@ -391,32 +410,29 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `class` | `ComposerAttachmentInternal` | `class ComposerAttachmentInternal {` | -| 82 | `class` | `AssistantPasteIntent` | `class AssistantPasteIntent extends Intent {` | -| 86 | `top-level function` | `readClipboardImageAsXFileInternal` | `Future readClipboardImageAsXFileInternal() async {` | -| 118 | `top-level function` | `readClipboardImageForFormatInternal` | `Future readClipboardImageForFormatInternal( ClipboardReader reader, { required FileFormat format, required String extension, required String mimeType, }) async {` | -| 171 | `top-level function` | `resolveClipboardAttachmentTempDirectoryInternal` | `Future resolveClipboardAttachmentTempDirectoryInternal() async {` | - -### `lib/features/assistant/assistant_page_composer_skill_models.dart` - -- Language: `dart` -- Public symbols: `2` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 40 | `top-level function` | `skillOptionFromGatewayInternal` | `ComposerSkillOptionInternal skillOptionFromGatewayInternal( GatewaySkillSummary skill, ) {` | -| 61 | `class` | `ComposerSkillOptionInternal` | `class ComposerSkillOptionInternal {` | +| 38 | `class` | `ComposerAttachmentInternal` | `class ComposerAttachmentInternal {` | +| 80 | `class` | `AssistantPasteIntent` | `class AssistantPasteIntent extends Intent {` | +| 84 | `top-level function` | `readClipboardImageAsXFileInternal` | `Future readClipboardImageAsXFileInternal() async {` | +| 116 | `top-level function` | `readClipboardImageForFormatInternal` | `Future readClipboardImageForFormatInternal( ClipboardReader reader, { required FileFormat format, required String extension, required String mimeType, }) async {` | +| 169 | `top-level function` | `resolveClipboardAttachmentTempDirectoryInternal` | `Future resolveClipboardAttachmentTempDirectoryInternal() async {` | ### `lib/features/assistant/assistant_page_composer_skill_picker.dart` - Language: `dart` -- Public symbols: `3` +- Public symbols: `10` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `class` | `ComposerSelectedSkillChipInternal` | `class ComposerSelectedSkillChipInternal extends StatelessWidget {` | -| 69 | `class` | `SkillPickerPopoverInternal` | `class SkillPickerPopoverInternal extends StatelessWidget {` | -| 202 | `class` | `SkillPickerTileInternal` | `class SkillPickerTileInternal extends StatelessWidget {` | +| 38 | `class` | `ComposerSelectedSkillChipInternal` | `class ComposerSelectedSkillChipInternal extends StatelessWidget {` | +| 67 | `class` | `SkillPickerPopoverInternal` | `class SkillPickerPopoverInternal extends StatelessWidget {` | +| 261 | `top-level function` | `skillPickerSectionsInternal` | `List skillPickerSectionsInternal( List skills, ) {` | +| 291 | `class` | `SkillPickerRowInternal` | `class SkillPickerRowInternal {` | +| 299 | `class` | `SkillPickerGroupHeaderInternal` | `class SkillPickerGroupHeaderInternal extends StatelessWidget {` | +| 323 | `class` | `SkillPickerTileInternal` | `class SkillPickerTileInternal extends StatelessWidget {` | +| 378 | `top-level function` | `skillOptionFromGatewayInternal` | `ComposerSkillOptionInternal skillOptionFromGatewayInternal( GatewaySkillSummary skill, ) {` | +| 402 | `top-level function` | `skillGroupForSourceInternal` | `ComposerSkillGroupInternal skillGroupForSourceInternal(String source) {` | +| 434 | `class` | `ComposerSkillGroupInternal` | `class ComposerSkillGroupInternal {` | +| 444 | `class` | `ComposerSkillOptionInternal` | `class ComposerSkillOptionInternal {` | ### `lib/features/assistant/assistant_page_composer_state_helpers.dart` @@ -425,7 +441,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 44 | `top-level function` | `buildSkillPickerOverlayForInternal` | `Widget buildSkillPickerOverlayForInternal( ComposerBarStateInternal state, BuildContext context, ) {` | +| 42 | `top-level function` | `buildSkillPickerOverlayForInternal` | `Widget buildSkillPickerOverlayForInternal( ComposerBarStateInternal state, BuildContext context, ) {` | ### `lib/features/assistant/assistant_page_composer_support.dart` @@ -434,15 +450,15 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `class` | `ComposerIconButtonInternal` | `class ComposerIconButtonInternal extends StatefulWidget {` | -| 50 | `class` | `ComposerResizeHandleInternal` | `class ComposerResizeHandleInternal extends StatefulWidget {` | -| 60 | `class` | `ComposerResizeHandleStateInternal` | `class ComposerResizeHandleStateInternal extends State {` | -| 102 | `class` | `ComposerIconButtonStateInternal` | `class ComposerIconButtonStateInternal extends State {` | -| 129 | `class` | `ComposerToolbarChipInternal` | `class ComposerToolbarChipInternal extends StatefulWidget {` | -| 153 | `class` | `ComposerToolbarChipStateInternal` | `class ComposerToolbarChipStateInternal extends State {` | -| 198 | `extension` | `AssistantExecutionTargetIconInternal` | `extension AssistantExecutionTargetIconInternal on AssistantExecutionTarget {` | -| 205 | `extension` | `AssistantPermissionLevelIconInternal` | `extension AssistantPermissionLevelIconInternal on AssistantPermissionLevel {` | -| 212 | `class` | `SingleAgentProviderBadgeInternal` | `class SingleAgentProviderBadgeInternal extends StatelessWidget {` | +| 38 | `class` | `ComposerIconButtonInternal` | `class ComposerIconButtonInternal extends StatefulWidget {` | +| 48 | `class` | `ComposerResizeHandleInternal` | `class ComposerResizeHandleInternal extends StatefulWidget {` | +| 58 | `class` | `ComposerResizeHandleStateInternal` | `class ComposerResizeHandleStateInternal extends State {` | +| 100 | `class` | `ComposerIconButtonStateInternal` | `class ComposerIconButtonStateInternal extends State {` | +| 127 | `class` | `ComposerToolbarChipInternal` | `class ComposerToolbarChipInternal extends StatefulWidget {` | +| 151 | `class` | `ComposerToolbarChipStateInternal` | `class ComposerToolbarChipStateInternal extends State {` | +| 196 | `extension` | `AssistantExecutionTargetIconInternal` | `extension AssistantExecutionTargetIconInternal on AssistantExecutionTarget {` | +| 203 | `extension` | `AssistantPermissionLevelIconInternal` | `extension AssistantPermissionLevelIconInternal on AssistantPermissionLevel {` | +| 210 | `class` | `SingleAgentProviderBadgeInternal` | `class SingleAgentProviderBadgeInternal extends StatelessWidget {` | ### `lib/features/assistant/assistant_page_main.dart` @@ -451,16 +467,16 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 56 | `typedef` | `AssistantClipboardImageReader` | `typedef AssistantClipboardImageReader = Future Function();` | -| 58 | `class` | `AssistantPage` | `class AssistantPage extends StatefulWidget {` | -| 80 | `class` | `AssistantPageStateInternal` | `class AssistantPageStateInternal extends State {` | -| 278 | `enum` | `AssistantSidePaneInternal` | `enum AssistantSidePaneInternal { tasks, navigation, focused }` | -| 280 | `class` | `AssistantUnifiedSidePaneInternal` | `class AssistantUnifiedSidePaneInternal extends StatelessWidget {` | -| 352 | `class` | `AssistantSideTabRailInternal` | `class AssistantSideTabRailInternal extends StatelessWidget {` | -| 452 | `class` | `AssistantSideTabButtonInternal` | `class AssistantSideTabButtonInternal extends StatefulWidget {` | -| 471 | `class` | `AssistantSideTabButtonStateInternal` | `class AssistantSideTabButtonStateInternal extends State {` | -| 520 | `class` | `AssistantLowerPaneInternal` | `class AssistantLowerPaneInternal extends StatelessWidget {` | -| 604 | `class` | `ConversationAreaInternal` | `class ConversationAreaInternal extends StatelessWidget {` | +| 54 | `typedef` | `AssistantClipboardImageReader` | `typedef AssistantClipboardImageReader = Future Function();` | +| 56 | `class` | `AssistantPage` | `class AssistantPage extends StatefulWidget {` | +| 78 | `class` | `AssistantPageStateInternal` | `class AssistantPageStateInternal extends State {` | +| 363 | `enum` | `AssistantSidePaneInternal` | `enum AssistantSidePaneInternal { tasks, navigation, focused }` | +| 365 | `class` | `AssistantUnifiedSidePaneInternal` | `class AssistantUnifiedSidePaneInternal extends StatelessWidget {` | +| 437 | `class` | `AssistantSideTabRailInternal` | `class AssistantSideTabRailInternal extends StatelessWidget {` | +| 537 | `class` | `AssistantSideTabButtonInternal` | `class AssistantSideTabButtonInternal extends StatefulWidget {` | +| 556 | `class` | `AssistantSideTabButtonStateInternal` | `class AssistantSideTabButtonStateInternal extends State {` | +| 605 | `class` | `AssistantLowerPaneInternal` | `class AssistantLowerPaneInternal extends StatelessWidget {` | +| 695 | `class` | `ConversationAreaInternal` | `class ConversationAreaInternal extends StatelessWidget {` | ### `lib/features/assistant/assistant_page_message_widgets.dart` @@ -469,18 +485,18 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `class` | `MessageBubbleInternal` | `class MessageBubbleInternal extends StatelessWidget {` | -| 113 | `class` | `MessageBubbleBodyInternal` | `class MessageBubbleBodyInternal extends StatefulWidget {` | -| 130 | `class` | `MessageBubbleBodyStateInternal` | `class MessageBubbleBodyStateInternal extends State {` | -| 294 | `class` | `PromptDebugSnapshotInternal` | `class PromptDebugSnapshotInternal {` | -| 365 | `class` | `MessageMetaToggleButtonInternal` | `class MessageMetaToggleButtonInternal extends StatelessWidget {` | -| 409 | `class` | `MessageMetaBlockInternal` | `class MessageMetaBlockInternal extends StatelessWidget {` | -| 437 | `class` | `ToolCallTileInternal` | `class ToolCallTileInternal extends StatefulWidget {` | -| 457 | `class` | `ToolCallTileStateInternal` | `class ToolCallTileStateInternal extends State {` | -| 588 | `class` | `StatusPillInternal` | `class StatusPillInternal extends StatelessWidget {` | -| 621 | `class` | `ConnectionChipInternal` | `class ConnectionChipInternal extends StatelessWidget {` | -| 653 | `class` | `ConnectionStatusChipInternal` | `class ConnectionStatusChipInternal extends StatelessWidget {` | -| 691 | `class` | `MessageViewModeChipInternal` | `class MessageViewModeChipInternal extends StatelessWidget {` | +| 38 | `class` | `MessageBubbleInternal` | `class MessageBubbleInternal extends StatelessWidget {` | +| 111 | `class` | `MessageBubbleBodyInternal` | `class MessageBubbleBodyInternal extends StatefulWidget {` | +| 128 | `class` | `MessageBubbleBodyStateInternal` | `class MessageBubbleBodyStateInternal extends State {` | +| 292 | `class` | `PromptDebugSnapshotInternal` | `class PromptDebugSnapshotInternal {` | +| 363 | `class` | `MessageMetaToggleButtonInternal` | `class MessageMetaToggleButtonInternal extends StatelessWidget {` | +| 407 | `class` | `MessageMetaBlockInternal` | `class MessageMetaBlockInternal extends StatelessWidget {` | +| 435 | `class` | `ToolCallTileInternal` | `class ToolCallTileInternal extends StatefulWidget {` | +| 455 | `class` | `ToolCallTileStateInternal` | `class ToolCallTileStateInternal extends State {` | +| 586 | `class` | `StatusPillInternal` | `class StatusPillInternal extends StatelessWidget {` | +| 619 | `class` | `ConnectionChipInternal` | `class ConnectionChipInternal extends StatelessWidget {` | +| 651 | `class` | `ConnectionStatusChipInternal` | `class ConnectionStatusChipInternal extends StatelessWidget {` | +| 689 | `class` | `MessageViewModeChipInternal` | `class MessageViewModeChipInternal extends StatelessWidget {` | ### `lib/features/assistant/assistant_page_state_actions.dart` @@ -489,7 +505,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 42 | `extension` | `AssistantPageStateActionsInternal` | `extension AssistantPageStateActionsInternal on AssistantPageStateInternal {` | +| 39 | `extension` | `AssistantPageStateActionsInternal` | `extension AssistantPageStateActionsInternal on AssistantPageStateInternal {` | ### `lib/features/assistant/assistant_page_state_closure.dart` @@ -498,7 +514,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 44 | `extension` | `AssistantPageStateClosureInternal` | `extension AssistantPageStateClosureInternal on AssistantPageStateInternal {` | +| 42 | `extension` | `AssistantPageStateClosureInternal` | `extension AssistantPageStateClosureInternal on AssistantPageStateInternal {` | ### `lib/features/assistant/assistant_page_task_dialog_controls.dart` @@ -516,25 +532,25 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `enum` | `BubbleToneInternal` | `enum BubbleToneInternal { user, assistant, agent }` | -| 42 | `enum` | `TimelineItemKindInternal` | `enum TimelineItemKindInternal { user, assistant, agent, toolCall }` | -| 44 | `class` | `TimelineItemInternal` | `class TimelineItemInternal {` | -| 89 | `class` | `AssistantTaskSeedInternal` | `class AssistantTaskSeedInternal {` | -| 128 | `class` | `AssistantTaskEntryInternal` | `class AssistantTaskEntryInternal {` | -| 182 | `class` | `AssistantTaskGroupInternal` | `class AssistantTaskGroupInternal {` | -| 192 | `class` | `PillStyleInternal` | `class PillStyleInternal {` | -| 202 | `class` | `MetaPillInternal` | `class MetaPillInternal extends StatelessWidget {` | -| 256 | `top-level function` | `pillStyleForStatusInternal` | `PillStyleInternal pillStyleForStatusInternal( BuildContext context, String label, ) {` | -| 282 | `top-level function` | `normalizedTaskStatusInternal` | `String normalizedTaskStatusInternal(String status) {` | -| 295 | `top-level function` | `toolCallStatusLabelInternal` | `String toolCallStatusLabelInternal(String status) =>` | -| 303 | `top-level function` | `assistantThinkingLabelInternal` | `String assistantThinkingLabelInternal(String level) => switch (level) {` | -| 310 | `top-level function` | `sessionDisplayTitleInternal` | `String sessionDisplayTitleInternal(GatewaySessionSummary session) {` | -| 318 | `top-level function` | `fallbackSessionTitleInternal` | `String fallbackSessionTitleInternal(String sessionKey) {` | -| 326 | `top-level function` | `sessionPreviewInternal` | `String? sessionPreviewInternal(GatewaySessionSummary session) {` | -| 338 | `top-level function` | `sessionStatusInternal` | `String sessionStatusInternal( GatewaySessionSummary session, { required bool sessionPending, String lifecycleStatus = '', }) {` | -| 359 | `top-level function` | `sessionUpdatedAtLabelInternal` | `String sessionUpdatedAtLabelInternal(double? updatedAtMs) {` | -| 378 | `top-level function` | `estimatedComposerWrapSectionHeightInternal` | `double estimatedComposerWrapSectionHeightInternal({ required int itemCount, required double availableWidth, required double averageChipWidth, }) {` | -| 394 | `top-level function` | `sessionKeysMatchInternal` | `bool sessionKeysMatchInternal(String incoming, String current) {` | +| 38 | `enum` | `BubbleToneInternal` | `enum BubbleToneInternal { user, assistant, agent }` | +| 40 | `enum` | `TimelineItemKindInternal` | `enum TimelineItemKindInternal { user, assistant, agent, toolCall }` | +| 42 | `class` | `TimelineItemInternal` | `class TimelineItemInternal {` | +| 93 | `class` | `AssistantTaskSeedInternal` | `class AssistantTaskSeedInternal {` | +| 132 | `class` | `AssistantTaskEntryInternal` | `class AssistantTaskEntryInternal {` | +| 186 | `class` | `AssistantTaskGroupInternal` | `class AssistantTaskGroupInternal {` | +| 196 | `class` | `PillStyleInternal` | `class PillStyleInternal {` | +| 206 | `class` | `MetaPillInternal` | `class MetaPillInternal extends StatelessWidget {` | +| 260 | `top-level function` | `pillStyleForStatusInternal` | `PillStyleInternal pillStyleForStatusInternal( BuildContext context, String label, ) {` | +| 286 | `top-level function` | `normalizedTaskStatusInternal` | `String normalizedTaskStatusInternal(String status) {` | +| 299 | `top-level function` | `toolCallStatusLabelInternal` | `String toolCallStatusLabelInternal(String status) =>` | +| 307 | `top-level function` | `assistantThinkingLabelInternal` | `String assistantThinkingLabelInternal(String level) => switch (level) {` | +| 314 | `top-level function` | `sessionDisplayTitleInternal` | `String sessionDisplayTitleInternal(GatewaySessionSummary session) {` | +| 322 | `top-level function` | `fallbackSessionTitleInternal` | `String fallbackSessionTitleInternal(String sessionKey) {` | +| 330 | `top-level function` | `sessionPreviewInternal` | `String? sessionPreviewInternal(GatewaySessionSummary session) {` | +| 342 | `top-level function` | `sessionStatusInternal` | `String sessionStatusInternal( GatewaySessionSummary session, { required bool sessionPending, String lifecycleStatus = '', }) {` | +| 366 | `top-level function` | `sessionUpdatedAtLabelInternal` | `String sessionUpdatedAtLabelInternal(double? updatedAtMs) {` | +| 385 | `top-level function` | `estimatedComposerWrapSectionHeightInternal` | `double estimatedComposerWrapSectionHeightInternal({ required int itemCount, required double availableWidth, required double averageChipWidth, }) {` | +| 401 | `top-level function` | `sessionKeysMatchInternal` | `bool sessionKeysMatchInternal(String incoming, String current) {` | ### `lib/features/assistant/assistant_page_tooltip_labels.dart` @@ -543,13 +559,136 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 40 | `top-level function` | `executionTargetTooltipInternal` | `String executionTargetTooltipInternal(AssistantExecutionTarget target) =>` | -| 46 | `top-level function` | `providerTooltipInternal` | `String providerTooltipInternal(SingleAgentProvider provider) => appText( '智能体 Provider: ${provider.label}', 'Agent provider: ${provider.label}', );` | -| 51 | `top-level function` | `modelTooltipInternal` | `String modelTooltipInternal(String modelLabel) {` | -| 59 | `top-level function` | `skillsTooltipInternal` | `String skillsTooltipInternal(int selectedCount) => selectedCount <= 0` | -| 63 | `top-level function` | `permissionTooltipInternal` | `String permissionTooltipInternal(AssistantPermissionLevel level) =>` | -| 66 | `top-level function` | `thinkingTooltipInternal` | `String thinkingTooltipInternal(String level) => appText( '推理强度: ${assistantThinkingLabelInternal(level)}', 'Reasoning: ${assistantThinkingLabelInternal(level)}', );` | -| 71 | `top-level function` | `skillOptionTooltipInternal` | `String skillOptionTooltipInternal(ComposerSkillOptionInternal option) {` | +| 38 | `top-level function` | `executionTargetTooltipInternal` | `String executionTargetTooltipInternal(AssistantExecutionTarget target) =>` | +| 44 | `top-level function` | `providerTooltipInternal` | `String providerTooltipInternal(SingleAgentProvider provider) => appText( '智能体 Provider: ${provider.label}', 'Agent provider: ${provider.label}', );` | +| 49 | `top-level function` | `modelTooltipInternal` | `String modelTooltipInternal(String modelLabel) {` | +| 57 | `top-level function` | `skillsTooltipInternal` | `String skillsTooltipInternal(int selectedCount) => selectedCount <= 0` | +| 61 | `top-level function` | `permissionTooltipInternal` | `String permissionTooltipInternal(AssistantPermissionLevel level) =>` | +| 64 | `top-level function` | `thinkingTooltipInternal` | `String thinkingTooltipInternal(String level) => appText( '推理强度: ${assistantThinkingLabelInternal(level)}', 'Reasoning: ${assistantThinkingLabelInternal(level)}', );` | +| 69 | `top-level function` | `skillOptionTooltipInternal` | `String skillOptionTooltipInternal(ComposerSkillOptionInternal option) {` | + +### `lib/features/desktop/desktop_client.dart` + +- Language: `dart` +- Public symbols: `3` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 6 | `top-level function` | `desktopConnectionStateName` | `String desktopConnectionStateName(RTCPeerConnectionState state) {` | +| 11 | `top-level function` | `desktopOfferParams` | `Map desktopOfferParams({ required String sessionId, required String? sdpOffer, required String display, required int width, required int height, required int fps, required int bitrate, required bool useGpu, }) {` | +| 33 | `class` | `DesktopClient` | `class DesktopClient {` | + +### `lib/features/desktop/desktop_input_handler.dart` + +- Language: `dart` +- Public symbols: `3` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 5 | `class` | `DesktopInputHandler` | `class DesktopInputHandler {` | +| 84 | `top-level function` | `desktopKeyName` | `String? desktopKeyName(LogicalKeyboardKey key) {` | +| 158 | `top-level function` | `desktopContentPosition` | `Offset? desktopContentPosition( Offset localPosition, Size viewportSize, { Size? contentSize, }) {` | + +### `lib/features/desktop/desktop_view.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 11 | `class` | `DesktopView` | `class DesktopView extends StatefulWidget {` | + +### `lib/features/mobile/mobile_assistant_list_page.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 11 | `class` | `MobileAssistantListPage` | `class MobileAssistantListPage extends StatefulWidget {` | + +### `lib/features/mobile/mobile_assistant_nav_page.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 9 | `class` | `MobileAssistantNavPage` | `class MobileAssistantNavPage extends StatefulWidget {` | + +### `lib/features/mobile/mobile_assistant_page.dart` + +- Language: `dart` +- Public symbols: `0` + +_No extracted public top-level symbols._ + +### `lib/features/mobile/mobile_assistant_page_composer.dart` + +- Language: `dart` +- Public symbols: `2` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 12 | `class` | `MobileAssistantComposer` | `class MobileAssistantComposer extends StatelessWidget {` | +| 259 | `class` | `MobileAssistantActionChip` | `class MobileAssistantActionChip extends StatelessWidget {` | + +### `lib/features/mobile/mobile_assistant_page_conversation.dart` + +- Language: `dart` +- Public symbols: `2` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 9 | `class` | `MobileAssistantConversation` | `class MobileAssistantConversation extends StatelessWidget {` | +| 110 | `class` | `MobileAssistantEmptyState` | `class MobileAssistantEmptyState extends StatelessWidget {` | + +### `lib/features/mobile/mobile_assistant_page_core.dart` + +- Language: `dart` +- Public symbols: `2` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 19 | `class` | `MobileAssistantDetailPage` | `class MobileAssistantDetailPage extends StatefulWidget {` | +| 239 | `class` | `MobileAssistantStatusBanner` | `class MobileAssistantStatusBanner extends StatelessWidget {` | + +### `lib/features/mobile/mobile_assistant_page_sheets.dart` + +- Language: `dart` +- Public symbols: `8` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 10 | `top-level function` | `showMobileAssistantTargetSheet` | `Future showMobileAssistantTargetSheet( BuildContext context, { required AppController controller, required Future Function(AssistantExecutionTarget target) onSelected, }) {` | +| 46 | `top-level function` | `showMobileAssistantProviderSheet` | `Future showMobileAssistantProviderSheet( BuildContext context, { required AppController controller, required AssistantExecutionTarget target, required SingleAgentProvider selectedProvider, required Future Function(SingleAgentProvider provider) onSelected, }) {` | +| 100 | `top-level function` | `showMobileAssistantPermissionSheet` | `Future showMobileAssistantPermissionSheet( BuildContext context, { required AppController controller, }) {` | +| 125 | `top-level function` | `showMobileAssistantThinkingSheet` | `Future showMobileAssistantThinkingSheet( BuildContext context, { required String value, required ValueChanged onSelected, }) {` | +| 151 | `top-level function` | `showMobileAssistantSheet` | `Future showMobileAssistantSheet( BuildContext context, { required String title, required List children, }) {` | +| 196 | `top-level function` | `mobileThinkingLabel` | `String mobileThinkingLabel(String value) {` | +| 206 | `top-level function` | `mobilePermissionIcon` | `IconData mobilePermissionIcon(AssistantPermissionLevel level) {` | +| 213 | `top-level function` | `mobileProviderBadgeLabel` | `String mobileProviderBadgeLabel(SingleAgentProvider provider) {` | + +### `lib/features/mobile/mobile_settings_page.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 14 | `class` | `MobileSettingsPage` | `class MobileSettingsPage extends StatefulWidget {` | + +### `lib/features/mobile/mobile_settings_page_widgets.dart` + +- Language: `dart` +- Public symbols: `4` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 6 | `class` | `MobileSettingsTabSelectorInternal` | `class MobileSettingsTabSelectorInternal extends StatelessWidget {` | +| 44 | `class` | `MobileSettingsCardInternal` | `class MobileSettingsCardInternal extends StatelessWidget {` | +| 109 | `class` | `MobileSettingsTextFieldInternal` | `class MobileSettingsTextFieldInternal extends StatelessWidget {` | +| 147 | `class` | `MobileSettingsMetaRowInternal` | `class MobileSettingsMetaRowInternal extends StatelessWidget {` | ### `lib/features/mobile/mobile_shell.dart` @@ -565,10 +704,10 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 21 | `enum` | `MobileShellTab` | `enum MobileShellTab { assistant, settings }` | -| 23 | `extension` | `MobileShellTabPresentationInternal` | `extension MobileShellTabPresentationInternal on MobileShellTab {` | -| 35 | `class` | `MobileShell` | `class MobileShell extends StatefulWidget {` | -| 44 | `class` | `MobileShellStateInternal` | `class MobileShellStateInternal extends State {` | +| 13 | `enum` | `MobileShellTab` | `enum MobileShellTab { assistant, settings }` | +| 15 | `extension` | `MobileShellTabPresentationInternal` | `extension MobileShellTabPresentationInternal on MobileShellTab {` | +| 27 | `class` | `MobileShell` | `class MobileShell extends StatefulWidget {` | +| 36 | `class` | `MobileShellStateInternal` | `class MobileShellStateInternal extends State {` | ### `lib/features/mobile/mobile_shell_nav.dart` @@ -577,7 +716,16 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 19 | `class` | `BottomPillNavInternal` | `class BottomPillNavInternal extends StatelessWidget {` | +| 6 | `class` | `BottomPillNavInternal` | `class BottomPillNavInternal extends StatelessWidget {` | + +### `lib/features/mobile/mobile_workspace_files_page.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 9 | `class` | `MobileWorkspaceFilesPage` | `class MobileWorkspaceFilesPage extends StatefulWidget {` | ### `lib/features/settings/settings_about_panel.dart` @@ -596,7 +744,25 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 6 | `class` | `SettingsAccountPanel` | `class SettingsAccountPanel extends StatelessWidget {` | +| 6 | `class` | `SettingsAccountPanel` | `class SettingsAccountPanel extends StatefulWidget {` | + +### `lib/features/settings/settings_archived_tasks_panel.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 7 | `class` | `SettingsArchivedTasksPanel` | `class SettingsArchivedTasksPanel extends StatefulWidget {` | + +### `lib/features/settings/settings_logs_panel.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 8 | `class` | `SettingsLogsPanel` | `class SettingsLogsPanel extends StatefulWidget {` | ### `lib/features/settings/settings_page.dart` @@ -612,8 +778,17 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 19 | `top-level function` | `loadBridgeMetadataForSettingsAbout` | `Future> loadBridgeMetadataForSettingsAbout({ required Uri bridgeEndpoint, required Future Function(Uri endpoint) authorizationResolver, HttpClient Function()? clientFactory, }) async {` | -| 109 | `class` | `SettingsPage` | `class SettingsPage extends StatefulWidget {` | +| 23 | `top-level function` | `loadBridgeMetadataForSettingsAbout` | `Future> loadBridgeMetadataForSettingsAbout({ required Uri bridgeEndpoint, required Future Function(Uri endpoint) authorizationResolver, HttpClient Function()? clientFactory, }) async {` | +| 124 | `class` | `SettingsPage` | `class SettingsPage extends StatefulWidget {` | + +### `lib/features/settings/settings_remote_desktop_panel.dart` + +- Language: `dart` +- Public symbols: `1` + +| Line | Kind | Name | Signature | +| ---: | --- | --- | --- | +| 7 | `class` | `SettingsRemoteDesktopPanel` | `class SettingsRemoteDesktopPanel extends StatefulWidget {` | ## lib/models @@ -637,32 +812,32 @@ _No extracted public top-level symbols._ | 141 | `enum` | `AppSidebarState` | `enum AppSidebarState { expanded, collapsed, hidden }` | | 143 | `enum` | `AssistantMode` | `enum AssistantMode { code, office }` | | 145 | `extension` | `AssistantModeCopy` | `extension AssistantModeCopy on AssistantMode {` | -| 152 | `enum` | `SettingsTab` | `enum SettingsTab { gateway }` | +| 152 | `enum` | `SettingsTab` | `enum SettingsTab { gateway, archivedTasks, remoteDesktop, logs }` | | 154 | `extension` | `SettingsTabCopy` | `extension SettingsTabCopy on SettingsTab {` | -| 160 | `class` | `QuickAction` | `class QuickAction {` | -| 172 | `class` | `RecentSession` | `class RecentSession {` | -| 184 | `class` | `MetricSummary` | `class MetricSummary {` | -| 200 | `class` | `TaskSummary` | `class TaskSummary {` | -| 218 | `class` | `ModuleSummary` | `class ModuleSummary {` | -| 234 | `class` | `NodeSummary` | `class NodeSummary {` | -| 252 | `class` | `AgentSummary` | `class AgentSummary {` | -| 268 | `class` | `SkillSummary` | `class SkillSummary {` | -| 286 | `class` | `ConnectorSummary` | `class ConnectorSummary {` | -| 302 | `class` | `SecretSummary` | `class SecretSummary {` | -| 318 | `class` | `SecretReference` | `class SecretReference {` | -| 334 | `class` | `ProviderSummary` | `class ProviderSummary {` | -| 348 | `class` | `AuditSummary` | `class AuditSummary {` | -| 366 | `class` | `SettingSummary` | `class SettingSummary {` | -| 378 | `class` | `WorkspaceProfile` | `class WorkspaceProfile {` | -| 392 | `class` | `DetailPanelData` | `class DetailPanelData {` | -| 414 | `class` | `DetailSection` | `class DetailSection {` | -| 421 | `class` | `DetailItem` | `class DetailItem {` | -| 428 | `class` | `CommandEntry` | `class CommandEntry {` | +| 163 | `class` | `QuickAction` | `class QuickAction {` | +| 175 | `class` | `RecentSession` | `class RecentSession {` | +| 187 | `class` | `MetricSummary` | `class MetricSummary {` | +| 203 | `class` | `TaskSummary` | `class TaskSummary {` | +| 221 | `class` | `ModuleSummary` | `class ModuleSummary {` | +| 237 | `class` | `NodeSummary` | `class NodeSummary {` | +| 255 | `class` | `AgentSummary` | `class AgentSummary {` | +| 271 | `class` | `SkillSummary` | `class SkillSummary {` | +| 289 | `class` | `ConnectorSummary` | `class ConnectorSummary {` | +| 305 | `class` | `SecretSummary` | `class SecretSummary {` | +| 321 | `class` | `SecretReference` | `class SecretReference {` | +| 337 | `class` | `ProviderSummary` | `class ProviderSummary {` | +| 351 | `class` | `AuditSummary` | `class AuditSummary {` | +| 369 | `class` | `SettingSummary` | `class SettingSummary {` | +| 381 | `class` | `WorkspaceProfile` | `class WorkspaceProfile {` | +| 395 | `class` | `DetailPanelData` | `class DetailPanelData {` | +| 417 | `class` | `DetailSection` | `class DetailSection {` | +| 424 | `class` | `DetailItem` | `class DetailItem {` | +| 431 | `class` | `CommandEntry` | `class CommandEntry {` | ## lib/runtime -- Files: `66` -- Public symbols: `372` +- Files: `55` +- Public symbols: `333` ### `lib/runtime/account_runtime_client.dart` @@ -699,15 +874,6 @@ _No extracted public top-level symbols._ | 153 | `class` | `AgentException` | `class AgentException implements Exception {` | | 165 | `class` | `AgentRegistry` | `class AgentRegistry with ChangeNotifier {` | -### `lib/runtime/aris_llm_chat_client.dart` - -- Language: `dart` -- Public symbols: `1` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 3 | `class` | `ArisLlmChatClient` | `class ArisLlmChatClient {` | - ### `lib/runtime/assistant_artifacts.dart` - Language: `dart` @@ -818,12 +984,12 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 10 | `class` | `ExternalCodeAgentAcpDesktopTransport` | `class ExternalCodeAgentAcpDesktopTransport implements ExternalCodeAgentAcpTransport {` | +| 11 | `class` | `ExternalCodeAgentAcpDesktopTransport` | `class ExternalCodeAgentAcpDesktopTransport implements ExternalCodeAgentAcpTransport {` | ### `lib/runtime/file_store_support.dart` - Language: `dart` -- Public symbols: `17` +- Public symbols: `18` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | @@ -835,29 +1001,29 @@ _No extracted public top-level symbols._ | 75 | `class` | `PersistentWriteFailures` | `class PersistentWriteFailures {` | | 92 | `class` | `StoreLayout` | `class StoreLayout {` | | 122 | `class` | `StoreLayoutResolver` | `class StoreLayoutResolver {` | -| 220 | `top-level function` | `normalizeStoreDirectoryPath` | `String normalizeStoreDirectoryPath(String path) {` | -| 237 | `top-level function` | `ensureDirectory` | `Future ensureDirectory(String path) async {` | -| 245 | `top-level function` | `ensureOwnerOnlyDirectory` | `Future ensureOwnerOnlyDirectory(Directory directory) async {` | -| 252 | `top-level function` | `ensureOwnerOnlyFile` | `Future ensureOwnerOnlyFile(File file) async {` | -| 259 | `top-level function` | `encodeStableFileKey` | `String encodeStableFileKey(String key) {` | -| 263 | `top-level function` | `atomicWriteString` | `Future atomicWriteString( File file, String contents, { bool ownerOnly = false, }) async {` | -| 285 | `top-level function` | `deleteIfExists` | `Future deleteIfExists(File file) async {` | -| 291 | `top-level function` | `decodeYamlDocument` | `Object? decodeYamlDocument(String raw) {` | -| 316 | `top-level function` | `encodeYamlDocument` | `String encodeYamlDocument(Object? value) {` | +| 222 | `top-level function` | `normalizeStoreDirectoryPath` | `String normalizeStoreDirectoryPath(String path) {` | +| 239 | `top-level function` | `ensureDirectory` | `Future ensureDirectory(String path) async {` | +| 247 | `top-level function` | `ensureOwnerOnlyDirectory` | `Future ensureOwnerOnlyDirectory(Directory directory) async {` | +| 254 | `top-level function` | `ensureOwnerOnlyFile` | `Future ensureOwnerOnlyFile(File file) async {` | +| 261 | `top-level function` | `shouldApplyUnixOwnerOnlyPermissionsInternal` | `bool shouldApplyUnixOwnerOnlyPermissionsInternal({String? operatingSystem}) {` | +| 266 | `top-level function` | `encodeStableFileKey` | `String encodeStableFileKey(String key) {` | +| 270 | `top-level function` | `atomicWriteString` | `Future atomicWriteString( File file, String contents, { bool ownerOnly = false, }) async {` | +| 292 | `top-level function` | `deleteIfExists` | `Future deleteIfExists(File file) async {` | +| 298 | `top-level function` | `decodeYamlDocument` | `Object? decodeYamlDocument(String raw) {` | +| 323 | `top-level function` | `encodeYamlDocument` | `String encodeYamlDocument(Object? value) {` | ### `lib/runtime/gateway_acp_client.dart` - Language: `dart` -- Public symbols: `6` +- Public symbols: `5` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 16 | `class` | `GatewayAcpException` | `class GatewayAcpException implements Exception {` | -| 33 | `class` | `GatewayAcpCapabilities` | `class GatewayAcpCapabilities {` | -| 91 | `class` | `GatewayAcpMultiAgentRequest` | `class GatewayAcpMultiAgentRequest {` | -| 111 | `class` | `GatewayAcpClient` | `class GatewayAcpClient {` | -| 1392 | `top-level function` | `gatewayAcpHttpResponseTimeoutFor` | `Duration gatewayAcpHttpResponseTimeoutFor( Uri endpoint, String method, [ Map params = const {}, ]) {` | -| 1412 | `top-level function` | `gatewayAcpTaskRuntimeBudgetMinutesForParams` | `int gatewayAcpTaskRuntimeBudgetMinutesForParams(Map params) {` | +| 18 | `class` | `GatewayAcpException` | `class GatewayAcpException implements Exception {` | +| 35 | `class` | `GatewayAcpCapabilities` | `class GatewayAcpCapabilities {` | +| 113 | `class` | `GatewayAcpClient` | `class GatewayAcpClient {` | +| 1384 | `class` | `GatewayAcpRuntimeSessionClient` | `class GatewayAcpRuntimeSessionClient implements GatewayRuntimeSessionClient {` | +| 1478 | `top-level function` | `gatewayAcpHttpResponseTimeoutFor` | `Duration gatewayAcpHttpResponseTimeoutFor( Uri endpoint, String method, [ Map params = const {}, ]) {` | ### `lib/runtime/gateway_runtime.dart` @@ -869,11 +1035,12 @@ _No extracted public top-level symbols._ ### `lib/runtime/gateway_runtime_api.dart` - Language: `dart` -- Public symbols: `1` +- Public symbols: `2` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | | 3 | `extension` | `GatewayRuntimeApiInternal` | `extension GatewayRuntimeApiInternal on GatewayRuntime {` | +| 608 | `top-level function` | `skillMissingListInternal` | `List skillMissingListInternal( Map skill, String nestedKey, String flatKey, ) {` | ### `lib/runtime/gateway_runtime_core.dart` @@ -946,8 +1113,8 @@ _No extracted public top-level symbols._ | 114 | `enum` | `GatewayRuntimeSessionUpdateType` | `enum GatewayRuntimeSessionUpdateType { snapshot, log, push }` | | 116 | `class` | `GatewayRuntimeSessionUpdate` | `class GatewayRuntimeSessionUpdate {` | | 177 | `abstract interface` | `GatewayRuntimeSessionClient` | `abstract class GatewayRuntimeSessionClient {` | -| 196 | `top-level function` | `gatewayConnectionSnapshotFromJson` | `GatewayConnectionSnapshot gatewayConnectionSnapshotFromJson( Map json, ) {` | -| 223 | `top-level function` | `runtimeLogEntryFromJson` | `RuntimeLogEntry runtimeLogEntryFromJson(Map json) {` | +| 197 | `top-level function` | `gatewayConnectionSnapshotFromJson` | `GatewayConnectionSnapshot gatewayConnectionSnapshotFromJson( Map json, ) {` | +| 224 | `top-level function` | `runtimeLogEntryFromJson` | `RuntimeLogEntry runtimeLogEntryFromJson(Map json) {` | ### `lib/runtime/go_core.dart` @@ -961,15 +1128,6 @@ _No extracted public top-level symbols._ | 21 | `typedef` | `GoCoreBinaryExistsResolver` | `typedef GoCoreBinaryExistsResolver = Future Function(String command);` | | 24 | `class` | `GoCoreLocator` | `class GoCoreLocator {` | -### `lib/runtime/go_multi_agent_mount_desktop_client.dart` - -- Language: `dart` -- Public symbols: `1` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 5 | `class` | `GoMultiAgentMountDesktopClient` | `class GoMultiAgentMountDesktopClient implements MultiAgentMountResolver {` | - ### `lib/runtime/go_runtime_dispatch_desktop_client.dart` - Language: `dart` @@ -982,29 +1140,30 @@ _No extracted public top-level symbols._ ### `lib/runtime/go_task_service_client.dart` - Language: `dart` -- Public symbols: `19` +- Public symbols: `20` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 3 | `enum` | `GoTaskServiceRoute` | `enum GoTaskServiceRoute { externalAcpSingle, externalAcpMulti }` | -| 5 | `enum` | `GoTaskServiceCollaborationMode` | `enum GoTaskServiceCollaborationMode { standard, multiAgent }` | -| 7 | `class` | `ExternalCodeAgentAcpCapabilities` | `class ExternalCodeAgentAcpCapabilities {` | -| 33 | `class` | `ExternalCodeAgentAcpRoutingResolution` | `class ExternalCodeAgentAcpRoutingResolution {` | -| 82 | `enum` | `ExternalCodeAgentAcpRoutingMode` | `enum ExternalCodeAgentAcpRoutingMode { auto, explicit }` | -| 84 | `class` | `ExternalCodeAgentAcpAvailableSkill` | `class ExternalCodeAgentAcpAvailableSkill {` | -| 107 | `class` | `ExternalCodeAgentAcpRoutingConfig` | `class ExternalCodeAgentAcpRoutingConfig {` | -| 167 | `class` | `ExternalCodeAgentAcpSkillInstallApproval` | `class ExternalCodeAgentAcpSkillInstallApproval {` | -| 187 | `class` | `GoTaskServiceRequest` | `class GoTaskServiceRequest {` | -| 359 | `class` | `GoTaskServiceUpdate` | `class GoTaskServiceUpdate {` | -| 388 | `class` | `GoTaskServiceArtifact` | `class GoTaskServiceArtifact {` | -| 443 | `class` | `GoTaskServiceResult` | `class GoTaskServiceResult {` | -| 577 | `top-level function` | `goTaskServiceGatewayEntryState` | `String? goTaskServiceGatewayEntryState({ required AssistantExecutionTarget requestedTarget, required GoTaskServiceResult result, }) {` | -| 612 | `abstract interface` | `ExternalCodeAgentAcpTransport` | `abstract class ExternalCodeAgentAcpTransport {` | -| 644 | `abstract interface` | `GoTaskServiceClient` | `abstract class GoTaskServiceClient {` | -| 678 | `top-level function` | `goTaskServiceUpdateFromAcpNotification` | `GoTaskServiceUpdate? goTaskServiceUpdateFromAcpNotification( Map notification, ) {` | -| 719 | `top-level function` | `goTaskServiceResultFromAcpResponse` | `GoTaskServiceResult goTaskServiceResultFromAcpResponse( Map response, { required GoTaskServiceRoute route, String streamedText = '', String? completedMessage, }) {` | -| 913 | `top-level function` | `mergeGoTaskServiceResponseResult` | `Map mergeGoTaskServiceResponseResult( Map response, Map overlay, ) {` | -| 937 | `top-level function` | `goTaskServiceBase64Size` | `int goTaskServiceBase64Size(String base64) {` | +| 7 | `enum` | `GoTaskServiceRoute` | `enum GoTaskServiceRoute { externalAcpSingle, externalAcpMulti }` | +| 9 | `enum` | `GoTaskServiceCollaborationMode` | `enum GoTaskServiceCollaborationMode { standard, multiAgent }` | +| 11 | `class` | `ExternalCodeAgentAcpCapabilities` | `class ExternalCodeAgentAcpCapabilities {` | +| 37 | `class` | `ExternalCodeAgentAcpRoutingResolution` | `class ExternalCodeAgentAcpRoutingResolution {` | +| 86 | `enum` | `ExternalCodeAgentAcpRoutingMode` | `enum ExternalCodeAgentAcpRoutingMode { auto, explicit }` | +| 88 | `class` | `ExternalCodeAgentAcpAvailableSkill` | `class ExternalCodeAgentAcpAvailableSkill {` | +| 111 | `class` | `ExternalCodeAgentAcpRoutingConfig` | `class ExternalCodeAgentAcpRoutingConfig {` | +| 188 | `class` | `ExternalCodeAgentAcpSkillInstallApproval` | `class ExternalCodeAgentAcpSkillInstallApproval {` | +| 208 | `class` | `GoTaskServiceRequest` | `class GoTaskServiceRequest {` | +| 385 | `class` | `GoTaskServiceUpdate` | `class GoTaskServiceUpdate {` | +| 414 | `class` | `GoTaskServiceArtifact` | `class GoTaskServiceArtifact {` | +| 469 | `class` | `GoTaskServiceResult` | `class GoTaskServiceResult {` | +| 629 | `top-level function` | `goTaskServiceGatewayEntryState` | `String? goTaskServiceGatewayEntryState({ required AssistantExecutionTarget requestedTarget, required GoTaskServiceResult result, }) {` | +| 664 | `abstract interface` | `ExternalCodeAgentAcpTransport` | `abstract class ExternalCodeAgentAcpTransport {` | +| 703 | `abstract interface` | `GoTaskServiceClient` | `abstract class GoTaskServiceClient {` | +| 744 | `top-level function` | `goTaskServiceUpdateFromAcpNotification` | `GoTaskServiceUpdate? goTaskServiceUpdateFromAcpNotification( Map notification, ) {` | +| 785 | `top-level function` | `goTaskServiceResultFromAcpResponse` | `GoTaskServiceResult goTaskServiceResultFromAcpResponse( Map response, { required GoTaskServiceRoute route, String streamedText = '', String? completedMessage, }) {` | +| 979 | `top-level function` | `mergeGoTaskServiceResponseResult` | `Map mergeGoTaskServiceResponseResult( Map response, Map overlay, ) {` | +| 1003 | `top-level function` | `goTaskServiceBase64Size` | `int goTaskServiceBase64Size(String base64) {` | +| 1014 | `top-level function` | `goTaskServiceAttachmentSha256` | `String goTaskServiceAttachmentSha256(GatewayChatAttachmentPayload attachment) {` | ### `lib/runtime/go_task_service_desktop_service.dart` @@ -1028,97 +1187,6 @@ _No extracted public top-level symbols._ | 53 | `class` | `ModeCapabilities` | `class ModeCapabilities {` | | 96 | `class` | `ModeSwitcher` | `class ModeSwitcher extends ChangeNotifier {` | -### `lib/runtime/multi_agent_frameworks.dart` - -- Language: `dart` -- Public symbols: `3` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 3 | `abstract interface` | `FrameworkPreset` | `abstract class FrameworkPreset {` | -| 16 | `class` | `NativeFrameworkPreset` | `class NativeFrameworkPreset extends FrameworkPreset {` | -| 45 | `class` | `ArisFrameworkPreset` | `class ArisFrameworkPreset extends FrameworkPreset {` | - -### `lib/runtime/multi_agent_mount_resolver.dart` - -- Language: `dart` -- Public symbols: `2` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 3 | `class` | `ArisMountProbe` | `class ArisMountProbe {` | -| 39 | `abstract interface` | `MultiAgentMountResolver` | `abstract class MultiAgentMountResolver {` | - -### `lib/runtime/multi_agent_mounts.dart` - -- Language: `dart` -- Public symbols: `7` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 9 | `class` | `MultiAgentMountManager` | `class MultiAgentMountManager {` | -| 90 | `abstract interface` | `CliMountAdapter` | `abstract class CliMountAdapter {` | -| 112 | `class` | `CodexMountAdapter` | `class CodexMountAdapter extends CliMountAdapter {` | -| 154 | `class` | `ClaudeMountAdapter` | `class ClaudeMountAdapter extends CliMountAdapter {` | -| 193 | `class` | `GeminiMountAdapter` | `class GeminiMountAdapter extends CliMountAdapter {` | -| 232 | `class` | `OpencodeMountAdapter` | `class OpencodeMountAdapter extends CliMountAdapter {` | -| 273 | `class` | `OpenClawMountAdapter` | `class OpenClawMountAdapter extends CliMountAdapter {` | - -### `lib/runtime/multi_agent_orchestrator.dart` - -- Language: `dart` -- Public symbols: `0` - -_No extracted public top-level symbols._ - -### `lib/runtime/multi_agent_orchestrator_core.dart` - -- Language: `dart` -- Public symbols: `1` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 20 | `class` | `MultiAgentOrchestrator` | `class MultiAgentOrchestrator extends ChangeNotifier {` | - -### `lib/runtime/multi_agent_orchestrator_protocol.dart` - -- Language: `dart` -- Public symbols: `13` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 17 | `typedef` | `CliProcessStarter` | `typedef CliProcessStarter = Future Function( String executable, List arguments, { Map? environment, String? workingDirectory, });` | -| 26 | `class` | `CollaborationLogEntry` | `class CollaborationLogEntry {` | -| 47 | `enum` | `CollaborationLogLevel` | `enum CollaborationLogLevel { debug, info, warning, error, success }` | -| 50 | `class` | `CliResult` | `class CliResult {` | -| 65 | `class` | `ArchitectResult` | `class ArchitectResult {` | -| 78 | `class` | `EngineerResult` | `class EngineerResult {` | -| 93 | `class` | `TesterResult` | `class TesterResult {` | -| 108 | `class` | `CollaborationStep` | `class CollaborationStep {` | -| 137 | `enum` | `StepStatus` | `enum StepStatus { pending, running, completed, failed }` | -| 140 | `class` | `SubTask` | `class SubTask {` | -| 154 | `enum` | `SubTaskType` | `enum SubTaskType { design, implementation, testing, documentation, deployment }` | -| 157 | `class` | `CollaborationAttachment` | `class CollaborationAttachment {` | -| 170 | `class` | `CollaborationResult` | `class CollaborationResult {` | - -### `lib/runtime/multi_agent_orchestrator_support.dart` - -- Language: `dart` -- Public symbols: `1` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 17 | `extension` | `MultiAgentOrchestratorSupportInternal` | `extension MultiAgentOrchestratorSupportInternal on MultiAgentOrchestrator {` | - -### `lib/runtime/multi_agent_orchestrator_workflow.dart` - -- Language: `dart` -- Public symbols: `1` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 17 | `extension` | `MultiAgentOrchestratorWorkflowInternal` | `extension MultiAgentOrchestratorWorkflowInternal on MultiAgentOrchestrator {` | - ### `lib/runtime/opencode_config_bridge.dart` - Language: `dart` @@ -1181,9 +1249,9 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | | 14 | `class` | `SkillsController` | `class SkillsController extends ChangeNotifier {` | -| 48 | `class` | `ModelsController` | `class ModelsController extends ChangeNotifier {` | -| 121 | `class` | `CronJobsController` | `class CronJobsController extends ChangeNotifier {` | -| 155 | `class` | `DevicesController` | `class DevicesController extends ChangeNotifier {` | +| 97 | `class` | `ModelsController` | `class ModelsController extends ChangeNotifier {` | +| 170 | `class` | `CronJobsController` | `class CronJobsController extends ChangeNotifier {` | +| 204 | `class` | `DevicesController` | `class DevicesController extends ChangeNotifier {` | ### `lib/runtime/runtime_controllers_gateway.dart` @@ -1218,19 +1286,21 @@ _No extracted public top-level symbols._ ### `lib/runtime/runtime_controllers_settings_account_impl.dart` - Language: `dart` -- Public symbols: `9` +- Public symbols: `11` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | | 5 | `top-level function` | `loginAccountSettingsInternal` | `Future loginAccountSettingsInternal( SettingsController controller, { required String baseUrl, required String identifier, required String password, }) async {` | | 64 | `top-level function` | `verifyAccountMfaSettingsInternal` | `Future verifyAccountMfaSettingsInternal( SettingsController controller, { required String baseUrl, required String code, }) async {` | | 121 | `top-level function` | `completeAccountSignInSettingsInternal` | `Future completeAccountSignInSettingsInternal( SettingsController controller, { required String baseUrl, required Map payload, required String identifier, }) async {` | -| 158 | `top-level function` | `restoreAccountSessionSettingsInternal` | `Future restoreAccountSessionSettingsInternal( SettingsController controller, { String baseUrl = '', bool quiet = false, }) async {` | -| 225 | `top-level function` | `syncAccountSettingsInternal` | `Future syncAccountSettingsInternal( SettingsController controller, { String baseUrl = '', bool quiet = false, Map profilePayloadOverride = const {}, }) async {` | -| 371 | `top-level function` | `logoutAccountSettingsInternal` | `Future logoutAccountSettingsInternal( SettingsController controller, { String statusMessage = 'Signed out', bool quiet = false, }) async {` | -| 424 | `top-level function` | `cancelAccountMfaChallengeSettingsInternal` | `Future cancelAccountMfaChallengeSettingsInternal( SettingsController controller, ) async {` | -| 454 | `top-level function` | `normalizeAccountBaseUrlSettingsInternal` | `String normalizeAccountBaseUrlSettingsInternal( String raw, { String fallback = '', }) {` | -| 574 | `top-level function` | `resolveAcpBridgeServerEffectiveConfigInternal` | `AcpBridgeServerEffectiveConfig resolveAcpBridgeServerEffectiveConfigInternal( SettingsController controller, { required AcpBridgeServerModeConfig config, }) {` | +| 160 | `top-level function` | `restoreAccountSessionSettingsInternal` | `Future restoreAccountSessionSettingsInternal( SettingsController controller, { String baseUrl = '', bool quiet = false, }) async {` | +| 227 | `top-level function` | `syncAccountSettingsInternal` | `Future syncAccountSettingsInternal( SettingsController controller, { String baseUrl = '', bool quiet = false, Map profilePayloadOverride = const {}, }) async {` | +| 373 | `top-level function` | `logoutAccountSettingsInternal` | `Future logoutAccountSettingsInternal( SettingsController controller, { String statusMessage = 'Signed out', bool quiet = false, }) async {` | +| 426 | `top-level function` | `markAccountBridgeRuntimeUnavailableInternal` | `Future markAccountBridgeRuntimeUnavailableInternal( SettingsController controller, { required String message, }) async {` | +| 444 | `top-level function` | `cancelAccountMfaChallengeSettingsInternal` | `Future cancelAccountMfaChallengeSettingsInternal( SettingsController controller, ) async {` | +| 474 | `top-level function` | `normalizeAccountBaseUrlSettingsInternal` | `String normalizeAccountBaseUrlSettingsInternal( String raw, { String fallback = '', }) {` | +| 594 | `top-level function` | `resolveAcpBridgeServerEffectiveConfigInternal` | `AcpBridgeServerEffectiveConfig resolveAcpBridgeServerEffectiveConfigInternal( SettingsController controller, { required AcpBridgeServerModeConfig config, }) {` | +| 615 | `top-level function` | `buildSavedAccountProfileSettingsInternal` | `Future buildSavedAccountProfileSettingsInternal( SettingsController controller, { required SettingsSnapshot settings, required String accountBaseUrl, required String accountIdentifier, required String bridgeServerUrl, required String bridgeToken, required bool isManualBridge, }) async {` | ### `lib/runtime/runtime_controllers_settings_connectivity_impl.dart` @@ -1392,39 +1462,30 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | | 13 | `class` | `GatewayChatAttachmentPayload` | `class GatewayChatAttachmentPayload {` | -| 36 | `class` | `GatewayInstanceSummary` | `class GatewayInstanceSummary {` | -| 66 | `class` | `GatewaySkillSummary` | `class GatewaySkillSummary {` | -| 92 | `class` | `GatewayConnectorSummary` | `class GatewayConnectorSummary {` | -| 120 | `class` | `GatewayModelSummary` | `class GatewayModelSummary {` | -| 136 | `class` | `GatewayCronJobSummary` | `class GatewayCronJobSummary {` | -| 162 | `class` | `GatewayDevicePairingList` | `class GatewayDevicePairingList {` | -| 173 | `class` | `GatewayPendingDevice` | `class GatewayPendingDevice {` | -| 200 | `class` | `GatewayPairedDevice` | `class GatewayPairedDevice {` | -| 229 | `class` | `GatewayDeviceTokenSummary` | `class GatewayDeviceTokenSummary {` | -| 249 | `class` | `SecretReferenceEntry` | `class SecretReferenceEntry {` | -| 265 | `class` | `SecretAuditEntry` | `class SecretAuditEntry {` | -| 305 | `class` | `DerivedTaskItem` | `class DerivedTaskItem {` | -| 329 | `class` | `LocalDeviceIdentity` | `class LocalDeviceIdentity {` | +| 39 | `class` | `GatewayInstanceSummary` | `class GatewayInstanceSummary {` | +| 69 | `class` | `GatewaySkillSummary` | `class GatewaySkillSummary {` | +| 95 | `class` | `GatewayConnectorSummary` | `class GatewayConnectorSummary {` | +| 123 | `class` | `GatewayModelSummary` | `class GatewayModelSummary {` | +| 139 | `class` | `GatewayCronJobSummary` | `class GatewayCronJobSummary {` | +| 165 | `class` | `GatewayDevicePairingList` | `class GatewayDevicePairingList {` | +| 176 | `class` | `GatewayPendingDevice` | `class GatewayPendingDevice {` | +| 203 | `class` | `GatewayPairedDevice` | `class GatewayPairedDevice {` | +| 232 | `class` | `GatewayDeviceTokenSummary` | `class GatewayDeviceTokenSummary {` | +| 252 | `class` | `SecretReferenceEntry` | `class SecretReferenceEntry {` | +| 268 | `class` | `SecretAuditEntry` | `class SecretAuditEntry {` | +| 308 | `class` | `DerivedTaskItem` | `class DerivedTaskItem {` | +| 332 | `class` | `LocalDeviceIdentity` | `class LocalDeviceIdentity {` | ### `lib/runtime/runtime_models_multi_agent.dart` - Language: `dart` -- Public symbols: `12` +- Public symbols: `3` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 13 | `enum` | `MultiAgentRole` | `enum MultiAgentRole {` | -| 19 | `enum` | `MultiAgentFramework` | `enum MultiAgentFramework { native, aris }` | -| 21 | `extension` | `MultiAgentFrameworkCopy` | `extension MultiAgentFrameworkCopy on MultiAgentFramework {` | -| 35 | `extension` | `MultiAgentRoleCopy` | `extension MultiAgentRoleCopy on MultiAgentRole {` | -| 49 | `enum` | `AiGatewayInjectionPolicy` | `enum AiGatewayInjectionPolicy { disabled, launchScoped, appManagedDefault }` | -| 51 | `extension` | `AiGatewayInjectionPolicyCopy` | `extension AiGatewayInjectionPolicyCopy on AiGatewayInjectionPolicy {` | -| 73 | `class` | `AgentWorkerConfig` | `class AgentWorkerConfig {` | -| 105 | `class` | `ManagedSkillEntry` | `class ManagedSkillEntry {` | -| 146 | `class` | `ManagedMcpServerEntry` | `class ManagedMcpServerEntry {` | -| 222 | `class` | `ManagedMountTargetState` | `class ManagedMountTargetState {` | -| 431 | `class` | `MultiAgentConfig` | `class MultiAgentConfig {` | -| 788 | `class` | `MultiAgentRunEvent` | `class MultiAgentRunEvent {` | +| 1 | `class` | `ManagedSkillEntry` | `class ManagedSkillEntry {` | +| 42 | `class` | `ManagedMcpServerEntry` | `class ManagedMcpServerEntry {` | +| 118 | `class` | `ManagedMountTargetState` | `class ManagedMountTargetState {` | ### `lib/runtime/runtime_models_profiles.dart` @@ -1457,7 +1518,7 @@ _No extracted public top-level symbols._ ### `lib/runtime/runtime_models_runtime_payloads.dart` - Language: `dart` -- Public symbols: `31` +- Public symbols: `32` | Line | Kind | Name | Signature | | ---: | --- | --- | --- | @@ -1468,30 +1529,31 @@ _No extracted public top-level symbols._ | 240 | `class` | `GatewayAgentSummary` | `class GatewayAgentSummary {` | | 254 | `class` | `GatewaySessionSummary` | `class GatewaySessionSummary {` | | 308 | `class` | `GatewayChatMessage` | `class GatewayChatMessage {` | -| 391 | `class` | `AssistantThreadSkillEntry` | `class AssistantThreadSkillEntry {` | -| 457 | `enum` | `ThreadRealm` | `enum ThreadRealm { local, remote }` | -| 459 | `extension` | `ThreadRealmCopy` | `extension ThreadRealmCopy on ThreadRealm {` | -| 468 | `enum` | `ThreadSubjectType` | `enum ThreadSubjectType { tenant, user }` | -| 470 | `extension` | `ThreadSubjectTypeCopy` | `extension ThreadSubjectTypeCopy on ThreadSubjectType {` | -| 479 | `enum` | `WorkspaceKind` | `enum WorkspaceKind { localFs, remoteFs }` | -| 481 | `extension` | `WorkspaceKindCopy` | `extension WorkspaceKindCopy on WorkspaceKind {` | -| 500 | `top-level function` | `isLegacyAutoThreadExecutionModeValue` | `bool isLegacyAutoThreadExecutionModeValue(String? value) {` | -| 504 | `enum` | `ThreadExecutionMode` | `enum ThreadExecutionMode { agent, gateway }` | -| 506 | `extension` | `ThreadExecutionModeCopy` | `extension ThreadExecutionModeCopy on ThreadExecutionMode {` | -| 515 | `enum` | `ThreadSelectionSource` | `enum ThreadSelectionSource { inherited, explicit }` | -| 517 | `extension` | `ThreadSelectionSourceCopy` | `extension ThreadSelectionSourceCopy on ThreadSelectionSource {` | -| 526 | `class` | `ThreadOwnerScope` | `class ThreadOwnerScope {` | -| 574 | `class` | `WorkspaceBinding` | `class WorkspaceBinding {` | -| 638 | `class` | `ExecutionBinding` | `class ExecutionBinding {` | -| 702 | `top-level function` | `threadExecutionModeFromAssistantExecutionTarget` | `ThreadExecutionMode threadExecutionModeFromAssistantExecutionTarget( AssistantExecutionTarget target, ) {` | -| 711 | `top-level function` | `assistantExecutionTargetFromExecutionMode` | `AssistantExecutionTarget assistantExecutionTargetFromExecutionMode( ThreadExecutionMode mode, ) {` | -| 720 | `top-level function` | `workspaceRefKindFromWorkspaceKind` | `WorkspaceRefKind workspaceRefKindFromWorkspaceKind(WorkspaceKind kind) {` | -| 727 | `class` | `ThreadContextState` | `class ThreadContextState {` | -| 935 | `class` | `ThreadLifecycleState` | `class ThreadLifecycleState {` | -| 991 | `class` | `TaskThread` | `class TaskThread {` | -| 1332 | `top-level function` | `isNewConversationTaskTitle` | `bool isNewConversationTaskTitle(String title) {` | -| 1337 | `top-level function` | `firstUserMessageTaskTitle` | `String firstUserMessageTaskTitle( Iterable messages, { String fallback = '', }) {` | -| 1359 | `top-level function` | `derivePersistedTaskTitle` | `String derivePersistedTaskTitle( String currentTitle, Iterable messages, { String fallback = '', bool hasCustomTitle = false, }) {` | +| 393 | `enum` | `ThreadRealm` | `enum ThreadRealm { local, remote }` | +| 395 | `extension` | `ThreadRealmCopy` | `extension ThreadRealmCopy on ThreadRealm {` | +| 404 | `enum` | `ThreadSubjectType` | `enum ThreadSubjectType { tenant, user }` | +| 406 | `extension` | `ThreadSubjectTypeCopy` | `extension ThreadSubjectTypeCopy on ThreadSubjectType {` | +| 415 | `enum` | `WorkspaceKind` | `enum WorkspaceKind { localFs, remoteFs }` | +| 417 | `extension` | `WorkspaceKindCopy` | `extension WorkspaceKindCopy on WorkspaceKind {` | +| 436 | `top-level function` | `isLegacyAutoThreadExecutionModeValue` | `bool isLegacyAutoThreadExecutionModeValue(String? value) {` | +| 440 | `enum` | `ThreadExecutionMode` | `enum ThreadExecutionMode { agent, gateway }` | +| 442 | `extension` | `ThreadExecutionModeCopy` | `extension ThreadExecutionModeCopy on ThreadExecutionMode {` | +| 451 | `enum` | `ThreadSelectionSource` | `enum ThreadSelectionSource { inherited, explicit }` | +| 453 | `extension` | `ThreadSelectionSourceCopy` | `extension ThreadSelectionSourceCopy on ThreadSelectionSource {` | +| 462 | `class` | `ThreadOwnerScope` | `class ThreadOwnerScope {` | +| 510 | `class` | `WorkspaceBinding` | `class WorkspaceBinding {` | +| 574 | `class` | `ExecutionBinding` | `class ExecutionBinding {` | +| 638 | `top-level function` | `threadExecutionModeFromAssistantExecutionTarget` | `ThreadExecutionMode threadExecutionModeFromAssistantExecutionTarget( AssistantExecutionTarget target, ) {` | +| 647 | `top-level function` | `assistantExecutionTargetFromExecutionMode` | `AssistantExecutionTarget assistantExecutionTargetFromExecutionMode( ThreadExecutionMode mode, ) {` | +| 656 | `top-level function` | `workspaceRefKindFromWorkspaceKind` | `WorkspaceRefKind workspaceRefKindFromWorkspaceKind(WorkspaceKind kind) {` | +| 663 | `class` | `ThreadContextState` | `class ThreadContextState {` | +| 851 | `class` | `TaskInputAttachmentRecord` | `class TaskInputAttachmentRecord {` | +| 915 | `class` | `OpenClawTaskAssociation` | `class OpenClawTaskAssociation {` | +| 1090 | `class` | `ThreadLifecycleState` | `class ThreadLifecycleState {` | +| 1146 | `class` | `TaskThread` | `class TaskThread {` | +| 1496 | `top-level function` | `isNewConversationTaskTitle` | `bool isNewConversationTaskTitle(String title) {` | +| 1501 | `top-level function` | `firstUserMessageTaskTitle` | `String firstUserMessageTaskTitle( Iterable messages, { String fallback = '', }) {` | +| 1523 | `top-level function` | `derivePersistedTaskTitle` | `String derivePersistedTaskTitle( String currentTitle, Iterable messages, { String fallback = '', bool hasCustomTitle = false, }) {` | ### `lib/runtime/runtime_models_settings_snapshot.dart` @@ -1500,7 +1562,7 @@ _No extracted public top-level symbols._ | Line | Kind | Name | Signature | | ---: | --- | --- | --- | -| 17 | `class` | `SettingsSnapshot` | `class SettingsSnapshot {` | +| 16 | `class` | `SettingsSnapshot` | `class SettingsSnapshot {` | ### `lib/runtime/runtime_models_ui_state.dart` @@ -1545,20 +1607,6 @@ _No extracted public top-level symbols._ | 26 | `class` | `SkippedTaskThreadRecord` | `class SkippedTaskThreadRecord {` | | 36 | `class` | `SettingsStore` | `class SettingsStore {` | -### `lib/runtime/skill_directory_access.dart` - -- Language: `dart` -- Public symbols: `6` - -| Line | Kind | Name | Signature | -| ---: | --- | --- | --- | -| 10 | `abstract interface` | `SkillDirectoryAccessService` | `abstract class SkillDirectoryAccessService {` | -| 33 | `class` | `SkillDirectoryAccessHandle` | `class SkillDirectoryAccessHandle {` | -| 47 | `top-level function` | `createSkillDirectoryAccessService` | `SkillDirectoryAccessService createSkillDirectoryAccessService() {` | -| 58 | `class` | `UnsupportedSkillDirectoryAccessService` | `class UnsupportedSkillDirectoryAccessService implements SkillDirectoryAccessService {` | -| 90 | `class` | `FileSelectorSkillDirectoryAccessService` | `class FileSelectorSkillDirectoryAccessService implements SkillDirectoryAccessService {` | -| 154 | `class` | `MacOsSkillDirectoryAccessService` | `class MacOsSkillDirectoryAccessService implements SkillDirectoryAccessService {` | - ## lib/theme - Files: `2` diff --git a/docs/architecture/public-api/app-orchestration.md b/docs/architecture/public-api/app-orchestration.md index a4a679fa..d5792352 100644 --- a/docs/architecture/public-api/app-orchestration.md +++ b/docs/architecture/public-api/app-orchestration.md @@ -45,9 +45,7 @@ | `accountClientFactory` | `AccountRuntimeClient Function(String)?` | No | default impl | account runtime client 构造 | | `environmentOverride` | `Map?` | No | `null` | 测试/运行时环境覆盖 | | `singleAgentSharedSkillScanRootOverrides` | `List?` | No | `null` | 共享 skill 扫描根覆写 | -| `arisBundleRepository` | `ArisBundleRepository?` | No | default impl | ARIS bundle 发现仓库 | | `goTaskServiceClient` | `GoTaskServiceClient?` | No | `DesktopGoTaskService` | 外部 ACP / gateway 任务入口 | -| `multiAgentMountManager` | `MultiAgentMountManager?` | No | default impl | 多 agent mount 管理器 | ### Returns @@ -161,9 +159,6 @@ | --- | --- | --- | --- | | `loadAssistantArtifactSnapshot` | `{String? sessionKey}` | `Future` | 加载某会话 artifact 清单快照 | | `loadAssistantArtifactPreview` | `AssistantArtifactEntry artifact, {String? sessionKey}` | `Future` | 读取 artifact 预览内容 | -| `saveMultiAgentConfig` | `MultiAgentConfig config` | `Future` | 持久化多 agent 配置 | -| `refreshMultiAgentMounts` | `{bool sync=false}` | `Future` | 刷新或同步 mount | -| `runMultiAgentCollaboration` | named args | `Future` | 触发多 agent 协作执行 | | `openOnlineWorkspace` | none | `Future` | 打开在线工作区入口 | ## `AppControllerDesktopWorkspaceExecution` diff --git a/docs/architecture/public-api/models-and-config.md b/docs/architecture/public-api/models-and-config.md index ab287463..37d3f2a2 100644 --- a/docs/architecture/public-api/models-and-config.md +++ b/docs/architecture/public-api/models-and-config.md @@ -184,49 +184,6 @@ | `copyWith(...)` | `AiGatewayProfile` | 更新 profile | | `toJson()` / `fromJson(...)` | contract mapping | 序列化 / 恢复 | -## `MultiAgentConfig` - -- Source: `lib/runtime/runtime_models_multi_agent.dart` -- Type: `class` -- Responsibility: - 描述 native / ARIS 多 agent 协作的总配置,包括角色 worker、迭代次数、超时、AI gateway 注入策略、managed skills/MCP/mount targets。 - -### Constructor Parameters - -| Param Group | Meaning | -| --- | --- | -| enable/framework | `enabled`, `autoSync`, `framework`, `arisEnabled`, `arisMode`, `arisBundleVersion`, `arisCompatStatus` | -| worker roles | `architect`, `engineer`, `tester` | -| execution policy | `ollamaEndpoint`, `maxIterations`, `minAcceptableScore`, `timeoutSeconds`, `aiGatewayInjectionPolicy` | -| managed assets | `managedSkills`, `managedMcpServers`, `mountTargets` | - -### Key Returns - -| API / Getter | Returns | Meaning | -| --- | --- | --- | -| `defaults()` | `MultiAgentConfig` | 默认协作配置 | -| `architectEnabled` / `architectTool` / `architectModel` | primitive | Architect 快捷访问 | -| `engineerTool` / `engineerModel` | primitive | Engineer 快捷访问 | -| `testerTool` / `testerModel` | primitive | Tester 快捷访问 | -| `usesAris` | `bool` | 当前是否落到 ARIS | - -## `AgentWorkerConfig` - -- Source: `lib/runtime/runtime_models_multi_agent.dart` -- Type: `class` -- Responsibility: - 描述单个角色 worker 的 CLI、模型与重试策略。 - -### Constructor Parameters - -| Param | Type | Required | Default | Meaning | -| --- | --- | --- | --- | --- | -| `role` | `MultiAgentRole` | Yes | none | 角色 | -| `cliTool` | `String` | Yes | none | `claude/codex/opencode/...` | -| `model` | `String` | Yes | none | 对应模型 | -| `enabled` | `bool` | Yes | none | 是否启用 | -| `maxRetries` | `int` | No | `2` | 最大重试次数 | - ## `AppTheme` / `AppPalette` - Source: `lib/theme/app_theme.dart`, `lib/theme/app_palette.dart` diff --git a/docs/architecture/public-api/runtime-contracts.md b/docs/architecture/public-api/runtime-contracts.md index 5b4b811c..f79a46d6 100644 --- a/docs/architecture/public-api/runtime-contracts.md +++ b/docs/architecture/public-api/runtime-contracts.md @@ -8,7 +8,7 @@ - task request / routing request / provider catalog - settings 与 secret 持久化访问 - gateway session / agent / chat 控制器 -- desktop 平台能力、skill 目录授权、多 agent mount +- desktop 平台能力、skill 目录授权 - Codex CLI 与 config bridge ## `GatewayAcpException` @@ -37,14 +37,13 @@ - Source: `lib/runtime/gateway_acp_client.dart` - Type: `class` - Responsibility: - 保存 `acp.capabilities` 的解析结果,是 app 侧 single-agent / multi-agent / execution-target / provider catalog 的只读快照。 + 保存 `acp.capabilities` 的解析结果,是 app 侧 single-agent / execution-target / provider catalog 的只读快照。 ### Constructor Parameters | Param | Type | Required | Meaning | | --- | --- | --- | --- | | `singleAgent` | `bool` | Yes | 是否支持单 agent | -| `multiAgent` | `bool` | Yes | 是否支持多 agent | | `availableExecutionTargets` | `List` | Yes | 当前 bridge 允许的执行目标 | | `providerCatalog` | `List` | Yes | agent 侧 provider catalog | | `gatewayProviderCatalog` | `List` | Yes | gateway 侧 provider catalog | @@ -57,25 +56,6 @@ | --- | --- | --- | | `GatewayAcpCapabilities.empty()` | `GatewayAcpCapabilities` | 空 capability 占位 | -## `GatewayAcpMultiAgentRequest` - -- Source: `lib/runtime/gateway_acp_client.dart` -- Type: `class` -- Responsibility: - 描述一次 multi-agent session.start / session.message 请求。 - -### Constructor Parameters - -| Param | Type | Required | Meaning | -| --- | --- | --- | --- | -| `sessionId` | `String` | Yes | 协作会话 ID | -| `threadId` | `String` | Yes | thread ID | -| `prompt` | `String` | Yes | 主任务提示词 | -| `workingDirectory` | `String` | Yes | 工作目录 | -| `attachments` | `List` | Yes | 本地文件附件 | -| `selectedSkills` | `List` | Yes | 显式选中的技能键 | -| `resumeSession` | `bool` | Yes | `false` 时发 `session.start`,`true` 时发 `session.message` | - ## `GatewayAcpClient` - Source: `lib/runtime/gateway_acp_client.dart` @@ -95,19 +75,17 @@ | Method | Parameters | Returns | Meaning | | --- | --- | --- | --- | | `loadCapabilities` | `{bool forceRefresh=false, Uri? endpointOverride, String authorizationOverride=''}` | `Future` | 拉取并缓存 15 秒 capability 快照 | -| `runMultiAgent` | `GatewayAcpMultiAgentRequest request` | `Stream` | 打开 ACP multi-agent 事件流 | ### Main Call Chain - `AppController.refreshAcpCapabilitiesRuntimeInternal` -> `loadCapabilities` -- `GoRuntimeDispatchDesktopClient` / multi-agent flows -> `GatewayAcpClient` +- `GoRuntimeDispatchDesktopClient` -> `GatewayAcpClient` - `GatewayAcpClient` -> ACP JSON-RPC -> bridge ### Side Effects - 网络请求 - 本地 capability 缓存 -- 将 ACP 通知转换成 `MultiAgentRunEvent` ## `ExternalCodeAgentAcpCapabilities` @@ -188,14 +166,11 @@ | `provider` | `SingleAgentProvider` | No | 当前 provider | | `remoteWorkingDirectoryHint` | `String` | No | 远端工作目录 hint | | `resumeSession` | `bool` | No | 是否续跑 | -| `collaborationMode` | `GoTaskServiceCollaborationMode` | No | standard / multiAgent | -| `multiAgent` | `bool` | No | 是否强制多 agent | ### Returns | Getter / Method | Returns | Meaning | | --- | --- | --- | -| `isMultiAgentRequest` | `bool` | 是否走多 agent route | | `route` | `GoTaskServiceRoute` | 计算出的实际 route | | `acpMode` | `String` | ACP session mode | | `routingExecutionTarget` | `String` | 发送给 routing 的目标值 | diff --git a/docs/testing/app-external-service-api-test-matrix.md b/docs/testing/app-external-service-api-test-matrix.md index 6e3b2f76..0ac5f49f 100644 --- a/docs/testing/app-external-service-api-test-matrix.md +++ b/docs/testing/app-external-service-api-test-matrix.md @@ -76,7 +76,7 @@ Last Updated: 2026-04-22 | accounts | `/api/auth/login` | `POST` | 无 | 登录并拿 session token | Apple 审核只读账号使用 | | accounts | `/api/auth/session` | `GET` | `Authorization: Bearer ` | 获取当前会话和用户信息 | APP 端登录态校验 | | accounts | `/api/auth/xworkmate/profile/sync` | `GET` | `Authorization: Bearer ` | 拉取 bridge 同步元数据 | 返回 `BRIDGE_SERVER_URL` / `BRIDGE_AUTH_TOKEN` | -| bridge | `/acp/rpc` | `POST` | `Authorization: Bearer ` | bridge JSON-RPC 主入口 | capabilities、routing、agent / multi-agent 任务、OpenClaw gateway 任务、cancel、close | +| bridge | `/acp/rpc` | `POST` | `Authorization: Bearer ` | bridge JSON-RPC 主入口 | capabilities、routing、agent 任务、OpenClaw gateway 任务、cancel、close | | bridge | `acp.capabilities` | JSON-RPC method | 同上 | 拉取 provider catalog / target catalog | capability 只读快照 | | bridge | `xworkmate.routing.resolve` | JSON-RPC method | 同上 | 解析 provider / gateway / skills 路由 | 返回 resolved / unavailable 信息 | | bridge | `session.start` | JSON-RPC method | 同上 | 开启新会话 | session 生命周期起点 | @@ -243,7 +243,6 @@ Last Updated: 2026-04-22 - `providerCatalog` - `gatewayProviders` - `singleAgent` -- `multiAgent` - `capabilities` #### 当前实测结果 @@ -580,7 +579,7 @@ Last Updated: 2026-04-22 ### 8.3 建议断言 - `Authorization` 必须是 `Bearer ` -- capability、routing、agent / multi-agent 任务、OpenClaw gateway `session.start` / `session.message`、`session.cancel`、`session.close` 请求路径必须是 `/acp/rpc` +- capability、routing、agent 任务、OpenClaw gateway `session.start` / `session.message`、`session.cancel`、`session.close` 请求路径必须是 `/acp/rpc` - 不允许出现 `/acp-server/` 直连请求 - 不允许出现 `/gateway/openclaw` app-facing 请求;OpenClaw gateway 目标必须通过 routing metadata 表达 - `session.cancel` / `session.close` 必须接受 `sessionId` + `threadId` @@ -610,7 +609,7 @@ Last Updated: 2026-04-22 - 账户侧负责登录与同步元数据 - bridge 侧负责 capability、路由解析和会话生命周期 -- capability、routing、agent / multi-agent 任务、OpenClaw gateway 任务、cancel、close 经过 `/acp/rpc` +- capability、routing、agent 任务、OpenClaw gateway 任务、cancel、close 经过 `/acp/rpc` - OpenClaw `session.start` / `session.message` 通过 `/acp/rpc` routing metadata 表达 gateway/openclaw 目标 - `session.cancel` / `session.close` 的协议入口已验证可用 - 当前剩余风险集中在桥接后端下游 provider 连接,而不是 APP 侧接口拼接 diff --git a/test/features/assistant/assistant_lower_pane_test.dart b/test/features/assistant/assistant_lower_pane_test.dart index 11c107dc..d67b8000 100644 --- a/test/features/assistant/assistant_lower_pane_test.dart +++ b/test/features/assistant/assistant_lower_pane_test.dart @@ -64,7 +64,7 @@ void main() { testWidgets('shows mode-specific provider catalogs', (tester) async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, SingleAgentProvider.opencode, @@ -214,7 +214,7 @@ void main() { ) async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, SingleAgentProvider.opencode, @@ -264,7 +264,7 @@ void main() { ) async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, SingleAgentProvider.opencode, @@ -377,7 +377,7 @@ void main() { (tester) async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, SingleAgentProvider.opencode, @@ -733,19 +733,9 @@ void main() { }); } -UiFeatureManifest _manifestWithDesktopMultiAgentEnabled() { +UiFeatureManifest _defaultDesktopManifest() { return UiFeatureManifest.fromYamlString( File(UiFeatureManifest.assetPath).readAsStringSync(), - ).copyWithFeature( - platform: UiFeaturePlatform.desktop, - module: 'assistant', - feature: 'multi_agent', - enabled: true, - buildModes: const { - UiFeatureBuildMode.debug, - UiFeatureBuildMode.profile, - UiFeatureBuildMode.release, - }, ); } diff --git a/test/features/mobile/mobile_assistant_page_test.dart b/test/features/mobile/mobile_assistant_page_test.dart index 0bfeac5b..4e9b0a56 100644 --- a/test/features/mobile/mobile_assistant_page_test.dart +++ b/test/features/mobile/mobile_assistant_page_test.dart @@ -105,7 +105,7 @@ void main() { ) async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, ], @@ -248,18 +248,8 @@ Widget _buildTestApp({ ); } -UiFeatureManifest _manifestWithDesktopMultiAgentEnabled() { +UiFeatureManifest _defaultDesktopManifest() { return UiFeatureManifest.fromYamlString( File(UiFeatureManifest.assetPath).readAsStringSync(), - ).copyWithFeature( - platform: UiFeaturePlatform.desktop, - module: 'assistant', - feature: 'multi_agent', - enabled: true, - buildModes: const { - UiFeatureBuildMode.debug, - UiFeatureBuildMode.profile, - UiFeatureBuildMode.release, - }, ); } diff --git a/test/runtime/app_controller_acp_mount_resilience_test.dart b/test/runtime/app_controller_acp_mount_resilience_test.dart deleted file mode 100644 index 207936fc..00000000 --- a/test/runtime/app_controller_acp_mount_resilience_test.dart +++ /dev/null @@ -1,163 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:flutter_test/flutter_test.dart'; -import 'package:xworkmate/app/app_controller.dart'; -import 'package:xworkmate/runtime/multi_agent_mount_resolver.dart'; -import 'package:xworkmate/runtime/multi_agent_mounts.dart'; -import 'package:xworkmate/runtime/runtime_models.dart'; -import 'package:xworkmate/runtime/secure_config_store.dart'; - -void main() { - test( - 'capability refresh does not fail when remote mount reconcile is absent', - () async { - final server = await _CapabilityServer.start(); - addTearDown(server.close); - - final storeRoot = await Directory.systemTemp.createTemp( - 'xworkmate-mount-resilience-', - ); - addTearDown(() async { - if (await storeRoot.exists()) { - await storeRoot.delete(recursive: true); - } - }); - - final store = SecureConfigStore( - secretRootPathResolver: () async => '${storeRoot.path}/secrets', - appDataRootPathResolver: () async => '${storeRoot.path}/app-data', - supportRootPathResolver: () async => '${storeRoot.path}/support', - ); - await store.initialize(); - final settings = SettingsSnapshot.defaults(); - final bridgeConfig = settings.acpBridgeServerModeConfig; - final selfHosted = bridgeConfig.selfHosted.copyWith( - serverUrl: server.endpoint, - username: 'admin', - ); - await store.saveSecretValueByRef(selfHosted.passwordRef, 'bridge-token'); - await store.saveSettingsSnapshot( - settings.copyWith( - acpBridgeServerModeConfig: bridgeConfig.copyWith( - selfHosted: selfHosted, - effective: AcpBridgeServerEffectiveConfig( - endpoint: server.endpoint, - tokenRef: selfHosted.passwordRef, - source: 'bridge', - reason: 'test bridge', - ), - ), - ), - ); - - final controller = AppController( - store: store, - environmentOverride: {'HOME': storeRoot.path}, - multiAgentMountManager: MultiAgentMountManager( - resolver: _MissingRemoteMountResolver(), - ), - ); - addTearDown(controller.dispose); - - await _waitForInitialization(controller); - - expect(controller.bootstrapError, isNull); - expect(controller.bridgeCapabilitiesRefreshErrorInternal, isEmpty); - expect( - controller.gatewayProviderCatalog.map((item) => item.providerId), - contains('openclaw'), - ); - }, - ); -} - -Future _waitForInitialization(AppController controller) async { - final deadline = DateTime.now().add(const Duration(seconds: 10)); - while (controller.initializing && DateTime.now().isBefore(deadline)) { - await Future.delayed(const Duration(milliseconds: 100)); - } - if (controller.initializing) { - fail('controller did not initialize'); - } -} - -class _MissingRemoteMountResolver implements MultiAgentMountResolver { - @override - Future reconcile({ - required MultiAgentConfig config, - required String aiGatewayUrl, - required String codexHome, - required String opencodeHome, - required ArisMountProbe arisProbe, - }) { - throw StateError('unknown method: xworkmate.mounts.reconcile'); - } - - @override - Future dispose() async {} -} - -class _CapabilityServer { - _CapabilityServer(this._server); - - final HttpServer _server; - - String get endpoint => 'http://${_server.address.host}:${_server.port}'; - - static Future<_CapabilityServer> start() async { - final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0); - final wrapper = _CapabilityServer(server); - server.listen(wrapper._handle); - return wrapper; - } - - Future close() => _server.close(force: true); - - Future _handle(HttpRequest request) async { - final raw = await utf8.decoder.bind(request).join(); - final decoded = jsonDecode(raw) as Map; - final method = decoded['method']?.toString() ?? ''; - request.response.headers.contentType = ContentType.json; - if (method != 'acp.capabilities') { - request.response.write( - jsonEncode({ - 'jsonrpc': '2.0', - 'id': decoded['id'], - 'error': { - 'code': -32601, - 'message': 'unknown method: $method', - }, - }), - ); - await request.response.close(); - return; - } - request.response.write( - jsonEncode({ - 'jsonrpc': '2.0', - 'id': decoded['id'], - 'result': { - 'singleAgent': true, - 'multiAgent': true, - 'availableExecutionTargets': ['agent', 'gateway'], - 'providerCatalog': >[ - { - 'providerId': 'codex', - 'label': 'Codex', - 'targets': ['agent'], - }, - ], - 'gatewayProviders': >[ - { - 'providerId': 'openclaw', - 'label': 'OpenClaw', - 'targets': ['gateway'], - }, - ], - }, - }), - ); - await request.response.close(); - } -} diff --git a/test/runtime/assistant_execution_target_test.dart b/test/runtime/assistant_execution_target_test.dart index ef4f9d87..b03d7377 100644 --- a/test/runtime/assistant_execution_target_test.dart +++ b/test/runtime/assistant_execution_target_test.dart @@ -64,7 +64,7 @@ void main() { () async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, SingleAgentProvider.openclaw, @@ -110,7 +110,7 @@ void main() { () async { final controller = AppController( environmentOverride: const {}, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), initialBridgeProviderCatalog: const [ SingleAgentProvider.codex, SingleAgentProvider.opencode, @@ -4219,26 +4219,16 @@ List> _generatedArtifactPayloads() { ]; } -UiFeatureManifest _manifestWithDesktopMultiAgentEnabled() { +UiFeatureManifest _defaultDesktopManifest() { return UiFeatureManifest.fromYamlString( File(UiFeatureManifest.assetPath).readAsStringSync(), - ).copyWithFeature( - platform: UiFeaturePlatform.desktop, - module: 'assistant', - feature: 'multi_agent', - enabled: true, - buildModes: const { - UiFeatureBuildMode.debug, - UiFeatureBuildMode.profile, - UiFeatureBuildMode.release, - }, ); } AppController _connectedController(GoTaskServiceClient client) { return AppController( goTaskServiceClient: client, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), environmentOverride: const { 'BRIDGE_AUTH_TOKEN': 'bridge-token', }, @@ -4254,7 +4244,7 @@ AppController _connectedController(GoTaskServiceClient client) { AppController _connectedGatewayController(GoTaskServiceClient client) { return AppController( goTaskServiceClient: client, - uiFeatureManifest: _manifestWithDesktopMultiAgentEnabled(), + uiFeatureManifest: _defaultDesktopManifest(), environmentOverride: const { 'BRIDGE_AUTH_TOKEN': 'bridge-token', }, diff --git a/test/runtime/gateway_acp_client_auth_test.dart b/test/runtime/gateway_acp_client_auth_test.dart index 04ffd22b..dc9be44b 100644 --- a/test/runtime/gateway_acp_client_auth_test.dart +++ b/test/runtime/gateway_acp_client_auth_test.dart @@ -1900,14 +1900,6 @@ void main() { provider: SingleAgentProvider.unspecified, ), ); - final multiAgentGateway = controller - .resolveExternalAcpEndpointForRequestInternal( - _taskRequest( - target: AssistantExecutionTarget.gateway, - provider: SingleAgentProvider.openclaw, - multiAgent: true, - ), - ); final agentTask = controller.resolveExternalAcpEndpointForRequestInternal( _taskRequest( target: AssistantExecutionTarget.agent, @@ -1918,7 +1910,6 @@ void main() { expect(openClawStart?.path, '/acp/rpc'); expect(openClawFollowUp?.path, '/acp/rpc'); expect(unspecifiedGateway?.path, '/acp/rpc'); - expect(multiAgentGateway?.path, '/acp/rpc'); expect(agentTask?.path, '/acp/rpc'); }); @@ -2138,90 +2129,7 @@ void main() { }, ); - test('multi-agent execution uses session lifecycle methods', () async { - final capture = await _startAcpHttpServer(); - addTearDown(capture.close); - final client = GatewayAcpClient( - endpointResolver: () => capture.baseEndpoint, - authorizationResolver: (_) async => 'bridge-token', - ); - final events = await client - .runMultiAgent( - const GatewayAcpMultiAgentRequest( - sessionId: 'session-1', - threadId: 'session-1', - prompt: 'hi', - workingDirectory: '/tmp', - attachments: [], - selectedSkills: [], - resumeSession: false, - ), - ) - .toList(); - - expect(events, isNotEmpty); - expect( - capture.requestBodies, - contains( - predicate((body) { - return body.contains('"method":"session.start"'); - }), - ), - ); - expect( - capture.requestBodies, - isNot( - contains( - predicate((body) { - return body.contains('"method":"thread/start"'); - }), - ), - ), - ); - }); - - test('multi-agent follow-up uses session.message', () async { - final capture = await _startAcpHttpServer(); - addTearDown(capture.close); - final client = GatewayAcpClient( - endpointResolver: () => capture.baseEndpoint, - authorizationResolver: (_) async => 'bridge-token', - ); - - await client - .runMultiAgent( - const GatewayAcpMultiAgentRequest( - sessionId: 'session-1', - threadId: 'session-1', - prompt: 'hi', - workingDirectory: '/tmp', - attachments: [], - selectedSkills: [], - resumeSession: true, - ), - ) - .toList(); - - expect( - capture.requestBodies, - contains( - predicate((body) { - return body.contains('"method":"session.message"'); - }), - ), - ); - expect( - capture.requestBodies, - isNot( - contains( - predicate((body) { - return body.contains('"method":"turn/start"'); - }), - ), - ), - ); - }); }); } @@ -2249,7 +2157,6 @@ GoTaskServiceRequest _taskRequest({ required AssistantExecutionTarget target, required SingleAgentProvider provider, bool resumeSession = false, - bool multiAgent = false, String remoteWorkingDirectoryHint = '', }) { return GoTaskServiceRequest( @@ -2268,7 +2175,6 @@ GoTaskServiceRequest _taskRequest({ provider: provider, remoteWorkingDirectoryHint: remoteWorkingDirectoryHint, resumeSession: resumeSession, - multiAgent: multiAgent, ); }