effect 4.0.5 → 4.0.6
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/ai-docs/package.json +1 -1
- package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Array.d.ts +117 -52
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +41 -20
- package/dist/Array.js.map +1 -1
- package/dist/Bytes.d.ts +79 -0
- package/dist/Bytes.d.ts.map +1 -0
- package/dist/Bytes.js +109 -0
- package/dist/Bytes.js.map +1 -0
- package/dist/Channel.d.ts +181 -13
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +125 -30
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +39 -21
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +26 -17
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +8 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +2 -1
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Cron.d.ts +2 -2
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +6 -3
- package/dist/Cron.js.map +1 -1
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +56 -16
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +487 -163
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +203 -37
- package/dist/Effect.js.map +1 -1
- package/dist/Equivalence.d.ts +2 -1
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +12 -8
- package/dist/Equivalence.js.map +1 -1
- package/dist/Exit.d.ts +24 -9
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -3
- package/dist/Exit.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +9 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +5 -2
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +5 -0
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -0
- package/dist/FileSystem.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js.map +1 -1
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +18 -17
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +19 -3
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +2 -2
- package/dist/Layer.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +19 -1
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +62 -6
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Metric.d.ts +132 -0
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +197 -25
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/Number.js +2 -2
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js.map +1 -1
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +8 -1
- package/dist/Path.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +12 -7
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +4 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +4 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +1 -1
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +12 -7
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +9 -6
- package/dist/RcMap.js.map +1 -1
- package/dist/Record.d.ts +51 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +17 -0
- package/dist/Record.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +5 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +5 -4
- package/dist/References.js.map +1 -1
- package/dist/RequestResolver.d.ts +31 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +39 -4
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Runtime.d.ts +3 -3
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +18 -15
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +384 -332
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +333 -19
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +5 -5
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +24 -8
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -3
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +15 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +4 -4
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +29 -51
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +56 -1
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +18 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +1 -1
- package/dist/SchemaTransformation.js +1 -1
- package/dist/Scope.d.ts +12 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +5 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +10 -7
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +9 -5
- package/dist/ScopedCache.js.map +1 -1
- package/dist/SemVer.d.ts +1196 -0
- package/dist/SemVer.d.ts.map +1 -0
- package/dist/SemVer.js +756 -0
- package/dist/SemVer.js.map +1 -0
- package/dist/SemVerRange.d.ts +559 -0
- package/dist/SemVerRange.d.ts.map +1 -0
- package/dist/SemVerRange.js +551 -0
- package/dist/SemVerRange.js.map +1 -0
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +6 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +235 -8
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +145 -60
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +4 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +8 -6
- package/dist/String.js.map +1 -1
- package/dist/TextDiff.d.ts +399 -0
- package/dist/TextDiff.d.ts.map +1 -0
- package/dist/TextDiff.js +634 -0
- package/dist/TextDiff.js.map +1 -0
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/ai/AiError.d.ts +68 -4
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +50 -2
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Chat.d.ts +1 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/Chat.js +6 -3
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/Decision.d.ts +46 -1
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +129 -11
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +182 -94
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/EmbeddingModel.d.ts +10 -0
- package/dist/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/ai/EmbeddingModel.js +21 -7
- package/dist/ai/EmbeddingModel.js.map +1 -1
- package/dist/ai/McpClient.d.ts +289 -0
- package/dist/ai/McpClient.d.ts.map +1 -0
- package/dist/ai/McpClient.js +819 -0
- package/dist/ai/McpClient.js.map +1 -0
- package/dist/ai/McpClientError.d.ts +254 -0
- package/dist/ai/McpClientError.d.ts.map +1 -0
- package/dist/ai/McpClientError.js +260 -0
- package/dist/ai/McpClientError.js.map +1 -0
- package/dist/ai/McpProtocol.d.ts +2 -2
- package/dist/ai/McpProtocol.d.ts.map +1 -1
- package/dist/ai/McpSchema.d.ts +368 -235
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +94 -24
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +25 -22
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +22 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +23 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +147 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +35 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +12 -4
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts +48 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +65 -12
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +16 -2
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -4
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
- package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
- package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
- package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
- package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
- package/dist/cli/CliError.d.ts +42 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +44 -5
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/Command.d.ts +286 -2
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +107 -6
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +5 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +115 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +56 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +3 -3
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +107 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +56 -0
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +84 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +122 -0
- package/dist/cli/TerminalCapabilities.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/internal/command.d.ts +2 -1
- package/dist/cli/internal/command.d.ts.map +1 -1
- package/dist/cli/internal/command.js +5 -2
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +4 -3
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +9 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +10 -8
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +18 -9
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +8 -5
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/formatter.d.ts +2 -0
- package/dist/cli/internal/formatter.d.ts.map +1 -0
- package/dist/cli/internal/formatter.js +15 -0
- package/dist/cli/internal/formatter.js.map +1 -0
- package/dist/cli/internal/lexer.js +24 -10
- package/dist/cli/internal/lexer.js.map +1 -1
- package/dist/cli/internal/parser.js +24 -12
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cluster/ClusterCron.d.ts +29 -1
- package/dist/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/cluster/ClusterCron.js +64 -32
- package/dist/cluster/ClusterCron.js.map +1 -1
- package/dist/cluster/ClusterMetrics.d.ts +143 -7
- package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
- package/dist/cluster/ClusterMetrics.js +151 -7
- package/dist/cluster/ClusterMetrics.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +37 -11
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +2 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +21 -0
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +54 -15
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +1 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +95 -32
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +20 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +40 -50
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +10 -4
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +65 -8
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevTools.d.ts +3 -2
- package/dist/devtools/DevTools.d.ts.map +1 -1
- package/dist/devtools/DevTools.js +3 -2
- package/dist/devtools/DevTools.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts +11 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +31 -4
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts +29 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Ini.d.ts.map +1 -1
- package/dist/encoding/Ini.js +3 -0
- package/dist/encoding/Ini.js.map +1 -1
- package/dist/encoding/JsonArray.d.ts +270 -0
- package/dist/encoding/JsonArray.d.ts.map +1 -0
- package/dist/encoding/JsonArray.js +691 -0
- package/dist/encoding/JsonArray.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +43 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +169 -18
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +9 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +12 -19
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Tar.d.ts +309 -0
- package/dist/encoding/Tar.d.ts.map +1 -0
- package/dist/encoding/Tar.js +1182 -0
- package/dist/encoding/Tar.js.map +1 -0
- package/dist/encoding/Toml.js +3 -3
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Xml.d.ts +464 -0
- package/dist/encoding/Xml.d.ts.map +1 -0
- package/dist/encoding/Xml.js +1619 -0
- package/dist/encoding/Xml.js.map +1 -0
- package/dist/encoding/Yaml.d.ts +6 -2
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +97 -34
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/Zip.d.ts +413 -0
- package/dist/encoding/Zip.d.ts.map +1 -0
- package/dist/encoding/Zip.js +1255 -0
- package/dist/encoding/Zip.js.map +1 -0
- package/dist/encoding/index.d.ts +20 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +20 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts +90 -5
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +488 -228
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +180 -12
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +394 -146
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +36 -30
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +97 -38
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +74 -34
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +45 -11
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +45 -8
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +51 -14
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +46 -3
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +119 -19
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +97 -70
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +288 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -0
- package/dist/eventlog/EventRow.js +435 -0
- package/dist/eventlog/EventRow.js.map +1 -0
- package/dist/eventlog/SqlEventJournal.d.ts +18 -18
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +387 -159
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/index.d.ts +5 -0
- package/dist/eventlog/index.d.ts.map +1 -1
- package/dist/eventlog/index.js +5 -0
- package/dist/eventlog/index.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +47 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +92 -0
- package/dist/eventlog/internal/conflicts.js.map +1 -0
- package/dist/graphql/GraphQLClientError.d.ts +2 -2
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +4 -18
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -9
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -3
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +2 -0
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +74 -32
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +8 -1
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +51 -4
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +10 -0
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +227 -0
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +261 -0
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +93 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +55 -16
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +127 -3
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +44 -2
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts +53 -0
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +47 -0
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +6 -2
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +21 -17
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/http/HttpIncomingMessage.js +3 -23
- package/dist/http/HttpIncomingMessage.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +119 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +159 -13
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +7 -2
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.d.ts +5 -2
- package/dist/http/HttpServerError.d.ts.map +1 -1
- package/dist/http/HttpServerError.js +5 -3
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +25 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +36 -10
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +17 -8
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +37 -21
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts +0 -12
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +21 -7
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +87 -5
- package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
- package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/headers.js +4 -12
- package/dist/http/MultipartParser/internal/headers.js.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.js +6 -27
- package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
- package/dist/http/Url.d.ts.map +1 -1
- package/dist/http/Url.js +6 -1
- package/dist/http/Url.js.map +1 -1
- package/dist/http/internal/decompression.js +17 -11
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/lazyStream.d.ts +2 -0
- package/dist/http/internal/lazyStream.d.ts.map +1 -0
- package/dist/http/internal/lazyStream.js +18 -0
- package/dist/http/internal/lazyStream.js.map +1 -0
- package/dist/http/internal/requestState.d.ts +2 -0
- package/dist/http/internal/requestState.d.ts.map +1 -0
- package/dist/http/internal/requestState.js +28 -0
- package/dist/http/internal/requestState.js.map +1 -0
- package/dist/http/internal/webResponse.d.ts +2 -0
- package/dist/http/internal/webResponse.d.ts.map +1 -0
- package/dist/http/internal/webResponse.js +12 -0
- package/dist/http/internal/webResponse.js.map +1 -0
- package/dist/http-api/HttpApi.js +1 -1
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +121 -18
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +29 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +83 -23
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +49 -5
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +58 -0
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +38 -12
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +2 -1
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js +6 -3
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +191 -9
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +137 -4
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiSwagger.d.ts +5 -0
- package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
- package/dist/http-api/HttpApiSwagger.js +14 -4
- package/dist/http-api/HttpApiSwagger.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts +13 -2
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +30 -9
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts +17 -3
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +57 -32
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/path.js +35 -10
- package/dist/http-api/internal/path.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +19 -7
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +85 -74
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hydration.d.ts +2 -0
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/internal/hydration.js +15 -0
- package/dist/internal/hydration.js.map +1 -0
- package/dist/internal/inflate.d.ts +2 -0
- package/dist/internal/inflate.d.ts.map +1 -0
- package/dist/internal/inflate.js +680 -0
- package/dist/internal/inflate.js.map +1 -0
- package/dist/internal/record.js +6 -0
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/request.js +20 -7
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +17 -22
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/interpreter.js +51 -36
- package/dist/internal/schema/interpreter.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +34 -33
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +7 -2
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +86 -1
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toFormatter.js +5 -5
- package/dist/internal/schema/toFormatter.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/trie.js +1 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.js +7 -3
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +2 -8
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +5 -12
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +5 -3
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/OtlpResource.d.ts +3 -1
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -4
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +5 -0
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +14 -3
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/internal/protobuf.d.ts +0 -9
- package/dist/observability/internal/protobuf.d.ts.map +1 -1
- package/dist/observability/internal/protobuf.js +2 -10
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/persistence/PersistedCache.js +1 -1
- package/dist/persistence/PersistedCache.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +6 -2
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +162 -84
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +28 -0
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +36 -8
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +8 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/UserDirectories.d.ts +129 -0
- package/dist/persistence/UserDirectories.d.ts.map +1 -0
- package/dist/persistence/UserDirectories.js +178 -0
- package/dist/persistence/UserDirectories.js.map +1 -0
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +2 -1
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +1 -1
- package/dist/reactivity/AsyncResult.js.map +1 -1
- package/dist/reactivity/Atom.d.ts +69 -30
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +40 -15
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +5 -5
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomHttpApi.js +1 -1
- package/dist/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js +44 -9
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/reactivity/AtomRpc.d.ts +3 -3
- package/dist/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/reactivity/AtomRpc.js +1 -1
- package/dist/reactivity/AtomRpc.js.map +1 -1
- package/dist/reactivity/Hydration.d.ts.map +1 -1
- package/dist/reactivity/Hydration.js +46 -12
- package/dist/reactivity/Hydration.js.map +1 -1
- package/dist/reactivity/Reactivity.d.ts +71 -7
- package/dist/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/reactivity/Reactivity.js +21 -12
- package/dist/reactivity/Reactivity.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +18 -0
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js +20 -0
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +26 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +196 -60
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +15 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +21 -5
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +9 -18
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/schema/Model.d.ts +1 -1
- package/dist/schema/VariantSchema.d.ts +22 -3
- package/dist/schema/VariantSchema.d.ts.map +1 -1
- package/dist/schema/VariantSchema.js +32 -18
- package/dist/schema/VariantSchema.js.map +1 -1
- package/dist/socket/Socket.d.ts +23 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +36 -3
- package/dist/socket/Socket.js.map +1 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +15 -3
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +143 -5
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +148 -27
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +9 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +9 -0
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +3 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -5
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +4 -2
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +7 -1
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +9 -3
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +18 -4
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Array.ts +128 -55
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +263 -436
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +2 -1
- package/src/Cron.ts +6 -3
- package/src/Duration.ts +66 -16
- package/src/Effect.ts +502 -167
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +24 -9
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +10 -0
- package/src/Graph.ts +171 -1263
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonSchema.ts +28 -3
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Metric.ts +249 -507
- package/src/MutableHashMap.ts +4 -473
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/Path.ts +9 -1
- package/src/PubSub.ts +12 -7
- package/src/Queue.ts +5 -37
- package/src/Random.ts +1 -1
- package/src/RcMap.ts +14 -8
- package/src/Record.ts +51 -0
- package/src/Ref.ts +7 -104
- package/src/References.ts +5 -4
- package/src/RequestResolver.ts +46 -87
- package/src/Resource.ts +1 -1
- package/src/Runtime.ts +19 -18
- package/src/Schedule.ts +2 -94
- package/src/Schema.ts +591 -356
- package/src/SchemaAST.ts +20 -9
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaRepresentation.ts +64 -1
- package/src/SchemaTransformation.ts +1 -1
- package/src/Scope.ts +12 -2
- package/src/ScopedCache.ts +17 -142
- package/src/SemVer.ts +1528 -0
- package/src/SemVerRange.ts +883 -0
- package/src/Sink.ts +6 -2
- package/src/Stream.ts +334 -1011
- package/src/String.ts +8 -8
- package/src/TextDiff.ts +766 -0
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/ai/AiError.ts +66 -4
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +49 -1
- package/src/ai/DecisionModel.ts +264 -108
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/McpClient.ts +1211 -0
- package/src/ai/McpClientError.ts +329 -0
- package/src/ai/McpProtocol.ts +2 -2
- package/src/ai/McpSchema.ts +153 -35
- package/src/ai/McpServer.ts +217 -220
- package/src/ai/Prompt.ts +49 -35
- package/src/ai/Response.ts +195 -65
- package/src/ai/Tool.ts +12 -4
- package/src/ai/Toolkit.ts +78 -10
- package/src/ai/index.ts +12 -0
- package/src/ai/internal/mcpCore.ts +13 -14
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
- package/src/ai/internal/mcpProtocol.ts +22 -2
- package/src/ai/internal/mcpRuntime.ts +3 -4
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
- package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
- package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
- package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
- package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
- package/src/cli/CliError.ts +49 -4
- package/src/cli/Command.ts +316 -9
- package/src/cli/Completions.ts +5 -0
- package/src/cli/Flag.ts +117 -0
- package/src/cli/GlobalFlag.ts +3 -3
- package/src/cli/Param.ts +122 -0
- package/src/cli/TerminalCapabilities.ts +156 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +8 -3
- package/src/cli/internal/completions/bash.ts +4 -3
- package/src/cli/internal/completions/descriptor.ts +11 -1
- package/src/cli/internal/completions/fish.ts +10 -8
- package/src/cli/internal/completions/powershell.ts +23 -14
- package/src/cli/internal/completions/zsh.ts +8 -5
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +31 -11
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +84 -41
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +7 -0
- package/src/cluster/Runners.ts +76 -25
- package/src/cluster/Sharding.ts +118 -38
- package/src/cluster/ShardingConfig.ts +15 -0
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +10 -4
- package/src/cluster/internal/entityManager.ts +80 -10
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +27 -10
- package/src/encoding/Base64Url.ts +31 -0
- package/src/encoding/Ini.ts +3 -0
- package/src/encoding/JsonArray.ts +849 -0
- package/src/encoding/Ndjson.ts +211 -20
- package/src/encoding/SchemaBinary.ts +14 -48
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +3 -3
- package/src/encoding/Xml.ts +2037 -0
- package/src/encoding/Yaml.ts +108 -36
- package/src/encoding/Zip.ts +1558 -0
- package/src/encoding/index.ts +24 -0
- package/src/eventlog/EventJournal.ts +611 -227
- package/src/eventlog/EventLog.ts +496 -196
- package/src/eventlog/EventLogEncryption.ts +128 -43
- package/src/eventlog/EventLogMessage.ts +62 -11
- package/src/eventlog/EventLogRemote.ts +77 -21
- package/src/eventlog/EventLogServer.ts +162 -20
- package/src/eventlog/EventLogServerEncrypted.ts +121 -80
- package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
- package/src/eventlog/EventRow.ts +706 -0
- package/src/eventlog/SqlEventJournal.ts +453 -173
- package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
- package/src/eventlog/index.ts +6 -0
- package/src/eventlog/internal/conflicts.ts +123 -0
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +12 -9
- package/src/graphql/GraphQLResolver.ts +90 -239
- package/src/http/FetchHttpClient.ts +56 -6
- package/src/http/FindMyWay/internal/router.ts +11 -0
- package/src/http/Headers.ts +337 -154
- package/src/http/HttpClient.ts +126 -135
- package/src/http/HttpClientRequest.ts +142 -4
- package/src/http/HttpClientResponse.ts +71 -0
- package/src/http/HttpEffect.ts +25 -33
- package/src/http/HttpIncomingMessage.ts +3 -23
- package/src/http/HttpMiddleware.ts +180 -23
- package/src/http/HttpRouter.ts +8 -2
- package/src/http/HttpServerError.ts +6 -3
- package/src/http/HttpServerRequest.ts +71 -12
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +25 -9
- package/src/http/MultipartParser/internal/contentType.ts +107 -6
- package/src/http/MultipartParser/internal/headers.ts +4 -16
- package/src/http/MultipartParser/internal/multipart.ts +10 -32
- package/src/http/Url.ts +6 -1
- package/src/http/internal/decompression.ts +26 -17
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +1 -1
- package/src/http-api/HttpApiBuilder.ts +151 -23
- package/src/http-api/HttpApiClient.ts +158 -30
- package/src/http-api/HttpApiEndpoint.ts +144 -33
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +275 -13
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +33 -9
- package/src/http-api/OpenApi.ts +84 -42
- package/src/http-api/internal/path.ts +40 -12
- package/src/index.ts +24 -0
- package/src/internal/core.ts +1 -1
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +120 -84
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/record.ts +6 -0
- package/src/internal/request.ts +21 -6
- package/src/internal/schedule.ts +20 -39
- package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +32 -30
- package/src/internal/schema/toCodeDocument.ts +8 -3
- package/src/internal/schema/toCodec.ts +116 -1
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
- package/src/internal/trie.ts +1 -3
- package/src/internal/uuid.ts +15 -10
- package/src/internal/version.ts +1 -1
- package/src/net/NetAddress.ts +2 -9
- package/src/observability/OtlpExporter.ts +5 -12
- package/src/observability/OtlpMetrics.ts +5 -3
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/PersistedCache.ts +3 -1
- package/src/persistence/PersistedQueue.ts +223 -153
- package/src/persistence/Persistence.ts +64 -30
- package/src/persistence/RateLimiter.ts +18 -21
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +2 -1
- package/src/reactivity/AsyncResult.ts +4 -38
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +50 -29
- package/src/reactivity/AtomRpc.ts +6 -22
- package/src/reactivity/Hydration.ts +53 -12
- package/src/reactivity/Reactivity.ts +97 -39
- package/src/rpc/Rpc.ts +21 -0
- package/src/rpc/RpcClient.ts +279 -103
- package/src/rpc/RpcSerialization.ts +21 -5
- package/src/rpc/RpcServer.ts +11 -20
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +19 -9
- package/src/sql/SqlClient.ts +266 -29
- package/src/sql/SqlResolver.ts +9 -0
- package/src/sql/Statement.ts +35 -8
- package/src/testing/TestClock.ts +4 -1
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/WorkflowEngine.ts +34 -10
- package/dist/http/internal/preResponseHandler.d.ts +0 -2
- package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
- package/dist/http/internal/preResponseHandler.js +0 -14
- package/dist/http/internal/preResponseHandler.js.map +0 -1
- package/src/http/internal/preResponseHandler.ts +0 -19
|
@@ -514,7 +514,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
514
514
|
module: "effect/persistence/PersistedQueue",
|
|
515
515
|
fiber: "refreshLocks"
|
|
516
516
|
}));
|
|
517
|
-
const scanKeys =
|
|
517
|
+
const scanKeys = Effect.fnUntraced(function* (pattern) {
|
|
518
518
|
const keys = [];
|
|
519
519
|
let cursor = "0";
|
|
520
520
|
do {
|
|
@@ -533,6 +533,9 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
533
533
|
name
|
|
534
534
|
}) => {
|
|
535
535
|
const keys = keysFor(name);
|
|
536
|
+
// replace lone surrogates like Redis' UTF-8 encoding does, so the id in
|
|
537
|
+
// the payload matches the id keys
|
|
538
|
+
id = id.replace(/[\uD800-\uDFFF]/gu, "\uFFFD");
|
|
536
539
|
const payload = JSON.stringify({
|
|
537
540
|
id,
|
|
538
541
|
element
|
|
@@ -608,10 +611,10 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
608
611
|
}));
|
|
609
612
|
}));
|
|
610
613
|
}),
|
|
611
|
-
cleanup: ({
|
|
614
|
+
cleanup: Effect.fnUntraced(function* ({
|
|
612
615
|
failedTimeToLive,
|
|
613
616
|
timeToLive
|
|
614
|
-
})
|
|
617
|
+
}) {
|
|
615
618
|
const now = clock.currentTimeMillisUnsafe();
|
|
616
619
|
const idsKeys = yield* scanKeys(`${prefix}*:ids`);
|
|
617
620
|
const cutoff = now - Duration.toMillis(timeToLive);
|
|
@@ -631,7 +634,7 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
|
|
|
631
634
|
discard: true
|
|
632
635
|
});
|
|
633
636
|
}
|
|
634
|
-
}
|
|
637
|
+
}, Effect.mapError(({
|
|
635
638
|
cause
|
|
636
639
|
}) => new PersistedQueueError({
|
|
637
640
|
message: "Failed to clean up persisted queue",
|
|
@@ -778,6 +781,26 @@ redis.call("ZADD", key_ids, "XX", "+inf", id)
|
|
|
778
781
|
`,
|
|
779
782
|
numberOfKeys: 5
|
|
780
783
|
});
|
|
784
|
+
// Every record starts with {"id":"...". Decode only the id, since Redis cjson
|
|
785
|
+
// rejects lone UTF-16 surrogates that JSON.stringify can emit in the element.
|
|
786
|
+
const queueRecordIdRedis = `
|
|
787
|
+
local function record_id(payload)
|
|
788
|
+
assert(string.sub(payload, 1, 7) == '{"id":"', "Invalid queue record id")
|
|
789
|
+
local i = 8
|
|
790
|
+
while i <= #payload do
|
|
791
|
+
local byte = string.byte(payload, i)
|
|
792
|
+
if byte == 92 then
|
|
793
|
+
-- Skip escaped characters, including escaped quotes and backslashes.
|
|
794
|
+
i = i + 2
|
|
795
|
+
elseif byte == 34 then
|
|
796
|
+
return cjson.decode(string.sub(payload, 7, i))
|
|
797
|
+
else
|
|
798
|
+
i = i + 1
|
|
799
|
+
end
|
|
800
|
+
end
|
|
801
|
+
error("Unterminated queue record id")
|
|
802
|
+
end
|
|
803
|
+
`;
|
|
781
804
|
const takeRedis = /*#__PURE__*/Redis.script((...args) => args, {
|
|
782
805
|
lua: `
|
|
783
806
|
local key_queue = KEYS[1]
|
|
@@ -790,6 +813,8 @@ local batch_size = tonumber(ARGV[3])
|
|
|
790
813
|
local pttl = ARGV[4]
|
|
791
814
|
local now = ARGV[5]
|
|
792
815
|
|
|
816
|
+
${queueRecordIdRedis}
|
|
817
|
+
|
|
793
818
|
local due = redis.call("ZRANGEBYSCORE", key_delayed, "-inf", now, "LIMIT", 0, 100)
|
|
794
819
|
if #due > 0 then
|
|
795
820
|
for i, payload in ipairs(due) do
|
|
@@ -798,14 +823,21 @@ if #due > 0 then
|
|
|
798
823
|
redis.call("ZREM", key_delayed, unpack(due))
|
|
799
824
|
end
|
|
800
825
|
|
|
801
|
-
local payloads = redis.call("
|
|
802
|
-
if
|
|
826
|
+
local payloads = redis.call("LRANGE", key_queue, 0, batch_size - 1)
|
|
827
|
+
if #payloads == 0 then
|
|
803
828
|
return nil
|
|
804
829
|
end
|
|
805
830
|
|
|
806
|
-
|
|
831
|
+
-- read every id before removing the batch, as script errors do not roll back
|
|
832
|
+
local ids = {}
|
|
807
833
|
for i, payload in ipairs(payloads) do
|
|
808
|
-
|
|
834
|
+
ids[i] = record_id(payload)
|
|
835
|
+
end
|
|
836
|
+
redis.call("LTRIM", key_queue, #payloads, -1)
|
|
837
|
+
|
|
838
|
+
local result = {}
|
|
839
|
+
for i, id in ipairs(ids) do
|
|
840
|
+
local payload = payloads[i]
|
|
809
841
|
local key_lock = prefix .. id .. ":lock"
|
|
810
842
|
redis.call("SET", key_lock, worker_id, "PX", pttl)
|
|
811
843
|
redis.call("HSET", key_pending, id, payload)
|
|
@@ -835,21 +867,20 @@ local key_ids = KEYS[2]
|
|
|
835
867
|
local cutoff = tonumber(ARGV[1])
|
|
836
868
|
local removed = 0
|
|
837
869
|
|
|
870
|
+
${queueRecordIdRedis}
|
|
871
|
+
|
|
838
872
|
while removed < ${trimFailedBatchSize} do
|
|
839
873
|
local head = redis.call("LINDEX", key_failed, 0)
|
|
840
874
|
if not head then break end
|
|
841
|
-
local ok,
|
|
875
|
+
local ok, id = pcall(record_id, head)
|
|
842
876
|
if ok then
|
|
843
|
-
|
|
877
|
+
-- failedAt is always the last field of a failed record
|
|
878
|
+
local failed_at = tonumber(string.match(head, ',"failedAt":([^,}]+)%}$'))
|
|
844
879
|
if failed_at ~= nil and failed_at >= cutoff then break end
|
|
845
|
-
redis.call("
|
|
846
|
-
if decoded.id ~= nil then
|
|
847
|
-
redis.call("ZREM", key_ids, decoded.id)
|
|
848
|
-
end
|
|
849
|
-
else
|
|
850
|
-
-- a corrupt head would otherwise block trimming of the whole list
|
|
851
|
-
redis.call("LPOP", key_failed)
|
|
880
|
+
redis.call("ZREM", key_ids, id)
|
|
852
881
|
end
|
|
882
|
+
-- a corrupt head would otherwise block trimming of the whole list
|
|
883
|
+
redis.call("LPOP", key_failed)
|
|
853
884
|
removed = removed + 1
|
|
854
885
|
end
|
|
855
886
|
|
|
@@ -871,8 +902,12 @@ export const layerStoreRedis = /*#__PURE__*/flow(makeStoreRedis, /*#__PURE__*/La
|
|
|
871
902
|
* **Details**
|
|
872
903
|
*
|
|
873
904
|
* The store creates the queue table and indexes, acquires rows with
|
|
874
|
-
* per-
|
|
875
|
-
* retries or completes rows according to the processing exit.
|
|
905
|
+
* per-acquisition locks, refreshes active locks while scoped takes are running,
|
|
906
|
+
* and retries or completes rows according to the processing exit.
|
|
907
|
+
*
|
|
908
|
+
* Settlements and refreshes only apply to the acquisition a handler received,
|
|
909
|
+
* so a handler whose lock lapsed can still settle or renew its claim until
|
|
910
|
+
* another poll re-claims the row.
|
|
876
911
|
*
|
|
877
912
|
* Offer and retry delays are measured with the database clock and rounded up
|
|
878
913
|
* to whole seconds.
|
|
@@ -888,7 +923,6 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
888
923
|
const pollInterval = Duration.max(options?.pollInterval ? Duration.fromInputUnsafe(options.pollInterval) : Duration.millis(1000), Duration.millis(1));
|
|
889
924
|
const lockRefreshInterval = Duration.max(options?.lockRefreshInterval ? Duration.fromInputUnsafe(options.lockRefreshInterval) : Duration.seconds(30), Duration.millis(1));
|
|
890
925
|
const lockExpiration = Duration.max(options?.lockExpiration ? Duration.fromInputUnsafe(options.lockExpiration) : Duration.minutes(2), Duration.millis(1));
|
|
891
|
-
const workerId = crypto.randomUUID();
|
|
892
926
|
const ackRetrySchedule = makeAckRetrySchedule(lockExpiration);
|
|
893
927
|
yield* Effect.orDie(Migrator.make({})({
|
|
894
928
|
loader: sqlMigrations(tableName),
|
|
@@ -938,14 +972,43 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
938
972
|
INSERT IGNORE INTO ${tableNameSql} (id, queue_name, element, state, attempts, visible_at, created_at, updated_at)
|
|
939
973
|
VALUES (${id}, ${name}, ${element}, 'pending', 0, ${visibleAt}, ${sqlNow}, ${sqlNow})
|
|
940
974
|
`,
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
975
|
+
// Avoids MERGE WITH (HOLDLOCK), whose range locks deadlock concurrent offers.
|
|
976
|
+
// - READCOMMITTEDLOCK makes the check wait for an uncommitted duplicate, even
|
|
977
|
+
// under read committed snapshot.
|
|
978
|
+
// - A duplicate inserted after the check raises 2601/2627. XACT_ABORT is off
|
|
979
|
+
// so that error doesn't doom the caller's transaction; it is restored
|
|
980
|
+
// before rethrowing any other error.
|
|
981
|
+
// - The nested sp_executesql restores XACT_ABORT on exit, including on
|
|
982
|
+
// cancellation.
|
|
983
|
+
mssql: () => {
|
|
984
|
+
// matches the SQL Server compiler's identifier escaping
|
|
985
|
+
const escape = name => `[${name.replace(/\]/g, "]]").replace(/\./g, "].[")}]`;
|
|
986
|
+
const table = escape(tableName);
|
|
987
|
+
const offerSql = `
|
|
988
|
+
SET XACT_ABORT OFF;
|
|
989
|
+
BEGIN TRY
|
|
990
|
+
IF NOT EXISTS (
|
|
991
|
+
SELECT 1 FROM ${table} WITH (READCOMMITTEDLOCK, FORCESEEK, INDEX(${escape(`idx_${tableName}_id`)}))
|
|
992
|
+
WHERE id = @id AND queue_name = @name
|
|
993
|
+
)
|
|
994
|
+
INSERT INTO ${table} (id, queue_name, element, state, attempts, visible_at, created_at, updated_at)
|
|
995
|
+
VALUES (@id, @name, @element, 'pending', 0, @visible_at, SYSDATETIME(), SYSDATETIME());
|
|
996
|
+
END TRY
|
|
997
|
+
BEGIN CATCH
|
|
998
|
+
IF ERROR_NUMBER() NOT IN (2601, 2627) OR XACT_STATE() = -1
|
|
999
|
+
BEGIN
|
|
1000
|
+
IF @xact_abort <> 0 SET XACT_ABORT ON;
|
|
1001
|
+
THROW;
|
|
1002
|
+
END
|
|
1003
|
+
END CATCH`;
|
|
1004
|
+
return (id, name, element, visibleAt) => sql`
|
|
1005
|
+
DECLARE @visible_at DATETIME2 = ${visibleAt};
|
|
1006
|
+
DECLARE @xact_abort INT = @@OPTIONS & 16384;
|
|
1007
|
+
EXEC sp_executesql ${offerSql},
|
|
1008
|
+
N'@id NVARCHAR(MAX), @name NVARCHAR(MAX), @element NVARCHAR(MAX), @visible_at DATETIME2, @xact_abort INT',
|
|
1009
|
+
@id = ${id}, @name = ${name}, @element = ${element}, @visible_at = @visible_at, @xact_abort = @xact_abort;
|
|
1010
|
+
`;
|
|
1011
|
+
},
|
|
949
1012
|
// sqlite
|
|
950
1013
|
orElse: () => (id, name, element, visibleAt) => sql`
|
|
951
1014
|
INSERT OR IGNORE INTO ${tableNameSql} (id, queue_name, element, state, attempts, visible_at, created_at, updated_at)
|
|
@@ -957,47 +1020,55 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
957
1020
|
orElse: () => s => `'${s}'`
|
|
958
1021
|
});
|
|
959
1022
|
const stringLiteral = s => sql.literal(wrapString(s));
|
|
960
|
-
|
|
961
|
-
|
|
1023
|
+
// Elements this store has claimed and not yet settled. Each poll claims its
|
|
1024
|
+
// rows under a fresh lock, so a settlement only matches the acquisition it
|
|
1025
|
+
// belongs to, even after the same store re-claims a lapsed row.
|
|
1026
|
+
const held = new Set();
|
|
962
1027
|
const refreshLocks = Effect.suspend(() => {
|
|
963
|
-
if (
|
|
964
|
-
const
|
|
1028
|
+
if (held.size === 0) return Effect.void;
|
|
1029
|
+
const sequences = new Set();
|
|
1030
|
+
const locks = new Set();
|
|
1031
|
+
for (const element of held) {
|
|
1032
|
+
sequences.add(element.sequence);
|
|
1033
|
+
locks.add(wrapString(element.lock));
|
|
1034
|
+
}
|
|
1035
|
+
// A row only ever carries the lock of the poll that claimed it, so matching
|
|
1036
|
+
// every held sequence against every live lock renews just this store's own
|
|
1037
|
+
// claims while keeping the statement flat
|
|
965
1038
|
return sql`
|
|
966
1039
|
UPDATE ${tableNameSql}
|
|
967
1040
|
SET acquired_at = ${sqlNow}
|
|
968
|
-
WHERE sequence IN (${sql.literal(
|
|
969
|
-
AND acquired_by
|
|
1041
|
+
WHERE sequence IN (${sql.literal(Array.from(sequences).join(","))})
|
|
1042
|
+
AND acquired_by IN (${sql.literal(Array.from(locks).join(","))})
|
|
970
1043
|
`;
|
|
971
1044
|
});
|
|
972
|
-
const ack = (statement,
|
|
973
|
-
|
|
974
|
-
elementIds.delete(sequence);
|
|
975
|
-
}
|
|
1045
|
+
const ack = (statement, element) => statement.pipe(Effect.retry(ackRetrySchedule), Effect.orDie, Effect.ensuring(Effect.sync(() => {
|
|
1046
|
+
held.delete(element);
|
|
976
1047
|
})), Effect.asVoid);
|
|
977
|
-
const complete =
|
|
1048
|
+
const complete = element => ack(sql`
|
|
978
1049
|
UPDATE ${tableNameSql}
|
|
979
1050
|
SET acquired_at = NULL, acquired_by = NULL, updated_at = ${sqlNow}, state = 'completed'
|
|
980
|
-
WHERE sequence = ${sequence}
|
|
981
|
-
AND acquired_by = ${
|
|
982
|
-
`,
|
|
983
|
-
const fail = (
|
|
1051
|
+
WHERE sequence = ${element.sequence}
|
|
1052
|
+
AND acquired_by = ${stringLiteral(element.lock)}
|
|
1053
|
+
`, element);
|
|
1054
|
+
const fail = (element, cause) => ack(sql`
|
|
984
1055
|
UPDATE ${tableNameSql}
|
|
985
1056
|
SET acquired_at = NULL, acquired_by = NULL, updated_at = ${sqlNow}, state = 'failed', last_failure = ${Cause.pretty(cause)}
|
|
986
|
-
WHERE sequence = ${sequence}
|
|
987
|
-
AND acquired_by = ${
|
|
988
|
-
`,
|
|
989
|
-
const retry = (
|
|
1057
|
+
WHERE sequence = ${element.sequence}
|
|
1058
|
+
AND acquired_by = ${stringLiteral(element.lock)}
|
|
1059
|
+
`, element);
|
|
1060
|
+
const retry = (element, delay, cause) => ack(sql`
|
|
990
1061
|
UPDATE ${tableNameSql}
|
|
991
1062
|
SET acquired_at = NULL, acquired_by = NULL, updated_at = ${sqlNow}, visible_at = ${secondsFromNow(Duration.toSeconds(delay))}, last_failure = ${Cause.pretty(cause)}
|
|
992
|
-
WHERE sequence = ${sequence}
|
|
993
|
-
AND acquired_by = ${
|
|
994
|
-
`,
|
|
995
|
-
const interrupt =
|
|
1063
|
+
WHERE sequence = ${element.sequence}
|
|
1064
|
+
AND acquired_by = ${stringLiteral(element.lock)}
|
|
1065
|
+
`, element);
|
|
1066
|
+
const interrupt = element => ack(sql`
|
|
996
1067
|
UPDATE ${tableNameSql}
|
|
997
1068
|
SET acquired_at = NULL, acquired_by = NULL, attempts = attempts - 1
|
|
998
|
-
WHERE sequence
|
|
999
|
-
AND acquired_by = ${
|
|
1000
|
-
`,
|
|
1069
|
+
WHERE sequence = ${element.sequence}
|
|
1070
|
+
AND acquired_by = ${stringLiteral(element.lock)}
|
|
1071
|
+
`, element);
|
|
1001
1072
|
yield* refreshLocks.pipe(Effect.tapCause(Effect.logWarning), Effect.retry(Schedule.spaced(500)), Effect.schedule(Schedule.fixed(lockRefreshInterval)), Effect.annotateLogs({
|
|
1002
1073
|
package: "@effect/sql",
|
|
1003
1074
|
module: "SqlPersistedQueue",
|
|
@@ -1013,10 +1084,10 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1013
1084
|
const pollLatch = Latch.makeUnsafe();
|
|
1014
1085
|
const takenLatch = Latch.makeUnsafe();
|
|
1015
1086
|
const nudge = state.nudge;
|
|
1016
|
-
yield* Effect.addFinalizer(() => Effect.flatMap(Queue.clear(queue), elements => {
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
}));
|
|
1087
|
+
yield* Effect.addFinalizer(() => Effect.flatMap(Queue.clear(queue), elements => Effect.forEach(elements, interrupt, {
|
|
1088
|
+
concurrency: "unbounded",
|
|
1089
|
+
discard: true
|
|
1090
|
+
})));
|
|
1020
1091
|
// flip exhausted rows whose lock expired (worker crashed on the final
|
|
1021
1092
|
// attempt) to failed, since no finalizer will ever run for them
|
|
1022
1093
|
yield* sql`
|
|
@@ -1029,10 +1100,10 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1029
1100
|
AND (acquired_at IS NULL OR acquired_at < ${expiresAt})
|
|
1030
1101
|
`.pipe(Effect.tapCause(Effect.logWarning), Effect.ignore, Effect.schedule(Schedule.spaced(lockRefreshInterval)), Effect.forkScoped, Effect.interruptible);
|
|
1031
1102
|
const poll = sql.onDialectOrElse({
|
|
1032
|
-
pg: () => size => sql`
|
|
1103
|
+
pg: () => (size, lockSql) => sql`
|
|
1033
1104
|
WITH cte AS (
|
|
1034
1105
|
UPDATE ${tableNameSql}
|
|
1035
|
-
SET acquired_at = ${sqlNow}, acquired_by = ${
|
|
1106
|
+
SET acquired_at = ${sqlNow}, acquired_by = ${lockSql}, attempts = attempts + 1
|
|
1036
1107
|
WHERE sequence IN (
|
|
1037
1108
|
SELECT sequence FROM ${tableNameSql}
|
|
1038
1109
|
WHERE queue_name = ${name}
|
|
@@ -1049,7 +1120,7 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1049
1120
|
SELECT sequence, id, element, attempts FROM cte
|
|
1050
1121
|
ORDER BY visible_at ASC, sequence ASC
|
|
1051
1122
|
`,
|
|
1052
|
-
mysql: () => size => sql`
|
|
1123
|
+
mysql: () => (size, lockSql) => sql`
|
|
1053
1124
|
SELECT sequence, id, element, attempts FROM ${tableNameSql} q
|
|
1054
1125
|
WHERE queue_name = ${name}
|
|
1055
1126
|
AND state = 'pending'
|
|
@@ -1063,7 +1134,7 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1063
1134
|
if (rows.length === 0) return Effect.void;
|
|
1064
1135
|
return sql`
|
|
1065
1136
|
UPDATE ${tableNameSql}
|
|
1066
|
-
SET acquired_at = ${sqlNow}, acquired_by = ${
|
|
1137
|
+
SET acquired_at = ${sqlNow}, acquired_by = ${lockSql}, attempts = attempts + 1
|
|
1067
1138
|
WHERE sequence IN (${sql.literal(rows.map(r => r.sequence).join(","))})
|
|
1068
1139
|
`.unprepared;
|
|
1069
1140
|
}), Effect.map(rows => {
|
|
@@ -1072,9 +1143,12 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1072
1143
|
}
|
|
1073
1144
|
return rows;
|
|
1074
1145
|
}), sql.withTransaction),
|
|
1075
|
-
|
|
1146
|
+
// READPAST skips rows locked by another claim or a settlement instead
|
|
1147
|
+
// of deadlocking with them
|
|
1148
|
+
mssql: () => (size, lockSql) => sql`
|
|
1076
1149
|
WITH cte AS (
|
|
1077
|
-
SELECT TOP ${sql.literal(size.toString())} sequence
|
|
1150
|
+
SELECT TOP ${sql.literal(size.toString())} sequence
|
|
1151
|
+
FROM ${tableNameSql} WITH (UPDLOCK, READPAST, ROWLOCK)
|
|
1078
1152
|
WHERE queue_name = ${name}
|
|
1079
1153
|
AND state = 'pending'
|
|
1080
1154
|
AND attempts < ${maxAttempts}
|
|
@@ -1083,15 +1157,15 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1083
1157
|
ORDER BY visible_at ASC, sequence ASC
|
|
1084
1158
|
)
|
|
1085
1159
|
UPDATE q
|
|
1086
|
-
SET acquired_at = ${sqlNow}, acquired_by = ${
|
|
1160
|
+
SET acquired_at = ${sqlNow}, acquired_by = ${lockSql}, attempts = q.attempts + 1
|
|
1087
1161
|
OUTPUT inserted.sequence, inserted.id, inserted.element, inserted.attempts
|
|
1088
1162
|
FROM ${tableNameSql} AS q
|
|
1089
1163
|
INNER JOIN cte ON q.sequence = cte.sequence
|
|
1090
1164
|
`,
|
|
1091
1165
|
// sqlite
|
|
1092
|
-
orElse: () => size => sql`
|
|
1166
|
+
orElse: () => (size, lockSql) => sql`
|
|
1093
1167
|
UPDATE ${tableNameSql}
|
|
1094
|
-
SET acquired_at = ${sqlNow}, acquired_by = ${
|
|
1168
|
+
SET acquired_at = ${sqlNow}, acquired_by = ${lockSql}, attempts = attempts + 1
|
|
1095
1169
|
WHERE sequence IN (
|
|
1096
1170
|
SELECT sequence FROM ${tableNameSql}
|
|
1097
1171
|
WHERE queue_name = ${name}
|
|
@@ -1110,7 +1184,8 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1110
1184
|
yield* pollLatch.await;
|
|
1111
1185
|
yield* Effect.yieldNow;
|
|
1112
1186
|
nudge.closeUnsafe();
|
|
1113
|
-
const
|
|
1187
|
+
const lock = crypto.randomUUID();
|
|
1188
|
+
const results = takers.current === 0 ? [] : yield* poll(takers.current, stringLiteral(lock));
|
|
1114
1189
|
if (results.length === 0) {
|
|
1115
1190
|
yield* Effect.race(Effect.sleep(pollInterval), nudge.await);
|
|
1116
1191
|
continue;
|
|
@@ -1118,7 +1193,8 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1118
1193
|
takenLatch.closeUnsafe();
|
|
1119
1194
|
for (const row of results) {
|
|
1120
1195
|
row.attempts = Number(row.attempts);
|
|
1121
|
-
|
|
1196
|
+
row.lock = lock;
|
|
1197
|
+
held.add(row);
|
|
1122
1198
|
}
|
|
1123
1199
|
yield* Queue.offerAll(queue, results);
|
|
1124
1200
|
yield* takenLatch.await;
|
|
@@ -1187,9 +1263,11 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1187
1263
|
}) => Effect.catchCause(Effect.suspend(() => offer(id, name, JSON.stringify(element), delay === undefined ? sqlNow : delayedVisibleAt(delay))), cause => Effect.fail(new PersistedQueueError({
|
|
1188
1264
|
message: "Failed to offer element to persisted queue",
|
|
1189
1265
|
cause
|
|
1190
|
-
}))).pipe(
|
|
1266
|
+
}))).pipe(
|
|
1267
|
+
// Wake takers once the offer is committed.
|
|
1268
|
+
Effect.tap(() => sql.afterCommit(Effect.sync(() => {
|
|
1191
1269
|
queueStates.peek(name)?.nudge.openUnsafe();
|
|
1192
|
-
}))),
|
|
1270
|
+
})))),
|
|
1193
1271
|
take: options => {
|
|
1194
1272
|
queueStates.get(options.name).maxAttempts = options.maxAttempts;
|
|
1195
1273
|
const loop = Effect.uninterruptibleMask(restore => RcMap.get(mailboxes, options.name).pipe(Effect.flatMap(({
|
|
@@ -1221,23 +1299,23 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1221
1299
|
} catch (defect) {
|
|
1222
1300
|
// a row that cannot be parsed will never succeed, so dead-letter
|
|
1223
1301
|
// it and take the next element
|
|
1224
|
-
return Effect.andThen(fail(element
|
|
1302
|
+
return Effect.andThen(fail(element, Cause.die(defect)), loop);
|
|
1225
1303
|
}
|
|
1226
1304
|
return Effect.as(Effect.addFinalizer(exit => {
|
|
1227
1305
|
if (exit._tag === "Success") {
|
|
1228
|
-
return complete(element
|
|
1306
|
+
return complete(element);
|
|
1229
1307
|
}
|
|
1230
1308
|
const dead = deadLetterFromCause(exit.cause);
|
|
1231
1309
|
if (dead !== undefined) {
|
|
1232
|
-
return fail(element
|
|
1310
|
+
return fail(element, dead.cause);
|
|
1233
1311
|
}
|
|
1234
1312
|
if (Cause.hasInterruptsOnly(exit.cause)) {
|
|
1235
|
-
return interrupt(
|
|
1313
|
+
return interrupt(element);
|
|
1236
1314
|
}
|
|
1237
1315
|
if (element.attempts >= options.maxAttempts) {
|
|
1238
|
-
return fail(element
|
|
1316
|
+
return fail(element, exit.cause);
|
|
1239
1317
|
}
|
|
1240
|
-
return Effect.flatMap(options.retryDelay(element.attempts), delay => retry(element
|
|
1318
|
+
return Effect.flatMap(options.retryDelay(element.attempts), delay => retry(element, delay, exit.cause));
|
|
1241
1319
|
}), {
|
|
1242
1320
|
id: element.id,
|
|
1243
1321
|
attempts: element.attempts,
|
|
@@ -1246,15 +1324,15 @@ export const makeStoreSql = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
1246
1324
|
})));
|
|
1247
1325
|
return loop;
|
|
1248
1326
|
},
|
|
1249
|
-
cleanup: ({
|
|
1327
|
+
cleanup: Effect.fnUntraced(function* ({
|
|
1250
1328
|
failedTimeToLive,
|
|
1251
1329
|
timeToLive
|
|
1252
|
-
})
|
|
1330
|
+
}) {
|
|
1253
1331
|
yield* cleanupState("completed", timeToLive);
|
|
1254
1332
|
if (failedTimeToLive !== undefined) {
|
|
1255
1333
|
yield* cleanupState("failed", failedTimeToLive);
|
|
1256
1334
|
}
|
|
1257
|
-
}
|
|
1335
|
+
}, Effect.catchCause(cause => Effect.fail(new PersistedQueueError({
|
|
1258
1336
|
message: "Failed to clean up persisted queue",
|
|
1259
1337
|
cause
|
|
1260
1338
|
}))))
|
|
@@ -1344,7 +1422,7 @@ const sqlMigrations = tableName => Migrator.fromRecord({
|
|
|
1344
1422
|
const tableNameSql = sql(tableName);
|
|
1345
1423
|
const takeIndex = sql(`idx_${tableName}_take`);
|
|
1346
1424
|
yield* sql.onDialectOrElse({
|
|
1347
|
-
pg:
|
|
1425
|
+
pg: Effect.fnUntraced(function* () {
|
|
1348
1426
|
yield* sql`DROP INDEX IF EXISTS ${takeIndex}`;
|
|
1349
1427
|
yield* sql`ALTER TABLE ${tableNameSql}
|
|
1350
1428
|
ADD COLUMN state VARCHAR(10),
|
|
@@ -1360,7 +1438,7 @@ const sqlMigrations = tableName => Migrator.fromRecord({
|
|
|
1360
1438
|
ALTER COLUMN visible_at SET NOT NULL,
|
|
1361
1439
|
DROP COLUMN completed`;
|
|
1362
1440
|
}),
|
|
1363
|
-
mysql:
|
|
1441
|
+
mysql: Effect.fnUntraced(function* () {
|
|
1364
1442
|
yield* sql`DROP INDEX ${takeIndex} ON ${tableNameSql}`;
|
|
1365
1443
|
yield* sql`ALTER TABLE ${tableNameSql}
|
|
1366
1444
|
MODIFY COLUMN id VARCHAR(255) NOT NULL,
|
|
@@ -1377,7 +1455,7 @@ const sqlMigrations = tableName => Migrator.fromRecord({
|
|
|
1377
1455
|
MODIFY COLUMN visible_at DATETIME NOT NULL,
|
|
1378
1456
|
DROP COLUMN completed`;
|
|
1379
1457
|
}),
|
|
1380
|
-
mssql:
|
|
1458
|
+
mssql: Effect.fnUntraced(function* () {
|
|
1381
1459
|
const upgradedTableName = `${tableName}_upgrade`;
|
|
1382
1460
|
const upgradedTable = sql(upgradedTableName);
|
|
1383
1461
|
yield* sql`CREATE TABLE ${upgradedTable} (
|
|
@@ -1410,7 +1488,7 @@ const sqlMigrations = tableName => Migrator.fromRecord({
|
|
|
1410
1488
|
}),
|
|
1411
1489
|
// sqlite rebuilds the table because altering or dropping constrained
|
|
1412
1490
|
// columns is not portable across supported SQLite versions.
|
|
1413
|
-
orElse:
|
|
1491
|
+
orElse: Effect.fnUntraced(function* () {
|
|
1414
1492
|
const upgradedTableName = `${tableName}_upgrade`;
|
|
1415
1493
|
const upgradedTable = sql(upgradedTableName);
|
|
1416
1494
|
yield* sql`DROP INDEX IF EXISTS ${takeIndex}`;
|