@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,156 @@
|
|
|
1
|
+
import { AI_PROVIDER, type AIProvider } from './contracts/AI.js';
|
|
2
|
+
|
|
3
|
+
const USD_COST_PRECISION = 100_000_000;
|
|
4
|
+
const XAI_USD_TICKS_PER_DOLLAR = 10_000_000_000;
|
|
5
|
+
|
|
6
|
+
/** Provider response field used as the authoritative billed-cost source. */
|
|
7
|
+
export type ProviderReportedCostSource = 'openrouter_usage_cost' | 'xai_usage_cost_in_usd_ticks';
|
|
8
|
+
|
|
9
|
+
/** Authoritative billed cost reported for one provider request. */
|
|
10
|
+
export interface ProviderReportedCost {
|
|
11
|
+
/** Provider response id used to deduplicate repeated terminal stream events. */
|
|
12
|
+
responseId: string;
|
|
13
|
+
/** Billed request cost in USD, rounded to the application's stored precision. */
|
|
14
|
+
costUSD: number;
|
|
15
|
+
/** Provider response field from which the cost was derived. */
|
|
16
|
+
source: ProviderReportedCostSource;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Completeness summary for provider-reported costs across one agent attempt. */
|
|
20
|
+
export interface ProviderReportedCostSummary {
|
|
21
|
+
/** Safely known subtotal across every captured provider response. */
|
|
22
|
+
knownCostUSD: number;
|
|
23
|
+
/** Complete attempt cost, or null when any expected response lacks billed cost. */
|
|
24
|
+
costUSD: number | null;
|
|
25
|
+
/** Number of unique provider responses with an authoritative billed cost. */
|
|
26
|
+
reportedRequestCount: number;
|
|
27
|
+
/** Number of provider requests reported by the Agents SDK. */
|
|
28
|
+
expectedRequestCount: number;
|
|
29
|
+
/** Provider fields that supplied the captured costs. */
|
|
30
|
+
sources: ProviderReportedCostSource[];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Extracts the authoritative billed USD cost from one provider payload.
|
|
35
|
+
*
|
|
36
|
+
* OpenRouter returns dollars in `usage.cost`. xAI returns integer USD ticks in
|
|
37
|
+
* `usage.cost_in_usd_ticks`, where ten billion ticks equal one US dollar.
|
|
38
|
+
* Other providers intentionally return null so locally estimated prices cannot
|
|
39
|
+
* be mistaken for the amount actually charged by an intermediary.
|
|
40
|
+
*
|
|
41
|
+
* @param provider - Provider that returned the payload.
|
|
42
|
+
* @param payload - Response object containing the provider usage block.
|
|
43
|
+
* @returns Provider-reported billed cost in USD, or null when unavailable.
|
|
44
|
+
*/
|
|
45
|
+
export function providerReportedCostUSD(provider: AIProvider | string | null, payload: unknown): number | null {
|
|
46
|
+
const usage = recordValue(recordValue(payload)?.usage);
|
|
47
|
+
|
|
48
|
+
if (!usage) return null;
|
|
49
|
+
|
|
50
|
+
if (provider === AI_PROVIDER.openrouter) {
|
|
51
|
+
return validNonNegativeNumber(usage.cost);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (provider === AI_PROVIDER.xai) {
|
|
55
|
+
const ticks = validNonNegativeNumber(usage.cost_in_usd_ticks);
|
|
56
|
+
|
|
57
|
+
return ticks === null ? null : roundCostUSD(ticks / XAI_USD_TICKS_PER_DOLLAR);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Builds a deduplicatable cost entry for one terminal provider response.
|
|
65
|
+
*
|
|
66
|
+
* @param provider - Provider that returned the response.
|
|
67
|
+
* @param payload - Response object containing provider usage.
|
|
68
|
+
* @param responseId - Stable provider response identifier.
|
|
69
|
+
* @returns Captured provider cost, or null when the id or billed cost is absent.
|
|
70
|
+
*/
|
|
71
|
+
export function providerReportedCost(
|
|
72
|
+
provider: AIProvider | string | null,
|
|
73
|
+
payload: unknown,
|
|
74
|
+
responseId: unknown,
|
|
75
|
+
): ProviderReportedCost | null {
|
|
76
|
+
if (typeof responseId !== 'string' || !responseId.trim()) return null;
|
|
77
|
+
|
|
78
|
+
const costUSD = providerReportedCostUSD(provider, payload);
|
|
79
|
+
|
|
80
|
+
if (costUSD === null) return null;
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
responseId,
|
|
84
|
+
costUSD,
|
|
85
|
+
source: provider === AI_PROVIDER.xai
|
|
86
|
+
? 'xai_usage_cost_in_usd_ticks'
|
|
87
|
+
: 'openrouter_usage_cost',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Summarizes unique provider costs and fails closed when coverage is incomplete.
|
|
93
|
+
*
|
|
94
|
+
* @param costs - Cost entries keyed by provider response id.
|
|
95
|
+
* @param expectedRequestCount - Provider request count reported by the SDK.
|
|
96
|
+
* @returns Known subtotal plus an exact total only when every request is covered.
|
|
97
|
+
*/
|
|
98
|
+
export function summarizeProviderReportedCosts(
|
|
99
|
+
costs: Map<string, ProviderReportedCost>,
|
|
100
|
+
expectedRequestCount: number,
|
|
101
|
+
): ProviderReportedCostSummary {
|
|
102
|
+
const entries = [...costs.values()];
|
|
103
|
+
const knownCostUSD = roundCostUSD(entries.reduce((total, entry) => total + entry.costUSD, 0));
|
|
104
|
+
const normalizedExpectedCount = Number.isFinite(expectedRequestCount) && expectedRequestCount >= 0
|
|
105
|
+
? Math.trunc(expectedRequestCount)
|
|
106
|
+
: 0;
|
|
107
|
+
const complete = normalizedExpectedCount > 0 && entries.length === normalizedExpectedCount;
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
knownCostUSD,
|
|
111
|
+
costUSD: complete ? knownCostUSD : null,
|
|
112
|
+
reportedRequestCount: entries.length,
|
|
113
|
+
expectedRequestCount: normalizedExpectedCount,
|
|
114
|
+
sources: [...new Set(entries.map(entry => entry.source))],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Converts a provider numeric field into a safe non-negative number.
|
|
120
|
+
*
|
|
121
|
+
* @param value - Unknown numeric value from a provider response.
|
|
122
|
+
* @returns Rounded numeric value, or null when missing, negative, or invalid.
|
|
123
|
+
*/
|
|
124
|
+
function validNonNegativeNumber(value: unknown): number | null {
|
|
125
|
+
const parsed = typeof value === 'number'
|
|
126
|
+
? value
|
|
127
|
+
: typeof value === 'string' && value.trim()
|
|
128
|
+
? Number(value)
|
|
129
|
+
: null;
|
|
130
|
+
|
|
131
|
+
if (parsed === null || !Number.isFinite(parsed) || parsed < 0) return null;
|
|
132
|
+
|
|
133
|
+
return roundCostUSD(parsed);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Narrows an unknown value to a plain record.
|
|
138
|
+
*
|
|
139
|
+
* @param value - Unknown provider payload value.
|
|
140
|
+
* @returns Record value, or null for scalars and arrays.
|
|
141
|
+
*/
|
|
142
|
+
function recordValue(value: unknown): Record<string, unknown> | null {
|
|
143
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return null;
|
|
144
|
+
|
|
145
|
+
return value as Record<string, unknown>;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Rounds provider billed cost to the precision stored on AiRequest.
|
|
150
|
+
*
|
|
151
|
+
* @param value - USD cost before persistence rounding.
|
|
152
|
+
* @returns Cost rounded to eight decimal places.
|
|
153
|
+
*/
|
|
154
|
+
function roundCostUSD(value: number): number {
|
|
155
|
+
return Math.round(value * USD_COST_PRECISION) / USD_COST_PRECISION;
|
|
156
|
+
}
|
package/src/ai/README.md
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# AI
|
|
2
|
+
|
|
3
|
+
Build AI features inside your db3 application with `app().ai` and `Agent`.
|
|
4
|
+
The service owns provider execution, rate limits and request tracking. Your app
|
|
5
|
+
owns prompts, tools, authorization, storage destinations and commercial policy.
|
|
6
|
+
|
|
7
|
+
## Start in your app
|
|
8
|
+
|
|
9
|
+
The generated app configures `new App({ ai: config.ai })` and includes
|
|
10
|
+
`AiConversation`, `AiMessage`, `AiRequest`, `AiRateLimitBucket` and
|
|
11
|
+
`AiRateLimitReservation` in its migration registry. Set `OPENAI_API_KEY` and
|
|
12
|
+
`OPENAI_MODEL` in the server `.env`, apply migrations and restart. Existing apps
|
|
13
|
+
must register these models and generate a committed migration before using AI.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { app } from '@db3.ai/app/server';
|
|
17
|
+
|
|
18
|
+
const result = await app().ai.generateTextWithResponse({
|
|
19
|
+
instructions: 'Summarise this note in three short points.',
|
|
20
|
+
input: note.body,
|
|
21
|
+
maxOutputTokens: 400,
|
|
22
|
+
}, { user: userId, scope: teamId });
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`generateText()` returns a string. `generateTextWithResponse()` also returns the
|
|
26
|
+
saved request and conversation IDs. Direct generation tracks a conversation but
|
|
27
|
+
does not replay its previous messages; use an agent for conversational memory.
|
|
28
|
+
|
|
29
|
+
## Agents and function calls
|
|
30
|
+
|
|
31
|
+
Create a class under your app's `server/agents/` directory extending `Agent`.
|
|
32
|
+
Implement `instructions()` and `tools()`. Use the exported `tool` helper with a
|
|
33
|
+
Zod parameter schema to expose an application function. Install `zod` as an app
|
|
34
|
+
dependency when importing it in your tools.
|
|
35
|
+
|
|
36
|
+
See [HelpAgent.ts](./examples/HelpAgent.ts) for a tested function-calling agent.
|
|
37
|
+
Its context selects a trusted storage path, user and scope. `run(message)`
|
|
38
|
+
returns final output and saved IDs; `stream(message, emit)` emits typed events
|
|
39
|
+
and returns null after a `run.error` event. A conversation can be resumed by
|
|
40
|
+
supplying its ID with matching user, scope and agent identity.
|
|
41
|
+
|
|
42
|
+
Register `AgentRunJob` on the queue and call `registerQueuedAgent(name, Class)`
|
|
43
|
+
at boot in both web and worker processes before using `agent.queue(message)`.
|
|
44
|
+
Its constructor context must be serializable. Queued agents require the normal
|
|
45
|
+
queue models and a worker listening on the selected queue.
|
|
46
|
+
|
|
47
|
+
## Images, embeddings and structured output
|
|
48
|
+
|
|
49
|
+
- `generateImage(input, { store })` returns image bytes and an optional app-owned
|
|
50
|
+
storage reference. See [createHelpImage.ts](./examples/createHelpImage.ts).
|
|
51
|
+
- `generateEmbedding(text, model?, options?)` returns a vector, model and request
|
|
52
|
+
ID. The app owns indexing, source revisions and authorized retrieval.
|
|
53
|
+
- `generateStructured({ instructions, input, schemaName, schema })` returns
|
|
54
|
+
locally validated `data`, text and tracking IDs. Schemas use Zod.
|
|
55
|
+
|
|
56
|
+
Agent instances expose these same methods. Calls made inside an executing tool
|
|
57
|
+
inherit the current conversation and parent request, including calls through
|
|
58
|
+
`app().ai`. Nested calls cannot carry a second independent usage charge.
|
|
59
|
+
|
|
60
|
+
## Conversations and request records
|
|
61
|
+
|
|
62
|
+
`AiConversation`, `AiMessage` and `AiRequest` are shipped ActiveRecord classes.
|
|
63
|
+
Extend them in your app and configure `ai.models` with the replacement
|
|
64
|
+
constructors. Replace the corresponding entries in your migration registry and
|
|
65
|
+
generate a migration. See [Conversation.ts](./examples/Conversation.ts).
|
|
66
|
+
Keep table names unless you also override the related model link fields.
|
|
67
|
+
|
|
68
|
+
`user` and `scope` store optional application identifiers. An app may replace
|
|
69
|
+
these fields with typed model links. `scopeField` adapts an existing logical
|
|
70
|
+
ownership field; calls using that adapter supply that field in logging options.
|
|
71
|
+
|
|
72
|
+
Use `agentConversationTimeline(messages, toolDefinitions, requests)` to rebuild
|
|
73
|
+
stream-compatible history after authorizing access. The formatter includes
|
|
74
|
+
diagnostic prompt items; filter those from ordinary user views. It supplies
|
|
75
|
+
data for your renderer, not a history endpoint or UI component.
|
|
76
|
+
|
|
77
|
+
Every provider attempt retains status, input, response, usage and timing.
|
|
78
|
+
`AiRequest.runCostSummary(id)` aggregates recursively linked provider work
|
|
79
|
+
without counting the root aggregate twice. Unknown usage and costs remain
|
|
80
|
+
unknown. When `unpricedRequestCount` is nonzero, `totalCostUSD` is only the known
|
|
81
|
+
subtotal. Price estimates are not invoices or a customer credit ledger.
|
|
82
|
+
|
|
83
|
+
Request persistence is enabled by default. Prompts, responses and tool results
|
|
84
|
+
may contain private information. Apply your app's access and retention policy.
|
|
85
|
+
`saveAiResponse: false` opts direct service calls out of record persistence.
|
|
86
|
+
OpenAI text requests set `store: false`; that does not disable local tracking or
|
|
87
|
+
all provider retention. Never expose provider credentials in client code.
|
|
88
|
+
|
|
89
|
+
## Models and cost estimates
|
|
90
|
+
|
|
91
|
+
Select `gpt-6-astra` through a per-call `model` override or a named agent model
|
|
92
|
+
in your app's AI config. OpenAI agents already use the Responses API required
|
|
93
|
+
for Astra tool calls. Astra supports reasoning efforts `low` through `xhigh`
|
|
94
|
+
in the framework; do not configure `none` or `minimal`, or custom `temperature`,
|
|
95
|
+
`top_p` or log probabilities. Availability depends on the API project.
|
|
96
|
+
|
|
97
|
+
The shared `AI_MODEL_PRICING` table was checked against
|
|
98
|
+
[OpenAI's API prices](https://developers.openai.com/api/docs/pricing) on
|
|
99
|
+
2026-09-11. Standard USD prices per million tokens are:
|
|
100
|
+
|
|
101
|
+
| Model | Input | Cache read | Cache write | Output |
|
|
102
|
+
| --- | ---: | ---: | ---: | ---: |
|
|
103
|
+
| `gpt-6-astra` | $10.00 | $1.00 | $12.50 | $50.00 |
|
|
104
|
+
| `gpt-5.6-sol` | $4.00 | $0.40 | $5.00 | $20.00 |
|
|
105
|
+
| `gpt-5.6-terra` | $2.00 | $0.20 | $2.50 | $12.00 |
|
|
106
|
+
| `gpt-5.6-luna` | $0.20 | $0.02 | $0.25 | $1.20 |
|
|
107
|
+
|
|
108
|
+
For these models, a request above 272,000 input tokens costs 2x all input
|
|
109
|
+
rates and 1.5x output rates for the full request. Agent runs calculate this
|
|
110
|
+
per provider request, so several short turns do not trigger the higher rates
|
|
111
|
+
merely because their combined usage exceeds the threshold. Sol's published
|
|
112
|
+
promotional rates are available at least through 2026-11-21; recheck the rate
|
|
113
|
+
card when that period ends rather than assuming a future price.
|
|
114
|
+
|
|
115
|
+
Direct OpenAI text and agent requests select Standard processing. Estimates
|
|
116
|
+
exclude regional processing surcharges and other tiers. OpenRouter and xAI
|
|
117
|
+
use their provider-reported billed costs. Updates affect new estimates and
|
|
118
|
+
new request records; they do not rewrite stored costs or change app model defaults.
|
|
119
|
+
|
|
120
|
+
Image pricing includes `gpt-image-2.5-flare` and `gpt-image-2`: $5 text input,
|
|
121
|
+
$1.25 cached text input, $8 image input, $2 cached image input and $30 image
|
|
122
|
+
output per million tokens. Dated Flare snapshots resolve to the same rate card.
|
|
123
|
+
The models can consume different token counts at the same size and quality;
|
|
124
|
+
image costs use actual reported usage, not fixed per-image estimates. Apps
|
|
125
|
+
select Flare through `ImageGeneration` or a per-call `model` override.
|
|
126
|
+
|
|
127
|
+
## Providers and failover
|
|
128
|
+
|
|
129
|
+
Configure `ai.provider` with one provider, an ordered list or an ordered record
|
|
130
|
+
of provider/model pairs. Registered providers are OpenAI, OpenRouter, Groq, xAI
|
|
131
|
+
and DeepSeek. Provider keys, base URLs and model defaults use their corresponding
|
|
132
|
+
server environment variables. Calls and agent subclasses can select a chain.
|
|
133
|
+
|
|
134
|
+
Text and structured output require the Responses API. Agents also support the
|
|
135
|
+
registered Chat Completions providers. Images and embeddings currently use the
|
|
136
|
+
OpenAI adapter and do not fail over. Other protocols need a driver implementation.
|
|
137
|
+
|
|
138
|
+
Transient network, rate-limit, quota and server failures can advance to another
|
|
139
|
+
provider. Authentication and request validation failures do not. Agent failover
|
|
140
|
+
stops once the SDK emits an event, avoiding automatic replay of tool effects.
|
|
141
|
+
The per-request timeout defaults to 60 seconds; SDK automatic retries are off.
|
|
142
|
+
|
|
143
|
+
The SQL-backed `AIRateLimiter` coordinates provider capacity across workers.
|
|
144
|
+
Agents reserve capacity for each SDK HTTP request and record response headers
|
|
145
|
+
before consuming the stream. Reservations are released before tools execute,
|
|
146
|
+
so a tool can call the same model without waiting on its own parent agent.
|
|
147
|
+
Transport failures also release reservations; later model turns reserve again.
|
|
148
|
+
Quota and capacity deferrals integrate with queue retries. The `allowance` hook
|
|
149
|
+
checks application budgets separately. Override `usageCharge()` and
|
|
150
|
+
`settleUsage()` in an agent when your app needs an idempotent commercial ledger.
|
|
151
|
+
|
|
152
|
+
## Verification
|
|
153
|
+
|
|
154
|
+
### Maintenance map
|
|
155
|
+
|
|
156
|
+
- `Ai.ts`: direct provider requests, allowance hooks and tracking lifecycle.
|
|
157
|
+
- `Agent.ts`: conversational runs, tool events, provider attempts, queue setup
|
|
158
|
+
and application extension hooks.
|
|
159
|
+
- `contracts/`: shared service, agent, event, provider and limiter contracts.
|
|
160
|
+
- `AgentHistory.ts`: transport-independent timeline reconstruction.
|
|
161
|
+
- `toolHelpers.ts`: typed context access, progress, errors and model attachments.
|
|
162
|
+
- `AgentRunJob.ts` and `registry.ts`: validation and durable reconstruction;
|
|
163
|
+
applications register their own classes and model identities.
|
|
164
|
+
- `AiConversation.ts`, `AiMessage.ts`, `AiRequest.ts`: extensible record models.
|
|
165
|
+
- `AIRateLimiter.ts`, `AIProviders.ts`, `AIFailover.ts` and `OpenAIQuotaRetry.ts`:
|
|
166
|
+
provider capacity, selection and retry behavior.
|
|
167
|
+
|
|
168
|
+
Keep application-specific context, authorization, billing, prompts and storage
|
|
169
|
+
placement in application subclasses or adapters. Shared tool helpers preserve
|
|
170
|
+
the application's context type; applications need not copy their implementations.
|
|
171
|
+
|
|
172
|
+
The pinned Agents SDK currently needs `sdkNodeCompatibility.d.ts` for strict
|
|
173
|
+
Node declaration checking. It describes the SDK emitter through its own event
|
|
174
|
+
contract and does not replace runtime code or augment Node globally. Staging
|
|
175
|
+
ships that declaration and rewrites its reference to the installed location.
|
|
176
|
+
Remove the shim when the unmodified SDK passes the packed consumer with
|
|
177
|
+
`skipLibCheck: false`; do not disable the check to upgrade the dependency.
|
|
178
|
+
|
|
179
|
+
Framework maintainers run `npm run test:service --workspace @db3.ai/app -- ai`.
|
|
180
|
+
Tests use real App, SDK, SQL and Storage with synthetic provider responses. The
|
|
181
|
+
integration suite covers tools, history, ownership, queue reconstruction, nested
|
|
182
|
+
request parentage, failover, image storage, embeddings and structured output.
|
|
183
|
+
The package is also installed and type-checked in an independent consumer.
|
|
184
|
+
|
|
185
|
+
Installed app developers run their own tests using a disposable database and
|
|
186
|
+
an injected `ai.fetch`. No live key is needed for simulated provider tests.
|
|
187
|
+
See the [AI guides](https://db3.ai/docs/ai) for app-focused examples.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ResponsesProviderCallInput, ResponsesProviderCallResult } from './contracts/ResponsesProviderCall';
|
|
2
|
+
export type { ResponsesProviderCallInput, ResponsesProviderCallResult } from './contracts/ResponsesProviderCall';
|
|
3
|
+
import { providerResponseMetadata } from './AIRateLimiter.js';
|
|
4
|
+
import type { TextResponsePayloadWithUsage } from './contracts/AI.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Sends one Responses API request to an OpenAI-compatible provider.
|
|
8
|
+
*
|
|
9
|
+
* This is pure transport: it performs the HTTP call and parses the payload and
|
|
10
|
+
* headers. Tracking, rate limiting, failover policy, and error shaping stay in
|
|
11
|
+
* the AI service so every attempt in a failover chain shares one lifecycle.
|
|
12
|
+
*
|
|
13
|
+
* @param input - Provider connection, request payload, and fetch implementation.
|
|
14
|
+
* @returns Raw provider response for the caller to classify.
|
|
15
|
+
*/
|
|
16
|
+
export async function sendResponsesRequest(input: ResponsesProviderCallInput): Promise<ResponsesProviderCallResult> {
|
|
17
|
+
const response = await input.fetcher(`${input.baseUrl}/responses`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: {
|
|
20
|
+
authorization: `Bearer ${input.apiKey}`,
|
|
21
|
+
'content-type': 'application/json',
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify(input.request),
|
|
24
|
+
});
|
|
25
|
+
const metadata = providerResponseMetadata(response.headers);
|
|
26
|
+
const payload = await response.json().catch(() => null) as TextResponsePayloadWithUsage | null;
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
ok: response.ok,
|
|
30
|
+
status: response.status,
|
|
31
|
+
payload,
|
|
32
|
+
metadata,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { agentCitationOccurrenceKey, normalizedAgentCitations, type AgentCitation } from '@db3.ai/pure';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Extracts a normalized URL citation from a Responses streaming annotation.
|
|
5
|
+
*
|
|
6
|
+
* @param record - Raw `response.output_text.annotation.added` event.
|
|
7
|
+
* @returns Valid URL citation, or null for unsupported annotations.
|
|
8
|
+
*/
|
|
9
|
+
export function agentCitationFromStreamRecord(record: Record<string, unknown>): AgentCitation | null {
|
|
10
|
+
if (record.type !== 'response.output_text.annotation.added') return null;
|
|
11
|
+
|
|
12
|
+
const annotation = recordValue(record.annotation);
|
|
13
|
+
const itemId = stringValue(record.item_id) || stringValue(record.itemId);
|
|
14
|
+
const annotationIndex = integerValue(record.annotation_index) ?? integerValue(record.annotationIndex);
|
|
15
|
+
const contentIndex = integerValue(record.content_index) ?? integerValue(record.contentIndex) ?? 0;
|
|
16
|
+
|
|
17
|
+
return providerUrlCitation(annotation, {
|
|
18
|
+
id: citationId(itemId, contentIndex, annotationIndex),
|
|
19
|
+
offset: contentIndex === 0 ? 0 : null,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Extracts URL citations from the final Agents SDK model response.
|
|
25
|
+
*
|
|
26
|
+
* A null result means the provider did not expose an authoritative annotation
|
|
27
|
+
* collection, so callers may fall back to citations observed in stream events.
|
|
28
|
+
* An empty array is authoritative and means the final response had no citations.
|
|
29
|
+
*
|
|
30
|
+
* @param rawResponses - Agents SDK model responses generated by the run.
|
|
31
|
+
* @returns Final normalized citations, or null when annotations are unavailable.
|
|
32
|
+
*/
|
|
33
|
+
export function agentCitationsFromFinalModelResponse(rawResponses: unknown): AgentCitation[] | null {
|
|
34
|
+
if (!Array.isArray(rawResponses) || rawResponses.length === 0) return null;
|
|
35
|
+
|
|
36
|
+
const response = recordValue(rawResponses.at(-1));
|
|
37
|
+
const output = Array.isArray(response?.output) ? response.output : null;
|
|
38
|
+
|
|
39
|
+
if (!output || output.length === 0) return null;
|
|
40
|
+
|
|
41
|
+
const message = recordValue(output.at(-1));
|
|
42
|
+
|
|
43
|
+
if (!message) return null;
|
|
44
|
+
|
|
45
|
+
const content = message.type === 'message' && Array.isArray(message.content)
|
|
46
|
+
? message.content
|
|
47
|
+
: null;
|
|
48
|
+
|
|
49
|
+
if (!content) return null;
|
|
50
|
+
|
|
51
|
+
const messageId = stringValue(message.id);
|
|
52
|
+
const citations: AgentCitation[] = [];
|
|
53
|
+
let textOffset = 0;
|
|
54
|
+
let hasAnnotationCollection = false;
|
|
55
|
+
|
|
56
|
+
for (let contentIndex = 0; contentIndex < content.length; contentIndex += 1) {
|
|
57
|
+
const part = recordValue(content[contentIndex]);
|
|
58
|
+
|
|
59
|
+
if (part?.type !== 'output_text') continue;
|
|
60
|
+
|
|
61
|
+
const providerData = recordValue(part.providerData);
|
|
62
|
+
const annotations = Array.isArray(providerData?.annotations)
|
|
63
|
+
? providerData.annotations
|
|
64
|
+
: Array.isArray(part.annotations)
|
|
65
|
+
? part.annotations
|
|
66
|
+
: null;
|
|
67
|
+
|
|
68
|
+
if (annotations) {
|
|
69
|
+
hasAnnotationCollection = true;
|
|
70
|
+
|
|
71
|
+
for (let annotationIndex = 0; annotationIndex < annotations.length; annotationIndex += 1) {
|
|
72
|
+
const citation = providerUrlCitation(recordValue(annotations[annotationIndex]), {
|
|
73
|
+
id: citationId(messageId, contentIndex, annotationIndex),
|
|
74
|
+
offset: textOffset,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
if (citation) citations.push(citation);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
textOffset += stringValue(part.text)?.length ?? 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return hasAnnotationCollection ? normalizedAgentCitations(citations) : null;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Adds a citation to an in-memory collection when its occurrence is new.
|
|
89
|
+
*
|
|
90
|
+
* @param citations - Mutable citations collected for the current attempt.
|
|
91
|
+
* @param citation - Citation occurrence to remember.
|
|
92
|
+
* @returns True when the citation was added.
|
|
93
|
+
*/
|
|
94
|
+
export function rememberAgentCitation(citations: AgentCitation[], citation: AgentCitation): boolean {
|
|
95
|
+
const key = agentCitationOccurrenceKey(citation);
|
|
96
|
+
|
|
97
|
+
if (citations.some(existing => agentCitationOccurrenceKey(existing) === key)) return false;
|
|
98
|
+
|
|
99
|
+
citations.push(citation);
|
|
100
|
+
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Context needed to normalize a provider URL annotation.
|
|
106
|
+
*/
|
|
107
|
+
interface ProviderCitationContext {
|
|
108
|
+
/** Stable id assigned to this annotation occurrence. */
|
|
109
|
+
id: string;
|
|
110
|
+
|
|
111
|
+
/** Character offset of the containing output-text part. */
|
|
112
|
+
offset: number | null;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Converts a provider URL annotation into application's public citation contract.
|
|
117
|
+
*
|
|
118
|
+
* @param annotation - Raw provider annotation object.
|
|
119
|
+
* @param context - Stable id and complete-message character offset.
|
|
120
|
+
* @returns Valid normalized citation, or null when required data is absent.
|
|
121
|
+
*/
|
|
122
|
+
function providerUrlCitation(annotation: Record<string, unknown> | null, context: ProviderCitationContext): AgentCitation | null {
|
|
123
|
+
if (!annotation || annotation.type !== 'url_citation' || context.offset === null) return null;
|
|
124
|
+
|
|
125
|
+
const startIndex = integerValue(annotation.start_index) ?? integerValue(annotation.startIndex);
|
|
126
|
+
const endIndex = integerValue(annotation.end_index) ?? integerValue(annotation.endIndex);
|
|
127
|
+
const title = stringValue(annotation.title)?.trim();
|
|
128
|
+
const url = stringValue(annotation.url)?.trim();
|
|
129
|
+
|
|
130
|
+
if (startIndex === null || endIndex === null || !title || !url) return null;
|
|
131
|
+
|
|
132
|
+
const citations = normalizedAgentCitations([{
|
|
133
|
+
id: context.id,
|
|
134
|
+
type: 'url',
|
|
135
|
+
title,
|
|
136
|
+
url,
|
|
137
|
+
startIndex: context.offset + startIndex,
|
|
138
|
+
endIndex: context.offset + endIndex,
|
|
139
|
+
}]);
|
|
140
|
+
|
|
141
|
+
return citations[0] ?? null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Builds a stable id for one provider citation occurrence.
|
|
146
|
+
*
|
|
147
|
+
* @param itemId - Provider output message id when available.
|
|
148
|
+
* @param contentIndex - Output-text part index within the message.
|
|
149
|
+
* @param annotationIndex - Annotation index within the output-text part.
|
|
150
|
+
* @returns Stable citation id for streaming and restored UI state.
|
|
151
|
+
*/
|
|
152
|
+
function citationId(itemId: string | null, contentIndex: number, annotationIndex: number | null): string {
|
|
153
|
+
return `${itemId || 'output'}:${contentIndex}:${annotationIndex ?? 0}`;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Narrows an unknown JSON value to a non-array record.
|
|
158
|
+
*
|
|
159
|
+
* @param value - Unknown provider value.
|
|
160
|
+
* @returns Object record, or null for primitives and arrays.
|
|
161
|
+
*/
|
|
162
|
+
function recordValue(value: unknown): Record<string, unknown> | null {
|
|
163
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
164
|
+
? value as Record<string, unknown>
|
|
165
|
+
: null;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Reads a non-empty string from an unknown provider value.
|
|
170
|
+
*
|
|
171
|
+
* @param value - Unknown provider value.
|
|
172
|
+
* @returns String value, or null when absent.
|
|
173
|
+
*/
|
|
174
|
+
function stringValue(value: unknown): string | null {
|
|
175
|
+
return typeof value === 'string' && value ? value : null;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Reads a non-negative integer from an unknown provider value.
|
|
180
|
+
*
|
|
181
|
+
* @param value - Unknown provider index value.
|
|
182
|
+
* @returns Non-negative integer, or null when invalid.
|
|
183
|
+
*/
|
|
184
|
+
function integerValue(value: unknown): number | null {
|
|
185
|
+
return typeof value === 'number' && Number.isInteger(value) && value >= 0 ? value : null;
|
|
186
|
+
}
|