@opencode-ai/sdk 1.0.223 → 1.1.1

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,5 +1,5 @@
1
1
  import { type Client, type Options as Options2, type TDataShape } from "./client/index.js";
2
- import type { AgentPartInput, AppAgentsResponses, AppLogErrors, AppLogResponses, Auth as Auth2, AuthSetErrors, AuthSetResponses, CommandListResponses, Config as Config2, ConfigGetResponses, ConfigProvidersResponses, ConfigUpdateErrors, ConfigUpdateResponses, EventSubscribeResponses, EventTuiCommandExecute, EventTuiPromptAppend, EventTuiToastShow, FileListResponses, FilePartInput, FileReadResponses, FileStatusResponses, FindFilesResponses, FindSymbolsResponses, FindTextResponses, FormatterStatusResponses, GlobalDisposeResponses, GlobalEventResponses, GlobalHealthResponses, InstanceDisposeResponses, LspStatusResponses, McpAddErrors, McpAddResponses, McpAuthAuthenticateErrors, McpAuthAuthenticateResponses, McpAuthCallbackErrors, McpAuthCallbackResponses, McpAuthRemoveErrors, McpAuthRemoveResponses, McpAuthStartErrors, McpAuthStartResponses, McpConnectResponses, McpDisconnectResponses, McpLocalConfig, McpRemoteConfig, McpStatusResponses, Part as Part2, PartDeleteErrors, PartDeleteResponses, PartUpdateErrors, PartUpdateResponses, PathGetResponses, PermissionListResponses, PermissionRespondErrors, PermissionRespondResponses, ProjectCurrentResponses, ProjectListResponses, ProjectUpdateErrors, ProjectUpdateResponses, ProviderAuthResponses, ProviderListResponses, ProviderOauthAuthorizeErrors, ProviderOauthAuthorizeResponses, ProviderOauthCallbackErrors, ProviderOauthCallbackResponses, PtyConnectErrors, PtyConnectResponses, PtyCreateErrors, PtyCreateResponses, PtyGetErrors, PtyGetResponses, PtyListResponses, PtyRemoveErrors, PtyRemoveResponses, PtyUpdateErrors, PtyUpdateResponses, SessionAbortErrors, SessionAbortResponses, SessionChildrenErrors, SessionChildrenResponses, SessionCommandErrors, SessionCommandResponses, SessionCreateErrors, SessionCreateResponses, SessionDeleteErrors, SessionDeleteResponses, SessionDiffErrors, SessionDiffResponses, SessionForkResponses, SessionGetErrors, SessionGetResponses, SessionInitErrors, SessionInitResponses, SessionListResponses, SessionMessageErrors, SessionMessageResponses, SessionMessagesErrors, SessionMessagesResponses, SessionPromptAsyncErrors, SessionPromptAsyncResponses, SessionPromptErrors, SessionPromptResponses, SessionRevertErrors, SessionRevertResponses, SessionShareErrors, SessionShareResponses, SessionShellErrors, SessionShellResponses, SessionStatusErrors, SessionStatusResponses, SessionSummarizeErrors, SessionSummarizeResponses, SessionTodoErrors, SessionTodoResponses, SessionUnrevertErrors, SessionUnrevertResponses, SessionUnshareErrors, SessionUnshareResponses, SessionUpdateErrors, SessionUpdateResponses, SubtaskPartInput, TextPartInput, ToolIdsErrors, ToolIdsResponses, ToolListErrors, ToolListResponses, TuiAppendPromptErrors, TuiAppendPromptResponses, TuiClearPromptResponses, TuiControlNextResponses, TuiControlResponseResponses, TuiExecuteCommandErrors, TuiExecuteCommandResponses, TuiOpenHelpResponses, TuiOpenModelsResponses, TuiOpenSessionsResponses, TuiOpenThemesResponses, TuiPublishErrors, TuiPublishResponses, TuiShowToastResponses, TuiSubmitPromptResponses, VcsGetResponses } from "./types.gen.js";
2
+ import type { AgentPartInput, AppAgentsResponses, AppLogErrors, AppLogResponses, Auth as Auth2, AuthSetErrors, AuthSetResponses, CommandListResponses, Config as Config2, ConfigGetResponses, ConfigProvidersResponses, ConfigUpdateErrors, ConfigUpdateResponses, EventSubscribeResponses, EventTuiCommandExecute, EventTuiPromptAppend, EventTuiSessionSelect, EventTuiToastShow, ExperimentalResourceListResponses, FileListResponses, FilePartInput, FileReadResponses, FileStatusResponses, FindFilesResponses, FindSymbolsResponses, FindTextResponses, FormatterStatusResponses, GlobalDisposeResponses, GlobalEventResponses, GlobalHealthResponses, InstanceDisposeResponses, LspStatusResponses, McpAddErrors, McpAddResponses, McpAuthAuthenticateErrors, McpAuthAuthenticateResponses, McpAuthCallbackErrors, McpAuthCallbackResponses, McpAuthRemoveErrors, McpAuthRemoveResponses, McpAuthStartErrors, McpAuthStartResponses, McpConnectResponses, McpDisconnectResponses, McpLocalConfig, McpRemoteConfig, McpStatusResponses, Part as Part2, PartDeleteErrors, PartDeleteResponses, PartUpdateErrors, PartUpdateResponses, PathGetResponses, PermissionListResponses, PermissionReplyErrors, PermissionReplyResponses, PermissionRespondErrors, PermissionRespondResponses, PermissionRuleset, ProjectCurrentResponses, ProjectListResponses, ProjectUpdateErrors, ProjectUpdateResponses, ProviderAuthResponses, ProviderListResponses, ProviderOauthAuthorizeErrors, ProviderOauthAuthorizeResponses, ProviderOauthCallbackErrors, ProviderOauthCallbackResponses, PtyConnectErrors, PtyConnectResponses, PtyCreateErrors, PtyCreateResponses, PtyGetErrors, PtyGetResponses, PtyListResponses, PtyRemoveErrors, PtyRemoveResponses, PtyUpdateErrors, PtyUpdateResponses, SessionAbortErrors, SessionAbortResponses, SessionChildrenErrors, SessionChildrenResponses, SessionCommandErrors, SessionCommandResponses, SessionCreateErrors, SessionCreateResponses, SessionDeleteErrors, SessionDeleteResponses, SessionDiffErrors, SessionDiffResponses, SessionForkResponses, SessionGetErrors, SessionGetResponses, SessionInitErrors, SessionInitResponses, SessionListResponses, SessionMessageErrors, SessionMessageResponses, SessionMessagesErrors, SessionMessagesResponses, SessionPromptAsyncErrors, SessionPromptAsyncResponses, SessionPromptErrors, SessionPromptResponses, SessionRevertErrors, SessionRevertResponses, SessionShareErrors, SessionShareResponses, SessionShellErrors, SessionShellResponses, SessionStatusErrors, SessionStatusResponses, SessionSummarizeErrors, SessionSummarizeResponses, SessionTodoErrors, SessionTodoResponses, SessionUnrevertErrors, SessionUnrevertResponses, SessionUnshareErrors, SessionUnshareResponses, SessionUpdateErrors, SessionUpdateResponses, SubtaskPartInput, TextPartInput, ToolIdsErrors, ToolIdsResponses, ToolListErrors, ToolListResponses, TuiAppendPromptErrors, TuiAppendPromptResponses, TuiClearPromptResponses, TuiControlNextResponses, TuiControlResponseResponses, TuiExecuteCommandErrors, TuiExecuteCommandResponses, TuiOpenHelpResponses, TuiOpenModelsResponses, TuiOpenSessionsResponses, TuiOpenThemesResponses, TuiPublishErrors, TuiPublishResponses, TuiSelectSessionErrors, TuiSelectSessionResponses, TuiShowToastResponses, TuiSubmitPromptResponses, VcsGetResponses, WorktreeCreateErrors, WorktreeCreateInput, WorktreeCreateResponses, WorktreeListResponses } from "./types.gen.js";
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -210,6 +210,25 @@ export declare class Path extends HeyApiClient {
210
210
  directory?: string;
211
211
  }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<PathGetResponses, unknown, ThrowOnError, "fields">;
212
212
  }
213
+ export declare class Worktree extends HeyApiClient {
214
+ /**
215
+ * List worktrees
216
+ *
217
+ * List all sandbox worktrees for the current project.
218
+ */
219
+ list<ThrowOnError extends boolean = false>(parameters?: {
220
+ directory?: string;
221
+ }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<WorktreeListResponses, unknown, ThrowOnError, "fields">;
222
+ /**
223
+ * Create worktree
224
+ *
225
+ * Create a new git worktree for the current project.
226
+ */
227
+ create<ThrowOnError extends boolean = false>(parameters?: {
228
+ directory?: string;
229
+ worktreeCreateInput?: WorktreeCreateInput;
230
+ }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<WorktreeCreateResponses, WorktreeCreateErrors, ThrowOnError, "fields">;
231
+ }
213
232
  export declare class Vcs extends HeyApiClient {
214
233
  /**
215
234
  * Get VCS info
@@ -238,6 +257,7 @@ export declare class Session extends HeyApiClient {
238
257
  directory?: string;
239
258
  parentID?: string;
240
259
  title?: string;
260
+ permission?: PermissionRuleset;
241
261
  }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<SessionCreateResponses, SessionCreateErrors, ThrowOnError, "fields">;
242
262
  /**
243
263
  * Get session status
@@ -508,6 +528,8 @@ export declare class Permission extends HeyApiClient {
508
528
  * Respond to permission
509
529
  *
510
530
  * Approve or deny a permission request from the AI assistant.
531
+ *
532
+ * @deprecated
511
533
  */
512
534
  respond<ThrowOnError extends boolean = false>(parameters: {
513
535
  sessionID: string;
@@ -515,6 +537,17 @@ export declare class Permission extends HeyApiClient {
515
537
  directory?: string;
516
538
  response?: "once" | "always" | "reject";
517
539
  }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<PermissionRespondResponses, PermissionRespondErrors, ThrowOnError, "fields">;
540
+ /**
541
+ * Respond to permission request
542
+ *
543
+ * Approve or deny a permission request from the AI assistant.
544
+ */
545
+ reply<ThrowOnError extends boolean = false>(parameters: {
546
+ requestID: string;
547
+ directory?: string;
548
+ reply?: "once" | "always" | "reject";
549
+ message?: string;
550
+ }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<PermissionReplyResponses, PermissionReplyErrors, ThrowOnError, "fields">;
518
551
  /**
519
552
  * List pending permissions
520
553
  *
@@ -744,6 +777,19 @@ export declare class Mcp extends HeyApiClient {
744
777
  }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<McpDisconnectResponses, unknown, ThrowOnError, "fields">;
745
778
  auth: Auth;
746
779
  }
780
+ export declare class Resource extends HeyApiClient {
781
+ /**
782
+ * Get MCP resources
783
+ *
784
+ * Get all available MCP resources from connected servers. Optionally filter by name.
785
+ */
786
+ list<ThrowOnError extends boolean = false>(parameters?: {
787
+ directory?: string;
788
+ }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<ExperimentalResourceListResponses, unknown, ThrowOnError, "fields">;
789
+ }
790
+ export declare class Experimental extends HeyApiClient {
791
+ resource: Resource;
792
+ }
747
793
  export declare class Lsp extends HeyApiClient {
748
794
  /**
749
795
  * Get LSP status
@@ -869,8 +915,17 @@ export declare class Tui extends HeyApiClient {
869
915
  */
870
916
  publish<ThrowOnError extends boolean = false>(parameters?: {
871
917
  directory?: string;
872
- body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow;
918
+ body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow | EventTuiSessionSelect;
873
919
  }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<TuiPublishResponses, TuiPublishErrors, ThrowOnError, "fields">;
920
+ /**
921
+ * Select session
922
+ *
923
+ * Navigate the TUI to display the specified session.
924
+ */
925
+ selectSession<ThrowOnError extends boolean = false>(parameters?: {
926
+ directory?: string;
927
+ sessionID?: string;
928
+ }, options?: Options<never, ThrowOnError>): import("./client/types.gen.js").RequestResult<TuiSelectSessionResponses, TuiSelectSessionErrors, ThrowOnError, "fields">;
874
929
  control: Control;
875
930
  }
876
931
  export declare class Event extends HeyApiClient {
@@ -896,6 +951,7 @@ export declare class OpencodeClient extends HeyApiClient {
896
951
  tool: Tool;
897
952
  instance: Instance;
898
953
  path: Path;
954
+ worktree: Worktree;
899
955
  vcs: Vcs;
900
956
  session: Session;
901
957
  part: Part;
@@ -906,6 +962,7 @@ export declare class OpencodeClient extends HeyApiClient {
906
962
  file: File;
907
963
  app: App;
908
964
  mcp: Mcp;
965
+ experimental: Experimental;
909
966
  lsp: Lsp;
910
967
  formatter: Formatter;
911
968
  tui: Tui;
@@ -361,6 +361,46 @@ export class Path extends HeyApiClient {
361
361
  });
362
362
  }
363
363
  }
364
+ export class Worktree extends HeyApiClient {
365
+ /**
366
+ * List worktrees
367
+ *
368
+ * List all sandbox worktrees for the current project.
369
+ */
370
+ list(parameters, options) {
371
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]);
372
+ return (options?.client ?? this.client).get({
373
+ url: "/experimental/worktree",
374
+ ...options,
375
+ ...params,
376
+ });
377
+ }
378
+ /**
379
+ * Create worktree
380
+ *
381
+ * Create a new git worktree for the current project.
382
+ */
383
+ create(parameters, options) {
384
+ const params = buildClientParams([parameters], [
385
+ {
386
+ args: [
387
+ { in: "query", key: "directory" },
388
+ { key: "worktreeCreateInput", map: "body" },
389
+ ],
390
+ },
391
+ ]);
392
+ return (options?.client ?? this.client).post({
393
+ url: "/experimental/worktree",
394
+ ...options,
395
+ ...params,
396
+ headers: {
397
+ "Content-Type": "application/json",
398
+ ...options?.headers,
399
+ ...params.headers,
400
+ },
401
+ });
402
+ }
403
+ }
364
404
  export class Vcs extends HeyApiClient {
365
405
  /**
366
406
  * Get VCS info
@@ -402,6 +442,7 @@ export class Session extends HeyApiClient {
402
442
  { in: "query", key: "directory" },
403
443
  { in: "body", key: "parentID" },
404
444
  { in: "body", key: "title" },
445
+ { in: "body", key: "permission" },
405
446
  ],
406
447
  },
407
448
  ]);
@@ -967,6 +1008,8 @@ export class Permission extends HeyApiClient {
967
1008
  * Respond to permission
968
1009
  *
969
1010
  * Approve or deny a permission request from the AI assistant.
1011
+ *
1012
+ * @deprecated
970
1013
  */
971
1014
  respond(parameters, options) {
972
1015
  const params = buildClientParams([parameters], [
@@ -990,6 +1033,33 @@ export class Permission extends HeyApiClient {
990
1033
  },
991
1034
  });
992
1035
  }
1036
+ /**
1037
+ * Respond to permission request
1038
+ *
1039
+ * Approve or deny a permission request from the AI assistant.
1040
+ */
1041
+ reply(parameters, options) {
1042
+ const params = buildClientParams([parameters], [
1043
+ {
1044
+ args: [
1045
+ { in: "path", key: "requestID" },
1046
+ { in: "query", key: "directory" },
1047
+ { in: "body", key: "reply" },
1048
+ { in: "body", key: "message" },
1049
+ ],
1050
+ },
1051
+ ]);
1052
+ return (options?.client ?? this.client).post({
1053
+ url: "/permission/{requestID}/reply",
1054
+ ...options,
1055
+ ...params,
1056
+ headers: {
1057
+ "Content-Type": "application/json",
1058
+ ...options?.headers,
1059
+ ...params.headers,
1060
+ },
1061
+ });
1062
+ }
993
1063
  /**
994
1064
  * List pending permissions
995
1065
  *
@@ -1458,6 +1528,24 @@ export class Mcp extends HeyApiClient {
1458
1528
  }
1459
1529
  auth = new Auth({ client: this.client });
1460
1530
  }
1531
+ export class Resource extends HeyApiClient {
1532
+ /**
1533
+ * Get MCP resources
1534
+ *
1535
+ * Get all available MCP resources from connected servers. Optionally filter by name.
1536
+ */
1537
+ list(parameters, options) {
1538
+ const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]);
1539
+ return (options?.client ?? this.client).get({
1540
+ url: "/experimental/resource",
1541
+ ...options,
1542
+ ...params,
1543
+ });
1544
+ }
1545
+ }
1546
+ export class Experimental extends HeyApiClient {
1547
+ resource = new Resource({ client: this.client });
1548
+ }
1461
1549
  export class Lsp extends HeyApiClient {
1462
1550
  /**
1463
1551
  * Get LSP status
@@ -1696,6 +1784,31 @@ export class Tui extends HeyApiClient {
1696
1784
  },
1697
1785
  });
1698
1786
  }
1787
+ /**
1788
+ * Select session
1789
+ *
1790
+ * Navigate the TUI to display the specified session.
1791
+ */
1792
+ selectSession(parameters, options) {
1793
+ const params = buildClientParams([parameters], [
1794
+ {
1795
+ args: [
1796
+ { in: "query", key: "directory" },
1797
+ { in: "body", key: "sessionID" },
1798
+ ],
1799
+ },
1800
+ ]);
1801
+ return (options?.client ?? this.client).post({
1802
+ url: "/tui/select-session",
1803
+ ...options,
1804
+ ...params,
1805
+ headers: {
1806
+ "Content-Type": "application/json",
1807
+ ...options?.headers,
1808
+ ...params.headers,
1809
+ },
1810
+ });
1811
+ }
1699
1812
  control = new Control({ client: this.client });
1700
1813
  }
1701
1814
  export class Event extends HeyApiClient {
@@ -1726,6 +1839,7 @@ export class OpencodeClient extends HeyApiClient {
1726
1839
  tool = new Tool({ client: this.client });
1727
1840
  instance = new Instance({ client: this.client });
1728
1841
  path = new Path({ client: this.client });
1842
+ worktree = new Worktree({ client: this.client });
1729
1843
  vcs = new Vcs({ client: this.client });
1730
1844
  session = new Session({ client: this.client });
1731
1845
  part = new Part({ client: this.client });
@@ -1736,6 +1850,7 @@ export class OpencodeClient extends HeyApiClient {
1736
1850
  file = new File({ client: this.client });
1737
1851
  app = new App({ client: this.client });
1738
1852
  mcp = new Mcp({ client: this.client });
1853
+ experimental = new Experimental({ client: this.client });
1739
1854
  lsp = new Lsp({ client: this.client });
1740
1855
  formatter = new Formatter({ client: this.client });
1741
1856
  tui = new Tui({ client: this.client });
@@ -27,6 +27,7 @@ export type Project = {
27
27
  updated: number;
28
28
  initialized?: number;
29
29
  };
30
+ sandboxes: Array<string>;
30
31
  };
31
32
  export type EventProjectUpdated = {
32
33
  type: "project.updated";
@@ -224,7 +225,13 @@ export type SymbolSource = {
224
225
  name: string;
225
226
  kind: number;
226
227
  };
227
- export type FilePartSource = FileSource | SymbolSource;
228
+ export type ResourceSource = {
229
+ text: FilePartSourceText;
230
+ type: "resource";
231
+ clientName: string;
232
+ uri: string;
233
+ };
234
+ export type FilePartSource = FileSource | SymbolSource | ResourceSource;
228
235
  export type FilePart = {
229
236
  id: string;
230
237
  sessionID: string;
@@ -394,31 +401,59 @@ export type EventMessagePartRemoved = {
394
401
  partID: string;
395
402
  };
396
403
  };
397
- export type Permission = {
404
+ export type PermissionRequest = {
398
405
  id: string;
399
- type: string;
400
- pattern?: string | Array<string>;
401
406
  sessionID: string;
402
- messageID: string;
403
- callID?: string;
404
- title: string;
407
+ permission: string;
408
+ patterns: Array<string>;
405
409
  metadata: {
406
410
  [key: string]: unknown;
407
411
  };
408
- time: {
409
- created: number;
412
+ always: Array<string>;
413
+ tool?: {
414
+ messageID: string;
415
+ callID: string;
410
416
  };
411
417
  };
412
- export type EventPermissionUpdated = {
413
- type: "permission.updated";
414
- properties: Permission;
418
+ export type EventPermissionAsked = {
419
+ type: "permission.asked";
420
+ properties: PermissionRequest;
415
421
  };
416
422
  export type EventPermissionReplied = {
417
423
  type: "permission.replied";
418
424
  properties: {
419
425
  sessionID: string;
420
- permissionID: string;
421
- response: string;
426
+ requestID: string;
427
+ reply: "once" | "always" | "reject";
428
+ };
429
+ };
430
+ export type SessionStatus = {
431
+ type: "idle";
432
+ } | {
433
+ type: "retry";
434
+ attempt: number;
435
+ message: string;
436
+ next: number;
437
+ } | {
438
+ type: "busy";
439
+ };
440
+ export type EventSessionStatus = {
441
+ type: "session.status";
442
+ properties: {
443
+ sessionID: string;
444
+ status: SessionStatus;
445
+ };
446
+ };
447
+ export type EventSessionIdle = {
448
+ type: "session.idle";
449
+ properties: {
450
+ sessionID: string;
451
+ };
452
+ };
453
+ export type EventSessionCompacted = {
454
+ type: "session.compacted";
455
+ properties: {
456
+ sessionID: string;
422
457
  };
423
458
  };
424
459
  export type EventFileEdited = {
@@ -452,35 +487,6 @@ export type EventTodoUpdated = {
452
487
  todos: Array<Todo>;
453
488
  };
454
489
  };
455
- export type SessionStatus = {
456
- type: "idle";
457
- } | {
458
- type: "retry";
459
- attempt: number;
460
- message: string;
461
- next: number;
462
- } | {
463
- type: "busy";
464
- };
465
- export type EventSessionStatus = {
466
- type: "session.status";
467
- properties: {
468
- sessionID: string;
469
- status: SessionStatus;
470
- };
471
- };
472
- export type EventSessionIdle = {
473
- type: "session.idle";
474
- properties: {
475
- sessionID: string;
476
- };
477
- };
478
- export type EventSessionCompacted = {
479
- type: "session.compacted";
480
- properties: {
481
- sessionID: string;
482
- };
483
- };
484
490
  export type EventTuiPromptAppend = {
485
491
  type: "tui.prompt.append";
486
492
  properties: {
@@ -505,6 +511,15 @@ export type EventTuiToastShow = {
505
511
  duration?: number;
506
512
  };
507
513
  };
514
+ export type EventTuiSessionSelect = {
515
+ type: "tui.session.select";
516
+ properties: {
517
+ /**
518
+ * Session ID to navigate to
519
+ */
520
+ sessionID: string;
521
+ };
522
+ };
508
523
  export type EventMcpToolsChanged = {
509
524
  type: "mcp.tools.changed";
510
525
  properties: {
@@ -520,6 +535,13 @@ export type EventCommandExecuted = {
520
535
  messageID: string;
521
536
  };
522
537
  };
538
+ export type PermissionAction = "allow" | "deny" | "ask";
539
+ export type PermissionRule = {
540
+ permission: string;
541
+ pattern: string;
542
+ action: PermissionAction;
543
+ };
544
+ export type PermissionRuleset = Array<PermissionRule>;
523
545
  export type Session = {
524
546
  id: string;
525
547
  projectID: string;
@@ -542,6 +564,7 @@ export type Session = {
542
564
  compacting?: number;
543
565
  archived?: number;
544
566
  };
567
+ permission?: PermissionRuleset;
545
568
  revert?: {
546
569
  messageID: string;
547
570
  partID?: string;
@@ -640,7 +663,7 @@ export type EventGlobalDisposed = {
640
663
  [key: string]: unknown;
641
664
  };
642
665
  };
643
- export type Event = EventInstallationUpdated | EventInstallationUpdateAvailable | EventProjectUpdated | EventServerInstanceDisposed | EventLspClientDiagnostics | EventLspUpdated | EventMessageUpdated | EventMessageRemoved | EventMessagePartUpdated | EventMessagePartRemoved | EventPermissionUpdated | EventPermissionReplied | EventFileEdited | EventTodoUpdated | EventSessionStatus | EventSessionIdle | EventSessionCompacted | EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow | EventMcpToolsChanged | EventCommandExecuted | EventSessionCreated | EventSessionUpdated | EventSessionDeleted | EventSessionDiff | EventSessionError | EventFileWatcherUpdated | EventVcsBranchUpdated | EventPtyCreated | EventPtyUpdated | EventPtyExited | EventPtyDeleted | EventServerConnected | EventGlobalDisposed;
666
+ export type Event = EventInstallationUpdated | EventInstallationUpdateAvailable | EventProjectUpdated | EventServerInstanceDisposed | EventLspClientDiagnostics | EventLspUpdated | EventMessageUpdated | EventMessageRemoved | EventMessagePartUpdated | EventMessagePartRemoved | EventPermissionAsked | EventPermissionReplied | EventSessionStatus | EventSessionIdle | EventSessionCompacted | EventFileEdited | EventTodoUpdated | EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow | EventTuiSessionSelect | EventMcpToolsChanged | EventCommandExecuted | EventSessionCreated | EventSessionUpdated | EventSessionDeleted | EventSessionDiff | EventSessionError | EventFileWatcherUpdated | EventVcsBranchUpdated | EventPtyCreated | EventPtyUpdated | EventPtyExited | EventPtyDeleted | EventServerConnected | EventGlobalDisposed;
644
667
  export type GlobalEvent = {
645
668
  directory: string;
646
669
  payload: Event;
@@ -1036,11 +1059,37 @@ export type ServerConfig = {
1036
1059
  */
1037
1060
  cors?: Array<string>;
1038
1061
  };
1062
+ export type PermissionActionConfig = "ask" | "allow" | "deny";
1063
+ export type PermissionObjectConfig = {
1064
+ [key: string]: PermissionActionConfig;
1065
+ };
1066
+ export type PermissionRuleConfig = PermissionActionConfig | PermissionObjectConfig;
1067
+ export type PermissionConfig = {
1068
+ read?: PermissionRuleConfig;
1069
+ edit?: PermissionRuleConfig;
1070
+ glob?: PermissionRuleConfig;
1071
+ grep?: PermissionRuleConfig;
1072
+ list?: PermissionRuleConfig;
1073
+ bash?: PermissionRuleConfig;
1074
+ task?: PermissionRuleConfig;
1075
+ external_directory?: PermissionRuleConfig;
1076
+ todowrite?: PermissionActionConfig;
1077
+ todoread?: PermissionActionConfig;
1078
+ webfetch?: PermissionActionConfig;
1079
+ websearch?: PermissionActionConfig;
1080
+ codesearch?: PermissionActionConfig;
1081
+ lsp?: PermissionRuleConfig;
1082
+ doom_loop?: PermissionActionConfig;
1083
+ [key: string]: PermissionRuleConfig | PermissionActionConfig | undefined;
1084
+ } | PermissionActionConfig;
1039
1085
  export type AgentConfig = {
1040
1086
  model?: string;
1041
1087
  temperature?: number;
1042
1088
  top_p?: number;
1043
1089
  prompt?: string;
1090
+ /**
1091
+ * @deprecated Use 'permission' field instead
1092
+ */
1044
1093
  tools?: {
1045
1094
  [key: string]: boolean;
1046
1095
  };
@@ -1050,6 +1099,9 @@ export type AgentConfig = {
1050
1099
  */
1051
1100
  description?: string;
1052
1101
  mode?: "subagent" | "primary" | "all";
1102
+ options?: {
1103
+ [key: string]: unknown;
1104
+ };
1053
1105
  /**
1054
1106
  * Hex color code for the agent (e.g., #FF5733)
1055
1107
  */
@@ -1057,33 +1109,17 @@ export type AgentConfig = {
1057
1109
  /**
1058
1110
  * Maximum number of agentic iterations before forcing text-only response
1059
1111
  */
1112
+ steps?: number;
1113
+ /**
1114
+ * @deprecated Use 'steps' field instead.
1115
+ */
1060
1116
  maxSteps?: number;
1061
- permission?: {
1062
- edit?: "ask" | "allow" | "deny";
1063
- bash?: "ask" | "allow" | "deny" | {
1064
- [key: string]: "ask" | "allow" | "deny";
1065
- };
1066
- skill?: "ask" | "allow" | "deny" | {
1067
- [key: string]: "ask" | "allow" | "deny";
1068
- };
1069
- webfetch?: "ask" | "allow" | "deny";
1070
- doom_loop?: "ask" | "allow" | "deny";
1071
- external_directory?: "ask" | "allow" | "deny";
1072
- };
1117
+ permission?: PermissionConfig;
1073
1118
  [key: string]: unknown | string | number | {
1074
1119
  [key: string]: boolean;
1075
- } | boolean | "subagent" | "primary" | "all" | string | number | {
1076
- edit?: "ask" | "allow" | "deny";
1077
- bash?: "ask" | "allow" | "deny" | {
1078
- [key: string]: "ask" | "allow" | "deny";
1079
- };
1080
- skill?: "ask" | "allow" | "deny" | {
1081
- [key: string]: "ask" | "allow" | "deny";
1082
- };
1083
- webfetch?: "ask" | "allow" | "deny";
1084
- doom_loop?: "ask" | "allow" | "deny";
1085
- external_directory?: "ask" | "allow" | "deny";
1086
- } | undefined;
1120
+ } | boolean | "subagent" | "primary" | "all" | {
1121
+ [key: string]: unknown;
1122
+ } | string | number | PermissionConfig | undefined;
1087
1123
  };
1088
1124
  export type ProviderConfig = {
1089
1125
  api?: string;
@@ -1357,7 +1393,9 @@ export type Config = {
1357
1393
  * MCP (Model Context Protocol) server configurations
1358
1394
  */
1359
1395
  mcp?: {
1360
- [key: string]: McpLocalConfig | McpRemoteConfig;
1396
+ [key: string]: McpLocalConfig | McpRemoteConfig | {
1397
+ enabled: boolean;
1398
+ };
1361
1399
  };
1362
1400
  formatter?: false | {
1363
1401
  [key: string]: {
@@ -1389,18 +1427,7 @@ export type Config = {
1389
1427
  */
1390
1428
  instructions?: Array<string>;
1391
1429
  layout?: LayoutConfig;
1392
- permission?: {
1393
- edit?: "ask" | "allow" | "deny";
1394
- bash?: "ask" | "allow" | "deny" | {
1395
- [key: string]: "ask" | "allow" | "deny";
1396
- };
1397
- skill?: "ask" | "allow" | "deny" | {
1398
- [key: string]: "ask" | "allow" | "deny";
1399
- };
1400
- webfetch?: "ask" | "allow" | "deny";
1401
- doom_loop?: "ask" | "allow" | "deny";
1402
- external_directory?: "ask" | "allow" | "deny";
1403
- };
1430
+ permission?: PermissionConfig;
1404
1431
  tools?: {
1405
1432
  [key: string]: boolean;
1406
1433
  };
@@ -1478,6 +1505,15 @@ export type Path = {
1478
1505
  worktree: string;
1479
1506
  directory: string;
1480
1507
  };
1508
+ export type Worktree = {
1509
+ name: string;
1510
+ branch: string;
1511
+ directory: string;
1512
+ };
1513
+ export type WorktreeCreateInput = {
1514
+ name?: string;
1515
+ startCommand?: string;
1516
+ };
1481
1517
  export type VcsInfo = {
1482
1518
  branch: string;
1483
1519
  };
@@ -1668,34 +1704,19 @@ export type Agent = {
1668
1704
  mode: "subagent" | "primary" | "all";
1669
1705
  native?: boolean;
1670
1706
  hidden?: boolean;
1671
- default?: boolean;
1672
1707
  topP?: number;
1673
1708
  temperature?: number;
1674
1709
  color?: string;
1675
- permission: {
1676
- edit: "ask" | "allow" | "deny";
1677
- bash: {
1678
- [key: string]: "ask" | "allow" | "deny";
1679
- };
1680
- skill: {
1681
- [key: string]: "ask" | "allow" | "deny";
1682
- };
1683
- webfetch?: "ask" | "allow" | "deny";
1684
- doom_loop?: "ask" | "allow" | "deny";
1685
- external_directory?: "ask" | "allow" | "deny";
1686
- };
1710
+ permission: PermissionRuleset;
1687
1711
  model?: {
1688
1712
  modelID: string;
1689
1713
  providerID: string;
1690
1714
  };
1691
1715
  prompt?: string;
1692
- tools: {
1693
- [key: string]: boolean;
1694
- };
1695
1716
  options: {
1696
1717
  [key: string]: unknown;
1697
1718
  };
1698
- maxSteps?: number;
1719
+ steps?: number;
1699
1720
  };
1700
1721
  export type McpStatusConnected = {
1701
1722
  status: "connected";
@@ -1715,6 +1736,13 @@ export type McpStatusNeedsClientRegistration = {
1715
1736
  error: string;
1716
1737
  };
1717
1738
  export type McpStatus = McpStatusConnected | McpStatusDisabled | McpStatusFailed | McpStatusNeedsAuth | McpStatusNeedsClientRegistration;
1739
+ export type McpResource = {
1740
+ name: string;
1741
+ uri: string;
1742
+ description?: string;
1743
+ mimeType?: string;
1744
+ client: string;
1745
+ };
1718
1746
  export type LspStatus = {
1719
1747
  id: string;
1720
1748
  name: string;
@@ -2109,6 +2137,43 @@ export type PathGetResponses = {
2109
2137
  200: Path;
2110
2138
  };
2111
2139
  export type PathGetResponse = PathGetResponses[keyof PathGetResponses];
2140
+ export type WorktreeListData = {
2141
+ body?: never;
2142
+ path?: never;
2143
+ query?: {
2144
+ directory?: string;
2145
+ };
2146
+ url: "/experimental/worktree";
2147
+ };
2148
+ export type WorktreeListResponses = {
2149
+ /**
2150
+ * List of worktree directories
2151
+ */
2152
+ 200: Array<string>;
2153
+ };
2154
+ export type WorktreeListResponse = WorktreeListResponses[keyof WorktreeListResponses];
2155
+ export type WorktreeCreateData = {
2156
+ body?: WorktreeCreateInput;
2157
+ path?: never;
2158
+ query?: {
2159
+ directory?: string;
2160
+ };
2161
+ url: "/experimental/worktree";
2162
+ };
2163
+ export type WorktreeCreateErrors = {
2164
+ /**
2165
+ * Bad request
2166
+ */
2167
+ 400: BadRequestError;
2168
+ };
2169
+ export type WorktreeCreateError = WorktreeCreateErrors[keyof WorktreeCreateErrors];
2170
+ export type WorktreeCreateResponses = {
2171
+ /**
2172
+ * Worktree created
2173
+ */
2174
+ 200: Worktree;
2175
+ };
2176
+ export type WorktreeCreateResponse = WorktreeCreateResponses[keyof WorktreeCreateResponses];
2112
2177
  export type VcsGetData = {
2113
2178
  body?: never;
2114
2179
  path?: never;
@@ -2143,6 +2208,7 @@ export type SessionCreateData = {
2143
2208
  body?: {
2144
2209
  parentID?: string;
2145
2210
  title?: string;
2211
+ permission?: PermissionRuleset;
2146
2212
  };
2147
2213
  path?: never;
2148
2214
  query?: {
@@ -2585,6 +2651,9 @@ export type SessionPromptData = {
2585
2651
  };
2586
2652
  agent?: string;
2587
2653
  noReply?: boolean;
2654
+ /**
2655
+ * @deprecated tools and permissions have been merged, you can set permissions on the session itself now
2656
+ */
2588
2657
  tools?: {
2589
2658
  [key: string]: boolean;
2590
2659
  };
@@ -2749,6 +2818,9 @@ export type SessionPromptAsyncData = {
2749
2818
  };
2750
2819
  agent?: string;
2751
2820
  noReply?: boolean;
2821
+ /**
2822
+ * @deprecated tools and permissions have been merged, you can set permissions on the session itself now
2823
+ */
2752
2824
  tools?: {
2753
2825
  [key: string]: boolean;
2754
2826
  };
@@ -2954,6 +3026,37 @@ export type PermissionRespondResponses = {
2954
3026
  200: boolean;
2955
3027
  };
2956
3028
  export type PermissionRespondResponse = PermissionRespondResponses[keyof PermissionRespondResponses];
3029
+ export type PermissionReplyData = {
3030
+ body?: {
3031
+ reply: "once" | "always" | "reject";
3032
+ message?: string;
3033
+ };
3034
+ path: {
3035
+ requestID: string;
3036
+ };
3037
+ query?: {
3038
+ directory?: string;
3039
+ };
3040
+ url: "/permission/{requestID}/reply";
3041
+ };
3042
+ export type PermissionReplyErrors = {
3043
+ /**
3044
+ * Bad request
3045
+ */
3046
+ 400: BadRequestError;
3047
+ /**
3048
+ * Not found
3049
+ */
3050
+ 404: NotFoundError;
3051
+ };
3052
+ export type PermissionReplyError = PermissionReplyErrors[keyof PermissionReplyErrors];
3053
+ export type PermissionReplyResponses = {
3054
+ /**
3055
+ * Permission processed successfully
3056
+ */
3057
+ 200: boolean;
3058
+ };
3059
+ export type PermissionReplyResponse = PermissionReplyResponses[keyof PermissionReplyResponses];
2957
3060
  export type PermissionListData = {
2958
3061
  body?: never;
2959
3062
  path?: never;
@@ -2966,7 +3069,7 @@ export type PermissionListResponses = {
2966
3069
  /**
2967
3070
  * List of pending permissions
2968
3071
  */
2969
- 200: Array<Permission>;
3072
+ 200: Array<PermissionRequest>;
2970
3073
  };
2971
3074
  export type PermissionListResponse = PermissionListResponses[keyof PermissionListResponses];
2972
3075
  export type CommandListData = {
@@ -3535,6 +3638,23 @@ export type McpDisconnectResponses = {
3535
3638
  200: boolean;
3536
3639
  };
3537
3640
  export type McpDisconnectResponse = McpDisconnectResponses[keyof McpDisconnectResponses];
3641
+ export type ExperimentalResourceListData = {
3642
+ body?: never;
3643
+ path?: never;
3644
+ query?: {
3645
+ directory?: string;
3646
+ };
3647
+ url: "/experimental/resource";
3648
+ };
3649
+ export type ExperimentalResourceListResponses = {
3650
+ /**
3651
+ * MCP resources
3652
+ */
3653
+ 200: {
3654
+ [key: string]: McpResource;
3655
+ };
3656
+ };
3657
+ export type ExperimentalResourceListResponse = ExperimentalResourceListResponses[keyof ExperimentalResourceListResponses];
3538
3658
  export type LspStatusData = {
3539
3659
  body?: never;
3540
3660
  path?: never;
@@ -3727,7 +3847,7 @@ export type TuiShowToastResponses = {
3727
3847
  };
3728
3848
  export type TuiShowToastResponse = TuiShowToastResponses[keyof TuiShowToastResponses];
3729
3849
  export type TuiPublishData = {
3730
- body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow;
3850
+ body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow | EventTuiSessionSelect;
3731
3851
  path?: never;
3732
3852
  query?: {
3733
3853
  directory?: string;
@@ -3748,6 +3868,37 @@ export type TuiPublishResponses = {
3748
3868
  200: boolean;
3749
3869
  };
3750
3870
  export type TuiPublishResponse = TuiPublishResponses[keyof TuiPublishResponses];
3871
+ export type TuiSelectSessionData = {
3872
+ body?: {
3873
+ /**
3874
+ * Session ID to navigate to
3875
+ */
3876
+ sessionID: string;
3877
+ };
3878
+ path?: never;
3879
+ query?: {
3880
+ directory?: string;
3881
+ };
3882
+ url: "/tui/select-session";
3883
+ };
3884
+ export type TuiSelectSessionErrors = {
3885
+ /**
3886
+ * Bad request
3887
+ */
3888
+ 400: BadRequestError;
3889
+ /**
3890
+ * Not found
3891
+ */
3892
+ 404: NotFoundError;
3893
+ };
3894
+ export type TuiSelectSessionError = TuiSelectSessionErrors[keyof TuiSelectSessionErrors];
3895
+ export type TuiSelectSessionResponses = {
3896
+ /**
3897
+ * Session selected successfully
3898
+ */
3899
+ 200: boolean;
3900
+ };
3901
+ export type TuiSelectSessionResponse = TuiSelectSessionResponses[keyof TuiSelectSessionResponses];
3751
3902
  export type TuiControlNextData = {
3752
3903
  body?: never;
3753
3904
  path?: never;
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@opencode-ai/sdk",
4
- "version": "1.0.223",
4
+ "version": "1.1.1",
5
5
  "type": "module",
6
+ "license": "MIT",
6
7
  "scripts": {
7
8
  "typecheck": "tsgo --noEmit",
8
9
  "build": "./script/build.ts"