@pstdio/sdk 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- export type { CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionNavigationRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ModeLayoutContributionRecord, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, } from "pstdio-api-contracts";
1
+ export type { AttemptExtensionFixResponse, CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionNavigationRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ModeLayoutContributionRecord, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionAutomationRecord, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionHarnessRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, WorkbenchExtensionViewRecord, } from "pstdio-api-contracts";
@@ -1,5 +1,5 @@
1
1
  export type { CreateNotificationInput, ListNotificationsQuery, ListNotificationsResponse, Notification, NotificationAction, NotificationActionResult, NotificationActorType, NotificationKind, NotificationOrigin, NotificationPriority, NotificationStatus, ResourceRef, UpdateNotificationInput, } from "pstdio-api-contracts";
2
- export type { CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionNavigationRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, } from "./extensions";
2
+ export type { AttemptExtensionFixResponse, CommandExecuteRequest, CommandExecuteResponse, ExtensionCommandPaletteContribution, ExtensionCommandPaletteResourceRecord, ExtensionCommandRecord, ExtensionControlsRendererRecord, ExtensionDataTableRendererRecord, ExtensionDiagnostic, ExtensionKanbanRendererRecord, ExtensionKeybindingRecord, ExtensionMenuContribution, ExtensionModeRecord, ExtensionNavigationRecord, ExtensionPanelRecord, ExtensionRecord, ExtensionRouteRecord, ExtensionSettingDefinitionRecord, ExtensionSettingsPanelRecord, ExtensionSettingValueRecord, ExtensionTreeItemContribution, ExtensionTreeRendererRecord, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListExtensionSettingsResponse, ListProjectExtensionsResponse, LocalizableString, ProjectExtensionInstance, UpdateExtensionSettingRequest, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse, WorkbenchExtensionAutomationRecord, WorkbenchExtensionCommandPaletteResourceRecord, WorkbenchExtensionControlsRendererRecord, WorkbenchExtensionDataTableRendererRecord, WorkbenchExtensionHarnessRecord, WorkbenchExtensionKanbanRendererRecord, WorkbenchExtensionMetadata, WorkbenchExtensionPanelRecord, WorkbenchExtensionTreeRendererRecord, WorkbenchExtensionViewRecord, } from "./extensions";
3
3
  export type { CreateProjectInput, RegisterRepoInput } from "./projects";
4
4
  export type { ApprovalInput, CreateSessionInput, FollowUpInput, ResolveSessionIdInput, ResolveSessionIdResponse, SessionAttachment, SessionAttachmentRef, SessionConversationResponse, } from "./sessions";
5
5
  export { sessionAttachmentMimeTypesByExtension } from "./sessions";
package/dist/api/index.js CHANGED
@@ -13953,6 +13953,16 @@ var extensionScheduleRecordSchema = exports_external.object({
13953
13953
  cron: exports_external.string(),
13954
13954
  commandId: exports_external.string()
13955
13955
  });
13956
+ var workbenchExtensionAutomationRecordSchema = exports_external.object({
13957
+ id: exports_external.string(),
13958
+ localId: exports_external.string(),
13959
+ extensionId: exports_external.string(),
13960
+ extensionInstanceId: exports_external.string().optional(),
13961
+ title: localizableStringSchema,
13962
+ cron: exports_external.string(),
13963
+ commandId: exports_external.string(),
13964
+ enabled: exports_external.boolean()
13965
+ });
13956
13966
  var extensionMenuContributionSchema = exports_external.object({
13957
13967
  id: exports_external.string(),
13958
13968
  extensionId: exports_external.string(),
@@ -14032,6 +14042,13 @@ var rowActionSchema = exports_external.object({
14032
14042
  destructive: exports_external.boolean().optional(),
14033
14043
  commandId: exports_external.string()
14034
14044
  });
14045
+ var selectionActionSchema = exports_external.object({
14046
+ id: exports_external.string(),
14047
+ label: localizableStringSchema,
14048
+ icon: exports_external.string().optional(),
14049
+ destructive: exports_external.boolean().optional(),
14050
+ commandId: exports_external.string()
14051
+ });
14035
14052
  var extensionDataTableRendererRecordSchema = exports_external.object({
14036
14053
  id: exports_external.string(),
14037
14054
  extensionId: exports_external.string(),
@@ -14039,6 +14056,8 @@ var extensionDataTableRendererRecordSchema = exports_external.object({
14039
14056
  resourceKind: exports_external.string().optional(),
14040
14057
  columns: exports_external.array(dataTableRendererColumnSchema).optional(),
14041
14058
  queryCommandId: exports_external.string(),
14059
+ selectionMode: exports_external.enum(["none", "multiple"]).optional(),
14060
+ selectionActions: exports_external.array(selectionActionSchema).optional(),
14042
14061
  rowActions: exports_external.array(rowActionSchema).optional(),
14043
14062
  initialPageSize: exports_external.number().int().positive().optional(),
14044
14063
  pageSizeOptions: exports_external.array(exports_external.number().int().positive()).optional(),
@@ -14046,6 +14065,22 @@ var extensionDataTableRendererRecordSchema = exports_external.object({
14046
14065
  emptyDescription: localizableStringSchema.optional()
14047
14066
  });
14048
14067
 
14068
+ // ../pstdio-api-contracts/src/extensions/host-capabilities.ts
14069
+ var extensionHostCapabilitySchema = exports_external.object({
14070
+ version: exports_external.number().int().positive(),
14071
+ since: exports_external.string().optional()
14072
+ });
14073
+ var extensionHostCapabilitiesSchema = exports_external.object({
14074
+ host: exports_external.literal("dashboard"),
14075
+ hostVersion: exports_external.string(),
14076
+ capabilities: exports_external.record(exports_external.string(), extensionHostCapabilitySchema)
14077
+ });
14078
+ var extensionHostCompatibilitySchema = exports_external.object({
14079
+ status: exports_external.enum(["verified", "unverified"]),
14080
+ host: extensionHostCapabilitiesSchema.optional(),
14081
+ diagnostics: exports_external.array(extensionDiagnosticSchema)
14082
+ });
14083
+
14049
14084
  // ../pstdio-api-contracts/src/extensions/kanban-renderer.ts
14050
14085
  var kanbanRendererEnumOptionSchema = exports_external.object({
14051
14086
  value: exports_external.string(),
@@ -14207,6 +14242,7 @@ var extensionPanelRecordBaseSchema = exports_external.object({
14207
14242
  id: exports_external.string(),
14208
14243
  extensionId: exports_external.string(),
14209
14244
  title: localizableStringSchema,
14245
+ icon: exports_external.string().optional(),
14210
14246
  region: workbenchRegionSchema,
14211
14247
  closable: exports_external.boolean(),
14212
14248
  group: exports_external.string().optional(),
@@ -14250,6 +14286,16 @@ var extensionTreeItemActionSchema = exports_external.discriminatedUnion("kind",
14250
14286
  exports_external.object({ kind: exports_external.literal("route"), route: exports_external.string() }),
14251
14287
  exports_external.object({ kind: exports_external.literal("href"), href: exports_external.string() })
14252
14288
  ]);
14289
+ var extensionActivityItemRecordSchema = exports_external.object({
14290
+ id: exports_external.string(),
14291
+ extensionId: exports_external.string(),
14292
+ title: localizableStringSchema,
14293
+ icon: exports_external.string(),
14294
+ modes: exports_external.array(exports_external.string()),
14295
+ placement: extensionPlacementSchema.optional(),
14296
+ commandId: exports_external.string(),
14297
+ params: jsonObjectSchema.optional()
14298
+ });
14253
14299
  var extensionTreeItemContributionSchema = exports_external.object({
14254
14300
  id: exports_external.string(),
14255
14301
  extensionId: exports_external.string(),
@@ -14337,6 +14383,7 @@ var extensionSettingsPanelRecordSchema = exports_external.object({
14337
14383
  scope: workbenchSettingsScopeSchema.optional(),
14338
14384
  title: localizableStringSchema,
14339
14385
  icon: exports_external.string().optional(),
14386
+ section: exports_external.string().optional(),
14340
14387
  webview: extensionWebviewContributionSchema
14341
14388
  });
14342
14389
  var extensionSettingDefinitionRecordSchema = exports_external.object({
@@ -14362,6 +14409,13 @@ var updateExtensionSettingRequestSchema = exports_external.object({
14362
14409
  var workbenchExtensionSettingsPanelRecordSchema = extensionSettingsPanelRecordSchema.extend({
14363
14410
  webview: workbenchExtensionWebviewSchema
14364
14411
  });
14412
+ var extensionSettingsSectionRecordSchema = exports_external.object({
14413
+ id: exports_external.string(),
14414
+ extensionId: exports_external.string(),
14415
+ title: localizableStringSchema,
14416
+ scope: workbenchSettingsScopeSchema.optional(),
14417
+ order: exports_external.number().optional()
14418
+ });
14365
14419
 
14366
14420
  // ../pstdio-api-contracts/src/extensions/check.ts
14367
14421
  var extensionsCheckResponseSchema = exports_external.object({
@@ -14384,6 +14438,7 @@ var extensionsCheckResponseSchema = exports_external.object({
14384
14438
  routes: exports_external.array(extensionRouteRecordSchema),
14385
14439
  navigation: exports_external.array(extensionNavigationRecordSchema),
14386
14440
  treeItems: exports_external.array(extensionTreeItemContributionSchema),
14441
+ activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14387
14442
  settingsPanels: exports_external.array(extensionSettingsPanelRecordSchema),
14388
14443
  kanbanRenderers: exports_external.array(extensionKanbanRendererRecordSchema),
14389
14444
  dataTableRenderers: exports_external.array(extensionDataTableRendererRecordSchema).optional(),
@@ -14395,7 +14450,20 @@ var extensionsCheckResponseSchema = exports_external.object({
14395
14450
  settingsDefinitions: exports_external.array(extensionSettingDefinitionRecordSchema).optional(),
14396
14451
  templates: exports_external.array(extensionViewLikeSchema),
14397
14452
  skills: exports_external.array(extensionViewLikeSchema),
14398
- diagnostics: exports_external.array(extensionDiagnosticSchema)
14453
+ diagnostics: exports_external.array(extensionDiagnosticSchema),
14454
+ hostCompatibility: extensionHostCompatibilitySchema
14455
+ });
14456
+ var workbenchExtensionHarnessRecordSchema = exports_external.object({
14457
+ id: exports_external.string(),
14458
+ localId: exports_external.string(),
14459
+ extensionId: exports_external.string(),
14460
+ label: localizableStringSchema.optional()
14461
+ });
14462
+ var workbenchExtensionViewRecordSchema = exports_external.object({
14463
+ id: exports_external.string(),
14464
+ localId: exports_external.string(),
14465
+ extensionId: exports_external.string(),
14466
+ title: localizableStringSchema.optional()
14399
14467
  });
14400
14468
  var workbenchExtensionMetadataSchema = exports_external.object({
14401
14469
  extensions: exports_external.array(extensionRecordSchema),
@@ -14407,6 +14475,8 @@ var workbenchExtensionMetadataSchema = exports_external.object({
14407
14475
  routes: exports_external.array(workbenchExtensionRouteRecordSchema),
14408
14476
  navigation: exports_external.array(extensionNavigationRecordSchema),
14409
14477
  treeItems: exports_external.array(extensionTreeItemContributionSchema).optional(),
14478
+ activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14479
+ settingsSections: exports_external.array(extensionSettingsSectionRecordSchema).optional(),
14410
14480
  settingsPanels: exports_external.array(workbenchExtensionSettingsPanelRecordSchema),
14411
14481
  kanbanRenderers: exports_external.array(extensionKanbanRendererRecordSchema).optional(),
14412
14482
  dataTableRenderers: exports_external.array(extensionDataTableRendererRecordSchema).optional(),
@@ -14416,6 +14486,11 @@ var workbenchExtensionMetadataSchema = exports_external.object({
14416
14486
  controlsRenderers: exports_external.array(extensionControlsRendererRecordSchema).optional(),
14417
14487
  keybindings: exports_external.array(extensionKeybindingRecordSchema).optional(),
14418
14488
  settingsDefinitions: exports_external.array(extensionSettingDefinitionRecordSchema).optional(),
14489
+ automations: exports_external.array(workbenchExtensionAutomationRecordSchema).optional(),
14490
+ harnesses: exports_external.array(workbenchExtensionHarnessRecordSchema).optional(),
14491
+ skills: exports_external.array(workbenchExtensionViewRecordSchema).optional(),
14492
+ templates: exports_external.array(workbenchExtensionViewRecordSchema).optional(),
14493
+ themes: exports_external.array(workbenchExtensionViewRecordSchema).optional(),
14419
14494
  diagnostics: exports_external.array(extensionDiagnosticSchema)
14420
14495
  });
14421
14496
  var listExtensionCommandsResponseSchema = exports_external.object({
@@ -14547,6 +14622,10 @@ var projectExtensionInstanceSchema = exports_external.object({
14547
14622
  version: exports_external.string().nullable().optional(),
14548
14623
  description: exports_external.string().optional(),
14549
14624
  sourcePath: exports_external.string(),
14625
+ scope: exports_external.enum(["repo", "global"]),
14626
+ status: exports_external.enum(["pending", "loaded", "error", "missing", "disabled"]),
14627
+ lastLoadedAt: exports_external.string().nullable().optional(),
14628
+ lastError: jsonObjectSchema.nullable().optional(),
14550
14629
  enabled: exports_external.boolean(),
14551
14630
  config: exports_external.record(exports_external.string(), exports_external.unknown())
14552
14631
  });
@@ -14556,6 +14635,13 @@ var listProjectExtensionsResponseSchema = exports_external.object({
14556
14635
  var setProjectExtensionEnabledRequestSchema = exports_external.object({
14557
14636
  enabled: exports_external.boolean()
14558
14637
  });
14638
+ var setExtensionAutomationEnabledRequestSchema = exports_external.object({
14639
+ enabled: exports_external.boolean()
14640
+ });
14641
+ var attemptExtensionFixResponseSchema = exports_external.object({
14642
+ sessionId: exports_external.string(),
14643
+ title: exports_external.string()
14644
+ });
14559
14645
  var updateInstalledExtensionTemplateInputSchema = exports_external.object({
14560
14646
  content: exports_external.string().min(1)
14561
14647
  });
@@ -3,6 +3,7 @@ import { type ExtensionClient } from "./extensions";
3
3
  import { type NotificationsClient } from "./notifications";
4
4
  import { type ProjectClient } from "./projects";
5
5
  import type { ClientOptions } from "./request";
6
+ import { type RuntimeClient } from "./runtime";
6
7
  import { type SessionClient } from "./sessions";
7
8
  import { type SettingsClient } from "./settings";
8
9
  import { type SkillClient } from "./skills";
@@ -20,5 +21,6 @@ export type PstdioClient = {
20
21
  extensions: ExtensionClient;
21
22
  settings: SettingsClient;
22
23
  sync: SyncClient;
24
+ runtime: RuntimeClient;
23
25
  };
24
26
  export declare const createClient: (options?: ClientOptions) => PstdioClient;
@@ -1,10 +1,11 @@
1
- import type { CommandExecuteRequest, CommandExecuteResponse, DispatchExtensionEventInput, EnableInstalledExtensionRequest, EnableInstalledExtensionResponse, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse } from "pstdio-api-contracts";
1
+ import type { CommandExecuteRequest, CommandExecuteResponse, DispatchExtensionEventInput, EnableInstalledExtensionRequest, EnableInstalledExtensionResponse, ListExtensionAppearanceResponse, ListExtensionCommandsResponse, ListProjectExtensionsResponse, UpdateInstalledExtensionTemplateInput, UpdateInstalledExtensionTemplateResponse } from "pstdio-api-contracts";
2
2
  import type { RequestFn } from "./request";
3
3
  export type ExtensionClient = {
4
4
  enableInstalled(projectId: string, installName: string, request: EnableInstalledExtensionRequest): Promise<EnableInstalledExtensionResponse>;
5
5
  updateInstalledTemplate(installName: string, templateKey: string, input: UpdateInstalledExtensionTemplateInput): Promise<UpdateInstalledExtensionTemplateResponse>;
6
6
  listAppearance(projectId: string): Promise<ListExtensionAppearanceResponse>;
7
7
  listCommands(projectId: string): Promise<ListExtensionCommandsResponse>;
8
+ listProject(projectId: string): Promise<ListProjectExtensionsResponse>;
8
9
  execute(commandId: string, request: CommandExecuteRequest): Promise<CommandExecuteResponse>;
9
10
  dispatchEvent(projectId: string, input: DispatchExtensionEventInput): Promise<void>;
10
11
  };
@@ -4,6 +4,7 @@ export type { ExtensionClient } from "./extensions";
4
4
  export type { NotificationsClient } from "./notifications";
5
5
  export type { ProjectClient } from "./projects";
6
6
  export { type ClientOptions, createRequest, PstdioApiError, type RequestFn, type RequestOptions, } from "./request";
7
+ export { createRuntimeClient, type RuntimeClient } from "./runtime";
7
8
  export type { ListSessionsInput, SessionClient, SessionStreamConnection, SessionStreamHandlers } from "./sessions";
8
9
  export type { SettingsClient } from "./settings";
9
10
  export type { SkillClient } from "./skills";
@@ -31,6 +31,7 @@ var createExtensionClient = (request) => ({
31
31
  }),
32
32
  listAppearance: (projectId) => request(`/v1/projects/${projectId}/extensions/appearance`),
33
33
  listCommands: (projectId) => request(`/v1/projects/${projectId}/extensions/commands`),
34
+ listProject: (projectId) => request(`/v1/projects/${projectId}/extensions`),
34
35
  execute: (commandId, input) => {
35
36
  const { projectId, ...body } = input;
36
37
  return request(`/v1/projects/${projectId}/extensions/commands/${encodeURIComponent(commandId)}/execute`, {
@@ -150,15 +151,27 @@ ${hookOutput}` : message;
150
151
  }
151
152
  return `Request failed: ${status}`;
152
153
  };
153
- var resolveBaseUrl = (options) => options.baseUrl ?? (typeof process !== "undefined" ? process.env.PSTDIO_API_URL : undefined) ?? "http://localhost:19840";
154
+ var processEnvironment = () => typeof process !== "undefined" && process.env ? process.env : undefined;
155
+ var resolveBaseUrl = (options) => options.baseUrl ?? processEnvironment()?.PSTDIO_API_URL ?? "http://127.0.0.1:19840";
154
156
  var resolveClientUrl = (baseUrl, path) => path.startsWith("http://") || path.startsWith("https://") ? path : `${baseUrl}${path}`;
157
+ var isSameOriginTarget = (baseUrl, path, url) => {
158
+ if (!path.startsWith("http://") && !path.startsWith("https://"))
159
+ return true;
160
+ try {
161
+ return new URL(url).origin === new URL(baseUrl).origin;
162
+ } catch {
163
+ return false;
164
+ }
165
+ };
155
166
  var resolveFetch = (options) => options.fetch ?? globalThis.fetch;
167
+ var resolveToken = (options) => options.token ?? processEnvironment()?.PSTDIO_API_TOKEN;
156
168
  var createRequestHeaders = (options, reqOpts = {}) => {
157
169
  const headers = new Headers(reqOpts.headers);
158
170
  if (reqOpts.hasJsonBody && !headers.has("content-type"))
159
171
  headers.set("content-type", "application/json");
160
- if (options.token)
161
- headers.set("authorization", `Bearer ${options.token}`);
172
+ const token = resolveToken(options);
173
+ if (token)
174
+ headers.set("authorization", `Bearer ${token}`);
162
175
  return headers;
163
176
  };
164
177
  var isBinaryBody = (body) => body instanceof ArrayBuffer || ArrayBuffer.isView(body);
@@ -178,17 +191,20 @@ var createRequest = (options) => {
178
191
  const baseUrl = resolveBaseUrl(options);
179
192
  const fetchFn = resolveFetch(options);
180
193
  return async (path, reqOpts = {}) => {
194
+ const url = resolveClientUrl(baseUrl, path);
181
195
  const headers = createRequestHeaders(options, {
182
196
  headers: reqOpts.headers,
183
197
  hasJsonBody: reqOpts.body !== undefined && !isBinaryBody(reqOpts.body)
184
198
  });
185
- const url = resolveClientUrl(baseUrl, path);
199
+ if (!isSameOriginTarget(baseUrl, path, url))
200
+ headers.delete("authorization");
186
201
  const response = await fetchFn(url, {
187
202
  method: reqOpts.method ?? "GET",
188
203
  headers: Object.fromEntries(headers.entries()),
189
204
  body: reqOpts.body !== undefined ? serializeRequestBody(reqOpts.body) : undefined,
190
205
  signal: reqOpts.signal,
191
- cache: reqOpts.cache
206
+ cache: reqOpts.cache,
207
+ credentials: "same-origin"
192
208
  });
193
209
  if (!response.ok) {
194
210
  const errorBody = await response.json().catch(() => null);
@@ -201,6 +217,11 @@ var createRequest = (options) => {
201
217
  };
202
218
  };
203
219
 
220
+ // src/client/runtime.ts
221
+ var createRuntimeClient = (request) => ({
222
+ provisionBrowserSession: () => request("/runtime/browser-session", { method: "POST" })
223
+ });
224
+
204
225
  // src/client/sse.ts
205
226
  var parseSseEvent = (part) => {
206
227
  let event = "message";
@@ -467,7 +488,8 @@ var createSyncClient = (clientOptions) => ({
467
488
  try {
468
489
  const response = await resolveFetch(clientOptions)(resolveClientUrl(resolveBaseUrl(clientOptions), buildSyncStreamPath(lastSeq)), {
469
490
  headers: Object.fromEntries(createRequestHeaders(clientOptions).entries()),
470
- signal: abortController.signal
491
+ signal: abortController.signal,
492
+ credentials: "same-origin"
471
493
  });
472
494
  if (!response.ok || !response.body)
473
495
  throw new Error("SSE connection failed");
@@ -544,11 +566,13 @@ var createClient = (options = {}) => {
544
566
  notifications: createNotificationsClient(request),
545
567
  extensions: createExtensionClient(request),
546
568
  settings: createSettingsClient(request),
547
- sync: createSyncClient(options)
569
+ sync: createSyncClient(options),
570
+ runtime: createRuntimeClient(request)
548
571
  };
549
572
  };
550
573
  export {
551
574
  parseSyncDeleteEvent,
575
+ createRuntimeClient,
552
576
  createRequest,
553
577
  createClient,
554
578
  applySyncEvent,
@@ -0,0 +1,5 @@
1
+ import type { RequestFn } from "./request";
2
+ export type RuntimeClient = {
3
+ provisionBrowserSession: () => Promise<void>;
4
+ };
5
+ export declare const createRuntimeClient: (request: RequestFn) => RuntimeClient;
@@ -13953,6 +13953,16 @@ var extensionScheduleRecordSchema = exports_external.object({
13953
13953
  cron: exports_external.string(),
13954
13954
  commandId: exports_external.string()
13955
13955
  });
13956
+ var workbenchExtensionAutomationRecordSchema = exports_external.object({
13957
+ id: exports_external.string(),
13958
+ localId: exports_external.string(),
13959
+ extensionId: exports_external.string(),
13960
+ extensionInstanceId: exports_external.string().optional(),
13961
+ title: localizableStringSchema,
13962
+ cron: exports_external.string(),
13963
+ commandId: exports_external.string(),
13964
+ enabled: exports_external.boolean()
13965
+ });
13956
13966
  var extensionMenuContributionSchema = exports_external.object({
13957
13967
  id: exports_external.string(),
13958
13968
  extensionId: exports_external.string(),
@@ -14032,6 +14042,13 @@ var rowActionSchema = exports_external.object({
14032
14042
  destructive: exports_external.boolean().optional(),
14033
14043
  commandId: exports_external.string()
14034
14044
  });
14045
+ var selectionActionSchema = exports_external.object({
14046
+ id: exports_external.string(),
14047
+ label: localizableStringSchema,
14048
+ icon: exports_external.string().optional(),
14049
+ destructive: exports_external.boolean().optional(),
14050
+ commandId: exports_external.string()
14051
+ });
14035
14052
  var extensionDataTableRendererRecordSchema = exports_external.object({
14036
14053
  id: exports_external.string(),
14037
14054
  extensionId: exports_external.string(),
@@ -14039,6 +14056,8 @@ var extensionDataTableRendererRecordSchema = exports_external.object({
14039
14056
  resourceKind: exports_external.string().optional(),
14040
14057
  columns: exports_external.array(dataTableRendererColumnSchema).optional(),
14041
14058
  queryCommandId: exports_external.string(),
14059
+ selectionMode: exports_external.enum(["none", "multiple"]).optional(),
14060
+ selectionActions: exports_external.array(selectionActionSchema).optional(),
14042
14061
  rowActions: exports_external.array(rowActionSchema).optional(),
14043
14062
  initialPageSize: exports_external.number().int().positive().optional(),
14044
14063
  pageSizeOptions: exports_external.array(exports_external.number().int().positive()).optional(),
@@ -14046,6 +14065,22 @@ var extensionDataTableRendererRecordSchema = exports_external.object({
14046
14065
  emptyDescription: localizableStringSchema.optional()
14047
14066
  });
14048
14067
 
14068
+ // ../pstdio-api-contracts/src/extensions/host-capabilities.ts
14069
+ var extensionHostCapabilitySchema = exports_external.object({
14070
+ version: exports_external.number().int().positive(),
14071
+ since: exports_external.string().optional()
14072
+ });
14073
+ var extensionHostCapabilitiesSchema = exports_external.object({
14074
+ host: exports_external.literal("dashboard"),
14075
+ hostVersion: exports_external.string(),
14076
+ capabilities: exports_external.record(exports_external.string(), extensionHostCapabilitySchema)
14077
+ });
14078
+ var extensionHostCompatibilitySchema = exports_external.object({
14079
+ status: exports_external.enum(["verified", "unverified"]),
14080
+ host: extensionHostCapabilitiesSchema.optional(),
14081
+ diagnostics: exports_external.array(extensionDiagnosticSchema)
14082
+ });
14083
+
14049
14084
  // ../pstdio-api-contracts/src/extensions/kanban-renderer.ts
14050
14085
  var kanbanRendererEnumOptionSchema = exports_external.object({
14051
14086
  value: exports_external.string(),
@@ -14207,6 +14242,7 @@ var extensionPanelRecordBaseSchema = exports_external.object({
14207
14242
  id: exports_external.string(),
14208
14243
  extensionId: exports_external.string(),
14209
14244
  title: localizableStringSchema,
14245
+ icon: exports_external.string().optional(),
14210
14246
  region: workbenchRegionSchema,
14211
14247
  closable: exports_external.boolean(),
14212
14248
  group: exports_external.string().optional(),
@@ -14250,6 +14286,16 @@ var extensionTreeItemActionSchema = exports_external.discriminatedUnion("kind",
14250
14286
  exports_external.object({ kind: exports_external.literal("route"), route: exports_external.string() }),
14251
14287
  exports_external.object({ kind: exports_external.literal("href"), href: exports_external.string() })
14252
14288
  ]);
14289
+ var extensionActivityItemRecordSchema = exports_external.object({
14290
+ id: exports_external.string(),
14291
+ extensionId: exports_external.string(),
14292
+ title: localizableStringSchema,
14293
+ icon: exports_external.string(),
14294
+ modes: exports_external.array(exports_external.string()),
14295
+ placement: extensionPlacementSchema.optional(),
14296
+ commandId: exports_external.string(),
14297
+ params: jsonObjectSchema.optional()
14298
+ });
14253
14299
  var extensionTreeItemContributionSchema = exports_external.object({
14254
14300
  id: exports_external.string(),
14255
14301
  extensionId: exports_external.string(),
@@ -14337,6 +14383,7 @@ var extensionSettingsPanelRecordSchema = exports_external.object({
14337
14383
  scope: workbenchSettingsScopeSchema.optional(),
14338
14384
  title: localizableStringSchema,
14339
14385
  icon: exports_external.string().optional(),
14386
+ section: exports_external.string().optional(),
14340
14387
  webview: extensionWebviewContributionSchema
14341
14388
  });
14342
14389
  var extensionSettingDefinitionRecordSchema = exports_external.object({
@@ -14362,6 +14409,13 @@ var updateExtensionSettingRequestSchema = exports_external.object({
14362
14409
  var workbenchExtensionSettingsPanelRecordSchema = extensionSettingsPanelRecordSchema.extend({
14363
14410
  webview: workbenchExtensionWebviewSchema
14364
14411
  });
14412
+ var extensionSettingsSectionRecordSchema = exports_external.object({
14413
+ id: exports_external.string(),
14414
+ extensionId: exports_external.string(),
14415
+ title: localizableStringSchema,
14416
+ scope: workbenchSettingsScopeSchema.optional(),
14417
+ order: exports_external.number().optional()
14418
+ });
14365
14419
 
14366
14420
  // ../pstdio-api-contracts/src/extensions/check.ts
14367
14421
  var extensionsCheckResponseSchema = exports_external.object({
@@ -14384,6 +14438,7 @@ var extensionsCheckResponseSchema = exports_external.object({
14384
14438
  routes: exports_external.array(extensionRouteRecordSchema),
14385
14439
  navigation: exports_external.array(extensionNavigationRecordSchema),
14386
14440
  treeItems: exports_external.array(extensionTreeItemContributionSchema),
14441
+ activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14387
14442
  settingsPanels: exports_external.array(extensionSettingsPanelRecordSchema),
14388
14443
  kanbanRenderers: exports_external.array(extensionKanbanRendererRecordSchema),
14389
14444
  dataTableRenderers: exports_external.array(extensionDataTableRendererRecordSchema).optional(),
@@ -14395,7 +14450,20 @@ var extensionsCheckResponseSchema = exports_external.object({
14395
14450
  settingsDefinitions: exports_external.array(extensionSettingDefinitionRecordSchema).optional(),
14396
14451
  templates: exports_external.array(extensionViewLikeSchema),
14397
14452
  skills: exports_external.array(extensionViewLikeSchema),
14398
- diagnostics: exports_external.array(extensionDiagnosticSchema)
14453
+ diagnostics: exports_external.array(extensionDiagnosticSchema),
14454
+ hostCompatibility: extensionHostCompatibilitySchema
14455
+ });
14456
+ var workbenchExtensionHarnessRecordSchema = exports_external.object({
14457
+ id: exports_external.string(),
14458
+ localId: exports_external.string(),
14459
+ extensionId: exports_external.string(),
14460
+ label: localizableStringSchema.optional()
14461
+ });
14462
+ var workbenchExtensionViewRecordSchema = exports_external.object({
14463
+ id: exports_external.string(),
14464
+ localId: exports_external.string(),
14465
+ extensionId: exports_external.string(),
14466
+ title: localizableStringSchema.optional()
14399
14467
  });
14400
14468
  var workbenchExtensionMetadataSchema = exports_external.object({
14401
14469
  extensions: exports_external.array(extensionRecordSchema),
@@ -14407,6 +14475,8 @@ var workbenchExtensionMetadataSchema = exports_external.object({
14407
14475
  routes: exports_external.array(workbenchExtensionRouteRecordSchema),
14408
14476
  navigation: exports_external.array(extensionNavigationRecordSchema),
14409
14477
  treeItems: exports_external.array(extensionTreeItemContributionSchema).optional(),
14478
+ activityItems: exports_external.array(extensionActivityItemRecordSchema).optional(),
14479
+ settingsSections: exports_external.array(extensionSettingsSectionRecordSchema).optional(),
14410
14480
  settingsPanels: exports_external.array(workbenchExtensionSettingsPanelRecordSchema),
14411
14481
  kanbanRenderers: exports_external.array(extensionKanbanRendererRecordSchema).optional(),
14412
14482
  dataTableRenderers: exports_external.array(extensionDataTableRendererRecordSchema).optional(),
@@ -14416,6 +14486,11 @@ var workbenchExtensionMetadataSchema = exports_external.object({
14416
14486
  controlsRenderers: exports_external.array(extensionControlsRendererRecordSchema).optional(),
14417
14487
  keybindings: exports_external.array(extensionKeybindingRecordSchema).optional(),
14418
14488
  settingsDefinitions: exports_external.array(extensionSettingDefinitionRecordSchema).optional(),
14489
+ automations: exports_external.array(workbenchExtensionAutomationRecordSchema).optional(),
14490
+ harnesses: exports_external.array(workbenchExtensionHarnessRecordSchema).optional(),
14491
+ skills: exports_external.array(workbenchExtensionViewRecordSchema).optional(),
14492
+ templates: exports_external.array(workbenchExtensionViewRecordSchema).optional(),
14493
+ themes: exports_external.array(workbenchExtensionViewRecordSchema).optional(),
14419
14494
  diagnostics: exports_external.array(extensionDiagnosticSchema)
14420
14495
  });
14421
14496
  var listExtensionCommandsResponseSchema = exports_external.object({
@@ -14547,6 +14622,10 @@ var projectExtensionInstanceSchema = exports_external.object({
14547
14622
  version: exports_external.string().nullable().optional(),
14548
14623
  description: exports_external.string().optional(),
14549
14624
  sourcePath: exports_external.string(),
14625
+ scope: exports_external.enum(["repo", "global"]),
14626
+ status: exports_external.enum(["pending", "loaded", "error", "missing", "disabled"]),
14627
+ lastLoadedAt: exports_external.string().nullable().optional(),
14628
+ lastError: jsonObjectSchema.nullable().optional(),
14550
14629
  enabled: exports_external.boolean(),
14551
14630
  config: exports_external.record(exports_external.string(), exports_external.unknown())
14552
14631
  });
@@ -14556,6 +14635,13 @@ var listProjectExtensionsResponseSchema = exports_external.object({
14556
14635
  var setProjectExtensionEnabledRequestSchema = exports_external.object({
14557
14636
  enabled: exports_external.boolean()
14558
14637
  });
14638
+ var setExtensionAutomationEnabledRequestSchema = exports_external.object({
14639
+ enabled: exports_external.boolean()
14640
+ });
14641
+ var attemptExtensionFixResponseSchema = exports_external.object({
14642
+ sessionId: exports_external.string(),
14643
+ title: exports_external.string()
14644
+ });
14559
14645
  var updateInstalledExtensionTemplateInputSchema = exports_external.object({
14560
14646
  content: exports_external.string().min(1)
14561
14647
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pstdio/sdk",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/pufflyai/prompt-studio"