@getpaseo/protocol 0.1.106 → 0.1.108
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/dist/client-capabilities.d.ts +1 -0
- package/dist/client-capabilities.js +3 -0
- package/dist/generated/validation/ws-outbound.aot.js +24464 -16009
- package/dist/git-remote.d.ts +10 -0
- package/dist/git-remote.js +12 -0
- package/dist/messages.d.ts +1241 -11
- package/dist/messages.js +239 -0
- package/dist/provider-manifest.js +25 -22
- package/dist/validation/ws-outbound-schema-metadata.d.ts +232 -0
- package/package.json +1 -1
package/dist/messages.js
CHANGED
|
@@ -655,6 +655,12 @@ export const WorkspaceTitleSetRequestSchema = z.object({
|
|
|
655
655
|
title: z.string().nullable(),
|
|
656
656
|
requestId: z.string(),
|
|
657
657
|
});
|
|
658
|
+
export const WorkspacePinSetRequestSchema = z.object({
|
|
659
|
+
type: z.literal("workspace.pin.set.request"),
|
|
660
|
+
workspaceId: z.string(),
|
|
661
|
+
pinned: z.boolean(),
|
|
662
|
+
requestId: z.string(),
|
|
663
|
+
});
|
|
658
664
|
export const SetVoiceModeMessageSchema = z.object({
|
|
659
665
|
type: z.literal("set_voice_mode"),
|
|
660
666
|
enabled: z.boolean(),
|
|
@@ -1056,9 +1062,24 @@ export const FetchAgentTimelineRequestMessageSchema = z.object({
|
|
|
1056
1062
|
// Default should be projected for app timeline loading.
|
|
1057
1063
|
projection: z.enum(["projected", "canonical"]).optional(),
|
|
1058
1064
|
});
|
|
1065
|
+
export const ProviderSubagentListRequestMessageSchema = z.object({
|
|
1066
|
+
type: z.literal("agent.provider_subagents.list.request"),
|
|
1067
|
+
parentAgentId: z.string(),
|
|
1068
|
+
requestId: z.string(),
|
|
1069
|
+
});
|
|
1070
|
+
export const ProviderSubagentTimelineRequestMessageSchema = z.object({
|
|
1071
|
+
type: z.literal("agent.provider_subagents.timeline.get.request"),
|
|
1072
|
+
parentAgentId: z.string(),
|
|
1073
|
+
subagentId: z.string(),
|
|
1074
|
+
requestId: z.string(),
|
|
1075
|
+
direction: z.enum(["tail", "before", "after"]).optional(),
|
|
1076
|
+
cursor: AgentTimelineCursorSchema.optional(),
|
|
1077
|
+
limit: z.number().int().nonnegative().optional(),
|
|
1078
|
+
});
|
|
1059
1079
|
export const AgentForkContextRequestMessageSchema = z.object({
|
|
1060
1080
|
type: z.literal("agent.fork_context.request"),
|
|
1061
1081
|
agentId: z.string(),
|
|
1082
|
+
boundaryCursor: AgentTimelineCursorSchema.optional(),
|
|
1062
1083
|
boundaryMessageId: z.string().optional(),
|
|
1063
1084
|
requestId: z.string(),
|
|
1064
1085
|
});
|
|
@@ -1173,6 +1194,17 @@ export const WorkspaceTitleSetResponseSchema = z.object({
|
|
|
1173
1194
|
type: z.literal("workspace.title.set.response"),
|
|
1174
1195
|
payload: WorkspaceTitleSetResponsePayloadSchema,
|
|
1175
1196
|
});
|
|
1197
|
+
export const WorkspacePinSetResponsePayloadSchema = z.object({
|
|
1198
|
+
requestId: z.string(),
|
|
1199
|
+
workspaceId: z.string(),
|
|
1200
|
+
accepted: z.boolean(),
|
|
1201
|
+
pinnedAt: z.string().nullable(),
|
|
1202
|
+
error: z.string().nullable(),
|
|
1203
|
+
});
|
|
1204
|
+
export const WorkspacePinSetResponseSchema = z.object({
|
|
1205
|
+
type: z.literal("workspace.pin.set.response"),
|
|
1206
|
+
payload: WorkspacePinSetResponsePayloadSchema,
|
|
1207
|
+
});
|
|
1176
1208
|
export const SetVoiceModeResponseMessageSchema = z.object({
|
|
1177
1209
|
type: z.literal("set_voice_mode_response"),
|
|
1178
1210
|
payload: z.object({
|
|
@@ -1451,11 +1483,42 @@ export const OpenProjectRequestSchema = z.object({
|
|
|
1451
1483
|
cwd: z.string(),
|
|
1452
1484
|
requestId: z.string(),
|
|
1453
1485
|
});
|
|
1486
|
+
// Smallest shorthand repo path is "a/b": owner, slash, repository.
|
|
1487
|
+
const MIN_REPOSITORY_PATH_LENGTH = 3;
|
|
1454
1488
|
export const ProjectAddRequestSchema = z.object({
|
|
1455
1489
|
type: z.literal("project.add.request"),
|
|
1456
1490
|
cwd: z.string(),
|
|
1457
1491
|
requestId: z.string(),
|
|
1458
1492
|
});
|
|
1493
|
+
export const ProjectCreateDirectoryRequestSchema = z.object({
|
|
1494
|
+
type: z.literal("project.create_directory.request"),
|
|
1495
|
+
parentPath: z.string(),
|
|
1496
|
+
name: z.string(),
|
|
1497
|
+
requestId: z.string(),
|
|
1498
|
+
});
|
|
1499
|
+
export const GithubRepositorySchema = z.object({
|
|
1500
|
+
id: z.string().min(1),
|
|
1501
|
+
name: z.string().min(1),
|
|
1502
|
+
nameWithOwner: z.string().min(MIN_REPOSITORY_PATH_LENGTH),
|
|
1503
|
+
description: z.string().nullable(),
|
|
1504
|
+
visibility: z.enum(["public", "private", "internal"]),
|
|
1505
|
+
updatedAt: z.string(),
|
|
1506
|
+
cloneUrl: z.string().min(MIN_REPOSITORY_PATH_LENGTH),
|
|
1507
|
+
});
|
|
1508
|
+
export const WorkspaceGithubSearchRepositoriesRequestSchema = z.object({
|
|
1509
|
+
type: z.literal("workspace.github.search_repositories.request"),
|
|
1510
|
+
query: z.string(),
|
|
1511
|
+
limit: z.number().int().min(1).max(50).optional(),
|
|
1512
|
+
requestId: z.string(),
|
|
1513
|
+
});
|
|
1514
|
+
export const ProjectGithubCloneProtocolSchema = z.enum(["https", "ssh"]);
|
|
1515
|
+
export const ProjectGithubCloneRequestSchema = z.object({
|
|
1516
|
+
type: z.literal("project.github.clone.request"),
|
|
1517
|
+
repo: z.string().trim().min(MIN_REPOSITORY_PATH_LENGTH),
|
|
1518
|
+
cloneProtocol: ProjectGithubCloneProtocolSchema.optional(),
|
|
1519
|
+
targetDirectory: z.string().trim().min(1),
|
|
1520
|
+
requestId: z.string(),
|
|
1521
|
+
});
|
|
1459
1522
|
export const ArchiveWorkspaceRequestSchema = z.object({
|
|
1460
1523
|
type: z.literal("archive_workspace_request"),
|
|
1461
1524
|
workspaceId: z.string(),
|
|
@@ -1641,6 +1704,16 @@ export const CreateTerminalRequestSchema = z.object({
|
|
|
1641
1704
|
agentId: z.string().optional(),
|
|
1642
1705
|
command: z.string().optional(),
|
|
1643
1706
|
args: z.array(z.string()).optional(),
|
|
1707
|
+
// COMPAT(createTerminalSize): added in v0.1.107, drop the optional gate when floor >= v0.1.107.
|
|
1708
|
+
// The client seeds the PTY with its measured viewport size so a new terminal isn't born at the
|
|
1709
|
+
// 80x24 default and then visibly reflowed. Old daemons ignore this field and start at 80x24;
|
|
1710
|
+
// the client's first resize corrects it as before.
|
|
1711
|
+
size: z
|
|
1712
|
+
.object({
|
|
1713
|
+
rows: z.number().int().positive(),
|
|
1714
|
+
cols: z.number().int().positive(),
|
|
1715
|
+
})
|
|
1716
|
+
.optional(),
|
|
1644
1717
|
requestId: z.string(),
|
|
1645
1718
|
});
|
|
1646
1719
|
export const RenameTerminalRequestSchema = z.object({
|
|
@@ -1722,6 +1795,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
|
|
|
1722
1795
|
ProjectRenameRequestSchema,
|
|
1723
1796
|
ProjectRemoveRequestSchema,
|
|
1724
1797
|
WorkspaceTitleSetRequestSchema,
|
|
1798
|
+
WorkspacePinSetRequestSchema,
|
|
1725
1799
|
SetVoiceModeMessageSchema,
|
|
1726
1800
|
SendAgentMessageRequestSchema,
|
|
1727
1801
|
WaitForFinishRequestSchema,
|
|
@@ -1753,6 +1827,8 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
|
|
|
1753
1827
|
RestartServerRequestMessageSchema,
|
|
1754
1828
|
DaemonUpdateRequestMessageSchema,
|
|
1755
1829
|
FetchAgentTimelineRequestMessageSchema,
|
|
1830
|
+
ProviderSubagentListRequestMessageSchema,
|
|
1831
|
+
ProviderSubagentTimelineRequestMessageSchema,
|
|
1756
1832
|
AgentForkContextRequestMessageSchema,
|
|
1757
1833
|
SetAgentModeRequestMessageSchema,
|
|
1758
1834
|
SetAgentModelRequestMessageSchema,
|
|
@@ -1793,6 +1869,9 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
|
|
|
1793
1869
|
LegacyOpenInEditorRequestSchema,
|
|
1794
1870
|
OpenProjectRequestSchema,
|
|
1795
1871
|
ProjectAddRequestSchema,
|
|
1872
|
+
ProjectCreateDirectoryRequestSchema,
|
|
1873
|
+
WorkspaceGithubSearchRepositoriesRequestSchema,
|
|
1874
|
+
ProjectGithubCloneRequestSchema,
|
|
1796
1875
|
ArchiveWorkspaceRequestSchema,
|
|
1797
1876
|
WorkspaceCreateRequestSchema,
|
|
1798
1877
|
WorkspaceClearAttentionRequestSchema,
|
|
@@ -2010,6 +2089,18 @@ export const ServerInfoStatusPayloadSchema = z
|
|
|
2010
2089
|
daemonSelfUpdate: z.boolean().optional(),
|
|
2011
2090
|
// COMPAT(agentForkContext): added in v0.1.102, remove gate after 2026-12-28.
|
|
2012
2091
|
agentForkContext: z.boolean().optional(),
|
|
2092
|
+
// COMPAT(agentForkContextCursor): added in v0.1.108, remove gate after 2027-01-14.
|
|
2093
|
+
agentForkContextCursor: z.boolean().optional(),
|
|
2094
|
+
// COMPAT(providerSubagents): added in v0.1.107, remove gate after 2027-01-12.
|
|
2095
|
+
providerSubagents: z.boolean().optional(),
|
|
2096
|
+
// COMPAT(workspacePinning): added in v0.1.107, remove gate after 2027-01-12.
|
|
2097
|
+
workspacePinning: z.boolean().optional(),
|
|
2098
|
+
// COMPAT(projectGithubClone): added in v0.1.108, remove gate after 2027-01-15.
|
|
2099
|
+
projectGithubClone: z.boolean().optional(),
|
|
2100
|
+
// COMPAT(workspaceGithubRepositorySearch): added in v0.1.108, remove gate after 2027-01-15.
|
|
2101
|
+
workspaceGithubRepositorySearch: z.boolean().optional(),
|
|
2102
|
+
// COMPAT(projectCreateDirectory): added in v0.1.108, remove gate after 2027-01-15.
|
|
2103
|
+
projectCreateDirectory: z.boolean().optional(),
|
|
2013
2104
|
})
|
|
2014
2105
|
.optional(),
|
|
2015
2106
|
})
|
|
@@ -2260,6 +2351,8 @@ export const WorkspaceDescriptorPayloadSchema = z
|
|
|
2260
2351
|
// its input and offer a "reset to branch name" action. Null means the name
|
|
2261
2352
|
// is derived from the branch/directory.
|
|
2262
2353
|
title: z.string().nullable().optional(),
|
|
2354
|
+
// COMPAT(workspacePinning): added in v0.1.107, remove optional after 2027-01-12.
|
|
2355
|
+
pinnedAt: z.string().nullable().optional(),
|
|
2263
2356
|
archivingAt: z.string().nullable().optional().default(null),
|
|
2264
2357
|
status: WorkspaceStateBucketSchema,
|
|
2265
2358
|
// Best-effort workspace status entry timestamp. Old daemons omit the
|
|
@@ -2459,6 +2552,70 @@ export const ProjectAddResponseSchema = z.object({
|
|
|
2459
2552
|
errorCode: z.enum(["directory_not_found"]).nullish().catch(null),
|
|
2460
2553
|
}),
|
|
2461
2554
|
});
|
|
2555
|
+
export const ProjectCreateDirectoryErrorCodeSchema = z.enum([
|
|
2556
|
+
"invalid_name",
|
|
2557
|
+
"parent_directory_not_found",
|
|
2558
|
+
"directory_exists",
|
|
2559
|
+
"permission_denied",
|
|
2560
|
+
"registration_failed",
|
|
2561
|
+
"filesystem_error",
|
|
2562
|
+
]);
|
|
2563
|
+
export const ProjectCreateDirectoryResponseSchema = z.object({
|
|
2564
|
+
type: z.literal("project.create_directory.response"),
|
|
2565
|
+
payload: z.object({
|
|
2566
|
+
requestId: z.string(),
|
|
2567
|
+
directoryPath: z.string().nullable(),
|
|
2568
|
+
project: WorkspaceProjectDescriptorPayloadSchema.nullable(),
|
|
2569
|
+
error: z.string().nullable(),
|
|
2570
|
+
// Error codes are open-ended on the wire so older clients can still parse
|
|
2571
|
+
// responses after a newer daemon learns another failure reason.
|
|
2572
|
+
errorCode: z.string().nullable(),
|
|
2573
|
+
}),
|
|
2574
|
+
});
|
|
2575
|
+
export const WorkspaceGithubSearchRepositoriesResponseSchema = z.object({
|
|
2576
|
+
type: z.literal("workspace.github.search_repositories.response"),
|
|
2577
|
+
payload: z.discriminatedUnion("status", [
|
|
2578
|
+
z.object({
|
|
2579
|
+
status: z.literal("success"),
|
|
2580
|
+
requestId: z.string(),
|
|
2581
|
+
repositories: z.array(GithubRepositorySchema),
|
|
2582
|
+
available: z.literal(true),
|
|
2583
|
+
error: z.null(),
|
|
2584
|
+
}),
|
|
2585
|
+
z.object({
|
|
2586
|
+
status: z.literal("unavailable"),
|
|
2587
|
+
requestId: z.string(),
|
|
2588
|
+
repositories: z.array(GithubRepositorySchema),
|
|
2589
|
+
reason: z.literal("gh_missing"),
|
|
2590
|
+
available: z.literal(false),
|
|
2591
|
+
error: z.string(),
|
|
2592
|
+
}),
|
|
2593
|
+
z.object({
|
|
2594
|
+
status: z.literal("unauthenticated"),
|
|
2595
|
+
requestId: z.string(),
|
|
2596
|
+
repositories: z.array(GithubRepositorySchema),
|
|
2597
|
+
available: z.literal(false),
|
|
2598
|
+
error: z.string(),
|
|
2599
|
+
}),
|
|
2600
|
+
z.object({
|
|
2601
|
+
status: z.literal("error"),
|
|
2602
|
+
requestId: z.string(),
|
|
2603
|
+
repositories: z.array(GithubRepositorySchema),
|
|
2604
|
+
available: z.literal(true),
|
|
2605
|
+
error: z.string(),
|
|
2606
|
+
}),
|
|
2607
|
+
]),
|
|
2608
|
+
});
|
|
2609
|
+
export const ProjectGithubCloneResponseSchema = z.object({
|
|
2610
|
+
type: z.literal("project.github.clone.response"),
|
|
2611
|
+
payload: z.object({
|
|
2612
|
+
requestId: z.string(),
|
|
2613
|
+
repo: z.string().trim().min(MIN_REPOSITORY_PATH_LENGTH),
|
|
2614
|
+
checkoutPath: z.string().nullable(),
|
|
2615
|
+
project: WorkspaceProjectDescriptorPayloadSchema.nullable(),
|
|
2616
|
+
error: z.string().nullable(),
|
|
2617
|
+
}),
|
|
2618
|
+
});
|
|
2462
2619
|
export const StartWorkspaceScriptResponseMessageSchema = z.object({
|
|
2463
2620
|
type: z.literal("start_workspace_script_response"),
|
|
2464
2621
|
payload: z.object({
|
|
@@ -2544,6 +2701,78 @@ export const FetchAgentTimelineResponseMessageSchema = z.object({
|
|
|
2544
2701
|
error: z.string().nullable(),
|
|
2545
2702
|
}),
|
|
2546
2703
|
});
|
|
2704
|
+
export const ProviderSubagentDescriptorPayloadSchema = z.object({
|
|
2705
|
+
id: z.string(),
|
|
2706
|
+
parentAgentId: z.string(),
|
|
2707
|
+
provider: AgentProviderSchema,
|
|
2708
|
+
title: z.string().nullable(),
|
|
2709
|
+
description: z.string().nullable(),
|
|
2710
|
+
status: z.enum(["running", "completed", "failed", "canceled"]),
|
|
2711
|
+
createdAt: z.string(),
|
|
2712
|
+
updatedAt: z.string(),
|
|
2713
|
+
toolCallId: z.string().nullable(),
|
|
2714
|
+
cwd: z.string().nullable().optional(),
|
|
2715
|
+
});
|
|
2716
|
+
export const ProviderSubagentListResponseMessageSchema = z.object({
|
|
2717
|
+
type: z.literal("agent.provider_subagents.list.response"),
|
|
2718
|
+
payload: z.object({
|
|
2719
|
+
requestId: z.string(),
|
|
2720
|
+
parentAgentId: z.string(),
|
|
2721
|
+
subagents: z.array(ProviderSubagentDescriptorPayloadSchema),
|
|
2722
|
+
error: z.string().nullable(),
|
|
2723
|
+
}),
|
|
2724
|
+
});
|
|
2725
|
+
export const ProviderSubagentTimelineResponseMessageSchema = z.object({
|
|
2726
|
+
type: z.literal("agent.provider_subagents.timeline.get.response"),
|
|
2727
|
+
payload: z.object({
|
|
2728
|
+
requestId: z.string(),
|
|
2729
|
+
parentAgentId: z.string(),
|
|
2730
|
+
subagentId: z.string(),
|
|
2731
|
+
provider: AgentProviderSchema.nullable(),
|
|
2732
|
+
direction: z.enum(["tail", "before", "after"]),
|
|
2733
|
+
epoch: z.string(),
|
|
2734
|
+
reset: z.boolean(),
|
|
2735
|
+
staleCursor: z.boolean(),
|
|
2736
|
+
gap: z.boolean(),
|
|
2737
|
+
window: z.object({
|
|
2738
|
+
minSeq: z.number().int().nonnegative(),
|
|
2739
|
+
maxSeq: z.number().int().nonnegative(),
|
|
2740
|
+
nextSeq: z.number().int().nonnegative(),
|
|
2741
|
+
}),
|
|
2742
|
+
hasOlder: z.boolean(),
|
|
2743
|
+
hasNewer: z.boolean(),
|
|
2744
|
+
rows: z.array(z.object({
|
|
2745
|
+
item: AgentTimelineItemPayloadSchema,
|
|
2746
|
+
timestamp: z.string(),
|
|
2747
|
+
seq: z.number().int().nonnegative(),
|
|
2748
|
+
})),
|
|
2749
|
+
error: z.string().nullable(),
|
|
2750
|
+
}),
|
|
2751
|
+
});
|
|
2752
|
+
export const ProviderSubagentUpdateMessageSchema = z.object({
|
|
2753
|
+
type: z.literal("agent.provider_subagents.update"),
|
|
2754
|
+
payload: z.discriminatedUnion("kind", [
|
|
2755
|
+
z.object({
|
|
2756
|
+
kind: z.literal("upsert"),
|
|
2757
|
+
subagent: ProviderSubagentDescriptorPayloadSchema,
|
|
2758
|
+
}),
|
|
2759
|
+
z.object({
|
|
2760
|
+
kind: z.literal("timeline"),
|
|
2761
|
+
parentAgentId: z.string(),
|
|
2762
|
+
subagentId: z.string(),
|
|
2763
|
+
provider: AgentProviderSchema,
|
|
2764
|
+
item: AgentTimelineItemPayloadSchema,
|
|
2765
|
+
timestamp: z.string(),
|
|
2766
|
+
seq: z.number().int().nonnegative(),
|
|
2767
|
+
epoch: z.string(),
|
|
2768
|
+
}),
|
|
2769
|
+
z.object({
|
|
2770
|
+
kind: z.literal("remove"),
|
|
2771
|
+
parentAgentId: z.string(),
|
|
2772
|
+
subagentId: z.string(),
|
|
2773
|
+
}),
|
|
2774
|
+
]),
|
|
2775
|
+
});
|
|
2547
2776
|
export const AgentForkContextResponseMessageSchema = z.object({
|
|
2548
2777
|
type: z.literal("agent.fork_context.response"),
|
|
2549
2778
|
payload: z.object({
|
|
@@ -2552,6 +2781,7 @@ export const AgentForkContextResponseMessageSchema = z.object({
|
|
|
2552
2781
|
attachment: TextAttachmentSchema.nullable(),
|
|
2553
2782
|
itemCount: z.number().int().nonnegative(),
|
|
2554
2783
|
boundaryMessageId: z.string().nullable(),
|
|
2784
|
+
boundaryCursor: AgentTimelineCursorSchema.nullable().optional(),
|
|
2555
2785
|
error: z.string().nullable(),
|
|
2556
2786
|
}),
|
|
2557
2787
|
});
|
|
@@ -2561,6 +2791,7 @@ export const CancelAgentResponseMessageSchema = z.object({
|
|
|
2561
2791
|
requestId: z.string(),
|
|
2562
2792
|
agentId: z.string(),
|
|
2563
2793
|
agent: AgentSnapshotPayloadSchema.nullable(),
|
|
2794
|
+
error: z.string().nullable().optional(),
|
|
2564
2795
|
}),
|
|
2565
2796
|
});
|
|
2566
2797
|
export const ClearAgentAttentionResponseMessageSchema = z.object({
|
|
@@ -3659,13 +3890,19 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
|
|
|
3659
3890
|
FetchRecentProviderSessionsResponseMessageSchema,
|
|
3660
3891
|
FetchWorkspacesResponseMessageSchema,
|
|
3661
3892
|
ProjectAddResponseSchema,
|
|
3893
|
+
ProjectCreateDirectoryResponseSchema,
|
|
3662
3894
|
OpenProjectResponseMessageSchema,
|
|
3895
|
+
WorkspaceGithubSearchRepositoriesResponseSchema,
|
|
3896
|
+
ProjectGithubCloneResponseSchema,
|
|
3663
3897
|
StartWorkspaceScriptResponseMessageSchema,
|
|
3664
3898
|
LegacyListAvailableEditorsResponseMessageSchema,
|
|
3665
3899
|
LegacyOpenInEditorResponseMessageSchema,
|
|
3666
3900
|
ArchiveWorkspaceResponseMessageSchema,
|
|
3667
3901
|
FetchAgentResponseMessageSchema,
|
|
3668
3902
|
FetchAgentTimelineResponseMessageSchema,
|
|
3903
|
+
ProviderSubagentListResponseMessageSchema,
|
|
3904
|
+
ProviderSubagentTimelineResponseMessageSchema,
|
|
3905
|
+
ProviderSubagentUpdateMessageSchema,
|
|
3669
3906
|
AgentForkContextResponseMessageSchema,
|
|
3670
3907
|
CancelAgentResponseMessageSchema,
|
|
3671
3908
|
ClearAgentAttentionResponseMessageSchema,
|
|
@@ -3690,6 +3927,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
|
|
|
3690
3927
|
ProjectRenameResponseSchema,
|
|
3691
3928
|
ProjectRemoveResponseSchema,
|
|
3692
3929
|
WorkspaceTitleSetResponseSchema,
|
|
3930
|
+
WorkspacePinSetResponseSchema,
|
|
3693
3931
|
WaitForFinishResponseMessageSchema,
|
|
3694
3932
|
AgentPermissionRequestMessageSchema,
|
|
3695
3933
|
AgentPermissionResolvedMessageSchema,
|
|
@@ -3794,6 +4032,7 @@ export const WSHelloMessageSchema = z.object({
|
|
|
3794
4032
|
[CLIENT_CAPS.reasoningMergeEnum]: z.boolean().optional(),
|
|
3795
4033
|
[CLIENT_CAPS.customModeIcons]: z.boolean().optional(),
|
|
3796
4034
|
[CLIENT_CAPS.terminalReflowableSnapshot]: z.boolean().optional(),
|
|
4035
|
+
[CLIENT_CAPS.providerSubagents]: z.boolean().optional(),
|
|
3797
4036
|
[CLIENT_CAPS.browserHost]: BrowserAutomationHostCapabilitySchema.optional(),
|
|
3798
4037
|
})
|
|
3799
4038
|
.passthrough()
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
const CLAUDE_MODES = [
|
|
3
|
+
{
|
|
4
|
+
id: "plan",
|
|
5
|
+
label: "Plan Mode",
|
|
6
|
+
description: "Analyze the codebase without executing tools or edits",
|
|
7
|
+
icon: "ShieldEllipsis",
|
|
8
|
+
colorTier: "planning",
|
|
9
|
+
},
|
|
3
10
|
{
|
|
4
11
|
id: "default",
|
|
5
12
|
label: "Always Ask",
|
|
6
13
|
description: "Prompts for permission the first time a tool is used",
|
|
7
|
-
icon: "
|
|
14
|
+
icon: "Shield",
|
|
8
15
|
colorTier: "safe",
|
|
9
16
|
},
|
|
10
|
-
{
|
|
11
|
-
id: "auto",
|
|
12
|
-
label: "Auto mode",
|
|
13
|
-
description: "Uses a model classifier to review permission prompts automatically",
|
|
14
|
-
icon: "ShieldQuestionMark",
|
|
15
|
-
colorTier: "moderate",
|
|
16
|
-
},
|
|
17
17
|
{
|
|
18
18
|
id: "acceptEdits",
|
|
19
19
|
label: "Accept File Edits",
|
|
20
20
|
description: "Automatically approves edit-focused tools without prompting",
|
|
21
|
-
icon: "
|
|
21
|
+
icon: "ShieldPlus",
|
|
22
22
|
colorTier: "moderate",
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
id: "
|
|
26
|
-
label: "
|
|
27
|
-
description: "
|
|
25
|
+
id: "auto",
|
|
26
|
+
label: "Auto mode",
|
|
27
|
+
description: "Uses a model classifier to review permission prompts automatically",
|
|
28
28
|
icon: "ShieldCheck",
|
|
29
|
-
colorTier: "
|
|
29
|
+
colorTier: "moderate",
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
id: "bypassPermissions",
|
|
33
33
|
label: "Bypass",
|
|
34
34
|
description: "Skip all permission prompts (use with caution)",
|
|
35
|
-
icon: "
|
|
35
|
+
icon: "ShieldOff",
|
|
36
36
|
colorTier: "dangerous",
|
|
37
37
|
isUnattended: true,
|
|
38
38
|
},
|
|
@@ -42,21 +42,21 @@ const CODEX_MODES = [
|
|
|
42
42
|
id: "auto",
|
|
43
43
|
label: "Default Permissions",
|
|
44
44
|
description: "Edit files and run commands with Codex's default approval flow.",
|
|
45
|
-
icon: "
|
|
45
|
+
icon: "Shield",
|
|
46
46
|
colorTier: "moderate",
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
id: "auto-review",
|
|
50
50
|
label: "Auto-review",
|
|
51
51
|
description: "Same workspace-write permissions as Default, but eligible `on-request` approvals are routed through the auto-reviewer subagent.",
|
|
52
|
-
icon: "
|
|
52
|
+
icon: "ShieldCheck",
|
|
53
53
|
colorTier: "moderate",
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
id: "full-access",
|
|
57
57
|
label: "Full Access",
|
|
58
58
|
description: "Edit files, run commands, and access the network without additional prompts.",
|
|
59
|
-
icon: "
|
|
59
|
+
icon: "ShieldOff",
|
|
60
60
|
colorTier: "dangerous",
|
|
61
61
|
isUnattended: true,
|
|
62
62
|
},
|
|
@@ -66,14 +66,14 @@ const COPILOT_MODES = [
|
|
|
66
66
|
id: "https://agentclientprotocol.com/protocol/session-modes#agent",
|
|
67
67
|
label: "Agent",
|
|
68
68
|
description: "Default agent mode for conversational interactions",
|
|
69
|
-
icon: "
|
|
69
|
+
icon: "Shield",
|
|
70
70
|
colorTier: "moderate",
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
id: "https://agentclientprotocol.com/protocol/session-modes#plan",
|
|
74
74
|
label: "Plan",
|
|
75
75
|
description: "Plan mode for creating and executing multi-step plans",
|
|
76
|
-
icon: "
|
|
76
|
+
icon: "ShieldEllipsis",
|
|
77
77
|
colorTier: "planning",
|
|
78
78
|
},
|
|
79
79
|
{
|
|
@@ -90,14 +90,14 @@ const OPENCODE_MODES = [
|
|
|
90
90
|
id: "build",
|
|
91
91
|
label: "Build",
|
|
92
92
|
description: "Allows edits and tool execution for implementation work",
|
|
93
|
-
icon: "
|
|
93
|
+
icon: "Shield",
|
|
94
94
|
colorTier: "moderate",
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
id: "plan",
|
|
98
98
|
label: "Plan",
|
|
99
99
|
description: "Read-only planning mode that avoids file edits",
|
|
100
|
-
icon: "
|
|
100
|
+
icon: "ShieldEllipsis",
|
|
101
101
|
colorTier: "planning",
|
|
102
102
|
},
|
|
103
103
|
];
|
|
@@ -155,7 +155,10 @@ export const AGENT_PROVIDER_DEFINITIONS = [
|
|
|
155
155
|
id: "opencode",
|
|
156
156
|
label: "OpenCode",
|
|
157
157
|
description: "Open-source coding assistant with multi-provider model support",
|
|
158
|
-
|
|
158
|
+
// No static default: OpenCode users can rename or delete any agent,
|
|
159
|
+
// including "build". Leaving this unset means the daemon and OpenCode
|
|
160
|
+
// itself decide (see normalizeOpenCodeModeId in opencode-agent.ts).
|
|
161
|
+
defaultModeId: null,
|
|
159
162
|
modes: OPENCODE_MODES,
|
|
160
163
|
voice: {
|
|
161
164
|
enabled: true,
|