refactor(modes): isolate interactive submission
- commit
- 4f3ea4d119310cf293252f2a8ebbd5cbedb82032
- author
- brice · · 2026-08-14 03:34 UTC
- committer
- brice · · 2026-08-14 03:56 UTC
- parent
- 50fb5ef
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
2 files · +22 -19
M packages/agent/modes/interactive.go +0 -19
| @@ -3839,25 +3839,6 @@ func (i *Interactive) appendExtensionNote(extName, msg, level string) { | |||
| 3839 | 3839 | // holds an interface, not a concrete *Interactive, so these methods | |
| 3840 | 3840 | // are the only thing the manager sees. | |
| 3841 | 3841 | ||
| 3842 | - | // Submit feeds text through the agent loop as if the user had typed it. | |
| 3843 | - | func (i *Interactive) Submit(text string) { | |
| 3844 | - | if cmd, ok := shellEscapeCommand(text); ok { | |
| 3845 | - | i.startShellEscape(i.runCtx, cmd) | |
| 3846 | - | return | |
| 3847 | - | } | |
| 3848 | - | parent := i.runCtx | |
| 3849 | - | if parent == nil { | |
| 3850 | - | parent = context.Background() | |
| 3851 | - | } | |
| 3852 | - | i.mu.Lock() | |
| 3853 | - | awaitingStartupPre := i.awaitingStartupPre | |
| 3854 | - | i.mu.Unlock() | |
| 3855 | - | if !awaitingStartupPre { | |
| 3856 | - | i.maybeStartSessionTitle(parent, text) | |
| 3857 | - | } | |
| 3858 | - | i.startTurn(parent, text) | |
| 3859 | - | } | |
| 3860 | - | ||
| 3861 | 3842 | // completeStartupPre applies deferred InitialInput after entry.pre finishes. | |
| 3862 | 3843 | // When AutoSubmitInitial was set, the deferred prompt is submitted; otherwise | |
| 3863 | 3844 | // it only pre-fills the editor (CLI-supplied prompts). | |
| @@ -3839,25 +3839,6 @@ func (i *Interactive) appendExtensionNote(extName, msg, level string) { | |||||
| 3839 | // holds an interface, not a concrete *Interactive, so these methods | 3839 | // holds an interface, not a concrete *Interactive, so these methods | ||
| 3840 | // are the only thing the manager sees. | 3840 | // are the only thing the manager sees. | ||
| 3841 | 3841 | ||||
| 3842 | - | // Submit feeds text through the agent loop as if the user had typed it. | |||
| 3843 | - | func (i *Interactive) Submit(text string) { | |||
| 3844 | - | if cmd, ok := shellEscapeCommand(text); ok { | |||
| 3845 | - | i.startShellEscape(i.runCtx, cmd) | |||
| 3846 | - | return | |||
| 3847 | - | } | |||
| 3848 | - | parent := i.runCtx | |||
| 3849 | - | if parent == nil { | |||
| 3850 | - | parent = context.Background() | |||
| 3851 | - | } | |||
| 3852 | - | i.mu.Lock() | |||
| 3853 | - | awaitingStartupPre := i.awaitingStartupPre | |||
| 3854 | - | i.mu.Unlock() | |||
| 3855 | - | if !awaitingStartupPre { | |||
| 3856 | - | i.maybeStartSessionTitle(parent, text) | |||
| 3857 | - | } | |||
| 3858 | - | i.startTurn(parent, text) | |||
| 3859 | - | } | |||
| 3860 | - | ||||
| 3861 | // completeStartupPre applies deferred InitialInput after entry.pre finishes. | 3842 | // completeStartupPre applies deferred InitialInput after entry.pre finishes. | ||
| 3862 | // When AutoSubmitInitial was set, the deferred prompt is submitted; otherwise | 3843 | // When AutoSubmitInitial was set, the deferred prompt is submitted; otherwise | ||
| 3863 | // it only pre-fills the editor (CLI-supplied prompts). | 3844 | // it only pre-fills the editor (CLI-supplied prompts). | ||
A packages/agent/modes/interactive_submit.go +22 -0
| @@ -0,0 +1,22 @@ | |||
| 1 | + | package modes | |
| 2 | + | ||
| 3 | + | import "context" | |
| 4 | + | ||
| 5 | + | // Submit feeds text through the agent loop as if the user had typed it. | |
| 6 | + | func (i *Interactive) Submit(text string) { | |
| 7 | + | if cmd, ok := shellEscapeCommand(text); ok { | |
| 8 | + | i.startShellEscape(i.runCtx, cmd) | |
| 9 | + | return | |
| 10 | + | } | |
| 11 | + | parent := i.runCtx | |
| 12 | + | if parent == nil { | |
| 13 | + | parent = context.Background() | |
| 14 | + | } | |
| 15 | + | i.mu.Lock() | |
| 16 | + | awaitingStartupPre := i.awaitingStartupPre | |
| 17 | + | i.mu.Unlock() | |
| 18 | + | if !awaitingStartupPre { | |
| 19 | + | i.maybeStartSessionTitle(parent, text) | |
| 20 | + | } | |
| 21 | + | i.startTurn(parent, text) | |
| 22 | + | } | |
| @@ -0,0 +1,22 @@ | |||||
| 1 | + | package modes | |||
| 2 | + | ||||
| 3 | + | import "context" | |||
| 4 | + | ||||
| 5 | + | // Submit feeds text through the agent loop as if the user had typed it. | |||
| 6 | + | func (i *Interactive) Submit(text string) { | |||
| 7 | + | if cmd, ok := shellEscapeCommand(text); ok { | |||
| 8 | + | i.startShellEscape(i.runCtx, cmd) | |||
| 9 | + | return | |||
| 10 | + | } | |||
| 11 | + | parent := i.runCtx | |||
| 12 | + | if parent == nil { | |||
| 13 | + | parent = context.Background() | |||
| 14 | + | } | |||
| 15 | + | i.mu.Lock() | |||
| 16 | + | awaitingStartupPre := i.awaitingStartupPre | |||
| 17 | + | i.mu.Unlock() | |||
| 18 | + | if !awaitingStartupPre { | |||
| 19 | + | i.maybeStartSessionTitle(parent, text) | |||
| 20 | + | } | |||
| 21 | + | i.startTurn(parent, text) | |||
| 22 | + | } | |||