@opengeni/sdk 0.52.1 → 0.57.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.
Files changed (54) hide show
  1. package/README.md +61 -7
  2. package/dist/artifacts.js +5 -5
  3. package/dist/{chunk-V5F253OG.js → chunk-GU6JF75T.js} +6 -3
  4. package/dist/chunk-GU6JF75T.js.map +1 -0
  5. package/dist/{chunk-FRJFNDIR.js → chunk-HJ3HHUT5.js} +5 -1
  6. package/dist/chunk-HJ3HHUT5.js.map +1 -0
  7. package/dist/{chunk-KIHGPM7H.js → chunk-JDLDDRNE.js} +20 -14
  8. package/dist/chunk-JDLDDRNE.js.map +1 -0
  9. package/dist/{chunk-FHI4DFIG.js → chunk-JRPFWI6T.js} +2 -2
  10. package/dist/{chunk-ILQZR5N6.js → chunk-PKQ377ED.js} +693 -34
  11. package/dist/chunk-PKQ377ED.js.map +1 -0
  12. package/dist/{chunk-MZWTWOX6.js → chunk-ST5DDKJP.js} +327 -1
  13. package/dist/chunk-ST5DDKJP.js.map +1 -0
  14. package/dist/{chunk-DXDL7EEW.js → chunk-YKZME56C.js} +197 -113
  15. package/dist/chunk-YKZME56C.js.map +1 -0
  16. package/dist/client.d.ts +106 -16
  17. package/dist/codex-realtime-controller.d.ts +3 -0
  18. package/dist/codex-realtime-controller.js +2 -2
  19. package/dist/core.js +7 -7
  20. package/dist/desktop.d.ts +8 -0
  21. package/dist/editable-artifacts.js +4 -4
  22. package/dist/gateway-realtime-transport.d.ts +1 -0
  23. package/dist/gateway-realtime-transport.js +5 -3
  24. package/dist/index.d.ts +6 -2
  25. package/dist/index.js +68 -34
  26. package/dist/index.js.map +1 -1
  27. package/dist/interaction-revision-stream.d.ts +11 -0
  28. package/dist/interaction.d.ts +604 -5
  29. package/dist/interaction.js +27 -1
  30. package/dist/realtime.d.ts +3 -3
  31. package/dist/realtime.js +11 -7
  32. package/dist/realtime.js.map +1 -1
  33. package/dist/types.d.ts +267 -64
  34. package/dist/workspace-live-stream.d.ts +14 -0
  35. package/package.json +2 -2
  36. package/src/client.ts +861 -60
  37. package/src/codex-realtime-controller.ts +25 -7
  38. package/src/codex-realtime-lifecycle.ts +1 -0
  39. package/src/desktop.ts +11 -1
  40. package/src/errors.ts +16 -2
  41. package/src/gateway-realtime-transport.ts +252 -109
  42. package/src/index.ts +42 -13
  43. package/src/interaction-revision-stream.ts +117 -0
  44. package/src/interaction.ts +1049 -5
  45. package/src/realtime.ts +14 -4
  46. package/src/types.ts +336 -67
  47. package/src/workspace-live-stream.ts +137 -0
  48. package/dist/chunk-DXDL7EEW.js.map +0 -1
  49. package/dist/chunk-FRJFNDIR.js.map +0 -1
  50. package/dist/chunk-ILQZR5N6.js.map +0 -1
  51. package/dist/chunk-KIHGPM7H.js.map +0 -1
  52. package/dist/chunk-MZWTWOX6.js.map +0 -1
  53. package/dist/chunk-V5F253OG.js.map +0 -1
  54. /package/dist/{chunk-FHI4DFIG.js.map → chunk-JRPFWI6T.js.map} +0 -0
package/src/types.ts CHANGED
@@ -148,6 +148,7 @@ export type SyncSessionRealtimeLedgerResponse = {
148
148
 
149
149
  export type SessionRealtimeModel =
150
150
  | "gpt-live-1-boulder-alpha"
151
+ | "supergrok/grok-voice-think-fast-2.0"
151
152
  | "opengeni-gateway/openai/gpt-realtime-2.1"
152
153
  | "opengeni-gateway/openai/gpt-realtime-mini"
153
154
  | "opengeni-gateway/xai/grok-voice-think-fast-2.0"
@@ -158,7 +159,7 @@ export type SessionRealtimeModel =
158
159
  export type WorkspaceRealtimeModelCatalogItem = {
159
160
  id: SessionRealtimeModel;
160
161
  label: string;
161
- provider: "OpenGeni" | "Connected Codex" | "Your Gateway";
162
+ provider: "OpenGeni" | "Connected Codex" | "Connected SuperGrok" | "Your Gateway";
162
163
  description: string;
163
164
  available: boolean;
164
165
  unavailableReason: string | null;
@@ -282,7 +283,7 @@ export type SessionCapabilities = {
282
283
  reason: CapabilityUnavailableReason | null;
283
284
  };
284
285
  Terminal: {
285
- transport: "sse-events" | "pty-ws" | null;
286
+ transport: "sse-events" | "pty-ws" | "relay-pty" | null;
286
287
  ptyCapable: boolean;
287
288
  shell: string;
288
289
  url: string | null;
@@ -416,7 +417,7 @@ export type AttachViewerResponse = ViewerHolder & {
416
417
  terminalUrl: string | null;
417
418
  terminalToken: string | null;
418
419
  terminalExpiresAt: string | null;
419
- terminalTransport: "pty-ws" | null;
420
+ terminalTransport: "pty-ws" | "relay-pty" | null;
420
421
  };
421
422
 
422
423
  // Mirror of `@opengeni/contracts` AcknowledgeStreamRequest/Response — the
@@ -527,6 +528,7 @@ export type GoalSpec = {
527
528
  text: string;
528
529
  successCriteria?: string | undefined;
529
530
  maxAutoContinuations?: number | undefined;
531
+ mutationPolicy?: SessionGoalMutationPolicy | undefined;
530
532
  };
531
533
 
532
534
  export type SessionMcpServerInput = {
@@ -640,6 +642,23 @@ export type OpenGeniSlackBotInstallRequest = {
640
642
  connectionId?: string | undefined;
641
643
  };
642
644
 
645
+ export type FikenInstallRequest = {
646
+ apiToken: string;
647
+ defaultCompanySlug?: string | undefined;
648
+ /** Existing Fiken connection to rewrite in place (reconnect). */
649
+ connectionId?: string | undefined;
650
+ };
651
+
652
+ export type FikenOAuthStartRequest = {
653
+ /** Existing Fiken connection to re-authorize in place (reconnect). */
654
+ connectionId?: string | undefined;
655
+ };
656
+
657
+ export type FikenOAuthStartResponse = {
658
+ authorizationUrl: string;
659
+ expiresAt: string;
660
+ };
661
+
643
662
  export type OpenGeniSlackBotInstallStart = {
644
663
  authorizationUrl: string;
645
664
  expiresAt: string;
@@ -822,12 +841,18 @@ export type AtlassianConnectionMetadata = {
822
841
  selectedSources: AtlassianSelectedSource[];
823
842
  [key: string]: unknown;
824
843
  };
825
- export type AtlassianOAuthStartResponse = { authorizationUrl: string; expiresAt: string };
844
+ export type AtlassianOAuthStartResponse = {
845
+ authorizationUrl: string;
846
+ expiresAt: string;
847
+ };
826
848
  export type AtlassianLifecycleActionRequest = {
827
849
  action: "pause" | "resume";
828
850
  expectedVersion: number;
829
851
  };
830
- export type AtlassianDisconnectRequest = { expectedVersion: number; idempotencyKey: string };
852
+ export type AtlassianDisconnectRequest = {
853
+ expectedVersion: number;
854
+ idempotencyKey: string;
855
+ };
831
856
  export type AtlassianBrowseItem = {
832
857
  id: string;
833
858
  cloudId: string;
@@ -1028,6 +1053,8 @@ export type Session = {
1028
1053
  // rig-less session. Frozen at create; a later rig promote never moves them.
1029
1054
  rigId: string | null;
1030
1055
  rigVersionId: string | null;
1056
+ /** Workspace channel the session is filed under; null = unfiled (inbox). */
1057
+ channelId: string | null;
1031
1058
  firstPartyMcpPermissions: string[] | null;
1032
1059
  firstPartyMcpTools: FirstPartyMcpToolName[];
1033
1060
  mcpServers: SessionMcpServerMetadata[];
@@ -1104,7 +1131,11 @@ export type AgentTopologySession = {
1104
1131
  parentSessionId: string | null;
1105
1132
  rootSessionId: string;
1106
1133
  nestedAgentDepth: number;
1107
- ancestorPath: Array<{ id: string; title: string | null; titleTruncated: boolean }>;
1134
+ ancestorPath: Array<{
1135
+ id: string;
1136
+ title: string | null;
1137
+ titleTruncated: boolean;
1138
+ }>;
1108
1139
  status: SessionStatus;
1109
1140
  pause: {
1110
1141
  state: "active" | "paused";
@@ -1347,6 +1378,9 @@ export const SESSION_EVENT_TYPES = [
1347
1378
  "artifact.created",
1348
1379
  "goal.set",
1349
1380
  "goal.updated",
1381
+ "goal.progress",
1382
+ "goal.rewrite.proposed",
1383
+ "goal.rewrite.rejected",
1350
1384
  "goal.completed",
1351
1385
  "goal.paused",
1352
1386
  "goal.resumed",
@@ -1386,6 +1420,7 @@ export const SESSION_EVENT_TYPES = [
1386
1420
  "terminal.pty.output.delta",
1387
1421
  "terminal.pty.exited",
1388
1422
  "session.title_set",
1423
+ "session.visibility.changed",
1389
1424
  "session.mcp.approval_policy.updated",
1390
1425
  "session.tool_policy.updated",
1391
1426
  // Multi-account Codex (P1): the session's inference account changed.
@@ -2354,6 +2389,7 @@ export type FirstPartyMcpToolName =
2354
2389
  | "set_session_title"
2355
2390
  | "goal_set"
2356
2391
  | "goal_update"
2392
+ | "goal_progress"
2357
2393
  | "goal_complete"
2358
2394
  | "goal_pause"
2359
2395
  | "memory_search"
@@ -2361,6 +2397,9 @@ export type FirstPartyMcpToolName =
2361
2397
  | "memory_correct"
2362
2398
  | "preference_registry_summary"
2363
2399
  | "preference_registry_get"
2400
+ | "task_notes_list"
2401
+ | "task_note_save"
2402
+ | "task_note_archive"
2364
2403
  | "sandboxes_list"
2365
2404
  | "sandbox_attach"
2366
2405
  | "sandbox_swap"
@@ -2386,13 +2425,17 @@ export type FirstPartyMcpToolName =
2386
2425
  | "browser_tabs"
2387
2426
  | "browser_observe"
2388
2427
  | "browser_act"
2428
+ | "browser_clipboard"
2389
2429
  | "browser_debug"
2430
+ | "browser_auth"
2431
+ | "interaction_request_human"
2390
2432
  | "browser_identity"
2391
2433
  | "browser_publish"
2392
2434
  | "browser_lifecycle"
2393
2435
  | "computer_open"
2394
2436
  | "computer_targets"
2395
2437
  | "computer_observe"
2438
+ | "computer_clipboard"
2396
2439
  | "computer_act"
2397
2440
  | "computer_lifecycle"
2398
2441
  | "variable_set_list"
@@ -2442,6 +2485,16 @@ export type FirstPartyMcpToolName =
2442
2485
  | "slack_bot_file_content"
2443
2486
  | "slack_bot_post_message"
2444
2487
  | "slack_bot_delete_message"
2488
+ | "fiken_companies_list"
2489
+ | "fiken_contacts_list"
2490
+ | "fiken_contact_create"
2491
+ | "fiken_products_list"
2492
+ | "fiken_invoices_list"
2493
+ | "fiken_invoice_get"
2494
+ | "fiken_invoice_draft_create"
2495
+ | "fiken_bank_accounts_list"
2496
+ | "fiken_purchases_list"
2497
+ | "fiken_sales_list"
2445
2498
  | "atlassian_sources_list"
2446
2499
  | "atlassian_search"
2447
2500
  | "atlassian_get"
@@ -2504,7 +2557,7 @@ export type ModelCapabilitiesV1 = {
2504
2557
 
2505
2558
  export type ModelCredentialSourceV1 =
2506
2559
  | { kind: "deployment"; mechanism: "api_key" | "azure_ad_bearer" }
2507
- | { kind: "connected_subscription"; provider: "codex" }
2560
+ | { kind: "connected_subscription"; provider: "codex" | "xai" }
2508
2561
  | { kind: "workspace_connection"; mechanism: "api_key" };
2509
2562
 
2510
2563
  export type ModelBillingAttributionV1 = {
@@ -2544,7 +2597,7 @@ export type ClientModel = {
2544
2597
  provider: string;
2545
2598
  providerLabel: string;
2546
2599
  api: "responses" | "chat";
2547
- source?: "opengeni" | "codex" | "workspace_gateway" | undefined;
2600
+ source?: "opengeni" | "codex" | "supergrok" | "workspace_gateway" | undefined;
2548
2601
  contextWindowTokens?: number | undefined;
2549
2602
  schemaVersion?: 1 | undefined;
2550
2603
  aliases?: string[] | undefined;
@@ -2826,6 +2879,89 @@ export type CodexConnectPoll =
2826
2879
  isActive?: boolean;
2827
2880
  };
2828
2881
 
2882
+ /** Explicit authority of one connected SuperGrok/xAI subscription account. */
2883
+ export type SuperGrokAccountScope = "workspace" | "user";
2884
+
2885
+ /** Metadata-only connected SuperGrok account. Secret OAuth material never crosses the API. */
2886
+ export type SuperGrokAccount = {
2887
+ id: string;
2888
+ scope: SuperGrokAccountScope;
2889
+ subject: string;
2890
+ email?: string | null;
2891
+ label?: string | null;
2892
+ status: "active" | "needs_relogin" | "error";
2893
+ active: boolean;
2894
+ expiresAt?: string | null;
2895
+ lastRefreshAt?: string | null;
2896
+ lastError?: string | null;
2897
+ allocatorEnabled: boolean;
2898
+ allocatorVersion: number;
2899
+ allocatorUpdatedAt?: string | null;
2900
+ exhaustedUntil?: string | null;
2901
+ quota?: {
2902
+ usedPercent: number | null;
2903
+ periodStart: string | null;
2904
+ periodEnd: string | null;
2905
+ subscriptionTier: string | null;
2906
+ checkedAt: string | null;
2907
+ } | null;
2908
+ };
2909
+
2910
+ export type SuperGrokRotationSettings = {
2911
+ rotationEnabled: boolean;
2912
+ rotationStrategy: "sharded";
2913
+ activeCredentialId: string | null;
2914
+ };
2915
+
2916
+ /** GET /supergrok/accounts — visible accounts plus the workspace active pointer. */
2917
+ export type SuperGrokAccountsResponse = {
2918
+ accounts: SuperGrokAccount[];
2919
+ activeAccountId: string | null;
2920
+ settings: SuperGrokRotationSettings;
2921
+ };
2922
+
2923
+ export type SuperGrokConnectionStatus = {
2924
+ connected: boolean;
2925
+ valid?: boolean;
2926
+ accountCount?: number;
2927
+ models?: ClientModel[];
2928
+ activeAccount?: {
2929
+ id: string;
2930
+ label?: string | null;
2931
+ subject?: string | null;
2932
+ scope: SuperGrokAccountScope;
2933
+ } | null;
2934
+ };
2935
+
2936
+ /** Workspace is the deliberately simple/default connection authority. */
2937
+ export type SuperGrokConnectStart = {
2938
+ userCode: string;
2939
+ verificationUri: string;
2940
+ verificationUriComplete?: string | null;
2941
+ intervalSeconds: number;
2942
+ expiresInSeconds: number;
2943
+ scope: SuperGrokAccountScope;
2944
+ state: string;
2945
+ };
2946
+
2947
+ export type SuperGrokConnectPoll =
2948
+ | { status: "pending" | "slow_down"; intervalSeconds?: number }
2949
+ | { status: "expired" | "denied" }
2950
+ | {
2951
+ status: "connected";
2952
+ accountId: string;
2953
+ scope: SuperGrokAccountScope;
2954
+ isActive: boolean;
2955
+ email?: string | null;
2956
+ };
2957
+
2958
+ export type SuperGrokAllocatorUpdate = {
2959
+ allocatorEnabled: boolean;
2960
+ allocatorVersion: number;
2961
+ allocatorUpdatedAt: string | null;
2962
+ changed: boolean;
2963
+ };
2964
+
2829
2965
  /** Remaining usage/limits for one account. `usage` is the normalized P2 payload. */
2830
2966
  export type CodexUsage = {
2831
2967
  status: "ok" | "limit_reached" | "error" | "no-data";
@@ -2870,6 +3006,13 @@ export type ClientConfig = {
2870
3006
  defaultReasoningEffort: ReasoningEffort;
2871
3007
  allowedReasoningEfforts: ReasoningEffort[];
2872
3008
  mcpServers: { id: string; name: string }[];
3009
+ /** Deployment defaults and hard maximum for built-in OpenGeni session tools. */
3010
+ firstPartyMcpTools?:
3011
+ | {
3012
+ default: FirstPartyMcpToolName[];
3013
+ allowed: FirstPartyMcpToolName[];
3014
+ }
3015
+ | undefined;
2873
3016
  fileUploads: { enabled: boolean; maxSizeBytes: number };
2874
3017
  /** Native browser microphone capture + server-side transcription capability. */
2875
3018
  voiceInput?: ClientVoiceInputConfig | undefined;
@@ -3040,6 +3183,17 @@ export type AccessContext = {
3040
3183
  defaultWorkspaceId: string | null;
3041
3184
  };
3042
3185
 
3186
+ export type ManagedOrganizationMembership = {
3187
+ id: string;
3188
+ organizationId: string;
3189
+ status: "active";
3190
+ personalWorkspaceId: string;
3191
+ };
3192
+
3193
+ export type ListManagedOrganizationMembershipsResponse = {
3194
+ memberships: ManagedOrganizationMembership[];
3195
+ };
3196
+
3043
3197
  export type Workspace = {
3044
3198
  id: string;
3045
3199
  accountId: string;
@@ -3063,6 +3217,8 @@ export type Workspace = {
3063
3217
 
3064
3218
  export type WorkspaceSettings = {
3065
3219
  memoryEnabled?: boolean | undefined;
3220
+ /** Reversible Memory V1 prompt composition rollout. */
3221
+ memoryPromptMode?: "legacy_standing" | "retrieval_only" | undefined;
3066
3222
  voiceInput?: WorkspaceVoiceInputSettings | undefined;
3067
3223
  transcription?: WorkspaceTranscriptionPolicy | undefined;
3068
3224
  maxNestedAgentDepth?: number | null | undefined;
@@ -3097,6 +3253,7 @@ export type WorkspaceVoiceInputSettings = {
3097
3253
 
3098
3254
  export type UpdateWorkspaceSettingsRequest = {
3099
3255
  memoryEnabled?: boolean | undefined;
3256
+ memoryPromptMode?: "legacy_standing" | "retrieval_only" | undefined;
3100
3257
  voiceInput?: WorkspaceVoiceInputSettings | undefined;
3101
3258
  transcription?: WorkspaceTranscriptionPolicy | undefined;
3102
3259
  maxNestedAgentDepth?: number | null | undefined;
@@ -3229,6 +3386,39 @@ export type SessionGoalStatus = "active" | "paused" | "completed";
3229
3386
 
3230
3387
  export type SessionGoalCreatedBy = "api" | "agent" | "scheduled_task";
3231
3388
 
3389
+ export type SessionGoalMutationPolicy =
3390
+ | "review_changes"
3391
+ | "preserve_intent"
3392
+ | "autonomous_adaptation";
3393
+
3394
+ export type SessionGoalChangeKind = "refinement" | "adaptation" | "replacement";
3395
+
3396
+ export type SessionGoalRevision = {
3397
+ id: string;
3398
+ accountId: string;
3399
+ workspaceId: string;
3400
+ sessionId: string;
3401
+ goalId: string;
3402
+ disposition: "applied" | "proposed" | "rejected";
3403
+ changeKind: SessionGoalChangeKind;
3404
+ baseObjectiveRevision: number;
3405
+ resultObjectiveRevision: number | null;
3406
+ text: string;
3407
+ successCriteria: string | null;
3408
+ mutationPolicy: SessionGoalMutationPolicy;
3409
+ rationale: string;
3410
+ actor: "agent" | "api" | "scheduled_task";
3411
+ actorTurnId: string | null;
3412
+ actorAttemptId: string | null;
3413
+ proposalId: string | null;
3414
+ createdAt: string;
3415
+ };
3416
+
3417
+ export type ApplySessionGoalRevisionRequest = {
3418
+ expectedObjectiveRevision: number;
3419
+ rationale?: string | undefined;
3420
+ };
3421
+
3232
3422
  export type SessionGoalContinuationState =
3233
3423
  | "inactive"
3234
3424
  | "scheduled"
@@ -3272,6 +3462,8 @@ export type SessionGoal = {
3272
3462
  pausedReason: string | null;
3273
3463
  createdBy: SessionGoalCreatedBy;
3274
3464
  version: number;
3465
+ objectiveRevision: number;
3466
+ mutationPolicy: SessionGoalMutationPolicy;
3275
3467
  autoContinuations: number;
3276
3468
  noProgressStreak: number;
3277
3469
  maxAutoContinuations: number | null;
@@ -3282,10 +3474,18 @@ export type SessionGoal = {
3282
3474
  updatedAt: string;
3283
3475
  };
3284
3476
 
3285
- export type UpdateSessionGoalRequest = {
3286
- status: "paused" | "active";
3287
- rationale?: string | undefined;
3288
- };
3477
+ export type UpdateSessionGoalRequest =
3478
+ | {
3479
+ status: "paused" | "active";
3480
+ rationale?: string | undefined;
3481
+ }
3482
+ | {
3483
+ text: string;
3484
+ successCriteria?: string | null | undefined;
3485
+ mutationPolicy?: SessionGoalMutationPolicy | undefined;
3486
+ rationale: string;
3487
+ expectedObjectiveRevision: number;
3488
+ };
3289
3489
 
3290
3490
  export type UpdateSessionRequest = {
3291
3491
  title: string;
@@ -3790,6 +3990,36 @@ export type RigVerificationHealth = {
3790
3990
  lastVerifiedAt: string | null;
3791
3991
  };
3792
3992
 
3993
+ /**
3994
+ * Workspace-shared channel organizing root sessions ("workstreams") by work
3995
+ * type in the rail. Pure organizational metadata.
3996
+ */
3997
+ export type Channel = {
3998
+ id: string;
3999
+ accountId: string;
4000
+ workspaceId: string;
4001
+ name: string;
4002
+ description: string | null;
4003
+ createdBy: string | null;
4004
+ createdAt: string;
4005
+ updatedAt: string;
4006
+ };
4007
+
4008
+ export type CreateChannelRequest = {
4009
+ name: string;
4010
+ description?: string;
4011
+ };
4012
+
4013
+ export type UpdateChannelRequest = {
4014
+ name?: string;
4015
+ description?: string | null;
4016
+ };
4017
+
4018
+ /** Re-files one session; null moves it back to the unfiled inbox. */
4019
+ export type UpdateSessionChannelRequest = {
4020
+ channelId: string | null;
4021
+ };
4022
+
3793
4023
  export type Rig = {
3794
4024
  id: string;
3795
4025
  accountId: string;
@@ -4008,7 +4238,10 @@ export type UpdateVideoGenerationPolicyRequest = {
4008
4238
  defaultModelId: string | null;
4009
4239
  };
4010
4240
 
4011
- export type VideoGenerationFundingSource = "opengeni_credits" | "workspace_gateway";
4241
+ export type VideoGenerationFundingSource =
4242
+ | "opengeni_credits"
4243
+ | "workspace_gateway"
4244
+ | "supergrok_subscription";
4012
4245
 
4013
4246
  export type VideoGenerationFundingOption = {
4014
4247
  source: VideoGenerationFundingSource;
@@ -4502,10 +4735,10 @@ export type CapabilityPackComponentReference =
4502
4735
  }
4503
4736
  | {
4504
4737
  key: string;
4505
- kind: "feature";
4738
+ kind: "facet";
4506
4739
  capabilityId: string;
4507
4740
  instanceKey: string;
4508
- featureKey: string;
4741
+ facetKey: string;
4509
4742
  bindingKey: string;
4510
4743
  configDigest: string;
4511
4744
  required: boolean;
@@ -4591,10 +4824,10 @@ export type RegisterCapabilityPackRequest = {
4591
4824
  }
4592
4825
  | {
4593
4826
  key: string;
4594
- kind: "feature";
4827
+ kind: "facet";
4595
4828
  capabilityId: string;
4596
4829
  instanceKey: string;
4597
- featureKey: string;
4830
+ facetKey: string;
4598
4831
  bindingKey: string;
4599
4832
  configDigest: string;
4600
4833
  required?: boolean | undefined;
@@ -4689,7 +4922,7 @@ export type PackComponentResolutionStatus = "ready" | "missing" | "mismatch";
4689
4922
 
4690
4923
  export type PackComponentResolution = {
4691
4924
  key: string;
4692
- kind: "plugin" | "skill" | "integration" | "feature" | "inline_skill";
4925
+ kind: "plugin" | "skill" | "integration" | "facet" | "inline_skill";
4693
4926
  capabilityId: string;
4694
4927
  required: boolean;
4695
4928
  status: PackComponentResolutionStatus;
@@ -4744,7 +4977,7 @@ export type PackUninstallPreview = {
4744
4977
  installationVersion: number | null;
4745
4978
  components: Array<{
4746
4979
  key: string;
4747
- kind: "plugin" | "skill" | "integration" | "feature" | "inline_skill";
4980
+ kind: "plugin" | "skill" | "integration" | "facet" | "inline_skill";
4748
4981
  capabilityId: string;
4749
4982
  retainedByOtherOwners: boolean;
4750
4983
  }>;
@@ -4901,7 +5134,7 @@ export type CapabilityCatalogResponse = {
4901
5134
 
4902
5135
  export type CreateCapabilityCatalogItemRequest = {
4903
5136
  id?: string | undefined;
4904
- kind: Exclude<CapabilityKind, "pack">;
5137
+ kind: "mcp";
4905
5138
  source?: CapabilitySource | undefined;
4906
5139
  name: string;
4907
5140
  description?: string | undefined;
@@ -4924,14 +5157,6 @@ export type EnableCapabilityRequest = {
4924
5157
  * API (responses expose header names only).
4925
5158
  */
4926
5159
  headers?: Record<string, string> | undefined;
4927
- /**
4928
- * Initial variableSet attachment for kind=pack capabilities — mirrors the
4929
- * dedicated POST /packs/:id/enable body. Required to enable an
4930
- * variableSet.required pack through this unified path; ignored otherwise.
4931
- */
4932
- variableSetId?: string | undefined;
4933
- /** @deprecated use variableSetId */
4934
- environmentId?: string | undefined;
4935
5160
  };
4936
5161
 
4937
5162
  export type DiscoverMcpCapabilitiesResponse = {
@@ -4942,6 +5167,8 @@ export type DiscoverMcpCapabilitiesResponse = {
4942
5167
 
4943
5168
  export type SkillImportSource = "github" | "skills_sh";
4944
5169
 
5170
+ export type SkillInstallationSource = "library" | "github" | "skills_sh" | "pack";
5171
+
4945
5172
  export type PreviewSkillImportRequest = {
4946
5173
  url: string;
4947
5174
  };
@@ -4977,6 +5204,12 @@ export type InstallSkillRequest = {
4977
5204
  expectedInstallationVersion?: number | undefined;
4978
5205
  };
4979
5206
 
5207
+ export type InstallLibrarySkillRequest = {
5208
+ expectedVersion: string;
5209
+ expectedContentSha256: string;
5210
+ expectedInstallationVersion?: number | undefined;
5211
+ };
5212
+
4980
5213
  export type InstalledSkill = {
4981
5214
  capabilityId: string;
4982
5215
  pluginId: string;
@@ -4985,7 +5218,8 @@ export type InstalledSkill = {
4985
5218
  pluginInstallationId: string;
4986
5219
  facetInstallationId: string;
4987
5220
  installationVersion: number;
4988
- source: SkillImportSource;
5221
+ source: SkillInstallationSource;
5222
+ version: string;
4989
5223
  sourceUrl: string;
4990
5224
  sourceCommit: string;
4991
5225
  contentSha256: string;
@@ -4999,6 +5233,34 @@ export type CapabilityComponentOwner = {
4999
5233
  removable: boolean;
5000
5234
  };
5001
5235
 
5236
+ export type InstalledSkillSummary = {
5237
+ capabilityId: string;
5238
+ pluginKey: string;
5239
+ installationVersion: number;
5240
+ name: string;
5241
+ description: string;
5242
+ category: string;
5243
+ tags: string[];
5244
+ provenance: string;
5245
+ source: SkillInstallationSource;
5246
+ version: string;
5247
+ sourceUrl: string;
5248
+ repositoryUrl: string;
5249
+ sourceCommit: string;
5250
+ sourcePath: string;
5251
+ contentSha256: string;
5252
+ fileCount: number;
5253
+ totalBytes: number;
5254
+ license: string | null;
5255
+ installedAt: string;
5256
+ updatedAt: string;
5257
+ owners: CapabilityComponentOwner[];
5258
+ };
5259
+
5260
+ export type ListInstalledSkillsResponse = {
5261
+ skills: InstalledSkillSummary[];
5262
+ };
5263
+
5002
5264
  export type SkillUninstallPreview = {
5003
5265
  capabilityId: string;
5004
5266
  installed: boolean;
@@ -5019,31 +5281,32 @@ export type UninstallSkillResult = {
5019
5281
  };
5020
5282
 
5021
5283
  export type ApiIntegrationProtocol = "openapi" | "graphql";
5284
+ export type IntegrationDefinitionProvenance = "curated" | "workspace";
5022
5285
 
5023
- export type IntegrationFeatureKind =
5286
+ export type IntegrationFacetKind =
5024
5287
  | "tools"
5025
5288
  | "knowledge_source"
5026
5289
  | "inbound_trigger"
5027
5290
  | "delivery_destination"
5028
5291
  | "identity_link";
5029
5292
 
5030
- export type IntegrationFeatureStatus = "active" | "paused" | "needs_attention" | "disabled";
5293
+ export type IntegrationFacetStatus = "active" | "paused" | "needs_attention" | "disabled";
5031
5294
 
5032
- export type IntegrationFeatureDefinitionSummary = {
5033
- featureKey: string;
5034
- kind: Exclude<IntegrationFeatureKind, "tools">;
5295
+ export type IntegrationFacetDefinitionSummary = {
5296
+ facetKey: string;
5297
+ kind: Exclude<IntegrationFacetKind, "tools">;
5035
5298
  configSchema: Record<string, unknown>;
5036
5299
  capabilities: Record<string, unknown>;
5037
5300
  };
5038
5301
 
5039
- export type IntegrationFeatureBindingSummary = {
5302
+ export type IntegrationFacetBindingSummary = {
5040
5303
  id: string;
5041
- featureKey: string;
5042
- kind: Exclude<IntegrationFeatureKind, "tools">;
5304
+ facetKey: string;
5305
+ kind: Exclude<IntegrationFacetKind, "tools">;
5043
5306
  bindingKey: string;
5044
5307
  displayName: string;
5045
5308
  connectionId: string | null;
5046
- status: IntegrationFeatureStatus;
5309
+ status: IntegrationFacetStatus;
5047
5310
  config: Record<string, unknown>;
5048
5311
  version: number;
5049
5312
  hasCursor: boolean;
@@ -5053,75 +5316,80 @@ export type IntegrationFeatureBindingSummary = {
5053
5316
  updatedAt: string;
5054
5317
  };
5055
5318
 
5056
- export type IntegrationInstanceFeaturesResponse = {
5319
+ export type IntegrationInstanceFacetsResponse = {
5057
5320
  capabilityId: string;
5058
5321
  instanceKey: string;
5059
5322
  providerDomain: string;
5060
5323
  connectionId: string | null;
5061
- features: {
5062
- definition: IntegrationFeatureDefinitionSummary;
5063
- binding: IntegrationFeatureBindingSummary | null;
5324
+ facets: {
5325
+ definition: IntegrationFacetDefinitionSummary;
5326
+ binding: IntegrationFacetBindingSummary | null;
5064
5327
  }[];
5065
5328
  };
5066
5329
 
5067
- export type UpsertIntegrationFeatureRequest = {
5330
+ export type UpsertIntegrationFacetRequest = {
5068
5331
  displayName: string;
5069
5332
  config?: Record<string, unknown> | undefined;
5070
5333
  expectedVersion?: number | undefined;
5071
5334
  idempotencyKey: string;
5072
5335
  };
5073
5336
 
5074
- export type MutateIntegrationFeatureRequest = {
5337
+ export type MutateIntegrationFacetRequest = {
5075
5338
  expectedVersion: number;
5076
5339
  idempotencyKey: string;
5077
5340
  };
5078
5341
 
5079
- export type IntegrationFeatureMutationResult = {
5342
+ export type IntegrationFacetMutationResult = {
5080
5343
  capabilityId: string;
5081
5344
  instanceKey: string;
5082
- featureKey: string;
5345
+ facetKey: string;
5083
5346
  status: "configured" | "paused" | "active";
5084
- binding: IntegrationFeatureBindingSummary;
5347
+ binding: IntegrationFacetBindingSummary;
5085
5348
  };
5086
5349
 
5087
- export type IntegrationFeatureRemovalResult = {
5350
+ export type IntegrationFacetRemovalResult = {
5088
5351
  capabilityId: string;
5089
5352
  instanceKey: string;
5090
- featureKey: string;
5353
+ facetKey: string;
5091
5354
  status: "not_configured" | "removed" | "retained_by_other_owners";
5092
- binding: IntegrationFeatureBindingSummary | null;
5355
+ binding: IntegrationFacetBindingSummary | null;
5093
5356
  remainingOwners: CapabilityComponentOwner[];
5094
5357
  };
5095
5358
 
5096
- export type ApiIntegrationPresetSummary = {
5359
+ export type IntegrationDefinitionSummary = {
5097
5360
  id: string;
5098
5361
  name: string;
5099
5362
  summary: string;
5100
- family: "google" | "microsoft";
5101
5363
  protocol: "openapi";
5102
- providerDomain: string;
5103
- scopes: string[];
5104
- features: IntegrationFeatureDefinitionSummary[];
5364
+ provider: {
5365
+ id: "google" | "microsoft";
5366
+ domain: string;
5367
+ };
5368
+ authentication: {
5369
+ kind: "oauth2";
5370
+ scopes: string[];
5371
+ };
5372
+ facets: IntegrationFacetDefinitionSummary[];
5105
5373
  };
5106
5374
 
5107
- export type ListApiIntegrationPresetsResponse = {
5108
- presets: ApiIntegrationPresetSummary[];
5375
+ export type ListIntegrationDefinitionsResponse = {
5376
+ definitions: IntegrationDefinitionSummary[];
5109
5377
  };
5110
5378
 
5111
- export type ApiIntegrationSource =
5112
- | { kind: "preset"; presetId: string }
5379
+ export type IntegrationSource =
5380
+ | { kind: "definition"; definitionId: string }
5113
5381
  | { kind: "openapi"; url: string; baseUrl?: string | undefined }
5114
5382
  | { kind: "graphql"; endpoint: string; name?: string | undefined }
5115
5383
  | { kind: "auto"; url: string; baseUrl?: string | undefined };
5116
5384
 
5117
5385
  export type PreviewApiIntegrationRequest = {
5118
- source: ApiIntegrationSource;
5386
+ source: IntegrationSource;
5119
5387
  connectionId?: string | undefined;
5120
5388
  ownership?: ConnectionOwnership | undefined;
5121
5389
  };
5122
5390
 
5123
5391
  export type ApiIntegrationOAuthStartRequest = {
5124
- presetId: string;
5392
+ definitionId: string;
5125
5393
  ownership?: ConnectionOwnership | undefined;
5126
5394
  connectionId?: string | undefined;
5127
5395
  returnPath?: string | undefined;
@@ -5149,10 +5417,10 @@ export type ApiIntegrationToolPreview = {
5149
5417
  };
5150
5418
 
5151
5419
  export type ApiIntegrationPreview = {
5152
- source: ApiIntegrationSource;
5153
- presetId: string | null;
5420
+ source: IntegrationSource;
5421
+ definitionId: string;
5422
+ definitionProvenance: IntegrationDefinitionProvenance;
5154
5423
  protocol: ApiIntegrationProtocol;
5155
- integrationId: string;
5156
5424
  capabilityId: string;
5157
5425
  pluginKey: string;
5158
5426
  serverId: string;
@@ -5172,7 +5440,7 @@ export type ApiIntegrationPreview = {
5172
5440
  };
5173
5441
 
5174
5442
  export type InstallApiIntegrationRequest = {
5175
- source: ApiIntegrationSource;
5443
+ source: IntegrationSource;
5176
5444
  expectedRevisionId: string;
5177
5445
  expectedContentSha256: string;
5178
5446
  connectionId?: string | undefined;
@@ -5214,7 +5482,8 @@ export type ApiIntegrationInstallationSummary = {
5214
5482
  name: string;
5215
5483
  description: string | null;
5216
5484
  protocol: ApiIntegrationProtocol;
5217
- presetId: string | null;
5485
+ definitionId: string;
5486
+ definitionProvenance: IntegrationDefinitionProvenance;
5218
5487
  providerDomain: string;
5219
5488
  baseUrl: string;
5220
5489
  sourceUrl: string | null;
@@ -5261,7 +5530,7 @@ export type UninstallApiIntegrationResult = {
5261
5530
 
5262
5531
  export type PluginManifestComponent =
5263
5532
  | { key: string; kind: "skill"; url: string }
5264
- | { key: string; kind: "integration"; source: ApiIntegrationSource }
5533
+ | { key: string; kind: "integration"; source: IntegrationSource }
5265
5534
  | { key: string; kind: "mcp"; serverId: string };
5266
5535
 
5267
5536
  export type PluginManifest = {