@opengeni/core 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ import { type Settings } from "@opengeni/config";
2
+ import type { EntitlementsPort } from "@opengeni/contracts";
3
+ import { type Database } from "@opengeni/db";
4
+ export type AgentRunAdmissionDenial = "insufficient_credits" | "allowance_exhausted" | "monthly_model_cost_limit" | "monthly_agent_run_limit";
5
+ /** Read-only admission shared by service-authored runs and goal Resume. */
6
+ export declare function agentRunAdmissionDenial(services: {
7
+ db: Database;
8
+ settings: Settings;
9
+ entitlements?: EntitlementsPort | null;
10
+ }, input: {
11
+ accountId: string;
12
+ workspaceId: string;
13
+ model: string;
14
+ requestedAgentRuns: number;
15
+ /** The accepted work's causal human, not the scheduler/service caller. */
16
+ initiatingHumanSubjectId?: string | null;
17
+ }): Promise<AgentRunAdmissionDenial | null>;
@@ -1,5 +1,5 @@
1
1
  import type { Settings } from "@opengeni/config";
2
- import type { ConnectionCredentialsPort, Document, DocumentAuthorityKind, GitHubAppApiPort, ScheduledTask, ScheduledTaskTriggerType, SessionAuthorizationPort, TurnInitiator } from "@opengeni/contracts";
2
+ import type { ConnectionCredentialsPort, Document, DocumentAuthorityKind, EntitlementsPort, GitHubAppApiPort, ScheduledTask, ScheduledTaskTriggerType, SessionAuthorizationPort, TurnInitiator } from "@opengeni/contracts";
3
3
  import type { Database, SessionWorkflowWakeDeliveryResult } from "@opengeni/db";
4
4
  import type { DocumentServices } from "@opengeni/documents";
5
5
  import type { EventBus } from "@opengeni/events";
@@ -134,6 +134,8 @@ export type AppDependencies = {
134
134
  */
135
135
  catalogSourceSettings?: Settings;
136
136
  db: Database;
137
+ /** Read-only host funding admission; unset uses the standalone billing ledger. */
138
+ entitlements?: EntitlementsPort | null;
137
139
  /**
138
140
  * Host-composed editable artifact engine. Standalone startup binds the same
139
141
  * native kernel/DB/object-store implementation; embedded hosts may inject an
@@ -1,18 +1,18 @@
1
1
  import { type Database, type KnowledgeContext } from "@opengeni/db";
2
2
  /** Retain actual message bytes, never a model-authored reconstruction of a confirmation. */
3
3
  export declare function retainKnowledgeMessage(db: Database, context: KnowledgeContext, messageId?: string): Promise<{
4
+ revisionId?: never;
4
5
  retained: boolean;
5
6
  reason: string;
6
7
  entryId?: never;
7
- revisionId?: never;
8
8
  outcome?: never;
9
9
  messageId?: never;
10
10
  reused?: never;
11
11
  } | {
12
+ revisionId?: never;
12
13
  retained: boolean;
13
14
  reason: string;
14
15
  entryId: string;
15
- revisionId?: never;
16
16
  outcome?: never;
17
17
  messageId?: never;
18
18
  reused?: never;
@@ -0,0 +1,480 @@
1
+ import { type Settings } from "@opengeni/config";
2
+ import { type GoalAdmissionPausedReason, type Session } from "@opengeni/contracts";
3
+ import { getWorkspaceModelPolicy, type Database } from "@opengeni/db";
4
+ import { agentRunAdmissionDenial } from "./billing/agent-run-admission.js";
5
+ export type GoalAdmissionBlock = {
6
+ pausedReason: GoalAdmissionPausedReason;
7
+ message: string;
8
+ };
9
+ /** Catalog membership never grants access to a connection or changes the selected model. */
10
+ export declare function goalContinuationModelDecision(input: {
11
+ settings: Settings;
12
+ workspaceModelPolicy: Awaited<ReturnType<typeof getWorkspaceModelPolicy>>;
13
+ inheritedModel: string;
14
+ codexCompactionMode?: Session["codexCompactionMode"];
15
+ latencyMode?: Session["latencyMode"];
16
+ }): {
17
+ model: string;
18
+ blocked: string | null;
19
+ pausedReason?: GoalAdmissionPausedReason;
20
+ };
21
+ /** The same scoped, secret-free catalog used at ordinary turn admission. */
22
+ export declare function resolveGoalModelAdmission(db: Database, settings: Settings, input: {
23
+ accountId: string;
24
+ workspaceId: string;
25
+ model: string;
26
+ codexCompactionMode?: Session["codexCompactionMode"];
27
+ latencyMode?: Session["latencyMode"];
28
+ }): Promise<{
29
+ model: string;
30
+ blocked: string | null;
31
+ pausedReason?: GoalAdmissionPausedReason;
32
+ settings: {
33
+ serviceName: string;
34
+ environment: string;
35
+ deploymentRevision: string;
36
+ serverVersion?: string | undefined;
37
+ databaseUrl: string;
38
+ apiDatabasePoolMax: number;
39
+ dbSchema: string;
40
+ rlsStrategy: "force" | "scoped";
41
+ runtimeDatabaseRole: string;
42
+ natsUrl: string;
43
+ temporalHost: string;
44
+ temporalNamespace: string;
45
+ temporalTaskQueue: string;
46
+ temporalTlsEnabled: boolean;
47
+ temporalApiKey?: string | undefined;
48
+ temporalTlsServerName?: string | undefined;
49
+ temporalTlsRootCaCertificateBase64?: string | undefined;
50
+ temporalTlsClientCertificateBase64?: string | undefined;
51
+ temporalTlsClientPrivateKeyBase64?: string | undefined;
52
+ startupDependencyRetryAttempts: number;
53
+ startupDependencyRetryInitialDelayMs: number;
54
+ startupDependencyRetryMaxDelayMs: number;
55
+ turnWorkerConcurrencyMode: "fixed" | "resource-based";
56
+ turnWorkerMaxConcurrentTurns: number;
57
+ turnWorkerTargetCpuUsage: number;
58
+ turnWorkerTargetMemoryUsage: number;
59
+ turnWorkerEmergencyMemoryUsage: number;
60
+ turnWorkerMemoryGuardIntervalMs: number;
61
+ turnWorkerMemoryGuardSustainMs: number;
62
+ observabilityStructuredLogs: boolean;
63
+ observabilityMetricsEnabled: boolean;
64
+ observabilityOtlpEndpoint?: string | undefined;
65
+ observabilityOtlpHeaders: string;
66
+ observabilityDiagnosticsEndpoint?: string | undefined;
67
+ observabilityDiagnosticsHeaders: string;
68
+ analyticsEnabled: boolean;
69
+ analyticsConsentRequired: boolean;
70
+ analyticsReoClientId?: string | undefined;
71
+ analyticsPosthogProjectKey?: string | undefined;
72
+ analyticsPosthogHost?: string | undefined;
73
+ analyticsGa4MeasurementId?: string | undefined;
74
+ legalPrivacyPolicyUrl?: string | undefined;
75
+ legalTermsOfServiceUrl?: string | undefined;
76
+ supportEmail?: string | undefined;
77
+ publicBaseUrl?: string | undefined;
78
+ documentationUrl: string | null;
79
+ mcpOauthEnabled: boolean;
80
+ apiTrustedProxyHops: number;
81
+ apiTrustedProxyCidrs: string;
82
+ webBaseUrl?: string | undefined;
83
+ agentReleasesBaseUrl: string;
84
+ agentStableVersion: string;
85
+ agentBetaVersion?: string | undefined;
86
+ productAccessMode: "configured" | "local" | "managed";
87
+ billingMode: "disabled" | "stripe";
88
+ verifiedSignupTrialCreditsEnabled: boolean;
89
+ entitlementsMode: "managed" | "none" | "static";
90
+ usageLimitsMode: "managed" | "none" | "static";
91
+ usageAllowancesEnabled: boolean;
92
+ staticEntitlementsJson: string;
93
+ staticUsageLimitsJson: string;
94
+ delegationSecret?: string | undefined;
95
+ defaultFirstPartyMcpTools?: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "artifacts_publish" | "artifacts_restore" | "artifacts_rollback" | "atlassian_get" | "atlassian_search" | "atlassian_sources_list" | "browser_act" | "browser_auth" | "browser_clipboard" | "browser_debug" | "browser_download_save" | "browser_downloads" | "browser_identity" | "browser_lifecycle" | "browser_observe" | "browser_open" | "browser_publish" | "browser_read" | "browser_screenshot" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_enroll_token" | "connected_machine_remove" | "custom_mcp_setup_request" | "editable_artifact_apply" | "editable_artifact_create" | "editable_artifact_export" | "editable_artifact_export_status" | "editable_artifact_get" | "editable_artifact_import" | "editable_artifact_inspect" | "editable_artifact_list" | "environment_list" | "environment_set_variable" | "fiken_bank_accounts_list" | "fiken_companies_list" | "fiken_contact_create" | "fiken_contacts_list" | "fiken_invoice_draft_create" | "fiken_invoice_get" | "fiken_invoices_list" | "fiken_products_list" | "fiken_purchases_list" | "fiken_sales_list" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_progress" | "goal_resume" | "goal_set" | "goal_update" | "instruction_policy_get" | "instruction_policy_propose" | "instruction_policy_save" | "interaction_discover" | "interaction_request_human" | "knowledge_archive" | "knowledge_browse" | "knowledge_correct" | "knowledge_get" | "knowledge_prepare_save" | "knowledge_propose" | "knowledge_retain_file" | "knowledge_retain_message" | "knowledge_save" | "knowledge_search" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "reddit_accounts_list" | "reddit_mentions_live" | "reddit_post_reply" | "reddit_posts_sync" | "reddit_search_live" | "reddit_thread_fetch" | "remember" | "remember_confirm" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_file_publish" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_human_input_respond" | "session_pause" | "session_resume" | "session_send_message" | "session_set_model" | "session_set_project" | "session_steer" | "session_wait" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_prepare_message" | "slack_bot_search" | "slack_bot_send_prepared_message" | "slack_bot_thread_replies" | "slack_bot_upload_file" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "task_note_archive" | "task_note_promote_instruction_policy" | "task_note_promote_knowledge" | "task_note_promote_preference" | "task_note_replace" | "task_note_save" | "task_notes_list" | "variable_set_get_variable" | "variable_set_list" | "variable_set_set_variable" | "wait_for_input" | "work_claim_release" | "work_claim_upsert" | "x_accounts_list" | "x_mentions_live" | "x_post_reply" | "x_posts_sync" | "x_search_live" | "x_thread_fetch")[] | undefined;
96
+ allowedFirstPartyMcpTools?: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "artifacts_publish" | "artifacts_restore" | "artifacts_rollback" | "atlassian_get" | "atlassian_search" | "atlassian_sources_list" | "browser_act" | "browser_auth" | "browser_clipboard" | "browser_debug" | "browser_download_save" | "browser_downloads" | "browser_identity" | "browser_lifecycle" | "browser_observe" | "browser_open" | "browser_publish" | "browser_read" | "browser_screenshot" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_enroll_token" | "connected_machine_remove" | "custom_mcp_setup_request" | "editable_artifact_apply" | "editable_artifact_create" | "editable_artifact_export" | "editable_artifact_export_status" | "editable_artifact_get" | "editable_artifact_import" | "editable_artifact_inspect" | "editable_artifact_list" | "environment_list" | "environment_set_variable" | "fiken_bank_accounts_list" | "fiken_companies_list" | "fiken_contact_create" | "fiken_contacts_list" | "fiken_invoice_draft_create" | "fiken_invoice_get" | "fiken_invoices_list" | "fiken_products_list" | "fiken_purchases_list" | "fiken_sales_list" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_progress" | "goal_resume" | "goal_set" | "goal_update" | "instruction_policy_get" | "instruction_policy_propose" | "instruction_policy_save" | "interaction_discover" | "interaction_request_human" | "knowledge_archive" | "knowledge_browse" | "knowledge_correct" | "knowledge_get" | "knowledge_prepare_save" | "knowledge_propose" | "knowledge_retain_file" | "knowledge_retain_message" | "knowledge_save" | "knowledge_search" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "reddit_accounts_list" | "reddit_mentions_live" | "reddit_post_reply" | "reddit_posts_sync" | "reddit_search_live" | "reddit_thread_fetch" | "remember" | "remember_confirm" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_file_publish" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_human_input_respond" | "session_pause" | "session_resume" | "session_send_message" | "session_set_model" | "session_set_project" | "session_steer" | "session_wait" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_prepare_message" | "slack_bot_search" | "slack_bot_send_prepared_message" | "slack_bot_thread_replies" | "slack_bot_upload_file" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "task_note_archive" | "task_note_promote_instruction_policy" | "task_note_promote_knowledge" | "task_note_promote_preference" | "task_note_replace" | "task_note_save" | "task_notes_list" | "variable_set_get_variable" | "variable_set_list" | "variable_set_set_variable" | "wait_for_input" | "work_claim_release" | "work_claim_upsert" | "x_accounts_list" | "x_mentions_live" | "x_post_reply" | "x_posts_sync" | "x_search_live" | "x_thread_fetch")[] | undefined;
97
+ streamTokenSecret?: string | undefined;
98
+ streamControlEnabled: boolean;
99
+ workDiscoveryEnabled: boolean;
100
+ workClaimMutationsEnabled: boolean;
101
+ workDiscoveryHumanAdvisoriesEnabled: boolean;
102
+ workDiscoveryAutomaticNudgesEnabled: boolean;
103
+ ogtoolPackageSpec?: string | undefined;
104
+ environmentsEncryptionKey?: string | undefined;
105
+ integrationsEnabled: boolean;
106
+ integrationsStateSecret?: string | undefined;
107
+ integrationsOauthShortStateEnabled: boolean;
108
+ integrationsAllowPrivateNetworkTargets: boolean;
109
+ integrationsOauthClientsJson: string;
110
+ gmailWatchTopicName?: string | undefined;
111
+ slackClientId?: string | undefined;
112
+ slackClientSecret?: string | undefined;
113
+ slackSigningSecret?: string | undefined;
114
+ slackAccessMode: "full" | "limited";
115
+ slackBotDisplayName: "OpenGeni" | "OpenGeni Staging";
116
+ slackCommand: string;
117
+ googleDriveClientId?: string | undefined;
118
+ googleDriveClientSecret?: string | undefined;
119
+ googleDriveSyncMaxItems: number;
120
+ googleDriveSyncMaxBytes: number;
121
+ googleDriveSyncMaxFileBytes: number;
122
+ googleDriveSyncMaxProviderRequests: number;
123
+ googleDriveSyncMaxElapsedSeconds: number;
124
+ googleDriveSyncMaxFailureDetails: number;
125
+ googleDriveProviderRequestTimeoutMs: number;
126
+ googleDriveProviderRetryAttempts: number;
127
+ googleDriveProviderRetryInitialDelayMs: number;
128
+ googleDriveProviderRetryMaxDelayMs: number;
129
+ googleDriveProviderRetryBudgetMs: number;
130
+ fikenClientId?: string | undefined;
131
+ fikenClientSecret?: string | undefined;
132
+ googleDriveWorkspaceEventsEnabled?: boolean | undefined;
133
+ atlassianClientId?: string | undefined;
134
+ atlassianClientSecret?: string | undefined;
135
+ maxNestedAgentDepth?: number | undefined;
136
+ socialOauthClientsJson: string;
137
+ goalMaxAutoContinuations?: number | undefined;
138
+ goalIdleBackoffMs: readonly number[];
139
+ goalIdleBackoffMaxMs: number;
140
+ childLifecycleNoticesEnabled: boolean;
141
+ slackWorkspaceRoutingEnabled: boolean;
142
+ agentMaxModelCallsPerTurn: number;
143
+ contextWindowTokens: number;
144
+ contextEffectiveWindowTokens?: number | undefined;
145
+ contextCompactionThresholdRatio: number;
146
+ contextReservedOutputTokens: number;
147
+ contextAutoCompactThresholdTokens?: number | undefined;
148
+ modelToolOutputTruncationTokens: number;
149
+ authRequired: boolean;
150
+ accessKey?: string | undefined;
151
+ authAllowHealth: boolean;
152
+ authAllowMetrics: boolean;
153
+ apiHost: string;
154
+ apiPort: number;
155
+ apiMetricsPort?: number | undefined;
156
+ workerHttpPort: number;
157
+ opengeniMcpInternalUrl?: string | undefined;
158
+ opengeniMcpUrl?: string | undefined;
159
+ corsAllowOriginRegex: string;
160
+ localAllowedOrigins?: string | undefined;
161
+ openaiProvider: "azure" | "openai";
162
+ openaiApiKey?: string | undefined;
163
+ openaiBaseUrl?: string | undefined;
164
+ openaiModel: string;
165
+ openaiAllowedModels: string;
166
+ vercelAiGatewayApiKey?: string | undefined;
167
+ imageGenerationModel: string;
168
+ videoGenerationPollIntervalMs: number;
169
+ videoGenerationRecoveryDeadlineMs: number;
170
+ videoGenerationReferenceUrlTtlSeconds: number;
171
+ videoGenerationMaxConcurrentPerWorkspace: number;
172
+ videoGenerationWorkspaceQuotaBytes: number;
173
+ videoGenerationTempDirectory: string;
174
+ videoGenerationFfprobePath: string;
175
+ videoGenerationCredit480pMicrosPerSecond: number;
176
+ videoGenerationCredit720pMicrosPerSecond: number;
177
+ voiceInputMaxDurationSeconds: number;
178
+ voiceInputMaxSizeBytes: number;
179
+ voiceInputResumableEnabled: boolean;
180
+ voiceInputResumableMaxDurationSeconds: number;
181
+ voiceInputResumableMaxSizeBytes: number;
182
+ voiceInputResumableMaxChunkSizeBytes: number;
183
+ voiceInputResumableRetentionSeconds: number;
184
+ voiceInputFfmpegPath: string;
185
+ voiceInputProviderOrder: string;
186
+ voiceInputOpenaiEnabled: boolean;
187
+ voiceInputOpenaiApiKey?: string | undefined;
188
+ voiceInputOpenaiBaseUrl?: string | undefined;
189
+ voiceInputOpenaiModel: string;
190
+ voiceInputAzureEnabled: boolean;
191
+ voiceInputAzureEndpoint?: string | undefined;
192
+ voiceInputAzureDeployment?: string | undefined;
193
+ voiceInputAzureApiVersion?: string | undefined;
194
+ voiceInputAzureApiKey?: string | undefined;
195
+ voiceInputAzureAdToken?: string | undefined;
196
+ voiceInputCodexExperimentalEnabled: boolean;
197
+ modelPricingJson: string;
198
+ modelCatalogSource: "code" | "database";
199
+ modelCostPolicyJson: string;
200
+ modelNotesJson: string;
201
+ openrouterApiKey?: string | undefined;
202
+ resolvedGatewayModelsJson?: string | undefined;
203
+ resolvedOpenRouterModelsJson?: string | undefined;
204
+ resolvedCodexModelsJson?: string | undefined;
205
+ modelProvidersJson: string;
206
+ codexSubscriptionEnabled: boolean;
207
+ supergrokSubscriptionEnabled: boolean;
208
+ claudeSubscriptionEnabled: boolean;
209
+ supergrokResponseStreamIdleTimeoutMs: number;
210
+ codexConnectedAppsEnabled: boolean;
211
+ codexProductSku?: string | undefined;
212
+ codexToolSearchEnabled: boolean;
213
+ lazyToolSearchEnabled: boolean;
214
+ codexFleetPolicyShadowEnabled: boolean;
215
+ codexRotationNearExhaustionPct: number;
216
+ reasoningConfigurationUpdatesEnabled: boolean;
217
+ openaiReasoningEffort: "high" | "low" | "max" | "medium" | "minimal" | "none" | "xhigh";
218
+ openaiAllowedReasoningEfforts: string;
219
+ creditsDefaultModel: string;
220
+ creditsDefaultReasoningEffort: "high" | "low" | "max" | "medium" | "minimal" | "none" | "xhigh";
221
+ openaiResponsesTransport: "http" | "websocket";
222
+ openaiProviderItemIds: "preserve" | "strip";
223
+ openaiReasoningEncryptedContent: boolean;
224
+ openaiMaxRetries: number;
225
+ webSearchEnabled: boolean;
226
+ jevApiKey?: string | undefined;
227
+ jevBaseUrl: string;
228
+ jevModel: string;
229
+ jevRequestTimeoutMs: number;
230
+ codeSearchMode: "default_on" | "experiment" | "off" | "opt_in";
231
+ agentInstructionsTemplate: string;
232
+ azureOpenaiBaseUrl?: string | undefined;
233
+ azureOpenaiEndpoint?: string | undefined;
234
+ azureOpenaiDeployment?: string | undefined;
235
+ azureOpenaiApiVersion?: string | undefined;
236
+ azureOpenaiApiKey?: string | undefined;
237
+ azureOpenaiAdToken?: string | undefined;
238
+ disableOpenaiTracing: boolean;
239
+ sandboxBackend: "blaxel" | "cloudflare" | "daytona" | "docker" | "e2b" | "local" | "modal" | "none" | "opensandbox" | "runloop" | "selfhosted" | "vercel";
240
+ dockerImage: string;
241
+ sandboxArtifactRuntimeEnabled: boolean;
242
+ dockerExposedPorts: string;
243
+ dockerNetwork?: string | undefined;
244
+ dockerWorkspaceBaseDir?: string | undefined;
245
+ modalAppName: string;
246
+ modalImageRef?: string | undefined;
247
+ modalCommandSupervisionEnabled: boolean;
248
+ modalImageId?: string | undefined;
249
+ modalImageRegistrySecret?: string | undefined;
250
+ modalTimeoutSeconds: number;
251
+ modalSandboxCpu?: number | undefined;
252
+ modalSandboxMemoryMiB?: number | undefined;
253
+ modalTokenId?: string | undefined;
254
+ modalTokenSecret?: string | undefined;
255
+ modalEnvironment?: string | undefined;
256
+ modalIdleTimeoutSeconds?: number | undefined;
257
+ modalWorkspacePersistence: "snapshot_directory" | "snapshot_filesystem" | "tar";
258
+ sandboxDesktopEnabled: boolean;
259
+ sandboxDesktopInteractive: boolean;
260
+ sandboxTerminalEnabled: boolean;
261
+ streamResolutionWidth: number;
262
+ streamResolutionHeight: number;
263
+ recordingEnabled: boolean;
264
+ recordingDefaultCodec: "h264-mp4" | "vp9-webm";
265
+ workspaceCaptureEnabled: boolean;
266
+ recordingFramerate: number;
267
+ recordingMaxSeconds: number;
268
+ recordingMaxBytes: number;
269
+ daytonaApiKey?: string | undefined;
270
+ daytonaApiUrl?: string | undefined;
271
+ daytonaTarget?: string | undefined;
272
+ daytonaImage?: string | undefined;
273
+ daytonaSnapshotName?: string | undefined;
274
+ daytonaAutoStopInterval?: number | undefined;
275
+ daytonaTimeoutSeconds?: number | undefined;
276
+ daytonaExposedPortUrlTtlSeconds?: number | undefined;
277
+ runloopApiKey?: string | undefined;
278
+ runloopBaseUrl?: string | undefined;
279
+ runloopBlueprintName?: string | undefined;
280
+ runloopBlueprintId?: string | undefined;
281
+ runloopTunnel: boolean;
282
+ runloopKeepAliveSeconds?: number | undefined;
283
+ e2bApiKey?: string | undefined;
284
+ e2bTemplate?: string | undefined;
285
+ e2bTimeoutSeconds?: number | undefined;
286
+ e2bTimeoutAction?: "kill" | "pause" | undefined;
287
+ e2bAllowInternetAccess?: boolean | undefined;
288
+ e2bAutoResume?: boolean | undefined;
289
+ e2bWorkspacePersistence?: "snapshot" | "tar" | undefined;
290
+ blaxelApiKey?: string | undefined;
291
+ blaxelImage?: string | undefined;
292
+ blaxelRegion?: string | undefined;
293
+ blaxelExposedPortPublic?: boolean | undefined;
294
+ blaxelExposedPortUrlTtlSeconds?: number | undefined;
295
+ blaxelMemoryMb?: number | undefined;
296
+ blaxelTtl?: string | undefined;
297
+ cloudflareWorkerUrl?: string | undefined;
298
+ cloudflareApiKey?: string | undefined;
299
+ experimentalBrowserContextPoolEnabled: boolean;
300
+ browserbaseApiKey?: string | undefined;
301
+ kernelApiKey?: string | undefined;
302
+ kernelEndpoint?: string | undefined;
303
+ kernelBrowserTimeoutSeconds: number;
304
+ kernelBrowserStealth: boolean;
305
+ vercelToken?: string | undefined;
306
+ vercelProjectId?: string | undefined;
307
+ vercelTeamId?: string | undefined;
308
+ vercelRuntime?: string | undefined;
309
+ openSandboxBaseUrl?: string | undefined;
310
+ openSandboxApiKey?: string | undefined;
311
+ openSandboxImage?: string | undefined;
312
+ openSandboxTtlSeconds: number;
313
+ openSandboxUseServerProxy: boolean;
314
+ openSandboxSignedEndpoints: boolean;
315
+ openSandboxSignedEndpointTtlSeconds: number;
316
+ openSandboxChannelBPublicBaseUrl?: string | undefined;
317
+ openSandboxInteractionFrameProxy?: boolean | undefined;
318
+ openSandboxPoolRef?: string | undefined;
319
+ openSandboxKubernetesInventoryNamespace?: string | undefined;
320
+ sandboxOwnershipEnabled: boolean;
321
+ rigVerificationLeaseOwnershipEnabled: boolean;
322
+ sandboxLazyProvisionEnabled: boolean;
323
+ sandboxSelfhostedEnabled: boolean;
324
+ agentOpStreamEnabled: boolean;
325
+ enrollmentSigningSecret?: string | undefined;
326
+ selfhostedNatsUrl?: string | undefined;
327
+ selfhostedRelayUrl?: string | undefined;
328
+ selfhostedRelayTokenSecret?: string | undefined;
329
+ agentUpdatePublicKey?: string | undefined;
330
+ selfhostedNatsCalloutAccountSeed?: string | undefined;
331
+ selfhostedNatsCalloutAccountName?: string | undefined;
332
+ selfhostedNatsCalloutUser?: string | undefined;
333
+ selfhostedNatsCalloutPassword?: string | undefined;
334
+ selfhostedNatsControlUser?: string | undefined;
335
+ selfhostedNatsControlPassword?: string | undefined;
336
+ sandboxSelfhostedExecTimeoutMs: number;
337
+ sandboxSelfhostedControlTimeoutMs: number;
338
+ sandboxLeaseReaperPeriodMs: number;
339
+ sandboxViewerHolderTtlMs: number;
340
+ sandboxInteractionHolderTtlMs: number;
341
+ sandboxIdleGraceMs: number;
342
+ sandboxIdleCommandContainmentMs: number | undefined;
343
+ sandboxSnapshotIntervalMs: number;
344
+ sandboxSnapshotTimeoutMs: number;
345
+ sandboxDrainSnapshotTimeoutMs?: number | undefined;
346
+ sandboxRotationLeadMs: number;
347
+ sandboxRotationBatchSize: number;
348
+ sandboxLeaseTtlMs: number;
349
+ sandboxLeaseWarmingTtlMs: number;
350
+ sandboxWarmingTimeoutMs: number;
351
+ workspaceControlLockTimeoutMs: number;
352
+ rigSetupTimeoutMs: number;
353
+ sandboxWarmRateMicrosPerSecondJson: string;
354
+ sandboxWarmBillingMode: "credits" | "shadow" | "usage_only";
355
+ sandboxMaxWarmSecondsPerWorkspace: number;
356
+ sandboxPreparationProfiles: string;
357
+ sandboxEnvAllowlist: string;
358
+ sandboxImageAllowlist: string;
359
+ objectStorageEndpoint?: string | undefined;
360
+ objectStorageInternalEndpoint?: string | undefined;
361
+ objectStorageSandboxEndpoint?: string | undefined;
362
+ objectStorageBackend: "aws-s3" | "azure-blob" | "gcs" | "s3-compatible";
363
+ objectStorageBucket: string;
364
+ objectStorageRegion: string;
365
+ objectStorageS3Provider: string;
366
+ objectStorageAccessKeyId?: string | undefined;
367
+ objectStorageSecretAccessKey?: string | undefined;
368
+ objectStorageForcePathStyle: boolean;
369
+ objectStorageAzureConnectionString?: string | undefined;
370
+ objectStorageAzureAccountName?: string | undefined;
371
+ objectStorageAzureAccountKey?: string | undefined;
372
+ objectStorageAzureEndpoint?: string | undefined;
373
+ objectStorageGcsProjectId?: string | undefined;
374
+ objectStorageGcsCredentialsJson?: string | undefined;
375
+ objectStorageGcsKeyFilename?: string | undefined;
376
+ objectStorageGcsApiEndpoint?: string | undefined;
377
+ documentParser: string;
378
+ documentChunkSize: number;
379
+ documentChunkOverlap: number;
380
+ documentEmbeddingProvider: "deterministic" | "openai";
381
+ documentEmbeddingModel: string;
382
+ documentEmbeddingDimensions: number;
383
+ documentEmbeddingApiKey?: string | undefined;
384
+ documentEmbeddingBaseUrl?: string | undefined;
385
+ documentEmbeddingBillingMode: "credits" | "shadow" | "usage_only";
386
+ documentEmbeddingCreditsActivatedAt?: string | undefined;
387
+ documentEmbeddingRateMicrosPerMillionBytes: number;
388
+ documentCurationProvider: "heuristic" | "none" | "openai";
389
+ documentCurationModel: string;
390
+ documentCurationApiKey?: string | undefined;
391
+ documentCurationBaseUrl?: string | undefined;
392
+ gitAuthorName?: string | undefined;
393
+ gitAuthorEmail?: string | undefined;
394
+ gitCommitterName?: string | undefined;
395
+ gitCommitterEmail?: string | undefined;
396
+ githubAppManifestBaseUrl?: string | undefined;
397
+ githubAppManifestStateSecret?: string | undefined;
398
+ githubAppId?: string | undefined;
399
+ githubClientId?: string | undefined;
400
+ githubClientSecret?: string | undefined;
401
+ githubRestMcpEnabled: boolean;
402
+ githubPersonalOauthEnabled: boolean;
403
+ githubPersonalOauthClientId?: string | undefined;
404
+ githubPersonalOauthClientSecret?: string | undefined;
405
+ githubAppSlug?: string | undefined;
406
+ githubWebhookSecret?: string | undefined;
407
+ githubAppPrivateKey?: string | undefined;
408
+ prReviewGithubAppId?: string | undefined;
409
+ prReviewGithubClientId?: string | undefined;
410
+ prReviewGithubClientSecret?: string | undefined;
411
+ prReviewGithubAppSlug?: string | undefined;
412
+ prReviewGithubWebhookSecret?: string | undefined;
413
+ prReviewGithubAppPrivateKey?: string | undefined;
414
+ betterAuthSecret?: string | undefined;
415
+ betterAuthAllowedHosts: string;
416
+ betterAuthCookieDomain?: string | undefined;
417
+ betterAuthTrustedOrigins: string;
418
+ managedAuthGoogleClientId?: string | undefined;
419
+ managedAuthGoogleClientSecret?: string | undefined;
420
+ managedAuthGithubClientId?: string | undefined;
421
+ managedAuthGithubClientSecret?: string | undefined;
422
+ allowedUserEmails?: string[] | undefined;
423
+ managedAuthSessionSetMode: "broker" | "dual" | "legacy";
424
+ managedAuthNewSignupsEnabled: boolean;
425
+ organizationUserSetupEmailTokenTransport: "fragment" | "query";
426
+ organizationUserSetupQueryEdgeSanitizationConfirmed: boolean;
427
+ resendApiKey?: string | undefined;
428
+ emailFrom: string;
429
+ stripeSecretKey?: string | undefined;
430
+ stripePublishableKey?: string | undefined;
431
+ stripeWebhookSecret?: string | undefined;
432
+ stripeCreditsProductId?: string | undefined;
433
+ mcpServers: {
434
+ id: string;
435
+ name?: string | undefined;
436
+ url: string;
437
+ allowedTools?: string[] | undefined;
438
+ timeoutMs?: number | undefined;
439
+ cacheToolsList: boolean;
440
+ requireApproval?: boolean | string[] | undefined;
441
+ headers?: Record<string, string> | undefined;
442
+ connectionRef?: {
443
+ connectionId?: string | undefined;
444
+ accountSelection?: "all_eligible" | undefined;
445
+ authoritySource?: "host" | undefined;
446
+ hostBinding?: {
447
+ bindingId: string;
448
+ generation: number;
449
+ } | {
450
+ selection: "accepted_turn";
451
+ } | undefined;
452
+ provider?: string | undefined;
453
+ providerDomain: string;
454
+ kind?: "api_key" | "app_install" | "delegated" | "oauth2" | undefined;
455
+ scopes?: string[] | undefined;
456
+ resource?: string | undefined;
457
+ selectedResources?: {
458
+ id: string;
459
+ kind: "repository";
460
+ }[] | undefined;
461
+ subjectScope?: "subject" | "workspace" | undefined;
462
+ } | undefined;
463
+ operationRecovery?: Record<string, {
464
+ observerTool: string;
465
+ }> | undefined;
466
+ }[];
467
+ };
468
+ }>;
469
+ /** Shared with scheduled work; reasons describe the actual admission gate. */
470
+ export declare function goalRunBudgetBlocked(services: Parameters<typeof agentRunAdmissionDenial>[0], input: Omit<Parameters<typeof agentRunAdmissionDenial>[1], "requestedAgentRuns">): Promise<GoalAdmissionBlock | null>;
471
+ export declare class GoalResumeBlockedError extends Error {
472
+ readonly pausedReason: GoalAdmissionPausedReason;
473
+ constructor(pausedReason: GoalAdmissionPausedReason, message: string);
474
+ }
475
+ /** Called under the goal transition's locks, before counters, events or wakes change. */
476
+ export declare function assertGoalResumeAllowed(services: Parameters<typeof agentRunAdmissionDenial>[0] & {
477
+ catalogSourceSettings?: Settings;
478
+ }, session: Pick<Session, "accountId" | "workspaceId" | "model" | "codexCompactionMode"> & Partial<Pick<Session, "latencyMode">>, causalTurn: {
479
+ initiatingHumanSubjectId: string | null;
480
+ } | null): Promise<void>;
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export * from "./managed-auth-type.js";
16
16
  export { getManagedAuthRequestActorAbortSignal, getManagedAuthRequestActorAdmissionStamp, getManagedAuthRequestActorEpoch, getManagedAuthRequestActorLeaseStamp, getManagedSession, configureManagedUserAdmission, assertManagedUserAdmission, ManagedAuthActorLeaseOutcomeUnknownError, markManagedAuthRequestActorTransitionApplied, releaseManagedAuthRequestActorLease, validateManagedAuthRequestActorLease, type ManagedAuthActorAdmissionStamp, type ManagedAuthActorMutationLeaseStamp, } from "./managed-session.js";
17
17
  export * from "./transcription.js";
18
18
  export * from "./model-catalog.js";
19
+ export * from "./goal-admission.js";
19
20
  export * from "./codex-model-availability.js";
20
21
  export * from "./default-session-model.js";
21
22
  export * from "./sandbox/fleet.js";
@@ -31,6 +32,7 @@ export * from "./application/connect-authority.js";
31
32
  export * from "./application/connect-operation.js";
32
33
  export * from "./session-authorization.js";
33
34
  export * from "./billing/limits.js";
35
+ export * from "./billing/agent-run-admission.js";
34
36
  export * from "./domain/capabilities.js";
35
37
  export * from "./domain/native-mcp-connection-admission.js";
36
38
  export * from "./domain/skill-imports.js";