@truefoundry/ai-gateway-sdk 0.0.3 → 0.0.4

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.
@@ -137,9 +137,10 @@ export type AgentSkillManifest = BaseArtifactVersion & {
137
137
  ml_repo: string;
138
138
  };
139
139
  /**
140
+ * Service, job, workflow, and cluster deployment alerts. Teams is not supported on these alerts.
140
141
  * +discriminator=type
141
142
  */
142
- export type NotificationTargetForAlertRule = Email | SlackWebhook | SlackBot | PagerDuty | MSTeamsWebhook;
143
+ export type NotificationTargetForAlertRule = Email | SlackWebhook | SlackBot | PagerDuty;
143
144
  export type AlertSeverity = 'warning' | 'critical';
144
145
  /**
145
146
  * +label=All Data
@@ -278,7 +279,7 @@ export type MimeType = 'text/plain' | 'application/json' | 'image/png' | 'image/
278
279
  /**
279
280
  * +discriminator=type
280
281
  */
281
- export type AwsIntegrations = AwsEcr | AwsS3 | AwsParameterStore | AwsSecretsManager | AwsEksIntegration;
282
+ export type AwsIntegrations = AwsEcr | AwsS3 | AwsParameterStore | AwsSecretsManager | AwsEksIntegration | AwsAgentCoreRuntime | AwsAgentCoreHarness;
282
283
  /**
283
284
  * +label=Assumed Role Based
284
285
  */
@@ -294,7 +295,7 @@ export type AzureContentSafetyCategory = 'Hate' | 'SelfHarm' | 'Sexual' | 'Viole
294
295
  /**
295
296
  * +discriminator=type
296
297
  */
297
- export type AzureIntegrations = AzureAksIntegration | AzureContainerRegistry | AzureBlobStorage | AzureVault | AzureReposIntegration;
298
+ export type AzureIntegrations = AzureAksIntegration | AzureContainerRegistry | AzureBlobStorage | AzureVault | AzureReposIntegration | MicrosoftCopilotStudio | MicrosoftFoundry;
298
299
  export type AzurePIICategory = '*' | 'ABARoutingNumber' | 'Address' | 'Age' | 'ARNationalIdentityNumber' | 'AUBankAccountNumber' | 'AUDriversLicenseNumber' | 'AUMedicalAccountNumber' | 'AUPassportNumber' | 'AUTaxFileNumber' | 'AUBusinessNumber' | 'AUCompanyNumber' | 'ATIdentityCard' | 'ATTaxIdentificationNumber' | 'ATValueAddedTaxNumber' | 'AzureDocumentDBAuthKey' | 'AzureIAASDatabaseConnectionAndSQLString' | 'AzureIoTConnectionString' | 'AzurePublishSettingPassword' | 'AzureRedisCacheString' | 'AzureSAS' | 'AzureServiceBusString' | 'AzureStorageAccountKey' | 'AzureStorageAccountGeneric' | 'BankAccountNumber' | 'BENationalNumber' | 'BEValueAddedTaxNumber' | 'BRCPFNumber' | 'BRLegalEntityNumber' | 'BRNationalIDRG' | 'BGUniformCivilNumber' | 'CABankAccountNumber' | 'CADriversLicenseNumber' | 'CAHealthServiceNumber' | 'CAPassportNumber' | 'CAPersonalHealthID' | 'CASocialInsuranceNumber' | 'CLIdentityCardNumber' | 'CNResidentIdentityCardNumber' | 'CreditCardNumber' | 'HRIdentityCardNumber' | 'HRNationalIDCardNumber' | 'HRPersonalIdentificationNumber' | 'CYIdentityCard' | 'CYTaxIdentificationNumber' | 'CZPersonalIdentityNumber' | 'Date' | 'DateTime' | 'DKPersonalIdentificationNumber' | 'DEANumber' | 'Email' | 'EEPersonalIdentificationCode' | 'EUDebitCardNumber' | 'EUDriversLicenseNumber' | 'EUGPSCoordinates' | 'EUNationalIdentificationNumber' | 'EUPassportNumber' | 'EUSocialSecurityNumber' | 'EUTaxIdentificationNumber' | 'FIEuropeanHealthNumber' | 'FINationalID' | 'FIPassportNumber' | 'FRDriversLicenseNumber' | 'FRHealthInsuranceNumber' | 'FRNationalID' | 'FRPassportNumber' | 'FRSocialSecurityNumber' | 'FRTaxIdentificationNumber' | 'FRValueAddedTaxNumber' | 'DEDriversLicenseNumber' | 'DEPassportNumber' | 'DEIdentityCardNumber' | 'DETaxIdentificationNumber' | 'DEValueAddedTaxNumber' | 'GRNationalIDCard' | 'GRTaxIdentificationNumber' | 'HKIdentityCardNumber' | 'HUValueAddedTaxNumber' | 'HUPersonalIdentificationNumber' | 'HUTaxIdentificationNumber' | 'INPermanentAccountNumber' | 'INUniqueIdentificationNumber' | 'IDIdentityCardNumber' | 'InternationalBankingAccountNumber' | 'IPAddress' | 'IEPersonalPublicServiceNumber' | 'ILBankAccountNumber' | 'ILNationalID' | 'ITDriversLicenseNumber' | 'ITFiscalCode' | 'ITValueAddedTaxNumber' | 'JPBankAccountNumber' | 'JPDriversLicenseNumber' | 'JPPassportNumber' | 'JPResidentRegistrationNumber' | 'JPSocialInsuranceNumber' | 'JPMyNumberCorporate' | 'JPMyNumberPersonal' | 'JPResidenceCardNumber' | 'LVPersonalCode' | 'LTPersonalCode' | 'LUNationalIdentificationNumberNatural' | 'LUNationalIdentificationNumberNonNatural' | 'MYIdentityCardNumber' | 'MTIdentityCardNumber' | 'MTTaxIDNumber' | 'NLCitizensServiceNumber' | 'NLTaxIdentificationNumber' | 'NLValueAddedTaxNumber' | 'NZBankAccountNumber' | 'NZDriversLicenseNumber' | 'NZInlandRevenueNumber' | 'NZMinistryOfHealthNumber' | 'NZSocialWelfareNumber' | 'NOIdentityNumber' | 'Organization' | 'Person' | 'PersonType' | 'PHUnifiedMultiPurposeIDNumber' | 'PhoneNumber' | 'PLIdentityCard' | 'PLNationalID' | 'PLPassportNumber' | 'PLTaxIdentificationNumber' | 'PLREGONNumber' | 'PTCitizenCardNumber' | 'PTTaxIdentificationNumber' | 'ROPersonalNumericalCode' | 'RUPassportNumberDomestic' | 'RUPassportNumberInternational' | 'SANationalID' | 'SGNationalRegistrationIdentityCardNumber' | 'SKPersonalNumber' | 'SITaxIdentificationNumber' | 'SIUniqueMasterCitizenNumber' | 'ZAIdentificationNumber' | 'KRResidentRegistrationNumber' | 'ESDNI' | 'ESSocialSecurityNumber' | 'ESTaxIdentificationNumber' | 'AzureSQLConnectionString' | 'SENationalID' | 'SEPassportNumber' | 'SETaxIdentificationNumber' | 'SWIFTCode' | 'CHSocialSecurityNumber' | 'TWNationalID' | 'TWPassportNumber' | 'TWResidentCertificate' | 'THPopulationIdentificationCode' | 'TRNationalIdentificationNumber' | 'UKDriversLicenseNumber' | 'UKElectoralRollNumber' | 'UKNationalHealthNumber' | 'UKNationalInsuranceNumber' | 'UKUniqueTaxpayerNumber' | 'USUKPassportNumber' | 'USBankAccountNumber' | 'USDriversLicenseNumber' | 'USIndividualTaxpayerIdentification' | 'USSocialSecurityNumber' | 'URL';
299
300
  /**
300
301
  * +discriminator=type
@@ -695,18 +696,18 @@ export type OPAAuth = OPAHeaderAuth | OPABearerAuth;
695
696
  * +discriminator=type
696
697
  */
697
698
  export type HeaderRoutingConfig = WeightBasedLoadBalancing | LatencyBasedLoadBalancing | PriorityBasedLoadBalancing | ComplexityBasedLoadBalancing;
698
- export type IdentityProviders = 'custom' | 'okta' | 'azure-entra-id' | 'auth0';
699
+ export type IdentityProviders = 'custom' | 'okta' | 'azure-entra-id' | 'kubernetes' | 'github' | 'aws' | 'gcp' | 'auth0';
699
700
  /**
700
701
  * +usage=Name of the method used for inference
701
702
  * +label=Inference Method Name
702
703
  */
703
704
  export type InferMethodName = 'predict' | 'predict_proba';
704
- export type InfraProviderAccount = AwsProviderAccount | AzureProviderAccount | GcpProviderAccount | DockerhubProviderAccount | BitbucketProviderAccount | CustomProviderAccount | GithubProviderAccount | GitlabProviderAccount | JfrogProviderAccount | TTLProviderAccount | TrueFoundryProviderAccount | QuayProviderAccount | SlackProviderAccount | WebhookProviderAccount | PagerDutyProviderAccount | MSTeamsProviderAccount | HashicorpProviderAccount;
705
+ export type InfraProviderAccount = AwsProviderAccount | SnowflakeProviderAccount | AzureProviderAccount | GcpProviderAccount | DockerhubProviderAccount | BitbucketProviderAccount | CustomProviderAccount | GithubProviderAccount | GitlabProviderAccount | JfrogProviderAccount | TTLProviderAccount | TrueFoundryProviderAccount | QuayProviderAccount | SlackProviderAccount | WebhookProviderAccount | PagerDutyProviderAccount | MSTeamsProviderAccount | HashicorpProviderAccount;
705
706
  /**
706
707
  * +discriminator=type
707
708
  */
708
709
  export type SlackIntegrations = SlackWebhookIntegration | SlackBotIntegration;
709
- export type Input = AccountManifest | ClusterManifest | VirtualAccountManifest | PersonalAccessTokenManifest | WorkspaceManifest | ProviderIntegrations | Service | AsyncService | Workflow | Job | SparkJob | Helm | Volume | Notebook | SparkNotebook | Codeserver | SSHServer | RStudio | ApplicationSet | Intercept | MCPServerManifest | MLRepoManifest | ModelManifest | ArtifactManifest | DataDirectoryManifest | GatewayConfig | GatewayPolicyManifest | CacheConfig | HeaderRoutingConfig | TeamManifest | EnvironmentManifest | PolicyManifest | RoleManifest | RoleBindingManifest | AlertConfig | TracingProjectManifest | TracingApplicationManifest | ProviderAccounts | ChatPromptManifest | AgentSkillManifest | AWSTerraformConfig | GCPTerraformConfig | AzureTerraformConfig | GenericTerraformConfig | CommonToolsSettings | AIFeaturesSettings | SSOSettings | SecuritySettings | TracingProjectsControlPlaneStorage | FeaturesSettings | ThemeSettings | ProvisioningSettings | LegacyAgentManifest | AgentAppManifest | GatewayInstallationManifest | SecretGroupManifest | IdentityProviderManifest | AgentIdentityManifest | OidcClientManifest | AgentManifest | ModelConfig | MCPUserAuthInput | MCPUserAuthInputV2 | AgentManifestV2 | AgentChannelManifest;
710
+ export type Input = AccountManifest | ClusterManifest | VirtualAccountManifest | PersonalAccessTokenManifest | WorkspaceManifest | ProviderIntegrations | Service | AsyncService | Workflow | Job | SparkJob | Helm | Volume | Notebook | SparkNotebook | Codeserver | SSHServer | RStudio | ApplicationSet | Intercept | MCPServerManifest | MLRepoManifest | ModelManifest | ArtifactManifest | DataDirectoryManifest | GatewayConfig | GatewayPolicyManifest | CacheConfig | HeaderRoutingConfig | TeamManifest | EnvironmentManifest | PolicyManifest | RoleManifest | RoleBindingManifest | AlertConfig | TracingProjectManifest | TracingApplicationManifest | ProviderAccounts | ChatPromptManifest | AgentSkillManifest | AWSTerraformConfig | GCPTerraformConfig | AzureTerraformConfig | GenericTerraformConfig | CommonToolsSettings | AIFeaturesSettings | SSOSettings | SecuritySettings | TracingProjectsControlPlaneStorage | FeaturesSettings | ThemeSettings | ProvisioningSettings | AgentAppManifest | GatewayInstallationManifest | SecretGroupManifest | IdentityProviderManifest | AgentIdentityManifest | OidcClientManifest | ModelConfig | MCPUserAuthInput | MCPUserAuthInputV2 | AgentManifestV2 | AgentChannelManifest;
710
711
  /**
711
712
  * +label=Sync to Secret Manager
712
713
  * +sort=6
@@ -715,7 +716,7 @@ export type Input = AccountManifest | ClusterManifest | VirtualAccountManifest |
715
716
  * +discriminator=type
716
717
  */
717
718
  export type SecretStoreConfig = SecretStoreIntegrationConfig | TfySecretsConfig;
718
- export type ProviderIntegrations = AwsIntegrations | GcpIntegrations | AzureIntegrations | DockerhubIntegrations | CustomIntegrations | JFrogIntegrations | TTLIntegrations | TrueFoundryIntegrations | QuayIntegrations | CohereIntegrations | AI21Integrations | AnthropicIntegrations | AnyscaleIntegrations | DeepinfraIntegrations | GroqIntegrations | MistralAIIntegrations | PerplexityIntegrations | TogetherAIIntegrations | NomicIntegrations | PalmIntegrations | OllamaIntegrations | OpenAIIntegrations | SlackIntegrations | WebhookIntegrations | XAIIntegrations | BasetenIntegrations | DatabricksIntegrations | BedrockModel | VertexModel | GeminiModel | AzureOpenAIModel | AzureFoundryModel | MicrosoftFoundryModel | ClouderaIntegrations | PagerDutyIntegration | MSTeamsWebhookIntegration | SelfHostedModel | OpenRouterIntegrations | SambaNovaIntegrations | SagemakerIntegrations | CerebrasIntegrations | WaferIntegrations | TypeSafeIntegrations | HashicorpIntegrations | SnowflakeCortexIntegrations | ElevenLabsIntegrations | DeepgramIntegrations | CartesiaIntegrations | SmallestAiIntegrations | AWSClaudePlatformIntegrations | BedrockMantleModel | CustomEndpointIntegrations | TrueFoundryModelsIntegrations;
719
+ export type ProviderIntegrations = AwsIntegrations | SnowflakeIntegrations | GcpIntegrations | AzureIntegrations | DockerhubIntegrations | CustomIntegrations | JFrogIntegrations | TTLIntegrations | TrueFoundryIntegrations | QuayIntegrations | CohereIntegrations | AI21Integrations | AnthropicIntegrations | AnyscaleIntegrations | DeepinfraIntegrations | GroqIntegrations | MistralAIIntegrations | PerplexityIntegrations | TogetherAIIntegrations | NomicIntegrations | PalmIntegrations | OllamaIntegrations | OpenAIIntegrations | SlackIntegrations | WebhookIntegrations | XAIIntegrations | BasetenIntegrations | DatabricksIntegrations | BedrockModel | VertexModel | GeminiModel | AzureOpenAIModel | AzureFoundryModel | MicrosoftFoundryModel | ClouderaIntegrations | PagerDutyIntegration | MSTeamsWebhookIntegration | SelfHostedModel | OpenRouterIntegrations | SambaNovaIntegrations | SagemakerIntegrations | CerebrasIntegrations | WaferIntegrations | TypeSafeIntegrations | HashicorpIntegrations | SnowflakeCortexIntegrations | ElevenLabsIntegrations | DeepgramIntegrations | CartesiaIntegrations | SmallestAiIntegrations | AWSClaudePlatformIntegrations | BedrockMantleModel | CustomEndpointIntegrations | TrueFoundryModelsIntegrations;
719
720
  export type SelfHostedModelCostMetric = PerThousandTokensCostMetric | PerThousandEmbeddingTokensCostMetric | PerMillionCharactersCostMetric | PerMinuteOfAudioCostMetric | OCRCostMetric | PublicCostMetric;
720
721
  /**
721
722
  * +label=Driver Config
@@ -1383,6 +1384,41 @@ export interface OwnedBy {
1383
1384
  */
1384
1385
  account: string;
1385
1386
  }
1387
+ /**
1388
+ * +label=AI Features Models
1389
+ * +usage=Gateway model to use for each task complexity tier. AI features route each
1390
+ * request to the model matching the estimated difficulty of the task, trading off cost,
1391
+ * latency and quality. Each value is a Gateway model FQN in the form provider/model.
1392
+ */
1393
+ export interface AIFeaturesModels {
1394
+ /**
1395
+ * +label=Simple Tasks
1396
+ * +usage=Fast, low-cost model for high-volume, well-defined tasks like classification, extraction, formatting and short summaries.
1397
+ * +sort=1
1398
+ * +uiType=IntegrationSelect
1399
+ * +uiProps={"integrationType":"model","descriptionInline":true,"valuePattern":"${providerAccount.name}/${manifest.name}"}
1400
+ * +message=Select a Gateway model for simple tasks
1401
+ */
1402
+ simple: string;
1403
+ /**
1404
+ * +label=Medium Tasks
1405
+ * +usage=Balanced mid-tier model for standard tasks like general Q&A, structured output.
1406
+ * +sort=2
1407
+ * +uiType=IntegrationSelect
1408
+ * +uiProps={"integrationType":"model","descriptionInline":true,"valuePattern":"${providerAccount.name}/${manifest.name}"}
1409
+ * +message=Select a Gateway model for medium tasks
1410
+ */
1411
+ medium: string;
1412
+ /**
1413
+ * +label=Complex Tasks
1414
+ * +usage=Most capable model for demanding tasks like multi-step reasoning, code generation and nuanced analysis.
1415
+ * +sort=3
1416
+ * +uiType=IntegrationSelect
1417
+ * +uiProps={"integrationType":"model","descriptionInline":true,"valuePattern":"${providerAccount.name}/${manifest.name}"}
1418
+ * +message=Select a Gateway model for complex tasks
1419
+ */
1420
+ complex: string;
1421
+ }
1386
1422
  /**
1387
1423
  * +docs=Describes the configuration for TrueFoundry AI features
1388
1424
  * +label=AI Features Settings
@@ -1401,11 +1437,12 @@ export interface AIFeaturesSettings {
1401
1437
  enabled: boolean;
1402
1438
  /**
1403
1439
  * +label=AI Provider
1404
- * +usage=AI provider to use for AI features
1405
- * When TrueFoundry is selected, TrueFoundry will manage and provide the AI models for the features.
1406
- * +uiProps={"disableEdit":true}
1440
+ * +usage=AI provider to use for AI features.
1441
+ * TrueFoundry manages models on SaaS. Self-Managed uses your gateway models.
1442
+ * +sort=2
1407
1443
  */
1408
- ai_provider: 'truefoundry';
1444
+ ai_provider: 'truefoundry' | 'self-managed';
1445
+ models?: AIFeaturesModels;
1409
1446
  }
1410
1447
  /**
1411
1448
  * +docs=Describes the configuration for the input AMQP worker
@@ -2650,7 +2687,7 @@ export interface SlackBot {
2650
2687
  /**
2651
2688
  * +label=Slack Channel Names
2652
2689
  * +usage=List of channels to send messages to.
2653
- * +message=3 to 81 lower case characters long alphanumeric word, may contain - or _ in between, must start with #
2690
+ * +message=2 to 80 lower case characters long alphanumeric word, may contain - or _ in between, optional leading #
2654
2691
  * +sort=665
2655
2692
  */
2656
2693
  channels: string[];
@@ -3476,6 +3513,13 @@ export interface AgentManifestV2 {
3476
3513
  * +message=2 to 64 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
3477
3514
  */
3478
3515
  name: string;
3516
+ /**
3517
+ * +label=Display Name
3518
+ * +usage=A human-readable label for the Agent in the UI. If omitted, the agent name is shown.
3519
+ * +message=1 to 128 characters long
3520
+ * +sort=105
3521
+ */
3522
+ display_name?: string;
3479
3523
  /**
3480
3524
  * +label=Description
3481
3525
  * +usage=A short note on what this agent does — shown in the registry list and audit trail.
@@ -3483,6 +3527,14 @@ export interface AgentManifestV2 {
3483
3527
  * +uiType=TextArea
3484
3528
  */
3485
3529
  description: string;
3530
+ source?: RemoteAgentSource;
3531
+ /**
3532
+ * +label=State
3533
+ * +usage=Lifecycle state of the agent. Active: managed and available for use. Unmanaged: imported from an external registry for governance (not fully managed yet). Inactive: disabled and cannot be used or invoked.
3534
+ * +sort=116
3535
+ * +uiType=Select
3536
+ */
3537
+ state?: 'active' | 'unmanaged' | 'inactive';
3486
3538
  identity: RemoteAgentV2AgentIdentity;
3487
3539
  proxy_via_gateway: RemoteAgentProxyViaGatewayConfig;
3488
3540
  /**
@@ -3501,6 +3553,51 @@ export interface AgentManifestV2 {
3501
3553
  */
3502
3554
  tags?: {};
3503
3555
  }
3556
+ /**
3557
+ * +label=Source
3558
+ * +usage=Where the agent originated from.
3559
+ */
3560
+ export interface RemoteAgentSource {
3561
+ /**
3562
+ * +label=Type
3563
+ * +usage=Where the agent originated from.
3564
+ * +sort=100
3565
+ * +uiType=Select
3566
+ */
3567
+ type: 'trueforge' | 'aws-agentcore-harness' | 'aws-agentcore-runtime' | 'microsoft-foundry' | 'microsoft-copilot-studio';
3568
+ /**
3569
+ * +label=Provider Integration FQN
3570
+ * +usage=FQN of the provider integration used by this agent source.
3571
+ * +sort=250
3572
+ * +uiType=IntegrationSelect
3573
+ * +uiProps={"integrationType":"agent-registry"}
3574
+ */
3575
+ provider_integration_fqn?: string;
3576
+ /**
3577
+ * +label=External Name
3578
+ * +usage=Name of the agent in the external source system.
3579
+ * +sort=300
3580
+ */
3581
+ external_name?: string;
3582
+ /**
3583
+ * +label=External ID
3584
+ * +usage=ID of the agent in the external source system.
3585
+ * +sort=310
3586
+ */
3587
+ external_id?: string;
3588
+ /**
3589
+ * +label=Entra Agent Identity ID
3590
+ * +usage=Entra agent identity object ID (AgentIdentityId).
3591
+ * +sort=400
3592
+ */
3593
+ entra_agent_identity_id?: string;
3594
+ /**
3595
+ * +label=Entra Blueprint ID
3596
+ * +usage=Entra Agent Identity Blueprint ID (AgentIdentityBlueprintId).
3597
+ * +sort=410
3598
+ */
3599
+ entra_blueprint_id?: string;
3600
+ }
3504
3601
  /**
3505
3602
  * +label=TrueFoundry-backed
3506
3603
  * +usage=We issue and sign the token. Simplest option for agents you build and run yourself.
@@ -6004,7 +6101,7 @@ export interface JobAlert {
6004
6101
  * +sort=665
6005
6102
  */
6006
6103
  to_emails?: string[];
6007
- notification_target?: NotificationTarget;
6104
+ notification_target?: NotificationTargetForAlertRule;
6008
6105
  /**
6009
6106
  * +label=On Start
6010
6107
  * +usage=Send an alert when the job starts
@@ -6339,6 +6436,106 @@ export interface AutoRotate {
6339
6436
  */
6340
6437
  grace_period: number;
6341
6438
  }
6439
+ /**
6440
+ * +label=AWS AgentCore Harness
6441
+ * +icon=aws-agentcore-harness
6442
+ * +usage=Import agents from Amazon Bedrock AgentCore harness into the TrueFoundry agent registry.
6443
+ */
6444
+ export interface AwsAgentCoreHarness {
6445
+ /**
6446
+ * +value=integration/agent-registry/aws/agentcore-harness
6447
+ */
6448
+ type: 'integration/agent-registry/aws/agentcore-harness';
6449
+ /**
6450
+ * +label=Display Name
6451
+ * +usage=The name of the integration that will be displayed in the TrueFoundry UI.
6452
+ * +sort=100
6453
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
6454
+ */
6455
+ name: string;
6456
+ region: AWSRegion;
6457
+ syncSchedule?: CronSyncSchedule;
6458
+ /**
6459
+ * +label=Auth Data
6460
+ * +usage=Custom authentication data for the integration.
6461
+ * +sort=300
6462
+ * +discriminator=type
6463
+ */
6464
+ auth_data?: AwsAccessKeyBasedAuth | AwsAssumedRoleBasedAuth;
6465
+ /**
6466
+ * +label=Access Control
6467
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
6468
+ * +sort=600
6469
+ * +uiType=AuthorizedSubjects
6470
+ */
6471
+ authorized_subjects?: string[];
6472
+ }
6473
+ /**
6474
+ * +label=Cron Sync Schedule
6475
+ */
6476
+ export interface CronSyncSchedule {
6477
+ /**
6478
+ * +value=cron
6479
+ */
6480
+ type: 'cron';
6481
+ /**
6482
+ * +label=Cron Expression
6483
+ * +usage=Cron expression for when to run the sync. Minute cannot be configured.
6484
+ * +uiType=CronInput
6485
+ * +uiProps={"disableMinute": true, "hideTimezonePicker": true}
6486
+ * ```
6487
+ * * * * * *
6488
+ * | | | |
6489
+ * | | | |___ day of week (0-6) (Sunday is 0)
6490
+ * | | |_____ month (1-12)
6491
+ * | |_______ day of month (1-31)
6492
+ * |_________ hour (0-23)
6493
+ * ```
6494
+ * +message=Sync schedule must not specify a minute.
6495
+ */
6496
+ expression: string;
6497
+ /**
6498
+ * +label=Timezone
6499
+ * +uiType=TimezoneSelect
6500
+ * +usage=Timezone against which the cron schedule will be calculated, e.g. "Asia/Tokyo". Default is UTC.
6501
+ * https://docs.truefoundry.com/docs/list-of-supported-timezones
6502
+ */
6503
+ timezone?: string;
6504
+ }
6505
+ /**
6506
+ * +label=AWS AgentCore Runtime
6507
+ * +icon=aws-agentcore-runtime
6508
+ * +usage=Import agents from Amazon Bedrock AgentCore runtime into the TrueFoundry agent registry.
6509
+ */
6510
+ export interface AwsAgentCoreRuntime {
6511
+ /**
6512
+ * +value=integration/agent-registry/aws/agentcore-runtime
6513
+ */
6514
+ type: 'integration/agent-registry/aws/agentcore-runtime';
6515
+ /**
6516
+ * +label=Display Name
6517
+ * +usage=The name of the integration that will be displayed in the TrueFoundry UI.
6518
+ * +sort=100
6519
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
6520
+ */
6521
+ name: string;
6522
+ region: AWSRegion;
6523
+ syncSchedule?: CronSyncSchedule;
6524
+ /**
6525
+ * +label=Auth Data
6526
+ * +usage=Custom authentication data for the integration.
6527
+ * +sort=300
6528
+ * +discriminator=type
6529
+ */
6530
+ auth_data?: AwsAccessKeyBasedAuth | AwsAssumedRoleBasedAuth;
6531
+ /**
6532
+ * +label=Access Control
6533
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
6534
+ * +sort=600
6535
+ * +uiType=AuthorizedSubjects
6536
+ */
6537
+ authorized_subjects?: string[];
6538
+ }
6342
6539
  /**
6343
6540
  * +label=Bedrock Mantle Model
6344
6541
  * +icon=aws-bedrock
@@ -7758,6 +7955,72 @@ export interface VCSTokenAuthData {
7758
7955
  */
7759
7956
  token: string;
7760
7957
  }
7958
+ /**
7959
+ * +label=Microsoft Copilot Studio
7960
+ * +icon=copilot-studio
7961
+ * +usage=Import agents from Microsoft Copilot Studio into the TrueFoundry agent registry.
7962
+ */
7963
+ export interface MicrosoftCopilotStudio {
7964
+ /**
7965
+ * +value=integration/agent-registry/azure/microsoft-copilot-studio
7966
+ */
7967
+ type: 'integration/agent-registry/azure/microsoft-copilot-studio';
7968
+ /**
7969
+ * +label=Display Name
7970
+ * +usage=The name of the integration that will be displayed in the TrueFoundry UI.
7971
+ * +sort=100
7972
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
7973
+ */
7974
+ name: string;
7975
+ syncSchedule?: CronSyncSchedule;
7976
+ /**
7977
+ * +label=Auth Data
7978
+ * +usage=Custom authentication data for the integration.
7979
+ * +sort=300
7980
+ * +discriminator=type
7981
+ */
7982
+ auth_data?: AzureCertificateAuth | AzureClientSecretAuth;
7983
+ /**
7984
+ * +label=Access Control
7985
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
7986
+ * +sort=600
7987
+ * +uiType=AuthorizedSubjects
7988
+ */
7989
+ authorized_subjects?: string[];
7990
+ }
7991
+ /**
7992
+ * +label=Microsoft Foundry
7993
+ * +icon=microsoft-foundry
7994
+ * +usage=Import agents from Microsoft Foundry into the TrueFoundry agent registry.
7995
+ */
7996
+ export interface MicrosoftFoundry {
7997
+ /**
7998
+ * +value=integration/agent-registry/azure/microsoft-foundry
7999
+ */
8000
+ type: 'integration/agent-registry/azure/microsoft-foundry';
8001
+ /**
8002
+ * +label=Display Name
8003
+ * +usage=The name of the integration that will be displayed in the TrueFoundry UI.
8004
+ * +sort=100
8005
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
8006
+ */
8007
+ name: string;
8008
+ syncSchedule?: CronSyncSchedule;
8009
+ /**
8010
+ * +label=Auth Data
8011
+ * +usage=Custom authentication data for the integration.
8012
+ * +sort=300
8013
+ * +discriminator=type
8014
+ */
8015
+ auth_data?: AzureCertificateAuth | AzureClientSecretAuth;
8016
+ /**
8017
+ * +label=Access Control
8018
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
8019
+ * +sort=600
8020
+ * +uiType=AuthorizedSubjects
8021
+ */
8022
+ authorized_subjects?: string[];
8023
+ }
7761
8024
  /**
7762
8025
  * +label=Create New Cluster
7763
8026
  */
@@ -9416,6 +9679,78 @@ export interface CartesiaProviderAccount {
9416
9679
  */
9417
9680
  discount_percent?: number;
9418
9681
  }
9682
+ /**
9683
+ * +label=Cato Networks API Key Auth
9684
+ */
9685
+ export interface CatoNetworksApiKeyAuth {
9686
+ /**
9687
+ * +value=api-key
9688
+ */
9689
+ type: 'api-key';
9690
+ /**
9691
+ * +sort=100
9692
+ * +usage=API key issued by Cato for this AI Security guard. Sent as a Bearer token. The key secret is never forwarded to Cato as the gateway key alias.
9693
+ * +message=API key must not be empty
9694
+ * +uiType=SecretSelect
9695
+ * +uiProps={"isPassword": true, "enableNew": true}
9696
+ */
9697
+ api_key: string;
9698
+ }
9699
+ /**
9700
+ * +label=Cato Networks
9701
+ * +icon=https://assets.production.truefoundry.com/cato.png
9702
+ */
9703
+ export interface CatoNetworksGuardrailConfig {
9704
+ /**
9705
+ * +label=Name
9706
+ * +sort=50
9707
+ * +usage=The name of the Guardrail Config.
9708
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
9709
+ * +uiProps={"disableEdit":true}
9710
+ */
9711
+ name: string;
9712
+ /**
9713
+ * +label=Description
9714
+ * +sort=75
9715
+ * +usage=Optional description for this Guardrail Config.
9716
+ */
9717
+ description?: string;
9718
+ /**
9719
+ * +uiType=Hidden
9720
+ * +value=integration/guardrail-config/cato-networks
9721
+ */
9722
+ type: 'integration/guardrail-config/cato-networks';
9723
+ auth_data: CatoNetworksApiKeyAuth;
9724
+ /**
9725
+ * +label=Operation
9726
+ * +usage=Validate treats a Cato block or anonymize action as a violation and leaves the payload unchanged. Mutate also replaces the messages with Cato's anonymized versions and continues.
9727
+ * Validate guardrails are run in parallel while mutate guardrails are run sequentially.
9728
+ * +uiType=MultiSelectPills
9729
+ * +uiProps={"hideRadioIcon": true}
9730
+ * +sort=100
9731
+ */
9732
+ operation: 'mutate' | 'validate';
9733
+ /**
9734
+ * +label=Priority
9735
+ * +usage=Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.
9736
+ * +sort=150
9737
+ */
9738
+ priority?: number;
9739
+ enforcing_strategy: EnforcingStrategy;
9740
+ /**
9741
+ * +uiType=Ignore
9742
+ * +uiProps={"forwardJsonKey": true}
9743
+ */
9744
+ config: {
9745
+ /**
9746
+ * +label=Base URL
9747
+ * +usage=Cato API base URL. Use the regional Cato endpoint or the URL of a Cato Outpost in your environment. Trailing slashes are ignored.
9748
+ * +sort=50
9749
+ * +message=Base URL must be an http or https URL
9750
+ */
9751
+ base_url: string;
9752
+ };
9753
+ }
9419
9754
  /**
9420
9755
  * +label=Cedar
9421
9756
  * +icon=truefoundry
@@ -11022,7 +11357,7 @@ export interface ComplexityBasedLoadBalancing {
11022
11357
  * +label=Classification Strategy
11023
11358
  * +discriminator=type
11024
11359
  */
11025
- classification_strategy?: HeuristicClassificationStrategy | LlmClassificationStrategy | CustomClassificationStrategy;
11360
+ classification_strategy?: HeuristicClassificationStrategy | LlmClassificationStrategy | CustomClassificationStrategy | DecisionClassificationStrategy;
11026
11361
  /**
11027
11362
  * +usage=List of targets for complexity-based load balancing. Each target serves a single tier; a model must not appear under more than one tier.
11028
11363
  * +uiProps={"descriptionInline":true}
@@ -11120,23 +11455,58 @@ export interface StaticFallbackStrategy {
11120
11455
  default_tier: 'medium' | 'simple' | 'complex';
11121
11456
  }
11122
11457
  /**
11123
- * +label=Custom / Bring your own
11124
- * +usage=Classify request by calling your own HTTP endpoint. The gateway POSTs extracted prompt text and expects a tier in the response.
11458
+ * +label=Decision Model
11459
+ * +usage=Classify request using a TypeSafe decision model such as Jev. The gateway builds the question itself; the rubric is built in and not configurable.
11125
11460
  */
11126
- export interface CustomClassificationStrategy {
11461
+ export interface DecisionClassificationStrategy {
11127
11462
  /**
11128
- * +value=custom
11463
+ * +value=decision-classifier
11129
11464
  * +sort=1
11130
11465
  * +label=Strategy
11131
11466
  */
11132
- type: 'custom';
11467
+ type: 'decision-classifier';
11133
11468
  /**
11134
- * +label=URL
11135
- * +usage=HTTPS URL of your classifier. The gateway POSTs JSON with user_text, system_text, optional metadata, and config, and expects {"tier":"simple"|"medium"|"complex"} on 2xx.
11469
+ * +usage=Catalog model FQN used to classify request complexity. Must be resolvable by this tenant, must be a TypeSafe catalog model (not a virtual model), and must be a decision model.
11470
+ * +uiType=IntegrationSelect
11471
+ * +uiProps={"integrationType":"model", "valuePattern": "${providerAccount.name}/${manifest.name}", "filterConfig": {"model_types": ["decision"]}}
11136
11472
  * +sort=2
11137
- * +message=Must be an https URL without a trailing slash on the final path segment
11473
+ * +label=Classifier Model
11138
11474
  */
11139
- url: string;
11475
+ model: string;
11476
+ /**
11477
+ * +usage=Maximum time to wait for the classifier response in milliseconds before applying the fallback strategy.
11478
+ * +uiProps={"descriptionInline":true}
11479
+ * +sort=3
11480
+ * +label=Timeout (ms)
11481
+ */
11482
+ timeout_ms?: number;
11483
+ /**
11484
+ * +usage=Fallback strategy applied when the classifier fails.
11485
+ * +uiProps={"descriptionInline":true}
11486
+ * +sort=4
11487
+ * +label=Fallback Strategy
11488
+ * +discriminator=type
11489
+ */
11490
+ fallback_strategy: HeuristicFallbackStrategy | StaticFallbackStrategy;
11491
+ }
11492
+ /**
11493
+ * +label=Custom / Bring your own
11494
+ * +usage=Classify request by calling your own HTTP endpoint. The gateway POSTs extracted prompt text and expects a tier in the response.
11495
+ */
11496
+ export interface CustomClassificationStrategy {
11497
+ /**
11498
+ * +value=custom
11499
+ * +sort=1
11500
+ * +label=Strategy
11501
+ */
11502
+ type: 'custom';
11503
+ /**
11504
+ * +label=URL
11505
+ * +usage=HTTPS URL of your classifier. The gateway POSTs JSON with user_text, system_text, optional metadata, and config, and expects {"tier":"simple"|"medium"|"complex"} on 2xx.
11506
+ * +sort=2
11507
+ * +message=Must be an https URL without a trailing slash on the final path segment
11508
+ */
11509
+ url: string;
11140
11510
  /**
11141
11511
  * +usage=Maximum time to wait for the custom classifier response in milliseconds before applying the fallback strategy.
11142
11512
  * +uiProps={"descriptionInline":true}
@@ -11257,7 +11627,6 @@ export interface Cost {
11257
11627
  cache_creation_input_token_cost?: number;
11258
11628
  cache_creation_input_token_cost_per_hour?: number;
11259
11629
  cache_read_input_audio_token_cost?: number;
11260
- cache_read_input_image_token_cost?: number;
11261
11630
  cache_read_input_token_cost?: number;
11262
11631
  input_cost_per_annotated_page?: number;
11263
11632
  input_cost_per_audio_token?: number;
@@ -11447,6 +11816,7 @@ export interface CustomEndpoint {
11447
11816
  * +usage=Custom headers forwarded to the upstream endpoint with every request. For example: `{"X-Custom-Header": "value"}`
11448
11817
  * +sort=500
11449
11818
  * +isAdvanced=true
11819
+ * +uiProps={"keyPlaceholder": "X-Custom-Header", "valuePlaceholder": "value", "allowSecrets": true}
11450
11820
  */
11451
11821
  headers?: {
11452
11822
  [k: string]: string;
@@ -11563,6 +11933,7 @@ export interface CustomEndpointIntegrations {
11563
11933
  * +usage=Custom headers forwarded to the upstream endpoint with every request. For example: `{"X-Custom-Header": "value"}`
11564
11934
  * +sort=500
11565
11935
  * +isAdvanced=true
11936
+ * +uiProps={"keyPlaceholder": "X-Custom-Header", "valuePlaceholder": "value", "allowSecrets": true}
11566
11937
  */
11567
11938
  headers?: {
11568
11939
  [k: string]: string;
@@ -11877,6 +12248,13 @@ export interface CustomJWTAuthIntegration {
11877
12248
  * +sort=300
11878
12249
  */
11879
12250
  jwks_uri: string;
12251
+ /**
12252
+ * +label=Allowed Audiences
12253
+ * +usage=One or more audience values that must be present in the `aud` claim of incoming JWT tokens. Tokens with an audience not listed here will be rejected. When unset, the login provider client ID is used if configured.
12254
+ * +sort=350
12255
+ * +placeholder=e.g. https://api.example.com
12256
+ */
12257
+ audiences?: string[];
11880
12258
  login_provider?: OAuth2LoginProvider;
11881
12259
  /**
11882
12260
  * +label=Access Control
@@ -12323,7 +12701,7 @@ export interface DatabricksProviderAccount {
12323
12701
  }
12324
12702
  /**
12325
12703
  * +label=Databricks Service Principal Auth
12326
- * +usage=You can authenticate using Databricks service principal. To generate OAuth secret and Client ID, go to Databricks workspace -> Workspace Settings -> Identity and Access -> Service Principals -> Secrets.
12704
+ * +usage=You can authenticate using Databricks service principal. To generate OAuth secret and Client ID, go to Databricks workspace -> Workspace Settings -> Identity and Access -> Service Principals -> Secrets. When generating the secret, select the scopes model-serving and ai-gateway.
12327
12705
  */
12328
12706
  export interface DatabricksServicePrincipalAuth {
12329
12707
  /**
@@ -14644,7 +15022,6 @@ export interface LoadBalancingWhen {
14644
15022
  }
14645
15023
  /**
14646
15024
  * +label=Guardrails Configuration
14647
- * Named single-rule manifest (same grain as gateway-logging-config).
14648
15025
  */
14649
15026
  export interface GuardrailsConfig {
14650
15027
  /**
@@ -14705,8 +15082,8 @@ export interface GuardrailsConfig {
14705
15082
  custom_error_message?: string;
14706
15083
  }
14707
15084
  /**
14708
- * Runtime rule shape used for matching. Named GuardrailsConfig maps to this via name → id.
14709
- * Also the element type of the legacy folded NATS document `{ type, rules: [...] }`.
15085
+ * Folded / legacy rule shape published under the single NATS key for older gateways.
15086
+ * API manifests use GuardrailsConfig (named) instead.
14710
15087
  */
14711
15088
  export interface GuardrailsRule {
14712
15089
  id: string;
@@ -14717,11 +15094,6 @@ export interface GuardrailsRule {
14717
15094
  mcp_tool_post_invoke_guardrails: string[];
14718
15095
  custom_error_message?: string;
14719
15096
  }
14720
- /** Legacy folded NATS projection published alongside named configs for older gateways. */
14721
- export interface FoldedGuardrailsConfig {
14722
- type: 'gateway-guardrails-config';
14723
- rules: GuardrailsRule[];
14724
- }
14725
15097
  export interface GuardrailsWhen {
14726
15098
  target?: TargetConditionGroup;
14727
15099
  subjects?: SubjectConditionGroup;
@@ -17273,78 +17645,6 @@ export interface OPABearerAuth {
17273
17645
  */
17274
17646
  bearer_token: string;
17275
17647
  }
17276
- /**
17277
- * +label=Cato Networks
17278
- * +icon=https://assets.production.truefoundry.com/cato.png
17279
- */
17280
- export interface CatoNetworksGuardrailConfig {
17281
- /**
17282
- * +label=Name
17283
- * +sort=50
17284
- * +usage=The name of the Guardrail Config.
17285
- * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
17286
- * +uiProps={"disableEdit":true}
17287
- */
17288
- name: string;
17289
- /**
17290
- * +label=Description
17291
- * +sort=75
17292
- * +usage=Optional description for this Guardrail Config.
17293
- */
17294
- description?: string;
17295
- /**
17296
- * +uiType=Hidden
17297
- * +value=integration/guardrail-config/cato-networks
17298
- */
17299
- type: 'integration/guardrail-config/cato-networks';
17300
- auth_data: CatoNetworksApiKeyAuth;
17301
- /**
17302
- * +label=Operation
17303
- * +usage=Validate treats a Cato block or anonymize action as a violation and leaves the payload unchanged. Mutate also replaces the messages with Cato's anonymized versions and continues.
17304
- * Validate guardrails are run in parallel while mutate guardrails are run sequentially.
17305
- * +uiType=MultiSelectPills
17306
- * +uiProps={"hideRadioIcon": true}
17307
- * +sort=100
17308
- */
17309
- operation: 'mutate' | 'validate';
17310
- /**
17311
- * +label=Priority
17312
- * +usage=Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.
17313
- * +sort=150
17314
- */
17315
- priority?: number;
17316
- enforcing_strategy: EnforcingStrategy;
17317
- /**
17318
- * +uiType=Ignore
17319
- * +uiProps={"forwardJsonKey": true}
17320
- */
17321
- config: {
17322
- /**
17323
- * +label=Base URL
17324
- * +usage=Cato API base URL. Use the regional Cato endpoint or the URL of a Cato Outpost in your environment. Trailing slashes are ignored.
17325
- * +sort=50
17326
- * +message=Base URL must be an http or https URL
17327
- */
17328
- base_url: string;
17329
- };
17330
- }
17331
- /**
17332
- * +label=Cato Networks API Key Auth
17333
- */
17334
- export interface CatoNetworksApiKeyAuth {
17335
- /**
17336
- * +value=api-key
17337
- */
17338
- type: 'api-key';
17339
- /**
17340
- * +sort=100
17341
- * +usage=API key issued by Cato for this AI Security guard. Sent as a Bearer token. The key secret is never forwarded to Cato as the gateway key alias.
17342
- * +message=API key must not be empty
17343
- * +uiType=SecretSelect
17344
- * +uiProps={"isPassword": true, "enableNew": true}
17345
- */
17346
- api_key: string;
17347
- }
17348
17648
  /**
17349
17649
  * +label=Noma Security
17350
17650
  * +icon=https://assets.production.truefoundry.com/noma.ico
@@ -17833,7 +18133,7 @@ export interface IdentityProviderManifest {
17833
18133
  * +usage=Controls how JWT token claims are mapped to a TrueFoundry identity. Tokens can be resolved to a Virtual Account (recommended for machine users or shared external identities) or directly to a TrueFoundry User. If both options are configured, Virtual Account resolution takes precedence.
17834
18134
  * +sort=10040
17835
18135
  */
17836
- resolve_token_to: {
18136
+ resolve_token_to?: {
17837
18137
  virtual_account?: ResolveToVirtualAccount;
17838
18138
  user?: ResolveToUser;
17839
18139
  agent?: ResolveToAgent;
@@ -17901,6 +18201,13 @@ export interface JWTBasedValidationConfig {
17901
18201
  * +placeholder=https://accounts.example.com/.well-known/jwks.json
17902
18202
  */
17903
18203
  jwks_uri: string;
18204
+ /**
18205
+ * +label=Token TTL (seconds)
18206
+ * +usage=Lifetime of tokens TrueFoundry issues after exchanging a token from this provider. Allowed range is 60 to 3600 seconds.
18207
+ * +sort=3000
18208
+ * +message=Must be between 60 and 3600 seconds.
18209
+ */
18210
+ token_ttl_seconds?: number;
17904
18211
  }
17905
18212
  /**
17906
18213
  * +label=Virtual Account
@@ -18011,6 +18318,86 @@ export interface OktaCrossAppAccessSettings {
18011
18318
  [k: string]: string;
18012
18319
  };
18013
18320
  }
18321
+ /**
18322
+ * +label=Snowflake
18323
+ * +icon=snowflake-cortex
18324
+ * +heroDataKey=account_identifier
18325
+ */
18326
+ export interface SnowflakeProviderAccount {
18327
+ /**
18328
+ * +value=provider-account/snowflake
18329
+ */
18330
+ type: 'provider-account/snowflake';
18331
+ /**
18332
+ * +label=Name
18333
+ * +sort=100
18334
+ * +usage=The name of the Snowflake provider account
18335
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
18336
+ * +uiProps={"disableEdit":true}
18337
+ */
18338
+ name: string;
18339
+ /**
18340
+ * +label=Snowflake Account Identifier
18341
+ * +sort=200
18342
+ * +message=Snowflake account identifier must not be empty
18343
+ * +usage=Snowflake account identifier, as in https://<account_identifier>.snowflakecomputing.com. Insert the identifier only, without the URL.
18344
+ */
18345
+ account_identifier: string;
18346
+ auth_data: SnowflakePatTokenAuth;
18347
+ /**
18348
+ * +label=Integrations
18349
+ * +sort=400
18350
+ * +usage=List of integrations that are associated with the Snowflake provider account
18351
+ * +uiType=IntegrationsGroup
18352
+ */
18353
+ integrations: SnowflakeIntegrations[];
18354
+ ownedBy?: OwnedBy;
18355
+ }
18356
+ /**
18357
+ * +label=PAT
18358
+ */
18359
+ export interface SnowflakePatTokenAuth {
18360
+ /**
18361
+ * +value=pat-token
18362
+ */
18363
+ type: 'pat-token';
18364
+ /**
18365
+ * +label=PAT Token
18366
+ * +sort=100
18367
+ * +usage=Snowflake programmatic access token. The account's network policy must allow the TrueFoundry control plane and gateway egress IPs.
18368
+ * +message=PAT token must not be empty
18369
+ * +uiType=SecretSelect
18370
+ * +uiProps={"isPassword": true, "enableNew": true}
18371
+ */
18372
+ pat_token: string;
18373
+ }
18374
+ /**
18375
+ * +label=Snowflake Cortex Agents
18376
+ * +icon=snowflake-cortex
18377
+ * +usage=Import agents from Snowflake Cortex into the TrueFoundry agent registry.
18378
+ */
18379
+ export interface SnowflakeIntegrations {
18380
+ /**
18381
+ * +value=integration/agent-registry/snowflake/cortex-agent
18382
+ */
18383
+ type: 'integration/agent-registry/snowflake/cortex-agent';
18384
+ /**
18385
+ * +label=Display Name
18386
+ * +usage=The name of the integration that will be displayed in the TrueFoundry UI.
18387
+ * +sort=100
18388
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
18389
+ */
18390
+ name: string;
18391
+ auth_data?: SnowflakePatTokenAuth;
18392
+ syncSchedule?: CronSyncSchedule;
18393
+ /**
18394
+ * +label=Access Control
18395
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
18396
+ * +sort=600
18397
+ * +uiType=AuthorizedSubjects
18398
+ */
18399
+ authorized_subjects?: string[];
18400
+ }
18014
18401
  /**
18015
18402
  * +label=Jfrog
18016
18403
  * +icon=jfrog
@@ -19570,7 +19957,7 @@ export interface TypeSafeIntegrations {
19570
19957
  /**
19571
19958
  * +label=Model ID
19572
19959
  * +sort=2
19573
- * +usage=The TypeSafe model identifier (e.g., jev-1.13.0, jev-latest). Pin a versioned id so confidence thresholds stay stable across releases.
19960
+ * +usage=The TypeSafe model identifier (e.g., jev-1.13.0, jev-latest). Pin a versioned id so confidence thresholds stay stable across releases. On a Cloudflare Workers AI base URL, use the Workers AI model name instead (e.g., typesafe/jev, @cf/cloudflare/clef, @cf/cloudflare/clef-flash).
19574
19961
  * +message=Model ID must not be empty
19575
19962
  * +uiProps={"descriptionInline":true}
19576
19963
  */
@@ -19582,7 +19969,7 @@ export interface TypeSafeIntegrations {
19582
19969
  * +uiProps={"disableAllOption": true}
19583
19970
  */
19584
19971
  model_types: ModelType[];
19585
- cost?: PerThousandTokensCostMetric;
19972
+ cost?: ModelCostMetric;
19586
19973
  /**
19587
19974
  * +label=Access Control
19588
19975
  * +sort=5
@@ -19750,7 +20137,7 @@ export interface Workflow {
19750
20137
  * +label=Alert
19751
20138
  */
19752
20139
  export interface WorkflowAlert {
19753
- notification_target?: NotificationTarget;
20140
+ notification_target?: NotificationTargetForAlertRule;
19754
20141
  /**
19755
20142
  * +label=On Completion
19756
20143
  * +usage=Send an alert when the job completes
@@ -21672,6 +22059,7 @@ export interface MicrosoftFoundryProviderAccount {
21672
22059
  * +sort=300
21673
22060
  * +usage=The classic Azure OpenAI endpoint, e.g. https://{resource-name}.openai.azure.com (the /openai or /openai/v1 suffix is optional and stripped automatically).
21674
22061
  * +message=Endpoint URL must not be empty
22062
+ * +uiProps={"descriptionInline":true}
21675
22063
  */
21676
22064
  openai_endpoint: string;
21677
22065
  /**
@@ -21679,6 +22067,7 @@ export interface MicrosoftFoundryProviderAccount {
21679
22067
  * +sort=310
21680
22068
  * +usage=The Microsoft Foundry project endpoint, e.g. https://{resource-name}.services.ai.azure.com/api/projects/{project-name}.
21681
22069
  * +message=Endpoint URL must not be empty
22070
+ * +uiProps={"descriptionInline":true}
21682
22071
  */
21683
22072
  project_endpoint: string;
21684
22073
  /**
@@ -22520,7 +22909,7 @@ export interface TypeSafeProviderAccount {
22520
22909
  /**
22521
22910
  * +label=Base URL
22522
22911
  * +sort=250
22523
- * +usage=Optional custom base URL for the TypeSafe API (defaults to https://api.typesafe.ai)
22912
+ * +usage=Optional custom base URL for the TypeSafe API (defaults to https://api.typesafe.ai). Point this at a Cloudflare account (https://api.cloudflare.com/client/v4/accounts/<account_id>) to serve System One models through Cloudflare Workers AI instead.
22524
22913
  * +message=Base URL must not be empty
22525
22914
  */
22526
22915
  base_url?: string;
@@ -23212,9 +23601,9 @@ export interface SecuritySettings {
23212
23601
  enabled: boolean;
23213
23602
  /**
23214
23603
  * +label=Maximum Expiry Time for Personal Access Token (PAT) in days
23215
- * +usage=Personal Access Tokens cannot be created with an expiry longer than this. Maximum allowed is 365 days.
23604
+ * +usage=Personal Access Tokens cannot be created with an expiry longer than this. Maximum allowed is 7000 days.
23216
23605
  * +sort=2
23217
- * +message=Maximum expiry time must be between 1 and 365 days
23606
+ * +message=Maximum expiry time must be between 1 and 7000 days
23218
23607
  */
23219
23608
  max_pat_expiry_minutes: number;
23220
23609
  /**
@@ -23226,16 +23615,31 @@ export interface SecuritySettings {
23226
23615
  */
23227
23616
  max_pats_per_user?: number;
23228
23617
  /**
23229
- * +label=Mandate Team Selection in Personal Access Token (PAT)
23230
- * +usage=Require a team owner to be selected while creating a Personal Access Token.
23618
+ * +label=Personal Access Token (PAT) Team Assignment Mode
23619
+ * +usage=Controls whether assigning a team owner while creating a Personal Access Token is required, optional, or disabled.
23231
23620
  * +sort=4
23621
+ * +uiType=RadioCard
23622
+ * +uiProps={"descriptionInline":true}
23623
+ */
23624
+ pat_team_assignment_mode?: 'optional' | 'required' | 'disabled';
23625
+ /**
23626
+ * +label=Enable PAT Retrieval After Creation
23627
+ * +usage=Allow users to retrieve the value of their own Personal Access Tokens via API after creation.
23628
+ * +sort=5
23629
+ * +uiProps={"descriptionInline":true}
23630
+ */
23631
+ enable_pat_retrieval_after_creation?: boolean;
23632
+ /**
23633
+ * +label=Enable Viewing Secret
23634
+ * +usage=Allow users with permission to view plaintext secret values in the UI and API. When disabled, secret values are never returned.
23635
+ * +sort=6
23232
23636
  * +uiProps={"descriptionInline":true}
23233
23637
  */
23234
- mandate_team_selection_in_pat?: boolean;
23638
+ enable_viewing_secrets?: boolean;
23235
23639
  /**
23236
23640
  * +label=Send security updates to
23237
23641
  * +usage=Email addresses to receive security-related notifications.
23238
- * +sort=5
23642
+ * +sort=7
23239
23643
  * +message=Must be a valid email address
23240
23644
  */
23241
23645
  to_emails?: string[];
@@ -23603,47 +24007,6 @@ export interface JfrogArtifactsRegistry {
23603
24007
  */
23604
24008
  authorized_subjects?: string[];
23605
24009
  }
23606
- /**
23607
- * +label=TrueFoundry Models Model
23608
- * +icon=truefoundry
23609
- */
23610
- export interface TrueFoundryModelsModel {
23611
- /**
23612
- * +value=integration/model/truefoundry-models
23613
- */
23614
- type: 'integration/model/truefoundry-models';
23615
- /**
23616
- * +label=Display Name
23617
- * +sort=1
23618
- * +usage=A descriptive name to identify this model integration in the UI
23619
- * +message=2 to 64 characters long alphanumeric word, may contain - , . or _ in between, cannot start with a number
23620
- */
23621
- name: string;
23622
- /**
23623
- * +label=Model ID
23624
- * +sort=2
23625
- * +usage=The full model name including the virtual model group prefix (e.g., tfy-managed/grok-4.7).
23626
- * +message=Model ID must not be empty
23627
- * +uiProps={"descriptionInline":true}
23628
- */
23629
- model_id: string;
23630
- /**
23631
- * +label=Model Types
23632
- * +sort=3
23633
- * +usage=Specify the type of the TrueFoundry Models model
23634
- * +uiType=Select
23635
- * +uiProps={"disableAllOption": true}
23636
- */
23637
- model_types: ModelType[];
23638
- cost?: ModelCostMetric;
23639
- /**
23640
- * +label=Access Control
23641
- * +sort=5
23642
- * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
23643
- * +uiType=Hidden
23644
- */
23645
- authorized_subjects?: string[];
23646
- }
23647
24010
  /**
23648
24011
  * +label=MCP Tool Approval Policy
23649
24012
  */
@@ -24000,6 +24363,13 @@ export interface RemoteAgentV2 {
24000
24363
  * +message=2 to 64 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
24001
24364
  */
24002
24365
  name: string;
24366
+ /**
24367
+ * +label=Display Name
24368
+ * +usage=A human-readable label for the Agent in the UI. If omitted, the agent name is shown.
24369
+ * +message=1 to 128 characters long
24370
+ * +sort=105
24371
+ */
24372
+ display_name?: string;
24003
24373
  /**
24004
24374
  * +label=Description
24005
24375
  * +usage=A short note on what this agent does — shown in the registry list and audit trail.
@@ -24007,6 +24377,14 @@ export interface RemoteAgentV2 {
24007
24377
  * +uiType=TextArea
24008
24378
  */
24009
24379
  description: string;
24380
+ source?: RemoteAgentSource;
24381
+ /**
24382
+ * +label=State
24383
+ * +usage=Lifecycle state of the agent. Active: managed and available for use. Unmanaged: imported from an external registry for governance (not fully managed yet). Inactive: disabled and cannot be used or invoked.
24384
+ * +sort=116
24385
+ * +uiType=Select
24386
+ */
24387
+ state?: 'active' | 'unmanaged' | 'inactive';
24010
24388
  identity: RemoteAgentV2AgentIdentity;
24011
24389
  proxy_via_gateway: RemoteAgentProxyViaGatewayConfig;
24012
24390
  /**
@@ -24065,6 +24443,33 @@ export interface SambaNovaModel {
24065
24443
  */
24066
24444
  authorized_subjects?: string[];
24067
24445
  }
24446
+ /**
24447
+ * +label=Snowflake Cortex Agents
24448
+ * +icon=snowflake-cortex
24449
+ * +usage=Import agents from Snowflake Cortex into the TrueFoundry agent registry.
24450
+ */
24451
+ export interface SnowflakeCortexAgentRegistry {
24452
+ /**
24453
+ * +value=integration/agent-registry/snowflake/cortex-agent
24454
+ */
24455
+ type: 'integration/agent-registry/snowflake/cortex-agent';
24456
+ /**
24457
+ * +label=Display Name
24458
+ * +usage=The name of the integration that will be displayed in the TrueFoundry UI.
24459
+ * +sort=100
24460
+ * +message=3 to 36 lower case characters long alphanumeric word, may contain - in between, cannot start with a number
24461
+ */
24462
+ name: string;
24463
+ auth_data?: SnowflakePatTokenAuth;
24464
+ syncSchedule?: CronSyncSchedule;
24465
+ /**
24466
+ * +label=Access Control
24467
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
24468
+ * +sort=600
24469
+ * +uiType=AuthorizedSubjects
24470
+ */
24471
+ authorized_subjects?: string[];
24472
+ }
24068
24473
  export interface SnowflakeCortexModel {
24069
24474
  /**
24070
24475
  * +value=integration/model/snowflake-cortex
@@ -24229,14 +24634,14 @@ export interface TrueFoundryDBSSM {
24229
24634
  authorized_subjects?: string[];
24230
24635
  }
24231
24636
  /**
24232
- * +label=Wafer Model
24233
- * +icon=https://assets.production.truefoundry.com/wafer.svg
24637
+ * +label=TrueFoundry Models Model
24638
+ * +icon=truefoundry
24234
24639
  */
24235
- export interface WaferModel {
24640
+ export interface TrueFoundryModelsModel {
24236
24641
  /**
24237
- * +value=integration/model/wafer
24642
+ * +value=integration/model/truefoundry-models
24238
24643
  */
24239
- type: 'integration/model/wafer';
24644
+ type: 'integration/model/truefoundry-models';
24240
24645
  /**
24241
24646
  * +label=Display Name
24242
24647
  * +sort=1
@@ -24247,7 +24652,7 @@ export interface WaferModel {
24247
24652
  /**
24248
24653
  * +label=Model ID
24249
24654
  * +sort=2
24250
- * +usage=The Wafer model identifier (e.g., deepseek-v4-pro, deepseek-v4-flash). See https://docs.wafer.ai/serverless for the public catalog.
24655
+ * +usage=The full model name including the virtual model group prefix (e.g., tfy-managed/grok-4.7).
24251
24656
  * +message=Model ID must not be empty
24252
24657
  * +uiProps={"descriptionInline":true}
24253
24658
  */
@@ -24255,7 +24660,8 @@ export interface WaferModel {
24255
24660
  /**
24256
24661
  * +label=Model Types
24257
24662
  * +sort=3
24258
- * +usage=Specify the type of the Wafer model
24663
+ * +usage=Specify the type of the TrueFoundry Models model
24664
+ * +uiType=Select
24259
24665
  * +uiProps={"disableAllOption": true}
24260
24666
  */
24261
24667
  model_types: ModelType[];
@@ -24287,7 +24693,7 @@ export interface TypeSafeModel {
24287
24693
  /**
24288
24694
  * +label=Model ID
24289
24695
  * +sort=2
24290
- * +usage=The TypeSafe model identifier (e.g., jev-1.13.0, jev-latest). Pin a versioned id so confidence thresholds stay stable across releases.
24696
+ * +usage=The TypeSafe model identifier (e.g., jev-1.13.0, jev-latest). Pin a versioned id so confidence thresholds stay stable across releases. On a Cloudflare Workers AI base URL, use the Workers AI model name instead (e.g., typesafe/jev, @cf/cloudflare/clef, @cf/cloudflare/clef-flash).
24291
24697
  * +message=Model ID must not be empty
24292
24698
  * +uiProps={"descriptionInline":true}
24293
24699
  */
@@ -24299,7 +24705,47 @@ export interface TypeSafeModel {
24299
24705
  * +uiProps={"disableAllOption": true}
24300
24706
  */
24301
24707
  model_types: ModelType[];
24302
- cost?: PerThousandTokensCostMetric;
24708
+ cost?: ModelCostMetric;
24709
+ /**
24710
+ * +label=Access Control
24711
+ * +sort=5
24712
+ * +usage=List of subjects that are authorized to access this integration. List of user fqn in format <user_type>:<username>.
24713
+ * +uiType=Hidden
24714
+ */
24715
+ authorized_subjects?: string[];
24716
+ }
24717
+ /**
24718
+ * +label=Wafer Model
24719
+ * +icon=https://assets.production.truefoundry.com/wafer.svg
24720
+ */
24721
+ export interface WaferModel {
24722
+ /**
24723
+ * +value=integration/model/wafer
24724
+ */
24725
+ type: 'integration/model/wafer';
24726
+ /**
24727
+ * +label=Display Name
24728
+ * +sort=1
24729
+ * +usage=A descriptive name to identify this model integration in the UI
24730
+ * +message=2 to 64 characters long alphanumeric word, may contain - , . or _ in between, cannot start with a number
24731
+ */
24732
+ name: string;
24733
+ /**
24734
+ * +label=Model ID
24735
+ * +sort=2
24736
+ * +usage=The Wafer model identifier (e.g., deepseek-v4-pro, deepseek-v4-flash). See https://docs.wafer.ai/serverless for the public catalog.
24737
+ * +message=Model ID must not be empty
24738
+ * +uiProps={"descriptionInline":true}
24739
+ */
24740
+ model_id: string;
24741
+ /**
24742
+ * +label=Model Types
24743
+ * +sort=3
24744
+ * +usage=Specify the type of the Wafer model
24745
+ * +uiProps={"disableAllOption": true}
24746
+ */
24747
+ model_types: ModelType[];
24748
+ cost?: ModelCostMetric;
24303
24749
  /**
24304
24750
  * +label=Access Control
24305
24751
  * +sort=5