@pstdio/sdk 0.37.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.
@@ -18,14 +18,14 @@ declare const listActivityResponseSchema: z.ZodObject<{
18
18
  event_type: z.ZodString;
19
19
  actor_type: z.ZodEnum<{
20
20
  user: "user";
21
- system: "system";
22
21
  agent: "agent";
22
+ system: "system";
23
23
  }>;
24
24
  actor_id: z.ZodNullable<z.ZodString>;
25
25
  source: z.ZodEnum<{
26
26
  hook: "hook";
27
- system: "system";
28
27
  agent: "agent";
28
+ system: "system";
29
29
  ui: "ui";
30
30
  api: "api";
31
31
  }>;
@@ -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,1468 +327,98 @@ 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" | "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 JsonParam<T = unknown, TRequired extends boolean | undefined = boolean | undefined> = ParamBase<T, TRequired> & {
657
- type: "json";
658
- };
659
- type ListParam<TRequired extends boolean | undefined = boolean | undefined> = ParamBase<string[], TRequired> & {
660
- type: "list";
661
- };
662
- 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> | JsonParam<TValue, TRequired> | ListParam<TRequired>;
663
- type ParamObjectSchema = Record<string, ParamDescriptor>;
664
- type ParamValue<TDescriptor extends ParamDescriptor> = TDescriptor extends ParamDescriptor<infer V> ? V : never;
665
- type RequiredParamKeys<TSchema extends ParamObjectSchema> = { [K in keyof TSchema]: TSchema[K] extends {
666
- required: true;
667
- } ? K : never; }[keyof TSchema];
668
- type OptionalParamKeys<TSchema extends ParamObjectSchema> = Exclude<keyof TSchema, RequiredParamKeys<TSchema>>;
669
- type ParamsOf<TSchema extends ParamObjectSchema> = { [K in RequiredParamKeys<TSchema>]: ParamValue<TSchema[K]>; } & { [K in OptionalParamKeys<TSchema>]?: ParamValue<TSchema[K]>; };
670
- //#endregion
671
- //#region ../pstdio-api-contracts/src/extension-kernel/types/kanban-renderer.d.ts
672
- type KanbanRendererViewMode = "board" | "list";
673
- type KanbanRendererSortDirection = "asc" | "desc";
674
- interface KanbanRendererEnumOption {
675
- value: string;
676
- label: Localizable<string>;
677
- color?: string;
678
- icon?: string | null;
679
- }
680
- type KanbanRendererAttributeType = {
681
- kind: "enum";
682
- options: KanbanRendererEnumOption[];
683
- } | {
684
- kind: "enum-multi";
685
- options: KanbanRendererEnumOption[];
686
- } | {
687
- kind: "status";
688
- statuses: StatusRef;
689
- } | {
690
- kind: "string";
691
- } | {
692
- kind: "date";
693
- } | {
694
- kind: "number";
695
- } | {
696
- kind: "user";
697
- };
698
- interface CollectionBadgeItem {
699
- id: string;
700
- label: string;
701
- icon?: string;
702
- resource?: ResourceRef;
703
- }
704
- type KanbanRendererAttributeDisplay = {
705
- kind: "badge-list";
706
- itemsAttributeId: string;
707
- };
708
- interface KanbanRendererAttributeDescriptor {
709
- id: string;
710
- label: Localizable<string>;
711
- type: KanbanRendererAttributeType;
712
- filterable?: boolean;
713
- groupable?: boolean;
714
- sortable?: boolean;
715
- displayable?: boolean;
716
- editable?: boolean;
717
- display?: KanbanRendererAttributeDisplay;
718
- }
719
- interface KanbanRendererSettings {
720
- viewMode: KanbanRendererViewMode;
721
- columnGrouping: string;
722
- rowGrouping: string;
723
- ordering: {
724
- attributeId: string;
725
- direction: KanbanRendererSortDirection;
726
- };
727
- displayProperties: string[];
728
- }
729
- type KanbanRendererFilterState = Record<string, string[]>;
730
- interface KanbanRendererSavedView {
731
- id: string;
732
- title: Localizable<string>;
733
- settings: KanbanRendererSettings;
734
- filters: KanbanRendererFilterState;
735
- isDefault?: boolean;
736
- }
737
- interface KanbanRendererQueryParams {
738
- renderer: RendererContext;
739
- settings: KanbanRendererSettings;
740
- filters: KanbanRendererFilterState;
741
- }
742
- type KanbanRendererResourceRef = ResourceRef;
743
- interface KanbanRendererRow {
744
- id: string;
745
- title: string;
746
- resource?: KanbanRendererResourceRef;
747
- attributes: Record<string, unknown>;
748
- }
749
- interface KanbanRendererColumnAction {
750
- id: string;
751
- label: Localizable<string>;
752
- icon?: string;
753
- }
754
- interface KanbanRendererBoardColumnConfig {
755
- color?: string;
756
- canDragIn?: boolean;
757
- canDragOut?: boolean;
758
- canCreate?: boolean;
759
- actions?: KanbanRendererColumnAction[];
760
- }
761
- interface KanbanRendererQueryResult {
762
- rows: KanbanRendererRow[];
763
- attributes?: KanbanRendererAttributeDescriptor[];
764
- boardColumnConfigs?: Record<string, KanbanRendererBoardColumnConfig>;
765
- }
766
- interface KanbanRendererCreateRowContribution<TParams extends ParamObjectSchema = ParamObjectSchema> {
767
- command: CommandRef<Struct, unknown>;
768
- title?: Localizable<string>;
769
- submitLabel?: Localizable<string>;
770
- columnParam?: string;
771
- params?: TParams;
772
- attributesParam?: string;
773
- attachments?: {
774
- command: CommandRef<Struct, unknown>;
775
- resourceParam: string;
776
- fileParam: string;
777
- };
778
- labels?: {
779
- cancel?: Localizable<string>;
780
- properties?: Localizable<string>;
781
- submitError?: Localizable<string>;
782
- removeFile?: Localizable<string>;
783
- };
784
- }
785
- interface KanbanRendererRowAction<TParams extends Struct = Struct> {
786
- id: string;
787
- label: Localizable<string>;
788
- icon?: string;
789
- command: CommandRef<TParams, unknown>;
790
- destructive?: boolean;
791
- }
792
- type KanbanRendererRowActivationHandler = RendererCallback<{
793
- row: KanbanRendererRow;
794
- }, void>;
795
- interface KanbanRendererContribution extends RendererContributionBase {
796
- attributes?: KanbanRendererAttributeDescriptor[];
797
- query: RendererCallback<KanbanRendererQueryParams, KanbanRendererQueryResult>;
798
- onAttributeChange?: RendererCallback<{
799
- rowId: string;
800
- attributeId: string;
801
- value: unknown;
802
- }, unknown>;
803
- onReorder?: RendererCallback<{
804
- rowId: string;
805
- beforeRowId?: string;
806
- }, unknown>;
807
- onColumnAction?: RendererCallback<{
808
- columnId: string;
809
- actionId: string;
810
- }, unknown>;
811
- createRow?: KanbanRendererCreateRowContribution;
812
- rowActions?: KanbanRendererRowAction[];
813
- onRowActivate?: KanbanRendererRowActivationHandler;
814
- defaultSettings?: Partial<KanbanRendererSettings>;
815
- defaultFilters?: KanbanRendererFilterState;
816
- defaultViews?: KanbanRendererSavedView[];
817
- defaultActiveViewId?: string;
818
- hideToolbar?: boolean;
819
- }
820
- //#endregion
821
- //#region ../pstdio-api-contracts/src/extension-kernel/types/contributions.d.ts
822
- interface CliContribution {
823
- path?: string[];
824
- globalAliases?: string[][];
825
- description?: Localizable<string>;
826
- examples?: string[];
827
- hidden?: boolean;
828
- }
829
- interface WhenExpression {
830
- mode?: ModeRef | readonly ModeRef[];
831
- source?: CommandSource[];
832
- view?: ViewRef | readonly ViewRef[];
833
- resourceType?: readonly ResourceKindRef[];
834
- metadata?: JsonObject;
835
- }
836
- interface MenuContribution<TSlotContext extends Struct = Struct, TParams extends Struct = Struct> {
837
- slot: SlotRef<TSlotContext, "menu">;
838
- label?: Localizable<string>;
839
- group?: string;
840
- placement?: "first" | "default" | "last";
841
- icon?: string;
842
- when?: WhenExpression;
843
- params?: Partial<TParams>;
844
- presentation?: "menu-item" | "button" | "icon-button";
845
- }
846
- interface CommandPaletteContribution<TParams extends Struct = Struct> {
847
- label?: Localizable<string>;
848
- group?: string;
849
- placement?: "first" | "default" | "last";
850
- icon?: string;
851
- when?: WhenExpression;
852
- params?: Partial<TParams>;
853
- }
854
- interface ActivityItemContribution<TParams extends Struct = Struct> extends ContributionDefinition<"activity-item"> {
855
- title: Localizable<string>;
856
- icon: string;
857
- /** Mode ids whose activity rail shows this item. */
858
- modes: readonly ModeRef[];
859
- placement?: "first" | "default" | "last";
860
- command: CommandRef<TParams, unknown>;
861
- params?: Partial<TParams>;
862
- }
863
- interface ModeRegionSettings {
864
- /** Hide the panel header when the mode supplies its own controls. */
865
- readonly showHeader?: boolean;
866
- readonly size?: RegionSize;
867
- /** Allow dragging this region closed. Explicit hide/show is always available. */
868
- readonly collapsible?: boolean;
869
- /** Keep a tab visible when this region has only one visible item. */
870
- readonly alwaysShowTabs?: boolean;
871
- }
872
- interface ModeContribution extends ContributionDefinition<"mode"> {
873
- label: Localizable<string>;
874
- icon?: string;
875
- regions: readonly ExtensionPanelRegion[];
876
- /** Default theme for this mode. An explicit user choice for the mode takes precedence. */
877
- defaultTheme?: ThemeRef;
878
- /** Whether side panels may float while this mode is active. Defaults to visible. */
879
- floatingPanels?: "visible" | "hidden";
880
- /** Replace host chrome with a view, or hide it with false, while the mode is active. */
881
- chrome?: Partial<Record<"nav" | "sidenav" | "activity" | "status", ViewRef | false>>;
882
- /** Region-level layout policy. The mode owns it; placements cannot set it. */
883
- regionSettings?: Readonly<Partial<Record<DockedWorkbenchRegion, ModeRegionSettings>>>;
884
- }
885
- interface WebviewContribution {
886
- entry: PackageAssetDescriptor;
887
- title?: Localizable<string>;
888
- capabilities?: WebviewCapabilityDeclaration[];
889
- }
890
- interface SettingsPanelContribution extends ContributionDefinition<"settings-panel"> {
891
- view: ViewRef;
892
- slot: SettingsSlotRef;
893
- section?: SettingsSectionRef;
894
- }
895
- /** A named group in the settings navigation that an extension's panels can sit under. */
896
- interface SettingsSectionContribution extends ContributionDefinition<"settings-section"> {
897
- title: Localizable<string>;
898
- /** Lower sorts first among sibling sections. */
899
- order?: number;
900
- }
901
- /**
902
- * Command palette resource providers contribute dynamic, searchable palette results
903
- * (e.g. slides in a presentation) backed by a private query callback. The host queries
904
- * matching providers as the user types and refreshes results when a declared event fires.
905
- */
906
- interface CommandPaletteResourceQueryParams {
907
- projectId?: string;
908
- modeId?: string;
909
- activeResource?: ResourceRef;
910
- providerId: string;
911
- query: string;
912
- limit: number;
913
- }
914
- type CommandPaletteResourceTarget = NavigationTarget;
915
- interface CommandPaletteResourceItem {
916
- id: string;
917
- label: string;
918
- description?: string;
919
- icon?: string;
920
- keywords?: string[];
921
- target: CommandPaletteResourceTarget;
922
- }
923
- interface CommandPaletteResourceQueryResult {
924
- items: CommandPaletteResourceItem[];
925
- }
926
- interface CommandPaletteResourceContribution extends ContributionDefinition<"command-palette-resource"> {
927
- title: Localizable<string>;
928
- resourceKind?: ResourceKindRef;
929
- query: RendererCallback<CommandPaletteResourceQueryParams, CommandPaletteResourceQueryResult>;
930
- refreshEvents?: readonly RendererEventReference[];
931
- }
932
- type ExtensionSettingScope = "global" | "project";
933
- type ExtensionSettingValueType = "boolean" | "number" | "string" | "array" | "object";
934
- type ExtensionSettingValueForType<TType extends ExtensionSettingValueType> = TType extends "boolean" ? boolean : TType extends "number" ? number : TType extends "string" ? string : TType extends "array" ? JsonValue[] : JsonObject;
935
- type ExtensionSettingProperty<TType extends ExtensionSettingValueType = ExtensionSettingValueType> = { [TSettingType in TType]: {
936
- type: TSettingType;
937
- scope: ExtensionSettingScope;
938
- default?: ExtensionSettingValueForType<TSettingType>;
939
- enum?: ExtensionSettingValueForType<TSettingType>[];
940
- title?: Localizable<string>;
941
- description?: Localizable<string>;
942
- }; }[TType];
943
- interface ExtensionSettingsContribution<TProperties extends Record<string, ExtensionSettingProperty> = Record<string, ExtensionSettingProperty>> {
944
- properties: TProperties;
945
- }
946
- interface ArtifactMountContribution extends ContributionDefinition<"artifact-mount"> {
947
- /** Relative path under .pstdio/<extension.name>/. */
948
- path: string;
949
- label: Localizable<string>;
950
- }
951
- interface TemplateTypeContribution extends ContributionDefinition<"template-type"> {
952
- label: Localizable<string>;
953
- description?: Localizable<string>;
954
- order?: number;
955
- commands?: {
956
- list: CommandRef;
957
- read: CommandRef;
958
- save: CommandRef;
959
- delete: CommandRef;
960
- };
961
- }
962
- interface TemplateContribution extends ContributionDefinition<"template"> {
963
- title: Localizable<string>;
964
- type: string;
965
- source: PackageAssetDescriptor;
966
- description?: Localizable<string>;
967
- }
968
- interface SkillContribution extends ContributionDefinition<"skill"> {
969
- title: Localizable<string>;
970
- source: PackageAssetDescriptor;
971
- description?: Localizable<string>;
972
- }
973
- type ThemeMode = "light" | "dark";
974
- interface ThemeContribution extends ContributionDefinition<"theme"> {
975
- title: Localizable<string>;
976
- source: PackageAssetDescriptor;
977
- format: "vscode-color-theme";
978
- mode?: ThemeMode;
979
- description?: Localizable<string>;
980
- }
981
- interface FileIconThemeContribution extends ContributionDefinition<"file-icon-theme"> {
982
- title: Localizable<string>;
983
- source: PackageAssetDescriptor;
984
- format: "vscode-file-icon-theme";
985
- description?: Localizable<string>;
986
- }
987
- /**
988
- * Chord string in TanStack Hotkeys syntax (e.g. "mod+shift+p"). `mod` is
989
- * Cmd on macOS and Ctrl elsewhere. Parsing, validation, canonicalization,
990
- * and display labels are all delegated to `@tanstack/hotkeys`.
991
- */
992
- type KeybindingChord = string;
993
- interface KeybindingContribution extends ContributionDefinition<"keybinding"> {
994
- /** Default chord. Used on every platform unless an override is provided. */
995
- key: KeybindingChord;
996
- /** macOS override. */
997
- mac?: KeybindingChord;
998
- /** Linux override. */
999
- linux?: KeybindingChord;
1000
- /** Windows override. */
1001
- win?: KeybindingChord;
1002
- /** Action this chord executes through the shared navigation executor. */
1003
- action: NavigationTarget;
1004
- /** Optional gating predicate. The host evaluates it at dispatch time. */
1005
- when?: WhenExpression;
1006
- }
1007
- //#endregion
1008
- //#region ../pstdio-api-contracts/src/extension-kernel/types/control-declarations.d.ts
1009
- interface BaseControl {
1010
- id: string;
1011
- name: string;
1012
- description?: string;
1013
- /** Locks this one param while the rest of the editor stays editable. */
1014
- readOnly?: boolean;
1015
- }
1016
- interface NumberControl extends BaseControl {
1017
- type: "number";
1018
- defaultValue: number;
1019
- min?: number;
1020
- max?: number;
1021
- step?: number;
1022
- }
1023
- interface BooleanControl extends BaseControl {
1024
- type: "boolean";
1025
- defaultValue: boolean;
1026
- }
1027
- interface TextControl extends BaseControl {
1028
- type: "text";
1029
- defaultValue: string;
1030
- singleLine?: boolean;
1031
- }
1032
- interface MarkdownControl extends BaseControl {
1033
- type: "markdown";
1034
- defaultValue: string;
1035
- placeholder?: string;
1036
- }
1037
- interface SelectionOption {
1038
- id: string;
1039
- name: string;
1040
- icon?: string;
1041
- /** Palette key (e.g. "blue") applied to the option's icon. */
1042
- color?: string;
1043
- description?: string;
1044
- disabled?: boolean;
1045
- }
1046
- /** Parent selector used to swap the option set of a grouped selection. */
1047
- interface SelectionGroup {
1048
- id: string;
1049
- name: string;
1050
- defaultValue: string;
1051
- options: SelectionOption[];
1052
- placeholder?: string;
1053
- searchable?: boolean;
1054
- searchPlaceholder?: string;
1055
- emptyText?: string;
1056
- disabled?: boolean;
1057
- }
1058
- interface SelectionControl extends BaseControl {
1059
- type: "selection";
1060
- defaultValue: string | string[];
1061
- options: SelectionOption[];
1062
- multiSelect?: boolean;
1063
- placeholder?: string;
1064
- searchable?: boolean;
1065
- searchPlaceholder?: string;
1066
- emptyText?: string;
1067
- group?: SelectionGroup;
1068
- /** Adds a "clear" row so a single-select can be returned to unset. */
1069
- clearable?: boolean;
1070
- /**
1071
- * Renders the control inert but still as a control — unlike `readOnly`, which
1072
- * collapses it to plain text and drops the option's icon.
1073
- */
1074
- disabled?: boolean;
1075
- }
1076
- interface DateControl extends BaseControl {
1077
- type: "date";
1078
- defaultValue: string;
1079
- min?: string;
1080
- max?: string;
1081
- }
1082
- interface ColorControl extends BaseControl {
1083
- type: "color";
1084
- defaultValue: string;
1085
- }
1086
- interface ParamEditorReadOnlyImage {
1087
- src: string;
1088
- alt: string;
1089
- }
1090
- type ParamEditorReadOnlyContent = string | number | boolean | null | Array<string | number | boolean | null> | {
1091
- type: "image";
1092
- src: string;
1093
- alt: string;
1094
- } | {
1095
- type: "image-gallery";
1096
- images: ParamEditorReadOnlyImage[];
1097
- };
1098
- /** Serializable display-only value rendered by the read-only Param Editor. */
1099
- interface ReadOnlyControl extends BaseControl {
1100
- type: "readOnly";
1101
- value: ParamEditorReadOnlyContent;
1102
- }
1103
- /** A reference the host can open (e.g. another resource tab). */
1104
- type ResourceRefValue = ResourceRef;
1105
- /**
1106
- * Serializable resource chip. Clicking it opens `href` externally, opens `ref` via
1107
- * `onOpenResource`, or copies `copyText` to the clipboard — whichever is set.
1108
- */
1109
- interface ResourceOption {
1110
- id: string;
1111
- name: string;
1112
- icon?: string;
1113
- color?: string;
1114
- description?: string;
1115
- href?: string;
1116
- ref?: ResourceRefValue;
1117
- copyText?: string;
1118
- }
1119
- /**
1120
- * Resource references rendered as tags/chips. View-only by default; set `editable`
1121
- * to pick from `options` via a dropdown. Value is the selected option id(s), mirroring
1122
- * {@link SelectionControl}, so it stays JSON-safe across the controls-command boundary.
1123
- */
1124
- interface ResourceControl extends BaseControl {
1125
- type: "resource";
1126
- defaultValue: string | string[];
1127
- options: ResourceOption[];
1128
- multiSelect?: boolean;
1129
- editable?: boolean;
1130
- placeholder?: string;
1131
- emptyText?: string;
1132
- }
1133
- type RangeValue = [number, number];
1134
- /** Two-handle numeric range control. Values normalize to ordered `[start, end]`. */
1135
- interface RangeControl extends BaseControl {
1136
- type: "range";
1137
- defaultValue: RangeValue;
1138
- min: number;
1139
- max: number;
1140
- step?: number;
1141
- unit?: string;
1142
- markerCount?: number;
1143
- }
1144
- interface SegmentedOption {
1145
- id: string;
1146
- name: string;
1147
- icon?: string;
1148
- indicatorColor?: string;
1149
- }
1150
- /** Mutually-exclusive mode control rendered as a segmented button group. */
1151
- interface SegmentedControl extends BaseControl {
1152
- type: "segmented";
1153
- defaultValue: string;
1154
- options: SegmentedOption[];
1155
- variant?: "default" | "dots";
1156
- }
1157
- interface ActionOption {
1158
- id: string;
1159
- name: string;
1160
- icon?: string;
1161
- disabled?: boolean;
1162
- }
1163
- /** Compact command set rendered as an action button row. */
1164
- interface ActionsControl extends BaseControl {
1165
- type: "actions";
1166
- defaultValue?: string;
1167
- options: ActionOption[];
1168
- }
1169
- type AnchorGridValue = "top-left" | "top" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom" | "bottom-right";
1170
- /** Nine-point alignment picker. */
1171
- interface AnchorGridControl extends BaseControl {
1172
- type: "anchorGrid";
1173
- defaultValue: AnchorGridValue;
1174
- }
1175
- type VectorValue = {
1176
- x: number;
1177
- y: number;
1178
- };
1179
- /** Paired x/y numeric control. */
1180
- interface VectorControl extends BaseControl {
1181
- type: "vector";
1182
- defaultValue: VectorValue;
1183
- coordinateMode?: "cartesian" | "screen";
1184
- xLabel?: string;
1185
- yLabel?: string;
1186
- min?: number;
1187
- max?: number;
1188
- step?: number;
1189
- }
1190
- type ControlParam = NumberControl | BooleanControl | TextControl | MarkdownControl | SelectionControl | DateControl | ColorControl | ReadOnlyControl | ResourceControl | RangeControl | SegmentedControl | ActionsControl | AnchorGridControl | VectorControl;
1191
- interface ControlGroup {
1192
- id: string;
1193
- title: string;
1194
- description?: string;
1195
- params: ControlParam[];
1196
- collapsible?: boolean;
1197
- defaultCollapsed?: boolean;
1198
- }
1199
- type ControlValue = number | string | boolean | null | string[] | RangeValue | VectorValue;
1200
- type ControlValueMap = Record<string, ControlValue>;
1201
- //#endregion
1202
- //#region ../pstdio-api-contracts/src/extension-kernel/types/controls.d.ts
1203
- type ControlsResourceRef = ResourceRef;
1204
- interface ControlsQueryParams {
1205
- renderer: RendererContext;
1206
- }
1207
- interface ControlsQueryResult {
1208
- params?: ControlParam[];
1209
- groups?: ControlGroup[];
1210
- values?: ControlValueMap;
1211
- readOnly?: boolean;
1212
- }
1213
- interface ControlsUpdateValueInput {
1214
- renderer: RendererContext;
1215
- controlId: string;
1216
- value: ControlValue;
1217
- values: ControlValueMap;
1218
- }
1219
- interface ControlsApplyInput {
1220
- renderer: RendererContext;
1221
- values: ControlValueMap;
1222
- }
1223
- interface ControlsResetInput {
1224
- renderer: RendererContext;
1225
- controlIds?: string[];
1226
- }
1227
- /** A native controls view. Its query supplies serializable fields and their current values. */
1228
- interface ControlsRendererContribution extends RendererContributionBase {
1229
- query: RendererCallback<ControlsQueryParams, ControlsQueryResult>;
1230
- onValueChange?: RendererCallback<ControlsUpdateValueInput, unknown>;
1231
- onApply?: RendererCallback<ControlsApplyInput, unknown>;
1232
- onReset?: RendererCallback<ControlsResetInput, unknown>;
1233
- defaultValues?: ControlValueMap;
1234
- }
1235
- //#endregion
1236
- //#region ../pstdio-api-contracts/src/extension-kernel/types/data-table-renderer.d.ts
1237
- type DataTableRendererResourceRef = ResourceRef;
1238
- interface DataTableRendererQueryParams {
1239
- renderer: RendererContext;
1240
- }
1241
- interface DataTableRendererThemeColor {
1242
- light: string;
1243
- dark: string;
1244
- foreground?: {
1245
- light: string;
1246
- dark: string;
1247
- };
1248
- }
1249
- type DataTableRendererColumnStat = {
1250
- type: "unique";
1251
- } | {
1252
- type: "histogram";
1253
- bins?: number;
1254
- } | {
1255
- type: "top-values";
1256
- limit?: number;
1257
- };
1258
- type DataTableRendererColumnRenderer = {
1259
- type: "json";
1260
- } | {
1261
- type: "color-scale";
1262
- stops: Array<{
1263
- value: number;
1264
- color: DataTableRendererThemeColor;
1265
- }>;
1266
- } | {
1267
- type: "categorical-color";
1268
- categories: Array<{
1269
- value: string | number | boolean | null;
1270
- color: DataTableRendererThemeColor;
1271
- }>;
1272
- };
1273
- interface DataTableRendererColumn {
1274
- id: string;
1275
- label?: Localizable<string>;
1276
- description?: Localizable<string>;
1277
- icon?: string;
1278
- hidden?: boolean;
1279
- stat?: DataTableRendererColumnStat;
1280
- renderer?: DataTableRendererColumnRenderer;
1281
- }
1282
- interface DataTableRendererRow {
1283
- id: string;
1284
- values: Record<string, JsonValue>;
1285
- resource?: DataTableRendererResourceRef;
1286
- }
1287
- interface DataTableRendererQueryResult {
1288
- rows: DataTableRendererRow[];
1289
- columns?: DataTableRendererColumn[];
1290
- }
1291
- interface DataTableRendererRowAction<TParams extends Struct = Struct> {
1292
- id: string;
1293
- label: Localizable<string>;
1294
- icon?: string;
1295
- destructive?: boolean;
1296
- command: CommandRef<TParams, unknown>;
1297
- }
1298
- interface DataTableRendererSelectionAction<TParams extends Struct = Struct> {
1299
- id: string;
1300
- label: Localizable<string>;
1301
- icon?: string;
1302
- destructive?: boolean;
1303
- command: CommandRef<TParams, unknown>;
1304
- }
1305
- type DataTableRendererRowActivationHandler = RendererCallback<{
1306
- row: DataTableRendererRow;
1307
- }, void>;
1308
- interface DataTableRendererContribution extends RendererContributionBase {
1309
- columns?: DataTableRendererColumn[];
1310
- query: RendererCallback<DataTableRendererQueryParams, DataTableRendererQueryResult>;
1311
- selectionMode?: "none" | "multiple";
1312
- selectionActions?: DataTableRendererSelectionAction[];
1313
- rowActions?: DataTableRendererRowAction[];
1314
- onRowActivate?: DataTableRendererRowActivationHandler;
1315
- initialPageSize?: number;
1316
- pageSizeOptions?: number[];
1317
- }
1318
- //#endregion
1319
- //#region ../pstdio-api-contracts/src/extension-kernel/types/tree-renderer.d.ts
1320
- type TreeRendererResourceRef = ResourceRef;
1321
- interface TreeRendererState {
1322
- expandedNodeIds: string[];
1323
- expandedSectionIds: string[];
1324
- selectedNodeId?: string;
1325
- }
1326
- interface TreeRendererQueryParams {
1327
- renderer: RendererContext;
1328
- state?: TreeRendererState;
1329
- filter?: string;
1330
- }
1331
- interface TreeRendererChildrenParams extends TreeRendererQueryParams {
1332
- node: TreeNode;
1333
- }
1334
- interface TreeRendererActionParams extends TreeRendererQueryParams {
1335
- actionId: string;
1336
- node?: TreeNode;
1337
- }
1338
- type TreeNodeTarget = NavigationTarget;
1339
- interface TreeAction {
1340
- id: string;
1341
- label?: Localizable<string>;
1342
- icon?: string;
1343
- command?: CommandRef<Struct, unknown>;
1344
- params?: Struct;
1345
- input?: ParamObjectSchema;
1346
- submitLabel?: string;
1347
- when?: string;
1348
- disabled?: boolean;
1349
- }
1350
- interface TreeSectionEmptyState {
1351
- title: Localizable<string>;
1352
- description?: Localizable<string>;
1353
- icon?: string;
1354
- }
1355
- type TreeNodeRowVariant = "empty-state";
1356
- interface TreeNode {
1357
- id: string;
1358
- label: Localizable<string>;
1359
- icon?: string;
1360
- iconColor?: string;
1361
- iconTooltip?: string;
1362
- resource?: TreeRendererResourceRef;
1363
- target?: TreeNodeTarget;
1364
- /** Visual row variant for non-data rows such as placeholders. */
1365
- rowVariant?: TreeNodeRowVariant;
1366
- actions?: TreeAction[];
1367
- contextMenuActions?: TreeAction[];
1368
- collapsible?: boolean;
1369
- disabled?: boolean;
1370
- selected?: boolean;
1371
- children?: TreeNode[];
1372
- description?: string;
1373
- contextValue?: string;
1374
- hiddenByDefault?: boolean;
1375
- /** Opt in to the tree's hide/show customization menu (header/footer rows). Off by default. */
1376
- canHide?: boolean;
1377
- metadata?: JsonObject;
1378
- }
1379
- interface TreeViewSection {
1380
- id: string;
1381
- label?: Localizable<string>;
1382
- actions?: TreeAction[];
1383
- collapsible?: boolean;
1384
- emptyState?: TreeSectionEmptyState;
1385
- nodes: TreeNode[];
1386
- hiddenByDefault?: boolean;
1387
- /** Opt in to the tree's hide/show customization menu (a category). Off by default. */
1388
- canHide?: boolean;
1389
- }
1390
- interface TreeRendererContribution extends RendererContributionBase {
1391
- searchable?: boolean;
1392
- searchPlaceholder?: Localizable<string>;
1393
- header?: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
1394
- body: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
1395
- children?: RendererCallback<TreeRendererChildrenParams, TreeNode[]>;
1396
- footer?: RendererCallback<TreeRendererQueryParams, TreeViewSection[]>;
1397
- defaultExpandedSectionIds?: string[];
1398
- defaultExpandedNodeIds?: string[];
1399
- }
1400
- type TreeRendererCommandResult = TreeViewSection[] | TreeNode[] | JsonValue;
1401
- //#endregion
1402
- //#region ../pstdio-api-contracts/src/extension-kernel/types/views.d.ts
1403
- type NativeViewBody<Kind extends string, Definition> = {
1404
- readonly kind: Kind;
1405
- } & Omit<Definition, "title" | "icon" | "resourceKind">;
1406
- type WebviewViewBody = {
1407
- readonly kind: "webview";
1408
- } & WebviewContribution;
1409
- type TreeViewBody = NativeViewBody<"tree", TreeRendererContribution>;
1410
- type FileViewBody = NativeViewBody<"file", FileRendererContribution>;
1411
- type ControlsViewBody = NativeViewBody<"controls", ControlsRendererContribution>;
1412
- type KanbanViewBody = NativeViewBody<"kanban", KanbanRendererContribution>;
1413
- type DataTableViewBody = NativeViewBody<"dataTable", DataTableRendererContribution>;
1414
- type ViewBody = WebviewViewBody | TreeViewBody | FileViewBody | ControlsViewBody | KanbanViewBody | DataTableViewBody;
1415
- interface ViewContribution extends ContributionDefinition<"view"> {
1416
- readonly title: Localizable<string>;
1417
- readonly icon?: string;
1418
- readonly body: ViewBody;
1419
- }
1420
- type NavigationOwnerRef = ModeRef | PageRef;
1421
- type NavigationTreeSlot = "header" | "content" | "footer";
1422
- interface NavigationItemContribution extends ContributionDefinition<"navigation-item"> {
1423
- readonly owner: NavigationOwnerRef;
1424
- readonly slot?: NavigationTreeSlot;
1425
- readonly label: Localizable<string>;
1426
- readonly icon?: string;
1427
- readonly group?: string;
1428
- readonly when?: WhenExpression;
1429
- readonly action: NavigationTarget;
1430
- }
1431
- interface NavigationTreeContribution extends ContributionDefinition<"navigation-tree"> {
1432
- readonly owner: NavigationOwnerRef;
1433
- readonly slot?: NavigationTreeSlot;
1434
- readonly view: ViewRef;
1435
- /** Project-scoped trees read without a selected resource. Defaults to selection. */
1436
- readonly resourceScope?: "project" | "selection";
1437
- }
1438
- /**
1439
- * Initial presence of a static placement inside its owner scope.
1440
- * - "fixed": always open while the owner is active; the user cannot close it.
1441
- * - "open": open when the owner has no saved state; the user may close it.
1442
- * - "closed": closed until the user opens it (for example through the Add panel).
1443
- * A saved user choice wins over "open" and "closed" on the next visit.
1444
- */
1445
- type PlacementPresence = "fixed" | "open" | "closed";
1446
- type PlacementItem = {
1447
- readonly kind: "view";
1448
- readonly view: ViewRef;
1449
- readonly presence: PlacementPresence;
1450
- } | {
1451
- readonly kind: "binding";
1452
- readonly binding: ResourceBinding;
1453
- };
1454
- type PlacementMountStrategy = "active" | "keep-mounted";
1455
- interface PlacementTabMenuRow {
1456
- readonly id: string;
1457
- readonly label: Localizable<string>;
1458
- readonly icon?: string;
1459
- readonly iconColor?: string;
1460
- readonly selected?: boolean;
1461
- readonly disabled?: boolean;
1462
- readonly action?: NavigationTarget;
1463
- }
1464
- interface PlacementTabMenuGroup {
1465
- readonly id: string;
1466
- readonly rows: readonly PlacementTabMenuRow[];
1467
- }
1468
- interface PlacementTabSnapshot extends Struct {
1469
- readonly label?: Localizable<string>;
1470
- readonly icon?: string;
1471
- readonly indicator?: {
1472
- readonly icon: string;
1473
- readonly color?: string;
1474
- readonly label?: Localizable<string>;
1475
- };
1476
- readonly menu?: readonly PlacementTabMenuGroup[];
1477
- }
1478
- interface PlacementTabPresentation {
1479
- readonly query: RendererCallback<JsonObject, PlacementTabSnapshot>;
1480
- readonly refreshEvents?: readonly RendererEventReference[];
1481
- }
1482
- interface PlacementPresentation {
1483
- readonly mountStrategy?: PlacementMountStrategy;
1484
- readonly hiddenByDefault?: boolean;
1485
- readonly headerBorderBottom?: boolean;
1486
- readonly tab?: PlacementTabPresentation;
1487
- }
1488
- interface PlacementContribution extends ContributionDefinition<"placement">, PlacementPresentation {
1489
- readonly mode: ModeRef;
1490
- readonly item: PlacementItem;
1491
- readonly region: ExtensionPanelRegion;
1492
- readonly order?: number;
1493
- readonly movableTo?: readonly ExtensionPanelRegion[];
1494
- }
1495
- interface ViewMenuContribution extends ContributionDefinition<"view-menu"> {
1496
- readonly owner: ViewRef;
1497
- readonly view: ViewRef;
1498
- readonly side: "left" | "right";
1499
- readonly group?: string;
1500
- readonly placement?: "first" | "default" | "last";
1501
- readonly hostTreeHeader?: "default" | "none";
1502
- readonly hostTreeFooter?: "default" | "none";
1503
- }
1504
- //#endregion
1505
- //#region ../pstdio-api-contracts/src/extension-kernel/types/pages.d.ts
1506
- type PageSlotRole = "primary" | "auxiliary";
1507
- type PageSlotCardinality = "one" | "many";
1508
- type PageOpenIntent = "preview" | "pin";
1509
- type PageSlotRegion = ExtensionPanelRegion;
1510
- interface PageMainView extends PlacementPresentation {
1511
- readonly kind: "view";
1512
- readonly view: ViewRef;
1513
- readonly cardinality: PageSlotCardinality;
1514
- }
1515
- interface PageMainPanels {
1516
- readonly kind: "panels";
1517
- readonly empty: ViewRef;
1518
- }
1519
- type PageMain = PageMainView | PageMainPanels;
1520
- /** A page-owned panel. Main presentation and routed context belong to the page. */
1521
- interface PageSlot extends PlacementPresentation {
1522
- readonly id: string;
1523
- readonly region: PageSlotRegion;
1524
- readonly order?: number;
1525
- readonly item: PlacementItem;
1526
- readonly openOn?: "page-resource";
1527
- }
1528
- interface PageSlotRef {
1529
- readonly kind: "page-slot";
1530
- readonly page: PageRef;
1531
- readonly id: string;
1532
- }
1533
- type PanelRef = PlacementRef | PageSlotRef;
1534
- interface PageContribution extends ContributionDefinition<"page"> {
1535
- readonly title: Localizable<string>;
1536
- readonly icon?: string;
1537
- readonly path: string;
1538
- readonly mode: ModeRef;
1539
- readonly parent?: PageRef;
1540
- readonly resource?: ResourceConstraint;
1541
- readonly main: PageMain;
1542
- readonly slots: readonly PageSlot[];
1543
- readonly panels: Readonly<Record<string, PageSlotRef>>;
1544
- }
1545
- type PlacementOwner = {
1546
- readonly kind: "shell";
1547
- readonly placementId: string;
1548
- } | {
1549
- readonly kind: "mode";
1550
- readonly modeId: string;
1551
- readonly placementId: string;
1552
- } | {
1553
- readonly kind: "page";
1554
- readonly pageId: string;
1555
- readonly slotId: string;
1556
- };
1557
- type PlacementIdentity = PlacementOwner & {
1558
- readonly instanceKey: string;
1559
- };
1560
- interface PageLocation {
1561
- readonly page: PageRef;
1562
- readonly resource?: ResourceRef;
1563
- readonly section?: FileRendererSectionTarget;
1564
- readonly parent?: PageLocation;
1565
- }
1566
- //#endregion
1567
- //#region ../pstdio-api-contracts/src/extension-kernel/types/navigation-target.d.ts
1568
- interface NavigationTargetPage {
1569
- kind: "page";
1570
- page: PageRef;
1571
- resource?: ResourceRef;
1572
- section?: FileRendererSectionTarget;
1573
- open?: PageOpenIntent;
1574
- parent?: NavigationTargetPage;
1575
- }
1576
- interface NavigationTargetPanel {
1577
- kind: "panel";
1578
- panel: PanelRef;
1579
- resource?: ResourceRef;
1580
- open?: PageOpenIntent;
1581
- }
1582
- interface NavigationTargetCommand {
1583
- kind: "command";
1584
- target: CommandTarget<JsonObject>;
1585
- }
1586
- interface NavigationTargetHref {
1587
- kind: "href";
1588
- href: string;
1589
- }
1590
- type NavigationTargetItem = NavigationTargetPage | NavigationTargetPanel | NavigationTargetCommand | NavigationTargetHref;
1591
- interface NavigationTargetCompound {
1592
- kind: "compound";
1593
- targets: readonly (NavigationTargetPage | NavigationTargetPanel)[];
1594
- }
1595
- type NavigationTarget = NavigationTargetItem | NavigationTargetCompound;
1596
- //#endregion
1597
- //#region ../pstdio-api-contracts/src/extension-kernel/types/commands.d.ts
1598
- type CommandSource = "cli" | "dashboard" | "api" | "schedule" | "event" | "automation" | "command-panel";
1599
- interface CommandRef<TParams extends Struct = Struct, TResult = unknown> extends ContributionRef<"command"> {
1600
- params?: TParams;
1601
- result?: TResult;
1602
- }
1603
- interface CommandTarget<TParams extends Struct = Struct> {
1604
- command: CommandRef<TParams, unknown>;
1605
- params?: TParams;
1606
- }
1607
- interface SerializedError {
1608
- name?: string;
1609
- message: string;
1610
- stack?: string;
1611
- cause?: JsonValue;
1612
- }
1613
- interface WorkbenchAttachmentInvocationContext {
1614
- target: WorkbenchAttachmentTarget;
1615
- mode?: string;
1616
- projectId?: string;
1617
- resource?: ResourceRef;
1618
- }
1619
- interface CommandInvocation<TParams extends Struct = Struct> {
1620
- params: TParams;
1621
- resource?: ResourceRef;
1622
- attachment?: WorkbenchAttachmentInvocationContext;
1623
- slot?: SlotInvocationContext;
1624
- metadata?: JsonObject;
1625
- }
1626
- interface CommandContinue {
1627
- type: "continue";
1628
- }
1629
- interface CommandPatchParams<TParams extends Struct = Struct> {
1630
- type: "patchParams";
1631
- params: Partial<TParams>;
1632
- }
1633
- interface CommandReplaceParams<TParams extends Struct = Struct> {
1634
- type: "replaceParams";
1635
- params: TParams;
1636
- }
1637
- interface CommandReplaceInvocation<TParams extends Struct = Struct> {
1638
- type: "replaceInvocation";
1639
- invocation: CommandInvocation<TParams>;
1640
- }
1641
- interface CommandReject {
1642
- type: "reject";
1643
- code?: string;
1644
- reason: string;
1645
- data?: JsonObject;
1646
- }
1647
- type CommandMiddlewareResult<TParams extends Struct = Struct> = void | CommandContinue | CommandPatchParams<TParams> | CommandReplaceParams<TParams> | CommandReplaceInvocation<TParams> | CommandReject;
1648
- interface CommandNotice {
1649
- type: "info" | "success" | "warning" | "error";
1650
- title?: string;
1651
- message: string;
1652
- metadata?: JsonObject;
1653
- }
1654
- interface CommandDiagnostic {
1655
- code: string;
1656
- message: string;
1657
- severity: "info" | "warning" | "error";
1658
- extensionId?: string;
1659
- commandId?: string;
1660
- metadata?: JsonObject;
1661
- }
1662
- type CommandOutcome<TResult = unknown> = {
1663
- ok: true;
1664
- status: "success";
1665
- value: TResult;
1666
- navigationRequests?: NavigationTarget[];
1667
- notices?: CommandNotice[];
1668
- diagnostics?: CommandDiagnostic[];
1669
- } | {
1670
- ok: false;
1671
- status: "rejected";
1672
- code?: string;
1673
- reason: string;
1674
- data?: JsonObject;
1675
- notices?: CommandNotice[];
1676
- diagnostics?: CommandDiagnostic[];
1677
- } | {
1678
- ok: false;
1679
- status: "error";
1680
- code?: string;
1681
- reason: string;
1682
- error?: SerializedError;
1683
- notices?: CommandNotice[];
1684
- diagnostics?: CommandDiagnostic[];
1685
- };
1686
- interface CommandHelpersApi {
1687
- execute<TParams extends Struct = Struct, TResult = unknown>(command: CommandRef<TParams, TResult>, invocation: CommandInvocation<TParams>): Promise<CommandOutcome<TResult>>;
1688
- continue(): CommandContinue;
1689
- patchParams<TParams extends Struct = Struct>(params: Partial<TParams>): CommandPatchParams<TParams>;
1690
- replaceParams<TParams extends Struct = Struct>(params: TParams): CommandReplaceParams<TParams>;
1691
- replaceInvocation<TParams extends Struct = Struct>(invocation: CommandInvocation<TParams>): CommandReplaceInvocation<TParams>;
1692
- reject(input: Omit<CommandReject, "type">): CommandReject;
1693
- }
1694
- interface CommandRequestedEvent<TParams extends Struct = Struct> {
1695
- commandId: string;
1696
- invocationId: string;
1697
- source?: CommandSource;
1698
- params: TParams;
1699
- resource?: ResourceRef;
1700
- }
1701
- interface CommandStartedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {}
1702
- interface CommandCompletedEvent<TParams extends Struct = Struct, TResult = unknown> extends CommandStartedEvent<TParams> {
1703
- result: TResult;
1704
- elapsedMs: number;
1705
- }
1706
- interface CommandRejectedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {
1707
- code?: string;
1708
- reason: string;
1709
- data?: JsonObject;
1710
- }
1711
- interface CommandFailedEvent<TParams extends Struct = Struct> extends CommandRequestedEvent<TParams> {
1712
- code?: string;
1713
- reason: string;
1714
- error?: SerializedError;
1715
- elapsedMs: number;
1716
- }
1717
- type CommandLifecyclePhase = "requested" | "started" | "completed" | "rejected" | "failed";
1718
- 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>;
1719
- //#endregion
1720
- //#region ../pstdio-api-contracts/src/notifications/types.d.ts
1721
- type NotificationKind = "needs_review" | "ready_to_merge" | "blocked" | "approval_required" | "failed" | "info";
1722
- type NotificationStatus = "open" | "read" | "snoozed" | "done" | "dismissed" | "expired";
1723
- type NotificationPriority = "low" | "normal" | "high" | "urgent";
1724
- type NotificationActorType = "user" | "agent" | "system";
1725
- type NotificationOrigin = "core" | "extension" | "agent";
1726
- type NotificationAction = {
1727
- id: string;
1728
- label: string;
1729
- kind: "navigate";
1730
- target: NavigationTarget;
1731
- primary?: boolean;
1732
- } | {
1733
- id: string;
1734
- label: string;
1735
- kind: "command";
1736
- command: string;
1737
- params?: JsonObject;
1738
- primary?: boolean;
1739
- destructive?: boolean;
1740
- } | {
1741
- id: string;
1742
- label: string;
1743
- kind: "url";
1744
- href: string;
1745
- primary?: boolean;
1746
- };
1747
- interface Notification {
1748
- id: string;
1749
- projectId: string;
1750
- title: string;
1751
- body?: string | null;
1752
- kind: NotificationKind;
1753
- status: NotificationStatus;
1754
- priority: NotificationPriority;
1755
- source: CommandSource;
1756
- origin: NotificationOrigin;
1757
- sourceExtensionId?: string | null;
1758
- actorType?: NotificationActorType | null;
1759
- actorId?: string | null;
1760
- target?: ResourceRef | null;
1761
- related: ResourceRef[];
1762
- actions: NotificationAction[];
1763
- dedupeKey?: string | null;
1764
- metadata?: JsonObject | null;
1765
- createdAt: string;
1766
- updatedAt: string;
1767
- readAt?: string | null;
1768
- resolvedAt?: string | null;
1769
- snoozedUntil?: string | null;
1770
- expiresAt?: string | null;
1771
- }
1772
- interface CreateNotificationInput {
1773
- projectId: string;
1774
- title: string;
1775
- body?: string;
1776
- kind: NotificationKind;
1777
- priority?: NotificationPriority;
1778
- target?: ResourceRef;
1779
- related?: ResourceRef[];
1780
- actions?: NotificationAction[];
1781
- dedupeKey?: string;
1782
- expiresAt?: string;
1783
- snoozedUntil?: string;
1784
- metadata?: JsonObject;
1785
- }
1786
- interface UpdateNotificationInput {
1787
- priority?: NotificationPriority;
1788
- snoozedUntil?: string | null;
1789
- metadata?: JsonObject;
1790
- }
1791
- interface ListNotificationsQuery {
1792
- status?: NotificationStatus | NotificationStatus[];
1793
- priority?: NotificationPriority | NotificationPriority[];
1794
- sourceExtensionId?: string;
1795
- resourceType?: string;
1796
- resourceId?: string;
1797
- cursor?: string;
1798
- limit?: number;
1799
- }
1800
- interface ListNotificationsResponse {
1801
- items: Notification[];
1802
- nextCursor?: string | null;
410
+ interface ListNotificationsResponse {
411
+ items: Notification[];
412
+ nextCursor?: string | null;
1803
413
  }
1804
414
  //#endregion
1805
415
  //#region ../pstdio-api-contracts/src/sessions.d.ts
1806
416
  declare const sessionStatusSchema: z.ZodEnum<{
1807
- completed: "completed";
1808
- failed: "failed";
1809
417
  in_progress: "in_progress";
1810
418
  awaiting_input: "awaiting_input";
1811
419
  queued: "queued";
420
+ completed: "completed";
421
+ failed: "failed";
1812
422
  cancelled: "cancelled";
1813
423
  disconnected: "disconnected";
1814
424
  }>;
@@ -1817,11 +427,11 @@ declare const sessionSchema: z.ZodObject<{
1817
427
  project_id: z.ZodNullable<z.ZodString>;
1818
428
  title: z.ZodString;
1819
429
  status: z.ZodEnum<{
1820
- completed: "completed";
1821
- failed: "failed";
1822
430
  in_progress: "in_progress";
1823
431
  awaiting_input: "awaiting_input";
1824
432
  queued: "queued";
433
+ completed: "completed";
434
+ failed: "failed";
1825
435
  cancelled: "cancelled";
1826
436
  disconnected: "disconnected";
1827
437
  }>;
@@ -1917,11 +527,11 @@ declare const followUpResponseSchema: z.ZodObject<{
1917
527
  project_id: z.ZodNullable<z.ZodString>;
1918
528
  title: z.ZodString;
1919
529
  status: z.ZodEnum<{
1920
- completed: "completed";
1921
- failed: "failed";
1922
530
  in_progress: "in_progress";
1923
531
  awaiting_input: "awaiting_input";
1924
532
  queued: "queued";
533
+ completed: "completed";
534
+ failed: "failed";
1925
535
  cancelled: "cancelled";
1926
536
  disconnected: "disconnected";
1927
537
  }>;
@@ -1958,9 +568,9 @@ declare const sessionQueuedMessagesResponseSchema: z.ZodObject<{
1958
568
  messages: z.ZodArray<z.ZodObject<{
1959
569
  id: z.ZodString;
1960
570
  role: z.ZodEnum<{
1961
- tool: "tool";
1962
571
  user: "user";
1963
572
  assistant: "assistant";
573
+ tool: "tool";
1964
574
  system: "system";
1965
575
  developer: "developer";
1966
576
  }>;
@@ -2053,9 +663,9 @@ declare const sessionConversationSourcesSchema: z.ZodObject<{
2053
663
  checkpoint: z.ZodNullable<z.ZodArray<z.ZodObject<{
2054
664
  id: z.ZodString;
2055
665
  role: z.ZodEnum<{
2056
- tool: "tool";
2057
666
  user: "user";
2058
667
  assistant: "assistant";
668
+ tool: "tool";
2059
669
  system: "system";
2060
670
  developer: "developer";
2061
671
  }>;
@@ -2145,9 +755,9 @@ declare const sessionConversationSourcesSchema: z.ZodObject<{
2145
755
  native: z.ZodNullable<z.ZodArray<z.ZodObject<{
2146
756
  id: z.ZodString;
2147
757
  role: z.ZodEnum<{
2148
- tool: "tool";
2149
758
  user: "user";
2150
759
  assistant: "assistant";
760
+ tool: "tool";
2151
761
  system: "system";
2152
762
  developer: "developer";
2153
763
  }>;
@@ -2244,11 +854,11 @@ declare const sessionConversationResponseSchema: z.ZodObject<{
2244
854
  project_id: z.ZodNullable<z.ZodString>;
2245
855
  title: z.ZodString;
2246
856
  status: z.ZodEnum<{
2247
- completed: "completed";
2248
- failed: "failed";
2249
857
  in_progress: "in_progress";
2250
858
  awaiting_input: "awaiting_input";
2251
859
  queued: "queued";
860
+ completed: "completed";
861
+ failed: "failed";
2252
862
  cancelled: "cancelled";
2253
863
  disconnected: "disconnected";
2254
864
  }>;
@@ -2278,9 +888,9 @@ declare const sessionConversationResponseSchema: z.ZodObject<{
2278
888
  messages: z.ZodArray<z.ZodObject<{
2279
889
  id: z.ZodString;
2280
890
  role: z.ZodEnum<{
2281
- tool: "tool";
2282
891
  user: "user";
2283
892
  assistant: "assistant";
893
+ tool: "tool";
2284
894
  system: "system";
2285
895
  developer: "developer";
2286
896
  }>;
@@ -2393,14 +1003,14 @@ declare const listSessionActivityResponseSchema: z.ZodObject<{
2393
1003
  event_type: z.ZodString;
2394
1004
  actor_type: z.ZodEnum<{
2395
1005
  user: "user";
2396
- system: "system";
2397
1006
  agent: "agent";
1007
+ system: "system";
2398
1008
  }>;
2399
1009
  actor_id: z.ZodNullable<z.ZodString>;
2400
1010
  source: z.ZodEnum<{
2401
1011
  hook: "hook";
2402
- system: "system";
2403
1012
  agent: "agent";
1013
+ system: "system";
2404
1014
  ui: "ui";
2405
1015
  api: "api";
2406
1016
  }>;
@@ -2424,395 +1034,1634 @@ type ListSessionActivityInput = z.infer<typeof listSessionActivityInputSchema>;
2424
1034
  type ListSessionActivityResponse = z.infer<typeof listSessionActivityResponseSchema>;
2425
1035
  type FollowUpResponse = z.infer<typeof followUpResponseSchema>;
2426
1036
  //#endregion
2427
- //#region ../pstdio-api-contracts/src/skills.d.ts
2428
- declare const skillFileSchema: z.ZodObject<{
2429
- path: z.ZodString;
2430
- content: z.ZodString;
2431
- encoding: z.ZodLiteral<"utf8">;
2432
- }, z.core.$strip>;
2433
- declare const skillSchema: z.ZodObject<{
2434
- id: z.ZodString;
2435
- project_id: z.ZodString;
2436
- name: z.ZodString;
2437
- title: z.ZodString;
2438
- description: z.ZodString;
2439
- source_kind: z.ZodEnum<{
2440
- project: "project";
2441
- extension: "extension";
2442
- }>;
2443
- files: z.ZodArray<z.ZodObject<{
2444
- path: z.ZodString;
2445
- content: z.ZodString;
2446
- encoding: z.ZodLiteral<"utf8">;
2447
- }, z.core.$strip>>;
2448
- editable: z.ZodBoolean;
2449
- extension_instance_id: z.ZodOptional<z.ZodString>;
2450
- extension_id: z.ZodOptional<z.ZodString>;
2451
- installed_extension_id: z.ZodOptional<z.ZodString>;
2452
- install_name: z.ZodOptional<z.ZodString>;
2453
- key: z.ZodOptional<z.ZodString>;
2454
- source: z.ZodOptional<z.ZodObject<{
2455
- kind: z.ZodLiteral<"package-asset">;
2456
- path: z.ZodString;
2457
- baseUrl: z.ZodString;
2458
- }, z.core.$strip>>;
2459
- enabled: z.ZodOptional<z.ZodBoolean>;
2460
- created_at: z.ZodString;
2461
- updated_at: z.ZodString;
2462
- deleted_at: z.ZodNullable<z.ZodString>;
2463
- }, z.core.$strip>;
2464
- declare const skillWithContentSchema: z.ZodObject<{
2465
- id: z.ZodString;
2466
- project_id: z.ZodString;
2467
- name: z.ZodString;
2468
- title: z.ZodString;
2469
- description: z.ZodString;
2470
- source_kind: z.ZodEnum<{
2471
- project: "project";
2472
- extension: "extension";
2473
- }>;
2474
- files: z.ZodArray<z.ZodObject<{
2475
- path: z.ZodString;
2476
- content: z.ZodString;
2477
- encoding: z.ZodLiteral<"utf8">;
2478
- }, z.core.$strip>>;
2479
- editable: z.ZodBoolean;
2480
- extension_instance_id: z.ZodOptional<z.ZodString>;
2481
- extension_id: z.ZodOptional<z.ZodString>;
2482
- installed_extension_id: z.ZodOptional<z.ZodString>;
2483
- install_name: z.ZodOptional<z.ZodString>;
2484
- key: z.ZodOptional<z.ZodString>;
2485
- source: z.ZodOptional<z.ZodObject<{
2486
- kind: z.ZodLiteral<"package-asset">;
2487
- path: z.ZodString;
2488
- baseUrl: z.ZodString;
2489
- }, z.core.$strip>>;
2490
- enabled: z.ZodOptional<z.ZodBoolean>;
2491
- created_at: z.ZodString;
2492
- updated_at: z.ZodString;
2493
- deleted_at: z.ZodNullable<z.ZodString>;
2494
- installed_agents: z.ZodArray<z.ZodString>;
2495
- outdated_agents: z.ZodArray<z.ZodString>;
2496
- agent_installations: z.ZodArray<z.ZodObject<{
2497
- agent_id: z.ZodString;
2498
- agent_name: z.ZodString;
2499
- installed_version: z.ZodNullable<z.ZodString>;
2500
- outdated: z.ZodBoolean;
2501
- }, z.core.$strip>>;
2502
- }, z.core.$strip>;
2503
- declare const updateSkillInputSchema: z.ZodObject<{
2504
- enabled: z.ZodOptional<z.ZodBoolean>;
2505
- title: z.ZodOptional<z.ZodString>;
2506
- description: z.ZodOptional<z.ZodString>;
2507
- }, z.core.$strip>;
2508
- type Skill = z.infer<typeof skillSchema>;
2509
- type SkillWithContent = z.infer<typeof skillWithContentSchema>;
2510
- type SkillFile = z.infer<typeof skillFileSchema>;
2511
- 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
+ }
2512
2095
  //#endregion
2513
- //#region ../pstdio-api-contracts/src/extension-kernel/types/automation.d.ts
2514
- interface ExtensionAutomationApi {
2515
- /** Enqueue a command owned by this extension and declared automation: true. */
2516
- enqueue(input: {
2517
- command: CommandRef | string;
2518
- input: CreateAutomationRunInput["input"];
2519
- /** Required idempotency key, at most 200 characters. */
2520
- key: string;
2521
- }): Promise<AutomationRun>;
2522
- get(runId: string): Promise<AutomationRun | undefined>;
2523
- list(filter?: {
2524
- status?: AutomationRunStatus[];
2525
- }): Promise<AutomationRun[]>;
2526
- 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;
2527
2333
  }
2528
2334
  //#endregion
2529
- //#region ../pstdio-api-contracts/src/extension-kernel/types/connections.d.ts
2530
- type ExtensionConnectionMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2531
- interface ExtensionConnectionRequest {
2532
- method: ExtensionConnectionMethod;
2533
- path: string;
2534
- headers?: Record<string, string>;
2535
- body?: JsonValue;
2536
- timeoutMs?: number;
2537
- 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;
2538
2339
  }
2539
- interface ExtensionConnectionResponse<TBody = JsonValue> {
2540
- status: number;
2541
- headers: Record<string, string>;
2542
- body: TBody;
2340
+ interface DataTableRendererThemeColor {
2341
+ light: string;
2342
+ dark: string;
2343
+ foreground?: {
2344
+ light: string;
2345
+ dark: string;
2346
+ };
2543
2347
  }
2544
- type ExtensionConnectionStreamEvent = {
2545
- type: "response";
2546
- status: number;
2547
- headers: Record<string, string>;
2348
+ type DataTableRendererColumnStat = {
2349
+ type: "unique";
2548
2350
  } | {
2549
- type: "data";
2550
- data: Uint8Array;
2351
+ type: "histogram";
2352
+ bins?: number;
2551
2353
  } | {
2552
- type: "end";
2354
+ type: "top-values";
2355
+ limit?: number;
2553
2356
  };
2554
- interface ExtensionConnectionsApi {
2555
- request<TBody = JsonValue>(connectionId: string, input: ExtensionConnectionRequest): Promise<ExtensionConnectionResponse<TBody>>;
2556
- 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;
2557
2380
  }
2558
- interface ExtensionLoggerApi {
2559
- info(message: string, metadata?: JsonObject): void;
2560
- warn(message: string, metadata?: JsonObject): void;
2561
- error(message: string, metadata?: JsonObject): void;
2381
+ interface DataTableRendererRow {
2382
+ id: string;
2383
+ values: Record<string, JsonValue>;
2384
+ resource?: DataTableRendererResourceRef;
2562
2385
  }
2563
- //#endregion
2564
- //#region ../pstdio-api-contracts/src/session-messages.d.ts
2565
- type SessionMessageRole = "user" | "assistant" | "tool" | "system" | "developer";
2566
- type TextPart = {
2567
- type: "text";
2568
- text: string;
2569
- };
2570
- type ReasoningPart = {
2571
- type: "reasoning";
2572
- text: string;
2573
- };
2574
- type ToolPartActionType = "read" | "write" | "execute" | "network" | "other";
2575
- type ToolPartStatus = "pending" | "running" | "completed" | "failed" | "denied";
2576
- type ToolPart = {
2577
- type: "tool";
2578
- tool: string;
2579
- callId?: string;
2580
- actionType?: ToolPartActionType;
2581
- status?: ToolPartStatus;
2582
- state?: {
2583
- status?: string;
2584
- input?: unknown;
2585
- output?: unknown;
2586
- errorText?: string;
2587
- metadata?: unknown;
2588
- };
2589
- };
2590
- type StepStartPart = {
2591
- type: "step-start";
2592
- snapshot?: string;
2593
- };
2594
- type StepFinishPart = {
2595
- type: "step-finish";
2596
- reason?: string;
2597
- snapshot?: string;
2598
- cost?: number;
2599
- tokens?: unknown;
2600
- };
2601
- type PatchPart = {
2602
- type: "patch";
2603
- hash?: string;
2604
- files?: unknown;
2605
- };
2606
- type FilePart = {
2607
- type: "file";
2608
- fileId?: string;
2609
- mediaType?: string;
2610
- filename?: string;
2611
- size?: number;
2612
- url: string;
2613
- };
2614
- type LoadingPart = {
2615
- type: "loading";
2616
- };
2617
- type ErrorPart = {
2618
- type: "error";
2619
- errorType: "timeout" | "crash" | "permission" | "other";
2620
- message?: string;
2621
- };
2622
- type TokenUsagePart = {
2623
- type: "token_usage";
2624
- inputTokens: number;
2625
- outputTokens: number;
2626
- cacheReadTokens?: number;
2627
- cacheWriteTokens?: number;
2628
- };
2629
- type SessionMessagePart = TextPart | ReasoningPart | ToolPart | StepStartPart | StepFinishPart | PatchPart | FilePart | LoadingPart | ErrorPart | TokenUsagePart;
2630
- type SessionMessage = {
2386
+ interface DataTableRendererQueryResult {
2387
+ rows: DataTableRendererRow[];
2388
+ columns?: DataTableRendererColumn[];
2389
+ }
2390
+ interface DataTableRendererRowAction<TParams extends Struct = Struct> {
2631
2391
  id: string;
2632
- role: SessionMessageRole;
2633
- parts: SessionMessagePart[];
2634
- index?: number;
2635
- createdAt?: number;
2636
- modelId?: string;
2637
- providerId?: string;
2638
- tokens?: {
2639
- input?: number;
2640
- output?: number;
2641
- reasoning?: number;
2642
- cache?: {
2643
- read?: number;
2644
- write?: number;
2645
- };
2646
- };
2647
- };
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
+ }
2648
2418
  //#endregion
2649
- //#region ../pstdio-api-contracts/src/harness.d.ts
2650
- type JsonPatch = {
2651
- op: "add" | "replace" | "remove";
2652
- path: string;
2653
- value?: unknown;
2654
- };
2655
- type AgentCapability = "SessionFork" | "ContextUsage" | "Approvals" | "SessionReattach";
2656
- type QuestionResponse = {
2657
- answers: string[][];
2658
- };
2659
- 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 {
2660
2440
  id: string;
2661
- toolName: string;
2662
- toolInput: unknown;
2663
- toolUseId: string;
2664
- };
2665
- 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 {
2666
2480
  id: string;
2667
- decision: "approve" | "deny" | "timeout";
2668
- };
2669
- /** "activity": the host kills the session when no events arrive for a while; "provider": the provider self-terminates. */
2670
- type TimeoutStrategy = "activity" | "provider";
2671
- type HarnessEventSink = {
2672
- push(patch: JsonPatch): void;
2673
- getMessages(): readonly SessionMessage[];
2674
- };
2675
- type HarnessAttachment = {
2676
- fileId: string;
2677
- fileName: string;
2678
- mimeType: string | null;
2679
- sizeBytes: number;
2680
- localPath: string;
2681
- url: string;
2682
- };
2683
- type HarnessApprovalChannel = {
2684
- requestApproval(request: ApprovalRequest): Promise<ApprovalResponse>;
2685
- };
2686
- type HarnessParamValue = string | boolean;
2687
- type HarnessParams = Record<string, HarnessParamValue>;
2688
- type HarnessWorkspaceContext = {
2689
- workspaceId: string;
2690
- executionTarget: WorkspaceExecutionTarget;
2691
- };
2692
- type HarnessExitStatus = "completed" | "failed" | "cancelled" | "disconnected";
2693
- type HarnessExit = {
2694
- status: HarnessExitStatus;
2695
- };
2696
- type HarnessSession = {
2697
- /** Provider-side session id, used to resume/reattach later. */
2698
- agentSessionId?: string;
2699
- /** Settles exactly once; the host keys status transitions and persistence off it. */
2700
- done: Promise<HarnessExit>;
2701
- /** Called by the host on cancel or on its own activity timeout. */
2702
- stop(): void | Promise<void>;
2703
- timeoutStrategy?: TimeoutStrategy;
2704
- /** Observability only. */
2705
- pid?: number;
2706
- };
2707
- type HarnessStartInput = {
2708
- prompt: string;
2709
- /** Host session id (correlation / env injection). */
2710
- sessionId: string;
2711
- cwd?: string;
2712
- workspace?: HarnessWorkspaceContext;
2713
- model?: string | null;
2714
- params?: HarnessParams;
2715
- attachments?: HarnessAttachment[];
2716
- events: HarnessEventSink;
2717
- /** Aborted when the host cancels the request that started or resumed this session. */
2718
- signal?: AbortSignal;
2719
- };
2720
- type HarnessResumeInput = HarnessStartInput & {
2721
- agentSessionId: string;
2722
- /** Index offset so resumed streams align message patches with existing history. */
2723
- messageOffset?: number;
2724
- questionResponse?: QuestionResponse;
2725
- approvals?: HarnessApprovalChannel;
2726
- };
2727
- type HarnessReattachInput = {
2728
- sessionId: string;
2729
- agentSessionId: string;
2730
- cwd?: string;
2731
- workspace?: HarnessWorkspaceContext;
2732
- events: HarnessEventSink;
2733
- /** Aborted when the host stops orphan recovery, including during shutdown. */
2734
- signal?: AbortSignal;
2735
- };
2736
- type HarnessMessagesInput = {
2737
- agentSessionId: string;
2738
- cwd?: string;
2739
- workspace?: HarnessWorkspaceContext;
2740
- };
2741
- type HarnessRecoveryInput = {
2742
- knownMessages: readonly SessionMessage[];
2743
- nativeMessages: readonly SessionMessage[];
2744
- cwd?: string;
2745
- workspace?: HarnessWorkspaceContext;
2746
- };
2747
- type HarnessRecoveryResult = {
2748
- kind: "recovered";
2749
- messages: SessionMessage[];
2750
- } | {
2751
- kind: "conflict";
2752
- category: string;
2753
- };
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;
2754
2501
  //#endregion
2755
- //#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
+ }
2756
2538
  /**
2757
- * Host context a harness runs against. A structural subset of ExtensionContextBase,
2758
- * 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.
2759
2544
  */
2760
- interface HarnessContext {
2761
- /** Present when the harness runs on behalf of a project session. */
2762
- projectId?: string;
2763
- extensionId: string;
2764
- /** Extension package name. */
2765
- name: string;
2766
- process: ExtensionProcessApi;
2767
- net: ExtensionNetApi;
2768
- connections: ExtensionConnectionsApi;
2769
- logger: ExtensionLoggerApi;
2770
- 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;
2771
2563
  }
2772
- interface HarnessStateApi {
2773
- get<T = unknown>(key: string): Promise<T | undefined>;
2774
- set<T = unknown>(key: string, value: T): Promise<void>;
2775
- delete(key: string): Promise<void>;
2564
+ interface PlacementTabMenuGroup {
2565
+ readonly id: string;
2566
+ readonly rows: readonly PlacementTabMenuRow[];
2776
2567
  }
2777
- interface HarnessDetectionResult {
2778
- available: boolean;
2779
- version?: string;
2780
- reason?: string;
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";
2781
2627
  }
2782
- /** Where the harness's agent discovers skills. Paths are relative to the repo (dir) and home (globalDir). */
2783
- interface HarnessSkillsLayout {
2784
- dir: string;
2785
- /** Defaults to `dir` when omitted. */
2786
- globalDir?: string;
2628
+ interface PageSlotRef {
2629
+ readonly kind: "page-slot";
2630
+ readonly page: PageRef;
2631
+ readonly id: string;
2787
2632
  }
2788
- /** A reattach error is permanent unless the provider explicitly marks it retryable. */
2789
- type RetryableHarnessReattachError = Error & {
2790
- readonly retryable: true;
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>>;
2644
+ }
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;
2791
2656
  };
2792
- type HarnessParamDescriptor = SelectParam | BooleanParam;
2793
- type HarnessParamsSchema = Record<string, HarnessParamDescriptor>;
2794
- /**
2795
- * An agent harness contributed by an extension. The host injects the event sink
2796
- * (and approval channel) and owns the session lifecycle: timeouts, persistence,
2797
- * and status transitions are keyed off the returned HarnessSession.
2798
- */
2799
- interface HarnessProvider extends ContributionDefinition<"harness"> {
2800
- label: Localizable<string>;
2801
- /** Declares skill directories so the host installs project skills for this agent. Absent = no skill setup. */
2802
- skills?: HarnessSkillsLayout;
2803
- /** Discrete run params the host can render, persist as defaults, validate, and pass to start/resume. */
2804
- params?: HarnessParamsSchema;
2805
- /** Defaults to required. Optional harnesses can run against remote workspace execution targets. */
2806
- cwdRequirement?: "required" | "optional";
2807
- capabilities(ctx: HarnessContext): MaybePromise<AgentCapability[]>;
2808
- detect?(ctx: HarnessContext): MaybePromise<HarnessDetectionResult>;
2809
- listModels?(ctx: HarnessContext): MaybePromise<AgentModel[]>;
2810
- start(ctx: HarnessContext, input: HarnessStartInput): MaybePromise<HarnessSession>;
2811
- resume(ctx: HarnessContext, input: HarnessResumeInput): MaybePromise<HarnessSession>;
2812
- /** Re-bind after a host restart. Throw a `RetryableHarnessReattachError` only when another attempt may succeed. */
2813
- reattach?(ctx: HarnessContext, input: HarnessReattachInput): MaybePromise<HarnessSession>;
2814
- getMessages?(ctx: HarnessContext, input: HarnessMessagesInput): MaybePromise<SessionMessage[]>;
2815
- 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;
2816
2665
  }
2817
2666
  //#endregion
2818
2667
  //#region ../pstdio-api-contracts/src/extension-kernel/types/statuses.d.ts
@@ -2850,8 +2699,8 @@ interface StatusBarItemContribution extends ContributionDefinition<"status-bar-i
2850
2699
  }
2851
2700
  //#endregion
2852
2701
  //#region ../pstdio-api-contracts/src/extension-kernel/types/extension.d.ts
2853
- /** Current host extension API version. `engines.pstdio` explicitly lists supported versions, separated by `||`. */
2854
- 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";
2855
2704
  type SchemaParams<TSchema extends ParamObjectSchema | undefined> = TSchema extends ParamObjectSchema ? ParamsOf<TSchema> : Record<string, never>;
2856
2705
  interface WorkspaceProviderRef {
2857
2706
  version: number;
@@ -3415,18 +3264,213 @@ interface CommandContext<TSettings extends Record<string, unknown> = Record<stri
3415
3264
  attachment?: WorkbenchAttachmentInvocationContext;
3416
3265
  slot?: SlotInvocationContext;
3417
3266
  }
3418
- type CommandMiddlewareContext = CommandContext;
3419
- type CommandMiddlewareHandler<TParams extends Struct = Struct> = (ctx: CommandMiddlewareContext, params: TParams) => MaybePromise<CommandMiddlewareResult<TParams>>;
3420
- type CommandRunHandler<TParams extends Struct = Struct, TResult = unknown, TSettings extends Record<string, unknown> = Record<string, unknown>> = (ctx: CommandContext<TSettings>, params: TParams) => MaybePromise<TResult>;
3421
- type RendererCallback<TInput extends Struct = Struct, TResult = unknown, TSettings extends Record<string, unknown> = Record<string, unknown>> = (ctx: ExtensionContextBase<TSettings>, input: TInput & {
3422
- renderer: RendererContext;
3423
- }) => MaybePromise<TResult>;
3424
- interface EventContext extends ExtensionContextBase {
3425
- eventId: string;
3426
- deliveryId: string;
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> {
3450
+ commandId: string;
3451
+ invocationId: string;
3452
+ source?: CommandSource;
3453
+ params: TParams;
3454
+ resource?: ResourceRef;
3455
+ }
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;
3427
3460
  }
3428
- type SetupContext = ExtensionContextBase;
3429
- 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>;
3430
3474
  //#endregion
3431
3475
  //#region ../pstdio-api-contracts/src/extension-kernel/types/composition.d.ts
3432
3476
  declare const dockedWorkbenchRegions: readonly ["sidenav", "main", "secondary", "side"];
@@ -3452,6 +3496,14 @@ interface ResourceKindDefinition extends ContributionDefinition<"resource-kind">
3452
3496
  readonly label?: Localizable<string>;
3453
3497
  readonly icon?: string;
3454
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;
3455
3507
  }
3456
3508
  interface ResourceHierarchyProvider extends ContributionDefinition<"resource-hierarchy-provider"> {
3457
3509
  resourceKind: ResourceKindRef;
@@ -4133,6 +4185,7 @@ type RequiredOf<TOptions> = TOptions extends {
4133
4185
  type ParamOptions<TParam extends {
4134
4186
  type: string;
4135
4187
  }> = Omit<TParam, "type">;
4188
+ type SelectionOptions<TOptions> = TOptions extends ParamOption[] ? ParamOption[] : ParamOptionSource;
4136
4189
  /**
4137
4190
  * Builders for typed parameter descriptors. Each builder produces a discriminated
4138
4191
  * `ParamDescriptor` so the runtime and editor only see fields valid for that type.
@@ -4144,15 +4197,24 @@ type ParamOptions<TParam extends {
4144
4197
  * }
4145
4198
  */
4146
4199
  declare const params: {
4200
+ valueOf: (key: string) => {
4201
+ kind: "param-value";
4202
+ key: string;
4203
+ };
4147
4204
  text: <const TOptions extends ParamOptions<TextParam> | undefined = undefined>(options?: TOptions) => TextParam<RequiredOf<TOptions>>;
4148
4205
  longText: <const TOptions extends ParamOptions<LongTextParam> | undefined = undefined>(options?: TOptions) => LongTextParam<RequiredOf<TOptions>>;
4149
4206
  markdown: <const TOptions extends ParamOptions<MarkdownParam> | undefined = undefined>(options?: TOptions) => MarkdownParam<RequiredOf<TOptions>>;
4150
4207
  files: <const TOptions extends ParamOptions<FilesParam> | undefined = undefined>(options?: TOptions) => FilesParam<RequiredOf<TOptions>>;
4151
4208
  number: <const TOptions extends ParamOptions<NumberParam> | undefined = undefined>(options?: TOptions) => NumberParam<RequiredOf<TOptions>>;
4152
4209
  boolean: <const TOptions extends ParamOptions<BooleanParam> | undefined = undefined>(options?: TOptions) => BooleanParam<RequiredOf<TOptions>>;
4153
- select: <const TOptions extends ParamOptions<SelectParam>>(options: TOptions) => SelectParam<RequiredOf<TOptions>>;
4154
- 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
+ };
4155
4216
  harness: <const TOptions extends ParamOptions<HarnessParam> | undefined = undefined>(options?: TOptions) => HarnessParam<RequiredOf<TOptions>>;
4217
+ workspace: <const TOptions extends ParamOptions<WorkspaceParam> | undefined = undefined>(options?: TOptions) => WorkspaceParam<RequiredOf<TOptions>>;
4156
4218
  template: <const TOptions extends Omit<TemplateParam, "type" | "templateType"> & {
4157
4219
  type: string;
4158
4220
  }>(options: TOptions) => TemplateParam<RequiredOf<TOptions>>;
@@ -4361,11 +4423,11 @@ declare const projectPrefix: () => {
4361
4423
  //#endregion
4362
4424
  //#region ../pstdio-api-contracts/src/automation.d.ts
4363
4425
  declare const automationRunStatusSchema: z.ZodEnum<{
4364
- rejected: "rejected";
4365
- failed: "failed";
4366
4426
  queued: "queued";
4427
+ failed: "failed";
4367
4428
  cancelled: "cancelled";
4368
4429
  running: "running";
4430
+ rejected: "rejected";
4369
4431
  succeeded: "succeeded";
4370
4432
  }>;
4371
4433
  declare const issueAutomationTokenInputSchema: z.ZodObject<{
@@ -4442,11 +4504,11 @@ declare const automationRunSchema: z.ZodObject<{
4442
4504
  projectId: z.ZodString;
4443
4505
  commandId: z.ZodString;
4444
4506
  status: z.ZodEnum<{
4445
- rejected: "rejected";
4446
- failed: "failed";
4447
4507
  queued: "queued";
4508
+ failed: "failed";
4448
4509
  cancelled: "cancelled";
4449
4510
  running: "running";
4511
+ rejected: "rejected";
4450
4512
  succeeded: "succeeded";
4451
4513
  }>;
4452
4514
  createdAt: z.ZodString;
@@ -4486,6 +4548,151 @@ type AutomationRun = z.infer<typeof automationRunSchema>;
4486
4548
  type AutomationRunEvent = z.infer<typeof automationRunEventSchema>;
4487
4549
  type ListAutomationRunEventsResponse = z.infer<typeof listAutomationRunEventsResponseSchema>;
4488
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
4489
4696
  //#region ../pstdio-api-contracts/src/extensions/resource-ref.d.ts
4490
4697
  declare const extensionResourceRefSchema: z.ZodObject<{
4491
4698
  shorthand: z.ZodOptional<z.ZodString>;
@@ -4770,6 +4977,30 @@ declare const workbenchExtensionViewBodySchema: z.ZodDiscriminatedUnion<[z.ZodOb
4770
4977
  id: z.ZodString;
4771
4978
  }, z.core.$strip>;
4772
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>>>;
4773
5004
  }, z.core.$strip>, z.ZodObject<{
4774
5005
  queryHandlerId: z.ZodString;
4775
5006
  refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -4868,6 +5099,30 @@ declare const workbenchExtensionViewBodySchema: z.ZodDiscriminatedUnion<[z.ZodOb
4868
5099
  id: z.ZodString;
4869
5100
  }, z.core.$strip>;
4870
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>>>;
4871
5126
  }, z.core.$strip>], "kind">;
4872
5127
  declare const workbenchExtensionViewRecordSchema: z.ZodObject<{
4873
5128
  id: z.ZodString;
@@ -5125,6 +5380,30 @@ declare const workbenchExtensionViewRecordSchema: z.ZodObject<{
5125
5380
  id: z.ZodString;
5126
5381
  }, z.core.$strip>;
5127
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>>>;
5128
5407
  }, z.core.$strip>, z.ZodObject<{
5129
5408
  queryHandlerId: z.ZodString;
5130
5409
  refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -5223,6 +5502,30 @@ declare const workbenchExtensionViewRecordSchema: z.ZodObject<{
5223
5502
  id: z.ZodString;
5224
5503
  }, z.core.$strip>;
5225
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>>>;
5226
5529
  }, z.core.$strip>], "kind">;
5227
5530
  }, z.core.$strip>;
5228
5531
  declare const workbenchExtensionMetadataSchema: z.ZodObject<{
@@ -5288,8 +5591,8 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
5288
5591
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5289
5592
  automation: "automation";
5290
5593
  schedule: "schedule";
5291
- event: "event";
5292
5594
  api: "api";
5595
+ event: "event";
5293
5596
  cli: "cli";
5294
5597
  dashboard: "dashboard";
5295
5598
  "command-panel": "command-panel";
@@ -5320,8 +5623,8 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
5320
5623
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5321
5624
  automation: "automation";
5322
5625
  schedule: "schedule";
5323
- event: "event";
5324
5626
  api: "api";
5627
+ event: "event";
5325
5628
  cli: "cli";
5326
5629
  dashboard: "dashboard";
5327
5630
  "command-panel": "command-panel";
@@ -5819,6 +6122,30 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
5819
6122
  id: z.ZodString;
5820
6123
  }, z.core.$strip>;
5821
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>>>;
5822
6149
  }, z.core.$strip>, z.ZodObject<{
5823
6150
  queryHandlerId: z.ZodString;
5824
6151
  refreshEventIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -5917,6 +6244,30 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
5917
6244
  id: z.ZodString;
5918
6245
  }, z.core.$strip>;
5919
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>>>;
5920
6271
  }, z.core.$strip>], "kind">;
5921
6272
  }, z.core.$strip>>;
5922
6273
  viewMenus: z.ZodArray<z.ZodObject<{
@@ -6097,6 +6448,7 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
6097
6448
  default: z.ZodOptional<z.ZodString>;
6098
6449
  }, z.core.$strip>]>>;
6099
6450
  icon: z.ZodOptional<z.ZodString>;
6451
+ resolveCommand: z.ZodOptional<z.ZodString>;
6100
6452
  menuSlots: z.ZodOptional<z.ZodArray<z.ZodObject<{
6101
6453
  id: z.ZodString;
6102
6454
  placement: z.ZodEnum<{
@@ -6160,8 +6512,8 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
6160
6512
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
6161
6513
  automation: "automation";
6162
6514
  schedule: "schedule";
6163
- event: "event";
6164
6515
  api: "api";
6516
+ event: "event";
6165
6517
  cli: "cli";
6166
6518
  dashboard: "dashboard";
6167
6519
  "command-panel": "command-panel";
@@ -6310,8 +6662,8 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
6310
6662
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
6311
6663
  automation: "automation";
6312
6664
  schedule: "schedule";
6313
- event: "event";
6314
6665
  api: "api";
6666
+ event: "event";
6315
6667
  cli: "cli";
6316
6668
  dashboard: "dashboard";
6317
6669
  "command-panel": "command-panel";
@@ -6516,8 +6868,8 @@ declare const workbenchExtensionMetadataSchema: z.ZodObject<{
6516
6868
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
6517
6869
  automation: "automation";
6518
6870
  schedule: "schedule";
6519
- event: "event";
6520
6871
  api: "api";
6872
+ event: "event";
6521
6873
  cli: "cli";
6522
6874
  dashboard: "dashboard";
6523
6875
  "command-panel": "command-panel";
@@ -6849,8 +7201,8 @@ declare const extensionMenuContributionSchema: z.ZodObject<{
6849
7201
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
6850
7202
  automation: "automation";
6851
7203
  schedule: "schedule";
6852
- event: "event";
6853
7204
  api: "api";
7205
+ event: "event";
6854
7206
  cli: "cli";
6855
7207
  dashboard: "dashboard";
6856
7208
  "command-panel": "command-panel";
@@ -6881,8 +7233,8 @@ declare const extensionCommandPaletteContributionSchema: z.ZodObject<{
6881
7233
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
6882
7234
  automation: "automation";
6883
7235
  schedule: "schedule";
6884
- event: "event";
6885
7236
  api: "api";
7237
+ event: "event";
6886
7238
  cli: "cli";
6887
7239
  dashboard: "dashboard";
6888
7240
  "command-panel": "command-panel";
@@ -7036,8 +7388,8 @@ declare const commandExecuteRequestSchema: z.ZodObject<{
7036
7388
  source: z.ZodOptional<z.ZodEnum<{
7037
7389
  automation: "automation";
7038
7390
  schedule: "schedule";
7039
- event: "event";
7040
7391
  api: "api";
7392
+ event: "event";
7041
7393
  cli: "cli";
7042
7394
  dashboard: "dashboard";
7043
7395
  "command-panel": "command-panel";
@@ -7424,8 +7776,8 @@ declare const extensionKeybindingRecordSchema: z.ZodObject<{
7424
7776
  source: z.ZodOptional<z.ZodArray<z.ZodEnum<{
7425
7777
  automation: "automation";
7426
7778
  schedule: "schedule";
7427
- event: "event";
7428
7779
  api: "api";
7780
+ event: "event";
7429
7781
  cli: "cli";
7430
7782
  dashboard: "dashboard";
7431
7783
  "command-panel": "command-panel";
@@ -7882,14 +8234,14 @@ declare const listWorkspaceActivityResponseSchema: z.ZodObject<{
7882
8234
  event_type: z.ZodString;
7883
8235
  actor_type: z.ZodEnum<{
7884
8236
  user: "user";
7885
- system: "system";
7886
8237
  agent: "agent";
8238
+ system: "system";
7887
8239
  }>;
7888
8240
  actor_id: z.ZodNullable<z.ZodString>;
7889
8241
  source: z.ZodEnum<{
7890
8242
  hook: "hook";
7891
- system: "system";
7892
8243
  agent: "agent";
8244
+ system: "system";
7893
8245
  ui: "ui";
7894
8246
  api: "api";
7895
8247
  }>;
@@ -7928,5 +8280,5 @@ declare const workspaceProviderDescriptorSchema: z.ZodObject<{
7928
8280
  }, z.core.$strip>;
7929
8281
  type WorkspaceProviderDescriptor = z.infer<typeof workspaceProviderDescriptorSchema>;
7930
8282
  //#endregion
7931
- 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, RendererContributionBase as $u, EnableInstalledExtensionRequest as A, SessionMessage as Aa, RangeValue as Ac, parseExtensionApiVersions as Ad, HookDefinition as Ai, KanbanRendererResourceRef as Al, defineHook as An, CommandLifecyclePhase as Ao, ResourceHierarchyProvider as Ar, TreeViewBody as As, TerminalHostEvent as At, WebviewScopedDeclarableCapability 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, FileRendererResourceRef as Bu, ExtensionSettingsPanelRecord as C, QuestionResponse as Ca, ControlValueMap as Cc, TerminalEvent as Cd, BehaviourContributions as Ci, KanbanRendererColumnAction as Cl, defineTemplateType as Cn, CommandCompletedEvent as Co, workbenchPanels as Cr, PlacementMountStrategy as Cs, ArtifactMountKey as Ct, WebviewNavigationOpenParams as Cu, ExtensionCommandPaletteResourceRecord as D, LoadingPart as Da, ParamEditorReadOnlyContent as Dc, LocalizedString as Dd, ExtensionDefinition as Di, KanbanRendererFilterState as Dl, defineWorkspaceType as Dn, CommandHelpersApi as Do, DockedWorkbenchRegion as Dr, PlacementTabMenuRow as Ds, TerminalSessionBridge as Dt, WebviewNotificationShowParams as Du, ExtensionKeybindingRecord as E, FilePart as Ea, NumberControl as Ec, Localizable as Ed, ExtensionConnectionContribution as Ei, KanbanRendererEnumOption as El, defineViewMenu as En, CommandFailedEvent as Eo, workbenchSlots as Er, PlacementTabMenuGroup as Es, TerminalSessionAdapter as Et, WebviewNotificationResolveParams as Eu, ProjectExtensionInstance as F, TextPart as Fa, SegmentedControl as Fc, AgentSkillsLayout as Fd, ScheduleContribution as Fi, KanbanRendererSettings as Fl, HistoryConflict as Fn, CommandRef as Fo, ArtifactFile as Fr, TreeAction as Fs, commandEvent as Ft, ResourceBinding 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, PackageAssetDescriptor 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, FileRendererSectionAnchor as Hu, UpgradeProjectExtensionResponse as I, TokenUsagePart as Ia, SegmentedOption as Ic, harnessLocalId as Id, ScheduleExpression as Ii, KanbanRendererSortDirection as Il, HistoryProjection as In, CommandReject as Io, ArtifactMount as Ir, TreeNode as Is, QualifiedRef as It, ResourceConstraint 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, ResourceAnchor 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, RendererContext as Ku, CommandExecuteRequest as L, ToolPart as La, SelectionControl as Lc, ListActivityResponse as Ld, UiContributions as Li, KanbanRendererViewMode as Ll, HistoryRecoveryInput as Ln, CommandRejectedEvent as Lo, CommandContext as Lr, TreeNodeRowVariant as Ls, qualifyRef as Lt, FileRendererContribution as Lu, InstallMarketplaceExtensionResponse as M, SessionMessageRole as Ma, ResourceControl as Mc, AgentAvailabilityType as Md, MiddlewareDefinition as Mi, KanbanRendererRowAction as Ml, CommandResponse as Mn, CommandNotice as Mo, ResourceMenuSlotDefinition as Mr, ViewContribution as Ms, TerminalSessionRequest as Mt, SlotOptions as Mu, ListProjectExtensionsResponse as N, StepFinishPart as Na, ResourceOption as Nc, AgentInfo as Nd, PackageManifest as Ni, KanbanRendererRowActivationHandler as Nl, unwrapCommandOutcome as Nn, CommandOutcome as No, dockedWorkbenchRegions as Nr, ViewMenuContribution as Ns, TerminalSessionResult as Nt, SlotRef as Nu, WorkbenchExtensionCommandPaletteResourceRecord as O, PatchPart as Oa, ParamEditorReadOnlyImage as Oc, isLocalizedString as Od, ExtensionLoadScope as Oi, KanbanRendererQueryParams as Ol, resourceMenuSlotRef as On, CommandInvocation as Oo, ExtensionPanelRegion as Or, PlacementTabPresentation as Os, TerminalSessionExit as Ot, WebviewPreferencesGetParams as Ou, MarketplaceExtension as P, StepStartPart as Pa, ResourceRefValue as Pc, AgentModel as Pd, ProviderContributions as Pi, KanbanRendererSavedView as Pl, SDK_VERSION as Pn, CommandPatchParams as Po, extensionPanelRegions as Pr, WebviewViewBody as Ps, resourceKey as Pt, UiSlotKind 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, ViewHierarchyParent as Qu, CommandExecuteResponse as R, ToolPartActionType as Ra, SelectionGroup as Rc, ListProjectActivityInput as Rd, WorkspaceCapabilities as Ri, BooleanParam as Rl, HistoryRecoveryResult as Rn, CommandReplaceInvocation as Ro, CommandMiddlewareContext as Rr, TreeNodeTarget as Rs, params as Rt, FileRendererLoadParams as Ru, ExtensionSettingValueRecord as S, JsonPatch as Sa, ControlValue as Sc, ViewRef as Sd, AssetContributions as Si, KanbanRendererBoardColumnConfig as Sl, defineTemplate as Sn, UpdateNotificationInput as So, workbenchPanelDefinitions as Sr, PlacementItem as Ss, WebviewExtensionEvent as St, WebviewKeyboardEventParams as Su, UpdateExtensionSettingRequest as T, ErrorPart as Ta, MarkdownControl as Tc, TerminalSessionRequest$1 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, WebviewNotificationDismissParams 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, FileRendererSectionTarget 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, FileRendererSaveParams 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, ExtensionResourcesApi 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, ResourceRemovedEvent 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, ResourceRef 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, ResourceRole as Zu, CreateProjectInput as _, HarnessRecoveryInput as _a, BaseControl as _c, SettingsSectionRef as _d, CreateExtensionWorkspaceInput as _i, WhenExpression as _l, defineSettingsPanel as _n, NotificationActorType as _o, localContributionIdPattern as _r, NavigationItemContribution as _s, WebviewCommandsClient as _t, WebviewFilesUploadParams as _u, RemoveWorktreeResponse as a, AgentCapability as aa, DataTableRendererThemeColor as ac, JsonValue 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_CAPABILITY_VERSION as au, FileRecord as b, HarnessSession as ba, ControlGroup as bc, StatusRef 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, WebviewHostCapabilityResult as bu, WorkspaceFileContent as c, HarnessApprovalChannel as ca, ControlsQueryResult as cc, ConnectionRef as cd, ExtensionTerminalApi as ci, ModeRegionSettings as cl, defineKeybinding as cn, SessionConversationResponse as co, projectSlots as cr, PageSlotRegion as cs, IssueAutomationTokenInput as ct, WebviewArtifactsReadParams as cu, WorkspaceListItem as d, HarnessExit as da, ControlsResourceRef as dc, ContributionKind as dd, ProcessRunResult as di, SkillContribution as dl, defineNavigationTree as dn, SessionStatus as do, viewDataEvents as dr, PlacementIdentity as ds, ListAutomationTokensResponse as dt, WebviewDeclarableCapability as du, HarnessParamsSchema as ea, DataTableRendererResourceRef as ec, RendererEventReference 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, ContributionRef as fd, RendererCallback as fi, TemplateContribution as fl, definePage as fn, CreateNotificationInput as fo, workspaceEvents as fr, PlacementOwner as fs, projectPrefix as ft, WebviewExtensionSettingKeyParams as fu, sessionAttachmentMimeTypesByExtension as g, HarnessReattachInput as ga, AnchorGridValue as gc, ResourceKindRef as gd, WorkspaceSyncFile as gi, WebviewContribution as gl, defineSchedule as gn, NotificationAction as go, localContributionIdGrammar as gr, KanbanViewBody as gs, WebviewClientOptions as gt, WebviewFilesListParams as gu, UpdateSettingsInput as h, HarnessParams as ha, AnchorGridControl as hc, PlacementRef as hd, WorkspaceFilesMount as hi, ThemeMode as hl, defineResourceKind as hn, Notification as ho, isValidLocalContributionId as hr, FileViewBody as hs, WebviewClient as ht, WebviewFilesDeleteParams as hu, ListWorkspaceFilesInput as i, RetryableHarnessReattachError as ia, DataTableRendererSelectionAction as ic, JsonPrimitive as id, ExtensionSettingsApi as ii, KeybindingChord as il, defineCommandPaletteResource as in, ResolveSessionIdResponse as io, WorkspaceType as ir, PageOpenIntent as is, AutomationRunEvent as it, WEBVIEW_HOST_CAPABILITIES as iu, EnableInstalledExtensionResponse as j, SessionMessagePart as ja, ReadOnlyControl as jc, supportsExtensionApiVersion as jd, LocalExtensionSource as ji, KanbanRendererRow as jl, defineMiddleware as jn, CommandMiddlewareResult as jo, ResourceKindDefinition as jr, ViewBody as js, TerminalSessionOperation as jt, SlotInvocationContext as ju, AddLocalExtensionFolderResponse as k, ReasoningPart as ka, RangeControl as kc, l10n as kd, ExtensionSourceKind as ki, KanbanRendererQueryResult as kl, defineCommand as kn, CommandLifecycleEventPayload as ko, RegionSize as kr, PlacementTabSnapshot as ks, createTerminalSessionBridge as kt, WebviewPreferencesSetParams as ku, WorkspaceFileEntry as l, HarnessAttachment as la, ControlsRendererContribution as lc, ContributionDefinition as ld, MigrationContext as li, SettingsPanelContribution as ll, defineMode as ln, SessionConversationSources as lo, sessionEvents as lr, PageSlotRole as ls, IssueAutomationTokenResponse as lt, WebviewCapabilityDeclaration as lu, Settings as m, HarnessParamValue as ma, ActionsControl as mc, PageRef as md, StorageScope as mi, ThemeContribution as ml, defineResourceHierarchyProvider as mn, ListNotificationsResponse as mo, worktreeEvents as mr, DataTableViewBody as ms, WebviewArtifactsClient as mt, WebviewFileScope as mu, ListWorkspaceActivityInput as n, HarnessSkillsLayout as na, DataTableRendererRowAction as nc, EventRef as nd, ExtensionSessionResource as ni, ExtensionSettingsContribution as nl, defineActivityItem as nn, ListSessionActivityResponse as no, SessionLifecyclePayload as nr, PageMainPanels as ns, AutomationRun as nt, ALWAYS_AVAILABLE_WEBVIEW_CAPABILITIES as nu, RenameWorkspaceInput as o, ApprovalRequest as oa, ControlsApplyInput as oc, MaybePromise as od, ExtensionStorageApi as oi, MenuContribution as ol, defineFileIconTheme as on, SessionAttachment as oo, gitEvents as or, PageSlotCardinality as os, AutomationTokenRecord as ot, WEBVIEW_SCOPED_DECLARABLE_CAPABILITIES as ou, WriteWorkspaceFileInput as p, HarnessMessagesInput as pa, ActionOption as pc, ModeRef as pd, SetupContext as pi, TemplateTypeContribution as pl, definePlacement as pn, ListNotificationsQuery as po, workspaceSlots as pr, ControlsViewBody as ps, matchesResourceWhen as pt, WebviewExtensionSettingSetParams 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, RendererInvocationContext as qu, ListWorkspaceActivityResponse as r, HarnessStateApi as ra, DataTableRendererRowActivationHandler as rc, JsonObject as rd, ExtensionSessionsApi as ri, FileIconThemeContribution as rl, defineArtifactMount as rn, ResolveSessionIdInput as ro, WorkspaceProvisionPayload as rr, PageMainView as rs, AutomationRunError as rt, WEBVIEW_DECLARABLE_CAPABILITIES as ru, Workspace as s, ApprovalResponse as sa, ControlsQueryParams as sc, Struct as sd, ExtensionStorageCollectionApi as si, ModeContribution as sl, defineHarness as sn, SessionAttachmentRef as so, projectEvents as sr, PageSlotRef as ss, CreateAutomationRunInput as st, WebviewArtifactFile as su, CreateWorkspaceInput as t, HarnessProvider as ta, DataTableRendererRow as tc, EventDeliveryResult 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, ContributionInput as ud, ProcessRunInput as ui, SettingsSectionContribution as ul, defineNavigationItem as un, SessionQueuedMessagesResponse as uo, sessionSlots as ur, PanelRef as us, ListAutomationRunEventsResponse as ut, WebviewCommandsExecuteParams as uu, Project as v, HarnessRecoveryResult as va, BooleanControl as vc, SettingsSlotRef as vd, CreateWorkspaceCommandParams as vi, CollectionBadgeItem as vl, defineSettingsSection as vn, NotificationKind as vo, workbenchModeDefinitions as vr, NavigationOwnerRef as vs, WebviewSettingsClient as vt, WebviewHostCapability as vu, ListExtensionSettingsResponse as w, TimeoutStrategy as wa, DateControl as wc, TerminalSessionHandle as wd, CommandDefinition as wi, KanbanRendererContribution as wl, defineTheme as wn, CommandContinue as wo, workbenchResourceKindDefinitions as wr, PlacementPresence as ws, artifactMountId as wt, WebviewNotificationActionParams as wu, ExtensionSettingDefinitionRecord as x, HarnessStartInput as xa, ControlParam as xc, ThemeRef as xd, ExtensionWorkspacesApi as xi, KanbanRendererAttributeType as xl, defineStatuses as xn, NotificationStatus as xo, workbenchPages as xr, PlacementContribution as xs, WebviewEventsClient as xt, WebviewHostCapabilityResults as xu, UpdateProjectInput as y, HarnessResumeInput as ya, ColorControl as yc, StatusBarSlotRef as yd, ExtensionWorkspace as yi, KanbanRendererAttributeDescriptor as yl, defineSkill as yn, NotificationOrigin as yo, workbenchModes as yr, NavigationTreeContribution as ys, createWebviewClient as yt, WebviewHostCapabilityParams as yu, DispatchExtensionEventInput as z, ToolPartStatus as za, SelectionOption as zc, WorkspaceExecutionTarget as zi, FilesParam as zl, historyMessageKey as zn, CommandReplaceParams as zo, CommandMiddlewareHandler as zr, TreeRendererActionParams as zs, defaultPageResourceCodec as zt, FileRendererLoadResult 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 };
7932
8284
  export {};