@tt-a1i/openpi 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -11
- package/SETUP.md +2 -2
- package/THIRD_PARTY_NOTICES.md +242 -0
- package/extensions/ai-providers/README.md +12 -6
- package/extensions/ai-providers/cursor/connect-frame-reader.ts +76 -0
- package/extensions/ai-providers/cursor/input-images.ts +2 -3
- package/extensions/ai-providers/cursor/proto.ts +218 -11
- package/extensions/ai-providers/cursor/protobuf.ts +12 -2
- package/extensions/ai-providers/cursor/provider.ts +280 -37
- package/extensions/ai-providers/cursor/tool-bridge.ts +68 -0
- package/extensions/ai-providers/index.ts +3 -3
- package/extensions/file-mutation-display/index.ts +13 -9
- package/extensions/shared/agent-transcript.ts +3 -2
- package/extensions/shared/child-session.ts +14 -0
- package/extensions/subagents/index.ts +20 -3
- package/extensions/subagents/src/agent-types.ts +5 -17
- package/extensions/subagents/src/backends/pi.ts +70 -59
- package/extensions/subagents/src/backends/tool-preview.ts +29 -0
- package/extensions/subagents/src/manager.ts +2 -71
- package/extensions/subagents/src/prompt.ts +2 -2
- package/extensions/subagents/src/runtime.ts +10 -3
- package/extensions/web/index.ts +69 -5
- package/extensions/workflows/artifacts.ts +362 -23
- package/extensions/workflows/dashboard.ts +141 -21
- package/extensions/workflows/index.ts +62 -20
- package/extensions/workflows/progress-projection.ts +7 -1
- package/extensions/workflows/runner.ts +5 -162
- package/extensions/workflows/sandbox.ts +4 -0
- package/package.json +28 -4
- package/skills/subagents/REFERENCE.md +6 -7
- package/skills/subagents/SKILL.md +1 -1
- package/skills/workflows/REFERENCE.md +3 -1
- package/web/dist/app.js +87 -0
- package/web/dist/favicon.svg +9 -0
- package/web/dist/index.html +15 -0
- package/web/dist/styles.css +3 -0
- package/web/host/web-host.ts +6 -9
- package/web/ui/index.html +3 -131
- package/web/ui/public/favicon.svg +9 -0
- package/web/ui/src/app/App.tsx +134 -0
- package/web/ui/src/app/providers.tsx +38 -0
- package/web/ui/src/components/Markdown.tsx +58 -0
- package/web/ui/src/components/OpenPiLogo.tsx +41 -0
- package/web/ui/src/features/activity/ActivityBar.tsx +120 -0
- package/web/ui/src/features/composer/Composer.tsx +237 -0
- package/web/ui/src/features/sessions/SessionSidebar.tsx +418 -0
- package/web/ui/src/features/transcript/Transcript.tsx +860 -0
- package/web/ui/src/i18n.ts +159 -0
- package/web/ui/src/lib/format.ts +57 -0
- package/web/ui/src/main.tsx +16 -0
- package/web/ui/src/protocol/client.ts +199 -0
- package/web/ui/src/protocol/event-stream.ts +88 -0
- package/web/ui/src/store/web-store.ts +926 -0
- package/web/ui/src/styles.css +420 -0
- package/web/ui/tsconfig.json +12 -0
- package/web/ui/vite-env.d.ts +1 -0
- package/web/vite.config.mjs +21 -1
- package/web/host/static-assets.ts +0 -4
- package/web/ui/app.js +0 -1700
- package/web/ui/styles.css +0 -680
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The field numbers and message names are vendored from
|
|
5
5
|
* oh-my-pi@eab72e88e4, packages/catalog/src/discovery/cursor-proto.ts
|
|
6
|
-
* (MIT). Only the chat, image, model-discovery, and
|
|
7
|
-
* used by this
|
|
6
|
+
* (MIT). Only the chat, image, model-discovery, and Pi MCP bridge messages
|
|
7
|
+
* used by this provider are retained. Unknown fields are skipped by
|
|
8
8
|
* the local protobuf codec so newer Cursor messages remain forward-compatible.
|
|
9
9
|
*/
|
|
10
10
|
|
|
@@ -297,7 +297,8 @@ export interface ConversationStep extends ProtoMessage {
|
|
|
297
297
|
message:
|
|
298
298
|
| { case: undefined; value?: undefined }
|
|
299
299
|
| { case: "assistantMessage"; value: AssistantMessage }
|
|
300
|
-
| { case: "thinkingMessage"; value: ThinkingMessage }
|
|
300
|
+
| { case: "thinkingMessage"; value: ThinkingMessage }
|
|
301
|
+
| { case: "toolCall"; value: CursorToolCall };
|
|
301
302
|
}
|
|
302
303
|
|
|
303
304
|
export const ConversationStepSchema: MessageCodec<ConversationStep> =
|
|
@@ -306,6 +307,12 @@ export const ConversationStepSchema: MessageCodec<ConversationStep> =
|
|
|
306
307
|
kind: "oneof",
|
|
307
308
|
name: "message",
|
|
308
309
|
variants: [
|
|
310
|
+
{
|
|
311
|
+
no: 2,
|
|
312
|
+
name: "toolCall",
|
|
313
|
+
kind: "message",
|
|
314
|
+
T: () => CursorToolCallSchema,
|
|
315
|
+
},
|
|
309
316
|
{
|
|
310
317
|
no: 1,
|
|
311
318
|
name: "assistantMessage",
|
|
@@ -556,11 +563,77 @@ export const CursorRuleSchema: MessageCodec<CursorRule> = pb<CursorRule>(
|
|
|
556
563
|
],
|
|
557
564
|
);
|
|
558
565
|
|
|
559
|
-
|
|
560
|
-
|
|
566
|
+
export interface McpToolDefinition extends ProtoMessage {
|
|
567
|
+
name: string;
|
|
568
|
+
providerIdentifier: string;
|
|
569
|
+
toolName: string;
|
|
570
|
+
description: string;
|
|
571
|
+
inputSchema: Uint8Array;
|
|
572
|
+
inputSchemaJson?: string;
|
|
573
|
+
}
|
|
561
574
|
|
|
562
575
|
export const McpToolDefinitionSchema: MessageCodec<McpToolDefinition> =
|
|
563
|
-
pb<McpToolDefinition>("agent.v1.McpToolDefinition", [
|
|
576
|
+
pb<McpToolDefinition>("agent.v1.McpToolDefinition", [
|
|
577
|
+
{ no: 1, name: "name", kind: "string" },
|
|
578
|
+
{ no: 4, name: "providerIdentifier", kind: "string" },
|
|
579
|
+
{ no: 5, name: "toolName", kind: "string" },
|
|
580
|
+
{ no: 2, name: "description", kind: "string" },
|
|
581
|
+
{ no: 3, name: "inputSchema", kind: "bytes" },
|
|
582
|
+
{ no: 6, name: "inputSchemaJson", kind: "string", optional: true },
|
|
583
|
+
]);
|
|
584
|
+
|
|
585
|
+
export interface McpArgs extends ProtoMessage {
|
|
586
|
+
name: string;
|
|
587
|
+
args: Record<string, Uint8Array>;
|
|
588
|
+
toolCallId: string;
|
|
589
|
+
providerIdentifier: string;
|
|
590
|
+
toolName: string;
|
|
591
|
+
smartModeApprovalOnly: boolean;
|
|
592
|
+
skipApproval: boolean;
|
|
593
|
+
serverIdentifier: string;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
export const McpArgsSchema: MessageCodec<McpArgs> = pb<McpArgs>(
|
|
597
|
+
"agent.v1.McpArgs",
|
|
598
|
+
[
|
|
599
|
+
{ no: 1, name: "name", kind: "string" },
|
|
600
|
+
{ no: 2, name: "args", kind: "map", K: "string", V: "bytes" },
|
|
601
|
+
{ no: 3, name: "toolCallId", kind: "string" },
|
|
602
|
+
{ no: 4, name: "providerIdentifier", kind: "string" },
|
|
603
|
+
{ no: 5, name: "toolName", kind: "string" },
|
|
604
|
+
{ no: 7, name: "smartModeApprovalOnly", kind: "bool" },
|
|
605
|
+
{ no: 8, name: "skipApproval", kind: "bool" },
|
|
606
|
+
{ no: 9, name: "serverIdentifier", kind: "string" },
|
|
607
|
+
],
|
|
608
|
+
);
|
|
609
|
+
|
|
610
|
+
export interface McpRejected extends ProtoMessage {
|
|
611
|
+
reason: string;
|
|
612
|
+
isReadonly: boolean;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
export const McpRejectedSchema: MessageCodec<McpRejected> = pb<McpRejected>(
|
|
616
|
+
"agent.v1.McpRejected",
|
|
617
|
+
[
|
|
618
|
+
{ no: 1, name: "reason", kind: "string" },
|
|
619
|
+
{ no: 2, name: "isReadonly", kind: "bool" },
|
|
620
|
+
],
|
|
621
|
+
);
|
|
622
|
+
|
|
623
|
+
export interface McpToolCall extends ProtoMessage {
|
|
624
|
+
result?: McpToolResult;
|
|
625
|
+
args?: McpArgs;
|
|
626
|
+
description?: string;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
export const McpToolCallSchema: MessageCodec<McpToolCall> = pb<McpToolCall>(
|
|
630
|
+
"agent.v1.McpToolCall",
|
|
631
|
+
[
|
|
632
|
+
{ no: 2, name: "result", kind: "message", T: () => McpToolResultSchema },
|
|
633
|
+
{ no: 1, name: "args", kind: "message", T: () => McpArgsSchema },
|
|
634
|
+
{ no: 3, name: "description", kind: "string", optional: true },
|
|
635
|
+
],
|
|
636
|
+
);
|
|
564
637
|
|
|
565
638
|
export interface RequestContext extends ProtoMessage {
|
|
566
639
|
rules: CursorRule[];
|
|
@@ -677,7 +750,8 @@ export interface ExecClientMessage extends ProtoMessage {
|
|
|
677
750
|
execId: string;
|
|
678
751
|
message:
|
|
679
752
|
| { case: undefined; value?: undefined }
|
|
680
|
-
| { case: "requestContextResult"; value: RequestContextResult }
|
|
753
|
+
| { case: "requestContextResult"; value: RequestContextResult }
|
|
754
|
+
| { case: "mcpResult"; value: McpResult };
|
|
681
755
|
}
|
|
682
756
|
|
|
683
757
|
export const ExecClientMessageSchema: MessageCodec<ExecClientMessage> =
|
|
@@ -688,6 +762,12 @@ export const ExecClientMessageSchema: MessageCodec<ExecClientMessage> =
|
|
|
688
762
|
kind: "oneof",
|
|
689
763
|
name: "message",
|
|
690
764
|
variants: [
|
|
765
|
+
{
|
|
766
|
+
no: 11,
|
|
767
|
+
name: "mcpResult",
|
|
768
|
+
kind: "message",
|
|
769
|
+
T: () => McpResultSchema,
|
|
770
|
+
},
|
|
691
771
|
{
|
|
692
772
|
no: 10,
|
|
693
773
|
name: "requestContextResult",
|
|
@@ -756,7 +836,8 @@ export interface ExecServerMessage extends ProtoMessage {
|
|
|
756
836
|
execId: string;
|
|
757
837
|
message:
|
|
758
838
|
| { case: undefined; value?: undefined }
|
|
759
|
-
| { case: "requestContextArgs"; value: RequestContextArgs }
|
|
839
|
+
| { case: "requestContextArgs"; value: RequestContextArgs }
|
|
840
|
+
| { case: "mcpArgs"; value: McpArgs };
|
|
760
841
|
}
|
|
761
842
|
|
|
762
843
|
export const ExecServerMessageSchema: MessageCodec<ExecServerMessage> =
|
|
@@ -767,6 +848,7 @@ export const ExecServerMessageSchema: MessageCodec<ExecServerMessage> =
|
|
|
767
848
|
kind: "oneof",
|
|
768
849
|
name: "message",
|
|
769
850
|
variants: [
|
|
851
|
+
{ no: 11, name: "mcpArgs", kind: "message", T: () => McpArgsSchema },
|
|
770
852
|
{
|
|
771
853
|
no: 10,
|
|
772
854
|
name: "requestContextArgs",
|
|
@@ -940,7 +1022,7 @@ export const InteractionUpdateSchema: MessageCodec<InteractionUpdate> =
|
|
|
940
1022
|
no: 15,
|
|
941
1023
|
name: "toolCallDelta",
|
|
942
1024
|
kind: "message",
|
|
943
|
-
T: () =>
|
|
1025
|
+
T: () => InteractionQueryPayloadSchema,
|
|
944
1026
|
},
|
|
945
1027
|
{
|
|
946
1028
|
no: 2,
|
|
@@ -988,10 +1070,57 @@ export const InteractionUpdateSchema: MessageCodec<InteractionUpdate> =
|
|
|
988
1070
|
},
|
|
989
1071
|
]);
|
|
990
1072
|
|
|
991
|
-
export interface ToolInteractionUpdate extends ProtoMessage {
|
|
1073
|
+
export interface ToolInteractionUpdate extends ProtoMessage {
|
|
1074
|
+
callId?: string;
|
|
1075
|
+
toolCall?: CursorToolCall;
|
|
1076
|
+
argsTextDelta?: string;
|
|
1077
|
+
}
|
|
992
1078
|
|
|
993
1079
|
export const ToolInteractionUpdateSchema: MessageCodec<ToolInteractionUpdate> =
|
|
994
|
-
pb<ToolInteractionUpdate>("agent.v1.ToolInteractionUpdate", [
|
|
1080
|
+
pb<ToolInteractionUpdate>("agent.v1.ToolInteractionUpdate", [
|
|
1081
|
+
{ no: 1, name: "callId", kind: "string" },
|
|
1082
|
+
{ no: 2, name: "toolCall", kind: "message", T: () => CursorToolCallSchema },
|
|
1083
|
+
{ no: 3, name: "argsTextDelta", kind: "string" },
|
|
1084
|
+
]);
|
|
1085
|
+
|
|
1086
|
+
// Only the MCP branch is supported. Unknown native tool variants remain unknown
|
|
1087
|
+
// and are rejected by the provider rather than executed outside Pi.
|
|
1088
|
+
export interface CursorToolCall extends ProtoMessage {
|
|
1089
|
+
toolCallId?: string;
|
|
1090
|
+
tool:
|
|
1091
|
+
| { case: undefined; value?: undefined }
|
|
1092
|
+
| { case: "mcpToolCall"; value: McpToolCall };
|
|
1093
|
+
}
|
|
1094
|
+
export const CursorToolCallSchema = pb<CursorToolCall>("agent.v1.ToolCall", [
|
|
1095
|
+
{ no: 57, name: "toolCallId", kind: "string", optional: true },
|
|
1096
|
+
{
|
|
1097
|
+
kind: "oneof",
|
|
1098
|
+
name: "tool",
|
|
1099
|
+
variants: [
|
|
1100
|
+
{
|
|
1101
|
+
no: 15,
|
|
1102
|
+
name: "mcpToolCall",
|
|
1103
|
+
kind: "message",
|
|
1104
|
+
T: () => McpToolCallSchema,
|
|
1105
|
+
},
|
|
1106
|
+
],
|
|
1107
|
+
},
|
|
1108
|
+
]);
|
|
1109
|
+
|
|
1110
|
+
export interface McpResult extends ProtoMessage {
|
|
1111
|
+
result:
|
|
1112
|
+
| { case: undefined; value?: undefined }
|
|
1113
|
+
| { case: "rejected"; value: McpRejected };
|
|
1114
|
+
}
|
|
1115
|
+
export const McpResultSchema = pb<McpResult>("agent.v1.McpResult", [
|
|
1116
|
+
{
|
|
1117
|
+
kind: "oneof",
|
|
1118
|
+
name: "result",
|
|
1119
|
+
variants: [
|
|
1120
|
+
{ no: 3, name: "rejected", kind: "message", T: () => McpRejectedSchema },
|
|
1121
|
+
],
|
|
1122
|
+
},
|
|
1123
|
+
]);
|
|
995
1124
|
|
|
996
1125
|
export interface TextDeltaUpdate extends ProtoMessage {
|
|
997
1126
|
text: string;
|
|
@@ -1062,3 +1191,81 @@ export const GetUsableModelsResponseSchema: MessageCodec<GetUsableModelsResponse
|
|
|
1062
1191
|
repeat: true,
|
|
1063
1192
|
},
|
|
1064
1193
|
]);
|
|
1194
|
+
|
|
1195
|
+
export interface McpSuccess extends ProtoMessage {
|
|
1196
|
+
content: McpToolResultContentItem[];
|
|
1197
|
+
isError: boolean;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
export const McpSuccessSchema: MessageCodec<McpSuccess> = pb<McpSuccess>(
|
|
1201
|
+
"agent.v1.McpSuccess",
|
|
1202
|
+
[
|
|
1203
|
+
{
|
|
1204
|
+
no: 1,
|
|
1205
|
+
name: "content",
|
|
1206
|
+
kind: "message",
|
|
1207
|
+
T: () => McpToolResultContentItemSchema,
|
|
1208
|
+
repeat: true,
|
|
1209
|
+
},
|
|
1210
|
+
{ no: 2, name: "isError", kind: "bool" },
|
|
1211
|
+
],
|
|
1212
|
+
);
|
|
1213
|
+
|
|
1214
|
+
export interface McpTextContent extends ProtoMessage {
|
|
1215
|
+
text: string;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
export const McpTextContentSchema: MessageCodec<McpTextContent> =
|
|
1219
|
+
pb<McpTextContent>("agent.v1.McpTextContent", [
|
|
1220
|
+
{ no: 1, name: "text", kind: "string" },
|
|
1221
|
+
]);
|
|
1222
|
+
|
|
1223
|
+
export interface McpImageContent extends ProtoMessage {
|
|
1224
|
+
data: Uint8Array;
|
|
1225
|
+
mimeType: string;
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
export const McpImageContentSchema: MessageCodec<McpImageContent> =
|
|
1229
|
+
pb<McpImageContent>("agent.v1.McpImageContent", [
|
|
1230
|
+
{ no: 1, name: "data", kind: "bytes" },
|
|
1231
|
+
{ no: 2, name: "mimeType", kind: "string" },
|
|
1232
|
+
]);
|
|
1233
|
+
|
|
1234
|
+
export interface McpToolResultContentItem extends ProtoMessage {
|
|
1235
|
+
content:
|
|
1236
|
+
| { case: undefined; value?: undefined }
|
|
1237
|
+
| { case: "text"; value: McpTextContent }
|
|
1238
|
+
| { case: "image"; value: McpImageContent };
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
export const McpToolResultContentItemSchema: MessageCodec<McpToolResultContentItem> =
|
|
1242
|
+
pb<McpToolResultContentItem>("agent.v1.McpToolResultContentItem", [
|
|
1243
|
+
{
|
|
1244
|
+
kind: "oneof",
|
|
1245
|
+
name: "content",
|
|
1246
|
+
variants: [
|
|
1247
|
+
{ no: 1, name: "text", kind: "message", T: () => McpTextContentSchema },
|
|
1248
|
+
{
|
|
1249
|
+
no: 2,
|
|
1250
|
+
name: "image",
|
|
1251
|
+
kind: "message",
|
|
1252
|
+
T: () => McpImageContentSchema,
|
|
1253
|
+
},
|
|
1254
|
+
],
|
|
1255
|
+
},
|
|
1256
|
+
]);
|
|
1257
|
+
|
|
1258
|
+
export interface McpToolResult extends ProtoMessage {
|
|
1259
|
+
result:
|
|
1260
|
+
| { case: undefined; value?: undefined }
|
|
1261
|
+
| { case: "success"; value: McpSuccess };
|
|
1262
|
+
}
|
|
1263
|
+
export const McpToolResultSchema = pb<McpToolResult>("agent.v1.McpToolResult", [
|
|
1264
|
+
{
|
|
1265
|
+
kind: "oneof",
|
|
1266
|
+
name: "result",
|
|
1267
|
+
variants: [
|
|
1268
|
+
{ no: 1, name: "success", kind: "message", T: () => McpSuccessSchema },
|
|
1269
|
+
],
|
|
1270
|
+
},
|
|
1271
|
+
]);
|
|
@@ -472,7 +472,12 @@ function compileMapField(desc: MapFieldDesc): CompiledField {
|
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
-
target
|
|
475
|
+
Object.defineProperty(target, entryKey, {
|
|
476
|
+
value: entryValue,
|
|
477
|
+
enumerable: true,
|
|
478
|
+
configurable: true,
|
|
479
|
+
writable: true,
|
|
480
|
+
});
|
|
476
481
|
},
|
|
477
482
|
toJson(message, output) {
|
|
478
483
|
const input = Reflect.get(message, name);
|
|
@@ -1143,7 +1148,12 @@ function readJsonStruct(reader: Reader): { [key: string]: JsonValue } {
|
|
|
1143
1148
|
entryReader.skip(entryWire);
|
|
1144
1149
|
}
|
|
1145
1150
|
}
|
|
1146
|
-
output
|
|
1151
|
+
Object.defineProperty(output, entryKey, {
|
|
1152
|
+
value: entryVal,
|
|
1153
|
+
enumerable: true,
|
|
1154
|
+
configurable: true,
|
|
1155
|
+
writable: true,
|
|
1156
|
+
});
|
|
1147
1157
|
} else {
|
|
1148
1158
|
reader.skip(wireType);
|
|
1149
1159
|
}
|