@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
package/LICENSE
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Licence scope
|
|
2
|
+
|
|
3
|
+
The MIT licence below applies to the DB3 framework packages (@db3.ai/app,
|
|
4
|
+
@db3.ai/pure and @db3.ai/create), their framework documentation, the starter
|
|
5
|
+
application in apps/starter, and the framework release tooling. Third-party dependencies retain
|
|
6
|
+
their own licences.
|
|
7
|
+
Applications and other packages in this development repository are excluded
|
|
8
|
+
unless they carry their own licence granting rights. In particular, this file
|
|
9
|
+
does not license private product code merely because it shares this repository.
|
|
10
|
+
|
|
11
|
+
MIT License
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2026 DB3 contributors
|
|
14
|
+
|
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
16
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
17
|
+
in the Software without restriction, including without limitation the rights
|
|
18
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
19
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
20
|
+
furnished to do so, subject to the following conditions:
|
|
21
|
+
|
|
22
|
+
The above copyright notice and this permission notice shall be included in all
|
|
23
|
+
copies or substantial portions of the Software.
|
|
24
|
+
|
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
26
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
27
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
28
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
29
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
30
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
31
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# @db3.ai/app
|
|
2
|
+
|
|
3
|
+
Shared backend framework package for DB3 applications.
|
|
4
|
+
|
|
5
|
+
The framework is intended to support both code-first and visual application
|
|
6
|
+
development. Framework operations should expose reusable contracts so CLI,
|
|
7
|
+
GUI, programmatic, and collaborative AI clients can share the same behavior
|
|
8
|
+
rather than creating parallel implementations. Source-repository contributors
|
|
9
|
+
can read the product direction in `docs/framework-goals.md`; that repository-only
|
|
10
|
+
document is not part of the installed runtime package.
|
|
11
|
+
|
|
12
|
+
This package owns reusable runtime services and data-layer mechanics:
|
|
13
|
+
|
|
14
|
+
- `config`: explicit config repositories and environment parsing helpers.
|
|
15
|
+
- `cli`: shared `db3` commands, interactive app REPL, service registration, help and app lifecycle.
|
|
16
|
+
- `cache`: named cache stores and driver-backed value lifecycles.
|
|
17
|
+
- `events`: synchronous and asynchronous in-process event dispatch.
|
|
18
|
+
- `logging`: structured application logging and development-tool delivery.
|
|
19
|
+
- `server`: `App`, service discovery, request context, and database wiring.
|
|
20
|
+
- `db`: ActiveRecord, FieldType, projections, schema installation, and SQL error helpers.
|
|
21
|
+
- `validation`: request-data validation for routes, services, and jobs.
|
|
22
|
+
- `auth`: user identity, configurable auth providers, auth tokens, password reset tokens, and password hashing.
|
|
23
|
+
- `ai`: agents with function calls, streaming, durable conversations, provider request tracking, images, embeddings, structured output and failover.
|
|
24
|
+
- `queue`: database-backed dispatch, handlers, job classes, retry/failure records, and workers.
|
|
25
|
+
- `serialization`: registered root-constructor serialization from ordinary JSON state, with ActiveRecord identity references as the only special nested value.
|
|
26
|
+
- `scheduler`: code-owned daily schedules, durable occurrence claims, queue correlation, and a dedicated worker.
|
|
27
|
+
- `flows`: code-backed graph definitions, queue orchestration, durable block observability, nested flows, and replay.
|
|
28
|
+
- `mail`: file, Mailgun, and Resend mail transports.
|
|
29
|
+
- `storage`: named local and S3-compatible disks, streams, transfers and scoped file operations.
|
|
30
|
+
- `media`: scoped media libraries, managed file ULIDs, and browser-visible folder trees.
|
|
31
|
+
- `security`: central key configuration and versioned authenticated encryption for application secrets.
|
|
32
|
+
- `ssr`: optional render contracts, document assembly, safe hydration state, and Fastify adaptation for public HTML.
|
|
33
|
+
- `url`: canonical base-URL configuration and standard URL resolution, without a named-route registry.
|
|
34
|
+
|
|
35
|
+
Keep app-specific behavior in `apps/*`. Move code here only when it is reusable framework behavior.
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
After the first public release, install the framework runtime with:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
npm install @db3.ai/app
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Install optional Fastify or Vite peer packages only when using their matching
|
|
46
|
+
SSR adapters.
|
|
47
|
+
|
|
48
|
+
## Publishing status
|
|
49
|
+
|
|
50
|
+
The framework is MIT licensed; private applications sharing the development
|
|
51
|
+
repository are excluded by the licence scope. Public framework source belongs
|
|
52
|
+
in `github.com/db3ai/framework`. The published packages are `@db3.ai/app`,
|
|
53
|
+
`@db3.ai/pure` and `@db3.ai/create`. Maintainers can publish a verified beta from
|
|
54
|
+
the repository root with `npm run framework:publish -- --version 0.1.0-beta.1`;
|
|
55
|
+
add `--dry-run` to inspect it without publishing. npm handles packaging, login
|
|
56
|
+
and upload. See `docs/framework-release.md` for release checks and the manual
|
|
57
|
+
bootstrap and trusted-publishing workflows.
|
|
58
|
+
|
|
59
|
+
The [installation guide](https://db3.ai/docs/installation) distinguishes the
|
|
60
|
+
unpublished preview tarballs from the future npm install command. The
|
|
61
|
+
[first app](https://db3.ai/docs/create-app) uses the shipped
|
|
62
|
+
`src/server/examples` files to run and test an independent Fastify application.
|
|
63
|
+
Auth, Storage, Media and Scheduler also ship their service-owned examples.
|
|
64
|
+
|
|
65
|
+
## Consumer package artifacts
|
|
66
|
+
|
|
67
|
+
From the repository root, stage both compiled packages and run the clean
|
|
68
|
+
consumer install gate with:
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
npm run framework:package
|
|
72
|
+
npm run framework:package:test
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The first command writes publish-shaped packages to
|
|
76
|
+
`dist/framework-packages/pure` and `dist/framework-packages/app`. The second
|
|
77
|
+
packs both directories, installs the tarballs in a temporary project, imports
|
|
78
|
+
every public runtime subpath, type-checks representative declarations, verifies
|
|
79
|
+
installed Markdown links, and exercises the `db3-agents` scaffold.
|
|
80
|
+
|
|
81
|
+
The workspace manifests intentionally keep their source exports for monorepo
|
|
82
|
+
development; only the staged manifests target compiled JavaScript and
|
|
83
|
+
declarations. Workspace manifests, runtime imports, examples, documentation,
|
|
84
|
+
and consumer artifacts all use the same `@db3.ai/*` package names.
|
|
85
|
+
The ordinary staged manifest omits the private monorepo repository identity.
|
|
86
|
+
Release-mode staging requires the exact dedicated public framework repository
|
|
87
|
+
and rejects ambiguous or non-GitHub URLs. Candidate preparation also requires
|
|
88
|
+
both checked-in versions and App's exact Pure dependency to match the requested
|
|
89
|
+
tag; it does not rewrite versions. Always prepare Pure before App because App
|
|
90
|
+
depends on the matching Pure version. These commands do not publish either
|
|
91
|
+
package.
|
|
92
|
+
|
|
93
|
+
npm provenance requires a public repository whose package `repository.url`
|
|
94
|
+
matches the GitHub source exactly. Once that repository is established, publish
|
|
95
|
+
from its trusted GitHub Actions workflow so npm can attach provenance without a
|
|
96
|
+
long-lived publish token.
|
|
97
|
+
|
|
98
|
+
The eventual public workflow must supply its exact canonical source URL through
|
|
99
|
+
either the option or environment variable below:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
npm run framework:package -- --repository-url git+https://github.com/OWNER/REPOSITORY.git
|
|
103
|
+
DB3_FRAMEWORK_REPOSITORY_URL=git+https://github.com/OWNER/REPOSITORY.git npm run framework:package
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Only canonical public GitHub URLs are accepted. In this explicit release mode,
|
|
107
|
+
the staged manifests include package-directory repository metadata and enable
|
|
108
|
+
`publishConfig.provenance`; neither command publishes a package.
|
|
109
|
+
|
|
110
|
+
## Testing
|
|
111
|
+
|
|
112
|
+
Framework tests live with the service they exercise under
|
|
113
|
+
`src/{service}/tests`. Run the complete package suite before considering a
|
|
114
|
+
framework change finished:
|
|
115
|
+
|
|
116
|
+
```sh
|
|
117
|
+
npm run check --workspace packages/app
|
|
118
|
+
npm test --workspace packages/app
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Run one service while developing a focused change by passing its directory
|
|
122
|
+
name to the service runner:
|
|
123
|
+
|
|
124
|
+
```sh
|
|
125
|
+
npm run test:service --workspace packages/app -- queue
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
The service runner fails when the service does not have a test directory, so a
|
|
129
|
+
misspelled or stale service name cannot produce an accidental green result.
|
|
130
|
+
Coverage uses the same complete suite and enforces package-wide regression
|
|
131
|
+
floors of 75% statements, 65% branches, 80% functions, and 77% lines:
|
|
132
|
+
|
|
133
|
+
```sh
|
|
134
|
+
npm run test:coverage --workspace packages/app
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The test scripts optionally load connection credentials from the package-owned
|
|
138
|
+
`packages/app/.env.test` file, then force `NODE_ENV=test`,
|
|
139
|
+
`DB_DATABASE=db3_app_test`, and `DB_TEST_DATABASE_PREFIX=db3_app_test`.
|
|
140
|
+
Start from the committed example when local credentials are needed:
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
cp packages/app/.env.test.example packages/app/.env.test
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Framework integration suites create and remove unique disposable databases
|
|
147
|
+
under that test-only namespace. They do not read application configuration or connect
|
|
148
|
+
to an application's named database. A `DATABASE_URL` supplied by CI must itself
|
|
149
|
+
target `db3_app_test` (or a disposable database with that prefix). The configured
|
|
150
|
+
database server must be reachable for the complete suite and service suites that
|
|
151
|
+
own database integration tests.
|
|
152
|
+
|
|
153
|
+
Redis Queue integration tests use `QUEUE_REDIS_URL` or the separate
|
|
154
|
+
`QUEUE_REDIS_HOST` and `QUEUE_REDIS_PORT` settings. They skip during an ordinary
|
|
155
|
+
local run when Redis is unavailable. A release gate must prove the Redis driver
|
|
156
|
+
against a real server and fail instead of skipping it:
|
|
157
|
+
|
|
158
|
+
```sh
|
|
159
|
+
npm run test:release --workspace packages/app
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The release command runs the source and example type checks followed by the
|
|
163
|
+
complete coverage suite. It sets `TEST_REDIS_REQUIRED=1`, so an unreachable
|
|
164
|
+
Redis server is a failure rather than a conditional skip.
|
|
165
|
+
|
|
166
|
+
Tests should exercise public typed contracts and observable behaviour with real
|
|
167
|
+
framework components. Mock only external provider boundaries, and cover failure,
|
|
168
|
+
retry, cleanup, and lifecycle behaviour when those outcomes are part of the
|
|
169
|
+
service contract. Public API changes also require a consumer type check through
|
|
170
|
+
the exported package subpath; importing a private source file is not sufficient.
|
|
171
|
+
When a service supports multiple drivers, apply the same behavioural contract to
|
|
172
|
+
each supported driver where practical, and require its external infrastructure
|
|
173
|
+
in the release gate instead of accepting a skipped suite as proof.
|
|
174
|
+
|
|
175
|
+
The richer guide at [db3.ai](https://db3.ai/) includes dedicated sections for
|
|
176
|
+
Mail, Queue, creating jobs, and queue workers.
|
|
177
|
+
|
|
178
|
+
See [src/cli/README.md](./src/cli/README.md) for the shared `db3` executable and
|
|
179
|
+
service command registration. Generated apps configure it in `server/cli.config.ts`;
|
|
180
|
+
database commands are owned by DB and job generation is owned by Queue.
|
|
181
|
+
|
|
182
|
+
See [src/flows/README.md](./src/flows/README.md) for flow definitions, block contracts, file providers, durable run models, nested execution, and replay.
|
|
183
|
+
|
|
184
|
+
See [src/scheduler/README.md](./src/scheduler/README.md) for scheduled jobs,
|
|
185
|
+
inline calls, durable deduplication, occurrence history, and process commands.
|
|
186
|
+
|
|
187
|
+
See [src/serialization/README.md](./src/serialization/README.md) for
|
|
188
|
+
`app().serializer`, registry configuration, supported values, and ActiveRecord
|
|
189
|
+
reference semantics.
|
|
190
|
+
|
|
191
|
+
See [src/security/README.md](./src/security/README.md) for `app().security`,
|
|
192
|
+
application-key configuration, authenticated encryption, and encrypted JSON
|
|
193
|
+
model fields.
|
|
194
|
+
|
|
195
|
+
See [src/ssr/README.md](./src/ssr/README.md) for the optional server-rendering
|
|
196
|
+
boundary, document markers, request isolation, and Fastify adapter.
|
|
197
|
+
|
|
198
|
+
## Auth Providers
|
|
199
|
+
|
|
200
|
+
`packages/app/src/auth` treats the user row as the account and `auth_providers`
|
|
201
|
+
rows as the ways that account can authenticate. Provider-specific code lives in
|
|
202
|
+
`packages/app/src/auth/providers`: the built-in `password` provider stores
|
|
203
|
+
password credentials in `auth_providers`, while the Google provider verifies
|
|
204
|
+
Google ID tokens and stores only safe profile claims.
|
|
205
|
+
|
|
206
|
+
Apps configure supported providers through the app config repository at
|
|
207
|
+
`auth.providers`:
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
import {
|
|
211
|
+
GOOGLE_AUTH_PROVIDER,
|
|
212
|
+
PASSWORD_AUTH_PROVIDER,
|
|
213
|
+
} from '@db3.ai/app/auth';
|
|
214
|
+
|
|
215
|
+
const app = new App({
|
|
216
|
+
config: {
|
|
217
|
+
auth: {
|
|
218
|
+
providers: {
|
|
219
|
+
[PASSWORD_AUTH_PROVIDER]: {
|
|
220
|
+
driver: PASSWORD_AUTH_PROVIDER,
|
|
221
|
+
},
|
|
222
|
+
[GOOGLE_AUTH_PROVIDER]: {
|
|
223
|
+
driver: GOOGLE_AUTH_PROVIDER,
|
|
224
|
+
clientIds: ['google-client-id.apps.googleusercontent.com'],
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Tests and advanced apps may also pass concrete provider driver instances through
|
|
233
|
+
`AppOptions.auth.providers`.
|
|
234
|
+
|
|
235
|
+
Provider rows can be listed, linked, and unlinked through the auth service. The
|
|
236
|
+
framework refuses to unlink the final provider for a user so every account keeps
|
|
237
|
+
at least one usable login method.
|
|
238
|
+
|
|
239
|
+
See [src/auth/README.md](./src/auth/README.md) for the account/provider mental
|
|
240
|
+
model, route and session examples, provider management, custom drivers, security
|
|
241
|
+
responsibilities, and complete password and Google setup instructions.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# @db3.ai/app Agent Instructions
|
|
2
|
+
|
|
3
|
+
This file is the installed framework guide for AI tools working in a consuming
|
|
4
|
+
application. The consuming repository's `AGENTS.md` should route framework work
|
|
5
|
+
here; this file does not replace the application's own product instructions.
|
|
6
|
+
|
|
7
|
+
## Resolve the installed framework
|
|
8
|
+
|
|
9
|
+
Use Node's package resolver instead of assuming a particular `node_modules`
|
|
10
|
+
layout:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
node -p "require.resolve('@db3.ai/app/agent-instructions')"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The returned file is inside the installed `@db3.ai/app` package. Resolve the
|
|
17
|
+
other paths below relative to its directory.
|
|
18
|
+
|
|
19
|
+
## Read the smallest relevant surface
|
|
20
|
+
|
|
21
|
+
- Read `package.json` for supported public entry points.
|
|
22
|
+
- Read `README.md` for package ownership and application setup.
|
|
23
|
+
- For one service, read `src/{service}/README.md` when it is shipped.
|
|
24
|
+
- Use the declarations exposed by the relevant `@db3.ai/app/{service}` entry
|
|
25
|
+
point as the exact public API contract.
|
|
26
|
+
- Use service-owned examples under `src/{service}/examples/` when present.
|
|
27
|
+
|
|
28
|
+
Do not infer supported APIs from unexported files or copy implementation details
|
|
29
|
+
from `node_modules` into the application. If the installed declarations,
|
|
30
|
+
documentation and runtime disagree, treat that as a framework defect and record
|
|
31
|
+
the installed package version.
|
|
32
|
+
|
|
33
|
+
## Application boundaries
|
|
34
|
+
|
|
35
|
+
- For new applications, use `client/` for browser code and `server/` for backend
|
|
36
|
+
code. Keep committed migrations and the schema snapshot in `server/database/`,
|
|
37
|
+
and behaviour tests in `tests/`. Browser database access goes through the server API.
|
|
38
|
+
- Configure app migrations with `dbOptions: { migrations: { models } }`.
|
|
39
|
+
The framework fixes paths to `server/database/migrations/` and
|
|
40
|
+
`server/database/schema.snapshot.json` beneath `App.directory`; no separate
|
|
41
|
+
`migrations.ts` configuration is needed. The starter anchors the app root with
|
|
42
|
+
`directory: new URL('../', import.meta.url)` in `server/app.ts`.
|
|
43
|
+
- Register service commands in `server/cli.config.ts` using the shared `db3` CLI.
|
|
44
|
+
Keep command implementations in their owning service and reuse its public operations.
|
|
45
|
+
- Keep product models, routes, jobs and policy in the consuming application.
|
|
46
|
+
- Use ActiveRecord logical field names and let fields own database mapping,
|
|
47
|
+
conversion, validation and JSON values.
|
|
48
|
+
- Resolve normal application services through the active `App` rather than
|
|
49
|
+
threading optional Knex connections through app code.
|
|
50
|
+
- Put reusable mechanics in the framework only when they are genuinely shared.
|
|
51
|
+
|
|
52
|
+
## AI workflows
|
|
53
|
+
|
|
54
|
+
For AI work, read `src/ai/README.md` and its examples first. Use `app().ai` and
|
|
55
|
+
the exported `Agent` class for provider calls, tools, conversations, request
|
|
56
|
+
tracking and queued runs. Keep application prompts, authorization, storage
|
|
57
|
+
destinations and commercial policy in the app. Extend the shipped AI records
|
|
58
|
+
through `ai.models` and committed migrations. Do not copy the SDK runner or
|
|
59
|
+
tracking implementation into application helpers or assume fluent builders
|
|
60
|
+
that are absent from the installed declarations.
|
|
61
|
+
|
|
62
|
+
## Verification
|
|
63
|
+
|
|
64
|
+
- Type-check application code against the installed package exports.
|
|
65
|
+
- Add behavioural tests for application workflows using real framework services.
|
|
66
|
+
- Use disposable databases for database-backed tests.
|
|
67
|
+
- Mock external providers, not framework-owned behavior.
|
|
68
|
+
- Run the consuming application's focused tests and type check after changing
|
|
69
|
+
framework usage.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
|
|
6
|
+
const START_MARKER = '<!-- @db3.ai/app:start -->';
|
|
7
|
+
const END_MARKER = '<!-- @db3.ai/app:end -->';
|
|
8
|
+
|
|
9
|
+
const options = parseArguments(process.argv.slice(2));
|
|
10
|
+
const targetPath = resolve(process.cwd(), options.target);
|
|
11
|
+
const template = await readFile(
|
|
12
|
+
new URL('../templates/AGENTS.md', import.meta.url),
|
|
13
|
+
'utf8',
|
|
14
|
+
);
|
|
15
|
+
const existing = await readOptionalFile(targetPath);
|
|
16
|
+
const hasStartMarker = existing?.includes(START_MARKER) ?? false;
|
|
17
|
+
const hasEndMarker = existing?.includes(END_MARKER) ?? false;
|
|
18
|
+
|
|
19
|
+
if (hasStartMarker !== hasEndMarker) {
|
|
20
|
+
throw new Error(
|
|
21
|
+
`Refusing to update ${targetPath} because its @db3.ai/app markers are incomplete.`,
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (options.check) {
|
|
26
|
+
if (!hasStartMarker) {
|
|
27
|
+
console.error(`${targetPath} does not contain the @db3.ai/app instruction scaffold.`);
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
} else {
|
|
30
|
+
console.log(`${targetPath} contains the @db3.ai/app instruction scaffold.`);
|
|
31
|
+
}
|
|
32
|
+
} else if (hasStartMarker) {
|
|
33
|
+
if (options.update) {
|
|
34
|
+
const updated = replaceScaffold(existing ?? '', template);
|
|
35
|
+
|
|
36
|
+
await writeFile(targetPath, updated, 'utf8');
|
|
37
|
+
console.log(`Updated the @db3.ai/app instructions in ${targetPath}.`);
|
|
38
|
+
} else {
|
|
39
|
+
console.log(`${targetPath} already contains the @db3.ai/app instruction scaffold.`);
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
const updated = appendScaffold(existing, template);
|
|
43
|
+
|
|
44
|
+
await writeFile(targetPath, updated, 'utf8');
|
|
45
|
+
console.log(`Added the @db3.ai/app instruction scaffold to ${targetPath}.`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Parses supported command-line options for the scaffold command.
|
|
50
|
+
*
|
|
51
|
+
* @param {string[]} args - Command-line arguments after the executable name.
|
|
52
|
+
* @returns {{ target: string, check: boolean, update: boolean }} Parsed options.
|
|
53
|
+
*/
|
|
54
|
+
function parseArguments(args) {
|
|
55
|
+
const parsed = {
|
|
56
|
+
target: 'AGENTS.md',
|
|
57
|
+
check: false,
|
|
58
|
+
update: false,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
62
|
+
const argument = args[index];
|
|
63
|
+
|
|
64
|
+
if (argument === '--check') {
|
|
65
|
+
parsed.check = true;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (argument === '--update') {
|
|
70
|
+
parsed.update = true;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (argument === '--target') {
|
|
75
|
+
const target = args[index + 1];
|
|
76
|
+
|
|
77
|
+
if (!target) {
|
|
78
|
+
throw new Error('--target requires a file path.');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
parsed.target = target;
|
|
82
|
+
index += 1;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
throw new Error(`Unknown db3-agents option "${argument}".`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (parsed.check && parsed.update) {
|
|
90
|
+
throw new Error('--check and --update cannot be used together.');
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return parsed;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Reads an existing instruction file without failing when it is absent.
|
|
98
|
+
*
|
|
99
|
+
* @param {string} path - Absolute instruction-file path.
|
|
100
|
+
* @returns {Promise<string | null>} Existing content or null when missing.
|
|
101
|
+
*/
|
|
102
|
+
async function readOptionalFile(path) {
|
|
103
|
+
try {
|
|
104
|
+
return await readFile(path, 'utf8');
|
|
105
|
+
} catch (error) {
|
|
106
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Appends the framework block without disturbing existing project guidance.
|
|
116
|
+
*
|
|
117
|
+
* @param {string | null} existing - Existing instruction content, when present.
|
|
118
|
+
* @param {string} template - Current framework scaffold.
|
|
119
|
+
* @returns {string} Complete instruction file content.
|
|
120
|
+
*/
|
|
121
|
+
function appendScaffold(existing, template) {
|
|
122
|
+
const prefix = existing?.trimEnd();
|
|
123
|
+
|
|
124
|
+
return prefix ? `${prefix}\n\n${template}` : template;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Replaces only the marked framework block in an existing instruction file.
|
|
129
|
+
*
|
|
130
|
+
* @param {string} existing - Existing instruction content containing both markers.
|
|
131
|
+
* @param {string} template - Current framework scaffold.
|
|
132
|
+
* @returns {string} Updated instruction file content.
|
|
133
|
+
*/
|
|
134
|
+
function replaceScaffold(existing, template) {
|
|
135
|
+
const start = existing.indexOf(START_MARKER);
|
|
136
|
+
const end = existing.indexOf(END_MARKER, start);
|
|
137
|
+
const suffixStart = end + END_MARKER.length;
|
|
138
|
+
|
|
139
|
+
return `${existing.slice(0, start)}${template.trimEnd()}${existing.slice(suffixStart)}`;
|
|
140
|
+
}
|
package/bin/db3.mjs
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { register } from 'tsx/esm/api';
|
|
3
|
+
|
|
4
|
+
// The workspace resolves public exports to TypeScript; installed packages resolve to JavaScript.
|
|
5
|
+
const unregister = register();
|
|
6
|
+
try {
|
|
7
|
+
const { runDb3 } = await import('@db3.ai/app/cli');
|
|
8
|
+
process.exitCode = await runDb3(process.argv.slice(2));
|
|
9
|
+
} finally {
|
|
10
|
+
unregister();
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raised when an AI operation needs provider credentials but none are configured.
|
|
3
|
+
*/
|
|
4
|
+
export declare class AIConfigurationError extends Error {
|
|
5
|
+
/** Creates a missing-provider-configuration error. */
|
|
6
|
+
constructor(message?: string);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Raised when the provider rejects a request or returns a payload without text.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AIRequestError extends Error {
|
|
12
|
+
readonly code: string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a provider request failure.
|
|
15
|
+
*
|
|
16
|
+
* @param message - Human-readable provider failure message.
|
|
17
|
+
* @param code - Stable provider error code, when supplied.
|
|
18
|
+
*/
|
|
19
|
+
constructor(message?: string, code?: string | null);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Raised when the application allowance hook rejects an AI request.
|
|
23
|
+
*/
|
|
24
|
+
export declare class AIAllowanceExceededError extends Error {
|
|
25
|
+
/** Stable public failure code; applications may specialize it for their own allowance UI. */
|
|
26
|
+
readonly publicCode: string;
|
|
27
|
+
/**
|
|
28
|
+
* Create an allowance failure.
|
|
29
|
+
*
|
|
30
|
+
* @param message - Public error message for the denied request.
|
|
31
|
+
*/
|
|
32
|
+
constructor(message?: string);
|
|
33
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raised when an AI operation needs provider credentials but none are configured.
|
|
3
|
+
*/
|
|
4
|
+
export class AIConfigurationError extends Error {
|
|
5
|
+
/** Creates a missing-provider-configuration error. */
|
|
6
|
+
constructor(message = 'Set OPENAI_API_KEY before using AI features.') {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'AIConfigurationError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Raised when the provider rejects a request or returns a payload without text.
|
|
13
|
+
*/
|
|
14
|
+
export class AIRequestError extends Error {
|
|
15
|
+
code;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a provider request failure.
|
|
18
|
+
*
|
|
19
|
+
* @param message - Human-readable provider failure message.
|
|
20
|
+
* @param code - Stable provider error code, when supplied.
|
|
21
|
+
*/
|
|
22
|
+
constructor(message = 'The AI provider did not return a valid response.', code = null) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.code = code;
|
|
25
|
+
this.name = 'AIRequestError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Raised when the application allowance hook rejects an AI request.
|
|
30
|
+
*/
|
|
31
|
+
export class AIAllowanceExceededError extends Error {
|
|
32
|
+
/** Stable public failure code; applications may specialize it for their own allowance UI. */
|
|
33
|
+
publicCode = 'ai_allowance_exceeded';
|
|
34
|
+
/**
|
|
35
|
+
* Create an allowance failure.
|
|
36
|
+
*
|
|
37
|
+
* @param message - Public error message for the denied request.
|
|
38
|
+
*/
|
|
39
|
+
constructor(message = 'AI allowance has been reached for this period.') {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = 'AIAllowanceExceededError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decides whether a provider HTTP response should fail over to the next provider.
|
|
3
|
+
*
|
|
4
|
+
* Failover is reserved for transient availability problems and exhausted
|
|
5
|
+
* account capacity: rate limits, overload, 5xx, timeouts, and quota. Request
|
|
6
|
+
* problems such as validation or authentication failures stay terminal because
|
|
7
|
+
* retrying them on another provider repeats the same failure at extra cost.
|
|
8
|
+
*
|
|
9
|
+
* @param status - HTTP response status.
|
|
10
|
+
* @param payload - Parsed provider response payload.
|
|
11
|
+
* @returns True when the next provider in the chain should be attempted.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isFailoverableResponse(status: number, payload: unknown): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Decides whether a thrown provider or SDK failure should fail over.
|
|
16
|
+
*
|
|
17
|
+
* Local rate-limit deferrals count as failoverable because a full local bucket
|
|
18
|
+
* for one provider says nothing about the capacity of the next provider.
|
|
19
|
+
* Streaming SDK failures may carry a provider code without an HTTP status, so
|
|
20
|
+
* classification never relies on status alone.
|
|
21
|
+
*
|
|
22
|
+
* @param error - Unknown thrown value from a provider call or SDK run.
|
|
23
|
+
* @returns True when the next provider in the chain should be attempted.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isFailoverableFailure(error: unknown): boolean;
|