@@ -14,6 +14,12 @@ type clientFuncs struct {
1414 ReadTextFileFunc func (context.Context , ReadTextFileRequest ) (ReadTextFileResponse , error )
1515 RequestPermissionFunc func (context.Context , RequestPermissionRequest ) (RequestPermissionResponse , error )
1616 SessionUpdateFunc func (context.Context , SessionNotification ) error
17+ // Terminal-related handlers
18+ CreateTerminalFunc func (context.Context , CreateTerminalRequest ) (CreateTerminalResponse , error )
19+ KillTerminalCommandFunc func (context.Context , KillTerminalCommandRequest ) error
20+ ReleaseTerminalFunc func (context.Context , ReleaseTerminalRequest ) error
21+ TerminalOutputFunc func (context.Context , TerminalOutputRequest ) (TerminalOutputResponse , error )
22+ WaitForTerminalExitFunc func (context.Context , WaitForTerminalExitRequest ) (WaitForTerminalExitResponse , error )
1723}
1824
1925var _ Client = (* clientFuncs )(nil )
@@ -46,6 +52,46 @@ func (c clientFuncs) SessionUpdate(ctx context.Context, n SessionNotification) e
4652 return nil
4753}
4854
55+ // CreateTerminal implements Client.
56+ func (c * clientFuncs ) CreateTerminal (ctx context.Context , params CreateTerminalRequest ) (CreateTerminalResponse , error ) {
57+ if c .CreateTerminalFunc != nil {
58+ return c .CreateTerminalFunc (ctx , params )
59+ }
60+ return CreateTerminalResponse {TerminalId : "test-terminal" }, nil
61+ }
62+
63+ // KillTerminalCommand implements Client.
64+ func (c * clientFuncs ) KillTerminalCommand (ctx context.Context , params KillTerminalCommandRequest ) error {
65+ if c .KillTerminalCommandFunc != nil {
66+ return c .KillTerminalCommandFunc (ctx , params )
67+ }
68+ return nil
69+ }
70+
71+ // ReleaseTerminal implements Client.
72+ func (c * clientFuncs ) ReleaseTerminal (ctx context.Context , params ReleaseTerminalRequest ) error {
73+ if c .ReleaseTerminalFunc != nil {
74+ return c .ReleaseTerminalFunc (ctx , params )
75+ }
76+ return nil
77+ }
78+
79+ // TerminalOutput implements Client.
80+ func (c * clientFuncs ) TerminalOutput (ctx context.Context , params TerminalOutputRequest ) (TerminalOutputResponse , error ) {
81+ if c .TerminalOutputFunc != nil {
82+ return c .TerminalOutputFunc (ctx , params )
83+ }
84+ return TerminalOutputResponse {Output : "ok" , Truncated : false }, nil
85+ }
86+
87+ // WaitForTerminalExit implements Client.
88+ func (c * clientFuncs ) WaitForTerminalExit (ctx context.Context , params WaitForTerminalExitRequest ) (WaitForTerminalExitResponse , error ) {
89+ if c .WaitForTerminalExitFunc != nil {
90+ return c .WaitForTerminalExitFunc (ctx , params )
91+ }
92+ return WaitForTerminalExitResponse {}, nil
93+ }
94+
4995type agentFuncs struct {
5096 InitializeFunc func (context.Context , InitializeRequest ) (InitializeResponse , error )
5197 NewSessionFunc func (context.Context , NewSessionRequest ) (NewSessionResponse , error )
@@ -108,7 +154,7 @@ func TestConnectionHandlesErrorsBidirectional(t *testing.T) {
108154 c2aR , c2aW := io .Pipe ()
109155 a2cR , a2cW := io .Pipe ()
110156
111- c := NewClientSideConnection (clientFuncs {
157+ c := NewClientSideConnection (& clientFuncs {
112158 WriteTextFileFunc : func (context.Context , WriteTextFileRequest ) error {
113159 return & RequestError {Code : - 32603 , Message : "Write failed" }
114160 },
@@ -158,7 +204,7 @@ func TestConnectionHandlesConcurrentRequests(t *testing.T) {
158204 var mu sync.Mutex
159205 requestCount := 0
160206
161- _ = NewClientSideConnection (clientFuncs {
207+ _ = NewClientSideConnection (& clientFuncs {
162208 WriteTextFileFunc : func (context.Context , WriteTextFileRequest ) error {
163209 mu .Lock ()
164210 requestCount ++
@@ -229,7 +275,7 @@ func TestConnectionHandlesMessageOrdering(t *testing.T) {
229275 var log []string
230276 push := func (s string ) { mu .Lock (); defer mu .Unlock (); log = append (log , s ) }
231277
232- cs := NewClientSideConnection (clientFuncs {
278+ cs := NewClientSideConnection (& clientFuncs {
233279 WriteTextFileFunc : func (_ context.Context , req WriteTextFileRequest ) error {
234280 push ("writeTextFile called: " + req .Path )
235281 return nil
@@ -329,7 +375,7 @@ func TestConnectionHandlesNotifications(t *testing.T) {
329375 var logs []string
330376 push := func (s string ) { mu .Lock (); logs = append (logs , s ); mu .Unlock () }
331377
332- clientSide := NewClientSideConnection (clientFuncs {
378+ clientSide := NewClientSideConnection (& clientFuncs {
333379 WriteTextFileFunc : func (context.Context , WriteTextFileRequest ) error { return nil },
334380 ReadTextFileFunc : func (context.Context , ReadTextFileRequest ) (ReadTextFileResponse , error ) {
335381 return ReadTextFileResponse {Content : "test" }, nil
@@ -400,7 +446,7 @@ func TestConnectionHandlesInitialize(t *testing.T) {
400446 c2aR , c2aW := io .Pipe ()
401447 a2cR , a2cW := io .Pipe ()
402448
403- agentConn := NewClientSideConnection (clientFuncs {
449+ agentConn := NewClientSideConnection (& clientFuncs {
404450 WriteTextFileFunc : func (context.Context , WriteTextFileRequest ) error { return nil },
405451 ReadTextFileFunc : func (context.Context , ReadTextFileRequest ) (ReadTextFileResponse , error ) {
406452 return ReadTextFileResponse {Content : "test" }, nil
@@ -501,7 +547,7 @@ func TestPromptCancellationSendsCancelAndAllowsNewSession(t *testing.T) {
501547 }, a2cW , c2aR )
502548
503549 // Client side
504- cs := NewClientSideConnection (clientFuncs {
550+ cs := NewClientSideConnection (& clientFuncs {
505551 WriteTextFileFunc : func (context.Context , WriteTextFileRequest ) error { return nil },
506552 ReadTextFileFunc : func (context.Context , ReadTextFileRequest ) (ReadTextFileResponse , error ) {
507553 return ReadTextFileResponse {Content : "" }, nil
0 commit comments