@keystrokehq/cli 0.1.4 → 0.1.5

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.
@@ -5231,8 +5231,126 @@ const OrganizationSlugSchema = string().trim().toLowerCase().min(2, "Slug must b
5231
5231
  * fail to load.
5232
5232
  */
5233
5233
  const ClaimableOrganizationSlugSchema = OrganizationSlugSchema.refine((slug) => !RESERVED_ORGANIZATION_SLUGS.has(slug), "This slug is reserved");
5234
+ const ORGANIZATION_NAME_APOSTROPHE_PATTERN = /[''\u2018\u2019]/g;
5235
+ /** Normalize a display name into slug-shaped text (may be empty or too short to claim). */
5236
+ function normalizeOrganizationNameToSlugBase(name) {
5237
+ return name.trim().toLowerCase().replace(ORGANIZATION_NAME_APOSTROPHE_PATTERN, "").replace(/[^a-z0-9]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
5238
+ }
5234
5239
  /** Same format as organization slugs — org-scoped, no global reserved list. */
5235
5240
  const ProjectSlugSchema = OrganizationSlugSchema;
5241
+ /** Derive a URL slug from a project display name (not guaranteed unique within the org). */
5242
+ function slugifyProjectName(name) {
5243
+ const base = normalizeOrganizationNameToSlugBase(name);
5244
+ if (!base) return "project";
5245
+ const parsed = ProjectSlugSchema.safeParse(base);
5246
+ return parsed.success ? parsed.data : "project";
5247
+ }
5248
+ const OrganizationSlugErrorCodeSchema = _enum([
5249
+ "slug_taken",
5250
+ "slug_reserved",
5251
+ "slug_invalid"
5252
+ ]);
5253
+ const SlugAvailabilityReasonSchema = _enum([
5254
+ "taken",
5255
+ "reserved",
5256
+ "invalid"
5257
+ ]);
5258
+ const SlugAvailabilityResponseSchema = object({
5259
+ slug: string(),
5260
+ available: boolean(),
5261
+ reason: SlugAvailabilityReasonSchema.optional(),
5262
+ suggestion: OrganizationSlugSchema.optional()
5263
+ });
5264
+ object({
5265
+ slug: string().trim().min(1),
5266
+ excludeOrganizationId: string().min(1).optional()
5267
+ });
5268
+ const ProjectSlugAvailabilityReasonSchema = _enum(["taken", "invalid"]);
5269
+ const ProjectSlugAvailabilityResponseSchema = object({
5270
+ slug: string(),
5271
+ available: boolean(),
5272
+ reason: ProjectSlugAvailabilityReasonSchema.optional(),
5273
+ suggestion: ProjectSlugSchema.optional()
5274
+ });
5275
+ object({
5276
+ slug: string().trim().min(1),
5277
+ excludeProjectId: string().min(1).optional()
5278
+ });
5279
+ const ProjectStatusSchema = _enum([
5280
+ "inactive",
5281
+ "starting",
5282
+ "active",
5283
+ "failed"
5284
+ ]);
5285
+ const OrganizationUserRoleSchema = _enum([
5286
+ "owner",
5287
+ "admin",
5288
+ "builder"
5289
+ ]);
5290
+ const isoDateTime$5 = string().datetime();
5291
+ const OrganizationSchema = object({
5292
+ id: string(),
5293
+ name: string(),
5294
+ slug: OrganizationSlugSchema,
5295
+ createdAt: isoDateTime$5,
5296
+ updatedAt: isoDateTime$5
5297
+ });
5298
+ const ProjectSchema = object({
5299
+ id: string(),
5300
+ organizationId: string(),
5301
+ name: string(),
5302
+ slug: ProjectSlugSchema,
5303
+ description: string().nullable(),
5304
+ status: ProjectStatusSchema,
5305
+ baseUrl: string().nullable(),
5306
+ runtimeId: string().nullable(),
5307
+ lastError: string().nullable(),
5308
+ createdAt: isoDateTime$5,
5309
+ updatedAt: isoDateTime$5
5310
+ });
5311
+ const UserOrganizationSchema = object({
5312
+ organization: OrganizationSchema,
5313
+ role: OrganizationUserRoleSchema
5314
+ });
5315
+ const ActiveOrganizationResponseSchema = UserOrganizationSchema.nullable();
5316
+ const ListOrganizationsResponseSchema = array(UserOrganizationSchema);
5317
+ const CreateOrganizationRequestSchema = object({
5318
+ name: string().trim().min(1),
5319
+ /** Format-only at the wire boundary; reserved-name checks run in platform-database. */
5320
+ slug: OrganizationSlugSchema.optional()
5321
+ });
5322
+ const UpdateOrganizationRequestSchema = object({
5323
+ name: string().trim().min(1).optional(),
5324
+ slug: ClaimableOrganizationSlugSchema.optional()
5325
+ }).refine((data) => data.name !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
5326
+ const CreateOrganizationResponseSchema = UserOrganizationSchema;
5327
+ const ListProjectsResponseSchema = array(ProjectSchema);
5328
+ const ProjectListMetricsSchema = object({
5329
+ agentCount: number$1(),
5330
+ workflowCount: number$1(),
5331
+ skillCount: number$1(),
5332
+ credentialCount: number$1(),
5333
+ lastDeploymentAt: isoDateTime$5.nullable()
5334
+ });
5335
+ const ListProjectMetricsResponseSchema = record(string(), ProjectListMetricsSchema);
5336
+ const CreateProjectRequestSchema = object({
5337
+ name: string().trim().min(1),
5338
+ description: string().trim().min(1).optional()
5339
+ });
5340
+ const UpdateProjectRequestSchema = object({
5341
+ name: string().trim().min(1).optional(),
5342
+ description: string().trim().optional(),
5343
+ slug: ProjectSlugSchema.optional()
5344
+ }).refine((data) => data.name !== void 0 || data.description !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
5345
+ const CreateProjectResponseSchema = ProjectSchema;
5346
+ const ProjectResponseSchema = ProjectSchema;
5347
+ const ProjectReachabilityResponseSchema = object({ reachable: boolean() });
5348
+ /** Org-custom app slug segment (the part after `{orgSlug}/`). Same format as project slugs. */
5349
+ const AppSlugSchema = ProjectSlugSchema;
5350
+ /** Derive a slug segment from a display name (not guaranteed unique). */
5351
+ function slugifyAppName(name) {
5352
+ return slugifyProjectName(name);
5353
+ }
5236
5354
  /** Browser→platform request budget (ping + small platform overhead). */
5237
5355
  const PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS = 17e3;
5238
5356
  /** Normalize a public origin URL (no trailing slash). */
@@ -5438,15 +5556,15 @@ const ChannelDirectoryEntrySchema = object({
5438
5556
  memberCount: number$1().int().nonnegative().optional(),
5439
5557
  isArchived: boolean().optional()
5440
5558
  });
5441
- const ChannelConnectionListResponseSchema = object({ connections: array(ChannelConnectionSchema) });
5442
- const ChannelDirectoryListResponseSchema = object({ channels: array(ChannelDirectoryEntrySchema) });
5559
+ const ChannelConnectionListResponseSchema = array(ChannelConnectionSchema);
5560
+ const ChannelDirectoryListResponseSchema = array(ChannelDirectoryEntrySchema);
5443
5561
  object({ teamName: string().min(1).optional() });
5444
- const ChannelAccountListResponseSchema = object({ accounts: array(object({
5562
+ const ChannelAccountListResponseSchema = array(object({
5445
5563
  id: string().min(1),
5446
5564
  platform: ChannelPlatformKeySchema,
5447
5565
  label: string().min(1),
5448
5566
  connectedAt: string()
5449
- })) });
5567
+ }));
5450
5568
  const NewChannelBindingInputSchema = object({
5451
5569
  channelId: string().min(1),
5452
5570
  channelName: string().min(1),
@@ -5463,6 +5581,14 @@ const UpdateChannelBindingBodySchema = object({ patch: object({
5463
5581
  mode: ChannelListenModeSchema.optional(),
5464
5582
  subscribeOnMention: boolean().optional()
5465
5583
  }) });
5584
+ /** Metadata for one vault field on a custom api_key app. */
5585
+ const AppCredentialFieldSchema = object({
5586
+ label: string().trim().min(1).optional(),
5587
+ secret: boolean().optional(),
5588
+ optional: boolean().optional()
5589
+ });
5590
+ /** Credential template keyed by vault field name. */
5591
+ const AppCredentialFieldsSchema = record(string().regex(/^[a-zA-Z][a-zA-Z0-9_]*$/), AppCredentialFieldSchema).refine((fields) => Object.keys(fields).length > 0, { message: "At least one credential field is required" }).refine((fields) => Object.values(fields).some((field) => field.optional !== true), { message: "At least one credential field must be required" });
5466
5592
  /** A single OAuth scope an app can request, with human copy for connect UI. */
5467
5593
  const OAuthScopeOptionSchema = object({
5468
5594
  name: string().min(1),
@@ -5490,6 +5616,37 @@ object({
5490
5616
  authKind: AppAuthKindSchema,
5491
5617
  oauthScopes: array(OAuthScopeOptionSchema)
5492
5618
  }).extend({ source: AppSourceSchema });
5619
+ const customAppNameSchema = string().trim().min(1, "Name is required");
5620
+ const AppSlugAvailabilityReasonSchema = ProjectSlugAvailabilityReasonSchema;
5621
+ const AppSlugAvailabilityResponseSchema = object({
5622
+ slug: string(),
5623
+ available: boolean(),
5624
+ reason: AppSlugAvailabilityReasonSchema.optional(),
5625
+ suggestion: AppSlugSchema.optional()
5626
+ });
5627
+ object({ slug: string().trim().min(1) });
5628
+ /** Request body for creating an org custom api_key app. */
5629
+ const CreateCustomAppRequestSchema = object({
5630
+ name: customAppNameSchema,
5631
+ slug: AppSlugSchema,
5632
+ description: string().trim().min(1),
5633
+ fields: AppCredentialFieldsSchema
5634
+ });
5635
+ /** Full custom app detail returned by GET (includes credential template for sync). */
5636
+ const CustomAppDetailSchema = object({
5637
+ id: string().min(1),
5638
+ slug: string().min(1),
5639
+ name: string().min(1),
5640
+ description: string().min(1),
5641
+ category: string().min(1),
5642
+ authKind: literal("api_key"),
5643
+ source: literal("custom"),
5644
+ credentialFields: AppCredentialFieldsSchema,
5645
+ createdAt: string().min(1),
5646
+ updatedAt: string().min(1)
5647
+ });
5648
+ const CreateCustomAppResponseSchema = CustomAppDetailSchema;
5649
+ const GetCustomAppResponseSchema = CustomAppDetailSchema;
5493
5650
  object({
5494
5651
  id: string().min(1),
5495
5652
  organizationId: string().min(1).nullable(),
@@ -5501,10 +5658,11 @@ object({
5501
5658
  authKind: AppAuthKindSchema,
5502
5659
  oauthScopes: array(OAuthScopeOptionSchema),
5503
5660
  source: AppSourceSchema,
5661
+ credentialFields: AppCredentialFieldsSchema.optional(),
5504
5662
  createdAt: string().min(1),
5505
5663
  updatedAt: string().min(1)
5506
5664
  });
5507
- const ListAppsResponseSchema = object({ apps: array(object({
5665
+ const ListAppsResponseSchema = array(object({
5508
5666
  id: string().min(1),
5509
5667
  name: string().min(1),
5510
5668
  description: string().min(1),
@@ -5513,9 +5671,69 @@ const ListAppsResponseSchema = object({ apps: array(object({
5513
5671
  logo: string().url().nullable().optional(),
5514
5672
  authKind: AppAuthKindSchema,
5515
5673
  oauthScopes: array(OAuthScopeOptionSchema),
5674
+ /** Where app metadata and execution are sourced (e.g. composio, custom). */
5675
+ source: AppSourceSchema,
5676
+ /** Custom api_key apps — vault field template for connect UI and sync. */
5677
+ credentialFields: AppCredentialFieldsSchema.optional(),
5516
5678
  /** When present, the app supports agent gateway bindings (external channels). */
5517
5679
  gateway: AppGatewaySchema.optional()
5518
- })) });
5680
+ }));
5681
+ const CatalogAppsPageSchema = object({
5682
+ items: array(object({
5683
+ name: string(),
5684
+ description: string(),
5685
+ package: string()
5686
+ })),
5687
+ nextCursor: string().optional()
5688
+ });
5689
+ const CatalogAppDetailSchema = object({
5690
+ name: string(),
5691
+ description: string(),
5692
+ package: string(),
5693
+ version: string().optional()
5694
+ });
5695
+ const CatalogActionSummarySchema = object({
5696
+ slug: string(),
5697
+ name: string(),
5698
+ description: string().optional()
5699
+ });
5700
+ const CatalogActionsPageSchema = object({
5701
+ toolkit: string().optional(),
5702
+ items: array(CatalogActionSummarySchema),
5703
+ nextCursor: string().optional()
5704
+ });
5705
+ const CatalogActionDetailSchema = object({
5706
+ slug: string(),
5707
+ name: string(),
5708
+ description: string().optional(),
5709
+ inputParameters: record(string(), unknown()).optional(),
5710
+ outputParameters: record(string(), unknown()).optional(),
5711
+ version: string().optional()
5712
+ });
5713
+ const CatalogAppsPageResponseSchema = CatalogAppsPageSchema;
5714
+ const CatalogAppDetailResponseSchema = CatalogAppDetailSchema;
5715
+ const CatalogActionsPageResponseSchema = CatalogActionsPageSchema;
5716
+ const CatalogActionDetailResponseSchema = CatalogActionDetailSchema;
5717
+ const ORG_SLUG_SEPARATOR = "/";
5718
+ /** Parse a stored app slug into official vs org-custom parts. */
5719
+ function parseAppSlug(slug) {
5720
+ const trimmed = slug.trim();
5721
+ if (!trimmed) throw new Error("parseAppSlug requires a non-empty slug");
5722
+ const separatorIndex = trimmed.indexOf(ORG_SLUG_SEPARATOR);
5723
+ if (separatorIndex === -1) return {
5724
+ kind: "official",
5725
+ slug: trimmed
5726
+ };
5727
+ const orgSlug = trimmed.slice(0, separatorIndex);
5728
+ const name = trimmed.slice(separatorIndex + 1);
5729
+ if (!orgSlug || !name || trimmed.indexOf(ORG_SLUG_SEPARATOR, separatorIndex + 1) !== -1) throw new Error(`Invalid org app slug: ${slug}`);
5730
+ return {
5731
+ kind: "org",
5732
+ orgSlug,
5733
+ name,
5734
+ slug: trimmed
5735
+ };
5736
+ }
5519
5737
  /** How a credential instance is stored (`credential_instances.auth_kind`). */
5520
5738
  const CredentialAuthKindSchema = _enum([
5521
5739
  "api_key",
@@ -5587,7 +5805,9 @@ function addMissingCredentialTargetIssue(ctx, path = ["projects"]) {
5587
5805
  const CredentialTargetsFieldsSchema = object({
5588
5806
  projects: array(string().min(1)).default([]),
5589
5807
  createOrganizationCredential: boolean().default(false),
5590
- createUserProvidedCredential: boolean().default(false)
5808
+ createUserProvidedCredential: boolean().default(false),
5809
+ /** Display label for created credential instances (apps table / detail page). */
5810
+ label: string().trim().min(1).optional()
5591
5811
  });
5592
5812
  /** Input for starting an OAuth connection (connect dialog / CLI connect). */
5593
5813
  const StartOAuthConnectionInputSchema = CredentialTargetsFieldsSchema.extend({
@@ -5600,6 +5820,25 @@ const StartOAuthConnectionResultSchema = object({
5600
5820
  status: _enum(["connected", "redirecting"]),
5601
5821
  authorizeUrl: string().url().nullable()
5602
5822
  });
5823
+ /** Input for starting a Composio/keystroke connection (connect dialog). */
5824
+ const StartKeystrokeConnectionInputSchema = object({
5825
+ app: string().trim().min(1),
5826
+ scopeType: AppCredentialScopeSchema,
5827
+ projectSlug: string().trim().min(1).optional(),
5828
+ label: string().trim().min(1).optional()
5829
+ }).superRefine((input, ctx) => {
5830
+ if (input.scopeType === "project" && !input.projectSlug?.trim()) ctx.addIssue({
5831
+ code: "custom",
5832
+ message: "projectSlug is required for project scope",
5833
+ path: ["projectSlug"]
5834
+ });
5835
+ });
5836
+ /** Result of starting a Composio/keystroke connection. */
5837
+ const StartKeystrokeConnectionResultSchema = object({
5838
+ status: _enum(["redirecting"]),
5839
+ authorizeUrl: string().url(),
5840
+ connectionId: string()
5841
+ });
5603
5842
  /** Request body for `POST /api/credentials` (manual api-key fan-out). */
5604
5843
  const CreateCredentialsRequestSchema = CredentialTargetsFieldsSchema.extend({
5605
5844
  appId: string().min(1),
@@ -5625,9 +5864,9 @@ const UpdateCredentialRequestSchema = object({
5625
5864
  isDefault: boolean().optional(),
5626
5865
  value: credentialSecretValueSchema.optional()
5627
5866
  }).refine((input) => input.label !== void 0 || input.isDefault !== void 0 || input.value !== void 0, { message: "At least one field is required" });
5628
- const ListCredentialsResponseSchema = object({ credentials: array(AppCredentialSummarySchema) });
5629
- const GetCredentialResponseSchema = object({ credential: AppCredentialSummarySchema });
5630
- const CreateCredentialsResponseSchema = object({ credentials: array(AppCredentialSummarySchema) });
5867
+ const ListCredentialsResponseSchema = array(AppCredentialSummarySchema);
5868
+ const GetCredentialResponseSchema = AppCredentialSummarySchema;
5869
+ const CreateCredentialsResponseSchema = array(AppCredentialSummarySchema);
5631
5870
  const McpConnectionStatusSchema = _enum([
5632
5871
  "INITIATED",
5633
5872
  "ACTIVE",
@@ -5636,13 +5875,13 @@ const McpConnectionStatusSchema = _enum([
5636
5875
  "INACTIVE",
5637
5876
  "REVOKED"
5638
5877
  ]);
5639
- object({ apps: array(object({
5878
+ object({
5640
5879
  slug: string(),
5641
5880
  name: string(),
5642
5881
  connected: boolean(),
5643
5882
  connectionId: string().optional(),
5644
5883
  status: McpConnectionStatusSchema.optional()
5645
- })) });
5884
+ });
5646
5885
  object({
5647
5886
  connectionId: string(),
5648
5887
  entityId: string(),
@@ -5652,11 +5891,6 @@ object({
5652
5891
  app: string().trim().min(1),
5653
5892
  tool: string().trim().min(1),
5654
5893
  arguments: record(string(), unknown()).default({}),
5655
- /**
5656
- * Resolved credential instance to execute against. When set, the platform executes that exact
5657
- * connection (scoped to the caller's org); when omitted it resolves the app's instance by scope.
5658
- */
5659
- instanceId: string().trim().min(1).optional(),
5660
5894
  /** Pinned provider toolkit version, sourced from the app definition; forwarded to the provider. */
5661
5895
  version: string().trim().min(1)
5662
5896
  });
@@ -5684,106 +5918,6 @@ function toCredentialRequirement(item) {
5684
5918
  ...item.tokenField !== void 0 ? { tokenField: item.tokenField } : {}
5685
5919
  };
5686
5920
  }
5687
- const OrganizationSlugErrorCodeSchema = _enum([
5688
- "slug_taken",
5689
- "slug_reserved",
5690
- "slug_invalid"
5691
- ]);
5692
- const SlugAvailabilityReasonSchema = _enum([
5693
- "taken",
5694
- "reserved",
5695
- "invalid"
5696
- ]);
5697
- const SlugAvailabilityResponseSchema = object({
5698
- slug: string(),
5699
- available: boolean(),
5700
- reason: SlugAvailabilityReasonSchema.optional(),
5701
- suggestion: OrganizationSlugSchema.optional()
5702
- });
5703
- object({
5704
- slug: string().trim().min(1),
5705
- excludeOrganizationId: string().min(1).optional()
5706
- });
5707
- const ProjectSlugAvailabilityReasonSchema = _enum(["taken", "invalid"]);
5708
- const ProjectSlugAvailabilityResponseSchema = object({
5709
- slug: string(),
5710
- available: boolean(),
5711
- reason: ProjectSlugAvailabilityReasonSchema.optional(),
5712
- suggestion: ProjectSlugSchema.optional()
5713
- });
5714
- object({
5715
- slug: string().trim().min(1),
5716
- excludeProjectId: string().min(1).optional()
5717
- });
5718
- const ProjectStatusSchema = _enum([
5719
- "inactive",
5720
- "starting",
5721
- "active",
5722
- "failed"
5723
- ]);
5724
- const OrganizationUserRoleSchema = _enum([
5725
- "owner",
5726
- "admin",
5727
- "builder"
5728
- ]);
5729
- const isoDateTime$5 = string().datetime();
5730
- const OrganizationSchema = object({
5731
- id: string(),
5732
- name: string(),
5733
- slug: OrganizationSlugSchema,
5734
- createdAt: isoDateTime$5,
5735
- updatedAt: isoDateTime$5
5736
- });
5737
- const ProjectSchema = object({
5738
- id: string(),
5739
- organizationId: string(),
5740
- name: string(),
5741
- slug: ProjectSlugSchema,
5742
- description: string().nullable(),
5743
- status: ProjectStatusSchema,
5744
- baseUrl: string().nullable(),
5745
- runtimeId: string().nullable(),
5746
- lastError: string().nullable(),
5747
- createdAt: isoDateTime$5,
5748
- updatedAt: isoDateTime$5
5749
- });
5750
- const UserOrganizationSchema = object({
5751
- organization: OrganizationSchema,
5752
- role: OrganizationUserRoleSchema
5753
- });
5754
- const ActiveOrganizationResponseSchema = object({ organization: UserOrganizationSchema.nullable() });
5755
- const ListOrganizationsResponseSchema = object({ organizations: array(UserOrganizationSchema) });
5756
- const CreateOrganizationRequestSchema = object({
5757
- name: string().trim().min(1),
5758
- /** Format-only at the wire boundary; reserved-name checks run in platform-database. */
5759
- slug: OrganizationSlugSchema.optional()
5760
- });
5761
- const UpdateOrganizationRequestSchema = object({
5762
- name: string().trim().min(1).optional(),
5763
- slug: ClaimableOrganizationSlugSchema.optional()
5764
- }).refine((data) => data.name !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
5765
- const CreateOrganizationResponseSchema = object({ organization: UserOrganizationSchema });
5766
- const ListProjectsResponseSchema = object({ projects: array(ProjectSchema) });
5767
- const ProjectListMetricsSchema = object({
5768
- agentCount: number$1(),
5769
- workflowCount: number$1(),
5770
- skillCount: number$1(),
5771
- credentialCount: number$1(),
5772
- lastDeploymentAt: isoDateTime$5.nullable()
5773
- });
5774
- const ListProjectMetricsResponseSchema = object({ metrics: record(string(), ProjectListMetricsSchema) });
5775
- const CreateProjectRequestSchema = object({
5776
- name: string().trim().min(1),
5777
- description: string().trim().min(1).optional()
5778
- });
5779
- const UpdateProjectRequestSchema = object({
5780
- name: string().trim().min(1).optional(),
5781
- description: string().trim().optional(),
5782
- slug: ProjectSlugSchema.optional()
5783
- }).refine((data) => data.name !== void 0 || data.description !== void 0 || data.slug !== void 0, { message: "At least one field is required" });
5784
- const CreateProjectResponseSchema = object({ project: ProjectSchema });
5785
- const ProjectResponseSchema = object({ project: ProjectSchema });
5786
- const ProjectReachabilityResponseSchema = object({ reachable: boolean() });
5787
5921
  const ValidationErrorDetailSchema = object({
5788
5922
  path: string(),
5789
5923
  message: string()
@@ -6424,7 +6558,7 @@ const OrganizationMemberSchema = object({
6424
6558
  joinedAt: isoDateTime$4.optional(),
6425
6559
  lastActiveAt: isoDateTime$4.nullable().optional()
6426
6560
  });
6427
- const ListOrganizationMembersResponseSchema = object({ members: array(OrganizationMemberSchema) });
6561
+ const ListOrganizationMembersResponseSchema = array(OrganizationMemberSchema);
6428
6562
  const InviteOrganizationMembersRequestSchema = object({
6429
6563
  emails: array(string().trim().email()).min(1),
6430
6564
  role: InvitableOrganizationMemberRoleSchema
@@ -6435,22 +6569,22 @@ const InviteOrganizationMemberResultStatusSchema = _enum([
6435
6569
  "pending",
6436
6570
  "invalid"
6437
6571
  ]);
6438
- const InviteOrganizationMembersResponseSchema = object({ results: array(object({
6572
+ const InviteOrganizationMembersResponseSchema = array(object({
6439
6573
  email: string(),
6440
6574
  status: InviteOrganizationMemberResultStatusSchema,
6441
6575
  invitationId: string().optional()
6442
- })) });
6576
+ }));
6443
6577
  const UpdateOrganizationMemberRequestSchema = object({ role: InvitableOrganizationMemberRoleSchema });
6444
- const UpdateOrganizationMemberResponseSchema = object({ member: OrganizationMemberSchema });
6445
- const ListOrganizationInvitationsResponseSchema = object({ invitations: array(object({
6578
+ const UpdateOrganizationMemberResponseSchema = OrganizationMemberSchema;
6579
+ const ListOrganizationInvitationsResponseSchema = array(object({
6446
6580
  id: string(),
6447
6581
  organizationName: string(),
6448
6582
  organizationSlug: OrganizationSlugSchema,
6449
6583
  invitedByName: string().optional(),
6450
6584
  invitedByEmail: string().email().optional(),
6451
6585
  role: OrganizationMemberRoleSchema
6452
- })) });
6453
- const AcceptOrganizationInvitationResponseSchema = object({ organization: UserOrganizationSchema });
6586
+ }));
6587
+ const AcceptOrganizationInvitationResponseSchema = UserOrganizationSchema;
6454
6588
  const DeclineOrganizationInvitationResponseSchema = object({ success: literal(true) });
6455
6589
  const isoDateTime$3 = string().datetime();
6456
6590
  const ApiKeyCreatorSchema = object({
@@ -6469,7 +6603,7 @@ const ApiKeySummarySchema = object({
6469
6603
  createdBy: ApiKeyCreatorSchema,
6470
6604
  isCreatedByCurrentUser: boolean()
6471
6605
  });
6472
- const ListApiKeysResponseSchema = object({ apiKeys: array(ApiKeySummarySchema) });
6606
+ const ListApiKeysResponseSchema = array(ApiKeySummarySchema);
6473
6607
  const CreateApiKeyRequestSchema = object({ name: string().trim().min(1).max(128) });
6474
6608
  const CreateApiKeyResponseSchema = ApiKeySummarySchema.extend({ secret: string() });
6475
6609
  const ProjectUserRoleSchema = _enum(["admin", "builder"]);
@@ -6487,7 +6621,7 @@ const ProjectMemberSchema = object({
6487
6621
  createdAt: isoDateTime$2,
6488
6622
  isCurrentUser: boolean().optional()
6489
6623
  });
6490
- const ListProjectMembersResponseSchema = object({ members: array(ProjectMemberSchema) });
6624
+ const ListProjectMembersResponseSchema = array(ProjectMemberSchema);
6491
6625
  const InviteProjectMembersRequestSchema = object({
6492
6626
  emails: array(string().trim().email()).min(1),
6493
6627
  role: ProjectUserRoleSchema
@@ -6498,12 +6632,12 @@ const InviteProjectMemberResultStatusSchema = _enum([
6498
6632
  "not_org_member",
6499
6633
  "invalid"
6500
6634
  ]);
6501
- const InviteProjectMembersResponseSchema = object({ results: array(object({
6635
+ const InviteProjectMembersResponseSchema = array(object({
6502
6636
  email: string(),
6503
6637
  status: InviteProjectMemberResultStatusSchema
6504
- })) });
6638
+ }));
6505
6639
  const UpdateProjectMemberRequestSchema = object({ role: ProjectUserRoleSchema });
6506
- const UpdateProjectMemberResponseSchema = object({ member: ProjectMemberSchema });
6640
+ const UpdateProjectMemberResponseSchema = ProjectMemberSchema;
6507
6641
  const ProjectSettingsSchema = object({
6508
6642
  description: string(),
6509
6643
  defaultRole: ProjectUserRoleSchema,
@@ -6514,7 +6648,7 @@ const UpdateProjectSettingsRequestSchema = object({
6514
6648
  defaultRole: ProjectUserRoleSchema.optional(),
6515
6649
  invitePermission: ProjectInvitePermissionSchema.optional()
6516
6650
  }).refine((data) => data.description !== void 0 || data.defaultRole !== void 0 || data.invitePermission !== void 0, { message: "At least one field is required" });
6517
- const ProjectSettingsResponseSchema = object({ settings: ProjectSettingsSchema });
6651
+ const ProjectSettingsResponseSchema = ProjectSettingsSchema;
6518
6652
  /** Custom avatar override; null means fall back to OAuth `users.image`. */
6519
6653
  const UserAvatarSchema = object({ url: url().nullable() });
6520
6654
  const UserAvatarPatchSchema = object({
@@ -6626,7 +6760,7 @@ const DownloadActiveProjectArtifactResponseSchema = object({
6626
6760
  downloadUrl: string().url(),
6627
6761
  expiresInSeconds: number$1().int().positive()
6628
6762
  });
6629
- const ListProjectDeploymentsResponseSchema = object({ deployments: array(object({
6763
+ const ListProjectDeploymentsResponseSchema = array(object({
6630
6764
  id: string(),
6631
6765
  projectId: string(),
6632
6766
  version: number$1().int().positive(),
@@ -6635,7 +6769,7 @@ const ListProjectDeploymentsResponseSchema = object({ deployments: array(object(
6635
6769
  deployedByAvatarUrl: string().optional(),
6636
6770
  createdAt: isoDateTime$1,
6637
6771
  active: boolean()
6638
- })) });
6772
+ }));
6639
6773
  const optionalCount = number$1().int().nonnegative().nullable().optional();
6640
6774
  const optionalTimestamp = string().nullable().optional();
6641
6775
  const AgentSummarySchema = object({
@@ -6762,6 +6896,6 @@ object({
6762
6896
  generatedAt: isoDateTime
6763
6897
  });
6764
6898
  //#endregion
6765
- export { ListProjectsResponseSchema as $, normalizeCredentialList as $t, DownloadActiveProjectArtifactResponseSchema as A, TriggerRunListResponseSchema as At, InviteOrganizationMembersResponseSchema as B, UpdateProjectSettingsRequestSchema as Bt, CreateOrganizationResponseSchema as C, StartOAuthConnectionInputSchema as Ct, CredentialInstanceListResponseSchema as D, TriggerDetailResponseSchema as Dt, CreateProjectResponseSchema as E, SubmitTeamRequestRequestSchema as Et, HistoryRunCancelResponseSchema as F, UpdateOrganizationMemberResponseSchema as Ft, ListCredentialsResponseSchema as G, UserAvatarSchema as Gt, InviteProjectMembersResponseSchema as H, UploadProjectSourceResponseSchema as Ht, HistoryRunDetailResponseSchema as I, UpdateOrganizationRequestSchema as It, ListOrganizationsResponseSchema as J, WorkflowRunDetailResponseSchema as Jt, ListOrganizationInvitationsResponseSchema as K, UserPreferencesPatchSchema as Kt, HistoryRunListQuerySchema as L, UpdateProjectMemberRequestSchema as Lt, GatewayAttachmentRecordSchema as M, UpdateCredentialInstanceBodySchema as Mt, GetCredentialResponseSchema as N, UpdateCredentialRequestSchema as Nt, CredentialInstanceRecordSchema as O, TriggerListResponseSchema as Ot, HealthResponseSchema as P, UpdateOrganizationMemberRequestSchema as Pt, ListProjectMetricsResponseSchema as Q, listenPortFromPublicUrl as Qt, HistoryRunListResponseSchema as R, UpdateProjectMemberResponseSchema as Rt, CreateOrganizationRequestSchema as S, SlugAvailabilityResponseSchema as St, CreateProjectRequestSchema as T, StoredRouteManifestSchema as Tt, ListApiKeysResponseSchema as U, UpsertGatewayAttachmentBodySchema as Ut, InviteProjectMembersRequestSchema as V, UploadProjectSourceManifestRequestSchema as Vt, ListAppsResponseSchema as W, UserAvatarPatchSchema as Wt, ListProjectFilesResponseSchema as X, WorkflowSummaryDetailResponseSchema as Xt, ListProjectDeploymentsResponseSchema as Y, WorkflowRunListResponseSchema as Yt, ListProjectMembersResponseSchema as Z, WorkflowSummaryListResponseSchema as Zt, CreateApiKeyRequestSchema as _, QueuedRunResponseSchema as _t, AgentSessionListResponseSchema as a, custom as an, PresignOrgLogoResponseSchema as at, CreateCredentialsRequestSchema as b, SkillSummaryDetailResponseSchema as bt, BindChannelBodySchema as c, object as cn, PresignUserAvatarRequestSchema as ct, ChannelConnectionSchema as d, toJSONSchema as dn, ProjectResponseSchema as dt, originFromPublicUrl as en, OrganizationSidebarBrandingPatchSchema as et, ChannelDirectoryListResponseSchema as f, ProjectSettingsResponseSchema as ft, ConnectProvidersResponseSchema as g, QueuedAgentPromptResponseSchema as gt, ConnectAuthorizeUrlResponseSchema as h, PromptResponseSchema as ht, AgentSessionDetailResponseSchema as i, array as in, PresignOrgLogoRequestSchema as it, ErrorResponseSchema as j, UpdateChannelBindingBodySchema as jt, DeclineOrganizationInvitationResponseSchema as k, TriggerRunDetailResponseSchema as kt, ChannelAccountListResponseSchema as l, string as ln, PresignUserAvatarResponseSchema as lt, CompleteProjectArtifactResponseSchema as m, PromptInputSchema as mt, AcceptOrganizationInvitationResponseSchema as n, ZodType as nn, PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS as nt, AgentSummaryDetailResponseSchema as o, discriminatedUnion as on, PresignProjectSourceRequestSchema as ot, ChannelPlatformSchema as p, ProjectSlugAvailabilityResponseSchema as pt, ListOrganizationMembersResponseSchema as q, UserPreferencesSchema as qt, ActiveOrganizationResponseSchema as r, _function as rn, PollRunResponseSchema as rt, AgentSummaryListResponseSchema as s, literal as sn, PresignProjectSourceResponseSchema as st, ACTIVE_ORG_HEADER as t, parseErrorResponse as tn, OrganizationSidebarBrandingSchema as tt, ChannelConnectionListResponseSchema as u, union as un, ProjectReachabilityResponseSchema as ut, CreateApiKeyResponseSchema as v, ROUTE_MANIFEST_REL_PATH as vt, CreateProjectArtifactResponseSchema as w, StartOAuthConnectionResultSchema as wt, CreateCredentialsResponseSchema as x, SkillSummaryListResponseSchema as xt, CreateCredentialInstanceBodySchema as y, RecentResourceListResponseSchema as yt, InviteOrganizationMembersRequestSchema as z, UpdateProjectRequestSchema as zt };
6899
+ export { ListCredentialsResponseSchema as $, UpsertGatewayAttachmentBodySchema as $t, CreateOrganizationResponseSchema as A, SlugAvailabilityResponseSchema as At, GetCredentialResponseSchema as B, TriggerRunListResponseSchema as Bt, CreateApiKeyResponseSchema as C, toJSONSchema as Cn, PromptResponseSchema as Ct, CreateCustomAppRequestSchema as D, RecentResourceListResponseSchema as Dt, CreateCredentialsResponseSchema as E, ROUTE_MANIFEST_REL_PATH as Et, CredentialInstanceRecordSchema as F, StoredRouteManifestSchema as Ft, HistoryRunListQuerySchema as G, UpdateOrganizationMemberResponseSchema as Gt, HealthResponseSchema as H, UpdateCredentialInstanceBodySchema as Ht, DeclineOrganizationInvitationResponseSchema as I, SubmitTeamRequestRequestSchema as It, InviteOrganizationMembersResponseSchema as J, UpdateProjectMemberResponseSchema as Jt, HistoryRunListResponseSchema as K, UpdateOrganizationRequestSchema as Kt, DownloadActiveProjectArtifactResponseSchema as L, TriggerDetailResponseSchema as Lt, CreateProjectRequestSchema as M, StartKeystrokeConnectionResultSchema as Mt, CreateProjectResponseSchema as N, StartOAuthConnectionInputSchema as Nt, CreateCustomAppResponseSchema as O, SkillSummaryDetailResponseSchema as Ot, CredentialInstanceListResponseSchema as P, StartOAuthConnectionResultSchema as Pt, ListAppsResponseSchema as Q, UploadProjectSourceResponseSchema as Qt, ErrorResponseSchema as R, TriggerListResponseSchema as Rt, CreateApiKeyRequestSchema as S, union as Sn, PromptInputSchema as St, CreateCredentialsRequestSchema as T, QueuedRunResponseSchema as Tt, HistoryRunCancelResponseSchema as U, UpdateCredentialRequestSchema as Ut, GetCustomAppResponseSchema as V, UpdateChannelBindingBodySchema as Vt, HistoryRunDetailResponseSchema as W, UpdateOrganizationMemberRequestSchema as Wt, InviteProjectMembersResponseSchema as X, UpdateProjectSettingsRequestSchema as Xt, InviteProjectMembersRequestSchema as Y, UpdateProjectRequestSchema as Yt, ListApiKeysResponseSchema as Z, UploadProjectSourceManifestRequestSchema as Zt, ChannelDirectoryListResponseSchema as _, custom as _n, PresignUserAvatarResponseSchema as _t, AgentSessionListResponseSchema as a, WorkflowRunListResponseSchema as an, ListProjectMembersResponseSchema as at, ConnectAuthorizeUrlResponseSchema as b, object as bn, ProjectSettingsResponseSchema as bt, AppSlugAvailabilityResponseSchema as c, listenPortFromPublicUrl as cn, OrganizationSidebarBrandingPatchSchema as ct, CatalogActionsPageResponseSchema as d, parseAppSlug as dn, PollRunResponseSchema as dt, UserAvatarPatchSchema as en, ListOrganizationInvitationsResponseSchema as et, CatalogAppDetailResponseSchema as f, parseErrorResponse as fn, PresignOrgLogoRequestSchema as ft, ChannelConnectionSchema as g, array as gn, PresignUserAvatarRequestSchema as gt, ChannelConnectionListResponseSchema as h, _function as hn, PresignProjectSourceResponseSchema as ht, AgentSessionDetailResponseSchema as i, WorkflowRunDetailResponseSchema as in, ListProjectFilesResponseSchema as it, CreateProjectArtifactResponseSchema as j, StartKeystrokeConnectionInputSchema as jt, CreateOrganizationRequestSchema as k, SkillSummaryListResponseSchema as kt, BindChannelBodySchema as l, normalizeCredentialList as ln, OrganizationSidebarBrandingSchema as lt, ChannelAccountListResponseSchema as m, ZodType as mn, PresignProjectSourceRequestSchema as mt, AcceptOrganizationInvitationResponseSchema as n, UserPreferencesPatchSchema as nn, ListOrganizationsResponseSchema as nt, AgentSummaryDetailResponseSchema as o, WorkflowSummaryDetailResponseSchema as on, ListProjectMetricsResponseSchema as ot, CatalogAppsPageResponseSchema as p, slugifyAppName as pn, PresignOrgLogoResponseSchema as pt, InviteOrganizationMembersRequestSchema as q, UpdateProjectMemberRequestSchema as qt, ActiveOrganizationResponseSchema as r, UserPreferencesSchema as rn, ListProjectDeploymentsResponseSchema as rt, AgentSummaryListResponseSchema as s, WorkflowSummaryListResponseSchema as sn, ListProjectsResponseSchema as st, ACTIVE_ORG_HEADER as t, UserAvatarSchema as tn, ListOrganizationMembersResponseSchema as tt, CatalogActionDetailResponseSchema as u, originFromPublicUrl as un, PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS as ut, ChannelPlatformSchema as v, discriminatedUnion as vn, ProjectReachabilityResponseSchema as vt, CreateCredentialInstanceBodySchema as w, QueuedAgentPromptResponseSchema as wt, ConnectProvidersResponseSchema as x, string as xn, ProjectSlugAvailabilityResponseSchema as xt, CompleteProjectArtifactResponseSchema as y, literal as yn, ProjectResponseSchema as yt, GatewayAttachmentRecordSchema as z, TriggerRunDetailResponseSchema as zt };
6766
6900
 
6767
- //# sourceMappingURL=dist-C47GdlWY.mjs.map
6901
+ //# sourceMappingURL=dist-C3YClLXV.mjs.map