返回 DeepSeek-Reasonix
remote_tab_exact_interactions.go
根目录 / desktop / remote_tab_exact_interactions.go
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func (a *App) ResolveRemoteTabPromptExact(target RemotePromptTarget, answer PromptAnswerView) error {
9 a.remoteTabMu.Lock()
10 tab := a.remoteTabs[target.TabID]
11 supported := tab != nil && tab.capabilities[serveCapabilityInteractionTargetV1]
12 current := tab != nil && tab.ref.HostID == target.HostID && tab.session.sessionID == target.SessionID && tab.gen == target.SessionGeneration
13 a.remoteTabMu.Unlock()
14 if !supported {
15 return fmt.Errorf("this remote Reasonix Serve does not support %s; upgrade it to answer this card safely", serveCapabilityInteractionTargetV1)
16 }
17 if !current {
18 return fmt.Errorf("remote prompt session binding is stale")
19 }
20 if strings.TrimSpace(target.PromptID) == "" || strings.TrimSpace(target.TurnID) == "" || strings.TrimSpace(target.Kind) == "" {
21 return fmt.Errorf("exact remote prompt identity is required")
22 }
23 if err := a.remoteTabPost(target.TabID, "/resolve-prompt", map[string]any{
24 "sessionId": target.SessionID, "promptId": target.PromptID, "turnId": target.TurnID, "runtimeEpoch": target.RuntimeEpoch,
25 "kind": target.Kind, "answer": answer,
26 }); err != nil {
27 return err
28 }
29 a.clearRemotePendingPromptExact(target)
30 return nil
31 }
32
33 func (a *App) SubmitRemoteTabExtensionFormExact(target ExtensionFormTarget, values map[string]any) error {
34 a.remoteTabMu.Lock()
35 tab := a.remoteTabs[target.TabID]
36 supported := tab != nil && tab.capabilities[serveCapabilityExtensionFormInstanceV1]
37 current := tab != nil && tab.ref.HostID == target.HostID && tab.session.sessionID == target.SessionID && tab.gen == target.SessionGeneration
38 a.remoteTabMu.Unlock()
39 if !supported {
40 return fmt.Errorf("this remote Reasonix Serve does not support %s; upgrade it to submit this extension form safely", serveCapabilityExtensionFormInstanceV1)
41 }
42 if !current {
43 return fmt.Errorf("remote extension form binding is stale")
44 }
45 if err := a.remoteTabPost(target.TabID, "/extension-form", map[string]any{
46 "sessionId": target.SessionID, "pluginId": target.PluginID, "surfaceId": target.SurfaceID, "generation": target.PluginGeneration,
47 "formInstanceId": target.FormInstanceID, "values": values,
48 }); err != nil {
49 return err
50 }
51 a.clearRemotePendingExtensionFormExact(target.TabID, target.PluginID, target.SurfaceID, target.FormInstanceID)
52 return nil
53 }
54
54 lines GO