Skip to content

Commit 0fcaef4

Browse files
committed
feat(acp): add reusable ACP provider controls
Signed-off-by: Bradley Axen <baxen@squareup.com>
1 parent e94f304 commit 0fcaef4

26 files changed

Lines changed: 2123 additions & 176 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/goose-acp/acp-meta.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,31 @@
4949
"method": "_goose/config/extensions",
5050
"requestType": "GetExtensionsRequest",
5151
"responseType": "GetExtensionsResponse"
52+
},
53+
{
54+
"method": "_goose/session/provider/update",
55+
"requestType": "UpdateProviderRequest",
56+
"responseType": "UpdateProviderResponse"
57+
},
58+
{
59+
"method": "_goose/providers/list",
60+
"requestType": "ListProvidersRequest",
61+
"responseType": "ListProvidersResponse"
62+
},
63+
{
64+
"method": "_goose/config/read",
65+
"requestType": "ReadConfigRequest",
66+
"responseType": "ReadConfigResponse"
67+
},
68+
{
69+
"method": "_goose/config/upsert",
70+
"requestType": "UpsertConfigRequest",
71+
"responseType": "EmptyResponse"
72+
},
73+
{
74+
"method": "_goose/config/remove",
75+
"requestType": "RemoveConfigRequest",
76+
"responseType": "EmptyResponse"
5277
}
5378
]
5479
}

crates/goose-acp/acp-schema.json

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,172 @@
252252
"x-side": "agent",
253253
"x-method": "_goose/config/extensions"
254254
},
255+
"UpdateProviderRequest": {
256+
"type": "object",
257+
"properties": {
258+
"sessionId": {
259+
"type": "string"
260+
},
261+
"provider": {
262+
"type": "string"
263+
},
264+
"model": {
265+
"type": [
266+
"string",
267+
"null"
268+
]
269+
},
270+
"contextLimit": {
271+
"type": [
272+
"integer",
273+
"null"
274+
],
275+
"format": "uint",
276+
"minimum": 0
277+
},
278+
"requestParams": {
279+
"type": [
280+
"object",
281+
"null"
282+
],
283+
"additionalProperties": true
284+
}
285+
},
286+
"required": [
287+
"sessionId",
288+
"provider"
289+
],
290+
"description": "Atomically update the provider for a live session.",
291+
"x-side": "agent",
292+
"x-method": "_goose/session/provider/update"
293+
},
294+
"UpdateProviderResponse": {
295+
"type": "object",
296+
"properties": {
297+
"configOptions": {
298+
"type": "array",
299+
"items": true,
300+
"description": "Refreshed session config options after the provider/model change."
301+
}
302+
},
303+
"required": [
304+
"configOptions"
305+
],
306+
"description": "Provider update response.",
307+
"x-side": "agent",
308+
"x-method": "_goose/session/provider/update"
309+
},
310+
"ListProvidersRequest": {
311+
"type": "object",
312+
"description": "List providers available through goose, including the config-default sentinel.",
313+
"x-side": "agent",
314+
"x-method": "_goose/providers/list"
315+
},
316+
"ListProvidersResponse": {
317+
"type": "object",
318+
"properties": {
319+
"providers": {
320+
"type": "array",
321+
"items": {
322+
"$ref": "#/$defs/ProviderListEntry"
323+
}
324+
}
325+
},
326+
"required": [
327+
"providers"
328+
],
329+
"description": "Provider list response.",
330+
"x-side": "agent",
331+
"x-method": "_goose/providers/list"
332+
},
333+
"ProviderListEntry": {
334+
"type": "object",
335+
"properties": {
336+
"id": {
337+
"type": "string"
338+
},
339+
"label": {
340+
"type": "string"
341+
}
342+
},
343+
"required": [
344+
"id",
345+
"label"
346+
]
347+
},
348+
"ReadConfigRequest": {
349+
"type": "object",
350+
"properties": {
351+
"key": {
352+
"type": "string"
353+
},
354+
"isSecret": {
355+
"type": "boolean"
356+
}
357+
},
358+
"required": [
359+
"key",
360+
"isSecret"
361+
],
362+
"description": "Read a single config value.",
363+
"x-side": "agent",
364+
"x-method": "_goose/config/read"
365+
},
366+
"ReadConfigResponse": {
367+
"type": "object",
368+
"properties": {
369+
"value": {
370+
"default": null
371+
},
372+
"maskedValue": {
373+
"type": [
374+
"string",
375+
"null"
376+
]
377+
}
378+
},
379+
"description": "Config read response.",
380+
"x-side": "agent",
381+
"x-method": "_goose/config/read"
382+
},
383+
"UpsertConfigRequest": {
384+
"type": "object",
385+
"properties": {
386+
"key": {
387+
"type": "string"
388+
},
389+
"value": true,
390+
"isSecret": {
391+
"type": "boolean"
392+
}
393+
},
394+
"required": [
395+
"key",
396+
"value",
397+
"isSecret"
398+
],
399+
"description": "Upsert a single config value.",
400+
"x-side": "agent",
401+
"x-method": "_goose/config/upsert"
402+
},
403+
"RemoveConfigRequest": {
404+
"type": "object",
405+
"properties": {
406+
"key": {
407+
"type": "string"
408+
},
409+
"isSecret": {
410+
"type": "boolean"
411+
}
412+
},
413+
"required": [
414+
"key",
415+
"isSecret"
416+
],
417+
"description": "Remove a single config value.",
418+
"x-side": "agent",
419+
"x-method": "_goose/config/remove"
420+
},
255421
"ExtRequest": {
256422
"properties": {
257423
"id": {
@@ -353,6 +519,51 @@
353519
],
354520
"description": "Params for _goose/config/extensions",
355521
"title": "GetExtensionsRequest"
522+
},
523+
{
524+
"allOf": [
525+
{
526+
"$ref": "#/$defs/UpdateProviderRequest"
527+
}
528+
],
529+
"description": "Params for _goose/session/provider/update",
530+
"title": "UpdateProviderRequest"
531+
},
532+
{
533+
"allOf": [
534+
{
535+
"$ref": "#/$defs/ListProvidersRequest"
536+
}
537+
],
538+
"description": "Params for _goose/providers/list",
539+
"title": "ListProvidersRequest"
540+
},
541+
{
542+
"allOf": [
543+
{
544+
"$ref": "#/$defs/ReadConfigRequest"
545+
}
546+
],
547+
"description": "Params for _goose/config/read",
548+
"title": "ReadConfigRequest"
549+
},
550+
{
551+
"allOf": [
552+
{
553+
"$ref": "#/$defs/UpsertConfigRequest"
554+
}
555+
],
556+
"description": "Params for _goose/config/upsert",
557+
"title": "UpsertConfigRequest"
558+
},
559+
{
560+
"allOf": [
561+
{
562+
"$ref": "#/$defs/RemoveConfigRequest"
563+
}
564+
],
565+
"description": "Params for _goose/config/remove",
566+
"title": "RemoveConfigRequest"
356567
}
357568
]
358569
},
@@ -439,6 +650,30 @@
439650
}
440651
],
441652
"title": "GetExtensionsResponse"
653+
},
654+
{
655+
"allOf": [
656+
{
657+
"$ref": "#/$defs/UpdateProviderResponse"
658+
}
659+
],
660+
"title": "UpdateProviderResponse"
661+
},
662+
{
663+
"allOf": [
664+
{
665+
"$ref": "#/$defs/ListProvidersResponse"
666+
}
667+
],
668+
"title": "ListProvidersResponse"
669+
},
670+
{
671+
"allOf": [
672+
{
673+
"$ref": "#/$defs/ReadConfigResponse"
674+
}
675+
],
676+
"title": "ReadConfigResponse"
442677
}
443678
]
444679
},

0 commit comments

Comments
 (0)