@keystrokehq/hosting 0.1.6 → 0.1.7

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.
package/dist/index.mjs CHANGED
@@ -5266,18 +5266,19 @@ object({
5266
5266
  source: _enum([
5267
5267
  "custom",
5268
5268
  "mcp",
5269
- "openapi"
5269
+ "openapi",
5270
+ "graphql"
5270
5271
  ]).default("custom"),
5271
- mcpUrl: string().url().optional(),
5272
+ url: string().url().optional(),
5272
5273
  authKind: AppAuthKindSchema.optional(),
5273
5274
  fields: optionalCredentialFieldsSchema.optional(),
5274
5275
  credentialScheme: AppCredentialSchemeSchema.optional(),
5275
5276
  oauthScopes: array(OAuthScopeOptionSchema).optional()
5276
5277
  }).superRefine((data, ctx) => {
5277
- if (data.source === "mcp" && !data.mcpUrl) ctx.addIssue({
5278
+ if ((data.source === "mcp" || data.source === "openapi" || data.source === "graphql") && !data.url) ctx.addIssue({
5278
5279
  code: "custom",
5279
- message: "mcpUrl is required for MCP apps",
5280
- path: ["mcpUrl"]
5280
+ message: "url is required for this app source",
5281
+ path: ["url"]
5281
5282
  });
5282
5283
  if (!(data.authKind ?? (data.source === "custom" ? "api_key" : void 0))) {
5283
5284
  ctx.addIssue({
@@ -5303,7 +5304,7 @@ object({
5303
5304
  category: string().min(1),
5304
5305
  authKind: AppAuthKindSchema,
5305
5306
  source: AppSourceSchema,
5306
- mcpUrl: string().url().nullable().optional(),
5307
+ url: string().url().nullable().optional(),
5307
5308
  credentialFields: optionalCredentialFieldsSchema.optional(),
5308
5309
  credentialScheme: AppCredentialSchemeSchema.optional(),
5309
5310
  oauthScopes: array(OAuthScopeOptionSchema).optional(),
@@ -5323,7 +5324,7 @@ object({
5323
5324
  source: AppSourceSchema,
5324
5325
  credentialFields: AppCredentialFieldsSchema.optional(),
5325
5326
  credentialScheme: AppCredentialSchemeSchema.optional(),
5326
- mcpUrl: string().url().nullable().optional(),
5327
+ url: string().url().nullable().optional(),
5327
5328
  createdAt: string().min(1),
5328
5329
  updatedAt: string().min(1)
5329
5330
  });
@@ -5342,8 +5343,8 @@ object({
5342
5343
  credentialFields: AppCredentialFieldsSchema.optional(),
5343
5344
  /** Composio auth scheme when credentialFields are present. */
5344
5345
  credentialScheme: AppCredentialSchemeSchema.optional(),
5345
- /** Direct MCP server URL when source is mcp. */
5346
- mcpUrl: string().url().nullable().optional(),
5346
+ /** Endpoint URL for MCP, OpenAPI, or GraphQL custom apps. */
5347
+ url: string().url().nullable().optional(),
5347
5348
  /** When present, the app supports agent gateway bindings (external channels). */
5348
5349
  gateway: AppGatewaySchema.optional()
5349
5350
  });
@@ -5377,7 +5378,7 @@ object({
5377
5378
  credentialFields: record(string(), AppCredentialFieldSchema).optional(),
5378
5379
  credentialScheme: AppCredentialSchemeSchema.optional(),
5379
5380
  oauthScopes: array(OAuthScopeOptionSchema),
5380
- mcpUrl: string().url(),
5381
+ url: string().url(),
5381
5382
  oauth: McpAuthProbeOAuthSchema.optional(),
5382
5383
  serverName: string().optional(),
5383
5384
  serverDescription: string().optional()
@@ -5401,7 +5402,21 @@ object({
5401
5402
  credentialFields: record(string(), AppCredentialFieldSchema).optional(),
5402
5403
  credentialScheme: AppCredentialSchemeSchema.optional(),
5403
5404
  oauthScopes: array(OAuthScopeOptionSchema),
5404
- openapiUrl: string().url(),
5405
+ url: string().url(),
5406
+ name: string().optional(),
5407
+ description: string().optional(),
5408
+ homepageUrl: string().optional()
5409
+ })
5410
+ });
5411
+ object({ url: string().url() });
5412
+ object({
5413
+ detected: boolean(),
5414
+ template: object({
5415
+ authKind: AppAuthKindSchema,
5416
+ credentialFields: record(string(), AppCredentialFieldSchema).optional(),
5417
+ credentialScheme: AppCredentialSchemeSchema.optional(),
5418
+ oauthScopes: array(OAuthScopeOptionSchema),
5419
+ url: string().url(),
5405
5420
  name: string().optional(),
5406
5421
  description: string().optional(),
5407
5422
  homepageUrl: string().optional()
@@ -5663,6 +5678,7 @@ object({
5663
5678
  /** Honeypot — must stay empty; bots that fill it are ignored silently. */
5664
5679
  companyWebsite: string().optional()
5665
5680
  });
5681
+ object({ models: array(string()) });
5666
5682
  const ValidationErrorDetailSchema = object({
5667
5683
  path: string(),
5668
5684
  message: string()
@@ -5676,6 +5692,43 @@ object({
5676
5692
  details: array(ValidationErrorDetailSchema).optional()
5677
5693
  });
5678
5694
  object({ message: string() });
5695
+ const CHAT_ATTACHMENT_MAX_BYTES = 10 * 1024 * 1024;
5696
+ [
5697
+ {
5698
+ mediaType: "image/png",
5699
+ ext: "png"
5700
+ },
5701
+ {
5702
+ mediaType: "image/jpeg",
5703
+ ext: "jpg"
5704
+ },
5705
+ {
5706
+ mediaType: "image/webp",
5707
+ ext: "webp"
5708
+ },
5709
+ {
5710
+ mediaType: "image/gif",
5711
+ ext: "gif"
5712
+ },
5713
+ {
5714
+ mediaType: "application/pdf",
5715
+ ext: "pdf"
5716
+ }
5717
+ ].map((type) => type.mediaType);
5718
+ const ChatAttachmentInputSchema = object({
5719
+ storageKey: string().min(1),
5720
+ mediaType: string().min(1),
5721
+ filename: string().optional()
5722
+ });
5723
+ object({
5724
+ contentType: string().min(1),
5725
+ filename: string().min(1),
5726
+ size: number$1().int().positive().max(CHAT_ATTACHMENT_MAX_BYTES)
5727
+ });
5728
+ object({
5729
+ uploadUrl: string().url(),
5730
+ storageKey: string().min(1)
5731
+ });
5679
5732
  const CredentialRunContextSchema = object({
5680
5733
  orgId: string().min(1).optional(),
5681
5734
  projectId: string().min(1).optional(),
@@ -5684,7 +5737,8 @@ const CredentialRunContextSchema = object({
5684
5737
  selection: record(string(), string()).optional()
5685
5738
  });
5686
5739
  const ThinkingLevelSchema = _enum([
5687
- "off",
5740
+ "provider-default",
5741
+ "none",
5688
5742
  "minimal",
5689
5743
  "low",
5690
5744
  "medium",
@@ -5692,15 +5746,17 @@ const ThinkingLevelSchema = _enum([
5692
5746
  "xhigh"
5693
5747
  ]);
5694
5748
  object({
5695
- message: string().min(1),
5749
+ message: string(),
5696
5750
  sessionId: string().min(1).optional(),
5697
5751
  subscriptionId: string().min(1).optional(),
5698
5752
  context: CredentialRunContextSchema.optional(),
5699
- thinkingLevel: ThinkingLevelSchema.optional()
5700
- });
5753
+ thinkingLevel: ThinkingLevelSchema.optional(),
5754
+ files: array(ChatAttachmentInputSchema).max(5).optional()
5755
+ }).refine((data) => data.message.trim().length > 0 || (data.files?.length ?? 0) > 0, { message: "message or files is required" });
5701
5756
  object({
5702
5757
  sessionId: string(),
5703
5758
  messages: array(record(string(), unknown())),
5759
+ text: string(),
5704
5760
  error: string().nullable()
5705
5761
  });
5706
5762
  const SkipResponseSchema = object({
@@ -5925,6 +5981,14 @@ object({
5925
5981
  steps: array(WorkflowStepRunSchema),
5926
5982
  trace: TraceResponseSchema.nullable()
5927
5983
  });
5984
+ const WorkflowHookStatusSchema = _enum(["waiting", "resumed"]);
5985
+ object({ items: array(object({
5986
+ token: string(),
5987
+ correlationId: string(),
5988
+ status: WorkflowHookStatusSchema,
5989
+ createdAt: string(),
5990
+ resumeUrl: string().nullable()
5991
+ })) });
5928
5992
  const AgentSessionStatusSchema = _enum([
5929
5993
  "running",
5930
5994
  "completed",
@@ -6702,6 +6766,10 @@ const AgentSummarySchema = object({
6702
6766
  description: string().optional(),
6703
6767
  sourcePath: string().min(1).optional(),
6704
6768
  model: string().optional(),
6769
+ capabilities: object({
6770
+ images: boolean(),
6771
+ files: boolean()
6772
+ }).optional(),
6705
6773
  systemPrompt: string().optional(),
6706
6774
  toolCount: optionalCount,
6707
6775
  credentialCount: optionalCount,
@@ -6814,6 +6882,20 @@ object({
6814
6882
  })),
6815
6883
  generatedAt: isoDateTime
6816
6884
  });
6885
+ /** A single source file returned by the bulk active-source download endpoint. */
6886
+ const DownloadActiveProjectSourceFileSchema = object({
6887
+ path: string().min(1),
6888
+ contents: string()
6889
+ });
6890
+ object({
6891
+ artifactId: string(),
6892
+ files: array(DownloadActiveProjectSourceFileSchema)
6893
+ });
6894
+ object({
6895
+ projectId: string(),
6896
+ artifactId: string(),
6897
+ pulledAt: string().datetime()
6898
+ });
6817
6899
  object({ files: array(object({
6818
6900
  id: string(),
6819
6901
  path: string().min(1)