@pstdio/sdk 0.38.0 → 0.39.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.
@@ -17,8 +17,8 @@ declare const listActivityResponseSchema: z.ZodObject<{
17
17
  source_extension_id: z.ZodNullable<z.ZodString>;
18
18
  event_type: z.ZodString;
19
19
  actor_type: z.ZodEnum<{
20
- agent: "agent";
21
20
  user: "user";
21
+ agent: "agent";
22
22
  system: "system";
23
23
  }>;
24
24
  actor_id: z.ZodNullable<z.ZodString>;
@@ -139,8 +139,12 @@ type AgentSkillsLayout = z.infer<typeof agentSkillsLayoutSchema>;
139
139
  declare const harnessLocalId: (id: string) => string;
140
140
  //#endregion
141
141
  //#region ../pstdio-api-contracts/src/extension-kernel/api-versions.d.ts
142
- /** Authors certify each supported API version; a range must never imply support for another alpha. */
143
- declare const parseExtensionApiVersions: (declaration: string) => string[] | null;
142
+ /**
143
+ * Only caret terms are accepted because each one stops below the next breaking version, so a
144
+ * declaration can never claim support for a breaking API that did not exist when it was written.
145
+ * Returns the minimum API version of each term.
146
+ */
147
+ declare const parseExtensionApiDeclaration: (declaration: string) => string[] | null;
144
148
  declare const supportsExtensionApiVersion: (declaration: string, hostVersion: string) => boolean;
145
149
  //#endregion
146
150
  //#region ../pstdio-api-contracts/src/extension-kernel/l10n.d.ts
@@ -155,6 +159,54 @@ declare const l10n: (key: string, defaultValue?: string) => {
155
159
  };
156
160
  declare const isLocalizedString: (value: unknown) => value is LocalizedString;
157
161
  //#endregion
162
+ //#region ../pstdio-api-contracts/src/extension-kernel/workbench-targets.d.ts
163
+ declare const workbenchMenuTargets: readonly ["workbench.nav.actions", "workbench.nav.overflow"];
164
+ declare const workbenchTreeTargets: readonly ["workbench.left.tree", "workbench.main.left.tree", "workbench.main.right.tree"];
165
+ declare const workbenchViewTargets: readonly ["workbench.main", "workbench.main.left", "workbench.main.right", "workbench.secondary"];
166
+ declare const workbenchSettingsTargets: readonly ["workbench.settings"];
167
+ type WorkbenchMenuTarget = (typeof workbenchMenuTargets)[number];
168
+ type WorkbenchTreeTarget = (typeof workbenchTreeTargets)[number];
169
+ type WorkbenchViewTarget = (typeof workbenchViewTargets)[number];
170
+ type WorkbenchSettingsTarget = (typeof workbenchSettingsTargets)[number];
171
+ type WorkbenchAttachmentTarget = WorkbenchMenuTarget | WorkbenchTreeTarget | WorkbenchViewTarget | WorkbenchSettingsTarget;
172
+ //#endregion
173
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/contribution-identity.d.ts
174
+ type ContributionKind = "activity-item" | "artifact-mount" | "command" | "command-palette-resource" | "connection" | "file-icon-theme" | "harness" | "hook" | "keybinding" | "middleware" | "mode" | "navigation-item" | "navigation-tree" | "page" | "placement" | "resource-hierarchy-provider" | "resource-kind" | "schedule" | "settings-panel" | "settings-section" | "skill" | "status" | "status-bar-item" | "template" | "template-type" | "theme" | "view" | "view-menu" | "workspace-type";
175
+ interface ContributionRef<Kind extends ContributionKind> {
176
+ readonly extensionId?: string;
177
+ readonly kind: Kind;
178
+ readonly id: string;
179
+ }
180
+ interface ContributionDefinition<Kind extends ContributionKind> {
181
+ readonly id: string;
182
+ readonly ref: ContributionRef<Kind>;
183
+ }
184
+ type ContributionInput<Kind extends ContributionKind> = Omit<ContributionDefinition<Kind>, "ref">;
185
+ type ConnectionRef = ContributionRef<"connection">;
186
+ type ThemeRef = ContributionRef<"theme">;
187
+ type ModeRef = ContributionRef<"mode">;
188
+ type PageRef = ContributionRef<"page">;
189
+ type PlacementRef = ContributionRef<"placement">;
190
+ type ResourceKindRef = ContributionRef<"resource-kind">;
191
+ type SettingsSectionRef = ContributionRef<"settings-section">;
192
+ interface SettingsSlotRef {
193
+ readonly id: string;
194
+ }
195
+ interface StatusBarSlotRef {
196
+ readonly id: string;
197
+ }
198
+ type StatusRef = ContributionRef<"status">;
199
+ type ViewRef = ContributionRef<"view">;
200
+ //#endregion
201
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/json.d.ts
202
+ type JsonPrimitive = string | number | boolean | null;
203
+ type JsonValue = JsonPrimitive | JsonValue[] | JsonObject;
204
+ type JsonObject = {
205
+ [key: string]: JsonValue;
206
+ };
207
+ type MaybePromise<T> = T | Promise<T>;
208
+ type Struct = object;
209
+ //#endregion
158
210
  //#region ../pstdio-api-contracts/src/extensions.terminal.d.ts
159
211
  interface TerminalSessionRequest$1 {
160
212
  /** Command + args to run; defaults to the user's login shell when omitted. */
@@ -226,78 +278,6 @@ type TerminalSessionResult$1 = {
226
278
  accepted: true;
227
279
  };
228
280
  //#endregion
229
- //#region ../pstdio-api-contracts/src/extension-kernel/workbench-targets.d.ts
230
- declare const workbenchMenuTargets: readonly ["workbench.nav.actions", "workbench.nav.overflow"];
231
- declare const workbenchTreeTargets: readonly ["workbench.left.tree", "workbench.main.left.tree", "workbench.main.right.tree"];
232
- declare const workbenchViewTargets: readonly ["workbench.main", "workbench.main.left", "workbench.main.right", "workbench.secondary"];
233
- declare const workbenchSettingsTargets: readonly ["workbench.settings"];
234
- type WorkbenchMenuTarget = (typeof workbenchMenuTargets)[number];
235
- type WorkbenchTreeTarget = (typeof workbenchTreeTargets)[number];
236
- type WorkbenchViewTarget = (typeof workbenchViewTargets)[number];
237
- type WorkbenchSettingsTarget = (typeof workbenchSettingsTargets)[number];
238
- type WorkbenchAttachmentTarget = WorkbenchMenuTarget | WorkbenchTreeTarget | WorkbenchViewTarget | WorkbenchSettingsTarget;
239
- //#endregion
240
- //#region ../pstdio-api-contracts/src/extension-kernel/types/contribution-identity.d.ts
241
- type ContributionKind = "activity-item" | "artifact-mount" | "command" | "command-palette-resource" | "connection" | "file-icon-theme" | "harness" | "hook" | "keybinding" | "middleware" | "mode" | "navigation-item" | "navigation-tree" | "page" | "placement" | "resource-hierarchy-provider" | "resource-kind" | "schedule" | "settings-panel" | "settings-section" | "skill" | "status" | "status-bar-item" | "template" | "template-type" | "theme" | "view" | "view-menu" | "workspace-type";
242
- interface ContributionRef<Kind extends ContributionKind> {
243
- readonly extensionId?: string;
244
- readonly kind: Kind;
245
- readonly id: string;
246
- }
247
- interface ContributionDefinition<Kind extends ContributionKind> {
248
- readonly id: string;
249
- readonly ref: ContributionRef<Kind>;
250
- }
251
- type ContributionInput<Kind extends ContributionKind> = Omit<ContributionDefinition<Kind>, "ref">;
252
- type ConnectionRef = ContributionRef<"connection">;
253
- type ThemeRef = ContributionRef<"theme">;
254
- type ModeRef = ContributionRef<"mode">;
255
- type PageRef = ContributionRef<"page">;
256
- type PlacementRef = ContributionRef<"placement">;
257
- type ResourceKindRef = ContributionRef<"resource-kind">;
258
- type SettingsSectionRef = ContributionRef<"settings-section">;
259
- interface SettingsSlotRef {
260
- readonly id: string;
261
- }
262
- interface StatusBarSlotRef {
263
- readonly id: string;
264
- }
265
- type StatusRef = ContributionRef<"status">;
266
- type ViewRef = ContributionRef<"view">;
267
- //#endregion
268
- //#region ../pstdio-api-contracts/src/extension-kernel/types/json.d.ts
269
- type JsonPrimitive = string | number | boolean | null;
270
- type JsonValue = JsonPrimitive | JsonValue[] | JsonObject;
271
- type JsonObject = {
272
- [key: string]: JsonValue;
273
- };
274
- type MaybePromise<T> = T | Promise<T>;
275
- type Struct = object;
276
- //#endregion
277
- //#region ../pstdio-api-contracts/src/extension-kernel/types/events.d.ts
278
- interface EventRef<TPayload extends Struct = Struct> {
279
- readonly extensionId?: string;
280
- readonly kind: "event";
281
- readonly id: string;
282
- payload?: TPayload;
283
- }
284
- interface EventDeliveryResult {
285
- delivered: number;
286
- diagnostics?: CommandDiagnostic[];
287
- }
288
- //#endregion
289
- //#region ../pstdio-api-contracts/src/extension-kernel/types/renderer-base.d.ts
290
- /** A raw cross-extension id must be namespaced. Local events use an EventRef. */
291
- type RendererEventReference = EventRef | `${string}.${string}`;
292
- interface RendererContributionBase {
293
- title: Localizable<string>;
294
- icon?: string;
295
- resourceKind?: string;
296
- refreshEvents?: readonly RendererEventReference[];
297
- emptyTitle?: Localizable<string>;
298
- emptyDescription?: Localizable<string>;
299
- }
300
- //#endregion
301
281
  //#region ../pstdio-api-contracts/src/extension-kernel/types/resources.d.ts
302
282
  type ResourceRole = "primary" | "context" | "source" | "result";
303
283
  interface ResourceRef {
@@ -347,1467 +327,89 @@ interface PackageAssetDescriptor {
347
327
  baseUrl: string;
348
328
  }
349
329
  //#endregion
350
- //#region ../pstdio-api-contracts/src/extension-kernel/types/file-renderer.d.ts
351
- type FileRendererResourceRef = ResourceRef;
352
- interface FileRendererSectionAnchor {
353
- /** Stable extension-owned tree node id. */
330
+ //#region ../pstdio-api-contracts/src/notifications/types.d.ts
331
+ type NotificationKind = "needs_review" | "ready_to_merge" | "blocked" | "approval_required" | "failed" | "info";
332
+ type NotificationStatus = "open" | "read" | "snoozed" | "done" | "dismissed" | "expired";
333
+ type NotificationPriority = "low" | "normal" | "high" | "urgent";
334
+ type NotificationActorType = "user" | "agent" | "system";
335
+ type NotificationOrigin = "core" | "extension" | "agent";
336
+ type NotificationAction = {
354
337
  id: string;
355
- /** Plain heading text as it appears in the Markdown document. */
356
- heading: string;
357
- /** Zero-based occurrence when the document repeats the same heading text. */
358
- occurrence?: number;
359
- }
360
- interface FileRendererSectionTarget {
361
- /** The document outline used for deep-linking and active-heading sync. */
362
- anchors: FileRendererSectionAnchor[];
363
- }
364
- interface FileRendererLoadParams {
365
- renderer: RendererContext;
366
- }
367
- interface FileRendererLoadResult {
368
- fileName?: string;
369
- mimeType?: string;
370
- content?: string;
371
- dataUrl?: string;
372
- placeholder?: string;
373
- /** Override contribution-level save support for one loaded file. */
374
- editable?: boolean;
375
- /** Request Monaco for text that automatic dispatch would open as markdown. */
376
- textRenderer?: "automatic" | "monaco";
377
- /** Represent a deliberate no-file selection without an editable blank document. */
378
- emptyState?: {
379
- title: string;
380
- description?: string;
381
- };
338
+ label: string;
339
+ kind: "navigate";
340
+ target: NavigationTarget;
341
+ primary?: boolean;
342
+ } | {
343
+ id: string;
344
+ label: string;
345
+ kind: "command";
346
+ command: string;
347
+ params?: JsonObject;
348
+ primary?: boolean;
349
+ destructive?: boolean;
350
+ } | {
351
+ id: string;
352
+ label: string;
353
+ kind: "url";
354
+ href: string;
355
+ primary?: boolean;
356
+ };
357
+ interface Notification {
358
+ id: string;
359
+ projectId: string;
360
+ title: string;
361
+ body?: string | null;
362
+ kind: NotificationKind;
363
+ status: NotificationStatus;
364
+ priority: NotificationPriority;
365
+ source: CommandSource;
366
+ origin: NotificationOrigin;
367
+ sourceExtensionId?: string | null;
368
+ actorType?: NotificationActorType | null;
369
+ actorId?: string | null;
370
+ target?: ResourceRef | null;
371
+ related: ResourceRef[];
372
+ actions: NotificationAction[];
373
+ dedupeKey?: string | null;
374
+ metadata?: JsonObject | null;
375
+ createdAt: string;
376
+ updatedAt: string;
377
+ readAt?: string | null;
378
+ resolvedAt?: string | null;
379
+ snoozedUntil?: string | null;
380
+ expiresAt?: string | null;
382
381
  }
383
- interface FileRendererSaveParams {
384
- renderer: RendererContext;
385
- content: string;
382
+ interface CreateNotificationInput {
383
+ projectId: string;
384
+ title: string;
385
+ body?: string;
386
+ kind: NotificationKind;
387
+ priority?: NotificationPriority;
388
+ target?: ResourceRef;
389
+ related?: ResourceRef[];
390
+ actions?: NotificationAction[];
391
+ dedupeKey?: string;
392
+ expiresAt?: string;
393
+ snoozedUntil?: string;
394
+ metadata?: JsonObject;
386
395
  }
387
- interface FileRendererContribution extends RendererContributionBase {
388
- load: RendererCallback<FileRendererLoadParams, FileRendererLoadResult>;
389
- save?: RendererCallback<FileRendererSaveParams, unknown>;
396
+ interface UpdateNotificationInput {
397
+ priority?: NotificationPriority;
398
+ snoozedUntil?: string | null;
399
+ metadata?: JsonObject;
390
400
  }
391
- //#endregion
392
- //#region ../pstdio-api-contracts/src/extension-kernel/types/resource-binding.d.ts
393
- interface ResourceConstraint {
394
- readonly kinds: readonly ResourceKindRef[];
401
+ interface ListNotificationsQuery {
402
+ status?: NotificationStatus | NotificationStatus[];
403
+ priority?: NotificationPriority | NotificationPriority[];
404
+ sourceExtensionId?: string;
405
+ resourceType?: string;
406
+ resourceId?: string;
407
+ cursor?: string;
408
+ limit?: number;
395
409
  }
396
- interface ResourceBinding extends ResourceConstraint {
397
- readonly view: ViewRef;
398
- readonly cardinality: "one" | "many";
399
- readonly add?: NavigationTarget;
400
- }
401
- //#endregion
402
- //#region ../pstdio-api-contracts/src/extension-kernel/types/slots.d.ts
403
- type UiSlotKind = "menu" | "panel" | "settings" | "renderer" | "kanbanRenderer" | "dataTableRenderer";
404
- interface SlotOptions<TKind extends UiSlotKind = UiSlotKind> {
405
- kind: TKind;
406
- label?: string;
407
- description?: string;
408
- metadata?: JsonObject;
409
- }
410
- interface SlotRef<TContext extends Struct = Struct, TKind extends UiSlotKind = UiSlotKind> {
411
- id: string;
412
- kind: TKind;
413
- label?: string;
414
- description?: string;
415
- metadata?: JsonObject;
416
- /** Phantom field used to constrain compatible contributions; never populated at runtime. */
417
- context?: TContext;
418
- }
419
- interface SlotInvocationContext<TContext extends Struct = Struct> {
420
- id: string;
421
- kind: UiSlotKind;
422
- context: TContext;
423
- }
424
- //#endregion
425
- //#region ../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.d.ts
426
- declare const WEBVIEW_HOST_CAPABILITY_VERSION = 1;
427
- declare const WEBVIEW_DECLARABLE_CAPABILITIES: readonly ["clipboard.write", "commands.execute", "navigation.open", "placement.close", "notification.show", "notification.action", "notification.resolve", "notification.dismiss", "preferences.get", "preferences.set", "extension.settings.all", "extension.settings.get", "extension.settings.set", "extension.settings.delete", "terminal.session", "files.upload", "files.list", "files.delete"];
428
- declare const WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES: readonly ["artifacts.read"];
429
- declare const ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES: readonly ["host.dispatchKeyboardEvent"];
430
- declare const WEBVIEW_HOST_CAPABILITIES: readonly [...("commands.execute" | "navigation.open" | "placement.close" | "notification.show" | "notification.action" | "notification.resolve" | "notification.dismiss" | "preferences.get" | "preferences.set" | "extension.settings.all" | "extension.settings.get" | "extension.settings.set" | "extension.settings.delete" | "terminal.session" | "files.upload" | "files.list" | "files.delete")[], "artifacts.read", "host.dispatchKeyboardEvent"];
431
- type WebviewHostCapability = (typeof WEBVIEW_HOST_CAPABILITIES)[number];
432
- type WebviewDeclarableCapability = (typeof WEBVIEW_DECLARABLE_CAPABILITIES)[number];
433
- type WebviewScopedDeclarableCapability = (typeof WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES)[number];
434
- type WebviewCapabilityDeclaration = WebviewDeclarableCapability | `${WebviewDeclarableCapability}@${typeof WEBVIEW_HOST_CAPABILITY_VERSION}` | `${WebviewScopedDeclarableCapability}:${string}`;
435
- interface WebviewCommandsExecuteParams {
436
- commandId: string;
437
- params?: JsonObject;
438
- workspaceId?: string;
439
- resource?: ResourceRef;
440
- metadata?: JsonObject;
441
- }
442
- interface WebviewNavigationOpenParams {
443
- target: NavigationTarget;
444
- }
445
- interface WebviewNotificationShowParams {
446
- level: "info" | "success" | "warning" | "error";
447
- title: string;
448
- message?: string;
449
- }
450
- type WebviewNotificationActionParams = Omit<CreateNotificationInput, "projectId">;
451
- interface WebviewNotificationResolveParams {
452
- id?: string;
453
- dedupeKey?: string;
454
- status?: Extract<NotificationStatus, "done" | "dismissed" | "expired">;
455
- }
456
- type WebviewNotificationDismissParams = Pick<WebviewNotificationResolveParams, "id" | "dedupeKey">;
457
- interface WebviewPreferencesGetParams {
458
- name: string;
459
- scope?: {
460
- scope: "default" | "user" | "project" | "workspace" | "extension" | "session";
461
- scopeId?: string;
462
- };
463
- }
464
- interface WebviewPreferencesSetParams extends WebviewPreferencesGetParams {
465
- value: boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
466
- }
467
- interface WebviewExtensionSettingKeyParams {
468
- key: string;
469
- }
470
- interface WebviewExtensionSettingSetParams extends WebviewExtensionSettingKeyParams {
471
- value: unknown;
472
- }
473
- type WebviewFileScope = {
474
- type: "project";
475
- } | {
476
- type: "resource";
477
- id: string;
478
- } | {
479
- type: string;
480
- id?: string;
481
- };
482
- interface WebviewFilesUploadParams {
483
- name: string;
484
- data: Uint8Array | ArrayBuffer;
485
- mimeType?: string;
486
- scope?: WebviewFileScope;
487
- }
488
- interface WebviewFilesListParams {
489
- scope?: WebviewFileScope;
490
- }
491
- interface WebviewFilesDeleteParams {
492
- id: string;
493
- }
494
- type WebviewArtifactsReadParams = {
495
- op: "list";
496
- mount: string;
497
- prefix?: string;
498
- } | {
499
- op: "readText";
500
- mount: string;
501
- path: string;
502
- } | {
503
- op: "imageUrl";
504
- mount: string;
505
- path: string;
506
- };
507
- interface WebviewArtifactFile {
508
- path: string;
509
- size: number;
510
- mediaType: string;
511
- }
512
- interface WebviewKeyboardEventParams {
513
- key?: string;
514
- code?: string;
515
- ctrlKey?: boolean;
516
- metaKey?: boolean;
517
- altKey?: boolean;
518
- shiftKey?: boolean;
519
- repeat?: boolean;
520
- }
521
- interface WebviewHostCapabilityParams {
522
- "commands.execute": WebviewCommandsExecuteParams;
523
- "navigation.open": WebviewNavigationOpenParams;
524
- "placement.close": Record<string, never>;
525
- "notification.show": WebviewNotificationShowParams;
526
- "notification.action": WebviewNotificationActionParams;
527
- "notification.resolve": WebviewNotificationResolveParams;
528
- "notification.dismiss": WebviewNotificationDismissParams;
529
- "preferences.get": WebviewPreferencesGetParams;
530
- "preferences.set": WebviewPreferencesSetParams;
531
- "extension.settings.all": Record<string, never>;
532
- "extension.settings.get": WebviewExtensionSettingKeyParams;
533
- "extension.settings.set": WebviewExtensionSettingSetParams;
534
- "extension.settings.delete": WebviewExtensionSettingKeyParams;
535
- "terminal.session": TerminalSessionOperation$1;
536
- "files.upload": WebviewFilesUploadParams;
537
- "files.list": WebviewFilesListParams;
538
- "files.delete": WebviewFilesDeleteParams;
539
- "artifacts.read": WebviewArtifactsReadParams;
540
- "host.dispatchKeyboardEvent": WebviewKeyboardEventParams;
541
- }
542
- interface WebviewHostCapabilityResults {
543
- "commands.execute": {
544
- outcome: CommandOutcome;
545
- };
546
- "navigation.open": void;
547
- "placement.close": void;
548
- "notification.show": void;
549
- "notification.action": Notification;
550
- "notification.resolve": Notification | {
551
- resolved: number;
552
- notifications: Notification[];
553
- };
554
- "notification.dismiss": Notification | {
555
- resolved: number;
556
- notifications: Notification[];
557
- };
558
- "preferences.get": WebviewPreferencesSetParams["value"] | undefined;
559
- "preferences.set": {
560
- name: string;
561
- value: WebviewPreferencesSetParams["value"];
562
- };
563
- "extension.settings.all": Record<string, unknown>;
564
- "extension.settings.get": unknown;
565
- "extension.settings.set": void;
566
- "extension.settings.delete": void;
567
- "terminal.session": TerminalSessionResult$1;
568
- "files.upload": ExtensionBlobRef;
569
- "files.list": {
570
- files: ExtensionBlobRef[];
571
- };
572
- "files.delete": void;
573
- "artifacts.read": WebviewArtifactFile[] | string;
574
- "host.dispatchKeyboardEvent": void;
575
- }
576
- type WebviewHostCapabilityResult<Capability extends WebviewHostCapability, Params extends WebviewHostCapabilityParams[Capability] = WebviewHostCapabilityParams[Capability]> = Capability extends "artifacts.read" ? Params extends {
577
- op: "list";
578
- } ? WebviewArtifactFile[] : Params extends {
579
- op: "readText" | "imageUrl";
580
- } ? string : WebviewHostCapabilityResults[Capability] : Capability extends "terminal.session" ? Params extends {
581
- operation: "open";
582
- } ? Extract<TerminalSessionResult$1, {
583
- operation: "open";
584
- }> : Params extends {
585
- operation: "write" | "resize" | "kill" | "subscribe";
586
- } ? Exclude<TerminalSessionResult$1, {
587
- operation: "open";
588
- }> : TerminalSessionResult$1 : WebviewHostCapabilityResults[Capability];
589
- //#endregion
590
- //#region ../pstdio-api-contracts/src/extension-kernel/types/params.d.ts
591
- type ParamType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files" | "harness" | "template" | "resource" | "workspace" | "json" | "list";
592
- type ParamRequired<TRequired extends boolean | undefined> = TRequired extends true ? {
593
- required: true;
594
- } : TRequired extends false ? {
595
- required: false;
596
- } : {
597
- required?: boolean;
598
- };
599
- type ParamBase<TValue, TRequired extends boolean | undefined = boolean | undefined> = {
600
- label?: Localizable<string>;
601
- description?: Localizable<string>;
602
- defaultValue?: TValue;
603
- metadata?: JsonObject;
604
- resolvedFrom?: "resource";
605
- } & ParamRequired<TRequired>;
606
- type TextParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
607
- type: "text";
608
- };
609
- type LongTextParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
610
- type: "longtext";
611
- };
612
- type MarkdownParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
613
- type: "markdown";
614
- placeholder?: Localizable<string>;
615
- };
616
- type NumberParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<number, TRequired> & {
617
- type: "number";
618
- };
619
- type FilesParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
620
- type: "files";
621
- multiple?: boolean;
622
- /** Passed through to the picker, e.g. "image/*". */
623
- accept?: string;
624
- };
625
- type BooleanParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<boolean, TRequired> & {
626
- type: "boolean";
627
- };
628
- type ParamOption = {
629
- label: string;
630
- value: string;
631
- icon?: string;
632
- };
633
- type SelectParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
634
- type: "select";
635
- options: ParamOption[];
636
- };
637
- type MultiSelectParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
638
- type: "multi-select";
639
- options: ParamOption[];
640
- };
641
- type HarnessParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<{
642
- harnessId: string;
643
- model?: string;
644
- params?: Record<string, string | boolean>;
645
- }, TRequired> & {
646
- type: "harness";
647
- };
648
- type TemplateParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
649
- type: "template";
650
- templateType: string;
651
- };
652
- type ResourceParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<ResourceRef, TRequired> & {
653
- type: "resource";
654
- resourceType: string;
655
- };
656
- type WorkspaceParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<{
657
- providerId: string;
658
- params?: JsonObject;
659
- }, TRequired> & {
660
- type: "workspace";
661
- /** Provider ids the user may choose from. Omit to offer every provider. */
662
- providers?: string[];
663
- };
664
- type JsonParam<T = unknown, TRequired extends boolean | undefined = boolean | undefined> = ParamBase<T, TRequired> & {
665
- type: "json";
666
- };
667
- type ListParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
668
- type: "list";
669
- };
670
- type ParamDescriptor<TValue = unknown, TRequired extends boolean | undefined = boolean | undefined> = TextParam<TRequired> | LongTextParam<TRequired> | MarkdownParam<TRequired> | NumberParam<TRequired> | BooleanParam<TRequired> | SelectParam<TRequired> | MultiSelectParam<TRequired> | FilesParam<TRequired> | HarnessParam<TRequired> | TemplateParam<TRequired> | ResourceParam<TRequired> | WorkspaceParam<TRequired> | JsonParam<TValue, TRequired> | ListParam<TRequired>;
671
- type ParamObjectSchema = Record<string, ParamDescriptor>;
672
- type ParamValue<TDescriptor extends ParamDescriptor> = TDescriptor extends ParamDescriptor<infer V> ? V : never;
673
- type RequiredParamKeys<TSchema extends ParamObjectSchema> = { [K in keyof TSchema]: TSchema[K] extends {
674
- required: true;
675
- } ? K : never; }[keyof TSchema];
676
- type OptionalParamKeys<TSchema extends ParamObjectSchema> = Exclude<keyof TSchema, RequiredParamKeys<TSchema>>;
677
- type ParamsOf<TSchema extends ParamObjectSchema> = { [K in RequiredParamKeys<TSchema>]: ParamValue<TSchema[K]>; } & { [K in OptionalParamKeys<TSchema>]?: ParamValue<TSchema[K]>; };
678
- //#endregion
679
- //#region ../pstdio-api-contracts/src/extension-kernel/types/kanban-renderer.d.ts
680
- type KanbanRendererViewMode = "board" | "list";
681
- type KanbanRendererSortDirection = "asc" | "desc";
682
- interface KanbanRendererEnumOption {
683
- value: string;
684
- label: Localizable<string>;
685
- color?: string;
686
- icon?: string | null;
687
- }
688
- type KanbanRendererAttributeType = {
689
- kind: "enum";
690
- options: KanbanRendererEnumOption[];
691
- } | {
692
- kind: "enum-multi";
693
- options: KanbanRendererEnumOption[];
694
- } | {
695
- kind: "status";
696
- statuses: StatusRef;
697
- } | {
698
- kind: "string";
699
- } | {
700
- kind: "date";
701
- } | {
702
- kind: "number";
703
- } | {
704
- kind: "user";
705
- };
706
- interface CollectionBadgeItem {
707
- id: string;
708
- label: string;
709
- icon?: string;
710
- resource?: ResourceRef;
711
- }
712
- type KanbanRendererAttributeDisplay = {
713
- kind: "badge-list";
714
- itemsAttributeId: string;
715
- };
716
- interface KanbanRendererAttributeDescriptor {
717
- id: string;
718
- label: Localizable<string>;
719
- type: KanbanRendererAttributeType;
720
- filterable?: boolean;
721
- groupable?: boolean;
722
- sortable?: boolean;
723
- displayable?: boolean;
724
- editable?: boolean;
725
- display?: KanbanRendererAttributeDisplay;
726
- }
727
- interface KanbanRendererSettings {
728
- viewMode: KanbanRendererViewMode;
729
- columnGrouping: string;
730
- rowGrouping: string;
731
- ordering: {
732
- attributeId: string;
733
- direction: KanbanRendererSortDirection;
734
- };
735
- displayProperties: string[];
736
- }
737
- type KanbanRendererFilterState = Record<string, string[]>;
738
- interface KanbanRendererSavedView {
739
- id: string;
740
- title: Localizable<string>;
741
- settings: KanbanRendererSettings;
742
- filters: KanbanRendererFilterState;
743
- isDefault?: boolean;
744
- }
745
- interface KanbanRendererQueryParams {
746
- renderer: RendererContext;
747
- settings: KanbanRendererSettings;
748
- filters: KanbanRendererFilterState;
749
- }
750
- type KanbanRendererResourceRef = ResourceRef;
751
- interface KanbanRendererRow {
752
- id: string;
753
- title: string;
754
- resource?: KanbanRendererResourceRef;
755
- attributes: Record<string, unknown>;
756
- }
757
- interface KanbanRendererColumnAction {
758
- id: string;
759
- label: Localizable<string>;
760
- icon?: string;
761
- }
762
- interface KanbanRendererBoardColumnConfig {
763
- color?: string;
764
- canDragIn?: boolean;
765
- canDragOut?: boolean;
766
- canCreate?: boolean;
767
- actions?: KanbanRendererColumnAction[];
768
- }
769
- interface KanbanRendererQueryResult {
770
- rows: KanbanRendererRow[];
771
- attributes?: KanbanRendererAttributeDescriptor[];
772
- boardColumnConfigs?: Record<string, KanbanRendererBoardColumnConfig>;
773
- }
774
- interface KanbanRendererCreateRowContribution<TParams extends ParamObjectSchema = ParamObjectSchema> {
775
- command: CommandRef<Struct, unknown>;
776
- title?: Localizable<string>;
777
- submitLabel?: Localizable<string>;
778
- columnParam?: string;
779
- params?: TParams;
780
- attributesParam?: string;
781
- attachments?: {
782
- command: CommandRef<Struct, unknown>;
783
- resourceParam: string;
784
- fileParam: string;
785
- };
786
- labels?: {
787
- cancel?: Localizable<string>;
788
- properties?: Localizable<string>;
789
- submitError?: Localizable<string>;
790
- removeFile?: Localizable<string>;
791
- };
792
- }
793
- interface KanbanRendererRowAction<TParams extends Struct = Struct> {
794
- id: string;
795
- label: Localizable<string>;
796
- icon?: string;
797
- command: CommandRef<TParams, unknown>;
798
- destructive?: boolean;
799
- }
800
- type KanbanRendererRowActivationHandler = RendererCallback<{
801
- row: KanbanRendererRow;
802
- }, void>;
803
- interface KanbanRendererContribution extends RendererContributionBase {
804
- attributes?: KanbanRendererAttributeDescriptor[];
805
- query: RendererCallback<KanbanRendererQueryParams, KanbanRendererQueryResult>;
806
- onAttributeChange?: RendererCallback<{
807
- rowId: string;
808
- attributeId: string;
809
- value: unknown;
810
- }, unknown>;
811
- onReorder?: RendererCallback<{
812
- rowId: string;
813
- beforeRowId?: string;
814
- }, unknown>;
815
- onColumnAction?: RendererCallback<{
816
- columnId: string;
817
- actionId: string;
818
- }, unknown>;
819
- createRow?: KanbanRendererCreateRowContribution;
820
- rowActions?: KanbanRendererRowAction[];
821
- onRowActivate?: KanbanRendererRowActivationHandler;
822
- defaultSettings?: Partial<KanbanRendererSettings>;
823
- defaultFilters?: KanbanRendererFilterState;
824
- defaultViews?: KanbanRendererSavedView[];
825
- defaultActiveViewId?: string;
826
- hideToolbar?: boolean;
827
- }
828
- //#endregion
829
- //#region ../pstdio-api-contracts/src/extension-kernel/types/contributions.d.ts
830
- interface CliContribution {
831
- path?: string[];
832
- globalAliases?: string[][];
833
- description?: Localizable<string>;
834
- examples?: string[];
835
- hidden?: boolean;
836
- }
837
- interface WhenExpression {
838
- mode?: ModeRef | readonly ModeRef[];
839
- source?: CommandSource[];
840
- view?: ViewRef | readonly ViewRef[];
841
- resourceType?: readonly ResourceKindRef[];
842
- metadata?: JsonObject;
843
- }
844
- interface MenuContribution<TSlotContext extends Struct = Struct, TParams extends Struct = Struct> {
845
- slot: SlotRef<TSlotContext, "menu">;
846
- label?: Localizable<string>;
847
- group?: string;
848
- placement?: "first" | "default" | "last";
849
- icon?: string;
850
- when?: WhenExpression;
851
- params?: Partial<TParams>;
852
- presentation?: "menu-item" | "button" | "icon-button";
853
- }
854
- interface CommandPaletteContribution<TParams extends Struct = Struct> {
855
- label?: Localizable<string>;
856
- group?: string;
857
- placement?: "first" | "default" | "last";
858
- icon?: string;
859
- when?: WhenExpression;
860
- params?: Partial<TParams>;
861
- }
862
- interface ActivityItemContribution<TParams extends Struct = Struct> extends ContributionDefinition<"activity-item"> {
863
- title: Localizable<string>;
864
- icon: string;
865
- /** Mode ids whose activity rail shows this item. */
866
- modes: readonly ModeRef[];
867
- placement?: "first" | "default" | "last";
868
- command: CommandRef<TParams, unknown>;
869
- params?: Partial<TParams>;
870
- }
871
- interface ModeRegionSettings {
872
- /** Hide the panel header when the mode supplies its own controls. */
873
- readonly showHeader?: boolean;
874
- readonly size?: RegionSize;
875
- /** Allow dragging this region closed. Explicit hide/show is always available. */
876
- readonly collapsible?: boolean;
877
- /** Keep a tab visible when this region has only one visible item. */
878
- readonly alwaysShowTabs?: boolean;
879
- }
880
- interface ModeContribution extends ContributionDefinition<"mode"> {
881
- label: Localizable<string>;
882
- icon?: string;
883
- regions: readonly ExtensionPanelRegion[];
884
- /** Default theme for this mode. An explicit user choice for the mode takes precedence. */
885
- defaultTheme?: ThemeRef;
886
- /** Whether side panels may float while this mode is active. Defaults to visible. */
887
- floatingPanels?: "visible" | "hidden";
888
- /** Replace host chrome with a view, or hide it with false, while the mode is active. */
889
- chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", ViewRef | false>>;
890
- /** Region-level layout policy. The mode owns it; placements cannot set it. */
891
- regionSettings?: Readonly<Partial<Record<DockedWorkbenchRegion, ModeRegionSettings>>>;
892
- }
893
- interface WebviewContribution {
894
- entry: PackageAssetDescriptor;
895
- title?: Localizable<string>;
896
- capabilities?: WebviewCapabilityDeclaration[];
897
- }
898
- interface SettingsPanelContribution extends ContributionDefinition<"settings-panel"> {
899
- view: ViewRef;
900
- slot: SettingsSlotRef;
901
- section?: SettingsSectionRef;
902
- }
903
- /** A named group in the settings navigation that an extension's panels can sit under. */
904
- interface SettingsSectionContribution extends ContributionDefinition<"settings-section"> {
905
- title: Localizable<string>;
906
- /** Lower sorts first among sibling sections. */
907
- order?: number;
908
- }
909
- /**
910
- * Command palette resource providers contribute dynamic, searchable palette results
911
- * (e.g. slides in a presentation) backed by a private query callback. The host queries
912
- * matching providers as the user types and refreshes results when a declared event fires.
913
- */
914
- interface CommandPaletteResourceQueryParams {
915
- projectId?: string;
916
- modeId?: string;
917
- activeResource?: ResourceRef;
918
- providerId: string;
919
- query: string;
920
- limit: number;
921
- }
922
- type CommandPaletteResourceTarget = NavigationTarget;
923
- interface CommandPaletteResourceItem {
924
- id: string;
925
- label: string;
926
- description?: string;
927
- icon?: string;
928
- keywords?: string[];
929
- target: CommandPaletteResourceTarget;
930
- }
931
- interface CommandPaletteResourceQueryResult {
932
- items: CommandPaletteResourceItem[];
933
- }
934
- interface CommandPaletteResourceContribution extends ContributionDefinition<"command-palette-resource"> {
935
- title: Localizable<string>;
936
- resourceKind?: ResourceKindRef;
937
- query: RendererCallback<CommandPaletteResourceQueryParams, CommandPaletteResourceQueryResult>;
938
- refreshEvents?: readonly RendererEventReference[];
939
- }
940
- type ExtensionSettingScope = "global" | "project";
941
- type ExtensionSettingValueType = "boolean" | "number" | "string" | "array" | "object";
942
- type ExtensionSettingValueForType<TType extends ExtensionSettingValueType> = TType extends "boolean" ? boolean : TType extends "number" ? number : TType extends "string" ? string : TType extends "array" ? JsonValue[] : JsonObject;
943
- type ExtensionSettingProperty<TType extends ExtensionSettingValueType = ExtensionSettingValueType> = { [TSettingType in TType]: {
944
- type: TSettingType;
945
- scope: ExtensionSettingScope;
946
- default?: ExtensionSettingValueForType<TSettingType>;
947
- enum?: ExtensionSettingValueForType<TSettingType>[];
948
- title?: Localizable<string>;
949
- description?: Localizable<string>;
950
- }; }[TType];
951
- interface ExtensionSettingsContribution<TProperties extends Record<string, ExtensionSettingProperty> = Record<string, ExtensionSettingProperty>> {
952
- properties: TProperties;
953
- }
954
- interface ArtifactMountContribution extends ContributionDefinition<"artifact-mount"> {
955
- /** Relative path under .pstdio/<extension.name>/. */
956
- path: string;
957
- label: Localizable<string>;
958
- }
959
- interface TemplateTypeContribution extends ContributionDefinition<"template-type"> {
960
- label: Localizable<string>;
961
- description?: Localizable<string>;
962
- order?: number;
963
- commands?: {
964
- list: CommandRef;
965
- read: CommandRef;
966
- save: CommandRef;
967
- delete: CommandRef;
968
- };
969
- }
970
- interface TemplateContribution extends ContributionDefinition<"template"> {
971
- title: Localizable<string>;
972
- type: string;
973
- source: PackageAssetDescriptor;
974
- description?: Localizable<string>;
975
- }
976
- interface SkillContribution extends ContributionDefinition<"skill"> {
977
- title: Localizable<string>;
978
- source: PackageAssetDescriptor;
979
- description?: Localizable<string>;
980
- }
981
- type ThemeMode = "light" | "dark";
982
- interface ThemeContribution extends ContributionDefinition<"theme"> {
983
- title: Localizable<string>;
984
- source: PackageAssetDescriptor;
985
- format: "vscode-color-theme";
986
- mode?: ThemeMode;
987
- description?: Localizable<string>;
988
- }
989
- interface FileIconThemeContribution extends ContributionDefinition<"file-icon-theme"> {
990
- title: Localizable<string>;
991
- source: PackageAssetDescriptor;
992
- format: "vscode-file-icon-theme";
993
- description?: Localizable<string>;
994
- }
995
- /**
996
- * Chord string in TanStack Hotkeys syntax (e.g. "mod+shift+p"). `mod` is
997
- * Cmd on macOS and Ctrl elsewhere. Parsing, validation, canonicalization,
998
- * and display labels are all delegated to `@tanstack/hotkeys`.
999
- */
1000
- type KeybindingChord = string;
1001
- interface KeybindingContribution extends ContributionDefinition<"keybinding"> {
1002
- /** Default chord. Used on every platform unless an override is provided. */
1003
- key: KeybindingChord;
1004
- /** macOS override. */
1005
- mac?: KeybindingChord;
1006
- /** Linux override. */
1007
- linux?: KeybindingChord;
1008
- /** Windows override. */
1009
- win?: KeybindingChord;
1010
- /** Action this chord executes through the shared navigation executor. */
1011
- action: NavigationTarget;
1012
- /** Optional gating predicate. The host evaluates it at dispatch time. */
1013
- when?: WhenExpression;
1014
- }
1015
- //#endregion
1016
- //#region ../pstdio-api-contracts/src/extension-kernel/types/control-declarations.d.ts
1017
- interface BaseControl {
1018
- id: string;
1019
- name: string;
1020
- description?: string;
1021
- /** Locks this one param while the rest of the editor stays editable. */
1022
- readOnly?: boolean;
1023
- }
1024
- interface NumberControl extends BaseControl {
1025
- type: "number";
1026
- defaultValue: number;
1027
- min?: number;
1028
- max?: number;
1029
- step?: number;
1030
- }
1031
- interface BooleanControl extends BaseControl {
1032
- type: "boolean";
1033
- defaultValue: boolean;
1034
- }
1035
- interface TextControl extends BaseControl {
1036
- type: "text";
1037
- defaultValue: string;
1038
- singleLine?: boolean;
1039
- }
1040
- interface MarkdownControl extends BaseControl {
1041
- type: "markdown";
1042
- defaultValue: string;
1043
- placeholder?: string;
1044
- }
1045
- interface SelectionOption {
1046
- id: string;
1047
- name: string;
1048
- icon?: string;
1049
- /** Palette key (e.g. "blue") applied to the option's icon. */
1050
- color?: string;
1051
- description?: string;
1052
- disabled?: boolean;
1053
- }
1054
- /** Parent selector used to swap the option set of a grouped selection. */
1055
- interface SelectionGroup {
1056
- id: string;
1057
- name: string;
1058
- defaultValue: string;
1059
- options: SelectionOption[];
1060
- placeholder?: string;
1061
- searchable?: boolean;
1062
- searchPlaceholder?: string;
1063
- emptyText?: string;
1064
- disabled?: boolean;
1065
- }
1066
- interface SelectionControl extends BaseControl {
1067
- type: "selection";
1068
- defaultValue: string | string[];
1069
- options: SelectionOption[];
1070
- multiSelect?: boolean;
1071
- placeholder?: string;
1072
- searchable?: boolean;
1073
- searchPlaceholder?: string;
1074
- emptyText?: string;
1075
- group?: SelectionGroup;
1076
- /** Adds a "clear" row so a single-select can be returned to unset. */
1077
- clearable?: boolean;
1078
- /**
1079
- * Renders the control inert but still as a control — unlike `readOnly`, which
1080
- * collapses it to plain text and drops the option's icon.
1081
- */
1082
- disabled?: boolean;
1083
- }
1084
- interface DateControl extends BaseControl {
1085
- type: "date";
1086
- defaultValue: string;
1087
- min?: string;
1088
- max?: string;
1089
- }
1090
- interface ColorControl extends BaseControl {
1091
- type: "color";
1092
- defaultValue: string;
1093
- }
1094
- interface ParamEditorReadOnlyImage {
1095
- src: string;
1096
- alt: string;
1097
- }
1098
- type ParamEditorReadOnlyContent = string | number | boolean | null | Array<string | number | boolean | null> | {
1099
- type: "image";
1100
- src: string;
1101
- alt: string;
1102
- } | {
1103
- type: "image-gallery";
1104
- images: ParamEditorReadOnlyImage[];
1105
- };
1106
- /** Serializable display-only value rendered by the read-only Param Editor. */
1107
- interface ReadOnlyControl extends BaseControl {
1108
- type: "readOnly";
1109
- value: ParamEditorReadOnlyContent;
1110
- }
1111
- /** A reference the host can open (e.g. another resource tab). */
1112
- type ResourceRefValue = ResourceRef;
1113
- /**
1114
- * Serializable resource chip. Clicking it opens `href` externally, opens `ref` via
1115
- * `onOpenResource`, or copies `copyText` to the clipboard — whichever is set.
1116
- */
1117
- interface ResourceOption {
1118
- id: string;
1119
- name: string;
1120
- icon?: string;
1121
- color?: string;
1122
- description?: string;
1123
- href?: string;
1124
- ref?: ResourceRefValue;
1125
- copyText?: string;
1126
- }
1127
- /**
1128
- * Resource references rendered as tags/chips. View-only by default; set `editable`
1129
- * to pick from `options` via a dropdown. Value is the selected option id(s), mirroring
1130
- * {@link SelectionControl}, so it stays JSON-safe across the controls-command boundary.
1131
- */
1132
- interface ResourceControl extends BaseControl {
1133
- type: "resource";
1134
- defaultValue: string | string[];
1135
- options: ResourceOption[];
1136
- multiSelect?: boolean;
1137
- editable?: boolean;
1138
- placeholder?: string;
1139
- emptyText?: string;
1140
- }
1141
- type RangeValue = [number, number];
1142
- /** Two-handle numeric range control. Values normalize to ordered `[start, end]`. */
1143
- interface RangeControl extends BaseControl {
1144
- type: "range";
1145
- defaultValue: RangeValue;
1146
- min: number;
1147
- max: number;
1148
- step?: number;
1149
- unit?: string;
1150
- markerCount?: number;
1151
- }
1152
- interface SegmentedOption {
1153
- id: string;
1154
- name: string;
1155
- icon?: string;
1156
- indicatorColor?: string;
1157
- }
1158
- /** Mutually-exclusive mode control rendered as a segmented button group. */
1159
- interface SegmentedControl extends BaseControl {
1160
- type: "segmented";
1161
- defaultValue: string;
1162
- options: SegmentedOption[];
1163
- variant?: "default" | "dots";
1164
- }
1165
- interface ActionOption {
1166
- id: string;
1167
- name: string;
1168
- icon?: string;
1169
- disabled?: boolean;
1170
- }
1171
- /** Compact command set rendered as an action button row. */
1172
- interface ActionsControl extends BaseControl {
1173
- type: "actions";
1174
- defaultValue?: string;
1175
- options: ActionOption[];
1176
- }
1177
- type AnchorGridValue = "top-left" | "top" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom" | "bottom-right";
1178
- /** Nine-point alignment picker. */
1179
- interface AnchorGridControl extends BaseControl {
1180
- type: "anchorGrid";
1181
- defaultValue: AnchorGridValue;
1182
- }
1183
- type VectorValue = {
1184
- x: number;
1185
- y: number;
1186
- };
1187
- /** Paired x/y numeric control. */
1188
- interface VectorControl extends BaseControl {
1189
- type: "vector";
1190
- defaultValue: VectorValue;
1191
- coordinateMode?: "cartesian" | "screen";
1192
- xLabel?: string;
1193
- yLabel?: string;
1194
- min?: number;
1195
- max?: number;
1196
- step?: number;
1197
- }
1198
- type ControlParam = NumberControl | BooleanControl | TextControl | MarkdownControl | SelectionControl | DateControl | ColorControl | ReadOnlyControl | ResourceControl | RangeControl | SegmentedControl | ActionsControl | AnchorGridControl | VectorControl;
1199
- interface ControlGroup {
1200
- id: string;
1201
- title: string;
1202
- description?: string;
1203
- params: ControlParam[];
1204
- collapsible?: boolean;
1205
- defaultCollapsed?: boolean;
1206
- }
1207
- type ControlValue = number | string | boolean | null | string[] | RangeValue | VectorValue;
1208
- type ControlValueMap = Record<string, ControlValue>;
1209
- //#endregion
1210
- //#region ../pstdio-api-contracts/src/extension-kernel/types/controls.d.ts
1211
- type ControlsResourceRef = ResourceRef;
1212
- interface ControlsQueryParams {
1213
- renderer: RendererContext;
1214
- }
1215
- interface ControlsQueryResult {
1216
- params?: ControlParam[];
1217
- groups?: ControlGroup[];
1218
- values?: ControlValueMap;
1219
- readOnly?: boolean;
1220
- }
1221
- interface ControlsUpdateValueInput {
1222
- renderer: RendererContext;
1223
- controlId: string;
1224
- value: ControlValue;
1225
- values: ControlValueMap;
1226
- }
1227
- interface ControlsApplyInput {
1228
- renderer: RendererContext;
1229
- values: ControlValueMap;
1230
- }
1231
- interface ControlsResetInput {
1232
- renderer: RendererContext;
1233
- controlIds?: string[];
1234
- }
1235
- /** A native controls view. Its query supplies serializable fields and their current values. */
1236
- interface ControlsRendererContribution extends RendererContributionBase {
1237
- query: RendererCallback<ControlsQueryParams, ControlsQueryResult>;
1238
- onValueChange?: RendererCallback<ControlsUpdateValueInput, unknown>;
1239
- onApply?: RendererCallback<ControlsApplyInput, unknown>;
1240
- onReset?: RendererCallback<ControlsResetInput, unknown>;
1241
- defaultValues?: ControlValueMap;
1242
- }
1243
- //#endregion
1244
- //#region ../pstdio-api-contracts/src/extension-kernel/types/data-table-renderer.d.ts
1245
- type DataTableRendererResourceRef = ResourceRef;
1246
- interface DataTableRendererQueryParams {
1247
- renderer: RendererContext;
1248
- }
1249
- interface DataTableRendererThemeColor {
1250
- light: string;
1251
- dark: string;
1252
- foreground?: {
1253
- light: string;
1254
- dark: string;
1255
- };
1256
- }
1257
- type DataTableRendererColumnStat = {
1258
- type: "unique";
1259
- } | {
1260
- type: "histogram";
1261
- bins?: number;
1262
- } | {
1263
- type: "top-values";
1264
- limit?: number;
1265
- };
1266
- type DataTableRendererColumnRenderer = {
1267
- type: "json";
1268
- } | {
1269
- type: "color-scale";
1270
- stops: Array<{
1271
- value: number;
1272
- color: DataTableRendererThemeColor;
1273
- }>;
1274
- } | {
1275
- type: "categorical-color";
1276
- categories: Array<{
1277
- value: string | number | boolean | null;
1278
- color: DataTableRendererThemeColor;
1279
- }>;
1280
- };
1281
- interface DataTableRendererColumn {
1282
- id: string;
1283
- label?: Localizable<string>;
1284
- description?: Localizable<string>;
1285
- icon?: string;
1286
- hidden?: boolean;
1287
- stat?: DataTableRendererColumnStat;
1288
- renderer?: DataTableRendererColumnRenderer;
1289
- }
1290
- interface DataTableRendererRow {
1291
- id: string;
1292
- values: Record<string, JsonValue>;
1293
- resource?: DataTableRendererResourceRef;
1294
- }
1295
- interface DataTableRendererQueryResult {
1296
- rows: DataTableRendererRow[];
1297
- columns?: DataTableRendererColumn[];
1298
- }
1299
- interface DataTableRendererRowAction<TParams extends Struct = Struct> {
1300
- id: string;
1301
- label: Localizable<string>;
1302
- icon?: string;
1303
- destructive?: boolean;
1304
- command: CommandRef<TParams, unknown>;
1305
- }
1306
- interface DataTableRendererSelectionAction<TParams extends Struct = Struct> {
1307
- id: string;
1308
- label: Localizable<string>;
1309
- icon?: string;
1310
- destructive?: boolean;
1311
- command: CommandRef<TParams, unknown>;
1312
- }
1313
- type DataTableRendererRowActivationHandler = RendererCallback<{
1314
- row: DataTableRendererRow;
1315
- }, void>;
1316
- interface DataTableRendererContribution extends RendererContributionBase {
1317
- columns?: DataTableRendererColumn[];
1318
- query: RendererCallback<DataTableRendererQueryParams, DataTableRendererQueryResult>;
1319
- selectionMode?: "none" | "multiple";
1320
- selectionActions?: DataTableRendererSelectionAction[];
1321
- rowActions?: DataTableRendererRowAction[];
1322
- onRowActivate?: DataTableRendererRowActivationHandler;
1323
- initialPageSize?: number;
1324
- pageSizeOptions?: number[];
1325
- }
1326
- //#endregion
1327
- //#region ../pstdio-api-contracts/src/extension-kernel/types/tree-renderer.d.ts
1328
- type TreeRendererResourceRef = ResourceRef;
1329
- interface TreeRendererState {
1330
- expandedNodeIds: string[];
1331
- expandedSectionIds: string[];
1332
- selectedNodeId?: string;
1333
- }
1334
- interface TreeRendererQueryParams {
1335
- renderer: RendererContext;
1336
- state?: TreeRendererState;
1337
- filter?: string;
1338
- }
1339
- interface TreeRendererChildrenParams extends TreeRendererQueryParams {
1340
- node: TreeNode;
1341
- }
1342
- interface TreeRendererActionParams extends TreeRendererQueryParams {
1343
- actionId: string;
1344
- node?: TreeNode;
1345
- }
1346
- type TreeNodeTarget = NavigationTarget;
1347
- interface TreeAction {
1348
- id: string;
1349
- label?: Localizable<string>;
1350
- icon?: string;
1351
- command?: CommandRef<Struct, unknown>;
1352
- params?: Struct;
1353
- input?: ParamObjectSchema;
1354
- submitLabel?: string;
1355
- when?: string;
1356
- disabled?: boolean;
1357
- }
1358
- interface TreeSectionEmptyState {
1359
- title: Localizable<string>;
1360
- description?: Localizable<string>;
1361
- icon?: string;
1362
- }
1363
- type TreeNodeRowVariant = "empty-state";
1364
- interface TreeNode {
1365
- id: string;
1366
- label: Localizable<string>;
1367
- icon?: string;
1368
- iconColor?: string;
1369
- iconTooltip?: string;
1370
- resource?: TreeRendererResourceRef;
1371
- target?: TreeNodeTarget;
1372
- /** Visual row variant for non-data rows such as placeholders. */
1373
- rowVariant?: TreeNodeRowVariant;
1374
- actions?: TreeAction[];
1375
- contextMenuActions?: TreeAction[];
1376
- collapsible?: boolean;
1377
- disabled?: boolean;
1378
- selected?: boolean;
1379
- children?: TreeNode[];
1380
- description?: string;
1381
- contextValue?: string;
1382
- hiddenByDefault?: boolean;
1383
- /** Opt in to the tree's hide/show customization menu (header/footer rows). Off by default. */
1384
- canHide?: boolean;
1385
- metadata?: JsonObject;
1386
- }
1387
- interface TreeViewSection {
1388
- id: string;
1389
- label?: Localizable<string>;
1390
- actions?: TreeAction[];
1391
- collapsible?: boolean;
1392
- emptyState?: TreeSectionEmptyState;
1393
- nodes: TreeNode[];
1394
- hiddenByDefault?: boolean;
1395
- /** Opt in to the tree's hide/show customization menu (a category). Off by default. */
1396
- canHide?: boolean;
1397
- }
1398
- interface TreeRendererContribution extends RendererContributionBase {
1399
- searchable?: boolean;
1400
- searchPlaceholder?: Localizable<string>;
1401
- header?: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
1402
- body: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
1403
- children?: RendererCallback<TreeRendererChildrenParams, TreeNode[]>;
1404
- footer?: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
1405
- defaultExpandedSectionIds?: string[];
1406
- defaultExpandedNodeIds?: string[];
1407
- }
1408
- type TreeRendererCommandResult = TreeViewSection[] | TreeNode[] | JsonValue;
1409
- //#endregion
1410
- //#region ../pstdio-api-contracts/src/extension-kernel/types/views.d.ts
1411
- type NativeViewBody<Kind extends string, Definition> = {
1412
- readonly kind: Kind;
1413
- } & Omit<Definition, "title" | "icon" | "resourceKind">;
1414
- type WebviewViewBody = {
1415
- readonly kind: "webview";
1416
- } & WebviewContribution;
1417
- type TreeViewBody = NativeViewBody<"tree", TreeRendererContribution>;
1418
- type FileViewBody = NativeViewBody<"file", FileRendererContribution>;
1419
- type ControlsViewBody = NativeViewBody<"controls", ControlsRendererContribution>;
1420
- type KanbanViewBody = NativeViewBody<"kanban", KanbanRendererContribution>;
1421
- type DataTableViewBody = NativeViewBody<"dataTable", DataTableRendererContribution>;
1422
- type ViewBody = WebviewViewBody | TreeViewBody | FileViewBody | ControlsViewBody | KanbanViewBody | DataTableViewBody;
1423
- interface ViewContribution extends ContributionDefinition<"view"> {
1424
- readonly title: Localizable<string>;
1425
- readonly icon?: string;
1426
- readonly body: ViewBody;
1427
- }
1428
- type NavigationOwnerRef = ModeRef | PageRef;
1429
- type NavigationTreeSlot = "header" | "content" | "footer";
1430
- interface NavigationItemContribution extends ContributionDefinition<"navigation-item"> {
1431
- readonly owner: NavigationOwnerRef;
1432
- readonly slot?: NavigationTreeSlot;
1433
- readonly label: Localizable<string>;
1434
- readonly icon?: string;
1435
- readonly group?: string;
1436
- readonly when?: WhenExpression;
1437
- readonly action: NavigationTarget;
1438
- }
1439
- interface NavigationTreeContribution extends ContributionDefinition<"navigation-tree"> {
1440
- readonly owner: NavigationOwnerRef;
1441
- readonly slot?: NavigationTreeSlot;
1442
- readonly view: ViewRef;
1443
- /** Project-scoped trees read without a selected resource. Defaults to selection. */
1444
- readonly resourceScope?: "project" | "selection";
1445
- }
1446
- /**
1447
- * Initial presence of a static placement inside its owner scope.
1448
- * - "fixed": always open while the owner is active; the user cannot close it.
1449
- * - "open": open when the owner has no saved state; the user may close it.
1450
- * - "closed": closed until the user opens it (for example through the Add panel).
1451
- * A saved user choice wins over "open" and "closed" on the next visit.
1452
- */
1453
- type PlacementPresence = "fixed" | "open" | "closed";
1454
- type PlacementItem = {
1455
- readonly kind: "view";
1456
- readonly view: ViewRef;
1457
- readonly presence: PlacementPresence;
1458
- } | {
1459
- readonly kind: "binding";
1460
- readonly binding: ResourceBinding;
1461
- };
1462
- type PlacementMountStrategy = "active" | "keep-mounted";
1463
- interface PlacementTabMenuRow {
1464
- readonly id: string;
1465
- readonly label: Localizable<string>;
1466
- readonly icon?: string;
1467
- readonly iconColor?: string;
1468
- readonly selected?: boolean;
1469
- readonly disabled?: boolean;
1470
- readonly action?: NavigationTarget;
1471
- }
1472
- interface PlacementTabMenuGroup {
1473
- readonly id: string;
1474
- readonly rows: readonly PlacementTabMenuRow[];
1475
- }
1476
- interface PlacementTabSnapshot extends Struct {
1477
- readonly label?: Localizable<string>;
1478
- readonly icon?: string;
1479
- readonly indicator?: {
1480
- readonly icon: string;
1481
- readonly color?: string;
1482
- readonly label?: Localizable<string>;
1483
- };
1484
- readonly menu?: readonly PlacementTabMenuGroup[];
1485
- }
1486
- interface PlacementTabPresentation {
1487
- readonly query: RendererCallback<JsonObject, PlacementTabSnapshot>;
1488
- readonly refreshEvents?: readonly RendererEventReference[];
1489
- }
1490
- interface PlacementPresentation {
1491
- readonly mountStrategy?: PlacementMountStrategy;
1492
- readonly hiddenByDefault?: boolean;
1493
- readonly headerBorderBottom?: boolean;
1494
- readonly tab?: PlacementTabPresentation;
1495
- }
1496
- interface PlacementContribution extends ContributionDefinition<"placement">, PlacementPresentation {
1497
- readonly mode: ModeRef;
1498
- readonly item: PlacementItem;
1499
- readonly region: ExtensionPanelRegion;
1500
- readonly order?: number;
1501
- readonly movableTo?: readonly ExtensionPanelRegion[];
1502
- }
1503
- interface ViewMenuContribution extends ContributionDefinition<"view-menu"> {
1504
- readonly owner: ViewRef;
1505
- readonly view: ViewRef;
1506
- readonly side: "left" | "right";
1507
- readonly group?: string;
1508
- readonly placement?: "first" | "default" | "last";
1509
- readonly hostTreeHeader?: "default" | "none";
1510
- readonly hostTreeFooter?: "default" | "none";
1511
- }
1512
- //#endregion
1513
- //#region ../pstdio-api-contracts/src/extension-kernel/types/pages.d.ts
1514
- type PageSlotRole = "primary" | "auxiliary";
1515
- type PageSlotCardinality = "one" | "many";
1516
- type PageOpenIntent = "preview" | "pin";
1517
- type PageSlotRegion = ExtensionPanelRegion;
1518
- interface PageMainView extends PlacementPresentation {
1519
- readonly kind: "view";
1520
- readonly view: ViewRef;
1521
- readonly cardinality: PageSlotCardinality;
1522
- }
1523
- interface PageMainPanels {
1524
- readonly kind: "panels";
1525
- readonly empty: ViewRef;
1526
- }
1527
- type PageMain = PageMainView | PageMainPanels;
1528
- /** A page-owned panel. Main presentation and routed context belong to the page. */
1529
- interface PageSlot extends PlacementPresentation {
1530
- readonly id: string;
1531
- readonly region: PageSlotRegion;
1532
- readonly order?: number;
1533
- readonly item: PlacementItem;
1534
- readonly openOn?: "page-resource";
1535
- }
1536
- interface PageSlotRef {
1537
- readonly kind: "page-slot";
1538
- readonly page: PageRef;
1539
- readonly id: string;
1540
- }
1541
- type PanelRef = PlacementRef | PageSlotRef;
1542
- interface PageContribution extends ContributionDefinition<"page"> {
1543
- readonly title: Localizable<string>;
1544
- readonly icon?: string;
1545
- readonly path: string;
1546
- readonly mode: ModeRef;
1547
- readonly parent?: PageRef;
1548
- readonly resource?: ResourceConstraint;
1549
- readonly main: PageMain;
1550
- readonly slots: readonly PageSlot[];
1551
- readonly panels: Readonly<Record<string, PageSlotRef>>;
1552
- }
1553
- type PlacementOwner = {
1554
- readonly kind: "shell";
1555
- readonly placementId: string;
1556
- } | {
1557
- readonly kind: "mode";
1558
- readonly modeId: string;
1559
- readonly placementId: string;
1560
- } | {
1561
- readonly kind: "page";
1562
- readonly pageId: string;
1563
- readonly slotId: string;
1564
- };
1565
- type PlacementIdentity = PlacementOwner & {
1566
- readonly instanceKey: string;
1567
- };
1568
- interface PageLocation {
1569
- readonly page: PageRef;
1570
- readonly resource?: ResourceRef;
1571
- readonly section?: FileRendererSectionTarget;
1572
- readonly parent?: PageLocation;
1573
- }
1574
- //#endregion
1575
- //#region ../pstdio-api-contracts/src/extension-kernel/types/navigation-target.d.ts
1576
- interface NavigationTargetPage {
1577
- kind: "page";
1578
- page: PageRef;
1579
- resource?: ResourceRef;
1580
- section?: FileRendererSectionTarget;
1581
- open?: PageOpenIntent;
1582
- parent?: NavigationTargetPage;
1583
- }
1584
- interface NavigationTargetPanel {
1585
- kind: "panel";
1586
- panel: PanelRef;
1587
- resource?: ResourceRef;
1588
- open?: PageOpenIntent;
1589
- }
1590
- interface NavigationTargetCommand {
1591
- kind: "command";
1592
- target: CommandTarget<JsonObject>;
1593
- }
1594
- interface NavigationTargetHref {
1595
- kind: "href";
1596
- href: string;
1597
- }
1598
- type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
1599
- interface NavigationTargetCompound {
1600
- kind: "compound";
1601
- targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
1602
- }
1603
- type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
1604
- //#endregion
1605
- //#region ../pstdio-api-contracts/src/extension-kernel/types/commands.d.ts
1606
- type CommandSource = "cli" | "dashboard" | "api" | "schedule" | "event" | "automation" | "command-panel";
1607
- interface CommandRef<TParams extends Struct = Struct, TResult = unknown> extends ContributionRef<"command"> {
1608
- params?: TParams;
1609
- result?: TResult;
1610
- }
1611
- interface CommandTarget<TParams extends Struct = Struct> {
1612
- command: CommandRef<TParams, unknown>;
1613
- params?: TParams;
1614
- }
1615
- interface SerializedError {
1616
- name?: string;
1617
- message: string;
1618
- stack?: string;
1619
- cause?: JsonValue;
1620
- }
1621
- interface WorkbenchAttachmentInvocationContext {
1622
- target: WorkbenchAttachmentTarget;
1623
- mode?: string;
1624
- projectId?: string;
1625
- resource?: ResourceRef;
1626
- }
1627
- interface CommandInvocation<TParams extends Struct = Struct> {
1628
- params: TParams;
1629
- resource?: ResourceRef;
1630
- attachment?: WorkbenchAttachmentInvocationContext;
1631
- slot?: SlotInvocationContext;
1632
- metadata?: JsonObject;
1633
- }
1634
- interface CommandContinue {
1635
- type: "continue";
1636
- }
1637
- interface CommandPatchParams<TParams extends Struct = Struct> {
1638
- type: "patchParams";
1639
- params: Partial<TParams>;
1640
- }
1641
- interface CommandReplaceParams<TParams extends Struct = Struct> {
1642
- type: "replaceParams";
1643
- params: TParams;
1644
- }
1645
- interface CommandReplaceInvocation<TParams extends Struct = Struct> {
1646
- type: "replaceInvocation";
1647
- invocation: CommandInvocation<TParams>;
1648
- }
1649
- interface CommandReject {
1650
- type: "reject";
1651
- code?: string;
1652
- reason: string;
1653
- data?: JsonObject;
1654
- }
1655
- type CommandMiddlewareResult<TParams extends Struct = Struct> = void | CommandContinue | CommandPatchParams<TParams> | CommandReplaceParams<TParams> | CommandReplaceInvocation<TParams> | CommandReject;
1656
- interface CommandNotice {
1657
- type: "info" | "success" | "warning" | "error";
1658
- title?: string;
1659
- message: string;
1660
- metadata?: JsonObject;
1661
- }
1662
- interface CommandDiagnostic {
1663
- code: string;
1664
- message: string;
1665
- severity: "info" | "warning" | "error";
1666
- extensionId?: string;
1667
- commandId?: string;
1668
- metadata?: JsonObject;
1669
- }
1670
- type CommandOutcome<TResult = unknown> = {
1671
- ok: true;
1672
- status: "success";
1673
- value: TResult;
1674
- navigationRequests?: NavigationTarget[];
1675
- notices?: CommandNotice[];
1676
- diagnostics?: CommandDiagnostic[];
1677
- } | {
1678
- ok: false;
1679
- status: "rejected";
1680
- code?: string;
1681
- reason: string;
1682
- data?: JsonObject;
1683
- notices?: CommandNotice[];
1684
- diagnostics?: CommandDiagnostic[];
1685
- } | {
1686
- ok: false;
1687
- status: "error";
1688
- code?: string;
1689
- reason: string;
1690
- error?: SerializedError;
1691
- notices?: CommandNotice[];
1692
- diagnostics?: CommandDiagnostic[];
1693
- };
1694
- interface CommandHelpersApi {
1695
- execute<TParams extends Struct = Struct, TResult = unknown>(command: CommandRef<TParams, TResult>, invocation: CommandInvocation<TParams>): Promise<CommandOutcome<TResult>>;
1696
- continue(): CommandContinue;
1697
- patchParams<TParams extends Struct = Struct>(params: Partial<TParams>): CommandPatchParams<TParams>;
1698
- replaceParams<TParams extends Struct = Struct>(params: TParams): CommandReplaceParams<TParams>;
1699
- replaceInvocation<TParams extends Struct = Struct>(invocation: CommandInvocation<TParams>): CommandReplaceInvocation<TParams>;
1700
- reject(input: Omit<CommandReject, "type">): CommandReject;
1701
- }
1702
- interface CommandRequestedEvent<TParams extends Struct = Struct> {
1703
- commandId: string;
1704
- invocationId: string;
1705
- source?: CommandSource;
1706
- params: TParams;
1707
- resource?: ResourceRef;
1708
- }
1709
- interface CommandStartedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {}
1710
- interface CommandCompletedEvent<TParams extends Struct = Struct, TResult = unknown> extends CommandStartedEvent<TParams> {
1711
- result: TResult;
1712
- elapsedMs: number;
1713
- }
1714
- interface CommandRejectedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {
1715
- code?: string;
1716
- reason: string;
1717
- data?: JsonObject;
1718
- }
1719
- interface CommandFailedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {
1720
- code?: string;
1721
- reason: string;
1722
- error?: SerializedError;
1723
- elapsedMs: number;
1724
- }
1725
- type CommandLifecyclePhase = "requested" | "started" | "completed" | "rejected" | "failed";
1726
- type CommandLifecycleEventPayload<TPhase extends CommandLifecyclePhase, TParams extends Struct = Struct, TResult = unknown> = TPhase extends "requested" ? CommandRequestedEvent<TParams> : TPhase extends "started" ? CommandStartedEvent<TParams> : TPhase extends "completed" ? CommandCompletedEvent<TParams, TResult> : TPhase extends "rejected" ? CommandRejectedEvent<TParams> : CommandFailedEvent<TParams>;
1727
- //#endregion
1728
- //#region ../pstdio-api-contracts/src/notifications/types.d.ts
1729
- type NotificationKind = "needs_review" | "ready_to_merge" | "blocked" | "approval_required" | "failed" | "info";
1730
- type NotificationStatus = "open" | "read" | "snoozed" | "done" | "dismissed" | "expired";
1731
- type NotificationPriority = "low" | "normal" | "high" | "urgent";
1732
- type NotificationActorType = "user" | "agent" | "system";
1733
- type NotificationOrigin = "core" | "extension" | "agent";
1734
- type NotificationAction = {
1735
- id: string;
1736
- label: string;
1737
- kind: "navigate";
1738
- target: NavigationTarget;
1739
- primary?: boolean;
1740
- } | {
1741
- id: string;
1742
- label: string;
1743
- kind: "command";
1744
- command: string;
1745
- params?: JsonObject;
1746
- primary?: boolean;
1747
- destructive?: boolean;
1748
- } | {
1749
- id: string;
1750
- label: string;
1751
- kind: "url";
1752
- href: string;
1753
- primary?: boolean;
1754
- };
1755
- interface Notification {
1756
- id: string;
1757
- projectId: string;
1758
- title: string;
1759
- body?: string | null;
1760
- kind: NotificationKind;
1761
- status: NotificationStatus;
1762
- priority: NotificationPriority;
1763
- source: CommandSource;
1764
- origin: NotificationOrigin;
1765
- sourceExtensionId?: string | null;
1766
- actorType?: NotificationActorType | null;
1767
- actorId?: string | null;
1768
- target?: ResourceRef | null;
1769
- related: ResourceRef[];
1770
- actions: NotificationAction[];
1771
- dedupeKey?: string | null;
1772
- metadata?: JsonObject | null;
1773
- createdAt: string;
1774
- updatedAt: string;
1775
- readAt?: string | null;
1776
- resolvedAt?: string | null;
1777
- snoozedUntil?: string | null;
1778
- expiresAt?: string | null;
1779
- }
1780
- interface CreateNotificationInput {
1781
- projectId: string;
1782
- title: string;
1783
- body?: string;
1784
- kind: NotificationKind;
1785
- priority?: NotificationPriority;
1786
- target?: ResourceRef;
1787
- related?: ResourceRef[];
1788
- actions?: NotificationAction[];
1789
- dedupeKey?: string;
1790
- expiresAt?: string;
1791
- snoozedUntil?: string;
1792
- metadata?: JsonObject;
1793
- }
1794
- interface UpdateNotificationInput {
1795
- priority?: NotificationPriority;
1796
- snoozedUntil?: string | null;
1797
- metadata?: JsonObject;
1798
- }
1799
- interface ListNotificationsQuery {
1800
- status?: NotificationStatus | NotificationStatus[];
1801
- priority?: NotificationPriority | NotificationPriority[];
1802
- sourceExtensionId?: string;
1803
- resourceType?: string;
1804
- resourceId?: string;
1805
- cursor?: string;
1806
- limit?: number;
1807
- }
1808
- interface ListNotificationsResponse {
1809
- items: Notification[];
1810
- nextCursor?: string | null;
410
+ interface ListNotificationsResponse {
411
+ items: Notification[];
412
+ nextCursor?: string | null;
1811
413
  }
1812
414
  //#endregion
1813
415
  //#region ../pstdio-api-contracts/src/sessions.d.ts
@@ -1966,8 +568,8 @@ declare const sessionQueuedMessagesResponseSchema: z.ZodObject<{
1966
568
  messages: z.ZodArray<z.ZodObject<{
1967
569
  id: z.ZodString;
1968
570
  role: z.ZodEnum<{
1969
- assistant: "assistant";
1970
571
  user: "user";
572
+ assistant: "assistant";
1971
573
  tool: "tool";
1972
574
  system: "system";
1973
575
  developer: "developer";
@@ -2061,8 +663,8 @@ declare const sessionConversationSourcesSchema: z.ZodObject<{
2061
663
  checkpoint: z.ZodNullable<z.ZodArray<z.ZodObject<{
2062
664
  id: z.ZodString;
2063
665
  role: z.ZodEnum<{
2064
- assistant: "assistant";
2065
666
  user: "user";
667
+ assistant: "assistant";
2066
668
  tool: "tool";
2067
669
  system: "system";
2068
670
  developer: "developer";
@@ -2153,8 +755,8 @@ declare const sessionConversationSourcesSchema: z.ZodObject<{
2153
755
  native: z.ZodNullable<z.ZodArray<z.ZodObject<{
2154
756
  id: z.ZodString;
2155
757
  role: z.ZodEnum<{
2156
- assistant: "assistant";
2157
758
  user: "user";
759
+ assistant: "assistant";
2158
760
  tool: "tool";
2159
761
  system: "system";
2160
762
  developer: "developer";
@@ -2286,8 +888,8 @@ declare const sessionConversationResponseSchema: z.ZodObject<{
2286
888
  messages: z.ZodArray<z.ZodObject<{
2287
889
  id: z.ZodString;
2288
890
  role: z.ZodEnum<{
2289
- assistant: "assistant";
2290
891
  user: "user";
892
+ assistant: "assistant";
2291
893
  tool: "tool";
2292
894
  system: "system";
2293
895
  developer: "developer";
@@ -2400,8 +1002,8 @@ declare const listSessionActivityResponseSchema: z.ZodObject<{
2400
1002
  source_extension_id: z.ZodNullable<z.ZodString>;
2401
1003
  event_type: z.ZodString;
2402
1004
  actor_type: z.ZodEnum<{
2403
- agent: "agent";
2404
1005
  user: "user";
1006
+ agent: "agent";
2405
1007
  system: "system";
2406
1008
  }>;
2407
1009
  actor_id: z.ZodNullable<z.ZodString>;
@@ -2432,395 +1034,1634 @@ type ListSessionActivityInput = z.infer<typeof listSessionActivityInputSchema>;
2432
1034
  type ListSessionActivityResponse = z.infer<typeof listSessionActivityResponseSchema>;
2433
1035
  type FollowUpResponse = z.infer<typeof followUpResponseSchema>;
2434
1036
  //#endregion
2435
- //#region ../pstdio-api-contracts/src/skills.d.ts
2436
- declare const skillFileSchema: z.ZodObject<{
2437
- path: z.ZodString;
2438
- content: z.ZodString;
2439
- encoding: z.ZodLiteral<"utf8">;
2440
- }, z.core.$strip>;
2441
- declare const skillSchema: z.ZodObject<{
2442
- id: z.ZodString;
2443
- project_id: z.ZodString;
2444
- name: z.ZodString;
2445
- title: z.ZodString;
2446
- description: z.ZodString;
2447
- source_kind: z.ZodEnum<{
2448
- project: "project";
2449
- extension: "extension";
2450
- }>;
2451
- files: z.ZodArray<z.ZodObject<{
2452
- path: z.ZodString;
2453
- content: z.ZodString;
2454
- encoding: z.ZodLiteral<"utf8">;
2455
- }, z.core.$strip>>;
2456
- editable: z.ZodBoolean;
2457
- extension_instance_id: z.ZodOptional<z.ZodString>;
2458
- extension_id: z.ZodOptional<z.ZodString>;
2459
- installed_extension_id: z.ZodOptional<z.ZodString>;
2460
- install_name: z.ZodOptional<z.ZodString>;
2461
- key: z.ZodOptional<z.ZodString>;
2462
- source: z.ZodOptional<z.ZodObject<{
2463
- kind: z.ZodLiteral<"package-asset">;
2464
- path: z.ZodString;
2465
- baseUrl: z.ZodString;
2466
- }, z.core.$strip>>;
2467
- enabled: z.ZodOptional<z.ZodBoolean>;
2468
- created_at: z.ZodString;
2469
- updated_at: z.ZodString;
2470
- deleted_at: z.ZodNullable<z.ZodString>;
2471
- }, z.core.$strip>;
2472
- declare const skillWithContentSchema: z.ZodObject<{
2473
- id: z.ZodString;
2474
- project_id: z.ZodString;
2475
- name: z.ZodString;
2476
- title: z.ZodString;
2477
- description: z.ZodString;
2478
- source_kind: z.ZodEnum<{
2479
- project: "project";
2480
- extension: "extension";
2481
- }>;
2482
- files: z.ZodArray<z.ZodObject<{
2483
- path: z.ZodString;
2484
- content: z.ZodString;
2485
- encoding: z.ZodLiteral<"utf8">;
2486
- }, z.core.$strip>>;
2487
- editable: z.ZodBoolean;
2488
- extension_instance_id: z.ZodOptional<z.ZodString>;
2489
- extension_id: z.ZodOptional<z.ZodString>;
2490
- installed_extension_id: z.ZodOptional<z.ZodString>;
2491
- install_name: z.ZodOptional<z.ZodString>;
2492
- key: z.ZodOptional<z.ZodString>;
2493
- source: z.ZodOptional<z.ZodObject<{
2494
- kind: z.ZodLiteral<"package-asset">;
2495
- path: z.ZodString;
2496
- baseUrl: z.ZodString;
2497
- }, z.core.$strip>>;
2498
- enabled: z.ZodOptional<z.ZodBoolean>;
2499
- created_at: z.ZodString;
2500
- updated_at: z.ZodString;
2501
- deleted_at: z.ZodNullable<z.ZodString>;
2502
- installed_agents: z.ZodArray<z.ZodString>;
2503
- outdated_agents: z.ZodArray<z.ZodString>;
2504
- agent_installations: z.ZodArray<z.ZodObject<{
2505
- agent_id: z.ZodString;
2506
- agent_name: z.ZodString;
2507
- installed_version: z.ZodNullable<z.ZodString>;
2508
- outdated: z.ZodBoolean;
2509
- }, z.core.$strip>>;
2510
- }, z.core.$strip>;
2511
- declare const updateSkillInputSchema: z.ZodObject<{
2512
- enabled: z.ZodOptional<z.ZodBoolean>;
2513
- title: z.ZodOptional<z.ZodString>;
2514
- description: z.ZodOptional<z.ZodString>;
2515
- }, z.core.$strip>;
2516
- type Skill = z.infer<typeof skillSchema>;
2517
- type SkillWithContent = z.infer<typeof skillWithContentSchema>;
2518
- type SkillFile = z.infer<typeof skillFileSchema>;
2519
- type UpdateSkillInput = z.infer<typeof updateSkillInputSchema>;
1037
+ //#region ../pstdio-api-contracts/src/skills.d.ts
1038
+ declare const skillFileSchema: z.ZodObject<{
1039
+ path: z.ZodString;
1040
+ content: z.ZodString;
1041
+ encoding: z.ZodLiteral<"utf8">;
1042
+ }, z.core.$strip>;
1043
+ declare const skillSchema: z.ZodObject<{
1044
+ id: z.ZodString;
1045
+ project_id: z.ZodString;
1046
+ name: z.ZodString;
1047
+ title: z.ZodString;
1048
+ description: z.ZodString;
1049
+ source_kind: z.ZodEnum<{
1050
+ project: "project";
1051
+ extension: "extension";
1052
+ }>;
1053
+ files: z.ZodArray<z.ZodObject<{
1054
+ path: z.ZodString;
1055
+ content: z.ZodString;
1056
+ encoding: z.ZodLiteral<"utf8">;
1057
+ }, z.core.$strip>>;
1058
+ editable: z.ZodBoolean;
1059
+ extension_instance_id: z.ZodOptional<z.ZodString>;
1060
+ extension_id: z.ZodOptional<z.ZodString>;
1061
+ installed_extension_id: z.ZodOptional<z.ZodString>;
1062
+ install_name: z.ZodOptional<z.ZodString>;
1063
+ key: z.ZodOptional<z.ZodString>;
1064
+ source: z.ZodOptional<z.ZodObject<{
1065
+ kind: z.ZodLiteral<"package-asset">;
1066
+ path: z.ZodString;
1067
+ baseUrl: z.ZodString;
1068
+ }, z.core.$strip>>;
1069
+ enabled: z.ZodOptional<z.ZodBoolean>;
1070
+ created_at: z.ZodString;
1071
+ updated_at: z.ZodString;
1072
+ deleted_at: z.ZodNullable<z.ZodString>;
1073
+ }, z.core.$strip>;
1074
+ declare const skillWithContentSchema: z.ZodObject<{
1075
+ id: z.ZodString;
1076
+ project_id: z.ZodString;
1077
+ name: z.ZodString;
1078
+ title: z.ZodString;
1079
+ description: z.ZodString;
1080
+ source_kind: z.ZodEnum<{
1081
+ project: "project";
1082
+ extension: "extension";
1083
+ }>;
1084
+ files: z.ZodArray<z.ZodObject<{
1085
+ path: z.ZodString;
1086
+ content: z.ZodString;
1087
+ encoding: z.ZodLiteral<"utf8">;
1088
+ }, z.core.$strip>>;
1089
+ editable: z.ZodBoolean;
1090
+ extension_instance_id: z.ZodOptional<z.ZodString>;
1091
+ extension_id: z.ZodOptional<z.ZodString>;
1092
+ installed_extension_id: z.ZodOptional<z.ZodString>;
1093
+ install_name: z.ZodOptional<z.ZodString>;
1094
+ key: z.ZodOptional<z.ZodString>;
1095
+ source: z.ZodOptional<z.ZodObject<{
1096
+ kind: z.ZodLiteral<"package-asset">;
1097
+ path: z.ZodString;
1098
+ baseUrl: z.ZodString;
1099
+ }, z.core.$strip>>;
1100
+ enabled: z.ZodOptional<z.ZodBoolean>;
1101
+ created_at: z.ZodString;
1102
+ updated_at: z.ZodString;
1103
+ deleted_at: z.ZodNullable<z.ZodString>;
1104
+ installed_agents: z.ZodArray<z.ZodString>;
1105
+ outdated_agents: z.ZodArray<z.ZodString>;
1106
+ agent_installations: z.ZodArray<z.ZodObject<{
1107
+ agent_id: z.ZodString;
1108
+ agent_name: z.ZodString;
1109
+ installed_version: z.ZodNullable<z.ZodString>;
1110
+ outdated: z.ZodBoolean;
1111
+ }, z.core.$strip>>;
1112
+ }, z.core.$strip>;
1113
+ declare const updateSkillInputSchema: z.ZodObject<{
1114
+ enabled: z.ZodOptional<z.ZodBoolean>;
1115
+ title: z.ZodOptional<z.ZodString>;
1116
+ description: z.ZodOptional<z.ZodString>;
1117
+ }, z.core.$strip>;
1118
+ type Skill = z.infer<typeof skillSchema>;
1119
+ type SkillWithContent = z.infer<typeof skillWithContentSchema>;
1120
+ type SkillFile = z.infer<typeof skillFileSchema>;
1121
+ type UpdateSkillInput = z.infer<typeof updateSkillInputSchema>;
1122
+ //#endregion
1123
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/automation.d.ts
1124
+ interface ExtensionAutomationApi {
1125
+ /** Enqueue a command owned by this extension and declared automation: true. */
1126
+ enqueue(input: {
1127
+ command: CommandRef | string;
1128
+ input: CreateAutomationRunInput["input"];
1129
+ /** Required idempotency key, at most 200 characters. */
1130
+ key: string;
1131
+ }): Promise<AutomationRun>;
1132
+ get(runId: string): Promise<AutomationRun | undefined>;
1133
+ list(filter?: {
1134
+ status?: AutomationRunStatus[];
1135
+ }): Promise<AutomationRun[]>;
1136
+ cancel(runId: string): Promise<AutomationRun>;
1137
+ }
1138
+ //#endregion
1139
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/connections.d.ts
1140
+ type ExtensionConnectionMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
1141
+ interface ExtensionConnectionRequest {
1142
+ method: ExtensionConnectionMethod;
1143
+ path: string;
1144
+ headers?: Record<string, string>;
1145
+ body?: JsonValue;
1146
+ timeoutMs?: number;
1147
+ signal?: AbortSignal;
1148
+ }
1149
+ interface ExtensionConnectionResponse<TBody = JsonValue> {
1150
+ status: number;
1151
+ headers: Record<string, string>;
1152
+ body: TBody;
1153
+ }
1154
+ type ExtensionConnectionStreamEvent = {
1155
+ type: "response";
1156
+ status: number;
1157
+ headers: Record<string, string>;
1158
+ } | {
1159
+ type: "data";
1160
+ data: Uint8Array;
1161
+ } | {
1162
+ type: "end";
1163
+ };
1164
+ interface ExtensionConnectionsApi {
1165
+ request<TBody = JsonValue>(connectionId: string, input: ExtensionConnectionRequest): Promise<ExtensionConnectionResponse<TBody>>;
1166
+ stream(connectionId: string, input: ExtensionConnectionRequest): AsyncIterable<ExtensionConnectionStreamEvent>;
1167
+ }
1168
+ interface ExtensionLoggerApi {
1169
+ info(message: string, metadata?: JsonObject): void;
1170
+ warn(message: string, metadata?: JsonObject): void;
1171
+ error(message: string, metadata?: JsonObject): void;
1172
+ }
1173
+ //#endregion
1174
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/events.d.ts
1175
+ interface EventRef<TPayload extends Struct = Struct> {
1176
+ readonly extensionId?: string;
1177
+ readonly kind: "event";
1178
+ readonly id: string;
1179
+ payload?: TPayload;
1180
+ }
1181
+ interface EventDeliveryResult {
1182
+ delivered: number;
1183
+ diagnostics?: CommandDiagnostic[];
1184
+ }
1185
+ //#endregion
1186
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/slots.d.ts
1187
+ type UiSlotKind = "menu" | "panel" | "settings" | "renderer" | "kanbanRenderer" | "dataTableRenderer";
1188
+ interface SlotOptions<TKind extends UiSlotKind = UiSlotKind> {
1189
+ kind: TKind;
1190
+ label?: string;
1191
+ description?: string;
1192
+ metadata?: JsonObject;
1193
+ }
1194
+ interface SlotRef<TContext extends Struct = Struct, TKind extends UiSlotKind = UiSlotKind> {
1195
+ id: string;
1196
+ kind: TKind;
1197
+ label?: string;
1198
+ description?: string;
1199
+ metadata?: JsonObject;
1200
+ /** Phantom field used to constrain compatible contributions; never populated at runtime. */
1201
+ context?: TContext;
1202
+ }
1203
+ interface SlotInvocationContext<TContext extends Struct = Struct> {
1204
+ id: string;
1205
+ kind: UiSlotKind;
1206
+ context: TContext;
1207
+ }
1208
+ //#endregion
1209
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/renderer-base.d.ts
1210
+ /** A raw cross-extension id must be namespaced. Local events use an EventRef. */
1211
+ type RendererEventReference = EventRef | `${string}.${string}`;
1212
+ interface RendererContributionBase {
1213
+ title: Localizable<string>;
1214
+ icon?: string;
1215
+ resourceKind?: string;
1216
+ refreshEvents?: readonly RendererEventReference[];
1217
+ emptyTitle?: Localizable<string>;
1218
+ emptyDescription?: Localizable<string>;
1219
+ }
1220
+ //#endregion
1221
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/webview-capabilities.d.ts
1222
+ declare const WEBVIEW_HOST_CAPABILITY_VERSION = 1;
1223
+ declare const WEBVIEW_DECLARABLE_CAPABILITIES: readonly ["clipboard.write", "commands.execute", "navigation.open", "placement.close", "notification.show", "notification.action", "notification.resolve", "notification.dismiss", "preferences.get", "preferences.set", "extension.settings.all", "extension.settings.get", "extension.settings.set", "extension.settings.delete", "terminal.session", "files.upload", "files.list", "files.delete"];
1224
+ declare const WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES: readonly ["artifacts.read"];
1225
+ declare const ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES: readonly ["host.dispatchKeyboardEvent"];
1226
+ declare const WEBVIEW_HOST_CAPABILITIES: readonly [...("commands.execute" | "navigation.open" | "placement.close" | "notification.show" | "notification.action" | "notification.resolve" | "notification.dismiss" | "preferences.get" | "preferences.set" | "extension.settings.all" | "extension.settings.get" | "extension.settings.set" | "extension.settings.delete" | "terminal.session" | "files.upload" | "files.list" | "files.delete")[], "artifacts.read", "host.dispatchKeyboardEvent"];
1227
+ type WebviewHostCapability = (typeof WEBVIEW_HOST_CAPABILITIES)[number];
1228
+ type WebviewDeclarableCapability = (typeof WEBVIEW_DECLARABLE_CAPABILITIES)[number];
1229
+ type WebviewScopedDeclarableCapability = (typeof WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES)[number];
1230
+ type WebviewCapabilityDeclaration = WebviewDeclarableCapability | `${WebviewDeclarableCapability}@${typeof WEBVIEW_HOST_CAPABILITY_VERSION}` | `${WebviewScopedDeclarableCapability}:${string}`;
1231
+ interface WebviewCommandsExecuteParams {
1232
+ commandId: string;
1233
+ params?: JsonObject;
1234
+ workspaceId?: string;
1235
+ resource?: ResourceRef;
1236
+ metadata?: JsonObject;
1237
+ }
1238
+ interface WebviewNavigationOpenParams {
1239
+ target: NavigationTarget;
1240
+ }
1241
+ interface WebviewNotificationShowParams {
1242
+ level: "info" | "success" | "warning" | "error";
1243
+ title: string;
1244
+ message?: string;
1245
+ }
1246
+ type WebviewNotificationActionParams = Omit<CreateNotificationInput, "projectId">;
1247
+ interface WebviewNotificationResolveParams {
1248
+ id?: string;
1249
+ dedupeKey?: string;
1250
+ status?: Extract<NotificationStatus, "done" | "dismissed" | "expired">;
1251
+ }
1252
+ type WebviewNotificationDismissParams = Pick<WebviewNotificationResolveParams, "id" | "dedupeKey">;
1253
+ interface WebviewPreferencesGetParams {
1254
+ name: string;
1255
+ scope?: {
1256
+ scope: "default" | "user" | "project" | "workspace" | "extension" | "session";
1257
+ scopeId?: string;
1258
+ };
1259
+ }
1260
+ interface WebviewPreferencesSetParams extends WebviewPreferencesGetParams {
1261
+ value: boolean | number | string | string[] | number[] | boolean[] | Record<string, unknown>;
1262
+ }
1263
+ interface WebviewExtensionSettingKeyParams {
1264
+ key: string;
1265
+ }
1266
+ interface WebviewExtensionSettingSetParams extends WebviewExtensionSettingKeyParams {
1267
+ value: unknown;
1268
+ }
1269
+ type WebviewFileScope = {
1270
+ type: "project";
1271
+ } | {
1272
+ type: "resource";
1273
+ id: string;
1274
+ } | {
1275
+ type: string;
1276
+ id?: string;
1277
+ };
1278
+ interface WebviewFilesUploadParams {
1279
+ name: string;
1280
+ data: Uint8Array | ArrayBuffer;
1281
+ mimeType?: string;
1282
+ scope?: WebviewFileScope;
1283
+ }
1284
+ interface WebviewFilesListParams {
1285
+ scope?: WebviewFileScope;
1286
+ }
1287
+ interface WebviewFilesDeleteParams {
1288
+ id: string;
1289
+ }
1290
+ type WebviewArtifactsReadParams = {
1291
+ op: "list";
1292
+ mount: string;
1293
+ prefix?: string;
1294
+ } | {
1295
+ op: "readText";
1296
+ mount: string;
1297
+ path: string;
1298
+ } | {
1299
+ op: "imageUrl";
1300
+ mount: string;
1301
+ path: string;
1302
+ };
1303
+ interface WebviewArtifactFile {
1304
+ path: string;
1305
+ size: number;
1306
+ mediaType: string;
1307
+ }
1308
+ interface WebviewKeyboardEventParams {
1309
+ key?: string;
1310
+ code?: string;
1311
+ ctrlKey?: boolean;
1312
+ metaKey?: boolean;
1313
+ altKey?: boolean;
1314
+ shiftKey?: boolean;
1315
+ repeat?: boolean;
1316
+ }
1317
+ interface WebviewHostCapabilityParams {
1318
+ "commands.execute": WebviewCommandsExecuteParams;
1319
+ "navigation.open": WebviewNavigationOpenParams;
1320
+ "placement.close": Record<string, never>;
1321
+ "notification.show": WebviewNotificationShowParams;
1322
+ "notification.action": WebviewNotificationActionParams;
1323
+ "notification.resolve": WebviewNotificationResolveParams;
1324
+ "notification.dismiss": WebviewNotificationDismissParams;
1325
+ "preferences.get": WebviewPreferencesGetParams;
1326
+ "preferences.set": WebviewPreferencesSetParams;
1327
+ "extension.settings.all": Record<string, never>;
1328
+ "extension.settings.get": WebviewExtensionSettingKeyParams;
1329
+ "extension.settings.set": WebviewExtensionSettingSetParams;
1330
+ "extension.settings.delete": WebviewExtensionSettingKeyParams;
1331
+ "terminal.session": TerminalSessionOperation$1;
1332
+ "files.upload": WebviewFilesUploadParams;
1333
+ "files.list": WebviewFilesListParams;
1334
+ "files.delete": WebviewFilesDeleteParams;
1335
+ "artifacts.read": WebviewArtifactsReadParams;
1336
+ "host.dispatchKeyboardEvent": WebviewKeyboardEventParams;
1337
+ }
1338
+ interface WebviewHostCapabilityResults {
1339
+ "commands.execute": {
1340
+ outcome: CommandOutcome;
1341
+ };
1342
+ "navigation.open": void;
1343
+ "placement.close": void;
1344
+ "notification.show": void;
1345
+ "notification.action": Notification;
1346
+ "notification.resolve": Notification | {
1347
+ resolved: number;
1348
+ notifications: Notification[];
1349
+ };
1350
+ "notification.dismiss": Notification | {
1351
+ resolved: number;
1352
+ notifications: Notification[];
1353
+ };
1354
+ "preferences.get": WebviewPreferencesSetParams["value"] | undefined;
1355
+ "preferences.set": {
1356
+ name: string;
1357
+ value: WebviewPreferencesSetParams["value"];
1358
+ };
1359
+ "extension.settings.all": Record<string, unknown>;
1360
+ "extension.settings.get": unknown;
1361
+ "extension.settings.set": void;
1362
+ "extension.settings.delete": void;
1363
+ "terminal.session": TerminalSessionResult$1;
1364
+ "files.upload": ExtensionBlobRef;
1365
+ "files.list": {
1366
+ files: ExtensionBlobRef[];
1367
+ };
1368
+ "files.delete": void;
1369
+ "artifacts.read": WebviewArtifactFile[] | string;
1370
+ "host.dispatchKeyboardEvent": void;
1371
+ }
1372
+ type WebviewHostCapabilityResult<Capability extends WebviewHostCapability, Params extends WebviewHostCapabilityParams[Capability] = WebviewHostCapabilityParams[Capability]> = Capability extends "artifacts.read" ? Params extends {
1373
+ op: "list";
1374
+ } ? WebviewArtifactFile[] : Params extends {
1375
+ op: "readText" | "imageUrl";
1376
+ } ? string : WebviewHostCapabilityResults[Capability] : Capability extends "terminal.session" ? Params extends {
1377
+ operation: "open";
1378
+ } ? Extract<TerminalSessionResult$1, {
1379
+ operation: "open";
1380
+ }> : Params extends {
1381
+ operation: "write" | "resize" | "kill" | "subscribe";
1382
+ } ? Exclude<TerminalSessionResult$1, {
1383
+ operation: "open";
1384
+ }> : TerminalSessionResult$1 : WebviewHostCapabilityResults[Capability];
1385
+ //#endregion
1386
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/params.d.ts
1387
+ type ParamType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files" | "harness" | "template" | "resource" | "workspace" | "json" | "list";
1388
+ type ParamRequired<TRequired extends boolean | undefined> = TRequired extends true ? {
1389
+ required: true;
1390
+ } : TRequired extends false ? {
1391
+ required: false;
1392
+ } : {
1393
+ required?: boolean;
1394
+ };
1395
+ type ParamBase<TValue, TRequired extends boolean | undefined = boolean | undefined> = {
1396
+ label?: Localizable<string>;
1397
+ description?: Localizable<string>;
1398
+ defaultValue?: TValue;
1399
+ metadata?: JsonObject;
1400
+ resolvedFrom?: "resource";
1401
+ } & ParamRequired<TRequired>;
1402
+ type TextParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
1403
+ type: "text";
1404
+ };
1405
+ type LongTextParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
1406
+ type: "longtext";
1407
+ };
1408
+ type MarkdownParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
1409
+ type: "markdown";
1410
+ placeholder?: Localizable<string>;
1411
+ };
1412
+ type NumberParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<number, TRequired> & {
1413
+ type: "number";
1414
+ };
1415
+ type FilesParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
1416
+ type: "files";
1417
+ multiple?: boolean;
1418
+ /** Passed through to the picker, e.g. "image/*". */
1419
+ accept?: string;
1420
+ };
1421
+ type BooleanParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<boolean, TRequired> & {
1422
+ type: "boolean";
1423
+ };
1424
+ type ParamValueRef = {
1425
+ kind: "param-value";
1426
+ key: string;
1427
+ };
1428
+ interface ParamOptionSource {
1429
+ command: CommandRef;
1430
+ valueField: string;
1431
+ labelField: string;
1432
+ params?: Record<string, unknown | ParamValueRef>;
1433
+ }
1434
+ type ParamOption = {
1435
+ label: string;
1436
+ value: string;
1437
+ icon?: string;
1438
+ };
1439
+ type SelectParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
1440
+ type: "select";
1441
+ options: ParamOption[] | ParamOptionSource;
1442
+ allowCustomValues?: boolean;
1443
+ };
1444
+ type MultiSelectParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
1445
+ type: "multi-select";
1446
+ options: ParamOption[] | ParamOptionSource;
1447
+ allowCustomValues?: boolean;
1448
+ };
1449
+ type HarnessParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<{
1450
+ harnessId: string;
1451
+ model?: string;
1452
+ params?: Record<string, string | boolean>;
1453
+ }, TRequired> & {
1454
+ type: "harness";
1455
+ };
1456
+ type TemplateParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string, TRequired> & {
1457
+ type: "template";
1458
+ templateType: string;
1459
+ };
1460
+ type ResourceParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<ResourceRef, TRequired> & {
1461
+ type: "resource";
1462
+ resourceType: string;
1463
+ };
1464
+ type WorkspaceParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<{
1465
+ providerId: string;
1466
+ params?: JsonObject;
1467
+ }, TRequired> & {
1468
+ type: "workspace";
1469
+ /** Provider ids the user may choose from. Omit to offer every provider. */
1470
+ providers?: string[];
1471
+ };
1472
+ type JsonParam<T = unknown, TRequired extends boolean | undefined = boolean | undefined> = ParamBase<T, TRequired> & {
1473
+ type: "json";
1474
+ };
1475
+ type ListParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
1476
+ type: "list";
1477
+ };
1478
+ type ParamDescriptor<TValue = unknown, TRequired extends boolean | undefined = boolean | undefined> = TextParam<TRequired> | LongTextParam<TRequired> | MarkdownParam<TRequired> | NumberParam<TRequired> | BooleanParam<TRequired> | SelectParam<TRequired> | MultiSelectParam<TRequired> | FilesParam<TRequired> | HarnessParam<TRequired> | TemplateParam<TRequired> | ResourceParam<TRequired> | WorkspaceParam<TRequired> | JsonParam<TValue, TRequired> | ListParam<TRequired>;
1479
+ type ParamObjectSchema = Record<string, ParamDescriptor>;
1480
+ type ParamValue<TDescriptor extends ParamDescriptor> = TDescriptor extends ParamDescriptor<infer V> ? V : never;
1481
+ type RequiredParamKeys<TSchema extends ParamObjectSchema> = { [K in keyof TSchema]: TSchema[K] extends {
1482
+ required: true;
1483
+ } ? K : never; }[keyof TSchema];
1484
+ type OptionalParamKeys<TSchema extends ParamObjectSchema> = Exclude<keyof TSchema, RequiredParamKeys<TSchema>>;
1485
+ type ParamsOf<TSchema extends ParamObjectSchema> = { [K in RequiredParamKeys<TSchema>]: ParamValue<TSchema[K]>; } & { [K in OptionalParamKeys<TSchema>]?: ParamValue<TSchema[K]>; };
1486
+ //#endregion
1487
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/view-toolbar-action.d.ts
1488
+ interface ViewToolbarAction<TParams extends Struct = Struct> {
1489
+ id: string;
1490
+ label: Localizable<string>;
1491
+ icon?: string;
1492
+ presentation?: "primary" | "secondary";
1493
+ command: CommandRef<TParams, unknown>;
1494
+ params?: Record<string, unknown>;
1495
+ input?: ParamObjectSchema;
1496
+ submitLabel?: string;
1497
+ when?: string;
1498
+ disabled?: boolean;
1499
+ }
1500
+ //#endregion
1501
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/kanban-renderer.d.ts
1502
+ type KanbanRendererViewMode = "board" | "list";
1503
+ type KanbanRendererSortDirection = "asc" | "desc";
1504
+ interface KanbanRendererEnumOption {
1505
+ value: string;
1506
+ label: Localizable<string>;
1507
+ color?: string;
1508
+ icon?: string | null;
1509
+ }
1510
+ type KanbanRendererAttributeType = {
1511
+ kind: "enum";
1512
+ options: KanbanRendererEnumOption[];
1513
+ } | {
1514
+ kind: "enum-multi";
1515
+ options: KanbanRendererEnumOption[];
1516
+ } | {
1517
+ kind: "status";
1518
+ statuses: StatusRef;
1519
+ } | {
1520
+ kind: "string";
1521
+ } | {
1522
+ kind: "date";
1523
+ } | {
1524
+ kind: "number";
1525
+ } | {
1526
+ kind: "user";
1527
+ };
1528
+ interface CollectionBadgeItem {
1529
+ id: string;
1530
+ label: string;
1531
+ icon?: string;
1532
+ resource?: ResourceRef;
1533
+ }
1534
+ type KanbanRendererAttributeDisplay = {
1535
+ kind: "badge-list";
1536
+ itemsAttributeId: string;
1537
+ };
1538
+ interface KanbanRendererAttributeDescriptor {
1539
+ id: string;
1540
+ label: Localizable<string>;
1541
+ type: KanbanRendererAttributeType;
1542
+ filterable?: boolean;
1543
+ groupable?: boolean;
1544
+ sortable?: boolean;
1545
+ displayable?: boolean;
1546
+ editable?: boolean;
1547
+ display?: KanbanRendererAttributeDisplay;
1548
+ }
1549
+ interface KanbanRendererSettings {
1550
+ viewMode: KanbanRendererViewMode;
1551
+ columnGrouping: string;
1552
+ rowGrouping: string;
1553
+ ordering: {
1554
+ attributeId: string;
1555
+ direction: KanbanRendererSortDirection;
1556
+ };
1557
+ displayProperties: string[];
1558
+ }
1559
+ type KanbanRendererFilterState = Record<string, string[]>;
1560
+ interface KanbanRendererSavedView {
1561
+ id: string;
1562
+ title: Localizable<string>;
1563
+ settings: KanbanRendererSettings;
1564
+ filters: KanbanRendererFilterState;
1565
+ /** @deprecated Use the renderer's defaultActiveViewId instead. */
1566
+ isDefault?: boolean;
1567
+ }
1568
+ interface KanbanRendererQueryParams {
1569
+ renderer: RendererContext;
1570
+ settings: KanbanRendererSettings;
1571
+ filters: KanbanRendererFilterState;
1572
+ }
1573
+ type KanbanRendererResourceRef = ResourceRef;
1574
+ interface KanbanRendererRow {
1575
+ id: string;
1576
+ title: string;
1577
+ resource?: KanbanRendererResourceRef;
1578
+ attributes: Record<string, unknown>;
1579
+ }
1580
+ interface KanbanRendererColumnAction {
1581
+ id: string;
1582
+ label: Localizable<string>;
1583
+ icon?: string;
1584
+ }
1585
+ interface KanbanRendererBoardColumnConfig {
1586
+ color?: string;
1587
+ canDragIn?: boolean;
1588
+ canDragOut?: boolean;
1589
+ canCreate?: boolean;
1590
+ actions?: KanbanRendererColumnAction[];
1591
+ }
1592
+ interface KanbanRendererQueryResult {
1593
+ rows: KanbanRendererRow[];
1594
+ attributes?: KanbanRendererAttributeDescriptor[];
1595
+ boardColumnConfigs?: Record<string, KanbanRendererBoardColumnConfig>;
1596
+ }
1597
+ interface KanbanRendererCreateRowContribution<TParams extends ParamObjectSchema = ParamObjectSchema> {
1598
+ command: CommandRef<Struct, unknown>;
1599
+ title?: Localizable<string>;
1600
+ submitLabel?: Localizable<string>;
1601
+ columnParam?: string;
1602
+ params?: TParams;
1603
+ attributesParam?: string;
1604
+ attachments?: {
1605
+ command: CommandRef<Struct, unknown>;
1606
+ resourceParam: string;
1607
+ fileParam: string;
1608
+ };
1609
+ labels?: {
1610
+ cancel?: Localizable<string>;
1611
+ properties?: Localizable<string>;
1612
+ submitError?: Localizable<string>;
1613
+ removeFile?: Localizable<string>;
1614
+ };
1615
+ }
1616
+ interface KanbanRendererRowAction<TParams extends Struct = Struct> {
1617
+ id: string;
1618
+ label: Localizable<string>;
1619
+ icon?: string;
1620
+ command: CommandRef<TParams, unknown>;
1621
+ destructive?: boolean;
1622
+ }
1623
+ type KanbanRendererRowActivationHandler = RendererCallback<{
1624
+ row: KanbanRendererRow;
1625
+ }, void>;
1626
+ interface KanbanRendererContribution extends RendererContributionBase {
1627
+ toolbarActions?: ViewToolbarAction[];
1628
+ attributes?: KanbanRendererAttributeDescriptor[];
1629
+ query: RendererCallback<KanbanRendererQueryParams, KanbanRendererQueryResult>;
1630
+ onAttributeChange?: RendererCallback<{
1631
+ rowId: string;
1632
+ attributeId: string;
1633
+ value: unknown;
1634
+ }, unknown>;
1635
+ onReorder?: RendererCallback<{
1636
+ rowId: string;
1637
+ beforeRowId?: string;
1638
+ }, unknown>;
1639
+ onColumnAction?: RendererCallback<{
1640
+ columnId: string;
1641
+ actionId: string;
1642
+ }, unknown>;
1643
+ createRow?: KanbanRendererCreateRowContribution;
1644
+ rowActions?: KanbanRendererRowAction[];
1645
+ onRowActivate?: KanbanRendererRowActivationHandler;
1646
+ defaultSettings?: Partial<KanbanRendererSettings>;
1647
+ defaultFilters?: KanbanRendererFilterState;
1648
+ defaultViews?: KanbanRendererSavedView[];
1649
+ defaultActiveViewId?: string;
1650
+ hideToolbar?: boolean;
1651
+ }
1652
+ //#endregion
1653
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/contributions.d.ts
1654
+ interface CliContribution {
1655
+ path?: string[];
1656
+ globalAliases?: string[][];
1657
+ description?: Localizable<string>;
1658
+ examples?: string[];
1659
+ hidden?: boolean;
1660
+ }
1661
+ interface WhenExpression {
1662
+ mode?: ModeRef | readonly ModeRef[];
1663
+ source?: CommandSource[];
1664
+ view?: ViewRef | readonly ViewRef[];
1665
+ resourceType?: readonly ResourceKindRef[];
1666
+ metadata?: JsonObject;
1667
+ }
1668
+ interface MenuContribution<TSlotContext extends Struct = Struct, TParams extends Struct = Struct> {
1669
+ slot: SlotRef<TSlotContext, "menu">;
1670
+ label?: Localizable<string>;
1671
+ group?: string;
1672
+ placement?: "first" | "default" | "last";
1673
+ icon?: string;
1674
+ when?: WhenExpression;
1675
+ params?: Partial<TParams>;
1676
+ presentation?: "menu-item" | "button" | "icon-button";
1677
+ }
1678
+ interface CommandPaletteContribution<TParams extends Struct = Struct> {
1679
+ label?: Localizable<string>;
1680
+ group?: string;
1681
+ placement?: "first" | "default" | "last";
1682
+ icon?: string;
1683
+ when?: WhenExpression;
1684
+ params?: Partial<TParams>;
1685
+ }
1686
+ interface ActivityItemContribution<TParams extends Struct = Struct> extends ContributionDefinition<"activity-item"> {
1687
+ title: Localizable<string>;
1688
+ icon: string;
1689
+ /** Mode ids whose activity rail shows this item. */
1690
+ modes: readonly ModeRef[];
1691
+ placement?: "first" | "default" | "last";
1692
+ command: CommandRef<TParams, unknown>;
1693
+ params?: Partial<TParams>;
1694
+ }
1695
+ interface ModeRegionSettings {
1696
+ /** Hide the panel header when the mode supplies its own controls. */
1697
+ readonly showHeader?: boolean;
1698
+ readonly size?: RegionSize;
1699
+ /** Allow dragging this region closed. Explicit hide/show is always available. */
1700
+ readonly collapsible?: boolean;
1701
+ /** Keep a tab visible when this region has only one visible item. */
1702
+ readonly alwaysShowTabs?: boolean;
1703
+ }
1704
+ interface ModeContribution extends ContributionDefinition<"mode"> {
1705
+ label: Localizable<string>;
1706
+ icon?: string;
1707
+ regions: readonly ExtensionPanelRegion[];
1708
+ /** Default theme for this mode. An explicit user choice for the mode takes precedence. */
1709
+ defaultTheme?: ThemeRef;
1710
+ /** Whether side panels may float while this mode is active. Defaults to visible. */
1711
+ floatingPanels?: "visible" | "hidden";
1712
+ /** Replace host chrome with a view, or hide it with false, while the mode is active. */
1713
+ chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", ViewRef | false>>;
1714
+ /** Region-level layout policy. The mode owns it; placements cannot set it. */
1715
+ regionSettings?: Readonly<Partial<Record<DockedWorkbenchRegion, ModeRegionSettings>>>;
1716
+ }
1717
+ interface WebviewContribution {
1718
+ entry: PackageAssetDescriptor;
1719
+ title?: Localizable<string>;
1720
+ capabilities?: WebviewCapabilityDeclaration[];
1721
+ }
1722
+ interface SettingsPanelContribution extends ContributionDefinition<"settings-panel"> {
1723
+ view: ViewRef;
1724
+ slot: SettingsSlotRef;
1725
+ section?: SettingsSectionRef;
1726
+ }
1727
+ /** A named group in the settings navigation that an extension's panels can sit under. */
1728
+ interface SettingsSectionContribution extends ContributionDefinition<"settings-section"> {
1729
+ title: Localizable<string>;
1730
+ /** Lower sorts first among sibling sections. */
1731
+ order?: number;
1732
+ }
1733
+ /**
1734
+ * Command palette resource providers contribute dynamic, searchable palette results
1735
+ * (e.g. slides in a presentation) backed by a private query callback. The host queries
1736
+ * matching providers as the user types and refreshes results when a declared event fires.
1737
+ */
1738
+ interface CommandPaletteResourceQueryParams {
1739
+ projectId?: string;
1740
+ modeId?: string;
1741
+ activeResource?: ResourceRef;
1742
+ providerId: string;
1743
+ query: string;
1744
+ limit: number;
1745
+ }
1746
+ type CommandPaletteResourceTarget = NavigationTarget;
1747
+ interface CommandPaletteResourceItem {
1748
+ id: string;
1749
+ label: string;
1750
+ description?: string;
1751
+ icon?: string;
1752
+ keywords?: string[];
1753
+ target: CommandPaletteResourceTarget;
1754
+ }
1755
+ interface CommandPaletteResourceQueryResult {
1756
+ items: CommandPaletteResourceItem[];
1757
+ }
1758
+ interface CommandPaletteResourceContribution extends ContributionDefinition<"command-palette-resource"> {
1759
+ title: Localizable<string>;
1760
+ resourceKind?: ResourceKindRef;
1761
+ query: RendererCallback<CommandPaletteResourceQueryParams, CommandPaletteResourceQueryResult>;
1762
+ refreshEvents?: readonly RendererEventReference[];
1763
+ }
1764
+ type ExtensionSettingScope = "global" | "project";
1765
+ type ExtensionSettingValueType = "boolean" | "number" | "string" | "array" | "object";
1766
+ type ExtensionSettingValueForType<TType extends ExtensionSettingValueType> = TType extends "boolean" ? boolean : TType extends "number" ? number : TType extends "string" ? string : TType extends "array" ? JsonValue[] : JsonObject;
1767
+ type ExtensionSettingProperty<TType extends ExtensionSettingValueType = ExtensionSettingValueType> = { [TSettingType in TType]: {
1768
+ type: TSettingType;
1769
+ scope: ExtensionSettingScope;
1770
+ default?: ExtensionSettingValueForType<TSettingType>;
1771
+ enum?: ExtensionSettingValueForType<TSettingType>[];
1772
+ title?: Localizable<string>;
1773
+ description?: Localizable<string>;
1774
+ }; }[TType];
1775
+ interface ExtensionSettingsContribution<TProperties extends Record<string, ExtensionSettingProperty> = Record<string, ExtensionSettingProperty>> {
1776
+ properties: TProperties;
1777
+ }
1778
+ interface ArtifactMountContribution extends ContributionDefinition<"artifact-mount"> {
1779
+ /** Relative path under .pstdio/<extension.name>/. */
1780
+ path: string;
1781
+ label: Localizable<string>;
1782
+ }
1783
+ interface TemplateTypeContribution extends ContributionDefinition<"template-type"> {
1784
+ label: Localizable<string>;
1785
+ description?: Localizable<string>;
1786
+ order?: number;
1787
+ commands?: {
1788
+ list: CommandRef;
1789
+ read: CommandRef;
1790
+ save: CommandRef;
1791
+ delete: CommandRef;
1792
+ };
1793
+ }
1794
+ interface TemplateContribution extends ContributionDefinition<"template"> {
1795
+ title: Localizable<string>;
1796
+ type: string;
1797
+ source: PackageAssetDescriptor;
1798
+ description?: Localizable<string>;
1799
+ }
1800
+ interface SkillContribution extends ContributionDefinition<"skill"> {
1801
+ title: Localizable<string>;
1802
+ source: PackageAssetDescriptor;
1803
+ description?: Localizable<string>;
1804
+ }
1805
+ type ThemeMode = "light" | "dark";
1806
+ interface ThemeContribution extends ContributionDefinition<"theme"> {
1807
+ title: Localizable<string>;
1808
+ source: PackageAssetDescriptor;
1809
+ format: "vscode-color-theme";
1810
+ mode?: ThemeMode;
1811
+ description?: Localizable<string>;
1812
+ }
1813
+ interface FileIconThemeContribution extends ContributionDefinition<"file-icon-theme"> {
1814
+ title: Localizable<string>;
1815
+ source: PackageAssetDescriptor;
1816
+ format: "vscode-file-icon-theme";
1817
+ description?: Localizable<string>;
1818
+ }
1819
+ /**
1820
+ * Chord string in TanStack Hotkeys syntax (e.g. "mod+shift+p"). `mod` is
1821
+ * Cmd on macOS and Ctrl elsewhere. Parsing, validation, canonicalization,
1822
+ * and display labels are all delegated to `@tanstack/hotkeys`.
1823
+ */
1824
+ type KeybindingChord = string;
1825
+ interface KeybindingContribution extends ContributionDefinition<"keybinding"> {
1826
+ /** Default chord. Used on every platform unless an override is provided. */
1827
+ key: KeybindingChord;
1828
+ /** macOS override. */
1829
+ mac?: KeybindingChord;
1830
+ /** Linux override. */
1831
+ linux?: KeybindingChord;
1832
+ /** Windows override. */
1833
+ win?: KeybindingChord;
1834
+ /** Action this chord executes through the shared navigation executor. */
1835
+ action: NavigationTarget;
1836
+ /** Optional gating predicate. The host evaluates it at dispatch time. */
1837
+ when?: WhenExpression;
1838
+ }
1839
+ //#endregion
1840
+ //#region ../pstdio-api-contracts/src/session-messages.d.ts
1841
+ type SessionMessageRole = "user" | "assistant" | "tool" | "system" | "developer";
1842
+ type TextPart = {
1843
+ type: "text";
1844
+ text: string;
1845
+ };
1846
+ type ReasoningPart = {
1847
+ type: "reasoning";
1848
+ text: string;
1849
+ };
1850
+ type ToolPartActionType = "read" | "write" | "execute" | "network" | "other";
1851
+ type ToolPartStatus = "pending" | "running" | "completed" | "failed" | "denied";
1852
+ type ToolPart = {
1853
+ type: "tool";
1854
+ tool: string;
1855
+ callId?: string;
1856
+ actionType?: ToolPartActionType;
1857
+ status?: ToolPartStatus;
1858
+ state?: {
1859
+ status?: string;
1860
+ input?: unknown;
1861
+ output?: unknown;
1862
+ errorText?: string;
1863
+ metadata?: unknown;
1864
+ };
1865
+ };
1866
+ type StepStartPart = {
1867
+ type: "step-start";
1868
+ snapshot?: string;
1869
+ };
1870
+ type StepFinishPart = {
1871
+ type: "step-finish";
1872
+ reason?: string;
1873
+ snapshot?: string;
1874
+ cost?: number;
1875
+ tokens?: unknown;
1876
+ };
1877
+ type PatchPart = {
1878
+ type: "patch";
1879
+ hash?: string;
1880
+ files?: unknown;
1881
+ };
1882
+ type FilePart = {
1883
+ type: "file";
1884
+ fileId?: string;
1885
+ mediaType?: string;
1886
+ filename?: string;
1887
+ size?: number;
1888
+ url: string;
1889
+ };
1890
+ type LoadingPart = {
1891
+ type: "loading";
1892
+ };
1893
+ type ErrorPart = {
1894
+ type: "error";
1895
+ errorType: "timeout" | "crash" | "permission" | "other";
1896
+ message?: string;
1897
+ };
1898
+ type TokenUsagePart = {
1899
+ type: "token_usage";
1900
+ inputTokens: number;
1901
+ outputTokens: number;
1902
+ cacheReadTokens?: number;
1903
+ cacheWriteTokens?: number;
1904
+ };
1905
+ type SessionMessagePart = TextPart | ReasoningPart | ToolPart | StepStartPart | StepFinishPart | PatchPart | FilePart | LoadingPart | ErrorPart | TokenUsagePart;
1906
+ type SessionMessage = {
1907
+ id: string;
1908
+ role: SessionMessageRole;
1909
+ parts: SessionMessagePart[];
1910
+ index?: number;
1911
+ createdAt?: number;
1912
+ modelId?: string;
1913
+ providerId?: string;
1914
+ tokens?: {
1915
+ input?: number;
1916
+ output?: number;
1917
+ reasoning?: number;
1918
+ cache?: {
1919
+ read?: number;
1920
+ write?: number;
1921
+ };
1922
+ };
1923
+ };
1924
+ //#endregion
1925
+ //#region ../pstdio-api-contracts/src/harness.d.ts
1926
+ type JsonPatch = {
1927
+ op: "add" | "replace" | "remove";
1928
+ path: string;
1929
+ value?: unknown;
1930
+ };
1931
+ type AgentCapability = "SessionFork" | "ContextUsage" | "Approvals" | "SessionReattach";
1932
+ type QuestionResponse = {
1933
+ answers: string[][];
1934
+ };
1935
+ type ApprovalRequest = {
1936
+ id: string;
1937
+ toolName: string;
1938
+ toolInput: unknown;
1939
+ toolUseId: string;
1940
+ };
1941
+ type ApprovalResponse = {
1942
+ id: string;
1943
+ decision: "approve" | "deny" | "timeout";
1944
+ };
1945
+ /** "activity": the host kills the session when no events arrive for a while; "provider": the provider self-terminates. */
1946
+ type TimeoutStrategy = "activity" | "provider";
1947
+ type HarnessEventSink = {
1948
+ push(patch: JsonPatch): void;
1949
+ getMessages(): readonly SessionMessage[];
1950
+ };
1951
+ type HarnessAttachment = {
1952
+ fileId: string;
1953
+ fileName: string;
1954
+ mimeType: string | null;
1955
+ sizeBytes: number;
1956
+ localPath: string;
1957
+ url: string;
1958
+ };
1959
+ type HarnessApprovalChannel = {
1960
+ requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;
1961
+ };
1962
+ type HarnessParamValue = string | boolean;
1963
+ type HarnessParams = Record<string, HarnessParamValue>;
1964
+ type HarnessWorkspaceContext = {
1965
+ workspaceId: string;
1966
+ executionTarget: WorkspaceExecutionTarget;
1967
+ };
1968
+ type HarnessExitStatus = "completed" | "failed" | "cancelled" | "disconnected";
1969
+ type HarnessExit = {
1970
+ status: HarnessExitStatus;
1971
+ };
1972
+ type HarnessSession = {
1973
+ /** Provider-side session id, used to resume/reattach later. */
1974
+ agentSessionId?: string;
1975
+ /** Settles exactly once; the host keys status transitions and persistence off it. */
1976
+ done: Promise<HarnessExit>;
1977
+ /** Called by the host on cancel or on its own activity timeout. */
1978
+ stop(): void | Promise<void>;
1979
+ timeoutStrategy?: TimeoutStrategy;
1980
+ /** Observability only. */
1981
+ pid?: number;
1982
+ };
1983
+ type HarnessStartInput = {
1984
+ prompt: string;
1985
+ /** Host session id (correlation / env injection). */
1986
+ sessionId: string;
1987
+ cwd?: string;
1988
+ workspace?: HarnessWorkspaceContext;
1989
+ model?: string | null;
1990
+ params?: HarnessParams;
1991
+ attachments?: HarnessAttachment[];
1992
+ events: HarnessEventSink;
1993
+ /** Aborted when the host cancels the request that started or resumed this session. */
1994
+ signal?: AbortSignal;
1995
+ };
1996
+ type HarnessResumeInput = HarnessStartInput & {
1997
+ agentSessionId: string;
1998
+ /** Index offset so resumed streams align message patches with existing history. */
1999
+ messageOffset?: number;
2000
+ questionResponse?: QuestionResponse;
2001
+ approvals?: HarnessApprovalChannel;
2002
+ };
2003
+ type HarnessReattachInput = {
2004
+ sessionId: string;
2005
+ agentSessionId: string;
2006
+ cwd?: string;
2007
+ workspace?: HarnessWorkspaceContext;
2008
+ events: HarnessEventSink;
2009
+ /** Aborted when the host stops orphan recovery, including during shutdown. */
2010
+ signal?: AbortSignal;
2011
+ };
2012
+ type HarnessMessagesInput = {
2013
+ agentSessionId: string;
2014
+ cwd?: string;
2015
+ workspace?: HarnessWorkspaceContext;
2016
+ };
2017
+ type HarnessRecoveryInput = {
2018
+ knownMessages: readonly SessionMessage[];
2019
+ nativeMessages: readonly SessionMessage[];
2020
+ cwd?: string;
2021
+ workspace?: HarnessWorkspaceContext;
2022
+ };
2023
+ type HarnessRecoveryResult = {
2024
+ kind: "recovered";
2025
+ messages: SessionMessage[];
2026
+ } | {
2027
+ kind: "conflict";
2028
+ category: string;
2029
+ };
2030
+ //#endregion
2031
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/harness.d.ts
2032
+ /**
2033
+ * Host context a harness runs against. A structural subset of ExtensionContextBase,
2034
+ * so richer host APIs can be passed without a contract change.
2035
+ */
2036
+ interface HarnessContext {
2037
+ /** Present when the harness runs on behalf of a project session. */
2038
+ projectId?: string;
2039
+ extensionId: string;
2040
+ /** Extension package name. */
2041
+ name: string;
2042
+ process: ExtensionProcessApi;
2043
+ net: ExtensionNetApi;
2044
+ connections: ExtensionConnectionsApi;
2045
+ logger: ExtensionLoggerApi;
2046
+ state: HarnessStateApi;
2047
+ }
2048
+ interface HarnessStateApi {
2049
+ get<T = unknown>(key: string): Promise<T | undefined>;
2050
+ set<T = unknown>(key: string, value: T): Promise<void>;
2051
+ delete(key: string): Promise<void>;
2052
+ }
2053
+ interface HarnessDetectionResult {
2054
+ available: boolean;
2055
+ version?: string;
2056
+ reason?: string;
2057
+ }
2058
+ /** Where the harness's agent discovers skills. Paths are relative to the repo (dir) and home (globalDir). */
2059
+ interface HarnessSkillsLayout {
2060
+ dir: string;
2061
+ /** Defaults to `dir` when omitted. */
2062
+ globalDir?: string;
2063
+ }
2064
+ /** A reattach error is permanent unless the provider explicitly marks it retryable. */
2065
+ type RetryableHarnessReattachError = Error & {
2066
+ readonly retryable: true;
2067
+ };
2068
+ type HarnessParamDescriptor = (Omit<SelectParam, "options" | "allowCustomValues"> & {
2069
+ options: ParamOption[];
2070
+ }) | BooleanParam;
2071
+ type HarnessParamsSchema = Record<string, HarnessParamDescriptor>;
2072
+ /**
2073
+ * An agent harness contributed by an extension. The host injects the event sink
2074
+ * (and approval channel) and owns the session lifecycle: timeouts, persistence,
2075
+ * and status transitions are keyed off the returned HarnessSession.
2076
+ */
2077
+ interface HarnessProvider extends ContributionDefinition<"harness"> {
2078
+ label: Localizable<string>;
2079
+ /** Declares skill directories so the host installs project skills for this agent. Absent = no skill setup. */
2080
+ skills?: HarnessSkillsLayout;
2081
+ /** Discrete run params the host can render, persist as defaults, validate, and pass to start/resume. */
2082
+ params?: HarnessParamsSchema;
2083
+ /** Defaults to required. Optional harnesses can run against remote workspace execution targets. */
2084
+ cwdRequirement?: "required" | "optional";
2085
+ capabilities(ctx: HarnessContext): MaybePromise<AgentCapability[]>;
2086
+ detect?(ctx: HarnessContext): MaybePromise<HarnessDetectionResult>;
2087
+ listModels?(ctx: HarnessContext): MaybePromise<AgentModel[]>;
2088
+ start(ctx: HarnessContext, input: HarnessStartInput): MaybePromise<HarnessSession>;
2089
+ resume(ctx: HarnessContext, input: HarnessResumeInput): MaybePromise<HarnessSession>;
2090
+ /** Re-bind after a host restart. Throw a `RetryableHarnessReattachError` only when another attempt may succeed. */
2091
+ reattach?(ctx: HarnessContext, input: HarnessReattachInput): MaybePromise<HarnessSession>;
2092
+ getMessages?(ctx: HarnessContext, input: HarnessMessagesInput): MaybePromise<SessionMessage[]>;
2093
+ recoverMessages?(ctx: HarnessContext, input: HarnessRecoveryInput): MaybePromise<HarnessRecoveryResult>;
2094
+ }
2520
2095
  //#endregion
2521
- //#region ../pstdio-api-contracts/src/extension-kernel/types/automation.d.ts
2522
- interface ExtensionAutomationApi {
2523
- /** Enqueue a command owned by this extension and declared automation: true. */
2524
- enqueue(input: {
2525
- command: CommandRef | string;
2526
- input: CreateAutomationRunInput["input"];
2527
- /** Required idempotency key, at most 200 characters. */
2528
- key: string;
2529
- }): Promise<AutomationRun>;
2530
- get(runId: string): Promise<AutomationRun | undefined>;
2531
- list(filter?: {
2532
- status?: AutomationRunStatus[];
2533
- }): Promise<AutomationRun[]>;
2534
- cancel(runId: string): Promise<AutomationRun>;
2096
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/resource-binding.d.ts
2097
+ interface ResourceConstraint {
2098
+ readonly kinds: readonly ResourceKindRef[];
2099
+ }
2100
+ interface ResourceBinding extends ResourceConstraint {
2101
+ readonly view: ViewRef;
2102
+ readonly cardinality: "one" | "many";
2103
+ readonly add?: NavigationTarget;
2104
+ }
2105
+ //#endregion
2106
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/control-declarations.d.ts
2107
+ interface BaseControl {
2108
+ id: string;
2109
+ name: string;
2110
+ description?: string;
2111
+ /** Locks this one param while the rest of the editor stays editable. */
2112
+ readOnly?: boolean;
2113
+ }
2114
+ interface NumberControl extends BaseControl {
2115
+ type: "number";
2116
+ defaultValue: number;
2117
+ min?: number;
2118
+ max?: number;
2119
+ step?: number;
2120
+ }
2121
+ interface BooleanControl extends BaseControl {
2122
+ type: "boolean";
2123
+ defaultValue: boolean;
2124
+ }
2125
+ interface TextControl extends BaseControl {
2126
+ type: "text";
2127
+ defaultValue: string;
2128
+ singleLine?: boolean;
2129
+ }
2130
+ interface MarkdownControl extends BaseControl {
2131
+ type: "markdown";
2132
+ defaultValue: string;
2133
+ placeholder?: string;
2134
+ }
2135
+ interface SelectionOption {
2136
+ id: string;
2137
+ name: string;
2138
+ icon?: string;
2139
+ /** Palette key (e.g. "blue") applied to the option's icon. */
2140
+ color?: string;
2141
+ description?: string;
2142
+ disabled?: boolean;
2143
+ }
2144
+ /** Parent selector used to swap the option set of a grouped selection. */
2145
+ interface SelectionGroup {
2146
+ id: string;
2147
+ name: string;
2148
+ defaultValue: string;
2149
+ options: SelectionOption[];
2150
+ placeholder?: string;
2151
+ searchable?: boolean;
2152
+ searchPlaceholder?: string;
2153
+ emptyText?: string;
2154
+ disabled?: boolean;
2155
+ }
2156
+ interface SelectionControl extends BaseControl {
2157
+ allowCustomValues?: boolean;
2158
+ type: "selection";
2159
+ defaultValue: string | string[];
2160
+ options: SelectionOption[];
2161
+ multiSelect?: boolean;
2162
+ placeholder?: string;
2163
+ searchable?: boolean;
2164
+ searchPlaceholder?: string;
2165
+ emptyText?: string;
2166
+ group?: SelectionGroup;
2167
+ /** Adds a "clear" row so a single-select can be returned to unset. */
2168
+ clearable?: boolean;
2169
+ /**
2170
+ * Renders the control inert but still as a control — unlike `readOnly`, which
2171
+ * collapses it to plain text and drops the option's icon.
2172
+ */
2173
+ disabled?: boolean;
2174
+ }
2175
+ interface DateControl extends BaseControl {
2176
+ type: "date";
2177
+ defaultValue: string;
2178
+ min?: string;
2179
+ max?: string;
2180
+ }
2181
+ interface ColorControl extends BaseControl {
2182
+ type: "color";
2183
+ defaultValue: string;
2184
+ }
2185
+ interface ParamEditorReadOnlyImage {
2186
+ src: string;
2187
+ alt: string;
2188
+ }
2189
+ type ParamEditorReadOnlyContent = string | number | boolean | null | Array<string | number | boolean | null> | {
2190
+ type: "image";
2191
+ src: string;
2192
+ alt: string;
2193
+ } | {
2194
+ type: "image-gallery";
2195
+ images: ParamEditorReadOnlyImage[];
2196
+ };
2197
+ /** Serializable display-only value rendered by the read-only Param Editor. */
2198
+ interface ReadOnlyControl extends BaseControl {
2199
+ type: "readOnly";
2200
+ value: ParamEditorReadOnlyContent;
2201
+ }
2202
+ /** A reference the host can open (e.g. another resource tab). */
2203
+ type ResourceRefValue = ResourceRef;
2204
+ /**
2205
+ * Serializable resource chip. Clicking it opens `href` externally, opens `ref` via
2206
+ * `onOpenResource`, or copies `copyText` to the clipboard — whichever is set.
2207
+ */
2208
+ interface ResourceOption {
2209
+ id: string;
2210
+ name: string;
2211
+ icon?: string;
2212
+ color?: string;
2213
+ description?: string;
2214
+ href?: string;
2215
+ ref?: ResourceRefValue;
2216
+ copyText?: string;
2217
+ }
2218
+ /**
2219
+ * Resource references rendered as tags/chips. View-only by default; set `editable`
2220
+ * to pick from `options` via a dropdown. Value is the selected option id(s), mirroring
2221
+ * {@link SelectionControl}, so it stays JSON-safe across the controls-command boundary.
2222
+ */
2223
+ interface ResourceControl extends BaseControl {
2224
+ type: "resource";
2225
+ defaultValue: string | string[];
2226
+ options: ResourceOption[];
2227
+ multiSelect?: boolean;
2228
+ editable?: boolean;
2229
+ placeholder?: string;
2230
+ emptyText?: string;
2231
+ }
2232
+ type RangeValue = [number, number];
2233
+ /** Two-handle numeric range control. Values normalize to ordered `[start, end]`. */
2234
+ interface RangeControl extends BaseControl {
2235
+ type: "range";
2236
+ defaultValue: RangeValue;
2237
+ min: number;
2238
+ max: number;
2239
+ step?: number;
2240
+ unit?: string;
2241
+ markerCount?: number;
2242
+ }
2243
+ interface SegmentedOption {
2244
+ id: string;
2245
+ name: string;
2246
+ icon?: string;
2247
+ indicatorColor?: string;
2248
+ }
2249
+ /** Mutually-exclusive mode control rendered as a segmented button group. */
2250
+ interface SegmentedControl extends BaseControl {
2251
+ type: "segmented";
2252
+ defaultValue: string;
2253
+ options: SegmentedOption[];
2254
+ variant?: "default" | "dots";
2255
+ }
2256
+ interface ActionOption {
2257
+ id: string;
2258
+ name: string;
2259
+ icon?: string;
2260
+ disabled?: boolean;
2261
+ }
2262
+ /** Compact command set rendered as an action button row. */
2263
+ interface ActionsControl extends BaseControl {
2264
+ type: "actions";
2265
+ defaultValue?: string;
2266
+ options: ActionOption[];
2267
+ }
2268
+ type AnchorGridValue = "top-left" | "top" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom" | "bottom-right";
2269
+ /** Nine-point alignment picker. */
2270
+ interface AnchorGridControl extends BaseControl {
2271
+ type: "anchorGrid";
2272
+ defaultValue: AnchorGridValue;
2273
+ }
2274
+ type VectorValue = {
2275
+ x: number;
2276
+ y: number;
2277
+ };
2278
+ /** Paired x/y numeric control. */
2279
+ interface VectorControl extends BaseControl {
2280
+ type: "vector";
2281
+ defaultValue: VectorValue;
2282
+ coordinateMode?: "cartesian" | "screen";
2283
+ xLabel?: string;
2284
+ yLabel?: string;
2285
+ min?: number;
2286
+ max?: number;
2287
+ step?: number;
2288
+ }
2289
+ type ControlParam = NumberControl | BooleanControl | TextControl | MarkdownControl | SelectionControl | DateControl | ColorControl | ReadOnlyControl | ResourceControl | RangeControl | SegmentedControl | ActionsControl | AnchorGridControl | VectorControl;
2290
+ interface ControlGroup {
2291
+ id: string;
2292
+ title: string;
2293
+ description?: string;
2294
+ params: ControlParam[];
2295
+ collapsible?: boolean;
2296
+ defaultCollapsed?: boolean;
2297
+ }
2298
+ type ControlValue = number | string | boolean | null | string[] | RangeValue | VectorValue;
2299
+ type ControlValueMap = Record<string, ControlValue>;
2300
+ //#endregion
2301
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/controls.d.ts
2302
+ type ControlsResourceRef = ResourceRef;
2303
+ interface ControlsQueryParams {
2304
+ renderer: RendererContext;
2305
+ }
2306
+ interface ControlsQueryResult {
2307
+ params?: ControlParam[];
2308
+ groups?: ControlGroup[];
2309
+ values?: ControlValueMap;
2310
+ readOnly?: boolean;
2311
+ }
2312
+ interface ControlsUpdateValueInput {
2313
+ renderer: RendererContext;
2314
+ controlId: string;
2315
+ value: ControlValue;
2316
+ values: ControlValueMap;
2317
+ }
2318
+ interface ControlsApplyInput {
2319
+ renderer: RendererContext;
2320
+ values: ControlValueMap;
2321
+ }
2322
+ interface ControlsResetInput {
2323
+ renderer: RendererContext;
2324
+ controlIds?: string[];
2325
+ }
2326
+ /** A native controls view. Its query supplies serializable fields and their current values. */
2327
+ interface ControlsRendererContribution extends RendererContributionBase {
2328
+ query: RendererCallback<ControlsQueryParams, ControlsQueryResult>;
2329
+ onValueChange?: RendererCallback<ControlsUpdateValueInput, unknown>;
2330
+ onApply?: RendererCallback<ControlsApplyInput, unknown>;
2331
+ onReset?: RendererCallback<ControlsResetInput, unknown>;
2332
+ defaultValues?: ControlValueMap;
2535
2333
  }
2536
2334
  //#endregion
2537
- //#region ../pstdio-api-contracts/src/extension-kernel/types/connections.d.ts
2538
- type ExtensionConnectionMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2539
- interface ExtensionConnectionRequest {
2540
- method: ExtensionConnectionMethod;
2541
- path: string;
2542
- headers?: Record<string, string>;
2543
- body?: JsonValue;
2544
- timeoutMs?: number;
2545
- signal?: AbortSignal;
2335
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/data-table-renderer.d.ts
2336
+ type DataTableRendererResourceRef = ResourceRef;
2337
+ interface DataTableRendererQueryParams {
2338
+ renderer: RendererContext;
2546
2339
  }
2547
- interface ExtensionConnectionResponse<TBody = JsonValue> {
2548
- status: number;
2549
- headers: Record<string, string>;
2550
- body: TBody;
2340
+ interface DataTableRendererThemeColor {
2341
+ light: string;
2342
+ dark: string;
2343
+ foreground?: {
2344
+ light: string;
2345
+ dark: string;
2346
+ };
2551
2347
  }
2552
- type ExtensionConnectionStreamEvent = {
2553
- type: "response";
2554
- status: number;
2555
- headers: Record<string, string>;
2348
+ type DataTableRendererColumnStat = {
2349
+ type: "unique";
2556
2350
  } | {
2557
- type: "data";
2558
- data: Uint8Array;
2351
+ type: "histogram";
2352
+ bins?: number;
2559
2353
  } | {
2560
- type: "end";
2354
+ type: "top-values";
2355
+ limit?: number;
2561
2356
  };
2562
- interface ExtensionConnectionsApi {
2563
- request<TBody = JsonValue>(connectionId: string, input: ExtensionConnectionRequest): Promise<ExtensionConnectionResponse<TBody>>;
2564
- stream(connectionId: string, input: ExtensionConnectionRequest): AsyncIterable<ExtensionConnectionStreamEvent>;
2357
+ type DataTableRendererColumnRenderer = {
2358
+ type: "json";
2359
+ } | {
2360
+ type: "color-scale";
2361
+ stops: Array<{
2362
+ value: number;
2363
+ color: DataTableRendererThemeColor;
2364
+ }>;
2365
+ } | {
2366
+ type: "categorical-color";
2367
+ categories: Array<{
2368
+ value: string | number | boolean | null;
2369
+ color: DataTableRendererThemeColor;
2370
+ }>;
2371
+ };
2372
+ interface DataTableRendererColumn {
2373
+ id: string;
2374
+ label?: Localizable<string>;
2375
+ description?: Localizable<string>;
2376
+ icon?: string;
2377
+ hidden?: boolean;
2378
+ stat?: DataTableRendererColumnStat;
2379
+ renderer?: DataTableRendererColumnRenderer;
2565
2380
  }
2566
- interface ExtensionLoggerApi {
2567
- info(message: string, metadata?: JsonObject): void;
2568
- warn(message: string, metadata?: JsonObject): void;
2569
- error(message: string, metadata?: JsonObject): void;
2381
+ interface DataTableRendererRow {
2382
+ id: string;
2383
+ values: Record<string, JsonValue>;
2384
+ resource?: DataTableRendererResourceRef;
2570
2385
  }
2571
- //#endregion
2572
- //#region ../pstdio-api-contracts/src/session-messages.d.ts
2573
- type SessionMessageRole = "user" | "assistant" | "tool" | "system" | "developer";
2574
- type TextPart = {
2575
- type: "text";
2576
- text: string;
2577
- };
2578
- type ReasoningPart = {
2579
- type: "reasoning";
2580
- text: string;
2581
- };
2582
- type ToolPartActionType = "read" | "write" | "execute" | "network" | "other";
2583
- type ToolPartStatus = "pending" | "running" | "completed" | "failed" | "denied";
2584
- type ToolPart = {
2585
- type: "tool";
2586
- tool: string;
2587
- callId?: string;
2588
- actionType?: ToolPartActionType;
2589
- status?: ToolPartStatus;
2590
- state?: {
2591
- status?: string;
2592
- input?: unknown;
2593
- output?: unknown;
2594
- errorText?: string;
2595
- metadata?: unknown;
2596
- };
2597
- };
2598
- type StepStartPart = {
2599
- type: "step-start";
2600
- snapshot?: string;
2601
- };
2602
- type StepFinishPart = {
2603
- type: "step-finish";
2604
- reason?: string;
2605
- snapshot?: string;
2606
- cost?: number;
2607
- tokens?: unknown;
2608
- };
2609
- type PatchPart = {
2610
- type: "patch";
2611
- hash?: string;
2612
- files?: unknown;
2613
- };
2614
- type FilePart = {
2615
- type: "file";
2616
- fileId?: string;
2617
- mediaType?: string;
2618
- filename?: string;
2619
- size?: number;
2620
- url: string;
2621
- };
2622
- type LoadingPart = {
2623
- type: "loading";
2624
- };
2625
- type ErrorPart = {
2626
- type: "error";
2627
- errorType: "timeout" | "crash" | "permission" | "other";
2628
- message?: string;
2629
- };
2630
- type TokenUsagePart = {
2631
- type: "token_usage";
2632
- inputTokens: number;
2633
- outputTokens: number;
2634
- cacheReadTokens?: number;
2635
- cacheWriteTokens?: number;
2636
- };
2637
- type SessionMessagePart = TextPart | ReasoningPart | ToolPart | StepStartPart | StepFinishPart | PatchPart | FilePart | LoadingPart | ErrorPart | TokenUsagePart;
2638
- type SessionMessage = {
2386
+ interface DataTableRendererQueryResult {
2387
+ rows: DataTableRendererRow[];
2388
+ columns?: DataTableRendererColumn[];
2389
+ }
2390
+ interface DataTableRendererRowAction<TParams extends Struct = Struct> {
2639
2391
  id: string;
2640
- role: SessionMessageRole;
2641
- parts: SessionMessagePart[];
2642
- index?: number;
2643
- createdAt?: number;
2644
- modelId?: string;
2645
- providerId?: string;
2646
- tokens?: {
2647
- input?: number;
2648
- output?: number;
2649
- reasoning?: number;
2650
- cache?: {
2651
- read?: number;
2652
- write?: number;
2653
- };
2654
- };
2655
- };
2392
+ label: Localizable<string>;
2393
+ icon?: string;
2394
+ destructive?: boolean;
2395
+ command: CommandRef<TParams, unknown>;
2396
+ }
2397
+ interface DataTableRendererSelectionAction<TParams extends Struct = Struct> {
2398
+ id: string;
2399
+ label: Localizable<string>;
2400
+ icon?: string;
2401
+ destructive?: boolean;
2402
+ command: CommandRef<TParams, unknown>;
2403
+ }
2404
+ type DataTableRendererRowActivationHandler = RendererCallback<{
2405
+ row: DataTableRendererRow;
2406
+ }, void>;
2407
+ interface DataTableRendererContribution extends RendererContributionBase {
2408
+ toolbarActions?: ViewToolbarAction[];
2409
+ columns?: DataTableRendererColumn[];
2410
+ query: RendererCallback<DataTableRendererQueryParams, DataTableRendererQueryResult>;
2411
+ selectionMode?: "none" | "multiple";
2412
+ selectionActions?: DataTableRendererSelectionAction[];
2413
+ rowActions?: DataTableRendererRowAction[];
2414
+ onRowActivate?: DataTableRendererRowActivationHandler;
2415
+ initialPageSize?: number;
2416
+ pageSizeOptions?: number[];
2417
+ }
2656
2418
  //#endregion
2657
- //#region ../pstdio-api-contracts/src/harness.d.ts
2658
- type JsonPatch = {
2659
- op: "add" | "replace" | "remove";
2660
- path: string;
2661
- value?: unknown;
2662
- };
2663
- type AgentCapability = "SessionFork" | "ContextUsage" | "Approvals" | "SessionReattach";
2664
- type QuestionResponse = {
2665
- answers: string[][];
2666
- };
2667
- type ApprovalRequest = {
2419
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/tree-renderer.d.ts
2420
+ type TreeRendererResourceRef = ResourceRef;
2421
+ interface TreeRendererState {
2422
+ expandedNodeIds: string[];
2423
+ expandedSectionIds: string[];
2424
+ selectedNodeId?: string;
2425
+ }
2426
+ interface TreeRendererQueryParams {
2427
+ renderer: RendererContext;
2428
+ state?: TreeRendererState;
2429
+ filter?: string;
2430
+ }
2431
+ interface TreeRendererChildrenParams extends TreeRendererQueryParams {
2432
+ node: TreeNode;
2433
+ }
2434
+ interface TreeRendererActionParams extends TreeRendererQueryParams {
2435
+ actionId: string;
2436
+ node?: TreeNode;
2437
+ }
2438
+ type TreeNodeTarget = NavigationTarget;
2439
+ interface TreeAction {
2668
2440
  id: string;
2669
- toolName: string;
2670
- toolInput: unknown;
2671
- toolUseId: string;
2672
- };
2673
- type ApprovalResponse = {
2441
+ label?: Localizable<string>;
2442
+ icon?: string;
2443
+ command?: CommandRef<Struct, unknown>;
2444
+ params?: Struct;
2445
+ input?: ParamObjectSchema;
2446
+ submitLabel?: string;
2447
+ when?: string;
2448
+ disabled?: boolean;
2449
+ }
2450
+ interface TreeSectionEmptyState {
2451
+ title: Localizable<string>;
2452
+ description?: Localizable<string>;
2453
+ icon?: string;
2454
+ }
2455
+ type TreeNodeRowVariant = "empty-state";
2456
+ interface TreeNode {
2457
+ id: string;
2458
+ label: Localizable<string>;
2459
+ icon?: string;
2460
+ iconColor?: string;
2461
+ iconTooltip?: string;
2462
+ resource?: TreeRendererResourceRef;
2463
+ target?: TreeNodeTarget;
2464
+ /** Visual row variant for non-data rows such as placeholders. */
2465
+ rowVariant?: TreeNodeRowVariant;
2466
+ actions?: TreeAction[];
2467
+ contextMenuActions?: TreeAction[];
2468
+ collapsible?: boolean;
2469
+ disabled?: boolean;
2470
+ selected?: boolean;
2471
+ children?: TreeNode[];
2472
+ description?: string;
2473
+ contextValue?: string;
2474
+ hiddenByDefault?: boolean;
2475
+ /** Opt in to the tree's hide/show customization menu (header/footer rows). Off by default. */
2476
+ canHide?: boolean;
2477
+ metadata?: JsonObject;
2478
+ }
2479
+ interface TreeViewSection {
2674
2480
  id: string;
2675
- decision: "approve" | "deny" | "timeout";
2676
- };
2677
- /** "activity": the host kills the session when no events arrive for a while; "provider": the provider self-terminates. */
2678
- type TimeoutStrategy = "activity" | "provider";
2679
- type HarnessEventSink = {
2680
- push(patch: JsonPatch): void;
2681
- getMessages(): readonly SessionMessage[];
2682
- };
2683
- type HarnessAttachment = {
2684
- fileId: string;
2685
- fileName: string;
2686
- mimeType: string | null;
2687
- sizeBytes: number;
2688
- localPath: string;
2689
- url: string;
2690
- };
2691
- type HarnessApprovalChannel = {
2692
- requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;
2693
- };
2694
- type HarnessParamValue = string | boolean;
2695
- type HarnessParams = Record<string, HarnessParamValue>;
2696
- type HarnessWorkspaceContext = {
2697
- workspaceId: string;
2698
- executionTarget: WorkspaceExecutionTarget;
2699
- };
2700
- type HarnessExitStatus = "completed" | "failed" | "cancelled" | "disconnected";
2701
- type HarnessExit = {
2702
- status: HarnessExitStatus;
2703
- };
2704
- type HarnessSession = {
2705
- /** Provider-side session id, used to resume/reattach later. */
2706
- agentSessionId?: string;
2707
- /** Settles exactly once; the host keys status transitions and persistence off it. */
2708
- done: Promise<HarnessExit>;
2709
- /** Called by the host on cancel or on its own activity timeout. */
2710
- stop(): void | Promise<void>;
2711
- timeoutStrategy?: TimeoutStrategy;
2712
- /** Observability only. */
2713
- pid?: number;
2714
- };
2715
- type HarnessStartInput = {
2716
- prompt: string;
2717
- /** Host session id (correlation / env injection). */
2718
- sessionId: string;
2719
- cwd?: string;
2720
- workspace?: HarnessWorkspaceContext;
2721
- model?: string | null;
2722
- params?: HarnessParams;
2723
- attachments?: HarnessAttachment[];
2724
- events: HarnessEventSink;
2725
- /** Aborted when the host cancels the request that started or resumed this session. */
2726
- signal?: AbortSignal;
2727
- };
2728
- type HarnessResumeInput = HarnessStartInput & {
2729
- agentSessionId: string;
2730
- /** Index offset so resumed streams align message patches with existing history. */
2731
- messageOffset?: number;
2732
- questionResponse?: QuestionResponse;
2733
- approvals?: HarnessApprovalChannel;
2734
- };
2735
- type HarnessReattachInput = {
2736
- sessionId: string;
2737
- agentSessionId: string;
2738
- cwd?: string;
2739
- workspace?: HarnessWorkspaceContext;
2740
- events: HarnessEventSink;
2741
- /** Aborted when the host stops orphan recovery, including during shutdown. */
2742
- signal?: AbortSignal;
2743
- };
2744
- type HarnessMessagesInput = {
2745
- agentSessionId: string;
2746
- cwd?: string;
2747
- workspace?: HarnessWorkspaceContext;
2748
- };
2749
- type HarnessRecoveryInput = {
2750
- knownMessages: readonly SessionMessage[];
2751
- nativeMessages: readonly SessionMessage[];
2752
- cwd?: string;
2753
- workspace?: HarnessWorkspaceContext;
2754
- };
2755
- type HarnessRecoveryResult = {
2756
- kind: "recovered";
2757
- messages: SessionMessage[];
2758
- } | {
2759
- kind: "conflict";
2760
- category: string;
2761
- };
2481
+ label?: Localizable<string>;
2482
+ actions?: TreeAction[];
2483
+ collapsible?: boolean;
2484
+ emptyState?: TreeSectionEmptyState;
2485
+ nodes: TreeNode[];
2486
+ hiddenByDefault?: boolean;
2487
+ /** Opt in to the tree's hide/show customization menu (a category). Off by default. */
2488
+ canHide?: boolean;
2489
+ }
2490
+ interface TreeRendererContribution extends RendererContributionBase {
2491
+ searchable?: boolean;
2492
+ searchPlaceholder?: Localizable<string>;
2493
+ header?: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
2494
+ body: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
2495
+ children?: RendererCallback<TreeRendererChildrenParams, TreeNode[]>;
2496
+ footer?: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
2497
+ defaultExpandedSectionIds?: string[];
2498
+ defaultExpandedNodeIds?: string[];
2499
+ }
2500
+ type TreeRendererCommandResult = TreeViewSection[] | TreeNode[] | JsonValue;
2762
2501
  //#endregion
2763
- //#region ../pstdio-api-contracts/src/extension-kernel/types/harness.d.ts
2502
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/views.d.ts
2503
+ type NativeViewBody<Kind extends string, Definition> = {
2504
+ readonly kind: Kind;
2505
+ } & Omit<Definition, "title" | "icon" | "resourceKind">;
2506
+ type WebviewViewBody = {
2507
+ readonly kind: "webview";
2508
+ } & WebviewContribution;
2509
+ type TreeViewBody = NativeViewBody<"tree", TreeRendererContribution>;
2510
+ type FileViewBody = NativeViewBody<"file", FileRendererContribution>;
2511
+ type ControlsViewBody = NativeViewBody<"controls", ControlsRendererContribution>;
2512
+ type KanbanViewBody = NativeViewBody<"kanban", KanbanRendererContribution>;
2513
+ type DataTableViewBody = NativeViewBody<"dataTable", DataTableRendererContribution>;
2514
+ type ViewBody = WebviewViewBody | TreeViewBody | FileViewBody | ControlsViewBody | KanbanViewBody | DataTableViewBody;
2515
+ interface ViewContribution extends ContributionDefinition<"view"> {
2516
+ readonly title: Localizable<string>;
2517
+ readonly icon?: string;
2518
+ readonly body: ViewBody;
2519
+ }
2520
+ type NavigationOwnerRef = ModeRef | PageRef;
2521
+ type NavigationTreeSlot = "header" | "content" | "footer";
2522
+ interface NavigationItemContribution extends ContributionDefinition<"navigation-item"> {
2523
+ readonly owner: NavigationOwnerRef;
2524
+ readonly slot?: NavigationTreeSlot;
2525
+ readonly label: Localizable<string>;
2526
+ readonly icon?: string;
2527
+ readonly group?: string;
2528
+ readonly when?: WhenExpression;
2529
+ readonly action: NavigationTarget;
2530
+ }
2531
+ interface NavigationTreeContribution extends ContributionDefinition<"navigation-tree"> {
2532
+ readonly owner: NavigationOwnerRef;
2533
+ readonly slot?: NavigationTreeSlot;
2534
+ readonly view: ViewRef;
2535
+ /** Project-scoped trees read without a selected resource. Defaults to selection. */
2536
+ readonly resourceScope?: "project" | "selection";
2537
+ }
2764
2538
  /**
2765
- * Host context a harness runs against. A structural subset of ExtensionContextBase,
2766
- * so richer host APIs can be passed without a contract change.
2539
+ * Initial presence of a static placement inside its owner scope.
2540
+ * - "fixed": always open while the owner is active; the user cannot close it.
2541
+ * - "open": open when the owner has no saved state; the user may close it.
2542
+ * - "closed": closed until the user opens it (for example through the Add panel).
2543
+ * A saved user choice wins over "open" and "closed" on the next visit.
2767
2544
  */
2768
- interface HarnessContext {
2769
- /** Present when the harness runs on behalf of a project session. */
2770
- projectId?: string;
2771
- extensionId: string;
2772
- /** Extension package name. */
2773
- name: string;
2774
- process: ExtensionProcessApi;
2775
- net: ExtensionNetApi;
2776
- connections: ExtensionConnectionsApi;
2777
- logger: ExtensionLoggerApi;
2778
- state: HarnessStateApi;
2545
+ type PlacementPresence = "fixed" | "open" | "closed";
2546
+ type PlacementItem = {
2547
+ readonly kind: "view";
2548
+ readonly view: ViewRef;
2549
+ readonly presence: PlacementPresence;
2550
+ } | {
2551
+ readonly kind: "binding";
2552
+ readonly binding: ResourceBinding;
2553
+ };
2554
+ type PlacementMountStrategy = "active" | "keep-mounted";
2555
+ interface PlacementTabMenuRow {
2556
+ readonly id: string;
2557
+ readonly label: Localizable<string>;
2558
+ readonly icon?: string;
2559
+ readonly iconColor?: string;
2560
+ readonly selected?: boolean;
2561
+ readonly disabled?: boolean;
2562
+ readonly action?: NavigationTarget;
2779
2563
  }
2780
- interface HarnessStateApi {
2781
- get<T = unknown>(key: string): Promise<T | undefined>;
2782
- set<T = unknown>(key: string, value: T): Promise<void>;
2783
- delete(key: string): Promise<void>;
2564
+ interface PlacementTabMenuGroup {
2565
+ readonly id: string;
2566
+ readonly rows: readonly PlacementTabMenuRow[];
2567
+ }
2568
+ interface PlacementTabSnapshot extends Struct {
2569
+ readonly label?: Localizable<string>;
2570
+ readonly icon?: string;
2571
+ readonly indicator?: {
2572
+ readonly icon: string;
2573
+ readonly color?: string;
2574
+ readonly label?: Localizable<string>;
2575
+ };
2576
+ readonly menu?: readonly PlacementTabMenuGroup[];
2577
+ }
2578
+ interface PlacementTabPresentation {
2579
+ readonly query: RendererCallback<JsonObject, PlacementTabSnapshot>;
2580
+ readonly refreshEvents?: readonly RendererEventReference[];
2581
+ }
2582
+ interface PlacementPresentation {
2583
+ readonly mountStrategy?: PlacementMountStrategy;
2584
+ readonly hiddenByDefault?: boolean;
2585
+ readonly headerBorderBottom?: boolean;
2586
+ readonly tab?: PlacementTabPresentation;
2587
+ }
2588
+ interface PlacementContribution extends ContributionDefinition<"placement">, PlacementPresentation {
2589
+ readonly mode: ModeRef;
2590
+ readonly item: PlacementItem;
2591
+ readonly region: ExtensionPanelRegion;
2592
+ readonly order?: number;
2593
+ readonly movableTo?: readonly ExtensionPanelRegion[];
2594
+ }
2595
+ interface ViewMenuContribution extends ContributionDefinition<"view-menu"> {
2596
+ readonly owner: ViewRef;
2597
+ readonly view: ViewRef;
2598
+ readonly side: "left" | "right";
2599
+ readonly group?: string;
2600
+ readonly placement?: "first" | "default" | "last";
2601
+ readonly hostTreeHeader?: "default" | "none";
2602
+ readonly hostTreeFooter?: "default" | "none";
2603
+ }
2604
+ //#endregion
2605
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/pages.d.ts
2606
+ type PageSlotRole = "primary" | "auxiliary";
2607
+ type PageSlotCardinality = "one" | "many";
2608
+ type PageOpenIntent = "preview" | "pin";
2609
+ type PageSlotRegion = ExtensionPanelRegion;
2610
+ interface PageMainView extends PlacementPresentation {
2611
+ readonly kind: "view";
2612
+ readonly view: ViewRef;
2613
+ readonly cardinality: PageSlotCardinality;
2614
+ }
2615
+ interface PageMainPanels {
2616
+ readonly kind: "panels";
2617
+ readonly empty: ViewRef;
2618
+ }
2619
+ type PageMain = PageMainView | PageMainPanels;
2620
+ /** A page-owned panel. Main presentation and routed context belong to the page. */
2621
+ interface PageSlot extends PlacementPresentation {
2622
+ readonly id: string;
2623
+ readonly region: PageSlotRegion;
2624
+ readonly order?: number;
2625
+ readonly item: PlacementItem;
2626
+ readonly openOn?: "page-resource";
2784
2627
  }
2785
- interface HarnessDetectionResult {
2786
- available: boolean;
2787
- version?: string;
2788
- reason?: string;
2628
+ interface PageSlotRef {
2629
+ readonly kind: "page-slot";
2630
+ readonly page: PageRef;
2631
+ readonly id: string;
2789
2632
  }
2790
- /** Where the harness's agent discovers skills. Paths are relative to the repo (dir) and home (globalDir). */
2791
- interface HarnessSkillsLayout {
2792
- dir: string;
2793
- /** Defaults to `dir` when omitted. */
2794
- globalDir?: string;
2633
+ type PanelRef = PlacementRef | PageSlotRef;
2634
+ interface PageContribution extends ContributionDefinition<"page"> {
2635
+ readonly title: Localizable<string>;
2636
+ readonly icon?: string;
2637
+ readonly path: string;
2638
+ readonly mode: ModeRef;
2639
+ readonly parent?: PageRef;
2640
+ readonly resource?: ResourceConstraint;
2641
+ readonly main: PageMain;
2642
+ readonly slots: readonly PageSlot[];
2643
+ readonly panels: Readonly<Record<string, PageSlotRef>>;
2795
2644
  }
2796
- /** A reattach error is permanent unless the provider explicitly marks it retryable. */
2797
- type RetryableHarnessReattachError = Error & {
2798
- readonly retryable: true;
2645
+ type PlacementOwner = {
2646
+ readonly kind: "shell";
2647
+ readonly placementId: string;
2648
+ } | {
2649
+ readonly kind: "mode";
2650
+ readonly modeId: string;
2651
+ readonly placementId: string;
2652
+ } | {
2653
+ readonly kind: "page";
2654
+ readonly pageId: string;
2655
+ readonly slotId: string;
2799
2656
  };
2800
- type HarnessParamDescriptor = SelectParam | BooleanParam;
2801
- type HarnessParamsSchema = Record<string, HarnessParamDescriptor>;
2802
- /**
2803
- * An agent harness contributed by an extension. The host injects the event sink
2804
- * (and approval channel) and owns the session lifecycle: timeouts, persistence,
2805
- * and status transitions are keyed off the returned HarnessSession.
2806
- */
2807
- interface HarnessProvider extends ContributionDefinition<"harness"> {
2808
- label: Localizable<string>;
2809
- /** Declares skill directories so the host installs project skills for this agent. Absent = no skill setup. */
2810
- skills?: HarnessSkillsLayout;
2811
- /** Discrete run params the host can render, persist as defaults, validate, and pass to start/resume. */
2812
- params?: HarnessParamsSchema;
2813
- /** Defaults to required. Optional harnesses can run against remote workspace execution targets. */
2814
- cwdRequirement?: "required" | "optional";
2815
- capabilities(ctx: HarnessContext): MaybePromise<AgentCapability[]>;
2816
- detect?(ctx: HarnessContext): MaybePromise<HarnessDetectionResult>;
2817
- listModels?(ctx: HarnessContext): MaybePromise<AgentModel[]>;
2818
- start(ctx: HarnessContext, input: HarnessStartInput): MaybePromise<HarnessSession>;
2819
- resume(ctx: HarnessContext, input: HarnessResumeInput): MaybePromise<HarnessSession>;
2820
- /** Re-bind after a host restart. Throw a `RetryableHarnessReattachError` only when another attempt may succeed. */
2821
- reattach?(ctx: HarnessContext, input: HarnessReattachInput): MaybePromise<HarnessSession>;
2822
- getMessages?(ctx: HarnessContext, input: HarnessMessagesInput): MaybePromise<SessionMessage[]>;
2823
- recoverMessages?(ctx: HarnessContext, input: HarnessRecoveryInput): MaybePromise<HarnessRecoveryResult>;
2657
+ type PlacementIdentity = PlacementOwner & {
2658
+ readonly instanceKey: string;
2659
+ };
2660
+ interface PageLocation {
2661
+ readonly page: PageRef;
2662
+ readonly resource?: ResourceRef;
2663
+ readonly section?: FileRendererSectionTarget;
2664
+ readonly parent?: PageLocation;
2824
2665
  }
2825
2666
  //#endregion
2826
2667
  //#region ../pstdio-api-contracts/src/extension-kernel/types/statuses.d.ts
@@ -2858,8 +2699,8 @@ interface StatusBarItemContribution extends ContributionDefinition<"status-bar-i
2858
2699
  }
2859
2700
  //#endregion
2860
2701
  //#region ../pstdio-api-contracts/src/extension-kernel/types/extension.d.ts
2861
- /** Current host extension API version. `engines.pstdio` explicitly lists supported versions, separated by `||`. */
2862
- declare const EXTENSION_API_VERSION = "1.0.0-alpha.14";
2702
+ /** Current host extension API version. `engines.pstdio` declares caret ranges, such as `^0.1.0`. */
2703
+ declare const EXTENSION_API_VERSION = "0.1.0";
2863
2704
  type SchemaParams<TSchema extends ParamObjectSchema | undefined> = TSchema extends ParamObjectSchema ? ParamsOf<TSchema> : Record<string, never>;
2864
2705
  interface WorkspaceProviderRef {
2865
2706
  version: number;
@@ -3408,33 +3249,228 @@ interface ExtensionContextBase<TSettings extends Record<string, unknown> = Recor
3408
3249
  logger: ExtensionLoggerApi;
3409
3250
  settings: ExtensionSettingsApi<TSettings>;
3410
3251
  }
3411
- interface CommandContext<TSettings extends Record<string, unknown> = Record<string, unknown>> extends ExtensionContextBase<TSettings> {
3252
+ interface CommandContext<TSettings extends Record<string, unknown> = Record<string, unknown>> extends ExtensionContextBase<TSettings> {
3253
+ commandId: string;
3254
+ invocationId: string;
3255
+ /** Aborts when the host cancels this command run. Handlers must stop external side effects when it fires. */
3256
+ signal: AbortSignal;
3257
+ invocation: {
3258
+ readonly source?: CommandSource;
3259
+ readonly attachment?: WorkbenchAttachmentInvocationContext;
3260
+ readonly slot?: SlotInvocationContext;
3261
+ readonly metadata?: JsonObject;
3262
+ };
3263
+ resource?: ResourceRef;
3264
+ attachment?: WorkbenchAttachmentInvocationContext;
3265
+ slot?: SlotInvocationContext;
3266
+ }
3267
+ type CommandMiddlewareContext = CommandContext;
3268
+ type CommandMiddlewareHandler<TParams extends Struct = Struct> = (ctx: CommandMiddlewareContext, params: TParams) => MaybePromise<CommandMiddlewareResult<TParams>>;
3269
+ type CommandRunHandler<TParams extends Struct = Struct, TResult = unknown, TSettings extends Record<string, unknown> = Record<string, unknown>> = (ctx: CommandContext<TSettings>, params: TParams) => MaybePromise<TResult>;
3270
+ type RendererCallback<TInput extends Struct = Struct, TResult = unknown, TSettings extends Record<string, unknown> = Record<string, unknown>> = (ctx: ExtensionContextBase<TSettings>, input: TInput & {
3271
+ renderer: RendererContext;
3272
+ }) => MaybePromise<TResult>;
3273
+ interface EventContext extends ExtensionContextBase {
3274
+ eventId: string;
3275
+ deliveryId: string;
3276
+ }
3277
+ type SetupContext = ExtensionContextBase;
3278
+ type MigrationContext = ExtensionContextBase;
3279
+ //#endregion
3280
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/file-renderer.d.ts
3281
+ type FileRendererResourceRef = ResourceRef;
3282
+ interface FileRendererSectionAnchor {
3283
+ /** Stable extension-owned tree node id. */
3284
+ id: string;
3285
+ /** Plain heading text as it appears in the Markdown document. */
3286
+ heading: string;
3287
+ /** Zero-based occurrence when the document repeats the same heading text. */
3288
+ occurrence?: number;
3289
+ }
3290
+ interface FileRendererSectionTarget {
3291
+ /** The document outline used for deep-linking and active-heading sync. */
3292
+ anchors: FileRendererSectionAnchor[];
3293
+ }
3294
+ interface FileRendererLoadParams {
3295
+ renderer: RendererContext;
3296
+ }
3297
+ interface FileRendererLoadResult {
3298
+ fileName?: string;
3299
+ mimeType?: string;
3300
+ content?: string;
3301
+ dataUrl?: string;
3302
+ placeholder?: string;
3303
+ /** Override contribution-level save support for one loaded file. */
3304
+ editable?: boolean;
3305
+ /** Request Monaco for text that automatic dispatch would open as markdown. */
3306
+ textRenderer?: "automatic" | "monaco";
3307
+ /** Represent a deliberate no-file selection without an editable blank document. */
3308
+ emptyState?: {
3309
+ title: string;
3310
+ description?: string;
3311
+ };
3312
+ }
3313
+ interface FileRendererSaveParams {
3314
+ renderer: RendererContext;
3315
+ content: string;
3316
+ }
3317
+ interface FileRendererContribution extends RendererContributionBase {
3318
+ load: RendererCallback<FileRendererLoadParams, FileRendererLoadResult>;
3319
+ save?: RendererCallback<FileRendererSaveParams, unknown>;
3320
+ }
3321
+ //#endregion
3322
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/navigation-target.d.ts
3323
+ interface NavigationTargetPage {
3324
+ kind: "page";
3325
+ page: PageRef;
3326
+ resource?: ResourceRef;
3327
+ section?: FileRendererSectionTarget;
3328
+ open?: PageOpenIntent;
3329
+ parent?: NavigationTargetPage;
3330
+ }
3331
+ interface NavigationTargetPanel {
3332
+ kind: "panel";
3333
+ panel: PanelRef;
3334
+ resource?: ResourceRef;
3335
+ open?: PageOpenIntent;
3336
+ }
3337
+ interface NavigationTargetCommand {
3338
+ kind: "command";
3339
+ target: CommandTarget<JsonObject>;
3340
+ }
3341
+ interface NavigationTargetHref {
3342
+ kind: "href";
3343
+ href: string;
3344
+ }
3345
+ type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
3346
+ interface NavigationTargetCompound {
3347
+ kind: "compound";
3348
+ targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
3349
+ }
3350
+ type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
3351
+ //#endregion
3352
+ //#region ../pstdio-api-contracts/src/extension-kernel/types/commands.d.ts
3353
+ type CommandSource = "cli" | "dashboard" | "api" | "schedule" | "event" | "automation" | "command-panel";
3354
+ interface CommandRef<TParams extends Struct = Struct, TResult = unknown> extends ContributionRef<"command"> {
3355
+ params?: TParams;
3356
+ result?: TResult;
3357
+ }
3358
+ interface CommandTarget<TParams extends Struct = Struct> {
3359
+ command: CommandRef<TParams, unknown>;
3360
+ params?: TParams;
3361
+ }
3362
+ interface SerializedError {
3363
+ name?: string;
3364
+ message: string;
3365
+ stack?: string;
3366
+ cause?: JsonValue;
3367
+ }
3368
+ interface WorkbenchAttachmentInvocationContext {
3369
+ target: WorkbenchAttachmentTarget;
3370
+ mode?: string;
3371
+ projectId?: string;
3372
+ resource?: ResourceRef;
3373
+ }
3374
+ interface CommandInvocation<TParams extends Struct = Struct> {
3375
+ params: TParams;
3376
+ resource?: ResourceRef;
3377
+ attachment?: WorkbenchAttachmentInvocationContext;
3378
+ slot?: SlotInvocationContext;
3379
+ metadata?: JsonObject;
3380
+ }
3381
+ interface CommandContinue {
3382
+ type: "continue";
3383
+ }
3384
+ interface CommandPatchParams<TParams extends Struct = Struct> {
3385
+ type: "patchParams";
3386
+ params: Partial<TParams>;
3387
+ }
3388
+ interface CommandReplaceParams<TParams extends Struct = Struct> {
3389
+ type: "replaceParams";
3390
+ params: TParams;
3391
+ }
3392
+ interface CommandReplaceInvocation<TParams extends Struct = Struct> {
3393
+ type: "replaceInvocation";
3394
+ invocation: CommandInvocation<TParams>;
3395
+ }
3396
+ interface CommandReject {
3397
+ type: "reject";
3398
+ code?: string;
3399
+ reason: string;
3400
+ data?: JsonObject;
3401
+ }
3402
+ type CommandMiddlewareResult<TParams extends Struct = Struct> = void | CommandContinue | CommandPatchParams<TParams> | CommandReplaceParams<TParams> | CommandReplaceInvocation<TParams> | CommandReject;
3403
+ interface CommandNotice {
3404
+ type: "info" | "success" | "warning" | "error";
3405
+ title?: string;
3406
+ message: string;
3407
+ metadata?: JsonObject;
3408
+ }
3409
+ interface CommandDiagnostic {
3410
+ code: string;
3411
+ message: string;
3412
+ severity: "info" | "warning" | "error";
3413
+ extensionId?: string;
3414
+ commandId?: string;
3415
+ metadata?: JsonObject;
3416
+ }
3417
+ type CommandOutcome<TResult = unknown> = {
3418
+ ok: true;
3419
+ status: "success";
3420
+ value: TResult;
3421
+ navigationRequests?: NavigationTarget[];
3422
+ notices?: CommandNotice[];
3423
+ diagnostics?: CommandDiagnostic[];
3424
+ } | {
3425
+ ok: false;
3426
+ status: "rejected";
3427
+ code?: string;
3428
+ reason: string;
3429
+ data?: JsonObject;
3430
+ notices?: CommandNotice[];
3431
+ diagnostics?: CommandDiagnostic[];
3432
+ } | {
3433
+ ok: false;
3434
+ status: "error";
3435
+ code?: string;
3436
+ reason: string;
3437
+ error?: SerializedError;
3438
+ notices?: CommandNotice[];
3439
+ diagnostics?: CommandDiagnostic[];
3440
+ };
3441
+ interface CommandHelpersApi {
3442
+ execute<TParams extends Struct = Struct, TResult = unknown>(command: CommandRef<TParams, TResult>, invocation: CommandInvocation<TParams>): Promise<CommandOutcome<TResult>>;
3443
+ continue(): CommandContinue;
3444
+ patchParams<TParams extends Struct = Struct>(params: Partial<TParams>): CommandPatchParams<TParams>;
3445
+ replaceParams<TParams extends Struct = Struct>(params: TParams): CommandReplaceParams<TParams>;
3446
+ replaceInvocation<TParams extends Struct = Struct>(invocation: CommandInvocation<TParams>): CommandReplaceInvocation<TParams>;
3447
+ reject(input: Omit<CommandReject, "type">): CommandReject;
3448
+ }
3449
+ interface CommandRequestedEvent<TParams extends Struct = Struct> {
3412
3450
  commandId: string;
3413
3451
  invocationId: string;
3414
- /** Aborts when the host cancels this command run. Handlers must stop external side effects when it fires. */
3415
- signal: AbortSignal;
3416
- invocation: {
3417
- readonly source?: CommandSource;
3418
- readonly attachment?: WorkbenchAttachmentInvocationContext;
3419
- readonly slot?: SlotInvocationContext;
3420
- readonly metadata?: JsonObject;
3421
- };
3452
+ source?: CommandSource;
3453
+ params: TParams;
3422
3454
  resource?: ResourceRef;
3423
- attachment?: WorkbenchAttachmentInvocationContext;
3424
- slot?: SlotInvocationContext;
3425
3455
  }
3426
- type CommandMiddlewareContext = CommandContext;
3427
- type CommandMiddlewareHandler<TParams extends Struct = Struct> = (ctx: CommandMiddlewareContext, params: TParams) => MaybePromise<CommandMiddlewareResult<TParams>>;
3428
- type CommandRunHandler<TParams extends Struct = Struct, TResult = unknown, TSettings extends Record<string, unknown> = Record<string, unknown>> = (ctx: CommandContext<TSettings>, params: TParams) => MaybePromise<TResult>;
3429
- type RendererCallback<TInput extends Struct = Struct, TResult = unknown, TSettings extends Record<string, unknown> = Record<string, unknown>> = (ctx: ExtensionContextBase<TSettings>, input: TInput & {
3430
- renderer: RendererContext;
3431
- }) => MaybePromise<TResult>;
3432
- interface EventContext extends ExtensionContextBase {
3433
- eventId: string;
3434
- deliveryId: string;
3456
+ interface CommandStartedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {}
3457
+ interface CommandCompletedEvent<TParams extends Struct = Struct, TResult = unknown> extends CommandStartedEvent<TParams> {
3458
+ result: TResult;
3459
+ elapsedMs: number;
3435
3460
  }
3436
- type SetupContext = ExtensionContextBase;
3437
- type MigrationContext = ExtensionContextBase;
3461
+ interface CommandRejectedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {
3462
+ code?: string;
3463
+ reason: string;
3464
+ data?: JsonObject;
3465
+ }
3466
+ interface CommandFailedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {
3467
+ code?: string;
3468
+ reason: string;
3469
+ error?: SerializedError;
3470
+ elapsedMs: number;
3471
+ }
3472
+ type CommandLifecyclePhase = "requested" | "started" | "completed" | "rejected" | "failed";
3473
+ type CommandLifecycleEventPayload<TPhase extends CommandLifecyclePhase, TParams extends Struct = Struct, TResult = unknown> = TPhase extends "requested" ? CommandRequestedEvent<TParams> : TPhase extends "started" ? CommandStartedEvent<TParams> : TPhase extends "completed" ? CommandCompletedEvent<TParams, TResult> : TPhase extends "rejected" ? CommandRejectedEvent<TParams> : CommandFailedEvent<TParams>;
3438
3474
  //#endregion
3439
3475
  //#region ../pstdio-api-contracts/src/extension-kernel/types/composition.d.ts
3440
3476
  declare const dockedWorkbenchRegions: readonly ["sidenav", "main", "secondary", "side"];
@@ -3460,6 +3496,14 @@ interface ResourceKindDefinition extends ContributionDefinition<"resource-kind">
3460
3496
  readonly label?: Localizable<string>;
3461
3497
  readonly icon?: string;
3462
3498
  readonly menuSlots?: readonly ResourceMenuSlotDefinition[];
3499
+ /**
3500
+ * A command of this extension that returns the current reference for an open
3501
+ * resource, or null. The host runs it with `ctx.resource` set to the open
3502
+ * resource when the page opens and after the extension emits an event, and
3503
+ * shows the returned label, icon, and metadata. Keep metadata the page owns,
3504
+ * such as a selected document, from `ctx.resource`.
3505
+ */
3506
+ readonly resolve?: CommandRef;
3463
3507
  }
3464
3508
  interface ResourceHierarchyProvider extends ContributionDefinition<"resource-hierarchy-provider"> {
3465
3509
  resourceKind: ResourceKindRef;
@@ -4141,6 +4185,7 @@ type RequiredOf<TOptions> = TOptions extends {
4141
4185
  type ParamOptions<TParam extends {
4142
4186
  type: string;
4143
4187
  }> = Omit<TParam, "type">;
4188
+ type SelectionOptions<TOptions> = TOptions extends ParamOption[] ? ParamOption[] : ParamOptionSource;
4144
4189
  /**
4145
4190
  * Builders for typed parameter descriptors. Each builder produces a discriminated
4146
4191
  * `ParamDescriptor` so the runtime and editor only see fields valid for that type.
@@ -4152,14 +4197,22 @@ type ParamOptions<TParam extends {
4152
4197
  * }
4153
4198
  */
4154
4199
  declare const params: {
4200
+ valueOf: (key: string) => {
4201
+ kind: "param-value";
4202
+ key: string;
4203
+ };
4155
4204
  text: <const TOptions extends ParamOptions<TextParam> | undefined = undefined>(options?: TOptions) => TextParam<RequiredOf<TOptions>>;
4156
4205
  longText: <const TOptions extends ParamOptions<LongTextParam> | undefined = undefined>(options?: TOptions) => LongTextParam<RequiredOf<TOptions>>;
4157
4206
  markdown: <const TOptions extends ParamOptions<MarkdownParam> | undefined = undefined>(options?: TOptions) => MarkdownParam<RequiredOf<TOptions>>;
4158
4207
  files: <const TOptions extends ParamOptions<FilesParam> | undefined = undefined>(options?: TOptions) => FilesParam<RequiredOf<TOptions>>;
4159
4208
  number: <const TOptions extends ParamOptions<NumberParam> | undefined = undefined>(options?: TOptions) => NumberParam<RequiredOf<TOptions>>;
4160
4209
  boolean: <const TOptions extends ParamOptions<BooleanParam> | undefined = undefined>(options?: TOptions) => BooleanParam<RequiredOf<TOptions>>;
4161
- select: <const TOptions extends ParamOptions<SelectParam>>(options: TOptions) => SelectParam<RequiredOf<TOptions>>;
4162
- multiSelect: <const TOptions extends ParamOptions<MultiSelectParam>>(options: TOptions) => MultiSelectParam<RequiredOf<TOptions>>;
4210
+ select: <const TOptions extends ParamOptions<SelectParam>>(options: TOptions) => Omit<SelectParam<RequiredOf<TOptions>>, "options"> & {
4211
+ options: SelectionOptions<TOptions["options"]>;
4212
+ };
4213
+ multiSelect: <const TOptions extends ParamOptions<MultiSelectParam>>(options: TOptions) => Omit<MultiSelectParam<RequiredOf<TOptions>>, "options"> & {
4214
+ options: SelectionOptions<TOptions["options"]>;
4215
+ };
4163
4216
  harness: <const TOptions extends ParamOptions<HarnessParam> | undefined = undefined>(options?: TOptions) => HarnessParam<RequiredOf<TOptions>>;
4164
4217
  workspace: <const TOptions extends ParamOptions<WorkspaceParam> | undefined = undefined>(options?: TOptions) => WorkspaceParam<RequiredOf<TOptions>>;
4165
4218
  template: <const TOptions extends Omit<TemplateParam, "type" | "templateType"> & {
@@ -4374,8 +4427,8 @@ declare const automationRunStatusSchema: z.ZodEnum<{
4374
4427
  failed: "failed";
4375
4428
  cancelled: "cancelled";
4376
4429
  running: "running";
4377
- succeeded: "succeeded";
4378
4430
  rejected: "rejected";
4431
+ succeeded: "succeeded";
4379
4432
  }>;
4380
4433
  declare const issueAutomationTokenInputSchema: z.ZodObject<{
4381
4434
  name: z.ZodString;
@@ -4455,8 +4508,8 @@ declare const automationRunSchema: z.ZodObject<{
4455
4508
  failed: "failed";
4456
4509
  cancelled: "cancelled";
4457
4510
  running: "running";
4458
- succeeded: "succeeded";
4459
4511
  rejected: "rejected";
4512
+ succeeded: "succeeded";
4460
4513
  }>;
4461
4514
  createdAt: z.ZodString;
4462
4515
  startedAt: z.ZodNullable<z.ZodString>;
@@ -4495,6 +4548,151 @@ type AutomationRun = z.infer<typeof automationRunSchema>;
4495
4548
  type AutomationRunEvent = z.infer<typeof automationRunEventSchema>;
4496
4549
  type ListAutomationRunEventsResponse = z.infer<typeof listAutomationRunEventsResponseSchema>;
4497
4550
  //#endregion
4551
+ //#region ../pstdio-api-contracts/src/board-views.d.ts
4552
+ declare const boardFieldSchema: z.ZodObject<{
4553
+ id: z.ZodString;
4554
+ label: z.ZodString;
4555
+ kind: z.ZodEnum<{
4556
+ string: "string";
4557
+ number: "number";
4558
+ status: "status";
4559
+ date: "date";
4560
+ enum: "enum";
4561
+ "enum-multi": "enum-multi";
4562
+ user: "user";
4563
+ }>;
4564
+ filterable: z.ZodBoolean;
4565
+ groupable: z.ZodBoolean;
4566
+ sortable: z.ZodBoolean;
4567
+ displayable: z.ZodBoolean;
4568
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
4569
+ value: z.ZodString;
4570
+ label: z.ZodString;
4571
+ }, z.core.$strip>>>;
4572
+ }, z.core.$strip>;
4573
+ declare const boardSummarySchema: z.ZodObject<{
4574
+ id: z.ZodString;
4575
+ title: z.ZodString;
4576
+ extensionId: z.ZodString;
4577
+ fields: z.ZodArray<z.ZodObject<{
4578
+ id: z.ZodString;
4579
+ label: z.ZodString;
4580
+ kind: z.ZodEnum<{
4581
+ string: "string";
4582
+ number: "number";
4583
+ status: "status";
4584
+ date: "date";
4585
+ enum: "enum";
4586
+ "enum-multi": "enum-multi";
4587
+ user: "user";
4588
+ }>;
4589
+ filterable: z.ZodBoolean;
4590
+ groupable: z.ZodBoolean;
4591
+ sortable: z.ZodBoolean;
4592
+ displayable: z.ZodBoolean;
4593
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
4594
+ value: z.ZodString;
4595
+ label: z.ZodString;
4596
+ }, z.core.$strip>>>;
4597
+ }, z.core.$strip>>;
4598
+ }, z.core.$strip>;
4599
+ declare const boardViewSchema: z.ZodObject<{
4600
+ id: z.ZodString;
4601
+ boardId: z.ZodString;
4602
+ title: z.ZodString;
4603
+ settings: z.ZodObject<{
4604
+ viewMode: z.ZodEnum<{
4605
+ board: "board";
4606
+ list: "list";
4607
+ }>;
4608
+ columnGrouping: z.ZodString;
4609
+ rowGrouping: z.ZodString;
4610
+ ordering: z.ZodObject<{
4611
+ attributeId: z.ZodString;
4612
+ direction: z.ZodEnum<{
4613
+ asc: "asc";
4614
+ desc: "desc";
4615
+ }>;
4616
+ }, z.core.$strip>;
4617
+ displayProperties: z.ZodArray<z.ZodString>;
4618
+ }, z.core.$strip>;
4619
+ filters: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
4620
+ builtIn: z.ZodBoolean;
4621
+ }, z.core.$strip>;
4622
+ declare const boardViewsSchema: z.ZodObject<{
4623
+ views: z.ZodArray<z.ZodObject<{
4624
+ id: z.ZodString;
4625
+ boardId: z.ZodString;
4626
+ title: z.ZodString;
4627
+ settings: z.ZodObject<{
4628
+ viewMode: z.ZodEnum<{
4629
+ board: "board";
4630
+ list: "list";
4631
+ }>;
4632
+ columnGrouping: z.ZodString;
4633
+ rowGrouping: z.ZodString;
4634
+ ordering: z.ZodObject<{
4635
+ attributeId: z.ZodString;
4636
+ direction: z.ZodEnum<{
4637
+ asc: "asc";
4638
+ desc: "desc";
4639
+ }>;
4640
+ }, z.core.$strip>;
4641
+ displayProperties: z.ZodArray<z.ZodString>;
4642
+ }, z.core.$strip>;
4643
+ filters: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
4644
+ builtIn: z.ZodBoolean;
4645
+ }, z.core.$strip>>;
4646
+ defaultViewId: z.ZodString;
4647
+ }, z.core.$strip>;
4648
+ declare const boardViewUpdateSchema: z.ZodObject<{
4649
+ title: z.ZodOptional<z.ZodString>;
4650
+ settings: z.ZodOptional<z.ZodObject<{
4651
+ viewMode: z.ZodOptional<z.ZodEnum<{
4652
+ board: "board";
4653
+ list: "list";
4654
+ }>>;
4655
+ columnGrouping: z.ZodOptional<z.ZodString>;
4656
+ rowGrouping: z.ZodOptional<z.ZodString>;
4657
+ ordering: z.ZodOptional<z.ZodObject<{
4658
+ attributeId: z.ZodString;
4659
+ direction: z.ZodEnum<{
4660
+ asc: "asc";
4661
+ desc: "desc";
4662
+ }>;
4663
+ }, z.core.$strip>>;
4664
+ displayProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
4665
+ }, z.core.$strip>>;
4666
+ filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
4667
+ }, z.core.$strict>;
4668
+ declare const boardViewCreateSchema: z.ZodObject<{
4669
+ settings: z.ZodOptional<z.ZodObject<{
4670
+ viewMode: z.ZodOptional<z.ZodEnum<{
4671
+ board: "board";
4672
+ list: "list";
4673
+ }>>;
4674
+ columnGrouping: z.ZodOptional<z.ZodString>;
4675
+ rowGrouping: z.ZodOptional<z.ZodString>;
4676
+ ordering: z.ZodOptional<z.ZodObject<{
4677
+ attributeId: z.ZodString;
4678
+ direction: z.ZodEnum<{
4679
+ asc: "asc";
4680
+ desc: "desc";
4681
+ }>;
4682
+ }, z.core.$strip>>;
4683
+ displayProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
4684
+ }, z.core.$strip>>;
4685
+ filters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
4686
+ title: z.ZodString;
4687
+ copyFrom: z.ZodOptional<z.ZodString>;
4688
+ }, z.core.$strict>;
4689
+ type BoardSummary = z.infer<typeof boardSummarySchema>;
4690
+ type BoardField = z.infer<typeof boardFieldSchema>;
4691
+ type BoardView = z.infer<typeof boardViewSchema>;
4692
+ type BoardViews = z.infer<typeof boardViewsSchema>;
4693
+ type BoardViewCreate = z.infer<typeof boardViewCreateSchema>;
4694
+ type BoardViewUpdate = z.infer<typeof boardViewUpdateSchema>;
4695
+ //#endregion
4498
4696
  //#region ../pstdio-api-contracts/src/extensions/resource-ref.d.ts
4499
4697
  declare const extensionResourceRefSchema: z.ZodObject<{
4500
4698
  shorthand: z.ZodOptional<z.ZodString>;
@@ -4779,6 +4977,30 @@ declare const workbenchExtensionViewBodySchema: z.ZodDiscriminatedUnion<[z.ZodOb
4779
4977
  id: z.ZodString;
4780
4978
  }, z.core.$strip>;
4781
4979
  }, z.core.$strip>>>;
4980
+ toolbarActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
4981
+ id: z.ZodString;
4982
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
4983
+ $l10n: z.ZodString;
4984
+ default: z.ZodOptional<z.ZodString>;
4985
+ }, z.core.$strip>]>;
4986
+ icon: z.ZodOptional<z.ZodString>;
4987
+ presentation: z.ZodOptional<z.ZodEnum<{
4988
+ secondary: "secondary";
4989
+ primary: "primary";
4990
+ }>>;
4991
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4992
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
4993
+ type: z.ZodString;
4994
+ }, z.core.$catchall<z.ZodUnknown>>>>;
4995
+ submitLabel: z.ZodOptional<z.ZodString>;
4996
+ when: z.ZodOptional<z.ZodString>;
4997
+ disabled: z.ZodOptional<z.ZodBoolean>;
4998
+ command: z.ZodObject<{
4999
+ extensionId: z.ZodString;
5000
+ kind: z.ZodLiteral<"command">;
5001
+ id: z.ZodString;
5002
+ }, z.core.$strip>;
5003
+ }, z.core.$strip>>>;
4782
5004
  }, z.core.$strip>, z.ZodObject<{
4783
5005
  queryHandlerId: z.ZodString;
4784
5006
  refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -4877,6 +5099,30 @@ declare const workbenchExtensionViewBodySchema: z.ZodDiscriminatedUnion<[z.ZodOb
4877
5099
  id: z.ZodString;
4878
5100
  }, z.core.$strip>;
4879
5101
  }, z.core.$strip>>>;
5102
+ toolbarActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
5103
+ id: z.ZodString;
5104
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
5105
+ $l10n: z.ZodString;
5106
+ default: z.ZodOptional<z.ZodString>;
5107
+ }, z.core.$strip>]>;
5108
+ icon: z.ZodOptional<z.ZodString>;
5109
+ presentation: z.ZodOptional<z.ZodEnum<{
5110
+ secondary: "secondary";
5111
+ primary: "primary";
5112
+ }>>;
5113
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5114
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
5115
+ type: z.ZodString;
5116
+ }, z.core.$catchall<z.ZodUnknown>>>>;
5117
+ submitLabel: z.ZodOptional<z.ZodString>;
5118
+ when: z.ZodOptional<z.ZodString>;
5119
+ disabled: z.ZodOptional<z.ZodBoolean>;
5120
+ command: z.ZodObject<{
5121
+ extensionId: z.ZodString;
5122
+ kind: z.ZodLiteral<"command">;
5123
+ id: z.ZodString;
5124
+ }, z.core.$strip>;
5125
+ }, z.core.$strip>>>;
4880
5126
  }, z.core.$strip>], "kind">;
4881
5127
  declare const workbenchExtensionViewRecordSchema: z.ZodObject<{
4882
5128
  id: z.ZodString;
@@ -5134,6 +5380,30 @@ declare const workbenchExtensionViewRecordSchema: z.ZodObject<{
5134
5380
  id: z.ZodString;
5135
5381
  }, z.core.$strip>;
5136
5382
  }, z.core.$strip>>>;
5383
+ toolbarActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
5384
+ id: z.ZodString;
5385
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
5386
+ $l10n: z.ZodString;
5387
+ default: z.ZodOptional<z.ZodString>;
5388
+ }, z.core.$strip>]>;
5389
+ icon: z.ZodOptional<z.ZodString>;
5390
+ presentation: z.ZodOptional<z.ZodEnum<{
5391
+ secondary: "secondary";
5392
+ primary: "primary";
5393
+ }>>;
5394
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5395
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
5396
+ type: z.ZodString;
5397
+ }, z.core.$catchall<z.ZodUnknown>>>>;
5398
+ submitLabel: z.ZodOptional<z.ZodString>;
5399
+ when: z.ZodOptional<z.ZodString>;
5400
+ disabled: z.ZodOptional<z.ZodBoolean>;
5401
+ command: z.ZodObject<{
5402
+ extensionId: z.ZodString;
5403
+ kind: z.ZodLiteral<"command">;
5404
+ id: z.ZodString;
5405
+ }, z.core.$strip>;
5406
+ }, z.core.$strip>>>;
5137
5407
  }, z.core.$strip>, z.ZodObject<{
5138
5408
  queryHandlerId: z.ZodString;
5139
5409
  refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -5232,6 +5502,30 @@ declare const workbenchExtensionViewRecordSchema: z.ZodObject<{
5232
5502
  id: z.ZodString;
5233
5503
  }, z.core.$strip>;
5234
5504
  }, z.core.$strip>>>;
5505
+ toolbarActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
5506
+ id: z.ZodString;
5507
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
5508
+ $l10n: z.ZodString;
5509
+ default: z.ZodOptional<z.ZodString>;
5510
+ }, z.core.$strip>]>;
5511
+ icon: z.ZodOptional<z.ZodString>;
5512
+ presentation: z.ZodOptional<z.ZodEnum<{
5513
+ secondary: "secondary";
5514
+ primary: "primary";
5515
+ }>>;
5516
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5517
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
5518
+ type: z.ZodString;
5519
+ }, z.core.$catchall<z.ZodUnknown>>>>;
5520
+ submitLabel: z.ZodOptional<z.ZodString>;
5521
+ when: z.ZodOptional<z.ZodString>;
5522
+ disabled: z.ZodOptional<z.ZodBoolean>;
5523
+ command: z.ZodObject<{
5524
+ extensionId: z.ZodString;
5525
+ kind: z.ZodLiteral<"command">;
5526
+ id: z.ZodString;
5527
+ }, z.core.$strip>;
5528
+ }, z.core.$strip>>>;
5235
5529
  }, z.core.$strip>], "kind">;
5236
5530
  }, z.core.$strip>;
5237
5531
  declare const workbenchExtensionMetadataSchema: z.ZodObject<{
@@ -5828,6 +6122,30 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
5828
6122
  id: z.ZodString;
5829
6123
  }, z.core.$strip>;
5830
6124
  }, z.core.$strip>>>;
6125
+ toolbarActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
6126
+ id: z.ZodString;
6127
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
6128
+ $l10n: z.ZodString;
6129
+ default: z.ZodOptional<z.ZodString>;
6130
+ }, z.core.$strip>]>;
6131
+ icon: z.ZodOptional<z.ZodString>;
6132
+ presentation: z.ZodOptional<z.ZodEnum<{
6133
+ secondary: "secondary";
6134
+ primary: "primary";
6135
+ }>>;
6136
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6137
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
6138
+ type: z.ZodString;
6139
+ }, z.core.$catchall<z.ZodUnknown>>>>;
6140
+ submitLabel: z.ZodOptional<z.ZodString>;
6141
+ when: z.ZodOptional<z.ZodString>;
6142
+ disabled: z.ZodOptional<z.ZodBoolean>;
6143
+ command: z.ZodObject<{
6144
+ extensionId: z.ZodString;
6145
+ kind: z.ZodLiteral<"command">;
6146
+ id: z.ZodString;
6147
+ }, z.core.$strip>;
6148
+ }, z.core.$strip>>>;
5831
6149
  }, z.core.$strip>, z.ZodObject<{
5832
6150
  queryHandlerId: z.ZodString;
5833
6151
  refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -5926,6 +6244,30 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
5926
6244
  id: z.ZodString;
5927
6245
  }, z.core.$strip>;
5928
6246
  }, z.core.$strip>>>;
6247
+ toolbarActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
6248
+ id: z.ZodString;
6249
+ label: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
6250
+ $l10n: z.ZodString;
6251
+ default: z.ZodOptional<z.ZodString>;
6252
+ }, z.core.$strip>]>;
6253
+ icon: z.ZodOptional<z.ZodString>;
6254
+ presentation: z.ZodOptional<z.ZodEnum<{
6255
+ secondary: "secondary";
6256
+ primary: "primary";
6257
+ }>>;
6258
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6259
+ input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
6260
+ type: z.ZodString;
6261
+ }, z.core.$catchall<z.ZodUnknown>>>>;
6262
+ submitLabel: z.ZodOptional<z.ZodString>;
6263
+ when: z.ZodOptional<z.ZodString>;
6264
+ disabled: z.ZodOptional<z.ZodBoolean>;
6265
+ command: z.ZodObject<{
6266
+ extensionId: z.ZodString;
6267
+ kind: z.ZodLiteral<"command">;
6268
+ id: z.ZodString;
6269
+ }, z.core.$strip>;
6270
+ }, z.core.$strip>>>;
5929
6271
  }, z.core.$strip>], "kind">;
5930
6272
  }, z.core.$strip>>;
5931
6273
  viewMenus: z.ZodArray<z.ZodObject<{
@@ -6106,6 +6448,7 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
6106
6448
  default: z.ZodOptional<z.ZodString>;
6107
6449
  }, z.core.$strip>]>>;
6108
6450
  icon: z.ZodOptional<z.ZodString>;
6451
+ resolveCommand: z.ZodOptional<z.ZodString>;
6109
6452
  menuSlots: z.ZodOptional<z.ZodArray<z.ZodObject<{
6110
6453
  id: z.ZodString;
6111
6454
  placement: z.ZodEnum<{
@@ -7890,8 +8233,8 @@ declare const listWorkspaceActivityResponseSchema: z.ZodObject<{
7890
8233
  source_extension_id: z.ZodNullable<z.ZodString>;
7891
8234
  event_type: z.ZodString;
7892
8235
  actor_type: z.ZodEnum<{
7893
- agent: "agent";
7894
8236
  user: "user";
8237
+ agent: "agent";
7895
8238
  system: "system";
7896
8239
  }>;
7897
8240
  actor_id: z.ZodNullable<z.ZodString>;
@@ -7937,5 +8280,5 @@ declare const workspaceProviderDescriptorSchema: z.ZodObject<{
7937
8280
  }, z.core.$strip>;
7938
8281
  type WorkspaceProviderDescriptor = z.infer<typeof workspaceProviderDescriptorSchema>;
7939
8282
  //#endregion
7940
- export { WorkbenchExtensionMetadata as $, FollowUpInput as $a, ExtensionSettingScope as $c, HarnessParamDescriptor as $i, SelectParam as $l, ConflictPayload as $n, PageContribution as $o, ExtensionPackageFilesApi as $r, DataTableRendererQueryResult as $s, defineExtensionView as $t, ViewHierarchyParent as $u, EnableInstalledExtensionRequest as A, SessionMessage as Aa, RangeValue as Ac, l10n as Ad, HookDefinition as Ai, KanbanRendererResourceRef as Al, defineHook as An, CommandLifecyclePhase as Ao, ResourceHierarchyProvider as Ar, TreeViewBody as As, TerminalHostEvent as At, WebviewPreferencesSetParams as Au, ConfigureExtensionConnectionInput as B, ExtensionConnectionMethod as Ba, TextControl as Bc, WorkspaceProviderCreateInput as Bi, HarnessParam as Bl, historyValueKey as Bn, CommandRequestedEvent as Bo, CommandRunHandler as Br, TreeRendererChildrenParams as Bs, PageUrlDefinition as Bt, FileRendererLoadResult as Bu, ExtensionSettingsPanelRecord as C, QuestionResponse as Ca, ControlValueMap as Cc, ViewRef as Cd, BehaviourContributions as Ci, KanbanRendererColumnAction as Cl, defineTemplateType as Cn, CommandCompletedEvent as Co, workbenchPanels as Cr, PlacementMountStrategy as Cs, ArtifactMountKey as Ct, WebviewKeyboardEventParams as Cu, ExtensionCommandPaletteResourceRecord as D, LoadingPart as Da, ParamEditorReadOnlyContent as Dc, Localizable as Dd, ExtensionDefinition as Di, KanbanRendererFilterState as Dl, defineWorkspaceType as Dn, CommandHelpersApi as Do, DockedWorkbenchRegion as Dr, PlacementTabMenuRow as Ds, TerminalSessionBridge as Dt, WebviewNotificationResolveParams as Du, ExtensionKeybindingRecord as E, FilePart as Ea, NumberControl as Ec, TerminalSessionRequest$1 as Ed, ExtensionConnectionContribution as Ei, KanbanRendererEnumOption as El, defineViewMenu as En, CommandFailedEvent as Eo, workbenchSlots as Er, PlacementTabMenuGroup as Es, TerminalSessionAdapter as Et, WebviewNotificationDismissParams as Eu, ProjectExtensionInstance as F, TextPart as Fa, SegmentedControl as Fc, AgentModel as Fd, ScheduleContribution as Fi, KanbanRendererSettings as Fl, HistoryConflict as Fn, CommandRef as Fo, ArtifactFile as Fr, TreeAction as Fs, commandEvent as Ft, UiSlotKind as Fu, LocalizableString as G, ExtensionLoggerApi as Ga, CliContribution as Gc, WorkspaceProviderState as Gi, MultiSelectParam as Gl, mergeOrderedHistory as Gn, WorkbenchAttachmentInvocationContext as Go, ExtensionBlobRef as Gr, TreeRendererState as Gs, serializePageUrl as Gt, ExtensionResourcesApi as Gu, ListExtensionConnectionsResponse as H, ExtensionConnectionResponse as Ha, VectorValue as Hc, WorkspaceProviderRef as Hi, ListParam as Hl, reconcileMessageHistory as Hn, CommandStartedEvent as Ho, ExtensionActivityApi as Hr, TreeRendererContribution as Hs, isWorkbenchProjectUrl as Ht, FileRendererSaveParams as Hu, UpgradeProjectExtensionResponse as I, TokenUsagePart as Ia, SegmentedOption as Ic, AgentSkillsLayout as Id, ScheduleExpression as Ii, KanbanRendererSortDirection as Il, HistoryProjection as In, CommandReject as Io, ArtifactMount as Ir, TreeNode as Is, QualifiedRef as It, ResourceBinding as Iu, ExtensionMenuContribution as J, SkillFile as Ja, CommandPaletteResourceItem as Jc, StatusBarItemContribution as Ji, ParamObjectSchema as Jl, eventRef as Jn, NavigationTargetCompound as Jo, ExtensionEventsApi as Jr, DataTableRendererColumn as Js, ExtensionViewModule as Jt, RendererInvocationContext as Ju, ExtensionCommandPaletteContribution as K, ExtensionAutomationApi as Ka, CommandPaletteContribution as Kc, WorkspaceTypeProvider as Ki, NumberParam as Kl, defineSlot as Kn, NavigationTarget as Ko, ExtensionBlobsApi as Kr, TreeSectionEmptyState as Ks, serializeWorkbenchPageUrl as Kt, PackageAssetDescriptor as Ku, CommandExecuteRequest as L, ToolPart as La, SelectionControl as Lc, harnessLocalId as Ld, UiContributions as Li, KanbanRendererViewMode as Ll, HistoryRecoveryInput as Ln, CommandRejectedEvent as Lo, CommandContext as Lr, TreeNodeRowVariant as Ls, qualifyRef as Lt, ResourceConstraint as Lu, InstallMarketplaceExtensionResponse as M, SessionMessageRole as Ma, ResourceControl as Mc, supportsExtensionApiVersion as Md, MiddlewareDefinition as Mi, KanbanRendererRowAction as Ml, CommandResponse as Mn, CommandNotice as Mo, ResourceMenuSlotDefinition as Mr, ViewContribution as Ms, TerminalSessionRequest as Mt, SlotInvocationContext as Mu, ListProjectExtensionsResponse as N, StepFinishPart as Na, ResourceOption as Nc, AgentAvailabilityType as Nd, PackageManifest as Ni, KanbanRendererRowActivationHandler as Nl, unwrapCommandOutcome as Nn, CommandOutcome as No, dockedWorkbenchRegions as Nr, ViewMenuContribution as Ns, TerminalSessionResult as Nt, SlotOptions as Nu, WorkbenchExtensionCommandPaletteResourceRecord as O, PatchPart as Oa, ParamEditorReadOnlyImage as Oc, LocalizedString as Od, ExtensionLoadScope as Oi, KanbanRendererQueryParams as Ol, resourceMenuSlotRef as On, CommandInvocation as Oo, ExtensionPanelRegion as Or, PlacementTabPresentation as Os, TerminalSessionExit as Ot, WebviewNotificationShowParams as Ou, MarketplaceExtension as P, StepStartPart as Pa, ResourceRefValue as Pc, AgentInfo as Pd, ProviderContributions as Pi, KanbanRendererSavedView as Pl, SDK_VERSION as Pn, CommandPatchParams as Po, extensionPanelRegions as Pr, WebviewViewBody as Ps, resourceKey as Pt, SlotRef as Pu, WorkbenchExtensionHarnessRecord as Q, CreateSessionInput as Qa, ExtensionSettingProperty as Qc, HarnessDetectionResult as Qi, ResourceParam as Ql, CommitPayload as Qn, NavigationTargetPanel as Qo, ExtensionNotifyApi as Qr, DataTableRendererQueryParams as Qs, WebviewFilesClient as Qt, ResourceRole as Qu, CommandExecuteResponse as R, ToolPartActionType as Ra, SelectionGroup as Rc, ListActivityResponse as Rd, WorkspaceCapabilities as Ri, BooleanParam as Rl, HistoryRecoveryResult as Rn, CommandReplaceInvocation as Ro, CommandMiddlewareContext as Rr, TreeNodeTarget as Rs, params as Rt, FileRendererContribution as Ru, ExtensionSettingValueRecord as S, JsonPatch as Sa, ControlValue as Sc, ThemeRef as Sd, AssetContributions as Si, KanbanRendererBoardColumnConfig as Sl, defineTemplate as Sn, UpdateNotificationInput as So, workbenchPanelDefinitions as Sr, PlacementItem as Ss, WebviewExtensionEvent as St, WebviewHostCapabilityResults as Su, UpdateExtensionSettingRequest as T, ErrorPart as Ta, MarkdownControl as Tc, TerminalSessionHandle as Td, EXTENSION_API_VERSION as Ti, KanbanRendererCreateRowContribution as Tl, defineView as Tn, CommandDiagnostic as To, workbenchResourceKinds as Tr, PlacementPresentation as Ts, artifactsRead as Tt, WebviewNotificationActionParams as Tu, ExtensionDiagnostic as U, ExtensionConnectionStreamEvent as Ua, ActivityItemContribution as Uc, WorkspaceProviderResolveInput as Ui, LongTextParam as Ul, splitHistoryTurns as Un, CommandTarget as Uo, ExtensionArtifactApi as Ur, TreeRendererQueryParams as Us, parsePageUrl as Ut, FileRendererSectionAnchor as Uu, ExtensionConnectionRecord as V, ExtensionConnectionRequest as Va, VectorControl as Vc, WorkspaceProviderMutationInput as Vi, JsonParam as Vl, mergeHistoryMetadata as Vn, CommandSource as Vo, EventContext as Vr, TreeRendererCommandResult as Vs, ParsedWorkbenchPageUrl as Vt, FileRendererResourceRef as Vu, ExtensionRecord as W, ExtensionConnectionsApi as Wa, ArtifactMountContribution as Wc, WorkspaceProviderResult as Wi, MarkdownParam as Wl, submittedPrompt as Wn, SerializedError as Wo, ExtensionBlobInput as Wr, TreeRendererResourceRef as Ws, parseWorkbenchPageUrl as Wt, FileRendererSectionTarget as Wu, ListExtensionAppearanceResponse as X, UpdateSkillInput as Xa, CommandPaletteResourceQueryResult as Xc, WorkflowStatus as Xi, ParamValue as Xl, isNavigationTarget as Xn, NavigationTargetItem as Xo, ExtensionHarnessInput as Xr, DataTableRendererColumnStat as Xs, ExtensionViewRenderContext as Xt, ResourceRef as Xu, WorkbenchExtensionAutomationRecord as Y, SkillWithContent as Ya, CommandPaletteResourceQueryParams as Yc, StatusContribution as Yi, ParamType as Yl, packageAsset as Yn, NavigationTargetHref as Yo, ExtensionFilesApi as Yr, DataTableRendererColumnRenderer as Ys, ExtensionViewRender as Yt, ResourceAnchor as Yu, ListExtensionCommandsResponse as Z, ApprovalInput as Za, CommandPaletteResourceTarget as Zc, HarnessContext as Zi, ParamsOf as Zl, qualifyNavigationTarget as Zn, NavigationTargetPage as Zo, ExtensionNetApi as Zr, DataTableRendererContribution as Zs, PropsStore as Zt, ResourceRemovedEvent as Zu, CreateProjectInput as _, HarnessRecoveryInput as _a, BaseControl as _c, ResourceKindRef as _d, CreateExtensionWorkspaceInput as _i, WhenExpression as _l, defineSettingsPanel as _n, NotificationActorType as _o, localContributionIdPattern as _r, NavigationItemContribution as _s, WebviewCommandsClient as _t, WebviewFilesListParams as _u, RemoveWorktreeResponse as a, AgentCapability as aa, DataTableRendererThemeColor as ac, JsonPrimitive as ad, ExtensionSkillsApi as ai, KeybindingContribution as al, defineConnection as an, Session as ao, WorktreeRemovedPayload as ar, PageSlot as as, AutomationRunStatus as at, WEBVIEW_HOST_CAPABILITIES as au, FileRecord as b, HarnessSession as ba, ControlGroup as bc, StatusBarSlotRef as bd, ExtensionWorkspaceProvider as bi, KanbanRendererAttributeDisplay as bl, defineStatusBarItem as bn, NotificationPriority as bo, workbenchPageDefinitions as br, NavigationTreeSlot as bs, EXTENSION_EVENTS_SCOPE as bt, WebviewHostCapabilityParams as bu, WorkspaceFileContent as c, HarnessApprovalChannel as ca, ControlsQueryResult as cc, Struct as cd, ExtensionTerminalApi as ci, ModeRegionSettings as cl, defineKeybinding as cn, SessionConversationResponse as co, projectSlots as cr, PageSlotRegion as cs, IssueAutomationTokenInput as ct, WebviewArtifactFile as cu, WorkspaceListItem as d, HarnessExit as da, ControlsResourceRef as dc, ContributionInput as dd, ProcessRunResult as di, SkillContribution as dl, defineNavigationTree as dn, SessionStatus as do, viewDataEvents as dr, PlacementIdentity as ds, ListAutomationTokensResponse as dt, WebviewCommandsExecuteParams as du, HarnessParamsSchema as ea, DataTableRendererResourceRef as ec, RendererContributionBase as ed, ExtensionProcessApi as ei, ExtensionSettingValueForType as el, GuestHost as en, FollowUpResponse as eo, MergePayload as er, PageLocation as es, WorkbenchExtensionViewBody as et, TemplateParam as eu, WorkspaceProviderDescriptor as f, HarnessExitStatus as fa, ControlsUpdateValueInput as fc, ContributionKind as fd, RendererCallback as fi, TemplateContribution as fl, definePage as fn, CreateNotificationInput as fo, workspaceEvents as fr, PlacementOwner as fs, projectPrefix as ft, WebviewDeclarableCapability as fu, sessionAttachmentMimeTypesByExtension as g, HarnessReattachInput as ga, AnchorGridValue as gc, PlacementRef as gd, WorkspaceSyncFile as gi, WebviewContribution as gl, defineSchedule as gn, NotificationAction as go, localContributionIdGrammar as gr, KanbanViewBody as gs, WebviewClientOptions as gt, WebviewFilesDeleteParams as gu, UpdateSettingsInput as h, HarnessParams as ha, AnchorGridControl as hc, PageRef as hd, WorkspaceFilesMount as hi, ThemeMode as hl, defineResourceKind as hn, Notification as ho, isValidLocalContributionId as hr, FileViewBody as hs, WebviewClient as ht, WebviewFileScope as hu, ListWorkspaceFilesInput as i, RetryableHarnessReattachError as ia, DataTableRendererSelectionAction as ic, JsonObject as id, ExtensionSettingsApi as ii, KeybindingChord as il, defineCommandPaletteResource as in, ResolveSessionIdResponse as io, WorkspaceType as ir, PageOpenIntent as is, AutomationRunEvent as it, WEBVIEW_DECLARABLE_CAPABILITIES as iu, EnableInstalledExtensionResponse as j, SessionMessagePart as ja, ReadOnlyControl as jc, parseExtensionApiVersions as jd, LocalExtensionSource as ji, KanbanRendererRow as jl, defineMiddleware as jn, CommandMiddlewareResult as jo, ResourceKindDefinition as jr, ViewBody as js, TerminalSessionOperation as jt, WebviewScopedDeclarableCapability as ju, AddLocalExtensionFolderResponse as k, ReasoningPart as ka, RangeControl as kc, isLocalizedString as kd, ExtensionSourceKind as ki, KanbanRendererQueryResult as kl, defineCommand as kn, CommandLifecycleEventPayload as ko, RegionSize as kr, PlacementTabSnapshot as ks, createTerminalSessionBridge as kt, WebviewPreferencesGetParams as ku, WorkspaceFileEntry as l, HarnessAttachment as la, ControlsRendererContribution as lc, ConnectionRef as ld, MigrationContext as li, SettingsPanelContribution as ll, defineMode as ln, SessionConversationSources as lo, sessionEvents as lr, PageSlotRole as ls, IssueAutomationTokenResponse as lt, WebviewArtifactsReadParams as lu, Settings as m, HarnessParamValue as ma, ActionsControl as mc, ModeRef as md, StorageScope as mi, ThemeContribution as ml, defineResourceHierarchyProvider as mn, ListNotificationsResponse as mo, worktreeEvents as mr, DataTableViewBody as ms, WebviewArtifactsClient as mt, WebviewExtensionSettingSetParams as mu, ListWorkspaceActivityInput as n, HarnessSkillsLayout as na, DataTableRendererRowAction as nc, EventDeliveryResult as nd, ExtensionSessionResource as ni, ExtensionSettingsContribution as nl, defineActivityItem as nn, ListSessionActivityResponse as no, SessionLifecyclePayload as nr, PageMainPanels as ns, AutomationRun as nt, WorkspaceParam as nu, RenameWorkspaceInput as o, ApprovalRequest as oa, ControlsApplyInput as oc, JsonValue as od, ExtensionStorageApi as oi, MenuContribution as ol, defineFileIconTheme as on, SessionAttachment as oo, gitEvents as or, PageSlotCardinality as os, AutomationTokenRecord as ot, WEBVIEW_HOST_CAPABILITY_VERSION as ou, WriteWorkspaceFileInput as p, HarnessMessagesInput as pa, ActionOption as pc, ContributionRef as pd, SetupContext as pi, TemplateTypeContribution as pl, definePlacement as pn, ListNotificationsQuery as po, workspaceSlots as pr, ControlsViewBody as ps, matchesResourceWhen as pt, WebviewExtensionSettingKeyParams as pu, ExtensionCommandRecord as q, Skill as qa, CommandPaletteResourceContribution as qc, StatusActionDefinition as qi, ParamDescriptor as ql, commandRef as qn, NavigationTargetCommand as qo, ExtensionContextBase as qr, TreeViewSection as qs, resolveEventReferenceId as qt, RendererContext as qu, ListWorkspaceActivityResponse as r, HarnessStateApi as ra, DataTableRendererRowActivationHandler as rc, EventRef as rd, ExtensionSessionsApi as ri, FileIconThemeContribution as rl, defineArtifactMount as rn, ResolveSessionIdInput as ro, WorkspaceProvisionPayload as rr, PageMainView as rs, AutomationRunError as rt, ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES as ru, Workspace as s, ApprovalResponse as sa, ControlsQueryParams as sc, MaybePromise as sd, ExtensionStorageCollectionApi as si, ModeContribution as sl, defineHarness as sn, SessionAttachmentRef as so, projectEvents as sr, PageSlotRef as ss, CreateAutomationRunInput as st, WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES as su, CreateWorkspaceInput as t, HarnessProvider as ta, DataTableRendererRow as tc, RendererEventReference as td, ExtensionProjectContext as ti, ExtensionSettingValueType as tl, defineExtension as tn, ListSessionActivityInput as to, RebasePayload as tr, PageMain as ts, WorkbenchExtensionViewRecord as tt, TextParam as tu, WorkspaceFilesResponse as u, HarnessEventSink as ua, ControlsResetInput as uc, ContributionDefinition as ud, ProcessRunInput as ui, SettingsSectionContribution as ul, defineNavigationItem as un, SessionQueuedMessagesResponse as uo, sessionSlots as ur, PanelRef as us, ListAutomationRunEventsResponse as ut, WebviewCapabilityDeclaration as uu, Project as v, HarnessRecoveryResult as va, BooleanControl as vc, SettingsSectionRef as vd, CreateWorkspaceCommandParams as vi, CollectionBadgeItem as vl, defineSettingsSection as vn, NotificationKind as vo, workbenchModeDefinitions as vr, NavigationOwnerRef as vs, WebviewSettingsClient as vt, WebviewFilesUploadParams as vu, ListExtensionSettingsResponse as w, TimeoutStrategy as wa, DateControl as wc, TerminalEvent as wd, CommandDefinition as wi, KanbanRendererContribution as wl, defineTheme as wn, CommandContinue as wo, workbenchResourceKindDefinitions as wr, PlacementPresence as ws, artifactMountId as wt, WebviewNavigationOpenParams as wu, ExtensionSettingDefinitionRecord as x, HarnessStartInput as xa, ControlParam as xc, StatusRef as xd, ExtensionWorkspacesApi as xi, KanbanRendererAttributeType as xl, defineStatuses as xn, NotificationStatus as xo, workbenchPages as xr, PlacementContribution as xs, WebviewEventsClient as xt, WebviewHostCapabilityResult as xu, UpdateProjectInput as y, HarnessResumeInput as ya, ColorControl as yc, SettingsSlotRef as yd, ExtensionWorkspace as yi, KanbanRendererAttributeDescriptor as yl, defineSkill as yn, NotificationOrigin as yo, workbenchModes as yr, NavigationTreeContribution as ys, createWebviewClient as yt, WebviewHostCapability as yu, DispatchExtensionEventInput as z, ToolPartStatus as za, SelectionOption as zc, ListProjectActivityInput as zd, WorkspaceExecutionTarget as zi, FilesParam as zl, historyMessageKey as zn, CommandReplaceParams as zo, CommandMiddlewareHandler as zr, TreeRendererActionParams as zs, defaultPageResourceCodec as zt, FileRendererLoadParams as zu };
8283
+ export { WorkbenchExtensionMetadata as $, PlacementOwner as $a, KanbanRendererAttributeType as $c, ProcessRunInput as $i, WebviewFilesListParams as $l, commandRef as $n, ControlsUpdateValueInput as $o, CommandRef as $r, HarnessRecoveryResult as $s, resolveEventReferenceId as $t, NotificationActorType as $u, EnableInstalledExtensionRequest as A, WorkspaceProviderMutationInput as Aa, ExtensionSettingProperty as Ac, ResourceKindRef as Ad, EventContext as Ai, ParamType as Al, defineTheme as An, TreeRendererQueryParams as Ao, workbenchResourceKindDefinitions as Ar, ResourceBinding as As, artifactMountId as At, SkillFile as Au, ConfigureExtensionConnectionInput as B, PageContribution as Ba, ModeRegionSettings as Bc, l10n as Bd, ExtensionNetApi as Bi, WEBVIEW_DECLARABLE_CAPABILITIES as Bl, SDK_VERSION as Bn, DataTableRendererQueryResult as Bo, extensionPanelRegions as Br, AgentCapability as Bs, resourceKey as Bt, ResolveSessionIdResponse as Bu, ExtensionSettingsPanelRecord as C, ProviderContributions as Ca, CliContribution as Cc, ContributionDefinition as Cd, FileRendererSectionTarget as Ci, MarkdownParam as Cl, defineSettingsPanel as Cn, TreeNode as Co, localContributionIdPattern as Cr, SegmentedOption as Cs, WebviewCommandsClient as Ct, ExtensionConnectionRequest as Cu, ExtensionCommandPaletteResourceRecord as D, WorkspaceCapabilities as Da, CommandPaletteResourceQueryParams as Dc, ModeRef as Dd, CommandMiddlewareContext as Di, ParamObjectSchema as Dl, defineStatuses as Dn, TreeRendererChildrenParams as Do, workbenchPages as Dr, TextControl as Ds, WebviewEventsClient as Dt, ExtensionLoggerApi as Du, ExtensionKeybindingRecord as E, UiContributions as Ea, CommandPaletteResourceItem as Ec, ContributionRef as Ed, CommandContext as Ei, ParamDescriptor as El, defineStatusBarItem as En, TreeRendererActionParams as Eo, workbenchPageDefinitions as Er, SelectionOption as Es, EXTENSION_EVENTS_SCOPE as Et, ExtensionConnectionsApi as Eu, ProjectExtensionInstance as F, WorkspaceTypeProvider as Fa, FileIconThemeContribution as Fc, ThemeRef as Fd, ExtensionBlobsApi as Fi, SelectParam as Fl, defineCommand as Fn, DataTableRendererColumn as Fo, RegionSize as Fr, HarnessParamsSchema as Fs, createTerminalSessionBridge as Ft, FollowUpInput as Fu, LocalizableString as G, PageOpenIntent as Ga, TemplateTypeContribution as Gc, AgentModel as Gd, ExtensionSessionResource as Gi, WebviewArtifactsReadParams as Gl, historyMessageKey as Gn, DataTableRendererSelectionAction as Go, CommandHelpersApi as Gr, HarnessEventSink as Gs, defaultPageResourceCodec as Gt, SessionConversationSources as Gu, ListExtensionConnectionsResponse as H, PageMain as Ha, SettingsSectionContribution as Hc, supportsExtensionApiVersion as Hd, ExtensionPackageFilesApi as Hi, WEBVIEW_HOST_CAPABILITY_VERSION as Hl, HistoryProjection as Hn, DataTableRendererRow as Ho, CommandContinue as Hr, ApprovalResponse as Hs, QualifiedRef as Ht, SessionAttachment as Hu, UpgradeProjectExtensionResponse as I, StatusActionDefinition as Ia, KeybindingChord as Ic, ViewRef as Id, ExtensionContextBase as Ii, TemplateParam as Il, defineHook as In, DataTableRendererColumnRenderer as Io, ResourceHierarchyProvider as Ir, HarnessProvider as Is, TerminalHostEvent as It, FollowUpResponse as Iu, ExtensionMenuContribution as J, PageSlotRef as Ja, WebviewContribution as Jc, ListActivityResponse as Jd, ExtensionSkillsApi as Ji, WebviewDeclarableCapability as Jl, reconcileMessageHistory as Jn, ControlsQueryParams as Jo, CommandLifecyclePhase as Jr, HarnessMessagesInput as Js, isWorkbenchProjectUrl as Jt, CreateNotificationInput as Ju, ExtensionCommandPaletteContribution as K, PageSlot as Ka, ThemeContribution as Kc, AgentSkillsLayout as Kd, ExtensionSessionsApi as Ki, WebviewCapabilityDeclaration as Kl, historyValueKey as Kn, DataTableRendererThemeColor as Ko, CommandInvocation as Kr, HarnessExit as Ks, PageUrlDefinition as Kt, SessionQueuedMessagesResponse as Ku, CommandExecuteRequest as L, StatusBarItemContribution as La, KeybindingContribution as Lc, Localizable as Ld, ExtensionEventsApi as Li, TextParam as Ll, defineMiddleware as Ln, DataTableRendererColumnStat as Lo, ResourceKindDefinition as Lr, HarnessSkillsLayout as Ls, TerminalSessionOperation as Lt, ListSessionActivityInput as Lu, InstallMarketplaceExtensionResponse as M, WorkspaceProviderResolveInput as Ma, ExtensionSettingValueForType as Mc, SettingsSlotRef as Md, ExtensionArtifactApi as Mi, ParamValueRef as Ml, defineViewMenu as Mn, TreeRendererState as Mo, workbenchSlots as Mr, HarnessContext as Ms, TerminalSessionAdapter as Mt, UpdateSkillInput as Mu, ListProjectExtensionsResponse as N, WorkspaceProviderResult as Na, ExtensionSettingValueType as Nc, StatusBarSlotRef as Nd, ExtensionBlobInput as Ni, ParamsOf as Nl, defineWorkspaceType as Nn, TreeSectionEmptyState as No, DockedWorkbenchRegion as Nr, HarnessDetectionResult as Ns, TerminalSessionBridge as Nt, ApprovalInput as Nu, WorkbenchExtensionCommandPaletteResourceRecord as O, WorkspaceExecutionTarget as Oa, CommandPaletteResourceQueryResult as Oc, PageRef as Od, CommandMiddlewareHandler as Oi, ParamOption as Ol, defineTemplate as On, TreeRendererCommandResult as Oo, workbenchPanelDefinitions as Or, VectorControl as Os, WebviewExtensionEvent as Ot, ExtensionAutomationApi as Ou, MarketplaceExtension as P, WorkspaceProviderState as Pa, ExtensionSettingsContribution as Pc, StatusRef as Pd, ExtensionBlobRef as Pi, ResourceParam as Pl, resourceMenuSlotRef as Pn, TreeViewSection as Po, ExtensionPanelRegion as Pr, HarnessParamDescriptor as Ps, TerminalSessionExit as Pt, CreateSessionInput as Pu, WorkbenchExtensionHarnessRecord as Q, PlacementIdentity as Qa, KanbanRendererAttributeDisplay as Qc, MigrationContext as Qi, WebviewFilesDeleteParams as Ql, defineSlot as Qn, ControlsResourceRef as Qo, CommandPatchParams as Qr, HarnessRecoveryInput as Qs, serializeWorkbenchPageUrl as Qt, NotificationAction as Qu, CommandExecuteResponse as R, StatusContribution as Ra, MenuContribution as Rc, LocalizedString as Rd, ExtensionFilesApi as Ri, WorkspaceParam as Rl, CommandResponse as Rn, DataTableRendererContribution as Ro, ResourceMenuSlotDefinition as Rr, HarnessStateApi as Rs, TerminalSessionRequest as Rt, ListSessionActivityResponse as Ru, ExtensionSettingValueRecord as S, PackageManifest as Sa, ArtifactMountContribution as Sc, ConnectionRef as Sd, FileRendererSectionAnchor as Si, LongTextParam as Sl, defineSchedule as Sn, TreeAction as So, localContributionIdGrammar as Sr, SegmentedControl as Ss, WebviewClientOptions as St, ExtensionConnectionMethod as Su, UpdateExtensionSettingRequest as T, ScheduleExpression as Ta, CommandPaletteResourceContribution as Tc, ContributionKind as Td, ArtifactMount as Ti, NumberParam as Tl, defineSkill as Tn, TreeNodeTarget as To, workbenchModes as Tr, SelectionGroup as Ts, createWebviewClient as Tt, ExtensionConnectionStreamEvent as Tu, ExtensionDiagnostic as U, PageMainPanels as Ua, SkillContribution as Uc, AgentAvailabilityType as Ud, ExtensionProcessApi as Ui, WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES as Ul, HistoryRecoveryInput as Un, DataTableRendererRowAction as Uo, CommandDiagnostic as Ur, HarnessApprovalChannel as Us, qualifyRef as Ut, SessionAttachmentRef as Uu, ExtensionConnectionRecord as V, PageLocation as Va, SettingsPanelContribution as Vc, parseExtensionApiDeclaration as Vd, ExtensionNotifyApi as Vi, WEBVIEW_HOST_CAPABILITIES as Vl, HistoryConflict as Vn, DataTableRendererResourceRef as Vo, CommandCompletedEvent as Vr, ApprovalRequest as Vs, commandEvent as Vt, Session as Vu, ExtensionRecord as W, PageMainView as Wa, TemplateContribution as Wc, AgentInfo as Wd, ExtensionProjectContext as Wi, WebviewArtifactFile as Wl, HistoryRecoveryResult as Wn, DataTableRendererRowActivationHandler as Wo, CommandFailedEvent as Wr, HarnessAttachment as Ws, params as Wt, SessionConversationResponse as Wu, ListExtensionAppearanceResponse as X, PageSlotRole as Xa, CollectionBadgeItem as Xc, ExtensionStorageCollectionApi as Xi, WebviewExtensionSettingSetParams as Xl, submittedPrompt as Xn, ControlsRendererContribution as Xo, CommandNotice as Xr, HarnessParams as Xs, parseWorkbenchPageUrl as Xt, ListNotificationsResponse as Xu, WorkbenchExtensionAutomationRecord as Y, PageSlotRegion as Ya, WhenExpression as Yc, ListProjectActivityInput as Yd, ExtensionStorageApi as Yi, WebviewExtensionSettingKeyParams as Yl, splitHistoryTurns as Yn, ControlsQueryResult as Yo, CommandMiddlewareResult as Yr, HarnessParamValue as Ys, parsePageUrl as Yt, ListNotificationsQuery as Yu, ListExtensionCommandsResponse as Z, PanelRef as Za, KanbanRendererAttributeDescriptor as Zc, ExtensionTerminalApi as Zi, WebviewFileScope as Zl, mergeOrderedHistory as Zn, ControlsResetInput as Zo, CommandOutcome as Zr, HarnessReattachInput as Zs, serializePageUrl as Zt, Notification as Zu, CreateProjectInput as _, ExtensionLoadScope as _a, TokenUsagePart as _c, JsonObject as _d, FileRendererContribution as _i, BooleanParam as _l, defineNavigationTree as _n, TreeViewBody as _o, viewDataEvents as _r, RangeValue as _s, ListAutomationTokensResponse as _t, SlotOptions as _u, RemoveWorktreeResponse as a, WorkspaceSyncFile as aa, TimeoutStrategy as ac, ExtensionResourcesApi as ad, CommandSource as ai, KanbanRendererFilterState as al, defineExtensionView as an, NavigationOwnerRef as ao, ConflictPayload as ar, BooleanControl as as, BoardViewCreate as at, WebviewKeyboardEventParams as au, FileRecord as b, LocalExtensionSource as ba, ToolPartStatus as bc, MaybePromise as bd, FileRendererResourceRef as bi, JsonParam as bl, defineResourceHierarchyProvider as bn, ViewMenuContribution as bo, worktreeEvents as br, ResourceOption as bs, WebviewArtifactsClient as bt, EventDeliveryResult as bu, WorkspaceFileContent as c, ExtensionWorkspace as ca, LoadingPart as cc, RendererInvocationContext as cd, SerializedError as ci, KanbanRendererResourceRef as cl, defineActivityItem as cn, PlacementContribution as co, SessionLifecyclePayload as cr, ControlParam as cs, AutomationRun as ct, WebviewNotificationDismissParams as cu, WorkspaceListItem as d, AssetContributions as da, SessionMessage as dc, ResourceRemovedEvent as dd, NavigationTargetCommand as di, KanbanRendererRowActivationHandler as dl, defineConnection as dn, PlacementPresence as do, WorktreeRemovedPayload as dr, DateControl as ds, AutomationRunStatus as dt, WebviewPreferencesGetParams as du, ProcessRunResult as ea, HarnessResumeInput as ec, NotificationKind as ed, CommandReject as ei, KanbanRendererBoardColumnConfig as el, ExtensionViewModule as en, ControlsViewBody as eo, eventRef as er, ActionOption as es, WorkbenchExtensionViewBody as et, WebviewFilesUploadParams as eu, WorkspaceProviderDescriptor as f, BehaviourContributions as fa, SessionMessagePart as fc, ResourceRole as fd, NavigationTargetCompound as fi, KanbanRendererSavedView as fl, defineFileIconTheme as fn, PlacementPresentation as fo, gitEvents as fr, MarkdownControl as fs, AutomationTokenRecord as ft, WebviewPreferencesSetParams as fu, sessionAttachmentMimeTypesByExtension as g, ExtensionDefinition as ga, TextPart as gc, TerminalSessionRequest$1 as gd, NavigationTargetPanel as gi, ViewToolbarAction as gl, defineNavigationItem as gn, PlacementTabSnapshot as go, sessionSlots as gr, RangeControl as gs, ListAutomationRunEventsResponse as gt, SlotInvocationContext as gu, UpdateSettingsInput as h, ExtensionConnectionContribution as ha, StepStartPart as hc, TerminalSessionHandle as hd, NavigationTargetPage as hi, KanbanRendererViewMode as hl, defineMode as hn, PlacementTabPresentation as ho, sessionEvents as hr, ParamEditorReadOnlyImage as hs, IssueAutomationTokenResponse as ht, RendererEventReference as hu, ListWorkspaceFilesInput as i, WorkspaceFilesMount as ia, QuestionResponse as ic, UpdateNotificationInput as id, CommandRequestedEvent as ii, KanbanRendererEnumOption as il, WebviewFilesClient as in, NavigationItemContribution as io, CommitPayload as ir, BaseControl as is, BoardView as it, WebviewHostCapabilityResults as iu, EnableInstalledExtensionResponse as j, WorkspaceProviderRef as ja, ExtensionSettingScope as jc, SettingsSectionRef as jd, ExtensionActivityApi as ji, ParamValue as jl, defineView as jn, TreeRendererResourceRef as jo, workbenchResourceKinds as jr, ResourceConstraint as js, artifactsRead as jt, SkillWithContent as ju, AddLocalExtensionFolderResponse as k, WorkspaceProviderCreateInput as ka, CommandPaletteResourceTarget as kc, PlacementRef as kd, CommandRunHandler as ki, ParamOptionSource as kl, defineTemplateType as kn, TreeRendererContribution as ko, workbenchPanels as kr, VectorValue as ks, ArtifactMountKey as kt, Skill as ku, WorkspaceFileEntry as l, ExtensionWorkspaceProvider as la, PatchPart as lc, ResourceAnchor as ld, WorkbenchAttachmentInvocationContext as li, KanbanRendererRow as ll, defineArtifactMount as ln, PlacementItem as lo, WorkspaceProvisionPayload as lr, ControlValue as ls, AutomationRunError as lt, WebviewNotificationResolveParams as lu, Settings as m, EXTENSION_API_VERSION as ma, StepFinishPart as mc, TerminalEvent as md, NavigationTargetItem as mi, KanbanRendererSortDirection as ml, defineKeybinding as mn, PlacementTabMenuRow as mo, projectSlots as mr, ParamEditorReadOnlyContent as ms, IssueAutomationTokenInput as mt, RendererContributionBase as mu, ListWorkspaceActivityInput as n, SetupContext as na, HarnessStartInput as nc, NotificationPriority as nd, CommandReplaceInvocation as ni, KanbanRendererContribution as nl, ExtensionViewRenderContext as nn, FileViewBody as no, isNavigationTarget as nr, AnchorGridControl as ns, BoardField as nt, WebviewHostCapabilityParams as nu, RenameWorkspaceInput as o, CreateExtensionWorkspaceInput as oa, ErrorPart as oc, PackageAssetDescriptor as od, CommandStartedEvent as oi, KanbanRendererQueryParams as ol, GuestHost as on, NavigationTreeContribution as oo, MergePayload as or, ColorControl as os, BoardViewUpdate as ot, WebviewNavigationOpenParams as ou, WriteWorkspaceFileInput as p, CommandDefinition as pa, SessionMessageRole as pc, ViewHierarchyParent as pd, NavigationTargetHref as pi, KanbanRendererSettings as pl, defineHarness as pn, PlacementTabMenuGroup as po, projectEvents as pr, NumberControl as ps, CreateAutomationRunInput as pt, WebviewScopedDeclarableCapability as pu, ExtensionCommandRecord as q, PageSlotCardinality as qa, ThemeMode as qc, harnessLocalId as qd, ExtensionSettingsApi as qi, WebviewCommandsExecuteParams as ql, mergeHistoryMetadata as qn, ControlsApplyInput as qo, CommandLifecycleEventPayload as qr, HarnessExitStatus as qs, ParsedWorkbenchPageUrl as qt, SessionStatus as qu, ListWorkspaceActivityResponse as r, StorageScope as ra, JsonPatch as rc, NotificationStatus as rd, CommandReplaceParams as ri, KanbanRendererCreateRowContribution as rl, PropsStore as rn, KanbanViewBody as ro, qualifyNavigationTarget as rr, AnchorGridValue as rs, BoardSummary as rt, WebviewHostCapabilityResult as ru, Workspace as s, CreateWorkspaceCommandParams as sa, FilePart as sc, RendererContext as sd, CommandTarget as si, KanbanRendererQueryResult as sl, defineExtension as sn, NavigationTreeSlot as so, RebasePayload as sr, ControlGroup as ss, BoardViews as st, WebviewNotificationActionParams as su, CreateWorkspaceInput as t, RendererCallback as ta, HarnessSession as tc, NotificationOrigin as td, CommandRejectedEvent as ti, KanbanRendererColumnAction as tl, ExtensionViewRender as tn, DataTableViewBody as to, packageAsset as tr, ActionsControl as ts, WorkbenchExtensionViewRecord as tt, WebviewHostCapability as tu, WorkspaceFilesResponse as u, ExtensionWorkspacesApi as ua, ReasoningPart as uc, ResourceRef as ud, NavigationTarget as ui, KanbanRendererRowAction as ul, defineCommandPaletteResource as un, PlacementMountStrategy as uo, WorkspaceType as ur, ControlValueMap as us, AutomationRunEvent as ut, WebviewNotificationShowParams as uu, Project as v, ExtensionSourceKind as va, ToolPart as vc, JsonPrimitive as vd, FileRendererLoadParams as vi, FilesParam as vl, definePage as vn, ViewBody as vo, workspaceEvents as vr, ReadOnlyControl as vs, projectPrefix as vt, SlotRef as vu, ListExtensionSettingsResponse as w, ScheduleContribution as wa, CommandPaletteContribution as wc, ContributionInput as wd, ArtifactFile as wi, MultiSelectParam as wl, defineSettingsSection as wn, TreeNodeRowVariant as wo, workbenchModeDefinitions as wr, SelectionControl as ws, WebviewSettingsClient as wt, ExtensionConnectionResponse as wu, ExtensionSettingDefinitionRecord as x, MiddlewareDefinition as xa, ActivityItemContribution as xc, Struct as xd, FileRendererSaveParams as xi, ListParam as xl, defineResourceKind as xn, WebviewViewBody as xo, isValidLocalContributionId as xr, ResourceRefValue as xs, WebviewClient as xt, EventRef as xu, UpdateProjectInput as y, HookDefinition as ya, ToolPartActionType as yc, JsonValue as yd, FileRendererLoadResult as yi, HarnessParam as yl, definePlacement as yn, ViewContribution as yo, workspaceSlots as yr, ResourceControl as ys, matchesResourceWhen as yt, UiSlotKind as yu, DispatchExtensionEventInput as z, WorkflowStatus as za, ModeContribution as zc, isLocalizedString as zd, ExtensionHarnessInput as zi, ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES as zl, unwrapCommandOutcome as zn, DataTableRendererQueryParams as zo, dockedWorkbenchRegions as zr, RetryableHarnessReattachError as zs, TerminalSessionResult as zt, ResolveSessionIdInput as zu };
7941
8284
  export {};