Skip to content

Commit 9dc6792

Browse files
authored
Add ExecuteCode notebook MCP and pin protoc-gen-go-mcp (#1095)
## Summary - add a new `ExecuteCode` RPC to the notebooks tool proto and regenerate tool artifacts - expose the new tool through Codex notebook MCP wiring - pin `protoc-gen-go-mcp` in `buf.gen.yaml` to `v0.0.0-20260323112146-887f275039cd` - adapt generated runtime tool values to `mcp-go` tool values in the Codex notebook MCP bridge ## Why - `protoc-gen-go-mcp` output now returns runtime tool types that are not directly accepted by `mcp-go` server registration - pinning the generator makes output stable/reproducible - the adapter keeps runme compatible with the current generator output without post-generation rewrite hacks ## Validation - `go test ./pkg/agent/codex` - `go test ./pkg/agent/ai/tools` ## Related to runmedev/web#154 --------- Signed-off-by: Jeremy lewi <jeremy@lewi.us>
1 parent d064e5a commit 9dc6792

40 files changed

+855
-3988
lines changed

api/gen/proto/es/agent/tools/v1/notebooks_pb.d.ts

Lines changed: 49 additions & 396 deletions
Large diffs are not rendered by default.

api/gen/proto/es/agent/tools/v1/notebooks_pb.js

Lines changed: 15 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -3,103 +3,60 @@
33
/* eslint-disable */
44

55
import { enumDesc, fileDesc, messageDesc, serviceDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
6-
import { file_runme_parser_v1_parser } from "../../../runme/parser/v1/parser_pb";
76

87
/**
98
* Describes the file agent/tools/v1/notebooks.proto.
109
*/
1110
export const file_agent_tools_v1_notebooks = /*@__PURE__*/
12-
fileDesc("Ch5hZ2VudC90b29scy92MS9ub3RlYm9va3MucHJvdG8SDmFnZW50LnRvb2xzLnYxIhIKEExpc3RDZWxsc1JlcXVlc3QiOQoRTGlzdENlbGxzUmVzcG9uc2USJAoFY2VsbHMYAiADKAsyFS5ydW5tZS5wYXJzZXIudjEuQ2VsbCIiCg9HZXRDZWxsc1JlcXVlc3QSDwoHcmVmX2lkcxgBIAMoCSI4ChBHZXRDZWxsc1Jlc3BvbnNlEiQKBWNlbGxzGAEgAygLMhUucnVubWUucGFyc2VyLnYxLkNlbGwiOgoSVXBkYXRlQ2VsbHNSZXF1ZXN0EiQKBWNlbGxzGAEgAygLMhUucnVubWUucGFyc2VyLnYxLkNlbGwiOwoTVXBkYXRlQ2VsbHNSZXNwb25zZRIkCgVjZWxscxgBIAMoCzIVLnJ1bm1lLnBhcnNlci52MS5DZWxsIjUKIk5vdGVib29rU2VydmljZUV4ZWN1dGVDZWxsc1JlcXVlc3QSDwoHcmVmX2lkcxgBIAMoCSJLCiNOb3RlYm9va1NlcnZpY2VFeGVjdXRlQ2VsbHNSZXNwb25zZRIkCgVjZWxscxgBIAMoCzIVLnJ1bm1lLnBhcnNlci52MS5DZWxsIhUKE1Rlcm1pbmF0ZVJ1blJlcXVlc3QiFgoUVGVybWluYXRlUnVuUmVzcG9uc2UiwwMKDVRvb2xDYWxsSW5wdXQSDwoHY2FsbF9pZBgBIAEoCRIcChRwcmV2aW91c19yZXNwb25zZV9pZBgCIAEoCRI6Cgx1cGRhdGVfY2VsbHMYAyABKAsyIi5hZ2VudC50b29scy52MS5VcGRhdGVDZWxsc1JlcXVlc3RIABI2CgpsaXN0X2NlbGxzGAQgASgLMiAuYWdlbnQudG9vbHMudjEuTGlzdENlbGxzUmVxdWVzdEgAEjQKCWdldF9jZWxscxgFIAEoCzIfLmFnZW50LnRvb2xzLnYxLkdldENlbGxzUmVxdWVzdEgAEksKDWV4ZWN1dGVfY2VsbHMYBiABKAsyMi5hZ2VudC50b29scy52MS5Ob3RlYm9va1NlcnZpY2VFeGVjdXRlQ2VsbHNSZXF1ZXN0SAASPAoNdGVybWluYXRlX3J1bhgHIAEoCzIjLmFnZW50LnRvb2xzLnYxLlRlcm1pbmF0ZVJ1blJlcXVlc3RIABJFChJzZW5kX3NsYWNrX21lc3NhZ2UYCCABKAsyJy5hZ2VudC50b29scy52MS5TZW5kU2xhY2tNZXNzYWdlUmVxdWVzdEgAQgcKBWlucHV0IuEECg5Ub29sQ2FsbE91dHB1dBIPCgdjYWxsX2lkGAEgASgJEhwKFHByZXZpb3VzX3Jlc3BvbnNlX2lkGAIgASgJEjsKDHVwZGF0ZV9jZWxscxgDIAEoCzIjLmFnZW50LnRvb2xzLnYxLlVwZGF0ZUNlbGxzUmVzcG9uc2VIABI3CgpsaXN0X2NlbGxzGAQgASgLMiEuYWdlbnQudG9vbHMudjEuTGlzdENlbGxzUmVzcG9uc2VIABI1CglnZXRfY2VsbHMYBSABKAsyIC5hZ2VudC50b29scy52MS5HZXRDZWxsc1Jlc3BvbnNlSAASTAoNZXhlY3V0ZV9jZWxscxgIIAEoCzIzLmFnZW50LnRvb2xzLnYxLk5vdGVib29rU2VydmljZUV4ZWN1dGVDZWxsc1Jlc3BvbnNlSAASPQoNdGVybWluYXRlX3J1bhgJIAEoCzIkLmFnZW50LnRvb2xzLnYxLlRlcm1pbmF0ZVJ1blJlc3BvbnNlSAASRgoSc2VuZF9zbGFja19tZXNzYWdlGAogASgLMiguYWdlbnQudG9vbHMudjEuU2VuZFNsYWNrTWVzc2FnZVJlc3BvbnNlSAASNQoGc3RhdHVzGAYgASgOMiUuYWdlbnQudG9vbHMudjEuVG9vbENhbGxPdXRwdXQuU3RhdHVzEhQKDGNsaWVudF9lcnJvchgHIAEoCSJHCgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOU1RBVFVTX1NVQ0NFU1MQARIRCg1TVEFUVVNfRkFJTEVEEAJCCAoGb3V0cHV0Ij8KDENoYXRraXRTdGF0ZRIcChRwcmV2aW91c19yZXNwb25zZV9pZBgBIAEoCRIRCgl0aHJlYWRfaWQYAiABKAkiXQoXU2VuZFNsYWNrTWVzc2FnZVJlcXVlc3QSDwoHY2hhbm5lbBgBIAEoCRIRCgl0aW1lc3RhbXAYAiABKAkSDAoEdGV4dBgDIAEoCRIQCghmaWxlX2lkcxgEIAMoCSIpChhTZW5kU2xhY2tNZXNzYWdlUmVzcG9uc2USDQoFZXJyb3IYASABKAky0QQKD05vdGVib29rU2VydmljZRJYCgtVcGRhdGVDZWxscxIiLmFnZW50LnRvb2xzLnYxLlVwZGF0ZUNlbGxzUmVxdWVzdBojLmFnZW50LnRvb2xzLnYxLlVwZGF0ZUNlbGxzUmVzcG9uc2UiABJPCghHZXRDZWxscxIfLmFnZW50LnRvb2xzLnYxLkdldENlbGxzUmVxdWVzdBogLmFnZW50LnRvb2xzLnYxLkdldENlbGxzUmVzcG9uc2UiABJSCglMaXN0Q2VsbHMSIC5hZ2VudC50b29scy52MS5MaXN0Q2VsbHNSZXF1ZXN0GiEuYWdlbnQudG9vbHMudjEuTGlzdENlbGxzUmVzcG9uc2UiABJ5CgxFeGVjdXRlQ2VsbHMSMi5hZ2VudC50b29scy52MS5Ob3RlYm9va1NlcnZpY2VFeGVjdXRlQ2VsbHNSZXF1ZXN0GjMuYWdlbnQudG9vbHMudjEuTm90ZWJvb2tTZXJ2aWNlRXhlY3V0ZUNlbGxzUmVzcG9uc2UiABJbCgxUZXJtaW5hdGVSdW4SIy5hZ2VudC50b29scy52MS5UZXJtaW5hdGVSdW5SZXF1ZXN0GiQuYWdlbnQudG9vbHMudjEuVGVybWluYXRlUnVuUmVzcG9uc2UiABJnChBTZW5kU2xhY2tNZXNzYWdlEicuYWdlbnQudG9vbHMudjEuU2VuZFNsYWNrTWVzc2FnZVJlcXVlc3QaKC5hZ2VudC50b29scy52MS5TZW5kU2xhY2tNZXNzYWdlUmVzcG9uc2UiAEJGWkRnaXRodWIuY29tL3J1bm1lZGV2L3J1bm1lL3YzL2FwaS9nZW4vcHJvdG8vZ28vYWdlbnQvdG9vbHMvdjE7dG9vbHN2MWIGcHJvdG8z", [file_runme_parser_v1_parser]);
11+
fileDesc("Ch5hZ2VudC90b29scy92MS9ub3RlYm9va3MucHJvdG8SDmFnZW50LnRvb2xzLnYxIiIKEkV4ZWN1dGVDb2RlUmVxdWVzdBIMCgRjb2RlGAEgASgJIiUKE0V4ZWN1dGVDb2RlUmVzcG9uc2USDgoGb3V0cHV0GAEgASgJIhUKE1Rlcm1pbmF0ZVJ1blJlcXVlc3QiFgoUVGVybWluYXRlUnVuUmVzcG9uc2Ui/gEKDVRvb2xDYWxsSW5wdXQSDwoHY2FsbF9pZBgBIAEoCRIcChRwcmV2aW91c19yZXNwb25zZV9pZBgCIAEoCRI6CgxleGVjdXRlX2NvZGUYCSABKAsyIi5hZ2VudC50b29scy52MS5FeGVjdXRlQ29kZVJlcXVlc3RIAEIHCgVpbnB1dEoECAMQBEoECAQQBUoECAUQBkoECAYQB0oECAcQCEoECAgQCVIMdXBkYXRlX2NlbGxzUgpsaXN0X2NlbGxzUglnZXRfY2VsbHNSDWV4ZWN1dGVfY2VsbHNSDXRlcm1pbmF0ZV9ydW5SEnNlbmRfc2xhY2tfbWVzc2FnZSKXAwoOVG9vbENhbGxPdXRwdXQSDwoHY2FsbF9pZBgBIAEoCRIcChRwcmV2aW91c19yZXNwb25zZV9pZBgCIAEoCRI7CgxleGVjdXRlX2NvZGUYCyABKAsyIy5hZ2VudC50b29scy52MS5FeGVjdXRlQ29kZVJlc3BvbnNlSAASNQoGc3RhdHVzGAYgASgOMiUuYWdlbnQudG9vbHMudjEuVG9vbENhbGxPdXRwdXQuU3RhdHVzEhQKDGNsaWVudF9lcnJvchgHIAEoCSJHCgZTdGF0dXMSFgoSU1RBVFVTX1VOU1BFQ0lGSUVEEAASEgoOU1RBVFVTX1NVQ0NFU1MQARIRCg1TVEFUVVNfRkFJTEVEEAJCCAoGb3V0cHV0SgQIAxAESgQIBBAFSgQIBRAGSgQICBAJSgQICRAKSgQIChALUgx1cGRhdGVfY2VsbHNSCmxpc3RfY2VsbHNSCWdldF9jZWxsc1INZXhlY3V0ZV9jZWxsc1INdGVybWluYXRlX3J1blISc2VuZF9zbGFja19tZXNzYWdlIj8KDENoYXRraXRTdGF0ZRIcChRwcmV2aW91c19yZXNwb25zZV9pZBgBIAEoCRIRCgl0aHJlYWRfaWQYAiABKAkiXQoXU2VuZFNsYWNrTWVzc2FnZVJlcXVlc3QSDwoHY2hhbm5lbBgBIAEoCRIRCgl0aW1lc3RhbXAYAiABKAkSDAoEdGV4dBgDIAEoCRIQCghmaWxlX2lkcxgEIAMoCSIpChhTZW5kU2xhY2tNZXNzYWdlUmVzcG9uc2USDQoFZXJyb3IYASABKAkyawoPTm90ZWJvb2tTZXJ2aWNlElgKC0V4ZWN1dGVDb2RlEiIuYWdlbnQudG9vbHMudjEuRXhlY3V0ZUNvZGVSZXF1ZXN0GiMuYWdlbnQudG9vbHMudjEuRXhlY3V0ZUNvZGVSZXNwb25zZSIAQkZaRGdpdGh1Yi5jb20vcnVubWVkZXYvcnVubWUvdjMvYXBpL2dlbi9wcm90by9nby9hZ2VudC90b29scy92MTt0b29sc3YxYgZwcm90bzM");
1312

1413
/**
15-
* Describes the message agent.tools.v1.ListCellsRequest.
16-
* Use `create(ListCellsRequestSchema)` to create a new message.
14+
* Describes the message agent.tools.v1.ExecuteCodeRequest.
15+
* Use `create(ExecuteCodeRequestSchema)` to create a new message.
1716
*/
18-
export const ListCellsRequestSchema = /*@__PURE__*/
17+
export const ExecuteCodeRequestSchema = /*@__PURE__*/
1918
messageDesc(file_agent_tools_v1_notebooks, 0);
2019

2120
/**
22-
* Describes the message agent.tools.v1.ListCellsResponse.
23-
* Use `create(ListCellsResponseSchema)` to create a new message.
21+
* Describes the message agent.tools.v1.ExecuteCodeResponse.
22+
* Use `create(ExecuteCodeResponseSchema)` to create a new message.
2423
*/
25-
export const ListCellsResponseSchema = /*@__PURE__*/
24+
export const ExecuteCodeResponseSchema = /*@__PURE__*/
2625
messageDesc(file_agent_tools_v1_notebooks, 1);
2726

28-
/**
29-
* Describes the message agent.tools.v1.GetCellsRequest.
30-
* Use `create(GetCellsRequestSchema)` to create a new message.
31-
*/
32-
export const GetCellsRequestSchema = /*@__PURE__*/
33-
messageDesc(file_agent_tools_v1_notebooks, 2);
34-
35-
/**
36-
* Describes the message agent.tools.v1.GetCellsResponse.
37-
* Use `create(GetCellsResponseSchema)` to create a new message.
38-
*/
39-
export const GetCellsResponseSchema = /*@__PURE__*/
40-
messageDesc(file_agent_tools_v1_notebooks, 3);
41-
42-
/**
43-
* Describes the message agent.tools.v1.UpdateCellsRequest.
44-
* Use `create(UpdateCellsRequestSchema)` to create a new message.
45-
*/
46-
export const UpdateCellsRequestSchema = /*@__PURE__*/
47-
messageDesc(file_agent_tools_v1_notebooks, 4);
48-
49-
/**
50-
* Describes the message agent.tools.v1.UpdateCellsResponse.
51-
* Use `create(UpdateCellsResponseSchema)` to create a new message.
52-
*/
53-
export const UpdateCellsResponseSchema = /*@__PURE__*/
54-
messageDesc(file_agent_tools_v1_notebooks, 5);
55-
56-
/**
57-
* Describes the message agent.tools.v1.NotebookServiceExecuteCellsRequest.
58-
* Use `create(NotebookServiceExecuteCellsRequestSchema)` to create a new message.
59-
*/
60-
export const NotebookServiceExecuteCellsRequestSchema = /*@__PURE__*/
61-
messageDesc(file_agent_tools_v1_notebooks, 6);
62-
63-
/**
64-
* Describes the message agent.tools.v1.NotebookServiceExecuteCellsResponse.
65-
* Use `create(NotebookServiceExecuteCellsResponseSchema)` to create a new message.
66-
*/
67-
export const NotebookServiceExecuteCellsResponseSchema = /*@__PURE__*/
68-
messageDesc(file_agent_tools_v1_notebooks, 7);
69-
7027
/**
7128
* Describes the message agent.tools.v1.TerminateRunRequest.
7229
* Use `create(TerminateRunRequestSchema)` to create a new message.
7330
*/
7431
export const TerminateRunRequestSchema = /*@__PURE__*/
75-
messageDesc(file_agent_tools_v1_notebooks, 8);
32+
messageDesc(file_agent_tools_v1_notebooks, 2);
7633

7734
/**
7835
* Describes the message agent.tools.v1.TerminateRunResponse.
7936
* Use `create(TerminateRunResponseSchema)` to create a new message.
8037
*/
8138
export const TerminateRunResponseSchema = /*@__PURE__*/
82-
messageDesc(file_agent_tools_v1_notebooks, 9);
39+
messageDesc(file_agent_tools_v1_notebooks, 3);
8340

8441
/**
8542
* Describes the message agent.tools.v1.ToolCallInput.
8643
* Use `create(ToolCallInputSchema)` to create a new message.
8744
*/
8845
export const ToolCallInputSchema = /*@__PURE__*/
89-
messageDesc(file_agent_tools_v1_notebooks, 10);
46+
messageDesc(file_agent_tools_v1_notebooks, 4);
9047

9148
/**
9249
* Describes the message agent.tools.v1.ToolCallOutput.
9350
* Use `create(ToolCallOutputSchema)` to create a new message.
9451
*/
9552
export const ToolCallOutputSchema = /*@__PURE__*/
96-
messageDesc(file_agent_tools_v1_notebooks, 11);
53+
messageDesc(file_agent_tools_v1_notebooks, 5);
9754

9855
/**
9956
* Describes the enum agent.tools.v1.ToolCallOutput.Status.
10057
*/
10158
export const ToolCallOutput_StatusSchema = /*@__PURE__*/
102-
enumDesc(file_agent_tools_v1_notebooks, 11, 0);
59+
enumDesc(file_agent_tools_v1_notebooks, 5, 0);
10360

10461
/**
10562
* @generated from enum agent.tools.v1.ToolCallOutput.Status
@@ -112,21 +69,21 @@ export const ToolCallOutput_Status = /*@__PURE__*/
11269
* Use `create(ChatkitStateSchema)` to create a new message.
11370
*/
11471
export const ChatkitStateSchema = /*@__PURE__*/
115-
messageDesc(file_agent_tools_v1_notebooks, 12);
72+
messageDesc(file_agent_tools_v1_notebooks, 6);
11673

11774
/**
11875
* Describes the message agent.tools.v1.SendSlackMessageRequest.
11976
* Use `create(SendSlackMessageRequestSchema)` to create a new message.
12077
*/
12178
export const SendSlackMessageRequestSchema = /*@__PURE__*/
122-
messageDesc(file_agent_tools_v1_notebooks, 13);
79+
messageDesc(file_agent_tools_v1_notebooks, 7);
12380

12481
/**
12582
* Describes the message agent.tools.v1.SendSlackMessageResponse.
12683
* Use `create(SendSlackMessageResponseSchema)` to create a new message.
12784
*/
12885
export const SendSlackMessageResponseSchema = /*@__PURE__*/
129-
messageDesc(file_agent_tools_v1_notebooks, 14);
86+
messageDesc(file_agent_tools_v1_notebooks, 8);
13087

13188
/**
13289
* NotebookService defines methods the AI can use to interact with the notebook.
@@ -137,9 +94,6 @@ export const SendSlackMessageResponseSchema = /*@__PURE__*/
13794
*
13895
* It looks like only comments on the method get translated into the description.
13996
*
140-
* TODO(jlewi): We should make it UpdateCells to allow the model to update multiple cells in a
141-
* single call.
142-
*
14397
* @generated from service agent.tools.v1.NotebookService
14498
*/
14599
export const NotebookService = /*@__PURE__*/

0 commit comments

Comments
 (0)