@@ -189,6 +189,66 @@ T["ACP Connection"]["uses session/load when agent supports it"] = function()
189189 h .eq (result .session_id , " prev-session" )
190190end
191191
192+ T [" ACP Connection" ][" session/load restores modes and models metadata" ] = function ()
193+ local result = child .lua ([[
194+ local connection = create_init_connection()
195+ connection.session_id = "prev-session"
196+ function connection:send_rpc_request(method, params)
197+ if method == "initialize" then
198+ return { protocolVersion = 1, authMethods = {}, agentCapabilities = { loadSession = true } }
199+ elseif method == "session/load" then
200+ return {
201+ modes = { { id = "code", name = "Code" }, { id = "ask", name = "Ask" } },
202+ models = { { id = "claude-sonnet", name = "Claude Sonnet" } },
203+ }
204+ end
205+ end
206+
207+ local ok = connection:connect_and_initialize()
208+ return {
209+ ok = ok ~= nil,
210+ modes = connection._modes,
211+ models = connection._models,
212+ }
213+ ]] )
214+
215+ h .eq (result .ok , true )
216+ h .eq (# result .modes , 2 )
217+ h .eq (result .modes [1 ].id , " code" )
218+ h .eq (# result .models , 1 )
219+ h .eq (result .models [1 ].id , " claude-sonnet" )
220+ end
221+
222+ T [" ACP Connection" ][" session/new stores modes and models metadata" ] = function ()
223+ local result = child .lua ([[
224+ local connection = create_init_connection()
225+ function connection:send_rpc_request(method, params)
226+ if method == "initialize" then
227+ return { protocolVersion = 1, authMethods = {}, agentCapabilities = { loadSession = false } }
228+ elseif method == "session/new" then
229+ return {
230+ sessionId = "new-session",
231+ modes = { { id = "agent", name = "Agent" } },
232+ models = { { id = "claude-opus", name = "Claude Opus" } },
233+ }
234+ end
235+ end
236+
237+ local ok = connection:connect_and_initialize()
238+ return {
239+ ok = ok ~= nil,
240+ modes = connection._modes,
241+ models = connection._models,
242+ }
243+ ]] )
244+
245+ h .eq (result .ok , true )
246+ h .eq (# result .modes , 1 )
247+ h .eq (result .modes [1 ].id , " agent" )
248+ h .eq (# result .models , 1 )
249+ h .eq (result .models [1 ].id , " claude-opus" )
250+ end
251+
192252T [" ACP Connection" ][" falls back to session/new if session/load fails" ] = function ()
193253 local result = child .lua ([[
194254 local calls = {}
0 commit comments