返回 DeepSeek-Reasonix
draft_shell_submission.go
根目录 / desktop / draft_shell_submission.go
1 package main
2
3 import (
4 "errors"
5 "reasonix/internal/control"
6 )
7
8 // RunShellForTabWithID uses the same durable admission as model turns. The
9 // compatibility shell entry point remains available to existing callers.
10 func (a *App) runShellForTabWithID(tabID, command, submissionID string) error {
11 req := control.SubmissionRequest{ID: submissionID, Action: "shell", Input: command, Display: command}
12 if found, err := a.knownSubmission(tabID, req); found || err != nil {
13 return err
14 }
15 admission, api, err := a.beginTabTurn(tabID, true, submissionID)
16 if err != nil {
17 return a.submissionAdmissionError(tabID, req, err)
18 }
19 defer admission.abort()
20 ctrl, ok := api.(*control.Controller)
21 if !ok {
22 return errors.New("durable shell submission is unavailable")
23 }
24 if err := a.ensureTabTopicIndexedForUserTurn(admission.tab); err != nil {
25 return err
26 }
27 if _, err := ctrl.SubmitIdentified(req); err != nil {
28 return err
29 }
30 admission.finish(ctrl)
31 return nil
32 }
33
33 lines GO