@pstdio/sdk 0.17.0 → 0.18.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.
@@ -1 +1 @@
1
- export type { AttemptExtensionFixResponse, CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionNavigationRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ModeLayoutContributionRecord, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionAutomationRecord, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionHarnessRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, WorkbenchExtensionViewRecord, } from "pstdio-api-contracts";
1
+ export type { AttemptExtensionFixResponse, CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionAutomationRecord, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionHarnessRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, WorkbenchExtensionViewRecord, } from "pstdio-api-contracts";
@@ -1,5 +1,5 @@
1
1
  export type { CreateNotificationInput, ListNotificationsQuery, ListNotificationsResponse, Notification, NotificationAction, NotificationActionResult, NotificationActorType, NotificationKind, NotificationOrigin, NotificationPriority, NotificationStatus, ResourceRef, UpdateNotificationInput, } from "pstdio-api-contracts";
2
- export type { AttemptExtensionFixResponse, CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionNavigationRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionAutomationRecord, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionHarnessRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, WorkbenchExtensionViewRecord, } from "./extensions";
2
+ export type { AttemptExtensionFixResponse, CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionAutomationRecord, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionHarnessRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, WorkbenchExtensionViewRecord, } from "./extensions";
3
3
  export type { CreateProjectInput, RegisterRepoInput } from "./projects";
4
4
  export type { ApprovalInput, CreateSessionInput, FollowUpInput, ResolveSessionIdInput, ResolveSessionIdResponse, SessionAttachment, SessionAttachmentRef, SessionConversationResponse, } from "./sessions";
5
5
  export { sessionAttachmentMimeTypesByExtension } from "./sessions";
package/dist/api/index.js CHANGED
@@ -13686,8 +13686,10 @@ var packageAsset = (path, baseUrl) => ({
13686
13686
  path,
13687
13687
  baseUrl
13688
13688
  });
13689
+ // ../pstdio-api-contracts/src/extension-kernel/types/composition.ts
13690
+ var dockedWorkbenchRegions = ["sidenav", "main", "secondary", "side"];
13689
13691
  // ../pstdio-api-contracts/src/extension-kernel/types/extension.ts
13690
- var EXTENSION_API_VERSION = "1.0.0";
13692
+ var EXTENSION_API_VERSION = "1.0.0-alpha.2";
13691
13693
  // ../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.ts
13692
13694
  var WEBVIEW_HOST_CAPABILITY_VERSION = 1;
13693
13695
  var WEBVIEW_DECLARABLE_CAPABILITIES = [
@@ -13989,20 +13991,202 @@ var extensionCommandPaletteContributionSchema = exports_external.object({
13989
13991
  when: extensionWhenExpressionSchema.optional()
13990
13992
  });
13991
13993
 
13992
- // ../pstdio-api-contracts/src/extensions/controls-renderer.ts
13993
- var extensionControlsRendererRecordSchema = exports_external.object({
13994
+ // ../pstdio-api-contracts/src/extensions/execute.ts
13995
+ var extensionResourceRefSchema = exports_external.object({
13996
+ type: exports_external.string(),
13997
+ id: exports_external.string(),
13998
+ projectId: exports_external.string().optional(),
13999
+ label: exports_external.string().optional(),
14000
+ extensionId: exports_external.string().optional(),
14001
+ metadata: jsonObjectSchema.optional()
14002
+ });
14003
+ var extensionRepoContextSchema = exports_external.object({
14004
+ projectId: exports_external.string(),
14005
+ repoId: exports_external.string(),
14006
+ path: exports_external.string(),
14007
+ remote: exports_external.string().nullable().optional(),
14008
+ role: exports_external.enum(["default", "selected", "workspace"]).optional()
14009
+ });
14010
+ var extensionSlotInvocationSchema = exports_external.object({
14011
+ id: exports_external.string(),
14012
+ kind: extensionSlotKindSchema,
14013
+ context: jsonObjectSchema
14014
+ });
14015
+ var extensionAttachmentInvocationSchema = exports_external.object({
14016
+ target: workbenchAttachmentTargetSchema,
14017
+ mode: exports_external.string().optional(),
14018
+ projectId: exports_external.string().optional(),
14019
+ resource: extensionResourceRefSchema.optional()
14020
+ });
14021
+ var extensionRendererContextSchema = exports_external.object({
14022
+ rendererId: exports_external.string(),
14023
+ projectId: exports_external.string().optional(),
14024
+ modeId: exports_external.string().optional(),
14025
+ resource: extensionResourceRefSchema.optional(),
14026
+ invocation: exports_external.object({ placement: exports_external.enum(["visible", "background"]) }).optional()
14027
+ });
14028
+ var commandExecuteRequestSchema = exports_external.object({
14029
+ projectId: exports_external.string().min(1),
14030
+ workspaceId: exports_external.string().optional(),
14031
+ params: jsonObjectSchema.optional(),
14032
+ resource: extensionResourceRefSchema.optional(),
14033
+ attachment: extensionAttachmentInvocationSchema.optional(),
14034
+ slot: extensionSlotInvocationSchema.optional(),
14035
+ repo: extensionRepoContextSchema.optional(),
14036
+ source: commandSourceSchema.optional(),
14037
+ metadata: jsonObjectSchema.optional()
14038
+ });
14039
+ var commandExecuteBodySchema = exports_external.object({
14040
+ workspaceId: exports_external.string().optional(),
14041
+ params: jsonObjectSchema.optional(),
14042
+ resource: extensionResourceRefSchema.optional(),
14043
+ attachment: extensionAttachmentInvocationSchema.optional(),
14044
+ slot: extensionSlotInvocationSchema.optional(),
14045
+ repo: extensionRepoContextSchema.optional(),
14046
+ source: commandSourceSchema.optional(),
14047
+ metadata: jsonObjectSchema.optional()
14048
+ });
14049
+ var dispatchExtensionEventBodySchema = exports_external.object({
14050
+ eventId: exports_external.string().min(1),
14051
+ payload: jsonObjectSchema
14052
+ }).strict();
14053
+ var serializedErrorSchema = exports_external.object({
14054
+ name: exports_external.string().optional(),
14055
+ message: exports_external.string(),
14056
+ stack: exports_external.string().optional()
14057
+ });
14058
+ var commandNoticeSchema = exports_external.object({
14059
+ type: exports_external.enum(["info", "success", "warning", "error"]),
14060
+ title: exports_external.string().optional(),
14061
+ message: exports_external.string(),
14062
+ metadata: jsonObjectSchema.optional()
14063
+ });
14064
+ var commandDiagnosticSchema = exports_external.object({
14065
+ code: exports_external.string(),
14066
+ message: exports_external.string(),
14067
+ severity: exports_external.enum(["info", "warning", "error"]),
14068
+ extensionId: exports_external.string().optional(),
14069
+ commandId: exports_external.string().optional(),
14070
+ metadata: jsonObjectSchema.optional()
14071
+ });
14072
+ var commandOutcomeSchema = exports_external.object({
14073
+ ok: exports_external.boolean(),
14074
+ status: exports_external.enum(["success", "rejected", "error"]),
14075
+ value: exports_external.unknown().optional(),
14076
+ code: exports_external.string().optional(),
14077
+ reason: exports_external.string().optional(),
14078
+ data: jsonObjectSchema.optional(),
14079
+ error: serializedErrorSchema.optional(),
14080
+ notices: exports_external.array(commandNoticeSchema).optional(),
14081
+ diagnostics: exports_external.array(commandDiagnosticSchema).optional()
14082
+ });
14083
+ var commandExecuteResponseSchema = exports_external.object({
14084
+ commandId: exports_external.string(),
14085
+ extensionId: exports_external.string(),
14086
+ eventIds: exports_external.array(exports_external.string()).optional(),
14087
+ outcome: commandOutcomeSchema
14088
+ });
14089
+
14090
+ // ../pstdio-api-contracts/src/extensions/composition.ts
14091
+ var dockedWorkbenchRegionSchema = exports_external.enum(dockedWorkbenchRegions);
14092
+ var extensionResourceSlotSchema = exports_external.object({
14093
+ cardinality: exports_external.enum(["one", "many"]),
14094
+ external: exports_external.boolean()
14095
+ });
14096
+ var extensionResourceKindRecordSchema = exports_external.object({
14097
+ id: exports_external.string(),
14098
+ extensionId: exports_external.string(),
14099
+ surface: exports_external.enum(["primary", "secondary", "attached"]),
14100
+ label: localizableStringSchema.optional(),
14101
+ icon: exports_external.string().optional(),
14102
+ slots: exports_external.record(exports_external.string(), extensionResourceSlotSchema)
14103
+ });
14104
+ var extensionResourcePanelRecordSchema = exports_external.object({
14105
+ id: exports_external.string(),
14106
+ extensionId: exports_external.string(),
14107
+ resourceKind: exports_external.string(),
14108
+ panel: exports_external.string(),
14109
+ slot: exports_external.string()
14110
+ });
14111
+ var panelBodySchema = {
14112
+ webview: exports_external.object({ entry: exports_external.object({ kind: exports_external.literal("package-asset"), path: exports_external.string(), baseUrl: exports_external.string() }) }).optional(),
14113
+ renderer: exports_external.object({ kind: exports_external.enum(["tree", "file", "controls", "dataTable", "kanban"]), id: exports_external.string() }).optional()
14114
+ };
14115
+ var extensionModePlacementSchema = exports_external.object({
14116
+ region: dockedWorkbenchRegionSchema,
14117
+ allowedRegions: exports_external.array(dockedWorkbenchRegionSchema).optional(),
14118
+ required: exports_external.boolean().optional(),
14119
+ defaultOpen: exports_external.boolean().optional(),
14120
+ pinned: exports_external.boolean().optional()
14121
+ });
14122
+ var extensionPanelPlacementSchema = exports_external.object({
14123
+ for: exports_external.string().optional(),
14124
+ region: dockedWorkbenchRegionSchema,
14125
+ allowedRegions: exports_external.array(dockedWorkbenchRegionSchema).optional(),
14126
+ required: exports_external.boolean().optional()
14127
+ });
14128
+ var extensionCompositionPanelRecordSchema = exports_external.object({
13994
14129
  id: exports_external.string(),
13995
14130
  extensionId: exports_external.string(),
13996
14131
  title: localizableStringSchema,
13997
- queryCommandId: exports_external.string(),
13998
- updateValueCommandId: exports_external.string().optional(),
13999
- applyCommandId: exports_external.string().optional(),
14000
- resetCommandId: exports_external.string().optional(),
14001
- refreshEventIds: exports_external.array(exports_external.string()).optional(),
14002
- defaultValues: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
14132
+ icon: exports_external.string().optional(),
14133
+ show: exports_external.union([extensionPanelPlacementSchema, exports_external.array(extensionPanelPlacementSchema).min(1)]).optional(),
14134
+ ...panelBodySchema
14135
+ }).refine((value) => [value.webview, value.renderer].filter(Boolean).length === 1, {
14136
+ message: "Composition panels must declare exactly one body"
14137
+ });
14138
+ var extensionModeResourceRecipeSchema = exports_external.object({
14139
+ slots: exports_external.record(exports_external.string(), extensionModePlacementSchema).optional(),
14140
+ panels: exports_external.record(exports_external.string(), extensionModePlacementSchema).optional()
14141
+ });
14142
+ var extensionModeCompositionRecordSchema = exports_external.object({
14143
+ resources: exports_external.record(exports_external.string(), extensionModeResourceRecipeSchema),
14144
+ modePanels: exports_external.record(exports_external.string(), extensionModePlacementSchema).optional(),
14145
+ defaultResource: exports_external.union([extensionResourceRefSchema, exports_external.object({ commandId: exports_external.string() })]).optional()
14146
+ });
14147
+ var workbenchNavigationTargetSchema = exports_external.object({
14148
+ modeId: exports_external.string().optional(),
14149
+ resource: extensionResourceRefSchema.optional(),
14150
+ replaceActive: exports_external.boolean().optional()
14151
+ });
14152
+ var extensionResourceHierarchyProviderRecordSchema = exports_external.object({
14153
+ id: exports_external.string(),
14154
+ extensionId: exports_external.string(),
14155
+ resourceKind: exports_external.string(),
14156
+ metadata: jsonObjectSchema.optional()
14157
+ });
14158
+
14159
+ // ../pstdio-api-contracts/src/extensions/renderers.ts
14160
+ var extensionRendererRecordBaseSchema = exports_external.object({
14161
+ id: exports_external.string(),
14162
+ extensionId: exports_external.string(),
14163
+ title: localizableStringSchema,
14164
+ icon: exports_external.string().optional(),
14165
+ resourceKind: exports_external.string().optional(),
14166
+ refreshEventIds: exports_external.array(exports_external.string().min(1)).optional(),
14003
14167
  emptyTitle: localizableStringSchema.optional(),
14004
14168
  emptyDescription: localizableStringSchema.optional()
14005
14169
  });
14170
+ var extensionTreeRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14171
+ bodyHandlerId: exports_external.string(),
14172
+ childrenHandlerId: exports_external.string().optional(),
14173
+ footerHandlerId: exports_external.string().optional(),
14174
+ defaultExpandedSectionIds: exports_external.array(exports_external.string()).optional(),
14175
+ defaultExpandedNodeIds: exports_external.array(exports_external.string()).optional()
14176
+ });
14177
+ var extensionFileRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14178
+ loadHandlerId: exports_external.string(),
14179
+ saveHandlerId: exports_external.string().optional()
14180
+ });
14181
+
14182
+ // ../pstdio-api-contracts/src/extensions/controls-renderer.ts
14183
+ var extensionControlsRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14184
+ queryHandlerId: exports_external.string(),
14185
+ valueChangeHandlerId: exports_external.string().optional(),
14186
+ applyHandlerId: exports_external.string().optional(),
14187
+ resetHandlerId: exports_external.string().optional(),
14188
+ defaultValues: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
14189
+ });
14006
14190
 
14007
14191
  // ../pstdio-api-contracts/src/extensions/data-table-renderer.ts
14008
14192
  var themeColorSchema = exports_external.object({
@@ -14049,20 +14233,15 @@ var selectionActionSchema = exports_external.object({
14049
14233
  destructive: exports_external.boolean().optional(),
14050
14234
  commandId: exports_external.string()
14051
14235
  });
14052
- var extensionDataTableRendererRecordSchema = exports_external.object({
14053
- id: exports_external.string(),
14054
- extensionId: exports_external.string(),
14055
- title: localizableStringSchema,
14056
- resourceKind: exports_external.string().optional(),
14236
+ var extensionDataTableRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14057
14237
  columns: exports_external.array(dataTableRendererColumnSchema).optional(),
14058
- queryCommandId: exports_external.string(),
14238
+ queryHandlerId: exports_external.string(),
14059
14239
  selectionMode: exports_external.enum(["none", "multiple"]).optional(),
14060
14240
  selectionActions: exports_external.array(selectionActionSchema).optional(),
14061
14241
  rowActions: exports_external.array(rowActionSchema).optional(),
14242
+ rowActivationHandlerId: exports_external.string().optional(),
14062
14243
  initialPageSize: exports_external.number().int().positive().optional(),
14063
- pageSizeOptions: exports_external.array(exports_external.number().int().positive()).optional(),
14064
- emptyTitle: localizableStringSchema.optional(),
14065
- emptyDescription: localizableStringSchema.optional()
14244
+ pageSizeOptions: exports_external.array(exports_external.number().int().positive()).optional()
14066
14245
  });
14067
14246
 
14068
14247
  // ../pstdio-api-contracts/src/extensions/host-capabilities.ts
@@ -14153,25 +14332,20 @@ var extensionKanbanRendererRowActionSchema = exports_external.object({
14153
14332
  commandId: exports_external.string(),
14154
14333
  destructive: exports_external.boolean().optional()
14155
14334
  });
14156
- var extensionKanbanRendererRecordSchema = exports_external.object({
14157
- id: exports_external.string(),
14158
- extensionId: exports_external.string(),
14335
+ var extensionKanbanRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14159
14336
  extensionInstanceId: exports_external.string().optional(),
14160
- title: localizableStringSchema,
14161
- resourceKind: exports_external.string().optional(),
14162
14337
  attributes: exports_external.array(kanbanRendererAttributeSchema).optional(),
14163
- queryCommandId: exports_external.string(),
14164
- updateAttributeCommandId: exports_external.string().optional(),
14165
- reorderCommandId: exports_external.string().optional(),
14166
- columnActionCommandId: exports_external.string().optional(),
14338
+ queryHandlerId: exports_external.string(),
14339
+ attributeChangeHandlerId: exports_external.string().optional(),
14340
+ reorderHandlerId: exports_external.string().optional(),
14341
+ columnActionHandlerId: exports_external.string().optional(),
14167
14342
  createRow: extensionKanbanRendererCreateRowSchema.optional(),
14168
14343
  rowActions: exports_external.array(extensionKanbanRendererRowActionSchema).optional(),
14344
+ rowActivationHandlerId: exports_external.string().optional(),
14169
14345
  defaultSettings: kanbanRendererSettingsSchema.partial().optional(),
14170
14346
  defaultFilters: exports_external.record(exports_external.string(), exports_external.array(exports_external.string())).optional(),
14171
14347
  defaultViews: exports_external.array(kanbanRendererSavedViewSchema).optional(),
14172
14348
  defaultActiveViewId: exports_external.string().optional(),
14173
- emptyTitle: localizableStringSchema.optional(),
14174
- emptyDescription: localizableStringSchema.optional(),
14175
14349
  hideToolbar: exports_external.boolean().optional()
14176
14350
  });
14177
14351
  var extensionCommandPaletteResourceRecordSchema = exports_external.object({
@@ -14180,7 +14354,7 @@ var extensionCommandPaletteResourceRecordSchema = exports_external.object({
14180
14354
  title: localizableStringSchema,
14181
14355
  resourceKind: exports_external.string().optional(),
14182
14356
  queryCommandId: exports_external.string(),
14183
- refreshEventIds: exports_external.array(exports_external.string()).optional()
14357
+ refreshEventIds: exports_external.array(exports_external.string().min(1)).optional()
14184
14358
  });
14185
14359
 
14186
14360
  // ../pstdio-api-contracts/src/extensions/keybindings.ts
@@ -14209,21 +14383,15 @@ var extensionKeybindingRecordSchema = exports_external.object({
14209
14383
  });
14210
14384
 
14211
14385
  // ../pstdio-api-contracts/src/extensions/panels.ts
14212
- var hasSinglePanelBody = (value) => [
14213
- value.webview,
14214
- value.treeRendererId,
14215
- value.fileRendererId,
14216
- value.controlsRendererId,
14217
- value.dataTableRendererId
14218
- ].filter(Boolean).length === 1;
14219
- var singlePanelBodyMessage = "Extension panels must declare exactly one body: webview, treeRendererId, fileRendererId, controlsRendererId, or dataTableRendererId";
14386
+ var hasSinglePanelBody = (value) => [value.webview, value.renderer].filter(Boolean).length === 1;
14387
+ var singlePanelBodyMessage = "Extension panels must declare exactly one body: webview or renderer";
14220
14388
  var hostTreeDefaultSchema = exports_external.enum(["default", "none"]);
14221
- var panelBodySchema = {
14389
+ var panelBodySchema2 = {
14222
14390
  webview: extensionWebviewContributionSchema.optional(),
14223
- treeRendererId: exports_external.string().optional(),
14224
- fileRendererId: exports_external.string().optional(),
14225
- controlsRendererId: exports_external.string().optional(),
14226
- dataTableRendererId: exports_external.string().optional()
14391
+ renderer: exports_external.object({
14392
+ kind: exports_external.enum(["tree", "file", "controls", "dataTable", "kanban"]),
14393
+ id: exports_external.string()
14394
+ }).optional()
14227
14395
  };
14228
14396
  var extensionPanelMenuRecordSchema = exports_external.object({
14229
14397
  id: exports_external.string(),
@@ -14235,7 +14403,7 @@ var extensionPanelMenuRecordSchema = exports_external.object({
14235
14403
  placement: extensionPlacementSchema.optional(),
14236
14404
  hostTreeHeader: hostTreeDefaultSchema.optional(),
14237
14405
  hostTreeFooter: hostTreeDefaultSchema.optional(),
14238
- ...panelBodySchema
14406
+ ...panelBodySchema2
14239
14407
  }).refine(hasSinglePanelBody, { message: singlePanelBodyMessage });
14240
14408
  var workbenchExtensionPanelMenuRecordSchema = extensionPanelMenuRecordSchema.safeExtend({ webview: workbenchExtensionWebviewSchema.optional() }).refine(hasSinglePanelBody, { message: singlePanelBodyMessage });
14241
14409
  var extensionPanelRecordBaseSchema = exports_external.object({
@@ -14243,14 +14411,9 @@ var extensionPanelRecordBaseSchema = exports_external.object({
14243
14411
  extensionId: exports_external.string(),
14244
14412
  title: localizableStringSchema,
14245
14413
  icon: exports_external.string().optional(),
14246
- region: workbenchRegionSchema,
14247
- closable: exports_external.boolean(),
14248
- group: exports_external.string().optional(),
14249
- placement: extensionPlacementSchema.optional(),
14250
- resourceKind: exports_external.string().optional(),
14251
- eligibleLocations: exports_external.object({ resourceKinds: exports_external.array(exports_external.string()).optional() }).optional(),
14414
+ show: exports_external.union([extensionPanelPlacementSchema, exports_external.array(extensionPanelPlacementSchema).min(1)]).optional(),
14252
14415
  panelMenus: exports_external.array(extensionPanelMenuRecordSchema).optional(),
14253
- ...panelBodySchema
14416
+ ...panelBodySchema2
14254
14417
  });
14255
14418
  var extensionPanelRecordSchema = extensionPanelRecordBaseSchema.refine(hasSinglePanelBody, {
14256
14419
  message: singlePanelBodyMessage
@@ -14262,29 +14425,16 @@ var extensionRouteRecordSchema = exports_external.object({
14262
14425
  label: localizableStringSchema,
14263
14426
  webview: extensionWebviewContributionSchema
14264
14427
  });
14265
- var extensionNavigationRecordSchema = exports_external.object({
14266
- id: exports_external.string(),
14267
- extensionId: exports_external.string(),
14268
- slotId: exports_external.string(),
14269
- label: localizableStringSchema,
14270
- group: exports_external.string().optional(),
14271
- placement: extensionPlacementSchema.optional(),
14272
- route: exports_external.string().optional(),
14273
- href: exports_external.string().optional(),
14274
- commandId: exports_external.string().optional(),
14275
- params: jsonObjectSchema.optional(),
14276
- icon: exports_external.string().optional(),
14277
- when: extensionWhenExpressionSchema.optional()
14278
- });
14279
14428
  var extensionTreeItemActionSchema = exports_external.discriminatedUnion("kind", [
14280
14429
  exports_external.object({
14281
14430
  kind: exports_external.literal("command"),
14282
14431
  commandId: exports_external.string(),
14283
14432
  args: jsonObjectSchema.optional()
14284
14433
  }),
14285
- exports_external.object({ kind: exports_external.literal("kanbanRenderer"), kanbanRendererId: exports_external.string() }),
14434
+ exports_external.object({ kind: exports_external.literal("panel"), panelId: exports_external.string() }),
14286
14435
  exports_external.object({ kind: exports_external.literal("route"), route: exports_external.string() }),
14287
- exports_external.object({ kind: exports_external.literal("href"), href: exports_external.string() })
14436
+ exports_external.object({ kind: exports_external.literal("href"), href: exports_external.string() }),
14437
+ exports_external.object({ kind: exports_external.literal("resource"), resource: extensionResourceRefSchema })
14288
14438
  ]);
14289
14439
  var extensionActivityItemRecordSchema = exports_external.object({
14290
14440
  id: exports_external.string(),
@@ -14301,33 +14451,26 @@ var extensionTreeItemContributionSchema = exports_external.object({
14301
14451
  extensionId: exports_external.string(),
14302
14452
  target: workbenchTreeTargetSchema,
14303
14453
  label: localizableStringSchema,
14304
- group: exports_external.string().optional(),
14454
+ group: exports_external.string().nullable().optional(),
14305
14455
  placement: extensionPlacementSchema.optional(),
14306
14456
  icon: exports_external.string().optional(),
14307
14457
  action: extensionTreeItemActionSchema,
14308
14458
  when: extensionWhenExpressionSchema.optional()
14309
14459
  });
14310
- var modeTargetContributionRecordSchema = exports_external.object({
14311
- panel: exports_external.string().optional(),
14312
- resource: exports_external.string().optional(),
14313
- region: workbenchRegionSchema.optional(),
14314
- title: localizableStringSchema.optional(),
14315
- pinned: exports_external.boolean().optional()
14316
- }).refine((value) => value.panel || value.resource, {
14317
- message: "Mode layout entries must declare a panel or resource"
14318
- });
14319
- var modeLayoutContributionRecordSchema = exports_external.object({
14320
- panels: exports_external.array(exports_external.enum(workbenchModePanels)).optional(),
14321
- open: exports_external.array(modeTargetContributionRecordSchema).optional()
14322
- });
14323
14460
  var extensionModeRecordSchema = exports_external.object({
14324
14461
  id: exports_external.string(),
14325
14462
  extensionId: exports_external.string(),
14326
14463
  modeId: exports_external.string(),
14327
14464
  label: localizableStringSchema,
14328
14465
  icon: exports_external.string().optional(),
14329
- resourceKind: exports_external.string().optional(),
14330
- layout: modeLayoutContributionRecordSchema.optional()
14466
+ panelRegions: exports_external.array(exports_external.enum(workbenchModePanels)).optional()
14467
+ }).extend(extensionModeCompositionRecordSchema.partial().shape);
14468
+ var extensionStatusItemRecordSchema = exports_external.object({
14469
+ id: exports_external.string(),
14470
+ extensionId: exports_external.string(),
14471
+ title: localizableStringSchema,
14472
+ when: extensionWhenExpressionSchema.optional(),
14473
+ webview: workbenchExtensionWebviewSchema.optional()
14331
14474
  });
14332
14475
  var workbenchExtensionPanelRecordSchema = extensionPanelRecordBaseSchema.extend({
14333
14476
  extensionInstanceId: exports_external.string().optional(),
@@ -14349,28 +14492,6 @@ var extensionViewLikeSchema = exports_external.object({
14349
14492
  extensionId: exports_external.string()
14350
14493
  });
14351
14494
 
14352
- // ../pstdio-api-contracts/src/extensions/renderers.ts
14353
- var extensionTreeRendererRecordSchema = exports_external.object({
14354
- id: exports_external.string(),
14355
- extensionId: exports_external.string(),
14356
- title: localizableStringSchema,
14357
- icon: exports_external.string().optional(),
14358
- bodyCommandId: exports_external.string(),
14359
- childrenCommandId: exports_external.string().optional(),
14360
- footerCommandId: exports_external.string().optional(),
14361
- defaultExpandedSectionIds: exports_external.array(exports_external.string()).optional(),
14362
- defaultExpandedNodeIds: exports_external.array(exports_external.string()).optional()
14363
- });
14364
- var extensionFileRendererRecordSchema = exports_external.object({
14365
- id: exports_external.string(),
14366
- extensionId: exports_external.string(),
14367
- title: localizableStringSchema,
14368
- icon: exports_external.string().optional(),
14369
- resourceKind: exports_external.string().optional(),
14370
- loadCommandId: exports_external.string(),
14371
- saveCommandId: exports_external.string().optional()
14372
- });
14373
-
14374
14495
  // ../pstdio-api-contracts/src/extensions/settings.ts
14375
14496
  var extensionSettingsPanelRecordSchema = exports_external.object({
14376
14497
  id: exports_external.string(),
@@ -14436,7 +14557,6 @@ var extensionsCheckResponseSchema = exports_external.object({
14436
14557
  modes: exports_external.array(extensionModeRecordSchema),
14437
14558
  panels: exports_external.array(extensionPanelRecordSchema),
14438
14559
  routes: exports_external.array(extensionRouteRecordSchema),
14439
- navigation: exports_external.array(extensionNavigationRecordSchema),
14440
14560
  treeItems: exports_external.array(extensionTreeItemContributionSchema),
14441
14561
  activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14442
14562
  settingsPanels: exports_external.array(extensionSettingsPanelRecordSchema),
@@ -14472,8 +14592,11 @@ var workbenchExtensionMetadataSchema = exports_external.object({
14472
14592
  commandPaletteContributions: exports_external.array(extensionCommandPaletteContributionSchema).optional(),
14473
14593
  modes: exports_external.array(extensionModeRecordSchema),
14474
14594
  panels: exports_external.array(workbenchExtensionPanelRecordSchema),
14595
+ resourceKinds: exports_external.array(extensionResourceKindRecordSchema).optional(),
14596
+ resourcePanels: exports_external.array(extensionResourcePanelRecordSchema).optional(),
14597
+ resourceHierarchyProviders: exports_external.array(extensionResourceHierarchyProviderRecordSchema).optional(),
14598
+ statusItems: exports_external.array(extensionStatusItemRecordSchema).optional(),
14475
14599
  routes: exports_external.array(workbenchExtensionRouteRecordSchema),
14476
- navigation: exports_external.array(extensionNavigationRecordSchema),
14477
14600
  treeItems: exports_external.array(extensionTreeItemContributionSchema).optional(),
14478
14601
  activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14479
14602
  settingsSections: exports_external.array(extensionSettingsSectionRecordSchema).optional(),
@@ -14504,93 +14627,6 @@ var listExtensionAppearanceResponseSchema = exports_external.object({
14504
14627
  translations: exports_external.array(extensionTranslationRecordSchema),
14505
14628
  diagnostics: exports_external.array(extensionDiagnosticSchema)
14506
14629
  });
14507
- // ../pstdio-api-contracts/src/extensions/execute.ts
14508
- var extensionResourceRefSchema = exports_external.object({
14509
- type: exports_external.string(),
14510
- id: exports_external.string(),
14511
- projectId: exports_external.string().optional(),
14512
- label: exports_external.string().optional(),
14513
- extensionId: exports_external.string().optional(),
14514
- metadata: jsonObjectSchema.optional()
14515
- });
14516
- var extensionRepoContextSchema = exports_external.object({
14517
- projectId: exports_external.string(),
14518
- repoId: exports_external.string(),
14519
- path: exports_external.string(),
14520
- remote: exports_external.string().nullable().optional(),
14521
- role: exports_external.enum(["default", "selected", "workspace"]).optional()
14522
- });
14523
- var extensionSlotInvocationSchema = exports_external.object({
14524
- id: exports_external.string(),
14525
- kind: extensionSlotKindSchema,
14526
- context: jsonObjectSchema
14527
- });
14528
- var extensionAttachmentInvocationSchema = exports_external.object({
14529
- target: workbenchAttachmentTargetSchema,
14530
- mode: exports_external.string().optional(),
14531
- projectId: exports_external.string().optional(),
14532
- resource: extensionResourceRefSchema.optional()
14533
- });
14534
- var commandExecuteRequestSchema = exports_external.object({
14535
- projectId: exports_external.string().min(1),
14536
- workspaceId: exports_external.string().optional(),
14537
- params: jsonObjectSchema.optional(),
14538
- resource: extensionResourceRefSchema.optional(),
14539
- attachment: extensionAttachmentInvocationSchema.optional(),
14540
- slot: extensionSlotInvocationSchema.optional(),
14541
- repo: extensionRepoContextSchema.optional(),
14542
- source: commandSourceSchema.optional(),
14543
- metadata: jsonObjectSchema.optional()
14544
- });
14545
- var commandExecuteBodySchema = exports_external.object({
14546
- workspaceId: exports_external.string().optional(),
14547
- params: jsonObjectSchema.optional(),
14548
- resource: extensionResourceRefSchema.optional(),
14549
- attachment: extensionAttachmentInvocationSchema.optional(),
14550
- slot: extensionSlotInvocationSchema.optional(),
14551
- repo: extensionRepoContextSchema.optional(),
14552
- source: commandSourceSchema.optional(),
14553
- metadata: jsonObjectSchema.optional()
14554
- });
14555
- var dispatchExtensionEventBodySchema = exports_external.object({
14556
- eventId: exports_external.string().min(1),
14557
- payload: jsonObjectSchema
14558
- }).strict();
14559
- var serializedErrorSchema = exports_external.object({
14560
- name: exports_external.string().optional(),
14561
- message: exports_external.string(),
14562
- stack: exports_external.string().optional()
14563
- });
14564
- var commandNoticeSchema = exports_external.object({
14565
- type: exports_external.enum(["info", "success", "warning", "error"]),
14566
- title: exports_external.string().optional(),
14567
- message: exports_external.string(),
14568
- metadata: jsonObjectSchema.optional()
14569
- });
14570
- var commandDiagnosticSchema = exports_external.object({
14571
- code: exports_external.string(),
14572
- message: exports_external.string(),
14573
- severity: exports_external.enum(["info", "warning", "error"]),
14574
- extensionId: exports_external.string().optional(),
14575
- commandId: exports_external.string().optional(),
14576
- metadata: jsonObjectSchema.optional()
14577
- });
14578
- var commandOutcomeSchema = exports_external.object({
14579
- ok: exports_external.boolean(),
14580
- status: exports_external.enum(["success", "rejected", "error"]),
14581
- value: exports_external.unknown().optional(),
14582
- code: exports_external.string().optional(),
14583
- reason: exports_external.string().optional(),
14584
- data: jsonObjectSchema.optional(),
14585
- error: serializedErrorSchema.optional(),
14586
- notices: exports_external.array(commandNoticeSchema).optional(),
14587
- diagnostics: exports_external.array(commandDiagnosticSchema).optional()
14588
- });
14589
- var commandExecuteResponseSchema = exports_external.object({
14590
- commandId: exports_external.string(),
14591
- extensionId: exports_external.string(),
14592
- outcome: commandOutcomeSchema
14593
- });
14594
14630
  // ../pstdio-api-contracts/src/extensions/install.ts
14595
14631
  var enableInstalledExtensionRequestSchema = exports_external.object({
14596
14632
  displayName: exports_external.string(),
@@ -14627,7 +14663,8 @@ var projectExtensionInstanceSchema = exports_external.object({
14627
14663
  lastLoadedAt: exports_external.string().nullable().optional(),
14628
14664
  lastError: jsonObjectSchema.nullable().optional(),
14629
14665
  enabled: exports_external.boolean(),
14630
- config: exports_external.record(exports_external.string(), exports_external.unknown())
14666
+ config: exports_external.record(exports_external.string(), exports_external.unknown()),
14667
+ updateAvailable: exports_external.boolean()
14631
14668
  });
14632
14669
  var listProjectExtensionsResponseSchema = exports_external.object({
14633
14670
  extensions: exports_external.array(projectExtensionInstanceSchema)
@@ -281,6 +281,8 @@ var buildSessionsQuery = (projectId, input = {}) => {
281
281
  params.append("status", input.status);
282
282
  if (input.agent)
283
283
  params.append("agent", input.agent);
284
+ if (input.workspaceId)
285
+ params.append("workspace_id", input.workspaceId);
284
286
  if (input.archived)
285
287
  params.append("archived", "true");
286
288
  return params.toString();
@@ -5,6 +5,7 @@ import { type SseEvent } from "./sse";
5
5
  export type ListSessionsInput = {
6
6
  status?: string;
7
7
  agent?: string;
8
+ workspaceId?: string;
8
9
  archived?: boolean;
9
10
  };
10
11
  export type SessionClient = {
@@ -42,8 +42,7 @@ type ExtensionAuthoringDefinition<TCommandSchemas extends CommandSchemas, TMiddl
42
42
  };
43
43
  /**
44
44
  * Identity helper that types the passed contributions. Authors get autocomplete on
45
- * contributions, and `commandsOf(packageName, ext)` can derive typed refs from the
46
- * returned definition. Extension identity (id, name, version, description, publisher,
45
+ * contributions. Extension identity (id, name, version, description, publisher,
47
46
  * engines.pstdio) lives in package.json.
48
47
  *
49
48
  * @example
@@ -1,12 +1,12 @@
1
1
  export type { CreateNotificationInput, ListNotificationsQuery, ListNotificationsResponse, Notification, NotificationAction, NotificationActionResult, NotificationActorType, NotificationKind, NotificationOrigin, NotificationPriority, NotificationStatus, UpdateNotificationInput, } from "pstdio-api-contracts";
2
2
  export type * from "pstdio-api-contracts/extension-kernel";
3
3
  export type { CommitPayload, ConflictPayload, MergePayload, RebasePayload, SessionLifecyclePayload, WorkspaceProvisionPayload, WorkspaceType, WorktreeRemovedPayload, } from "pstdio-api-contracts/extension-kernel";
4
- export { ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES, EXTENSION_API_VERSION, getWorkbenchModeLayoutTargetPanel, getWorkbenchTargetDefinition, gitEvents, isLocalizedString, type Localizable, type LocalizedString, l10n, packageAsset, projectEvents, projectSlots, sessionEvents, sessionSlots, WEBVIEW_DECLARABLE_CAPABILITIES, WEBVIEW_HOST_CAPABILITIES, WEBVIEW_HOST_CAPABILITY_VERSION, type WorkbenchAttachmentTarget, type WorkbenchContributionKind, type WorkbenchLayoutTarget, type WorkbenchMenuTarget, type WorkbenchModeLayoutTarget, type WorkbenchModePanel, type WorkbenchSettingsScope, type WorkbenchSettingsTarget, type WorkbenchTargetDefinition, type WorkbenchTargetGranularity, type WorkbenchTreeTarget, type WorkbenchViewTarget, workbenchMenuTargets, workbenchModeLayoutTargets, workbenchModePanels, workbenchSettingsScopes, workbenchSettingsTargets, workbenchTargets, workbenchTreeTargets, workbenchViewTargets, workspaceEvents, workspaceSlots, worktreeEvents, } from "pstdio-api-contracts/extension-kernel";
4
+ export { ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES, dockedWorkbenchRegions, EXTENSION_API_VERSION, getWorkbenchModeLayoutTargetPanel, getWorkbenchTargetDefinition, gitEvents, isLocalizedString, type Localizable, type LocalizedString, l10n, packageAsset, projectEvents, projectSlots, sessionEvents, sessionSlots, WEBVIEW_DECLARABLE_CAPABILITIES, WEBVIEW_HOST_CAPABILITIES, WEBVIEW_HOST_CAPABILITY_VERSION, type WorkbenchAttachmentTarget, type WorkbenchContributionKind, type WorkbenchLayoutTarget, type WorkbenchMenuTarget, type WorkbenchModeLayoutTarget, type WorkbenchModePanel, type WorkbenchSettingsScope, type WorkbenchSettingsTarget, type WorkbenchTargetDefinition, type WorkbenchTargetGranularity, type WorkbenchTreeTarget, type WorkbenchViewTarget, workbenchMenuTargets, workbenchModeLayoutTargets, workbenchModePanels, workbenchSettingsScopes, workbenchSettingsTargets, workbenchTargets, workbenchTreeTargets, workbenchViewTargets, workspaceEvents, workspaceSlots, worktreeEvents, } from "pstdio-api-contracts/extension-kernel";
5
5
  export { type CommandResponse, unwrapCommandOutcome } from "./command-outcome";
6
6
  export { defineCommand, defineHook, defineMiddleware } from "./define-command";
7
7
  export { defineExtension } from "./define-extension";
8
8
  export { defineExtensionView, type ExtensionViewModule, type ExtensionViewRender, type ExtensionViewRenderContext, type GuestHost, type PropsStore, type WebviewFilesClient, } from "./define-extension-view";
9
9
  export { params } from "./params";
10
- export { commandEvent, commandRef, commandsOf, eventRef } from "./refs";
10
+ export { commandEvent, commandRef, eventRef } from "./refs";
11
11
  export { createTerminalSessionBridge, type TerminalSessionAdapter, type TerminalSessionBridge, type TerminalSessionExit, } from "./terminal-session-bridge";
12
12
  export { matchesResourceWhen } from "./when";
@@ -82,8 +82,10 @@ var packageAsset = (path, baseUrl) => ({
82
82
  path,
83
83
  baseUrl
84
84
  });
85
+ // ../pstdio-api-contracts/src/extension-kernel/types/composition.ts
86
+ var dockedWorkbenchRegions = ["sidenav", "main", "secondary", "side"];
85
87
  // ../pstdio-api-contracts/src/extension-kernel/types/extension.ts
86
- var EXTENSION_API_VERSION = "1.0.0";
88
+ var EXTENSION_API_VERSION = "1.0.0-alpha.2";
87
89
  // ../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.ts
88
90
  var WEBVIEW_HOST_CAPABILITY_VERSION = 1;
89
91
  var WEBVIEW_DECLARABLE_CAPABILITIES = [
@@ -303,14 +305,6 @@ var params = {
303
305
  var commandEvent = (command, phase) => ({
304
306
  id: `command.${phase}:${command.id}`
305
307
  });
306
- var commandsOf = (packageName, extension) => {
307
- const refs = {};
308
- const commands = extension.commands ?? {};
309
- for (const key of Object.keys(commands)) {
310
- refs[key] = { id: `${packageName}.${key}` };
311
- }
312
- return refs;
313
- };
314
308
  // src/extensions/terminal-session-bridge.ts
315
309
  var TERMINAL_SESSION_CAPABILITY = "terminal.session";
316
310
  var createTerminalSessionBridge = (host) => ({
@@ -416,13 +410,13 @@ export {
416
410
  getWorkbenchTargetDefinition,
417
411
  getWorkbenchModeLayoutTargetPanel,
418
412
  eventRef,
413
+ dockedWorkbenchRegions,
419
414
  defineMiddleware,
420
415
  defineHook,
421
416
  defineExtensionView,
422
417
  defineExtension,
423
418
  defineCommand,
424
419
  createTerminalSessionBridge,
425
- commandsOf,
426
420
  commandRef,
427
421
  commandEvent,
428
422
  WEBVIEW_HOST_CAPABILITY_VERSION,
@@ -1,4 +1,4 @@
1
- import type { CommandDefinition, CommandLifecycleEventPayload, CommandLifecyclePhase, CommandRef, EventRef, ParamObjectSchema, ParamsOf, Struct } from "pstdio-api-contracts/extension-kernel";
1
+ import type { CommandLifecycleEventPayload, CommandLifecyclePhase, CommandRef, EventRef, Struct } from "pstdio-api-contracts/extension-kernel";
2
2
  export { commandRef, eventRef } from "pstdio-api-contracts/extension-kernel";
3
3
  /**
4
4
  * Build an `EventRef` for a command lifecycle phase (`requested`, `started`, `completed`,
@@ -6,23 +6,3 @@ export { commandRef, eventRef } from "pstdio-api-contracts/extension-kernel";
6
6
  * the correct shape.
7
7
  */
8
8
  export declare const commandEvent: <TPhase extends CommandLifecyclePhase, TParams extends Struct = Struct, TResult = unknown>(command: CommandRef<TParams, TResult>, phase: TPhase) => EventRef<CommandLifecycleEventPayload<TPhase, TParams, TResult>>;
9
- type CommandsRecord = Record<string, CommandDefinition<any, any, any>>;
10
- type CommandRefFromDefinition<TDefinition> = TDefinition extends CommandDefinition<infer TSchema, infer TResult, infer _TSettings> ? CommandRef<TSchema extends ParamObjectSchema ? ParamsOf<TSchema> : Struct, TResult> : never;
11
- type CommandsRefMap<TCommands extends CommandsRecord> = {
12
- [K in keyof TCommands]: CommandRefFromDefinition<TCommands[K]>;
13
- };
14
- /**
15
- * Derive typed `CommandRef`s from an extension contribution object. Renaming a
16
- * command in the definition surfaces as a type error wherever the ref is used.
17
- *
18
- * The package name is explicit because identity now lives in package.json, not in
19
- * `defineExtension()`.
20
- *
21
- * @example
22
- * const ext = defineExtension({ commands: { ... } });
23
- * const labCommands = commandsOf("extension-lab", ext);
24
- * labCommands.awaken; // CommandRef<{ title?: string }, ...>
25
- */
26
- export declare const commandsOf: <TExtension extends {
27
- commands?: CommandsRecord;
28
- }>(packageName: string, extension: TExtension) => CommandsRefMap<NonNullable<TExtension["commands"]>>;
@@ -13686,8 +13686,10 @@ var packageAsset = (path, baseUrl) => ({
13686
13686
  path,
13687
13687
  baseUrl
13688
13688
  });
13689
+ // ../pstdio-api-contracts/src/extension-kernel/types/composition.ts
13690
+ var dockedWorkbenchRegions = ["sidenav", "main", "secondary", "side"];
13689
13691
  // ../pstdio-api-contracts/src/extension-kernel/types/extension.ts
13690
- var EXTENSION_API_VERSION = "1.0.0";
13692
+ var EXTENSION_API_VERSION = "1.0.0-alpha.2";
13691
13693
  // ../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.ts
13692
13694
  var WEBVIEW_HOST_CAPABILITY_VERSION = 1;
13693
13695
  var WEBVIEW_DECLARABLE_CAPABILITIES = [
@@ -13989,20 +13991,202 @@ var extensionCommandPaletteContributionSchema = exports_external.object({
13989
13991
  when: extensionWhenExpressionSchema.optional()
13990
13992
  });
13991
13993
 
13992
- // ../pstdio-api-contracts/src/extensions/controls-renderer.ts
13993
- var extensionControlsRendererRecordSchema = exports_external.object({
13994
+ // ../pstdio-api-contracts/src/extensions/execute.ts
13995
+ var extensionResourceRefSchema = exports_external.object({
13996
+ type: exports_external.string(),
13997
+ id: exports_external.string(),
13998
+ projectId: exports_external.string().optional(),
13999
+ label: exports_external.string().optional(),
14000
+ extensionId: exports_external.string().optional(),
14001
+ metadata: jsonObjectSchema.optional()
14002
+ });
14003
+ var extensionRepoContextSchema = exports_external.object({
14004
+ projectId: exports_external.string(),
14005
+ repoId: exports_external.string(),
14006
+ path: exports_external.string(),
14007
+ remote: exports_external.string().nullable().optional(),
14008
+ role: exports_external.enum(["default", "selected", "workspace"]).optional()
14009
+ });
14010
+ var extensionSlotInvocationSchema = exports_external.object({
14011
+ id: exports_external.string(),
14012
+ kind: extensionSlotKindSchema,
14013
+ context: jsonObjectSchema
14014
+ });
14015
+ var extensionAttachmentInvocationSchema = exports_external.object({
14016
+ target: workbenchAttachmentTargetSchema,
14017
+ mode: exports_external.string().optional(),
14018
+ projectId: exports_external.string().optional(),
14019
+ resource: extensionResourceRefSchema.optional()
14020
+ });
14021
+ var extensionRendererContextSchema = exports_external.object({
14022
+ rendererId: exports_external.string(),
14023
+ projectId: exports_external.string().optional(),
14024
+ modeId: exports_external.string().optional(),
14025
+ resource: extensionResourceRefSchema.optional(),
14026
+ invocation: exports_external.object({ placement: exports_external.enum(["visible", "background"]) }).optional()
14027
+ });
14028
+ var commandExecuteRequestSchema = exports_external.object({
14029
+ projectId: exports_external.string().min(1),
14030
+ workspaceId: exports_external.string().optional(),
14031
+ params: jsonObjectSchema.optional(),
14032
+ resource: extensionResourceRefSchema.optional(),
14033
+ attachment: extensionAttachmentInvocationSchema.optional(),
14034
+ slot: extensionSlotInvocationSchema.optional(),
14035
+ repo: extensionRepoContextSchema.optional(),
14036
+ source: commandSourceSchema.optional(),
14037
+ metadata: jsonObjectSchema.optional()
14038
+ });
14039
+ var commandExecuteBodySchema = exports_external.object({
14040
+ workspaceId: exports_external.string().optional(),
14041
+ params: jsonObjectSchema.optional(),
14042
+ resource: extensionResourceRefSchema.optional(),
14043
+ attachment: extensionAttachmentInvocationSchema.optional(),
14044
+ slot: extensionSlotInvocationSchema.optional(),
14045
+ repo: extensionRepoContextSchema.optional(),
14046
+ source: commandSourceSchema.optional(),
14047
+ metadata: jsonObjectSchema.optional()
14048
+ });
14049
+ var dispatchExtensionEventBodySchema = exports_external.object({
14050
+ eventId: exports_external.string().min(1),
14051
+ payload: jsonObjectSchema
14052
+ }).strict();
14053
+ var serializedErrorSchema = exports_external.object({
14054
+ name: exports_external.string().optional(),
14055
+ message: exports_external.string(),
14056
+ stack: exports_external.string().optional()
14057
+ });
14058
+ var commandNoticeSchema = exports_external.object({
14059
+ type: exports_external.enum(["info", "success", "warning", "error"]),
14060
+ title: exports_external.string().optional(),
14061
+ message: exports_external.string(),
14062
+ metadata: jsonObjectSchema.optional()
14063
+ });
14064
+ var commandDiagnosticSchema = exports_external.object({
14065
+ code: exports_external.string(),
14066
+ message: exports_external.string(),
14067
+ severity: exports_external.enum(["info", "warning", "error"]),
14068
+ extensionId: exports_external.string().optional(),
14069
+ commandId: exports_external.string().optional(),
14070
+ metadata: jsonObjectSchema.optional()
14071
+ });
14072
+ var commandOutcomeSchema = exports_external.object({
14073
+ ok: exports_external.boolean(),
14074
+ status: exports_external.enum(["success", "rejected", "error"]),
14075
+ value: exports_external.unknown().optional(),
14076
+ code: exports_external.string().optional(),
14077
+ reason: exports_external.string().optional(),
14078
+ data: jsonObjectSchema.optional(),
14079
+ error: serializedErrorSchema.optional(),
14080
+ notices: exports_external.array(commandNoticeSchema).optional(),
14081
+ diagnostics: exports_external.array(commandDiagnosticSchema).optional()
14082
+ });
14083
+ var commandExecuteResponseSchema = exports_external.object({
14084
+ commandId: exports_external.string(),
14085
+ extensionId: exports_external.string(),
14086
+ eventIds: exports_external.array(exports_external.string()).optional(),
14087
+ outcome: commandOutcomeSchema
14088
+ });
14089
+
14090
+ // ../pstdio-api-contracts/src/extensions/composition.ts
14091
+ var dockedWorkbenchRegionSchema = exports_external.enum(dockedWorkbenchRegions);
14092
+ var extensionResourceSlotSchema = exports_external.object({
14093
+ cardinality: exports_external.enum(["one", "many"]),
14094
+ external: exports_external.boolean()
14095
+ });
14096
+ var extensionResourceKindRecordSchema = exports_external.object({
14097
+ id: exports_external.string(),
14098
+ extensionId: exports_external.string(),
14099
+ surface: exports_external.enum(["primary", "secondary", "attached"]),
14100
+ label: localizableStringSchema.optional(),
14101
+ icon: exports_external.string().optional(),
14102
+ slots: exports_external.record(exports_external.string(), extensionResourceSlotSchema)
14103
+ });
14104
+ var extensionResourcePanelRecordSchema = exports_external.object({
14105
+ id: exports_external.string(),
14106
+ extensionId: exports_external.string(),
14107
+ resourceKind: exports_external.string(),
14108
+ panel: exports_external.string(),
14109
+ slot: exports_external.string()
14110
+ });
14111
+ var panelBodySchema = {
14112
+ webview: exports_external.object({ entry: exports_external.object({ kind: exports_external.literal("package-asset"), path: exports_external.string(), baseUrl: exports_external.string() }) }).optional(),
14113
+ renderer: exports_external.object({ kind: exports_external.enum(["tree", "file", "controls", "dataTable", "kanban"]), id: exports_external.string() }).optional()
14114
+ };
14115
+ var extensionModePlacementSchema = exports_external.object({
14116
+ region: dockedWorkbenchRegionSchema,
14117
+ allowedRegions: exports_external.array(dockedWorkbenchRegionSchema).optional(),
14118
+ required: exports_external.boolean().optional(),
14119
+ defaultOpen: exports_external.boolean().optional(),
14120
+ pinned: exports_external.boolean().optional()
14121
+ });
14122
+ var extensionPanelPlacementSchema = exports_external.object({
14123
+ for: exports_external.string().optional(),
14124
+ region: dockedWorkbenchRegionSchema,
14125
+ allowedRegions: exports_external.array(dockedWorkbenchRegionSchema).optional(),
14126
+ required: exports_external.boolean().optional()
14127
+ });
14128
+ var extensionCompositionPanelRecordSchema = exports_external.object({
13994
14129
  id: exports_external.string(),
13995
14130
  extensionId: exports_external.string(),
13996
14131
  title: localizableStringSchema,
13997
- queryCommandId: exports_external.string(),
13998
- updateValueCommandId: exports_external.string().optional(),
13999
- applyCommandId: exports_external.string().optional(),
14000
- resetCommandId: exports_external.string().optional(),
14001
- refreshEventIds: exports_external.array(exports_external.string()).optional(),
14002
- defaultValues: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
14132
+ icon: exports_external.string().optional(),
14133
+ show: exports_external.union([extensionPanelPlacementSchema, exports_external.array(extensionPanelPlacementSchema).min(1)]).optional(),
14134
+ ...panelBodySchema
14135
+ }).refine((value) => [value.webview, value.renderer].filter(Boolean).length === 1, {
14136
+ message: "Composition panels must declare exactly one body"
14137
+ });
14138
+ var extensionModeResourceRecipeSchema = exports_external.object({
14139
+ slots: exports_external.record(exports_external.string(), extensionModePlacementSchema).optional(),
14140
+ panels: exports_external.record(exports_external.string(), extensionModePlacementSchema).optional()
14141
+ });
14142
+ var extensionModeCompositionRecordSchema = exports_external.object({
14143
+ resources: exports_external.record(exports_external.string(), extensionModeResourceRecipeSchema),
14144
+ modePanels: exports_external.record(exports_external.string(), extensionModePlacementSchema).optional(),
14145
+ defaultResource: exports_external.union([extensionResourceRefSchema, exports_external.object({ commandId: exports_external.string() })]).optional()
14146
+ });
14147
+ var workbenchNavigationTargetSchema = exports_external.object({
14148
+ modeId: exports_external.string().optional(),
14149
+ resource: extensionResourceRefSchema.optional(),
14150
+ replaceActive: exports_external.boolean().optional()
14151
+ });
14152
+ var extensionResourceHierarchyProviderRecordSchema = exports_external.object({
14153
+ id: exports_external.string(),
14154
+ extensionId: exports_external.string(),
14155
+ resourceKind: exports_external.string(),
14156
+ metadata: jsonObjectSchema.optional()
14157
+ });
14158
+
14159
+ // ../pstdio-api-contracts/src/extensions/renderers.ts
14160
+ var extensionRendererRecordBaseSchema = exports_external.object({
14161
+ id: exports_external.string(),
14162
+ extensionId: exports_external.string(),
14163
+ title: localizableStringSchema,
14164
+ icon: exports_external.string().optional(),
14165
+ resourceKind: exports_external.string().optional(),
14166
+ refreshEventIds: exports_external.array(exports_external.string().min(1)).optional(),
14003
14167
  emptyTitle: localizableStringSchema.optional(),
14004
14168
  emptyDescription: localizableStringSchema.optional()
14005
14169
  });
14170
+ var extensionTreeRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14171
+ bodyHandlerId: exports_external.string(),
14172
+ childrenHandlerId: exports_external.string().optional(),
14173
+ footerHandlerId: exports_external.string().optional(),
14174
+ defaultExpandedSectionIds: exports_external.array(exports_external.string()).optional(),
14175
+ defaultExpandedNodeIds: exports_external.array(exports_external.string()).optional()
14176
+ });
14177
+ var extensionFileRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14178
+ loadHandlerId: exports_external.string(),
14179
+ saveHandlerId: exports_external.string().optional()
14180
+ });
14181
+
14182
+ // ../pstdio-api-contracts/src/extensions/controls-renderer.ts
14183
+ var extensionControlsRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14184
+ queryHandlerId: exports_external.string(),
14185
+ valueChangeHandlerId: exports_external.string().optional(),
14186
+ applyHandlerId: exports_external.string().optional(),
14187
+ resetHandlerId: exports_external.string().optional(),
14188
+ defaultValues: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
14189
+ });
14006
14190
 
14007
14191
  // ../pstdio-api-contracts/src/extensions/data-table-renderer.ts
14008
14192
  var themeColorSchema = exports_external.object({
@@ -14049,20 +14233,15 @@ var selectionActionSchema = exports_external.object({
14049
14233
  destructive: exports_external.boolean().optional(),
14050
14234
  commandId: exports_external.string()
14051
14235
  });
14052
- var extensionDataTableRendererRecordSchema = exports_external.object({
14053
- id: exports_external.string(),
14054
- extensionId: exports_external.string(),
14055
- title: localizableStringSchema,
14056
- resourceKind: exports_external.string().optional(),
14236
+ var extensionDataTableRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14057
14237
  columns: exports_external.array(dataTableRendererColumnSchema).optional(),
14058
- queryCommandId: exports_external.string(),
14238
+ queryHandlerId: exports_external.string(),
14059
14239
  selectionMode: exports_external.enum(["none", "multiple"]).optional(),
14060
14240
  selectionActions: exports_external.array(selectionActionSchema).optional(),
14061
14241
  rowActions: exports_external.array(rowActionSchema).optional(),
14242
+ rowActivationHandlerId: exports_external.string().optional(),
14062
14243
  initialPageSize: exports_external.number().int().positive().optional(),
14063
- pageSizeOptions: exports_external.array(exports_external.number().int().positive()).optional(),
14064
- emptyTitle: localizableStringSchema.optional(),
14065
- emptyDescription: localizableStringSchema.optional()
14244
+ pageSizeOptions: exports_external.array(exports_external.number().int().positive()).optional()
14066
14245
  });
14067
14246
 
14068
14247
  // ../pstdio-api-contracts/src/extensions/host-capabilities.ts
@@ -14153,25 +14332,20 @@ var extensionKanbanRendererRowActionSchema = exports_external.object({
14153
14332
  commandId: exports_external.string(),
14154
14333
  destructive: exports_external.boolean().optional()
14155
14334
  });
14156
- var extensionKanbanRendererRecordSchema = exports_external.object({
14157
- id: exports_external.string(),
14158
- extensionId: exports_external.string(),
14335
+ var extensionKanbanRendererRecordSchema = extensionRendererRecordBaseSchema.extend({
14159
14336
  extensionInstanceId: exports_external.string().optional(),
14160
- title: localizableStringSchema,
14161
- resourceKind: exports_external.string().optional(),
14162
14337
  attributes: exports_external.array(kanbanRendererAttributeSchema).optional(),
14163
- queryCommandId: exports_external.string(),
14164
- updateAttributeCommandId: exports_external.string().optional(),
14165
- reorderCommandId: exports_external.string().optional(),
14166
- columnActionCommandId: exports_external.string().optional(),
14338
+ queryHandlerId: exports_external.string(),
14339
+ attributeChangeHandlerId: exports_external.string().optional(),
14340
+ reorderHandlerId: exports_external.string().optional(),
14341
+ columnActionHandlerId: exports_external.string().optional(),
14167
14342
  createRow: extensionKanbanRendererCreateRowSchema.optional(),
14168
14343
  rowActions: exports_external.array(extensionKanbanRendererRowActionSchema).optional(),
14344
+ rowActivationHandlerId: exports_external.string().optional(),
14169
14345
  defaultSettings: kanbanRendererSettingsSchema.partial().optional(),
14170
14346
  defaultFilters: exports_external.record(exports_external.string(), exports_external.array(exports_external.string())).optional(),
14171
14347
  defaultViews: exports_external.array(kanbanRendererSavedViewSchema).optional(),
14172
14348
  defaultActiveViewId: exports_external.string().optional(),
14173
- emptyTitle: localizableStringSchema.optional(),
14174
- emptyDescription: localizableStringSchema.optional(),
14175
14349
  hideToolbar: exports_external.boolean().optional()
14176
14350
  });
14177
14351
  var extensionCommandPaletteResourceRecordSchema = exports_external.object({
@@ -14180,7 +14354,7 @@ var extensionCommandPaletteResourceRecordSchema = exports_external.object({
14180
14354
  title: localizableStringSchema,
14181
14355
  resourceKind: exports_external.string().optional(),
14182
14356
  queryCommandId: exports_external.string(),
14183
- refreshEventIds: exports_external.array(exports_external.string()).optional()
14357
+ refreshEventIds: exports_external.array(exports_external.string().min(1)).optional()
14184
14358
  });
14185
14359
 
14186
14360
  // ../pstdio-api-contracts/src/extensions/keybindings.ts
@@ -14209,21 +14383,15 @@ var extensionKeybindingRecordSchema = exports_external.object({
14209
14383
  });
14210
14384
 
14211
14385
  // ../pstdio-api-contracts/src/extensions/panels.ts
14212
- var hasSinglePanelBody = (value) => [
14213
- value.webview,
14214
- value.treeRendererId,
14215
- value.fileRendererId,
14216
- value.controlsRendererId,
14217
- value.dataTableRendererId
14218
- ].filter(Boolean).length === 1;
14219
- var singlePanelBodyMessage = "Extension panels must declare exactly one body: webview, treeRendererId, fileRendererId, controlsRendererId, or dataTableRendererId";
14386
+ var hasSinglePanelBody = (value) => [value.webview, value.renderer].filter(Boolean).length === 1;
14387
+ var singlePanelBodyMessage = "Extension panels must declare exactly one body: webview or renderer";
14220
14388
  var hostTreeDefaultSchema = exports_external.enum(["default", "none"]);
14221
- var panelBodySchema = {
14389
+ var panelBodySchema2 = {
14222
14390
  webview: extensionWebviewContributionSchema.optional(),
14223
- treeRendererId: exports_external.string().optional(),
14224
- fileRendererId: exports_external.string().optional(),
14225
- controlsRendererId: exports_external.string().optional(),
14226
- dataTableRendererId: exports_external.string().optional()
14391
+ renderer: exports_external.object({
14392
+ kind: exports_external.enum(["tree", "file", "controls", "dataTable", "kanban"]),
14393
+ id: exports_external.string()
14394
+ }).optional()
14227
14395
  };
14228
14396
  var extensionPanelMenuRecordSchema = exports_external.object({
14229
14397
  id: exports_external.string(),
@@ -14235,7 +14403,7 @@ var extensionPanelMenuRecordSchema = exports_external.object({
14235
14403
  placement: extensionPlacementSchema.optional(),
14236
14404
  hostTreeHeader: hostTreeDefaultSchema.optional(),
14237
14405
  hostTreeFooter: hostTreeDefaultSchema.optional(),
14238
- ...panelBodySchema
14406
+ ...panelBodySchema2
14239
14407
  }).refine(hasSinglePanelBody, { message: singlePanelBodyMessage });
14240
14408
  var workbenchExtensionPanelMenuRecordSchema = extensionPanelMenuRecordSchema.safeExtend({ webview: workbenchExtensionWebviewSchema.optional() }).refine(hasSinglePanelBody, { message: singlePanelBodyMessage });
14241
14409
  var extensionPanelRecordBaseSchema = exports_external.object({
@@ -14243,14 +14411,9 @@ var extensionPanelRecordBaseSchema = exports_external.object({
14243
14411
  extensionId: exports_external.string(),
14244
14412
  title: localizableStringSchema,
14245
14413
  icon: exports_external.string().optional(),
14246
- region: workbenchRegionSchema,
14247
- closable: exports_external.boolean(),
14248
- group: exports_external.string().optional(),
14249
- placement: extensionPlacementSchema.optional(),
14250
- resourceKind: exports_external.string().optional(),
14251
- eligibleLocations: exports_external.object({ resourceKinds: exports_external.array(exports_external.string()).optional() }).optional(),
14414
+ show: exports_external.union([extensionPanelPlacementSchema, exports_external.array(extensionPanelPlacementSchema).min(1)]).optional(),
14252
14415
  panelMenus: exports_external.array(extensionPanelMenuRecordSchema).optional(),
14253
- ...panelBodySchema
14416
+ ...panelBodySchema2
14254
14417
  });
14255
14418
  var extensionPanelRecordSchema = extensionPanelRecordBaseSchema.refine(hasSinglePanelBody, {
14256
14419
  message: singlePanelBodyMessage
@@ -14262,29 +14425,16 @@ var extensionRouteRecordSchema = exports_external.object({
14262
14425
  label: localizableStringSchema,
14263
14426
  webview: extensionWebviewContributionSchema
14264
14427
  });
14265
- var extensionNavigationRecordSchema = exports_external.object({
14266
- id: exports_external.string(),
14267
- extensionId: exports_external.string(),
14268
- slotId: exports_external.string(),
14269
- label: localizableStringSchema,
14270
- group: exports_external.string().optional(),
14271
- placement: extensionPlacementSchema.optional(),
14272
- route: exports_external.string().optional(),
14273
- href: exports_external.string().optional(),
14274
- commandId: exports_external.string().optional(),
14275
- params: jsonObjectSchema.optional(),
14276
- icon: exports_external.string().optional(),
14277
- when: extensionWhenExpressionSchema.optional()
14278
- });
14279
14428
  var extensionTreeItemActionSchema = exports_external.discriminatedUnion("kind", [
14280
14429
  exports_external.object({
14281
14430
  kind: exports_external.literal("command"),
14282
14431
  commandId: exports_external.string(),
14283
14432
  args: jsonObjectSchema.optional()
14284
14433
  }),
14285
- exports_external.object({ kind: exports_external.literal("kanbanRenderer"), kanbanRendererId: exports_external.string() }),
14434
+ exports_external.object({ kind: exports_external.literal("panel"), panelId: exports_external.string() }),
14286
14435
  exports_external.object({ kind: exports_external.literal("route"), route: exports_external.string() }),
14287
- exports_external.object({ kind: exports_external.literal("href"), href: exports_external.string() })
14436
+ exports_external.object({ kind: exports_external.literal("href"), href: exports_external.string() }),
14437
+ exports_external.object({ kind: exports_external.literal("resource"), resource: extensionResourceRefSchema })
14288
14438
  ]);
14289
14439
  var extensionActivityItemRecordSchema = exports_external.object({
14290
14440
  id: exports_external.string(),
@@ -14301,33 +14451,26 @@ var extensionTreeItemContributionSchema = exports_external.object({
14301
14451
  extensionId: exports_external.string(),
14302
14452
  target: workbenchTreeTargetSchema,
14303
14453
  label: localizableStringSchema,
14304
- group: exports_external.string().optional(),
14454
+ group: exports_external.string().nullable().optional(),
14305
14455
  placement: extensionPlacementSchema.optional(),
14306
14456
  icon: exports_external.string().optional(),
14307
14457
  action: extensionTreeItemActionSchema,
14308
14458
  when: extensionWhenExpressionSchema.optional()
14309
14459
  });
14310
- var modeTargetContributionRecordSchema = exports_external.object({
14311
- panel: exports_external.string().optional(),
14312
- resource: exports_external.string().optional(),
14313
- region: workbenchRegionSchema.optional(),
14314
- title: localizableStringSchema.optional(),
14315
- pinned: exports_external.boolean().optional()
14316
- }).refine((value) => value.panel || value.resource, {
14317
- message: "Mode layout entries must declare a panel or resource"
14318
- });
14319
- var modeLayoutContributionRecordSchema = exports_external.object({
14320
- panels: exports_external.array(exports_external.enum(workbenchModePanels)).optional(),
14321
- open: exports_external.array(modeTargetContributionRecordSchema).optional()
14322
- });
14323
14460
  var extensionModeRecordSchema = exports_external.object({
14324
14461
  id: exports_external.string(),
14325
14462
  extensionId: exports_external.string(),
14326
14463
  modeId: exports_external.string(),
14327
14464
  label: localizableStringSchema,
14328
14465
  icon: exports_external.string().optional(),
14329
- resourceKind: exports_external.string().optional(),
14330
- layout: modeLayoutContributionRecordSchema.optional()
14466
+ panelRegions: exports_external.array(exports_external.enum(workbenchModePanels)).optional()
14467
+ }).extend(extensionModeCompositionRecordSchema.partial().shape);
14468
+ var extensionStatusItemRecordSchema = exports_external.object({
14469
+ id: exports_external.string(),
14470
+ extensionId: exports_external.string(),
14471
+ title: localizableStringSchema,
14472
+ when: extensionWhenExpressionSchema.optional(),
14473
+ webview: workbenchExtensionWebviewSchema.optional()
14331
14474
  });
14332
14475
  var workbenchExtensionPanelRecordSchema = extensionPanelRecordBaseSchema.extend({
14333
14476
  extensionInstanceId: exports_external.string().optional(),
@@ -14349,28 +14492,6 @@ var extensionViewLikeSchema = exports_external.object({
14349
14492
  extensionId: exports_external.string()
14350
14493
  });
14351
14494
 
14352
- // ../pstdio-api-contracts/src/extensions/renderers.ts
14353
- var extensionTreeRendererRecordSchema = exports_external.object({
14354
- id: exports_external.string(),
14355
- extensionId: exports_external.string(),
14356
- title: localizableStringSchema,
14357
- icon: exports_external.string().optional(),
14358
- bodyCommandId: exports_external.string(),
14359
- childrenCommandId: exports_external.string().optional(),
14360
- footerCommandId: exports_external.string().optional(),
14361
- defaultExpandedSectionIds: exports_external.array(exports_external.string()).optional(),
14362
- defaultExpandedNodeIds: exports_external.array(exports_external.string()).optional()
14363
- });
14364
- var extensionFileRendererRecordSchema = exports_external.object({
14365
- id: exports_external.string(),
14366
- extensionId: exports_external.string(),
14367
- title: localizableStringSchema,
14368
- icon: exports_external.string().optional(),
14369
- resourceKind: exports_external.string().optional(),
14370
- loadCommandId: exports_external.string(),
14371
- saveCommandId: exports_external.string().optional()
14372
- });
14373
-
14374
14495
  // ../pstdio-api-contracts/src/extensions/settings.ts
14375
14496
  var extensionSettingsPanelRecordSchema = exports_external.object({
14376
14497
  id: exports_external.string(),
@@ -14436,7 +14557,6 @@ var extensionsCheckResponseSchema = exports_external.object({
14436
14557
  modes: exports_external.array(extensionModeRecordSchema),
14437
14558
  panels: exports_external.array(extensionPanelRecordSchema),
14438
14559
  routes: exports_external.array(extensionRouteRecordSchema),
14439
- navigation: exports_external.array(extensionNavigationRecordSchema),
14440
14560
  treeItems: exports_external.array(extensionTreeItemContributionSchema),
14441
14561
  activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14442
14562
  settingsPanels: exports_external.array(extensionSettingsPanelRecordSchema),
@@ -14472,8 +14592,11 @@ var workbenchExtensionMetadataSchema = exports_external.object({
14472
14592
  commandPaletteContributions: exports_external.array(extensionCommandPaletteContributionSchema).optional(),
14473
14593
  modes: exports_external.array(extensionModeRecordSchema),
14474
14594
  panels: exports_external.array(workbenchExtensionPanelRecordSchema),
14595
+ resourceKinds: exports_external.array(extensionResourceKindRecordSchema).optional(),
14596
+ resourcePanels: exports_external.array(extensionResourcePanelRecordSchema).optional(),
14597
+ resourceHierarchyProviders: exports_external.array(extensionResourceHierarchyProviderRecordSchema).optional(),
14598
+ statusItems: exports_external.array(extensionStatusItemRecordSchema).optional(),
14475
14599
  routes: exports_external.array(workbenchExtensionRouteRecordSchema),
14476
- navigation: exports_external.array(extensionNavigationRecordSchema),
14477
14600
  treeItems: exports_external.array(extensionTreeItemContributionSchema).optional(),
14478
14601
  activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14479
14602
  settingsSections: exports_external.array(extensionSettingsSectionRecordSchema).optional(),
@@ -14504,93 +14627,6 @@ var listExtensionAppearanceResponseSchema = exports_external.object({
14504
14627
  translations: exports_external.array(extensionTranslationRecordSchema),
14505
14628
  diagnostics: exports_external.array(extensionDiagnosticSchema)
14506
14629
  });
14507
- // ../pstdio-api-contracts/src/extensions/execute.ts
14508
- var extensionResourceRefSchema = exports_external.object({
14509
- type: exports_external.string(),
14510
- id: exports_external.string(),
14511
- projectId: exports_external.string().optional(),
14512
- label: exports_external.string().optional(),
14513
- extensionId: exports_external.string().optional(),
14514
- metadata: jsonObjectSchema.optional()
14515
- });
14516
- var extensionRepoContextSchema = exports_external.object({
14517
- projectId: exports_external.string(),
14518
- repoId: exports_external.string(),
14519
- path: exports_external.string(),
14520
- remote: exports_external.string().nullable().optional(),
14521
- role: exports_external.enum(["default", "selected", "workspace"]).optional()
14522
- });
14523
- var extensionSlotInvocationSchema = exports_external.object({
14524
- id: exports_external.string(),
14525
- kind: extensionSlotKindSchema,
14526
- context: jsonObjectSchema
14527
- });
14528
- var extensionAttachmentInvocationSchema = exports_external.object({
14529
- target: workbenchAttachmentTargetSchema,
14530
- mode: exports_external.string().optional(),
14531
- projectId: exports_external.string().optional(),
14532
- resource: extensionResourceRefSchema.optional()
14533
- });
14534
- var commandExecuteRequestSchema = exports_external.object({
14535
- projectId: exports_external.string().min(1),
14536
- workspaceId: exports_external.string().optional(),
14537
- params: jsonObjectSchema.optional(),
14538
- resource: extensionResourceRefSchema.optional(),
14539
- attachment: extensionAttachmentInvocationSchema.optional(),
14540
- slot: extensionSlotInvocationSchema.optional(),
14541
- repo: extensionRepoContextSchema.optional(),
14542
- source: commandSourceSchema.optional(),
14543
- metadata: jsonObjectSchema.optional()
14544
- });
14545
- var commandExecuteBodySchema = exports_external.object({
14546
- workspaceId: exports_external.string().optional(),
14547
- params: jsonObjectSchema.optional(),
14548
- resource: extensionResourceRefSchema.optional(),
14549
- attachment: extensionAttachmentInvocationSchema.optional(),
14550
- slot: extensionSlotInvocationSchema.optional(),
14551
- repo: extensionRepoContextSchema.optional(),
14552
- source: commandSourceSchema.optional(),
14553
- metadata: jsonObjectSchema.optional()
14554
- });
14555
- var dispatchExtensionEventBodySchema = exports_external.object({
14556
- eventId: exports_external.string().min(1),
14557
- payload: jsonObjectSchema
14558
- }).strict();
14559
- var serializedErrorSchema = exports_external.object({
14560
- name: exports_external.string().optional(),
14561
- message: exports_external.string(),
14562
- stack: exports_external.string().optional()
14563
- });
14564
- var commandNoticeSchema = exports_external.object({
14565
- type: exports_external.enum(["info", "success", "warning", "error"]),
14566
- title: exports_external.string().optional(),
14567
- message: exports_external.string(),
14568
- metadata: jsonObjectSchema.optional()
14569
- });
14570
- var commandDiagnosticSchema = exports_external.object({
14571
- code: exports_external.string(),
14572
- message: exports_external.string(),
14573
- severity: exports_external.enum(["info", "warning", "error"]),
14574
- extensionId: exports_external.string().optional(),
14575
- commandId: exports_external.string().optional(),
14576
- metadata: jsonObjectSchema.optional()
14577
- });
14578
- var commandOutcomeSchema = exports_external.object({
14579
- ok: exports_external.boolean(),
14580
- status: exports_external.enum(["success", "rejected", "error"]),
14581
- value: exports_external.unknown().optional(),
14582
- code: exports_external.string().optional(),
14583
- reason: exports_external.string().optional(),
14584
- data: jsonObjectSchema.optional(),
14585
- error: serializedErrorSchema.optional(),
14586
- notices: exports_external.array(commandNoticeSchema).optional(),
14587
- diagnostics: exports_external.array(commandDiagnosticSchema).optional()
14588
- });
14589
- var commandExecuteResponseSchema = exports_external.object({
14590
- commandId: exports_external.string(),
14591
- extensionId: exports_external.string(),
14592
- outcome: commandOutcomeSchema
14593
- });
14594
14630
  // ../pstdio-api-contracts/src/extensions/install.ts
14595
14631
  var enableInstalledExtensionRequestSchema = exports_external.object({
14596
14632
  displayName: exports_external.string(),
@@ -14627,7 +14663,8 @@ var projectExtensionInstanceSchema = exports_external.object({
14627
14663
  lastLoadedAt: exports_external.string().nullable().optional(),
14628
14664
  lastError: jsonObjectSchema.nullable().optional(),
14629
14665
  enabled: exports_external.boolean(),
14630
- config: exports_external.record(exports_external.string(), exports_external.unknown())
14666
+ config: exports_external.record(exports_external.string(), exports_external.unknown()),
14667
+ updateAvailable: exports_external.boolean()
14631
14668
  });
14632
14669
  var listProjectExtensionsResponseSchema = exports_external.object({
14633
14670
  extensions: exports_external.array(projectExtensionInstanceSchema)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pstdio/sdk",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/pufflyai/prompt-studio"