@db3.ai/app 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +31 -0
- package/README.md +241 -0
- package/agent-instructions.md +69 -0
- package/bin/db3-agents.mjs +140 -0
- package/bin/db3.mjs +11 -0
- package/dist/ai/AIErrors.d.ts +33 -0
- package/dist/ai/AIErrors.js +43 -0
- package/dist/ai/AIFailover.d.ts +25 -0
- package/dist/ai/AIFailover.js +96 -0
- package/dist/ai/AIProviders.d.ts +35 -0
- package/dist/ai/AIProviders.js +197 -0
- package/dist/ai/AIQuotaDeferredError.d.ts +19 -0
- package/dist/ai/AIQuotaDeferredError.js +25 -0
- package/dist/ai/AIRateLimiter.d.ts +103 -0
- package/dist/ai/AIRateLimiter.js +690 -0
- package/dist/ai/Agent.d.ts +633 -0
- package/dist/ai/Agent.js +2976 -0
- package/dist/ai/AgentHistory.d.ts +11 -0
- package/dist/ai/AgentHistory.js +495 -0
- package/dist/ai/AgentRunJob.d.ts +21 -0
- package/dist/ai/AgentRunJob.js +53 -0
- package/dist/ai/Ai.d.ts +375 -0
- package/dist/ai/Ai.js +1771 -0
- package/dist/ai/AiConversation.d.ts +17 -0
- package/dist/ai/AiConversation.js +38 -0
- package/dist/ai/AiExecutionContext.d.ts +7 -0
- package/dist/ai/AiExecutionContext.js +16 -0
- package/dist/ai/AiMessage.d.ts +43 -0
- package/dist/ai/AiMessage.js +105 -0
- package/dist/ai/AiRateLimitBucket.d.ts +69 -0
- package/dist/ai/AiRateLimitBucket.js +138 -0
- package/dist/ai/AiRateLimitReservation.d.ts +56 -0
- package/dist/ai/AiRateLimitReservation.js +101 -0
- package/dist/ai/AiRequest.d.ts +78 -0
- package/dist/ai/AiRequest.js +384 -0
- package/dist/ai/Estimates.d.ts +26 -0
- package/dist/ai/Estimates.js +34 -0
- package/dist/ai/Models.d.ts +88 -0
- package/dist/ai/Models.js +328 -0
- package/dist/ai/OpenAIProviderError.d.ts +30 -0
- package/dist/ai/OpenAIProviderError.js +77 -0
- package/dist/ai/OpenAIQuotaRetry.d.ts +27 -0
- package/dist/ai/OpenAIQuotaRetry.js +144 -0
- package/dist/ai/ProviderCosts.d.ts +55 -0
- package/dist/ai/ProviderCosts.js +108 -0
- package/dist/ai/ResponsesProviderCall.d.ts +13 -0
- package/dist/ai/ResponsesProviderCall.js +29 -0
- package/dist/ai/agentCitations.d.ts +27 -0
- package/dist/ai/agentCitations.js +153 -0
- package/dist/ai/contracts/AI.d.ts +347 -0
- package/dist/ai/contracts/AI.js +13 -0
- package/dist/ai/contracts/Agent.d.ts +476 -0
- package/dist/ai/contracts/Agent.js +1 -0
- package/dist/ai/contracts/AiRequestRunCostSummary.d.ts +31 -0
- package/dist/ai/contracts/AiRequestRunCostSummary.js +1 -0
- package/dist/ai/contracts/Pricing.d.ts +88 -0
- package/dist/ai/contracts/Pricing.js +1 -0
- package/dist/ai/contracts/Providers.d.ts +68 -0
- package/dist/ai/contracts/Providers.js +1 -0
- package/dist/ai/contracts/QuotaRetry.d.ts +38 -0
- package/dist/ai/contracts/QuotaRetry.js +1 -0
- package/dist/ai/contracts/RateLimits.d.ts +45 -0
- package/dist/ai/contracts/RateLimits.js +1 -0
- package/dist/ai/contracts/ResponsesProviderCall.d.ts +28 -0
- package/dist/ai/contracts/ResponsesProviderCall.js +1 -0
- package/dist/ai/contracts/index.d.ts +8 -0
- package/dist/ai/contracts/index.js +8 -0
- package/dist/ai/index.d.ts +27 -0
- package/dist/ai/index.js +27 -0
- package/dist/ai/registry.d.ts +28 -0
- package/dist/ai/registry.js +49 -0
- package/dist/ai/sdkNodeCompatibility.d.ts +76 -0
- package/dist/ai/toolCallRecovery.d.ts +16 -0
- package/dist/ai/toolCallRecovery.js +71 -0
- package/dist/ai/toolHelpers.d.ts +65 -0
- package/dist/ai/toolHelpers.js +106 -0
- package/dist/auth/Auth.d.ts +641 -0
- package/dist/auth/Auth.js +927 -0
- package/dist/auth/AuthProvider.d.ts +104 -0
- package/dist/auth/AuthProvider.js +185 -0
- package/dist/auth/AuthToken.d.ts +123 -0
- package/dist/auth/AuthToken.js +156 -0
- package/dist/auth/PasswordResetToken.d.ts +33 -0
- package/dist/auth/PasswordResetToken.js +64 -0
- package/dist/auth/UserIdentity.d.ts +46 -0
- package/dist/auth/UserIdentity.js +72 -0
- package/dist/auth/contracts/AuthProviderDriver.d.ts +94 -0
- package/dist/auth/contracts/AuthProviderDriver.js +1 -0
- package/dist/auth/contracts/index.d.ts +1 -0
- package/dist/auth/contracts/index.js +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/passwordHash.d.ts +26 -0
- package/dist/auth/passwordHash.js +96 -0
- package/dist/auth/providers/GoogleAuthProvider.d.ts +135 -0
- package/dist/auth/providers/GoogleAuthProvider.js +305 -0
- package/dist/auth/providers/PasswordAuthProvider.d.ts +115 -0
- package/dist/auth/providers/PasswordAuthProvider.js +195 -0
- package/dist/auth/providers/index.d.ts +3 -0
- package/dist/auth/providers/index.js +3 -0
- package/dist/auth/providers/resolveAuthProviders.d.ts +29 -0
- package/dist/auth/providers/resolveAuthProviders.js +111 -0
- package/dist/cache/Cache.d.ts +67 -0
- package/dist/cache/Cache.js +115 -0
- package/dist/cache/contracts/CacheDriver.d.ts +10 -0
- package/dist/cache/contracts/CacheDriver.js +1 -0
- package/dist/cache/contracts/CacheOperations.d.ts +26 -0
- package/dist/cache/contracts/CacheOperations.js +1 -0
- package/dist/cache/contracts/CacheOptions.d.ts +51 -0
- package/dist/cache/contracts/CacheOptions.js +1 -0
- package/dist/cache/contracts/CacheRepository.d.ts +45 -0
- package/dist/cache/contracts/CacheRepository.js +1 -0
- package/dist/cache/contracts/index.d.ts +4 -0
- package/dist/cache/contracts/index.js +4 -0
- package/dist/cache/drivers/CacheManagerDriver.d.ts +55 -0
- package/dist/cache/drivers/CacheManagerDriver.js +68 -0
- package/dist/cache/drivers/createCacheDriver.d.ts +8 -0
- package/dist/cache/drivers/createCacheDriver.js +147 -0
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.js +2 -0
- package/dist/cli/Cli.d.ts +17 -0
- package/dist/cli/Cli.js +120 -0
- package/dist/cli/commands/repl.d.ts +9 -0
- package/dist/cli/commands/repl.js +27 -0
- package/dist/cli/contracts/CliCommand.d.ts +30 -0
- package/dist/cli/contracts/CliCommand.js +1 -0
- package/dist/cli/contracts/CliConfig.d.ts +9 -0
- package/dist/cli/contracts/CliConfig.js +1 -0
- package/dist/cli/contracts/CliOptions.d.ts +13 -0
- package/dist/cli/contracts/CliOptions.js +1 -0
- package/dist/cli/contracts/CommandDefinition.d.ts +18 -0
- package/dist/cli/contracts/CommandDefinition.js +1 -0
- package/dist/cli/contracts/ReplOptions.d.ts +11 -0
- package/dist/cli/contracts/ReplOptions.js +1 -0
- package/dist/cli/contracts/index.d.ts +5 -0
- package/dist/cli/contracts/index.js +1 -0
- package/dist/cli/defineCommand.d.ts +10 -0
- package/dist/cli/defineCommand.js +25 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/runDb3.d.ts +11 -0
- package/dist/cli/runDb3.js +70 -0
- package/dist/cli/runRepl.d.ts +12 -0
- package/dist/cli/runRepl.js +54 -0
- package/dist/config/Config.d.ts +48 -0
- package/dist/config/Config.js +80 -0
- package/dist/config/env.d.ts +26 -0
- package/dist/config/env.js +117 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +2 -0
- package/dist/db/ActiveProjection.d.ts +90 -0
- package/dist/db/ActiveProjection.js +134 -0
- package/dist/db/ActiveQueryBuilder.d.ts +268 -0
- package/dist/db/ActiveQueryBuilder.js +621 -0
- package/dist/db/ActiveRecord.d.ts +483 -0
- package/dist/db/ActiveRecord.js +765 -0
- package/dist/db/Database.d.ts +277 -0
- package/dist/db/Database.js +827 -0
- package/dist/db/FieldType.d.ts +540 -0
- package/dist/db/FieldType.js +706 -0
- package/dist/db/SoftDeletes.d.ts +30 -0
- package/dist/db/SoftDeletes.js +93 -0
- package/dist/db/commands/check.d.ts +6 -0
- package/dist/db/commands/check.js +8 -0
- package/dist/db/commands/index.d.ts +6 -0
- package/dist/db/commands/index.js +17 -0
- package/dist/db/commands/makeMigration.d.ts +7 -0
- package/dist/db/commands/makeMigration.js +9 -0
- package/dist/db/commands/migrate.d.ts +6 -0
- package/dist/db/commands/migrate.js +8 -0
- package/dist/db/connection.d.ts +10 -0
- package/dist/db/connection.js +55 -0
- package/dist/db/contracts/ActiveRecordDefinition.d.ts +64 -0
- package/dist/db/contracts/ActiveRecordDefinition.js +1 -0
- package/dist/db/contracts/DatabaseBackup.d.ts +7 -0
- package/dist/db/contracts/DatabaseBackup.js +1 -0
- package/dist/db/contracts/DatabaseMigrationsConfig.d.ts +9 -0
- package/dist/db/contracts/DatabaseMigrationsConfig.js +1 -0
- package/dist/db/contracts/index.d.ts +3 -0
- package/dist/db/contracts/index.js +3 -0
- package/dist/db/dialects/columnTypes.d.ts +20 -0
- package/dist/db/dialects/columnTypes.js +67 -0
- package/dist/db/dialects/index.d.ts +6 -0
- package/dist/db/dialects/index.js +6 -0
- package/dist/db/dialects/mariadb.d.ts +7 -0
- package/dist/db/dialects/mariadb.js +35 -0
- package/dist/db/dialects/mysql.d.ts +14 -0
- package/dist/db/dialects/mysql.js +203 -0
- package/dist/db/dialects/postgres.d.ts +5 -0
- package/dist/db/dialects/postgres.js +106 -0
- package/dist/db/dialects/resolveDialect.d.ts +14 -0
- package/dist/db/dialects/resolveDialect.js +57 -0
- package/dist/db/dialects/types.d.ts +44 -0
- package/dist/db/dialects/types.js +1 -0
- package/dist/db/errors.d.ts +15 -0
- package/dist/db/errors.js +20 -0
- package/dist/db/fields/BooleanField.d.ts +29 -0
- package/dist/db/fields/BooleanField.js +89 -0
- package/dist/db/fields/CharUuidField.d.ts +29 -0
- package/dist/db/fields/CharUuidField.js +63 -0
- package/dist/db/fields/ChoiceStringField.d.ts +25 -0
- package/dist/db/fields/ChoiceStringField.js +58 -0
- package/dist/db/fields/DecimalField.d.ts +20 -0
- package/dist/db/fields/DecimalField.js +105 -0
- package/dist/db/fields/EmailField.d.ts +31 -0
- package/dist/db/fields/EmailField.js +52 -0
- package/dist/db/fields/EncryptedJsonField.d.ts +82 -0
- package/dist/db/fields/EncryptedJsonField.js +169 -0
- package/dist/db/fields/IntegerField.d.ts +35 -0
- package/dist/db/fields/IntegerField.js +139 -0
- package/dist/db/fields/JsonField.d.ts +40 -0
- package/dist/db/fields/JsonField.js +79 -0
- package/dist/db/fields/JsonStringField.d.ts +21 -0
- package/dist/db/fields/JsonStringField.js +41 -0
- package/dist/db/fields/LinkField.d.ts +180 -0
- package/dist/db/fields/LinkField.js +359 -0
- package/dist/db/fields/PasswordField.d.ts +93 -0
- package/dist/db/fields/PasswordField.js +180 -0
- package/dist/db/fields/StringField.d.ts +43 -0
- package/dist/db/fields/StringField.js +102 -0
- package/dist/db/fields/StringListField.d.ts +54 -0
- package/dist/db/fields/StringListField.js +124 -0
- package/dist/db/fields/TextField.d.ts +25 -0
- package/dist/db/fields/TextField.js +44 -0
- package/dist/db/fields/TimestampField.d.ts +47 -0
- package/dist/db/fields/TimestampField.js +97 -0
- package/dist/db/fields/UlidField.d.ts +69 -0
- package/dist/db/fields/UlidField.js +114 -0
- package/dist/db/fields/UrlField.d.ts +30 -0
- package/dist/db/fields/UrlField.js +61 -0
- package/dist/db/fields/VectorField.d.ts +64 -0
- package/dist/db/fields/VectorField.js +180 -0
- package/dist/db/fields/createField.d.ts +2 -0
- package/dist/db/fields/createField.js +13 -0
- package/dist/db/fields/field.d.ts +36 -0
- package/dist/db/fields/field.js +101 -0
- package/dist/db/fields/index.d.ts +18 -0
- package/dist/db/fields/index.js +18 -0
- package/dist/db/fields/resolveFields.d.ts +17 -0
- package/dist/db/fields/resolveFields.js +38 -0
- package/dist/db/index.d.ts +13 -0
- package/dist/db/index.js +13 -0
- package/dist/db/migrations/DatabaseMigrationManager.d.ts +57 -0
- package/dist/db/migrations/DatabaseMigrationManager.js +589 -0
- package/dist/db/migrations/DatabaseSchemaInspector.d.ts +19 -0
- package/dist/db/migrations/DatabaseSchemaInspector.js +384 -0
- package/dist/db/migrations/KnexMigrationRenderer.d.ts +11 -0
- package/dist/db/migrations/KnexMigrationRenderer.js +390 -0
- package/dist/db/migrations/ModelSchemaCollector.d.ts +29 -0
- package/dist/db/migrations/ModelSchemaCollector.js +183 -0
- package/dist/db/migrations/SchemaDiffer.d.ts +13 -0
- package/dist/db/migrations/SchemaDiffer.js +427 -0
- package/dist/db/migrations/SchemaNames.d.ts +27 -0
- package/dist/db/migrations/SchemaNames.js +46 -0
- package/dist/db/migrations/SchemaSnapshotSerializer.d.ts +30 -0
- package/dist/db/migrations/SchemaSnapshotSerializer.js +49 -0
- package/dist/db/migrations/contracts/DatabaseMigration.d.ts +118 -0
- package/dist/db/migrations/contracts/DatabaseMigration.js +1 -0
- package/dist/db/migrations/contracts/SchemaChange.d.ts +83 -0
- package/dist/db/migrations/contracts/SchemaChange.js +1 -0
- package/dist/db/migrations/contracts/SchemaSnapshot.d.ts +94 -0
- package/dist/db/migrations/contracts/SchemaSnapshot.js +1 -0
- package/dist/db/migrations/contracts/index.d.ts +3 -0
- package/dist/db/migrations/contracts/index.js +3 -0
- package/dist/db/migrations/errors.d.ts +35 -0
- package/dist/db/migrations/errors.js +45 -0
- package/dist/db/migrations/index.d.ts +10 -0
- package/dist/db/migrations/index.js +10 -0
- package/dist/db/migrations/promoteDestructiveSchemaChanges.d.ts +19 -0
- package/dist/db/migrations/promoteDestructiveSchemaChanges.js +102 -0
- package/dist/db/queryMonitor.d.ts +142 -0
- package/dist/db/queryMonitor.js +357 -0
- package/dist/db/sqlErrors.d.ts +11 -0
- package/dist/db/sqlErrors.js +17 -0
- package/dist/db/test/db.d.ts +11 -0
- package/dist/db/test/db.js +109 -0
- package/dist/devtools/HttpEventDispatcher.d.ts +19 -0
- package/dist/devtools/HttpEventDispatcher.js +180 -0
- package/dist/devtools/contracts/DevtoolsEventDispatcher.d.ts +53 -0
- package/dist/devtools/contracts/DevtoolsEventDispatcher.js +1 -0
- package/dist/devtools/contracts/index.d.ts +1 -0
- package/dist/devtools/contracts/index.js +1 -0
- package/dist/devtools/environment.d.ts +10 -0
- package/dist/devtools/environment.js +14 -0
- package/dist/devtools/index.d.ts +3 -0
- package/dist/devtools/index.js +3 -0
- package/dist/events/Events.d.ts +70 -0
- package/dist/events/Events.js +126 -0
- package/dist/events/contracts/EventConstructor.d.ts +12 -0
- package/dist/events/contracts/EventConstructor.js +1 -0
- package/dist/events/contracts/EventListener.d.ts +6 -0
- package/dist/events/contracts/EventListener.js +1 -0
- package/dist/events/contracts/EventUnsubscribe.d.ts +4 -0
- package/dist/events/contracts/EventUnsubscribe.js +1 -0
- package/dist/events/contracts/index.d.ts +3 -0
- package/dist/events/contracts/index.js +3 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.js +2 -0
- package/dist/flows/FlowBlockRegistry.d.ts +39 -0
- package/dist/flows/FlowBlockRegistry.js +66 -0
- package/dist/flows/FlowCompiler.d.ts +26 -0
- package/dist/flows/FlowCompiler.js +488 -0
- package/dist/flows/FlowDefinitionError.d.ts +21 -0
- package/dist/flows/FlowDefinitionError.js +16 -0
- package/dist/flows/FlowStepJob.d.ts +28 -0
- package/dist/flows/FlowStepJob.js +31 -0
- package/dist/flows/FlowValueValidator.d.ts +32 -0
- package/dist/flows/FlowValueValidator.js +105 -0
- package/dist/flows/Flows.d.ts +102 -0
- package/dist/flows/Flows.js +871 -0
- package/dist/flows/blocks/FlowInput.d.ts +10 -0
- package/dist/flows/blocks/FlowInput.js +29 -0
- package/dist/flows/blocks/FlowOutput.d.ts +10 -0
- package/dist/flows/blocks/FlowOutput.js +29 -0
- package/dist/flows/blocks/Subflow.d.ts +10 -0
- package/dist/flows/blocks/Subflow.js +21 -0
- package/dist/flows/blocks/index.d.ts +6 -0
- package/dist/flows/blocks/index.js +8 -0
- package/dist/flows/constants.d.ts +55 -0
- package/dist/flows/constants.js +47 -0
- package/dist/flows/contracts/FlowBlock.d.ts +64 -0
- package/dist/flows/contracts/FlowBlock.js +1 -0
- package/dist/flows/contracts/FlowCompiler.d.ts +30 -0
- package/dist/flows/contracts/FlowCompiler.js +1 -0
- package/dist/flows/contracts/FlowDefinition.d.ts +118 -0
- package/dist/flows/contracts/FlowDefinition.js +1 -0
- package/dist/flows/contracts/FlowDefinitionStore.d.ts +47 -0
- package/dist/flows/contracts/FlowDefinitionStore.js +1 -0
- package/dist/flows/contracts/FlowRun.d.ts +40 -0
- package/dist/flows/contracts/FlowRun.js +1 -0
- package/dist/flows/contracts/FlowValue.d.ts +49 -0
- package/dist/flows/contracts/FlowValue.js +1 -0
- package/dist/flows/contracts/FlowsService.d.ts +37 -0
- package/dist/flows/contracts/FlowsService.js +1 -0
- package/dist/flows/contracts/index.d.ts +7 -0
- package/dist/flows/contracts/index.js +7 -0
- package/dist/flows/defineBlock.d.ts +18 -0
- package/dist/flows/defineBlock.js +19 -0
- package/dist/flows/drivers/FileFlowDefinitionStore.d.ts +53 -0
- package/dist/flows/drivers/FileFlowDefinitionStore.js +313 -0
- package/dist/flows/drivers/index.d.ts +1 -0
- package/dist/flows/drivers/index.js +1 -0
- package/dist/flows/errors.d.ts +8 -0
- package/dist/flows/errors.js +19 -0
- package/dist/flows/index.d.ts +13 -0
- package/dist/flows/index.js +13 -0
- package/dist/flows/models/FlowRun.d.ts +55 -0
- package/dist/flows/models/FlowRun.js +126 -0
- package/dist/flows/models/FlowRunEvent.d.ts +41 -0
- package/dist/flows/models/FlowRunEvent.js +85 -0
- package/dist/flows/models/FlowStepRun.d.ts +56 -0
- package/dist/flows/models/FlowStepRun.js +137 -0
- package/dist/flows/models/index.d.ts +10 -0
- package/dist/flows/models/index.js +14 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +16 -0
- package/dist/logging/Log.d.ts +66 -0
- package/dist/logging/Log.js +79 -0
- package/dist/logging/contracts/HttpExchange.d.ts +50 -0
- package/dist/logging/contracts/HttpExchange.js +1 -0
- package/dist/logging/contracts/Logger.d.ts +41 -0
- package/dist/logging/contracts/Logger.js +1 -0
- package/dist/logging/contracts/LoggerDriver.d.ts +16 -0
- package/dist/logging/contracts/LoggerDriver.js +1 -0
- package/dist/logging/contracts/LoggingOptions.d.ts +49 -0
- package/dist/logging/contracts/LoggingOptions.js +1 -0
- package/dist/logging/contracts/index.d.ts +4 -0
- package/dist/logging/contracts/index.js +4 -0
- package/dist/logging/drivers/PinoLoggerDriver.d.ts +24 -0
- package/dist/logging/drivers/PinoLoggerDriver.js +291 -0
- package/dist/logging/drivers/index.d.ts +1 -0
- package/dist/logging/drivers/index.js +1 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/transports/DevtoolsLogTransport.d.ts +35 -0
- package/dist/logging/transports/DevtoolsLogTransport.js +96 -0
- package/dist/mail/Mail.d.ts +62 -0
- package/dist/mail/Mail.js +98 -0
- package/dist/mail/index.d.ts +4 -0
- package/dist/mail/index.js +4 -0
- package/dist/mail/transports/FileMailTransport.d.ts +12 -0
- package/dist/mail/transports/FileMailTransport.js +41 -0
- package/dist/mail/transports/MailgunTransport.d.ts +22 -0
- package/dist/mail/transports/MailgunTransport.js +57 -0
- package/dist/mail/transports/ResendTransport.d.ts +14 -0
- package/dist/mail/transports/ResendTransport.js +55 -0
- package/dist/media/MediaFile.d.ts +48 -0
- package/dist/media/MediaFile.js +104 -0
- package/dist/media/MediaItem.d.ts +47 -0
- package/dist/media/MediaItem.js +106 -0
- package/dist/media/MediaLibrary.d.ts +42 -0
- package/dist/media/MediaLibrary.js +94 -0
- package/dist/media/MediaManager.d.ts +159 -0
- package/dist/media/MediaManager.js +754 -0
- package/dist/media/constants.d.ts +27 -0
- package/dist/media/constants.js +19 -0
- package/dist/media/contracts/MediaOptions.d.ts +8 -0
- package/dist/media/contracts/MediaOptions.js +1 -0
- package/dist/media/contracts/index.d.ts +1 -0
- package/dist/media/contracts/index.js +1 -0
- package/dist/media/image/ImageReconstructionError.d.ts +15 -0
- package/dist/media/image/ImageReconstructionError.js +18 -0
- package/dist/media/image/ImageVariantRenderer.d.ts +44 -0
- package/dist/media/image/ImageVariantRenderer.js +337 -0
- package/dist/media/image/ImageVariantRequest.d.ts +28 -0
- package/dist/media/image/ImageVariantRequest.js +55 -0
- package/dist/media/image/contracts/ImageProcessor.d.ts +46 -0
- package/dist/media/image/contracts/ImageProcessor.js +1 -0
- package/dist/media/image/contracts/ImageVariant.d.ts +31 -0
- package/dist/media/image/contracts/ImageVariant.js +7 -0
- package/dist/media/image/contracts/ImageVariantCacheOptions.d.ts +20 -0
- package/dist/media/image/contracts/ImageVariantCacheOptions.js +1 -0
- package/dist/media/image/contracts/index.d.ts +3 -0
- package/dist/media/image/contracts/index.js +3 -0
- package/dist/media/image/index.d.ts +5 -0
- package/dist/media/image/index.js +5 -0
- package/dist/media/image/processors/SharpImageProcessor.d.ts +25 -0
- package/dist/media/image/processors/SharpImageProcessor.js +112 -0
- package/dist/media/image/processors/index.d.ts +1 -0
- package/dist/media/image/processors/index.js +1 -0
- package/dist/media/index.d.ts +8 -0
- package/dist/media/index.js +8 -0
- package/dist/media/types.d.ts +129 -0
- package/dist/media/types.js +1 -0
- package/dist/queue/FailedJob.d.ts +31 -0
- package/dist/queue/FailedJob.js +41 -0
- package/dist/queue/Queue.d.ts +208 -0
- package/dist/queue/Queue.js +685 -0
- package/dist/queue/QueueEvents.d.ts +31 -0
- package/dist/queue/QueueEvents.js +49 -0
- package/dist/queue/QueueRetryLaterError.d.ts +23 -0
- package/dist/queue/QueueRetryLaterError.js +34 -0
- package/dist/queue/QueueWorker.d.ts +72 -0
- package/dist/queue/QueueWorker.js +236 -0
- package/dist/queue/QueueableJob.d.ts +109 -0
- package/dist/queue/QueueableJob.js +137 -0
- package/dist/queue/QueuedJob.d.ts +31 -0
- package/dist/queue/QueuedJob.js +52 -0
- package/dist/queue/RetryPolicy.d.ts +51 -0
- package/dist/queue/RetryPolicy.js +84 -0
- package/dist/queue/commands/index.d.ts +4 -0
- package/dist/queue/commands/index.js +11 -0
- package/dist/queue/commands/makeJob.d.ts +7 -0
- package/dist/queue/commands/makeJob.js +9 -0
- package/dist/queue/console.d.ts +60 -0
- package/dist/queue/console.js +348 -0
- package/dist/queue/contracts/CreateJob.d.ts +12 -0
- package/dist/queue/contracts/CreateJob.js +1 -0
- package/dist/queue/contracts/QueueDriver.d.ts +122 -0
- package/dist/queue/contracts/QueueDriver.js +1 -0
- package/dist/queue/contracts/QueueEvents.d.ts +61 -0
- package/dist/queue/contracts/QueueEvents.js +1 -0
- package/dist/queue/contracts/QueuePayload.d.ts +136 -0
- package/dist/queue/contracts/QueuePayload.js +1 -0
- package/dist/queue/contracts/QueueRetry.d.ts +43 -0
- package/dist/queue/contracts/QueueRetry.js +1 -0
- package/dist/queue/contracts/QueueService.d.ts +199 -0
- package/dist/queue/contracts/QueueService.js +1 -0
- package/dist/queue/contracts/QueueWorkerLifecycle.d.ts +65 -0
- package/dist/queue/contracts/QueueWorkerLifecycle.js +1 -0
- package/dist/queue/contracts/QueueableJob.d.ts +50 -0
- package/dist/queue/contracts/QueueableJob.js +1 -0
- package/dist/queue/contracts/RedisQueueDriver.d.ts +37 -0
- package/dist/queue/contracts/RedisQueueDriver.js +1 -0
- package/dist/queue/contracts/index.d.ts +9 -0
- package/dist/queue/contracts/index.js +9 -0
- package/dist/queue/createJob.d.ts +18 -0
- package/dist/queue/createJob.js +52 -0
- package/dist/queue/drivers/DatabaseQueueDriver.d.ts +83 -0
- package/dist/queue/drivers/DatabaseQueueDriver.js +393 -0
- package/dist/queue/drivers/RedisQueueDriver.d.ts +102 -0
- package/dist/queue/drivers/RedisQueueDriver.js +641 -0
- package/dist/queue/index.d.ts +13 -0
- package/dist/queue/index.js +13 -0
- package/dist/queue/queueMonitor.d.ts +133 -0
- package/dist/queue/queueMonitor.js +238 -0
- package/dist/scheduler/ScheduledCall.d.ts +25 -0
- package/dist/scheduler/ScheduledCall.js +31 -0
- package/dist/scheduler/ScheduledEvent.d.ts +74 -0
- package/dist/scheduler/ScheduledEvent.js +115 -0
- package/dist/scheduler/ScheduledJob.d.ts +34 -0
- package/dist/scheduler/ScheduledJob.js +50 -0
- package/dist/scheduler/ScheduledOccurrence.d.ts +74 -0
- package/dist/scheduler/ScheduledOccurrence.js +194 -0
- package/dist/scheduler/ScheduledOccurrenceRecorder.d.ts +34 -0
- package/dist/scheduler/ScheduledOccurrenceRecorder.js +106 -0
- package/dist/scheduler/Scheduler.d.ts +76 -0
- package/dist/scheduler/Scheduler.js +186 -0
- package/dist/scheduler/SchedulerWorker.d.ts +37 -0
- package/dist/scheduler/SchedulerWorker.js +119 -0
- package/dist/scheduler/console.d.ts +18 -0
- package/dist/scheduler/console.js +288 -0
- package/dist/scheduler/constants.d.ts +13 -0
- package/dist/scheduler/constants.js +23 -0
- package/dist/scheduler/contracts/Scheduler.d.ts +104 -0
- package/dist/scheduler/contracts/Scheduler.js +1 -0
- package/dist/scheduler/contracts/SchedulerConsole.d.ts +37 -0
- package/dist/scheduler/contracts/SchedulerConsole.js +1 -0
- package/dist/scheduler/contracts/SchedulerWorker.d.ts +18 -0
- package/dist/scheduler/contracts/SchedulerWorker.js +1 -0
- package/dist/scheduler/contracts/index.d.ts +3 -0
- package/dist/scheduler/contracts/index.js +3 -0
- package/dist/scheduler/index.d.ts +9 -0
- package/dist/scheduler/index.js +9 -0
- package/dist/scheduler/scheduleTime.d.ts +30 -0
- package/dist/scheduler/scheduleTime.js +64 -0
- package/dist/security/Security.d.ts +60 -0
- package/dist/security/Security.js +252 -0
- package/dist/security/SecurityError.d.ts +13 -0
- package/dist/security/SecurityError.js +16 -0
- package/dist/security/contracts/SecurityOptions.d.ts +17 -0
- package/dist/security/contracts/SecurityOptions.js +1 -0
- package/dist/security/contracts/SecurityPayload.d.ts +13 -0
- package/dist/security/contracts/SecurityPayload.js +1 -0
- package/dist/security/contracts/index.d.ts +2 -0
- package/dist/security/contracts/index.js +2 -0
- package/dist/security/ensureAppKey.d.ts +16 -0
- package/dist/security/ensureAppKey.js +69 -0
- package/dist/security/index.d.ts +4 -0
- package/dist/security/index.js +4 -0
- package/dist/serialization/Serializable.d.ts +17 -0
- package/dist/serialization/Serializable.js +1 -0
- package/dist/serialization/SerializationError.d.ts +40 -0
- package/dist/serialization/SerializationError.js +42 -0
- package/dist/serialization/SerializationRegistry.d.ts +76 -0
- package/dist/serialization/SerializationRegistry.js +153 -0
- package/dist/serialization/SerializationRegistryError.d.ts +18 -0
- package/dist/serialization/SerializationRegistryError.js +18 -0
- package/dist/serialization/Serializer.d.ts +37 -0
- package/dist/serialization/Serializer.js +477 -0
- package/dist/serialization/contracts/SerializableClass.d.ts +20 -0
- package/dist/serialization/contracts/SerializableClass.js +1 -0
- package/dist/serialization/contracts/SerializedValue.d.ts +59 -0
- package/dist/serialization/contracts/SerializedValue.js +19 -0
- package/dist/serialization/contracts/SerializerOptions.d.ts +17 -0
- package/dist/serialization/contracts/SerializerOptions.js +1 -0
- package/dist/serialization/contracts/SerializerService.d.ts +26 -0
- package/dist/serialization/contracts/SerializerService.js +1 -0
- package/dist/serialization/contracts/index.d.ts +4 -0
- package/dist/serialization/contracts/index.js +4 -0
- package/dist/serialization/index.d.ts +6 -0
- package/dist/serialization/index.js +6 -0
- package/dist/server/App.d.ts +141 -0
- package/dist/server/App.js +225 -0
- package/dist/server/RequestContext.d.ts +42 -0
- package/dist/server/RequestContext.js +95 -0
- package/dist/server/appContext.d.ts +34 -0
- package/dist/server/appContext.js +42 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +3 -0
- package/dist/ssr/constants.d.ts +6 -0
- package/dist/ssr/constants.js +6 -0
- package/dist/ssr/contracts/DocumentHead.d.ts +32 -0
- package/dist/ssr/contracts/DocumentHead.js +1 -0
- package/dist/ssr/contracts/SsrRenderContext.d.ts +23 -0
- package/dist/ssr/contracts/SsrRenderContext.js +1 -0
- package/dist/ssr/contracts/SsrRenderResult.d.ts +21 -0
- package/dist/ssr/contracts/SsrRenderResult.js +1 -0
- package/dist/ssr/contracts/SsrRenderer.d.ts +9 -0
- package/dist/ssr/contracts/SsrRenderer.js +1 -0
- package/dist/ssr/contracts/SsrRequest.d.ts +16 -0
- package/dist/ssr/contracts/SsrRequest.js +1 -0
- package/dist/ssr/contracts/index.d.ts +5 -0
- package/dist/ssr/contracts/index.js +1 -0
- package/dist/ssr/createSsrRenderContext.d.ts +9 -0
- package/dist/ssr/createSsrRenderContext.js +20 -0
- package/dist/ssr/fastify/contracts/FastifySsrOptions.d.ts +21 -0
- package/dist/ssr/fastify/contracts/FastifySsrOptions.js +1 -0
- package/dist/ssr/fastify/contracts/index.d.ts +1 -0
- package/dist/ssr/fastify/contracts/index.js +1 -0
- package/dist/ssr/fastify/fastifySsr.d.ts +25 -0
- package/dist/ssr/fastify/fastifySsr.js +89 -0
- package/dist/ssr/fastify/index.d.ts +2 -0
- package/dist/ssr/fastify/index.js +1 -0
- package/dist/ssr/index.d.ts +6 -0
- package/dist/ssr/index.js +5 -0
- package/dist/ssr/renderDocumentHead.d.ts +8 -0
- package/dist/ssr/renderDocumentHead.js +62 -0
- package/dist/ssr/renderSsrDocument.d.ts +14 -0
- package/dist/ssr/renderSsrDocument.js +28 -0
- package/dist/ssr/serializeSsrState.d.ts +10 -0
- package/dist/ssr/serializeSsrState.js +18 -0
- package/dist/ssr/vite/contracts/ViteSsrOptions.d.ts +45 -0
- package/dist/ssr/vite/contracts/ViteSsrOptions.js +1 -0
- package/dist/ssr/vite/contracts/index.d.ts +1 -0
- package/dist/ssr/vite/contracts/index.js +1 -0
- package/dist/ssr/vite/fastifyViteSsr.d.ts +24 -0
- package/dist/ssr/vite/fastifyViteSsr.js +213 -0
- package/dist/ssr/vite/index.d.ts +4 -0
- package/dist/ssr/vite/index.js +2 -0
- package/dist/ssr/vite/viteSsrManifest.d.ts +16 -0
- package/dist/ssr/vite/viteSsrManifest.js +63 -0
- package/dist/storage/Storage.d.ts +244 -0
- package/dist/storage/Storage.js +348 -0
- package/dist/storage/contents.d.ts +8 -0
- package/dist/storage/contents.js +18 -0
- package/dist/storage/contracts/StorageListing.d.ts +50 -0
- package/dist/storage/contracts/StorageListing.js +1 -0
- package/dist/storage/contracts/index.d.ts +1 -0
- package/dist/storage/contracts/index.js +1 -0
- package/dist/storage/drivers/FlystorageDisk.d.ts +185 -0
- package/dist/storage/drivers/FlystorageDisk.js +250 -0
- package/dist/storage/drivers/FlystorageListing.d.ts +27 -0
- package/dist/storage/drivers/FlystorageListing.js +69 -0
- package/dist/storage/drivers/LocalStorageDisk.d.ts +25 -0
- package/dist/storage/drivers/LocalStorageDisk.js +38 -0
- package/dist/storage/drivers/S3StorageDisk.d.ts +17 -0
- package/dist/storage/drivers/S3StorageDisk.js +102 -0
- package/dist/storage/drivers/index.d.ts +3 -0
- package/dist/storage/drivers/index.js +3 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.js +7 -0
- package/dist/storage/mime.d.ts +7 -0
- package/dist/storage/mime.js +28 -0
- package/dist/storage/path.d.ts +22 -0
- package/dist/storage/path.js +61 -0
- package/dist/storage/types.d.ts +218 -0
- package/dist/storage/types.js +1 -0
- package/dist/url/UrlGenerator.d.ts +32 -0
- package/dist/url/UrlGenerator.js +61 -0
- package/dist/url/contracts/UrlGeneratorOptions.d.ts +13 -0
- package/dist/url/contracts/UrlGeneratorOptions.js +1 -0
- package/dist/url/contracts/index.d.ts +1 -0
- package/dist/url/contracts/index.js +1 -0
- package/dist/url/index.d.ts +2 -0
- package/dist/url/index.js +2 -0
- package/dist/validation/index.d.ts +28 -0
- package/dist/validation/index.js +260 -0
- package/package.json +290 -0
- package/src/ai/AIErrors.ts +46 -0
- package/src/ai/AIFailover.ts +101 -0
- package/src/ai/AIProviders.ts +228 -0
- package/src/ai/AIQuotaDeferredError.ts +26 -0
- package/src/ai/AIRateLimiter.ts +880 -0
- package/src/ai/Agent.ts +3630 -0
- package/src/ai/AgentHistory.ts +576 -0
- package/src/ai/AgentRunJob.ts +65 -0
- package/src/ai/Ai.ts +2176 -0
- package/src/ai/AiConversation.ts +49 -0
- package/src/ai/AiExecutionContext.ts +19 -0
- package/src/ai/AiMessage.ts +131 -0
- package/src/ai/AiRateLimitBucket.ts +163 -0
- package/src/ai/AiRateLimitReservation.ts +117 -0
- package/src/ai/AiRequest.ts +466 -0
- package/src/ai/Estimates.ts +36 -0
- package/src/ai/Models.ts +373 -0
- package/src/ai/OpenAIProviderError.ts +98 -0
- package/src/ai/OpenAIQuotaRetry.ts +183 -0
- package/src/ai/ProviderCosts.ts +156 -0
- package/src/ai/README.md +187 -0
- package/src/ai/ResponsesProviderCall.ts +34 -0
- package/src/ai/agentCitations.ts +186 -0
- package/src/ai/contracts/AI.ts +380 -0
- package/src/ai/contracts/Agent.ts +539 -0
- package/src/ai/contracts/AiRequestRunCostSummary.ts +31 -0
- package/src/ai/contracts/Pricing.ts +95 -0
- package/src/ai/contracts/Providers.ts +73 -0
- package/src/ai/contracts/QuotaRetry.ts +39 -0
- package/src/ai/contracts/RateLimits.ts +49 -0
- package/src/ai/contracts/ResponsesProviderCall.ts +30 -0
- package/src/ai/contracts/index.ts +8 -0
- package/src/ai/examples/Conversation.ts +12 -0
- package/src/ai/examples/HelpAgent.ts +27 -0
- package/src/ai/examples/createHelpImage.ts +13 -0
- package/src/ai/index.ts +27 -0
- package/src/ai/registry.ts +70 -0
- package/src/ai/sdkNodeCompatibility.d.ts +76 -0
- package/src/ai/toolCallRecovery.ts +82 -0
- package/src/ai/toolHelpers.ts +145 -0
- package/src/auth/Auth.ts +1422 -0
- package/src/auth/AuthProvider.ts +251 -0
- package/src/auth/AuthToken.ts +239 -0
- package/src/auth/PasswordResetToken.ts +93 -0
- package/src/auth/README.md +396 -0
- package/src/auth/UserIdentity.ts +112 -0
- package/src/auth/contracts/AuthProviderDriver.ts +114 -0
- package/src/auth/contracts/index.ts +1 -0
- package/src/auth/examples/runPasswordAuth.ts +45 -0
- package/src/auth/index.ts +8 -0
- package/src/auth/passwordHash.ts +160 -0
- package/src/auth/providers/GoogleAuthProvider.ts +470 -0
- package/src/auth/providers/PasswordAuthProvider.ts +256 -0
- package/src/auth/providers/index.ts +3 -0
- package/src/auth/providers/resolveAuthProviders.ts +166 -0
- package/src/cache/Cache.ts +151 -0
- package/src/cache/README.md +137 -0
- package/src/cache/contracts/CacheDriver.ts +11 -0
- package/src/cache/contracts/CacheOperations.ts +28 -0
- package/src/cache/contracts/CacheOptions.ts +56 -0
- package/src/cache/contracts/CacheRepository.ts +62 -0
- package/src/cache/contracts/index.ts +4 -0
- package/src/cache/drivers/CacheManagerDriver.ts +84 -0
- package/src/cache/drivers/createCacheDriver.ts +191 -0
- package/src/cache/examples/runNoteCache.ts +37 -0
- package/src/cache/index.ts +2 -0
- package/src/cli/Cli.ts +110 -0
- package/src/cli/README.md +164 -0
- package/src/cli/commands/repl.ts +29 -0
- package/src/cli/contracts/CliCommand.ts +33 -0
- package/src/cli/contracts/CliConfig.ts +10 -0
- package/src/cli/contracts/CliOptions.ts +13 -0
- package/src/cli/contracts/CommandDefinition.ts +19 -0
- package/src/cli/contracts/ReplOptions.ts +11 -0
- package/src/cli/contracts/index.ts +5 -0
- package/src/cli/defineCommand.ts +25 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/runDb3.ts +63 -0
- package/src/cli/runRepl.ts +55 -0
- package/src/config/Config.ts +110 -0
- package/src/config/README.md +142 -0
- package/src/config/env.ts +164 -0
- package/src/config/examples/loadNotesConfig.ts +29 -0
- package/src/config/examples/runConfig.ts +40 -0
- package/src/config/index.ts +2 -0
- package/src/db/ActiveProjection.ts +311 -0
- package/src/db/ActiveQueryBuilder.ts +831 -0
- package/src/db/ActiveRecord.ts +1317 -0
- package/src/db/Database.ts +1283 -0
- package/src/db/FieldType.ts +1243 -0
- package/src/db/README.md +508 -0
- package/src/db/SoftDeletes.ts +158 -0
- package/src/db/commands/check.ts +10 -0
- package/src/db/commands/index.ts +19 -0
- package/src/db/commands/makeMigration.ts +11 -0
- package/src/db/commands/migrate.ts +10 -0
- package/src/db/connection.ts +68 -0
- package/src/db/contracts/ActiveRecordDefinition.ts +69 -0
- package/src/db/contracts/DatabaseBackup.ts +7 -0
- package/src/db/contracts/DatabaseMigrationsConfig.ts +10 -0
- package/src/db/contracts/index.ts +3 -0
- package/src/db/dialects/columnTypes.ts +103 -0
- package/src/db/dialects/index.ts +6 -0
- package/src/db/dialects/mariadb.ts +51 -0
- package/src/db/dialects/mysql.ts +277 -0
- package/src/db/dialects/postgres.ts +143 -0
- package/src/db/dialects/resolveDialect.ts +88 -0
- package/src/db/dialects/types.ts +59 -0
- package/src/db/errors.ts +22 -0
- package/src/db/examples/DefinedUser.ts +20 -0
- package/src/db/examples/FieldNote.ts +27 -0
- package/src/db/examples/KnowledgeNote.ts +29 -0
- package/src/db/examples/NoteCodeField.ts +9 -0
- package/src/db/examples/createNotesTogether.ts +24 -0
- package/src/db/examples/outputs/workspace-notes.json +9 -0
- package/src/db/examples/runFieldNotes.ts +51 -0
- package/src/db/examples/runNoteMigrations.ts +64 -0
- package/src/db/examples/runWorkspaceNotes.ts +86 -0
- package/src/db/examples/workspaceNotes.ts +57 -0
- package/src/db/fields/BooleanField.ts +128 -0
- package/src/db/fields/CharUuidField.ts +91 -0
- package/src/db/fields/ChoiceStringField.ts +97 -0
- package/src/db/fields/DecimalField.ts +157 -0
- package/src/db/fields/EmailField.ts +79 -0
- package/src/db/fields/EncryptedJsonField.ts +211 -0
- package/src/db/fields/IntegerField.ts +200 -0
- package/src/db/fields/JsonField.ts +108 -0
- package/src/db/fields/JsonStringField.ts +63 -0
- package/src/db/fields/LinkField.ts +502 -0
- package/src/db/fields/PasswordField.ts +294 -0
- package/src/db/fields/StringField.ts +154 -0
- package/src/db/fields/StringListField.ts +179 -0
- package/src/db/fields/TextField.ts +71 -0
- package/src/db/fields/TimestampField.ts +164 -0
- package/src/db/fields/UlidField.ts +189 -0
- package/src/db/fields/UrlField.ts +97 -0
- package/src/db/fields/VectorField.ts +266 -0
- package/src/db/fields/createField.ts +22 -0
- package/src/db/fields/field.ts +209 -0
- package/src/db/fields/index.ts +76 -0
- package/src/db/fields/resolveFields.ts +69 -0
- package/src/db/index.ts +13 -0
- package/src/db/migrations/DatabaseMigrationManager.ts +756 -0
- package/src/db/migrations/DatabaseSchemaInspector.ts +541 -0
- package/src/db/migrations/KnexMigrationRenderer.ts +490 -0
- package/src/db/migrations/ModelSchemaCollector.ts +240 -0
- package/src/db/migrations/SchemaDiffer.ts +541 -0
- package/src/db/migrations/SchemaNames.ts +62 -0
- package/src/db/migrations/SchemaSnapshotSerializer.ts +59 -0
- package/src/db/migrations/contracts/DatabaseMigration.ts +143 -0
- package/src/db/migrations/contracts/SchemaChange.ts +113 -0
- package/src/db/migrations/contracts/SchemaSnapshot.ts +122 -0
- package/src/db/migrations/contracts/index.ts +3 -0
- package/src/db/migrations/errors.ts +45 -0
- package/src/db/migrations/index.ts +10 -0
- package/src/db/migrations/promoteDestructiveSchemaChanges.ts +120 -0
- package/src/db/queryMonitor.ts +549 -0
- package/src/db/sqlErrors.ts +36 -0
- package/src/db/test/db.ts +159 -0
- package/src/devtools/HttpEventDispatcher.ts +214 -0
- package/src/devtools/contracts/DevtoolsEventDispatcher.ts +57 -0
- package/src/devtools/contracts/index.ts +1 -0
- package/src/devtools/environment.ts +18 -0
- package/src/devtools/index.ts +3 -0
- package/src/events/Events.ts +165 -0
- package/src/events/README.md +106 -0
- package/src/events/contracts/EventConstructor.ts +12 -0
- package/src/events/contracts/EventListener.ts +8 -0
- package/src/events/contracts/EventUnsubscribe.ts +4 -0
- package/src/events/contracts/index.ts +3 -0
- package/src/events/examples/NoteSaved.ts +9 -0
- package/src/events/examples/runNoteEvents.ts +31 -0
- package/src/events/index.ts +2 -0
- package/src/flows/FlowBlockRegistry.ts +79 -0
- package/src/flows/FlowCompiler.ts +624 -0
- package/src/flows/FlowDefinitionError.ts +24 -0
- package/src/flows/FlowStepJob.ts +54 -0
- package/src/flows/FlowValueValidator.ts +120 -0
- package/src/flows/Flows.ts +1118 -0
- package/src/flows/README.md +144 -0
- package/src/flows/blocks/FlowInput.ts +32 -0
- package/src/flows/blocks/FlowOutput.ts +32 -0
- package/src/flows/blocks/Subflow.ts +24 -0
- package/src/flows/blocks/index.ts +11 -0
- package/src/flows/constants.ts +62 -0
- package/src/flows/contracts/FlowBlock.ts +73 -0
- package/src/flows/contracts/FlowCompiler.ts +32 -0
- package/src/flows/contracts/FlowDefinition.ts +126 -0
- package/src/flows/contracts/FlowDefinitionStore.ts +52 -0
- package/src/flows/contracts/FlowRun.ts +44 -0
- package/src/flows/contracts/FlowValue.ts +54 -0
- package/src/flows/contracts/FlowsService.ts +39 -0
- package/src/flows/contracts/index.ts +7 -0
- package/src/flows/defineBlock.ts +25 -0
- package/src/flows/drivers/FileFlowDefinitionStore.ts +372 -0
- package/src/flows/drivers/index.ts +1 -0
- package/src/flows/errors.ts +22 -0
- package/src/flows/examples/FlowExampleApp.ts +15 -0
- package/src/flows/examples/createTextFlow.ts +14 -0
- package/src/flows/examples/normalizeTextBlock.ts +15 -0
- package/src/flows/examples/runTextFlow.ts +46 -0
- package/src/flows/examples/uppercaseTextBlock.ts +11 -0
- package/src/flows/index.ts +13 -0
- package/src/flows/models/FlowRun.ts +164 -0
- package/src/flows/models/FlowRunEvent.ts +108 -0
- package/src/flows/models/FlowStepRun.ts +176 -0
- package/src/flows/models/index.ts +16 -0
- package/src/index.ts +40 -0
- package/src/logging/Log.ts +100 -0
- package/src/logging/README.md +139 -0
- package/src/logging/contracts/HttpExchange.ts +53 -0
- package/src/logging/contracts/Logger.ts +45 -0
- package/src/logging/contracts/LoggerDriver.ts +19 -0
- package/src/logging/contracts/LoggingOptions.ts +51 -0
- package/src/logging/contracts/index.ts +4 -0
- package/src/logging/drivers/PinoLoggerDriver.ts +376 -0
- package/src/logging/drivers/index.ts +1 -0
- package/src/logging/examples/runNoteLogs.ts +38 -0
- package/src/logging/index.ts +3 -0
- package/src/logging/transports/DevtoolsLogTransport.ts +142 -0
- package/src/mail/Mail.ts +188 -0
- package/src/mail/README.md +206 -0
- package/src/mail/examples/runMailPreview.ts +44 -0
- package/src/mail/examples/welcomeMessage.ts +26 -0
- package/src/mail/index.ts +4 -0
- package/src/mail/transports/FileMailTransport.ts +58 -0
- package/src/mail/transports/MailgunTransport.ts +85 -0
- package/src/mail/transports/ResendTransport.ts +80 -0
- package/src/media/MediaFile.ts +132 -0
- package/src/media/MediaItem.ts +132 -0
- package/src/media/MediaLibrary.ts +117 -0
- package/src/media/MediaManager.ts +874 -0
- package/src/media/README.md +358 -0
- package/src/media/constants.ts +31 -0
- package/src/media/contracts/MediaOptions.ts +9 -0
- package/src/media/contracts/index.ts +1 -0
- package/src/media/examples/createPrivateFileServer.ts +55 -0
- package/src/media/examples/runPrivateFiles.ts +45 -0
- package/src/media/examples/runProjectMedia.ts +46 -0
- package/src/media/image/ImageReconstructionError.ts +18 -0
- package/src/media/image/ImageVariantRenderer.ts +386 -0
- package/src/media/image/ImageVariantRequest.ts +65 -0
- package/src/media/image/contracts/ImageProcessor.ts +53 -0
- package/src/media/image/contracts/ImageVariant.ts +37 -0
- package/src/media/image/contracts/ImageVariantCacheOptions.ts +21 -0
- package/src/media/image/contracts/index.ts +3 -0
- package/src/media/image/index.ts +5 -0
- package/src/media/image/processors/SharpImageProcessor.ts +121 -0
- package/src/media/image/processors/index.ts +1 -0
- package/src/media/index.ts +8 -0
- package/src/media/types.ts +168 -0
- package/src/queue/FailedJob.ts +58 -0
- package/src/queue/Queue.ts +938 -0
- package/src/queue/QueueEvents.ts +57 -0
- package/src/queue/QueueRetryLaterError.ts +40 -0
- package/src/queue/QueueWorker.ts +296 -0
- package/src/queue/QueueableJob.ts +167 -0
- package/src/queue/QueuedJob.ts +69 -0
- package/src/queue/README.md +368 -0
- package/src/queue/RetryPolicy.ts +129 -0
- package/src/queue/commands/index.ts +13 -0
- package/src/queue/commands/makeJob.ts +11 -0
- package/src/queue/console.ts +518 -0
- package/src/queue/contracts/CreateJob.ts +13 -0
- package/src/queue/contracts/QueueDriver.ts +135 -0
- package/src/queue/contracts/QueueEvents.ts +77 -0
- package/src/queue/contracts/QueuePayload.ts +150 -0
- package/src/queue/contracts/QueueRetry.ts +47 -0
- package/src/queue/contracts/QueueService.ts +219 -0
- package/src/queue/contracts/QueueWorkerLifecycle.ts +71 -0
- package/src/queue/contracts/QueueableJob.ts +56 -0
- package/src/queue/contracts/RedisQueueDriver.ts +37 -0
- package/src/queue/contracts/index.ts +9 -0
- package/src/queue/createJob.ts +54 -0
- package/src/queue/drivers/DatabaseQueueDriver.ts +449 -0
- package/src/queue/drivers/RedisQueueDriver.ts +733 -0
- package/src/queue/examples/DeferredReportJob.ts +25 -0
- package/src/queue/examples/GenerateReportJob.ts +37 -0
- package/src/queue/examples/WriteReportJob.ts +37 -0
- package/src/queue/examples/createAndProcessReportJob.ts +29 -0
- package/src/queue/examples/dispatchReportWorkflows.ts +40 -0
- package/src/queue/examples/manageReportRetries.ts +47 -0
- package/src/queue/examples/outputs/create-and-process-report-job.json +6 -0
- package/src/queue/examples/outputs/dispatch-report-workflows.json +14 -0
- package/src/queue/examples/outputs/manage-report-retries.json +24 -0
- package/src/queue/examples/outputs/queue-reports.json +11 -0
- package/src/queue/examples/reportConsole.ts +47 -0
- package/src/queue/examples/runBackpressure.ts +27 -0
- package/src/queue/examples/runQueueReports.ts +80 -0
- package/src/queue/examples/runQueueWorkflows.ts +43 -0
- package/src/queue/index.ts +13 -0
- package/src/queue/queueMonitor.ts +368 -0
- package/src/scheduler/README.md +139 -0
- package/src/scheduler/ScheduledCall.ts +36 -0
- package/src/scheduler/ScheduledEvent.ts +149 -0
- package/src/scheduler/ScheduledJob.ts +58 -0
- package/src/scheduler/ScheduledOccurrence.ts +250 -0
- package/src/scheduler/ScheduledOccurrenceRecorder.ts +125 -0
- package/src/scheduler/Scheduler.ts +225 -0
- package/src/scheduler/SchedulerWorker.ts +151 -0
- package/src/scheduler/console.ts +368 -0
- package/src/scheduler/constants.ts +27 -0
- package/src/scheduler/contracts/Scheduler.ts +123 -0
- package/src/scheduler/contracts/SchedulerConsole.ts +40 -0
- package/src/scheduler/contracts/SchedulerWorker.ts +23 -0
- package/src/scheduler/contracts/index.ts +3 -0
- package/src/scheduler/examples/RecoverableSummaryJob.ts +18 -0
- package/src/scheduler/examples/WriteDailySummaryJob.ts +17 -0
- package/src/scheduler/examples/registerDailySummary.ts +13 -0
- package/src/scheduler/examples/runDailySummary.ts +46 -0
- package/src/scheduler/examples/runScheduledReplay.ts +60 -0
- package/src/scheduler/index.ts +9 -0
- package/src/scheduler/scheduleTime.ts +78 -0
- package/src/security/README.md +130 -0
- package/src/security/Security.ts +346 -0
- package/src/security/SecurityError.ts +16 -0
- package/src/security/contracts/SecurityOptions.ts +20 -0
- package/src/security/contracts/SecurityPayload.ts +14 -0
- package/src/security/contracts/index.ts +2 -0
- package/src/security/ensureAppKey.ts +82 -0
- package/src/security/examples/runSecretRoundTrip.ts +42 -0
- package/src/security/index.ts +4 -0
- package/src/serialization/README.md +169 -0
- package/src/serialization/Serializable.ts +17 -0
- package/src/serialization/SerializationError.ts +91 -0
- package/src/serialization/SerializationRegistry.ts +208 -0
- package/src/serialization/SerializationRegistryError.ts +24 -0
- package/src/serialization/Serializer.ts +793 -0
- package/src/serialization/contracts/SerializableClass.ts +26 -0
- package/src/serialization/contracts/SerializedValue.ts +71 -0
- package/src/serialization/contracts/SerializerOptions.ts +19 -0
- package/src/serialization/contracts/SerializerService.ts +29 -0
- package/src/serialization/contracts/index.ts +4 -0
- package/src/serialization/examples/ExportRequest.ts +25 -0
- package/src/serialization/examples/runExportSerialization.ts +24 -0
- package/src/serialization/index.ts +6 -0
- package/src/server/App.ts +326 -0
- package/src/server/README.md +219 -0
- package/src/server/RequestContext.ts +122 -0
- package/src/server/appContext.ts +59 -0
- package/src/server/examples/createFirstServer.ts +25 -0
- package/src/server/examples/startFirstServer.ts +19 -0
- package/src/server/index.ts +16 -0
- package/src/ssr/README.md +158 -0
- package/src/ssr/constants.ts +8 -0
- package/src/ssr/contracts/DocumentHead.ts +35 -0
- package/src/ssr/contracts/SsrRenderContext.ts +25 -0
- package/src/ssr/contracts/SsrRenderResult.ts +23 -0
- package/src/ssr/contracts/SsrRenderer.ts +12 -0
- package/src/ssr/contracts/SsrRequest.ts +17 -0
- package/src/ssr/contracts/index.ts +19 -0
- package/src/ssr/createSsrRenderContext.ts +25 -0
- package/src/ssr/examples/createPublicPageServer.ts +32 -0
- package/src/ssr/examples/runPublicPages.ts +25 -0
- package/src/ssr/fastify/contracts/FastifySsrOptions.ts +24 -0
- package/src/ssr/fastify/contracts/index.ts +5 -0
- package/src/ssr/fastify/fastifySsr.ts +110 -0
- package/src/ssr/fastify/index.ts +2 -0
- package/src/ssr/index.ts +10 -0
- package/src/ssr/renderDocumentHead.ts +72 -0
- package/src/ssr/renderSsrDocument.ts +35 -0
- package/src/ssr/serializeSsrState.ts +19 -0
- package/src/ssr/vite/contracts/ViteSsrOptions.ts +52 -0
- package/src/ssr/vite/contracts/index.ts +6 -0
- package/src/ssr/vite/fastifyViteSsr.ts +279 -0
- package/src/ssr/vite/index.ts +4 -0
- package/src/ssr/vite/viteSsrManifest.ts +92 -0
- package/src/storage/README.md +310 -0
- package/src/storage/Storage.ts +392 -0
- package/src/storage/contents.ts +23 -0
- package/src/storage/contracts/StorageListing.ts +55 -0
- package/src/storage/contracts/index.ts +1 -0
- package/src/storage/drivers/FlystorageDisk.ts +295 -0
- package/src/storage/drivers/FlystorageListing.ts +78 -0
- package/src/storage/drivers/LocalStorageDisk.ts +45 -0
- package/src/storage/drivers/S3StorageDisk.ts +114 -0
- package/src/storage/drivers/index.ts +3 -0
- package/src/storage/examples/runStorage.ts +37 -0
- package/src/storage/examples/runStreamExport.ts +41 -0
- package/src/storage/examples/writeCsvExport.ts +45 -0
- package/src/storage/index.ts +7 -0
- package/src/storage/mime.ts +30 -0
- package/src/storage/path.ts +76 -0
- package/src/storage/types.ts +251 -0
- package/src/url/README.md +41 -0
- package/src/url/UrlGenerator.ts +72 -0
- package/src/url/contracts/UrlGeneratorOptions.ts +14 -0
- package/src/url/contracts/index.ts +1 -0
- package/src/url/examples/runApplicationLinks.ts +33 -0
- package/src/url/index.ts +2 -0
- package/src/validation/README.md +433 -0
- package/src/validation/examples/runNoteValidation.ts +18 -0
- package/src/validation/examples/validateNoteInput.ts +31 -0
- package/src/validation/index.ts +398 -0
- package/templates/AGENTS.md +15 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
/** Durable conversation that applications may extend with ownership and domain fields. */
|
|
3
|
+
export declare class AiConversation extends ActiveRecord {
|
|
4
|
+
static table: string;
|
|
5
|
+
static primaryKey: string;
|
|
6
|
+
static comment: string;
|
|
7
|
+
/** Defines conversation identity, optional ownership and metadata. */
|
|
8
|
+
static fields(field: FieldBuilder): ReturnType<typeof ActiveRecord.fields>;
|
|
9
|
+
id: string | null;
|
|
10
|
+
user: unknown;
|
|
11
|
+
scope: unknown;
|
|
12
|
+
agent: string | null;
|
|
13
|
+
title: string | null;
|
|
14
|
+
metadata: Record<string, unknown> | null;
|
|
15
|
+
createdAt: Date | null;
|
|
16
|
+
updatedAt: Date | null;
|
|
17
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ActiveRecord } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
/** Durable conversation that applications may extend with ownership and domain fields. */
|
|
3
|
+
export class AiConversation extends ActiveRecord {
|
|
4
|
+
static table = 'ai_conversations';
|
|
5
|
+
static primaryKey = 'id';
|
|
6
|
+
static comment = 'Groups AI messages and provider requests into one app-level conversation or generated workflow run.';
|
|
7
|
+
/** Defines conversation identity, optional ownership and metadata. */
|
|
8
|
+
static fields(field) {
|
|
9
|
+
return {
|
|
10
|
+
id: field.ulid({
|
|
11
|
+
comment: 'Stable id for this AI conversation.',
|
|
12
|
+
}),
|
|
13
|
+
user: field.string({ column: 'user_id', index: true, comment: 'Application user identifier, when available.' }),
|
|
14
|
+
scope: field.string({ column: 'scope_id', index: true, comment: 'Application-owned scope identifier, such as a team or project.' }),
|
|
15
|
+
agent: field.string({
|
|
16
|
+
required: false,
|
|
17
|
+
index: true,
|
|
18
|
+
comment: 'Local agent or feature name that created this conversation.',
|
|
19
|
+
}),
|
|
20
|
+
title: field.string({
|
|
21
|
+
required: false,
|
|
22
|
+
comment: 'Short human-readable title for debugging or future UI display.',
|
|
23
|
+
}),
|
|
24
|
+
metadata: field.jsonString({
|
|
25
|
+
required: false,
|
|
26
|
+
comment: 'Structured application metadata for this AI conversation.',
|
|
27
|
+
}),
|
|
28
|
+
createdAt: field.timestamp({
|
|
29
|
+
column: 'created_at',
|
|
30
|
+
auto: 'create',
|
|
31
|
+
}),
|
|
32
|
+
updatedAt: field.timestamp({
|
|
33
|
+
column: 'updated_at',
|
|
34
|
+
auto: 'update',
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import type { AgentPersistenceState } from './contracts/Agent.js';
|
|
3
|
+
import type { AIResponseLogOptions } from './contracts/AI.js';
|
|
4
|
+
/** Request-local parentage for provider calls made by tools or nested agents. */
|
|
5
|
+
export declare const aiExecutionContext: AsyncLocalStorage<AgentPersistenceState>;
|
|
6
|
+
/** Inherits the active attempt without allowing nested work to create a second root debit. */
|
|
7
|
+
export declare function scopedAiOptions<T extends AIResponseLogOptions>(options: T, scopeField: string): T;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
/** Request-local parentage for provider calls made by tools or nested agents. */
|
|
3
|
+
export const aiExecutionContext = new AsyncLocalStorage();
|
|
4
|
+
/** Inherits the active attempt without allowing nested work to create a second root debit. */
|
|
5
|
+
export function scopedAiOptions(options, scopeField) {
|
|
6
|
+
const state = aiExecutionContext.getStore();
|
|
7
|
+
if (!state)
|
|
8
|
+
return options;
|
|
9
|
+
return {
|
|
10
|
+
conversation: state.conversation,
|
|
11
|
+
parentAiRequest: state.aiRequest,
|
|
12
|
+
user: state.aiRequest.user,
|
|
13
|
+
[scopeField]: state.aiRequest[scopeField],
|
|
14
|
+
...options,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
import type { EntityRef } from '@db3.ai/app/db/fields/LinkField';
|
|
3
|
+
import { AiConversation } from './AiConversation.js';
|
|
4
|
+
import { AiRequest } from './AiRequest.js';
|
|
5
|
+
export declare const AI_MESSAGE_ROLE: {
|
|
6
|
+
readonly system: "system";
|
|
7
|
+
readonly user: "user";
|
|
8
|
+
readonly assistant: "assistant";
|
|
9
|
+
readonly tool: "tool";
|
|
10
|
+
};
|
|
11
|
+
export declare const AI_MESSAGE_TOOL_STATE: {
|
|
12
|
+
readonly calling: "calling";
|
|
13
|
+
readonly success: "success";
|
|
14
|
+
readonly error: "error";
|
|
15
|
+
};
|
|
16
|
+
export type AiMessageRole = typeof AI_MESSAGE_ROLE[keyof typeof AI_MESSAGE_ROLE];
|
|
17
|
+
export type AiMessageToolState = typeof AI_MESSAGE_TOOL_STATE[keyof typeof AI_MESSAGE_TOOL_STATE];
|
|
18
|
+
export declare class AiMessage extends ActiveRecord {
|
|
19
|
+
static table: string;
|
|
20
|
+
static primaryKey: string;
|
|
21
|
+
static comment: string;
|
|
22
|
+
/**
|
|
23
|
+
* Defines the persisted message fields used by tracked AI conversations and tool calls.
|
|
24
|
+
*/
|
|
25
|
+
static fields(field: FieldBuilder): ReturnType<typeof ActiveRecord.fields>;
|
|
26
|
+
id: string | null;
|
|
27
|
+
conversation: EntityRef<AiConversation> | null;
|
|
28
|
+
aiRequest: EntityRef<AiRequest> | null;
|
|
29
|
+
user: unknown;
|
|
30
|
+
scope: unknown;
|
|
31
|
+
role: AiMessageRole | null;
|
|
32
|
+
sequence: number | null;
|
|
33
|
+
content: string | null;
|
|
34
|
+
contentJson: unknown | null;
|
|
35
|
+
toolCallId: string | null;
|
|
36
|
+
toolName: string | null;
|
|
37
|
+
toolState: AiMessageToolState | null;
|
|
38
|
+
provider: string | null;
|
|
39
|
+
model: string | null;
|
|
40
|
+
metadata: Record<string, unknown> | null;
|
|
41
|
+
createdAt: Date | null;
|
|
42
|
+
updatedAt: Date | null;
|
|
43
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ActiveRecord } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
import { AiConversation } from './AiConversation.js';
|
|
3
|
+
import { AiRequest } from './AiRequest.js';
|
|
4
|
+
export const AI_MESSAGE_ROLE = {
|
|
5
|
+
system: 'system',
|
|
6
|
+
user: 'user',
|
|
7
|
+
assistant: 'assistant',
|
|
8
|
+
tool: 'tool',
|
|
9
|
+
};
|
|
10
|
+
export const AI_MESSAGE_TOOL_STATE = {
|
|
11
|
+
calling: 'calling',
|
|
12
|
+
success: 'success',
|
|
13
|
+
error: 'error',
|
|
14
|
+
};
|
|
15
|
+
export class AiMessage extends ActiveRecord {
|
|
16
|
+
static table = 'ai_messages';
|
|
17
|
+
static primaryKey = 'id';
|
|
18
|
+
static comment = 'Normalized AI conversation messages for prompts, assistant output, and tool messages.';
|
|
19
|
+
/**
|
|
20
|
+
* Defines the persisted message fields used by tracked AI conversations and tool calls.
|
|
21
|
+
*/
|
|
22
|
+
static fields(field) {
|
|
23
|
+
return {
|
|
24
|
+
id: field.ulid({
|
|
25
|
+
comment: 'Stable id for this AI message.',
|
|
26
|
+
}),
|
|
27
|
+
conversation: field.link(() => AiConversation, {
|
|
28
|
+
column: 'conversation_id',
|
|
29
|
+
required: true,
|
|
30
|
+
onDelete: 'CASCADE',
|
|
31
|
+
index: true,
|
|
32
|
+
comment: 'Conversation this message belongs to.',
|
|
33
|
+
}),
|
|
34
|
+
aiRequest: field.link(() => AiRequest, {
|
|
35
|
+
column: 'ai_request_id',
|
|
36
|
+
required: false,
|
|
37
|
+
onDelete: 'SET NULL',
|
|
38
|
+
index: true,
|
|
39
|
+
comment: 'Provider request that produced or used this message, when available.',
|
|
40
|
+
}),
|
|
41
|
+
user: field.string({ column: 'user_id', index: true, comment: 'Application user identifier, when available.' }),
|
|
42
|
+
scope: field.string({ column: 'scope_id', index: true, comment: 'Application-owned scope identifier, such as a team or project.' }),
|
|
43
|
+
role: field.choice({
|
|
44
|
+
required: true,
|
|
45
|
+
choices: Object.values(AI_MESSAGE_ROLE),
|
|
46
|
+
comment: 'Message role in the AI conversation.',
|
|
47
|
+
}),
|
|
48
|
+
sequence: field.integer({
|
|
49
|
+
required: true,
|
|
50
|
+
unsigned: true,
|
|
51
|
+
comment: 'Monotonic message order within the conversation.',
|
|
52
|
+
}),
|
|
53
|
+
content: field.text({
|
|
54
|
+
required: false,
|
|
55
|
+
comment: 'Text content for this AI message.',
|
|
56
|
+
}),
|
|
57
|
+
contentJson: field.json({
|
|
58
|
+
column: 'content_json',
|
|
59
|
+
required: false,
|
|
60
|
+
comment: 'Structured content for this AI message, when the response is not plain text.',
|
|
61
|
+
}),
|
|
62
|
+
toolCallId: field.string({
|
|
63
|
+
column: 'tool_call_id',
|
|
64
|
+
required: false,
|
|
65
|
+
index: true,
|
|
66
|
+
comment: 'Provider or SDK call id for a tool invocation represented by this message.',
|
|
67
|
+
}),
|
|
68
|
+
toolName: field.string({
|
|
69
|
+
column: 'tool_name',
|
|
70
|
+
required: false,
|
|
71
|
+
index: true,
|
|
72
|
+
comment: 'Tool name for tool-call messages.',
|
|
73
|
+
}),
|
|
74
|
+
toolState: field.choice({
|
|
75
|
+
column: 'tool_state',
|
|
76
|
+
required: false,
|
|
77
|
+
choices: Object.values(AI_MESSAGE_TOOL_STATE),
|
|
78
|
+
index: true,
|
|
79
|
+
comment: 'Execution state for a tool-call message.',
|
|
80
|
+
}),
|
|
81
|
+
provider: field.string({
|
|
82
|
+
required: false,
|
|
83
|
+
index: true,
|
|
84
|
+
comment: 'AI provider associated with this message.',
|
|
85
|
+
}),
|
|
86
|
+
model: field.string({
|
|
87
|
+
required: false,
|
|
88
|
+
index: true,
|
|
89
|
+
comment: 'AI model associated with this message.',
|
|
90
|
+
}),
|
|
91
|
+
metadata: field.json({
|
|
92
|
+
required: false,
|
|
93
|
+
comment: 'Structured application metadata for this message.',
|
|
94
|
+
}),
|
|
95
|
+
createdAt: field.timestamp({
|
|
96
|
+
column: 'created_at',
|
|
97
|
+
auto: 'create',
|
|
98
|
+
}),
|
|
99
|
+
updatedAt: field.timestamp({
|
|
100
|
+
column: 'updated_at',
|
|
101
|
+
auto: 'update',
|
|
102
|
+
}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
export declare const AI_RATE_LIMIT_ENDPOINT: {
|
|
3
|
+
readonly responses: "responses";
|
|
4
|
+
readonly embeddings: "embeddings";
|
|
5
|
+
readonly images: "images";
|
|
6
|
+
};
|
|
7
|
+
export type AiRateLimitEndpoint = typeof AI_RATE_LIMIT_ENDPOINT[keyof typeof AI_RATE_LIMIT_ENDPOINT];
|
|
8
|
+
/**
|
|
9
|
+
* Current OpenAI rate-limit state for one provider endpoint/model bucket.
|
|
10
|
+
*
|
|
11
|
+
* Buckets are intentionally current-state rows, not historical usage rows. The
|
|
12
|
+
* latest OpenAI response headers replace the request/token counters on this
|
|
13
|
+
* model, while individual `ai_requests` keep the per-request audit snapshots.
|
|
14
|
+
*
|
|
15
|
+
* Keep bucket identity aligned to provider limits: provider + endpoint family +
|
|
16
|
+
* model/shared limit key. Responses, Embeddings, and Images have different
|
|
17
|
+
* OpenAI limits, so they must have different bucket keys even when the app
|
|
18
|
+
* operation looks related. Do not split buckets by app operation unless the
|
|
19
|
+
* provider exposes a separate limit for that operation.
|
|
20
|
+
*
|
|
21
|
+
* Active reservations are subtracted from these remaining counts before a worker
|
|
22
|
+
* starts another provider call. This lets multiple queue workers share one
|
|
23
|
+
* current bucket without racing past the observed provider capacity.
|
|
24
|
+
*/
|
|
25
|
+
export declare class AiRateLimitBucket extends ActiveRecord {
|
|
26
|
+
static table: string;
|
|
27
|
+
static primaryKey: string;
|
|
28
|
+
static comment: string;
|
|
29
|
+
static fields(field: FieldBuilder): {
|
|
30
|
+
id: import("../db/index.js").UlidField;
|
|
31
|
+
bucketKey: import("../db/index.js").StringField;
|
|
32
|
+
provider: import("../db/index.js").StringField;
|
|
33
|
+
endpoint: import("../db/index.js").ChoiceStringField;
|
|
34
|
+
limitKey: import("../db/index.js").StringField;
|
|
35
|
+
limitRequests: import("../db/index.js").IntegerField;
|
|
36
|
+
remainingRequests: import("../db/index.js").IntegerField;
|
|
37
|
+
requestsResetAt: import("../db/index.js").TimestampField;
|
|
38
|
+
limitTokens: import("../db/index.js").IntegerField;
|
|
39
|
+
remainingTokens: import("../db/index.js").IntegerField;
|
|
40
|
+
tokensResetAt: import("../db/index.js").TimestampField;
|
|
41
|
+
limitProjectTokens: import("../db/index.js").IntegerField;
|
|
42
|
+
remainingProjectTokens: import("../db/index.js").IntegerField;
|
|
43
|
+
projectTokensResetAt: import("../db/index.js").TimestampField;
|
|
44
|
+
lastProviderRequestId: import("../db/index.js").StringField;
|
|
45
|
+
lastObservedAt: import("../db/index.js").TimestampField;
|
|
46
|
+
metadata: import("../db/index.js").JsonStringField<Record<string, unknown>>;
|
|
47
|
+
createdAt: import("../db/index.js").TimestampField;
|
|
48
|
+
updatedAt: import("../db/index.js").TimestampField;
|
|
49
|
+
};
|
|
50
|
+
id: string | null;
|
|
51
|
+
bucketKey: string | null;
|
|
52
|
+
provider: string | null;
|
|
53
|
+
endpoint: AiRateLimitEndpoint | null;
|
|
54
|
+
limitKey: string | null;
|
|
55
|
+
limitRequests: number | null;
|
|
56
|
+
remainingRequests: number | null;
|
|
57
|
+
requestsResetAt: Date | null;
|
|
58
|
+
limitTokens: number | null;
|
|
59
|
+
remainingTokens: number | null;
|
|
60
|
+
tokensResetAt: Date | null;
|
|
61
|
+
limitProjectTokens: number | null;
|
|
62
|
+
remainingProjectTokens: number | null;
|
|
63
|
+
projectTokensResetAt: Date | null;
|
|
64
|
+
lastProviderRequestId: string | null;
|
|
65
|
+
lastObservedAt: Date | null;
|
|
66
|
+
metadata: Record<string, unknown> | null;
|
|
67
|
+
createdAt: Date | null;
|
|
68
|
+
updatedAt: Date | null;
|
|
69
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { ActiveRecord } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
export const AI_RATE_LIMIT_ENDPOINT = {
|
|
3
|
+
responses: 'responses',
|
|
4
|
+
embeddings: 'embeddings',
|
|
5
|
+
images: 'images',
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Current OpenAI rate-limit state for one provider endpoint/model bucket.
|
|
9
|
+
*
|
|
10
|
+
* Buckets are intentionally current-state rows, not historical usage rows. The
|
|
11
|
+
* latest OpenAI response headers replace the request/token counters on this
|
|
12
|
+
* model, while individual `ai_requests` keep the per-request audit snapshots.
|
|
13
|
+
*
|
|
14
|
+
* Keep bucket identity aligned to provider limits: provider + endpoint family +
|
|
15
|
+
* model/shared limit key. Responses, Embeddings, and Images have different
|
|
16
|
+
* OpenAI limits, so they must have different bucket keys even when the app
|
|
17
|
+
* operation looks related. Do not split buckets by app operation unless the
|
|
18
|
+
* provider exposes a separate limit for that operation.
|
|
19
|
+
*
|
|
20
|
+
* Active reservations are subtracted from these remaining counts before a worker
|
|
21
|
+
* starts another provider call. This lets multiple queue workers share one
|
|
22
|
+
* current bucket without racing past the observed provider capacity.
|
|
23
|
+
*/
|
|
24
|
+
export class AiRateLimitBucket extends ActiveRecord {
|
|
25
|
+
static table = 'ai_rate_limit_buckets';
|
|
26
|
+
static primaryKey = 'id';
|
|
27
|
+
static comment = 'Current AI provider rate-limit state by provider endpoint and model/shared limit key; not a historical usage table.';
|
|
28
|
+
static fields(field) {
|
|
29
|
+
return {
|
|
30
|
+
id: field.ulid({
|
|
31
|
+
comment: 'Stable id for this rate-limit bucket.',
|
|
32
|
+
}),
|
|
33
|
+
bucketKey: field.string({
|
|
34
|
+
column: 'bucket_key',
|
|
35
|
+
required: true,
|
|
36
|
+
unique: true,
|
|
37
|
+
index: true,
|
|
38
|
+
comment: 'Stable provider:endpoint:limit-key identifier, for example openai:responses:gpt-5.4-nano.',
|
|
39
|
+
}),
|
|
40
|
+
provider: field.string({
|
|
41
|
+
required: true,
|
|
42
|
+
default: 'openai',
|
|
43
|
+
index: true,
|
|
44
|
+
comment: 'AI provider this bucket belongs to.',
|
|
45
|
+
}),
|
|
46
|
+
endpoint: field.choice({
|
|
47
|
+
required: true,
|
|
48
|
+
choices: Object.values(AI_RATE_LIMIT_ENDPOINT),
|
|
49
|
+
index: true,
|
|
50
|
+
comment: 'Provider endpoint family this bucket tracks; responses and embeddings are separate limit pools.',
|
|
51
|
+
}),
|
|
52
|
+
limitKey: field.string({
|
|
53
|
+
column: 'limit_key',
|
|
54
|
+
required: true,
|
|
55
|
+
index: true,
|
|
56
|
+
comment: 'Model or shared provider limit key used for throttling, not the app operation name.',
|
|
57
|
+
}),
|
|
58
|
+
limitRequests: field.integer({
|
|
59
|
+
column: 'limit_requests',
|
|
60
|
+
required: false,
|
|
61
|
+
unsigned: true,
|
|
62
|
+
comment: 'Maximum requests allowed for the current provider window.',
|
|
63
|
+
}),
|
|
64
|
+
remainingRequests: field.integer({
|
|
65
|
+
column: 'remaining_requests',
|
|
66
|
+
required: false,
|
|
67
|
+
unsigned: true,
|
|
68
|
+
comment: 'Remaining requests from the latest provider headers before subtracting active reservations.',
|
|
69
|
+
}),
|
|
70
|
+
requestsResetAt: field.timestamp({
|
|
71
|
+
column: 'requests_reset_at',
|
|
72
|
+
required: false,
|
|
73
|
+
index: true,
|
|
74
|
+
comment: 'Time when the request limit window should reset.',
|
|
75
|
+
}),
|
|
76
|
+
limitTokens: field.integer({
|
|
77
|
+
column: 'limit_tokens',
|
|
78
|
+
required: false,
|
|
79
|
+
unsigned: true,
|
|
80
|
+
comment: 'Maximum tokens allowed for the current provider window.',
|
|
81
|
+
}),
|
|
82
|
+
remainingTokens: field.integer({
|
|
83
|
+
column: 'remaining_tokens',
|
|
84
|
+
required: false,
|
|
85
|
+
unsigned: true,
|
|
86
|
+
comment: 'Remaining tokens from the latest provider headers before subtracting active reservations.',
|
|
87
|
+
}),
|
|
88
|
+
tokensResetAt: field.timestamp({
|
|
89
|
+
column: 'tokens_reset_at',
|
|
90
|
+
required: false,
|
|
91
|
+
index: true,
|
|
92
|
+
comment: 'Time when the token limit window should reset.',
|
|
93
|
+
}),
|
|
94
|
+
limitProjectTokens: field.integer({
|
|
95
|
+
column: 'limit_project_tokens',
|
|
96
|
+
required: false,
|
|
97
|
+
unsigned: true,
|
|
98
|
+
comment: 'Maximum project-scoped tokens allowed for the current provider window.',
|
|
99
|
+
}),
|
|
100
|
+
remainingProjectTokens: field.integer({
|
|
101
|
+
column: 'remaining_project_tokens',
|
|
102
|
+
required: false,
|
|
103
|
+
unsigned: true,
|
|
104
|
+
comment: 'Remaining project-scoped tokens from the latest provider headers before subtracting active reservations.',
|
|
105
|
+
}),
|
|
106
|
+
projectTokensResetAt: field.timestamp({
|
|
107
|
+
column: 'project_tokens_reset_at',
|
|
108
|
+
required: false,
|
|
109
|
+
index: true,
|
|
110
|
+
comment: 'Time when the project token limit window should reset.',
|
|
111
|
+
}),
|
|
112
|
+
lastProviderRequestId: field.string({
|
|
113
|
+
column: 'last_provider_request_id',
|
|
114
|
+
required: false,
|
|
115
|
+
index: true,
|
|
116
|
+
comment: 'Most recent provider request id observed for this bucket.',
|
|
117
|
+
}),
|
|
118
|
+
lastObservedAt: field.timestamp({
|
|
119
|
+
column: 'last_observed_at',
|
|
120
|
+
required: false,
|
|
121
|
+
index: true,
|
|
122
|
+
comment: 'Time this bucket was last updated from provider headers.',
|
|
123
|
+
}),
|
|
124
|
+
metadata: field.jsonString({
|
|
125
|
+
required: false,
|
|
126
|
+
comment: 'Structured provider metadata for this bucket.',
|
|
127
|
+
}),
|
|
128
|
+
createdAt: field.timestamp({
|
|
129
|
+
column: 'created_at',
|
|
130
|
+
auto: 'create',
|
|
131
|
+
}),
|
|
132
|
+
updatedAt: field.timestamp({
|
|
133
|
+
column: 'updated_at',
|
|
134
|
+
auto: 'update',
|
|
135
|
+
}),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
import type { EntityRef } from '@db3.ai/app/db/fields/LinkField';
|
|
3
|
+
import { AiRequest } from './AiRequest.js';
|
|
4
|
+
import { AiRateLimitBucket } from './AiRateLimitBucket.js';
|
|
5
|
+
/**
|
|
6
|
+
* In-flight reservation against an AI rate-limit bucket.
|
|
7
|
+
*
|
|
8
|
+
* Reservations let multiple queue workers coordinate against the latest
|
|
9
|
+
* provider capacity before the provider returns updated response headers. They
|
|
10
|
+
* are short-lived coordination rows, not historical usage records; completed or
|
|
11
|
+
* failed provider calls should release their reservation, and stale reservations
|
|
12
|
+
* stop counting after `expires_at`.
|
|
13
|
+
*/
|
|
14
|
+
export declare class AiRateLimitReservation extends ActiveRecord {
|
|
15
|
+
static table: string;
|
|
16
|
+
static primaryKey: string;
|
|
17
|
+
static comment: string;
|
|
18
|
+
/**
|
|
19
|
+
* Deletes reservation rows that no longer affect provider capacity.
|
|
20
|
+
*
|
|
21
|
+
* Released rows have already stopped counting, and expired rows are treated
|
|
22
|
+
* as abandoned in-flight work. Durable audit data remains on `ai_requests`.
|
|
23
|
+
*
|
|
24
|
+
* @param now - Current time used to identify expired reservations.
|
|
25
|
+
* @returns Number of reservation rows removed.
|
|
26
|
+
*/
|
|
27
|
+
static cleanupReleasedAndExpired(now?: Date): Promise<number>;
|
|
28
|
+
/**
|
|
29
|
+
* Declares the persisted rate-limit reservation fields.
|
|
30
|
+
*
|
|
31
|
+
* @param field - ActiveRecord field builder.
|
|
32
|
+
* @returns Field definitions for schema generation and value conversion.
|
|
33
|
+
*/
|
|
34
|
+
static fields(field: FieldBuilder): {
|
|
35
|
+
id: import("../db/index.js").UlidField;
|
|
36
|
+
bucket: import("@db3.ai/app/db/fields/LinkField").LinkField<AiRateLimitBucket>;
|
|
37
|
+
aiRequest: import("@db3.ai/app/db/fields/LinkField").LinkField<AiRequest>;
|
|
38
|
+
operation: import("../db/index.js").StringField;
|
|
39
|
+
reservedRequests: import("../db/index.js").IntegerField;
|
|
40
|
+
reservedTokens: import("../db/index.js").IntegerField;
|
|
41
|
+
expiresAt: import("../db/index.js").TimestampField;
|
|
42
|
+
releasedAt: import("../db/index.js").TimestampField;
|
|
43
|
+
createdAt: import("../db/index.js").TimestampField;
|
|
44
|
+
updatedAt: import("../db/index.js").TimestampField;
|
|
45
|
+
};
|
|
46
|
+
id: string | null;
|
|
47
|
+
bucket: EntityRef<AiRateLimitBucket> | null;
|
|
48
|
+
aiRequest: EntityRef<AiRequest> | null;
|
|
49
|
+
operation: string | null;
|
|
50
|
+
reservedRequests: number | null;
|
|
51
|
+
reservedTokens: number | null;
|
|
52
|
+
expiresAt: Date | null;
|
|
53
|
+
releasedAt: Date | null;
|
|
54
|
+
createdAt: Date | null;
|
|
55
|
+
updatedAt: Date | null;
|
|
56
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ActiveRecord } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
import { AiRequest } from './AiRequest.js';
|
|
3
|
+
import { AiRateLimitBucket } from './AiRateLimitBucket.js';
|
|
4
|
+
/**
|
|
5
|
+
* In-flight reservation against an AI rate-limit bucket.
|
|
6
|
+
*
|
|
7
|
+
* Reservations let multiple queue workers coordinate against the latest
|
|
8
|
+
* provider capacity before the provider returns updated response headers. They
|
|
9
|
+
* are short-lived coordination rows, not historical usage records; completed or
|
|
10
|
+
* failed provider calls should release their reservation, and stale reservations
|
|
11
|
+
* stop counting after `expires_at`.
|
|
12
|
+
*/
|
|
13
|
+
export class AiRateLimitReservation extends ActiveRecord {
|
|
14
|
+
static table = 'ai_rate_limit_reservations';
|
|
15
|
+
static primaryKey = 'id';
|
|
16
|
+
static comment = 'Short-lived in-flight reservations subtracted from current AI rate-limit buckets.';
|
|
17
|
+
/**
|
|
18
|
+
* Deletes reservation rows that no longer affect provider capacity.
|
|
19
|
+
*
|
|
20
|
+
* Released rows have already stopped counting, and expired rows are treated
|
|
21
|
+
* as abandoned in-flight work. Durable audit data remains on `ai_requests`.
|
|
22
|
+
*
|
|
23
|
+
* @param now - Current time used to identify expired reservations.
|
|
24
|
+
* @returns Number of reservation rows removed.
|
|
25
|
+
*/
|
|
26
|
+
static async cleanupReleasedAndExpired(now = new Date()) {
|
|
27
|
+
const deleted = await ActiveRecord.getDb()(this.table)
|
|
28
|
+
.where(query => {
|
|
29
|
+
query
|
|
30
|
+
.whereNotNull('released_at')
|
|
31
|
+
.orWhere('expires_at', '<=', now);
|
|
32
|
+
})
|
|
33
|
+
.delete();
|
|
34
|
+
return Number(deleted);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Declares the persisted rate-limit reservation fields.
|
|
38
|
+
*
|
|
39
|
+
* @param field - ActiveRecord field builder.
|
|
40
|
+
* @returns Field definitions for schema generation and value conversion.
|
|
41
|
+
*/
|
|
42
|
+
static fields(field) {
|
|
43
|
+
return {
|
|
44
|
+
id: field.ulid({
|
|
45
|
+
comment: 'Stable id for this rate-limit reservation.',
|
|
46
|
+
}),
|
|
47
|
+
bucket: field.link(() => AiRateLimitBucket, {
|
|
48
|
+
column: 'bucket_id',
|
|
49
|
+
required: true,
|
|
50
|
+
onDelete: 'CASCADE',
|
|
51
|
+
index: true,
|
|
52
|
+
comment: 'Rate-limit bucket this reservation consumes capacity from.',
|
|
53
|
+
}),
|
|
54
|
+
aiRequest: field.link(() => AiRequest, {
|
|
55
|
+
column: 'ai_request_id',
|
|
56
|
+
required: false,
|
|
57
|
+
onDelete: 'SET NULL',
|
|
58
|
+
index: true,
|
|
59
|
+
comment: 'Tracked AI request associated with this reservation, when available.',
|
|
60
|
+
}),
|
|
61
|
+
operation: field.string({
|
|
62
|
+
required: false,
|
|
63
|
+
index: true,
|
|
64
|
+
comment: 'Application operation this reservation protects; bucket identity still comes from provider endpoint and limit key.',
|
|
65
|
+
}),
|
|
66
|
+
reservedRequests: field.integer({
|
|
67
|
+
column: 'reserved_requests',
|
|
68
|
+
required: true,
|
|
69
|
+
unsigned: true,
|
|
70
|
+
default: 1,
|
|
71
|
+
comment: 'Number of requests reserved against the bucket.',
|
|
72
|
+
}),
|
|
73
|
+
reservedTokens: field.integer({
|
|
74
|
+
column: 'reserved_tokens',
|
|
75
|
+
required: false,
|
|
76
|
+
unsigned: true,
|
|
77
|
+
comment: 'Estimated tokens reserved against the bucket.',
|
|
78
|
+
}),
|
|
79
|
+
expiresAt: field.timestamp({
|
|
80
|
+
column: 'expires_at',
|
|
81
|
+
required: true,
|
|
82
|
+
index: true,
|
|
83
|
+
comment: 'Time this reservation stops counting if it is not explicitly released.',
|
|
84
|
+
}),
|
|
85
|
+
releasedAt: field.timestamp({
|
|
86
|
+
column: 'released_at',
|
|
87
|
+
required: false,
|
|
88
|
+
index: true,
|
|
89
|
+
comment: 'Time this reservation was released after provider completion or failure.',
|
|
90
|
+
}),
|
|
91
|
+
createdAt: field.timestamp({
|
|
92
|
+
column: 'created_at',
|
|
93
|
+
auto: 'create',
|
|
94
|
+
}),
|
|
95
|
+
updatedAt: field.timestamp({
|
|
96
|
+
column: 'updated_at',
|
|
97
|
+
auto: 'update',
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ActiveRecord, type FieldBuilder } from '@db3.ai/app/db/ActiveRecord';
|
|
2
|
+
import type { EntityRef } from '@db3.ai/app/db/fields/LinkField';
|
|
3
|
+
import { AiConversation } from './AiConversation.js';
|
|
4
|
+
import { AiRateLimitBucket } from './AiRateLimitBucket.js';
|
|
5
|
+
export declare const AI_REQUEST_STATUS: {
|
|
6
|
+
readonly pending: "pending";
|
|
7
|
+
readonly completed: "completed";
|
|
8
|
+
readonly failed: "failed";
|
|
9
|
+
};
|
|
10
|
+
import type { AiRequestRunCostSummary } from './contracts/AiRequestRunCostSummary.js';
|
|
11
|
+
export type { AiRequestRunCostSummary } from './contracts/AiRequestRunCostSummary.js';
|
|
12
|
+
/** Auditable provider request with recursive usage and cost reporting. */
|
|
13
|
+
export declare class AiRequest extends ActiveRecord {
|
|
14
|
+
#private;
|
|
15
|
+
static table: string;
|
|
16
|
+
static primaryKey: string;
|
|
17
|
+
static comment: string;
|
|
18
|
+
static readonly STATES: {
|
|
19
|
+
readonly pending: "pending";
|
|
20
|
+
readonly completed: "completed";
|
|
21
|
+
readonly failed: "failed";
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Totals one root request and every recursively linked descendant exactly once.
|
|
25
|
+
*
|
|
26
|
+
* The self-referencing relationship supports image generation, embeddings,
|
|
27
|
+
* and future nested agent runs without relying on conversation or timestamp
|
|
28
|
+
* heuristics.
|
|
29
|
+
*
|
|
30
|
+
* @param rootAiRequestId - Root request id for the run.
|
|
31
|
+
* @returns Recursive request-tree cost summary, or null when the root is absent.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const cost = await AiRequest.runCostSummary(articleAiRequestId);
|
|
35
|
+
* console.log(cost?.totalCostUSD);
|
|
36
|
+
*/
|
|
37
|
+
static runCostSummary(rootAiRequestId: string | null | undefined): Promise<AiRequestRunCostSummary | null>;
|
|
38
|
+
/**
|
|
39
|
+
* Totals multiple known root requests and their descendants in one batched walk.
|
|
40
|
+
*
|
|
41
|
+
* @param roots - Root request records to aggregate.
|
|
42
|
+
* @returns Cost summaries keyed by root request id.
|
|
43
|
+
*/
|
|
44
|
+
static runCostSummaries(roots: AiRequest[]): Promise<Map<string, AiRequestRunCostSummary>>;
|
|
45
|
+
/** Defines the durable request, response, rate-limit and measured usage fields. */
|
|
46
|
+
static fields(field: FieldBuilder): ReturnType<typeof ActiveRecord.fields>;
|
|
47
|
+
id: string | null;
|
|
48
|
+
conversation: EntityRef<AiConversation> | null;
|
|
49
|
+
parentAiRequest: EntityRef<AiRequest> | null;
|
|
50
|
+
request: unknown | null;
|
|
51
|
+
response: unknown | null;
|
|
52
|
+
providerRequestId: string | null;
|
|
53
|
+
providerProcessingMs: number | null;
|
|
54
|
+
rateLimitBucket: EntityRef<AiRateLimitBucket> | null;
|
|
55
|
+
rateLimitSnapshot: Record<string, unknown> | null;
|
|
56
|
+
user: unknown;
|
|
57
|
+
scope: unknown;
|
|
58
|
+
status: typeof AI_REQUEST_STATUS[keyof typeof AI_REQUEST_STATUS] | null;
|
|
59
|
+
provider: string | null;
|
|
60
|
+
model: string | null;
|
|
61
|
+
operation: string | null;
|
|
62
|
+
inputTokens: number | null;
|
|
63
|
+
outputTokens: number | null;
|
|
64
|
+
totalTokens: number | null;
|
|
65
|
+
reasoningTokens: number | null;
|
|
66
|
+
cachedTokens: number | null;
|
|
67
|
+
cacheWriteTokens: number | null;
|
|
68
|
+
costUSD: number | null;
|
|
69
|
+
knownCostUSD: number | null;
|
|
70
|
+
durationMs: number | null;
|
|
71
|
+
errorCode: string | null;
|
|
72
|
+
errorMessage: string | null;
|
|
73
|
+
startedAt: Date | null;
|
|
74
|
+
completedAt: Date | null;
|
|
75
|
+
metadata: Record<string, unknown> | null;
|
|
76
|
+
createdAt: Date | null;
|
|
77
|
+
updatedAt: Date | null;
|
|
78
|
+
}
|