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
package/src/cluster/Entity.ts
CHANGED
|
@@ -147,6 +147,7 @@ export interface Entity<
|
|
|
147
147
|
readonly maxIdleTime?: Duration.Input | undefined
|
|
148
148
|
readonly concurrency?: number | "unbounded" | undefined
|
|
149
149
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
150
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
150
151
|
readonly disableFatalDefects?: boolean | undefined
|
|
151
152
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
|
|
152
153
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -191,6 +192,7 @@ export interface Entity<
|
|
|
191
192
|
options?: {
|
|
192
193
|
readonly maxIdleTime?: Duration.Input | undefined
|
|
193
194
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
195
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
194
196
|
readonly disableFatalDefects?: boolean | undefined
|
|
195
197
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
|
|
196
198
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -287,6 +289,7 @@ const Proto = {
|
|
|
287
289
|
readonly maxIdleTime?: Duration.Input | undefined
|
|
288
290
|
readonly concurrency?: number | "unbounded" | undefined
|
|
289
291
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
292
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
290
293
|
readonly disableFatalDefects?: boolean | undefined
|
|
291
294
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
|
|
292
295
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -335,6 +338,7 @@ const Proto = {
|
|
|
335
338
|
options?: {
|
|
336
339
|
readonly maxIdleTime?: Duration.Input | undefined
|
|
337
340
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
341
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
338
342
|
readonly disableFatalDefects?: boolean | undefined
|
|
339
343
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
|
|
340
344
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -119,6 +119,13 @@ export class MessageStorage extends Context.Service<MessageStorage, {
|
|
|
119
119
|
|
|
120
120
|
/**
|
|
121
121
|
* For locally sent messages, register a handler to process the replies.
|
|
122
|
+
*
|
|
123
|
+
* **Details**
|
|
124
|
+
*
|
|
125
|
+
* The handler must be registered as soon as the effect starts, before it
|
|
126
|
+
* first suspends. Callers fork it with `startImmediately` before saving or
|
|
127
|
+
* notifying the request, and rely on it to see every reply saved after that
|
|
128
|
+
* point. The effect completes when a `WithExit` reply arrives.
|
|
122
129
|
*/
|
|
123
130
|
readonly registerReplyHandler: <R extends Rpc.Any>(
|
|
124
131
|
message: Message.OutgoingRequest<R> | Message.IncomingRequest<R>
|
package/src/cluster/Runners.ts
CHANGED
|
@@ -265,17 +265,15 @@ export const make: (
|
|
|
265
265
|
|
|
266
266
|
// The pump is owned by the shared entry rather than the first caller, so any
|
|
267
267
|
// waiter can be interrupted without stopping delivery to the others.
|
|
268
|
+
//
|
|
269
|
+
// `replyFromStorage` registers the request with the storage loop before the
|
|
270
|
+
// pump starts, so the pump only re-registers after a stream chunk is acked.
|
|
268
271
|
const pumpReplies = Effect.fnUntraced(function*(
|
|
269
272
|
requestId: Snowflake.Snowflake,
|
|
270
273
|
entry: Omit<StorageRequestEntry, "pump">
|
|
271
274
|
) {
|
|
272
275
|
while (true) {
|
|
273
276
|
// wait for the storage loop to notify us
|
|
274
|
-
entry.latch.closeUnsafe()
|
|
275
|
-
const message = entry.messages.values().next().value
|
|
276
|
-
if (!message) return
|
|
277
|
-
waitingStorageRequests.set(requestId, message)
|
|
278
|
-
storageLatch.openUnsafe()
|
|
279
277
|
yield* entry.latch.await
|
|
280
278
|
|
|
281
279
|
// send the replies back
|
|
@@ -300,6 +298,13 @@ export const make: (
|
|
|
300
298
|
yield* entry.latch.await
|
|
301
299
|
}
|
|
302
300
|
entry.replies = []
|
|
301
|
+
|
|
302
|
+
// ask the storage loop for the next chunk
|
|
303
|
+
entry.latch.closeUnsafe()
|
|
304
|
+
const message = entry.messages.values().next().value
|
|
305
|
+
if (!message) return
|
|
306
|
+
waitingStorageRequests.set(requestId, message)
|
|
307
|
+
storageLatch.openUnsafe()
|
|
303
308
|
}
|
|
304
309
|
})
|
|
305
310
|
|
|
@@ -316,9 +321,14 @@ export const make: (
|
|
|
316
321
|
}
|
|
317
322
|
entry = Object.assign(state, { pump: yield* Effect.forkIn(pumpReplies(requestId, state), runnersScope) })
|
|
318
323
|
storageRequests.set(requestId, entry)
|
|
324
|
+
waitingStorageRequests.set(requestId, message)
|
|
319
325
|
}
|
|
320
326
|
const current = entry
|
|
321
327
|
current.messages.add(message)
|
|
328
|
+
// A waiter that joins an existing entry, such as a duplicate, reads
|
|
329
|
+
// now. A reply committed without a notification would otherwise wait
|
|
330
|
+
// for the next poll.
|
|
331
|
+
storageLatch.openUnsafe()
|
|
322
332
|
return yield* restore(Fiber.join(current.pump)).pipe(
|
|
323
333
|
Effect.ensuring(Effect.suspend(() => {
|
|
324
334
|
current.messages.delete(message)
|
|
@@ -336,6 +346,52 @@ export const make: (
|
|
|
336
346
|
})
|
|
337
347
|
)
|
|
338
348
|
|
|
349
|
+
// A request that may already be processing has to read its replies back
|
|
350
|
+
// from storage. A local reply handler wakes the storage loop, so streams do
|
|
351
|
+
// not have to wait for the next poll.
|
|
352
|
+
const replyFromStorageWithWake = (message: Message.OutgoingRequest<any>) =>
|
|
353
|
+
Effect.raceFirst(
|
|
354
|
+
replyFromStorage(message),
|
|
355
|
+
storage.registerReplyHandler(
|
|
356
|
+
new Message.OutgoingRequest({ ...message, respond: () => storageLatch.open })
|
|
357
|
+
).pipe(Effect.ignore, Effect.andThen(Effect.never))
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
// Stream replies stay on the storage loop, which delivers chunks in order
|
|
361
|
+
// and waits for their acks.
|
|
362
|
+
const canReplyLocally = (message: Message.OutgoingRequest<any>) => {
|
|
363
|
+
const rpc = message.rpc as any as Rpc.AnyWithProps
|
|
364
|
+
return storage !== MessageStorage.noop && Context.get(rpc.annotations, Persisted) &&
|
|
365
|
+
!RpcSchema.isStreamSchema(rpc.successSchema)
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// A request can be processed as soon as it is saved, so its reply handler is
|
|
369
|
+
// registered first. `registerReplyHandler` registers as soon as it starts,
|
|
370
|
+
// so a fresh request gets its reply from the handler without reading it
|
|
371
|
+
// back from storage.
|
|
372
|
+
const notifyLocalRequest = Effect.fnUntraced(function*(
|
|
373
|
+
message: Message.OutgoingRequest<any>,
|
|
374
|
+
notifyEntity: (message: Message.Outgoing<any>) => Effect.Effect<void>
|
|
375
|
+
) {
|
|
376
|
+
const handler = yield* Effect.forkScoped(storage.registerReplyHandler(message), { startImmediately: true })
|
|
377
|
+
return yield* notifyWith(message, (message, duplicate) => {
|
|
378
|
+
const outgoing = message as Message.OutgoingRequest<any>
|
|
379
|
+
// A duplicate is answered under its original request id.
|
|
380
|
+
if (duplicate) {
|
|
381
|
+
return Fiber.interrupt(handler).pipe(
|
|
382
|
+
Effect.andThen(notifyEntity(message)),
|
|
383
|
+
Effect.andThen(replyFromStorageWithWake(outgoing))
|
|
384
|
+
)
|
|
385
|
+
}
|
|
386
|
+
// The handler can be dropped, for example when its shard moves or a
|
|
387
|
+
// commit error hides the notification. The reply is then in storage.
|
|
388
|
+
return notifyEntity(message).pipe(
|
|
389
|
+
Effect.andThen(Fiber.join(handler)),
|
|
390
|
+
Effect.catchTag("EntityNotAssignedToRunner", () => replyFromStorage(outgoing))
|
|
391
|
+
)
|
|
392
|
+
})
|
|
393
|
+
}, Effect.scoped)
|
|
394
|
+
|
|
339
395
|
const storageLatch = Latch.makeUnsafe(false)
|
|
340
396
|
if (storage !== MessageStorage.noop) {
|
|
341
397
|
yield* Effect.gen(function*() {
|
|
@@ -431,28 +487,23 @@ export const make: (
|
|
|
431
487
|
})
|
|
432
488
|
},
|
|
433
489
|
notifyLocal(options) {
|
|
434
|
-
|
|
490
|
+
const message = options.message
|
|
491
|
+
const notifyEntity = (message: Message.Outgoing<any>) =>
|
|
492
|
+
Effect.catchTag(
|
|
493
|
+
options.notify(Message.incomingLocalFromOutgoing(message)),
|
|
494
|
+
"EntityNotAssignedToRunner",
|
|
495
|
+
() => Effect.void
|
|
496
|
+
)
|
|
497
|
+
if (message._tag === "OutgoingRequest" && !options.discard && !options.storageOnly && canReplyLocally(message)) {
|
|
498
|
+
return notifyLocalRequest(message, notifyEntity)
|
|
499
|
+
}
|
|
500
|
+
return notifyWith(message, (message) => {
|
|
435
501
|
if (options.discard || message._tag === "OutgoingEnvelope") {
|
|
436
|
-
return
|
|
437
|
-
options.notify(Message.incomingLocalFromOutgoing(message)),
|
|
438
|
-
"EntityNotAssignedToRunner",
|
|
439
|
-
() => Effect.void
|
|
440
|
-
)
|
|
502
|
+
return notifyEntity(message)
|
|
441
503
|
}
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
const readReplies = options.storageOnly
|
|
446
|
-
? replyFromStorage(message)
|
|
447
|
-
: Effect.raceFirst(
|
|
448
|
-
replyFromStorage(message),
|
|
449
|
-
storage.registerReplyHandler(
|
|
450
|
-
new Message.OutgoingRequest({ ...message, respond: () => storageLatch.open })
|
|
451
|
-
).pipe(Effect.ignore, Effect.andThen(Effect.never))
|
|
452
|
-
)
|
|
453
|
-
return options.notify(Message.incomingLocalFromOutgoing(message)).pipe(
|
|
454
|
-
Effect.catchTag("EntityNotAssignedToRunner", () => Effect.void),
|
|
455
|
-
Effect.andThen(readReplies)
|
|
504
|
+
return Effect.andThen(
|
|
505
|
+
notifyEntity(message),
|
|
506
|
+
options.storageOnly ? replyFromStorage(message) : replyFromStorageWithWake(message)
|
|
456
507
|
)
|
|
457
508
|
})
|
|
458
509
|
}
|
package/src/cluster/Sharding.ts
CHANGED
|
@@ -27,6 +27,7 @@ import * as HashRing from "../HashRing.ts"
|
|
|
27
27
|
import * as InternalRecord from "../internal/record.ts"
|
|
28
28
|
import * as Latch from "../Latch.ts"
|
|
29
29
|
import * as Layer from "../Layer.ts"
|
|
30
|
+
import * as Metric from "../Metric.ts"
|
|
30
31
|
import * as MutableHashMap from "../MutableHashMap.ts"
|
|
31
32
|
import * as MutableHashSet from "../MutableHashSet.ts"
|
|
32
33
|
import * as MutableRef from "../MutableRef.ts"
|
|
@@ -141,6 +142,7 @@ export class Sharding extends Context.Service<Sharding, {
|
|
|
141
142
|
readonly maxIdleTime?: Input | undefined
|
|
142
143
|
readonly concurrency?: number | "unbounded" | undefined
|
|
143
144
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
145
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
144
146
|
readonly disableFatalDefects?: boolean | undefined
|
|
145
147
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
|
|
146
148
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -276,6 +278,17 @@ const make = Effect.gen(function*() {
|
|
|
276
278
|
|
|
277
279
|
// the active shards are the ones that we have acquired the lock for
|
|
278
280
|
const acquiredShards = MutableHashSet.empty<ShardId>()
|
|
281
|
+
// shards still held by this runner while their entities stop and their locks
|
|
282
|
+
// are released
|
|
283
|
+
const releasingShards = MutableHashSet.empty<ShardId>()
|
|
284
|
+
// The releasing gauge reports to the metric registry and attributes the
|
|
285
|
+
// layer was built with.
|
|
286
|
+
const updateReleasingShardsGauge = () =>
|
|
287
|
+
ClusterMetrics.shardsReleasing.updateUnsafe(BigInt(MutableHashSet.size(releasingShards)), services)
|
|
288
|
+
const updateShardGauges = () => {
|
|
289
|
+
ClusterMetrics.shards.updateUnsafe(BigInt(MutableHashSet.size(acquiredShards)), Context.empty())
|
|
290
|
+
updateReleasingShardsGauge()
|
|
291
|
+
}
|
|
279
292
|
const activeShardsLatch = yield* Latch.make(false)
|
|
280
293
|
// open once shutdown starts handing every shard off
|
|
281
294
|
const handoffLatch = Latch.makeUnsafe(false)
|
|
@@ -343,7 +356,9 @@ const make = Effect.gen(function*() {
|
|
|
343
356
|
// This should be shutdown last, when all entities have been shutdown, to
|
|
344
357
|
// allow them to move to another runner.
|
|
345
358
|
|
|
346
|
-
|
|
359
|
+
// Keep startup fibers behind singleton initialization without moving resource
|
|
360
|
+
// acquisition (and therefore changing the shutdown finalizer order).
|
|
361
|
+
const singletonsReady = Latch.makeUnsafe(false)
|
|
347
362
|
// Hands every held shard off on shutdown, set when this is a runner
|
|
348
363
|
let handoff: Effect.Effect<void> = Effect.void
|
|
349
364
|
// Shards whose entities must be force interrupted and locks fully released
|
|
@@ -352,6 +367,7 @@ const make = Effect.gen(function*() {
|
|
|
352
367
|
const initialRunnerAddress = getRunnerAddress()
|
|
353
368
|
if (initialRunnerAddress) {
|
|
354
369
|
const selfAddress = initialRunnerAddress
|
|
370
|
+
updateReleasingShardsGauge()
|
|
355
371
|
yield* Scope.addFinalizerExit(shardingScope, () => {
|
|
356
372
|
// the locks expire over time, so if this fails we ignore it
|
|
357
373
|
return Effect.ignore(runnerStorage.releaseAll(selfAddress))
|
|
@@ -405,6 +421,7 @@ const make = Effect.gen(function*() {
|
|
|
405
421
|
for (const shardId of shardIds) {
|
|
406
422
|
MutableHashSet.remove(releasingShards, shardId)
|
|
407
423
|
MutableHashSet.remove(forceReleasingShards, shardId)
|
|
424
|
+
updateReleasingShardsGauge()
|
|
408
425
|
// During shutdown, parked waiters are interrupted: this runner will
|
|
409
426
|
// never observe the reply. During a rebalance the waiters are resumed
|
|
410
427
|
// with `EntityNotAssignedToRunner`, and the client falls back to
|
|
@@ -419,22 +436,30 @@ const make = Effect.gen(function*() {
|
|
|
419
436
|
const retryShardRelease =
|
|
420
437
|
(annotations: { readonly fiber: string; readonly shardId?: ShardId }) =>
|
|
421
438
|
<A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
Effect.
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
439
|
+
Effect.suspend(() => {
|
|
440
|
+
let lastWarning = -Infinity
|
|
441
|
+
return effect.pipe(
|
|
442
|
+
Effect.sandbox,
|
|
443
|
+
Effect.tapError((cause) =>
|
|
444
|
+
Effect.suspend(() => {
|
|
445
|
+
const now = clock.currentTimeMillisUnsafe()
|
|
446
|
+
if (now - lastWarning < 30_000) return Effect.void
|
|
447
|
+
lastWarning = now
|
|
448
|
+
return Effect.logWarning("Could not release shards, retrying", cause)
|
|
449
|
+
}).pipe(
|
|
450
|
+
Effect.annotateLogs({
|
|
451
|
+
module: "effect/cluster/Sharding",
|
|
452
|
+
runner: selfAddress,
|
|
453
|
+
...annotations
|
|
454
|
+
}),
|
|
455
|
+
// Effect.eventually retries immediately, so space failures to
|
|
456
|
+
// avoid hot-looping while storage is unavailable.
|
|
457
|
+
Effect.andThen(Effect.sleep(50))
|
|
458
|
+
)
|
|
459
|
+
),
|
|
460
|
+
Effect.eventually
|
|
461
|
+
)
|
|
462
|
+
})
|
|
438
463
|
const releaseShard = Effect.fnUntraced(
|
|
439
464
|
function*(shardId: ShardId) {
|
|
440
465
|
yield* runShardRelease(
|
|
@@ -446,6 +471,8 @@ const make = Effect.gen(function*() {
|
|
|
446
471
|
(effect, shardId) =>
|
|
447
472
|
effect.pipe(
|
|
448
473
|
retryShardRelease({ fiber: "releaseShard", shardId }),
|
|
474
|
+
Effect.timed,
|
|
475
|
+
Effect.flatMap(([duration]) => Metric.update(ClusterMetrics.shardReleaseDuration, duration)),
|
|
449
476
|
FiberMap.run(releaseShardsMap, shardId, { onlyIfMissing: true })
|
|
450
477
|
)
|
|
451
478
|
)
|
|
@@ -454,14 +481,62 @@ const make = Effect.gen(function*() {
|
|
|
454
481
|
// normal path while it is pending, otherwise the bulk release wipes a lock
|
|
455
482
|
// the runner already considers acquired.
|
|
456
483
|
const forcedShardReleasePending = () => forcedShardReleaseRunning || MutableHashSet.size(forceReleasingShards) > 0
|
|
484
|
+
// Repeat while pending, but no more often than every 30 seconds
|
|
485
|
+
const forcedReleaseWarningInterval = Duration.max(
|
|
486
|
+
Duration.fromInputUnsafe(config.shardLockExpiration),
|
|
487
|
+
Duration.seconds(30)
|
|
488
|
+
)
|
|
489
|
+
// Names the shards still blocking reacquisition and the entity types and
|
|
490
|
+
// singletons still stopping on them
|
|
491
|
+
const warnForcedReleasePending = Effect.suspend(() => {
|
|
492
|
+
const entityTypes = Arr.empty<string>()
|
|
493
|
+
for (const [entityType, state] of entityManagers) {
|
|
494
|
+
for (const shardId of forceReleasingShards) {
|
|
495
|
+
if (state.manager.hasServersUnsafe(shardId)) {
|
|
496
|
+
entityTypes.push(entityType)
|
|
497
|
+
break
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
const singletonNames = new Set<string>()
|
|
502
|
+
for (const shardId of forceReleasingShards) {
|
|
503
|
+
for (const [address] of singletons.get(shardId) ?? []) {
|
|
504
|
+
if (FiberMap.hasUnsafe(singletonFibers, address)) singletonNames.add(address.name)
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
MutableHashMap.forEach(stoppingSingletons, (_, address) => {
|
|
508
|
+
if (MutableHashSet.has(forceReleasingShards, address.shardId)) singletonNames.add(address.name)
|
|
509
|
+
})
|
|
510
|
+
return Effect.logWarning(
|
|
511
|
+
"Forced shard release is still pending; reacquisition is blocked until release completes"
|
|
512
|
+
).pipe(Effect.annotateLogs({
|
|
513
|
+
module: "effect/cluster/Sharding",
|
|
514
|
+
runner: selfAddress,
|
|
515
|
+
shardIds: Array.from(forceReleasingShards, String),
|
|
516
|
+
entityTypes,
|
|
517
|
+
singletonNames: [...singletonNames]
|
|
518
|
+
}))
|
|
519
|
+
})
|
|
457
520
|
const releaseForcedShards = Effect.suspend(() => {
|
|
458
521
|
if (forcedShardReleaseRunning || MutableHashSet.size(forceReleasingShards) === 0) {
|
|
459
522
|
return Effect.void
|
|
460
523
|
}
|
|
461
524
|
forcedShardReleaseRunning = true
|
|
462
525
|
const shardIds = [...forceReleasingShards]
|
|
463
|
-
return
|
|
464
|
-
|
|
526
|
+
return Effect.gen(function*() {
|
|
527
|
+
// Observe independently: a timeout around release cannot interrupt
|
|
528
|
+
// uninterruptible work, and must not allow locks to be reacquired.
|
|
529
|
+
const monitor = yield* warnForcedReleasePending.pipe(
|
|
530
|
+
Effect.repeat(Schedule.spaced(forcedReleaseWarningInterval)),
|
|
531
|
+
Effect.delay(config.shardLockExpiration),
|
|
532
|
+
Effect.interruptible,
|
|
533
|
+
Effect.forkIn(releaseScope)
|
|
534
|
+
)
|
|
535
|
+
yield* runShardRelease(shardIds, true, runnerStorage.releaseAll(selfAddress)).pipe(
|
|
536
|
+
retryShardRelease({ fiber: "releaseForcedShards" }),
|
|
537
|
+
Effect.ensuring(Fiber.interrupt(monitor))
|
|
538
|
+
)
|
|
539
|
+
}).pipe(
|
|
465
540
|
Effect.ensuring(Effect.sync(() => {
|
|
466
541
|
forcedShardReleaseRunning = false
|
|
467
542
|
activeShardsLatch.openUnsafe()
|
|
@@ -480,6 +555,7 @@ const make = Effect.gen(function*() {
|
|
|
480
555
|
})
|
|
481
556
|
|
|
482
557
|
yield* Effect.gen(function*() {
|
|
558
|
+
yield* singletonsReady.await
|
|
483
559
|
activeShardsLatch.openUnsafe()
|
|
484
560
|
|
|
485
561
|
while (true) {
|
|
@@ -494,6 +570,7 @@ const make = Effect.gen(function*() {
|
|
|
494
570
|
MutableHashSet.remove(acquiredShards, shardId)
|
|
495
571
|
MutableHashSet.add(releasingShards, shardId)
|
|
496
572
|
}
|
|
573
|
+
updateShardGauges()
|
|
497
574
|
|
|
498
575
|
if (MutableHashSet.size(releasingShards) > 0 || MutableHashSet.size(forceReleasingShards) > 0) {
|
|
499
576
|
yield* Effect.forkIn(syncSingletons, shardingScope)
|
|
@@ -555,13 +632,11 @@ const make = Effect.gen(function*() {
|
|
|
555
632
|
}
|
|
556
633
|
MutableHashSet.add(acquiredShards, shardId)
|
|
557
634
|
}
|
|
635
|
+
updateShardGauges()
|
|
558
636
|
if (acquired.length > 0) {
|
|
559
637
|
yield* notifyShardLockWaiters
|
|
560
638
|
yield* storageReadLatch.open
|
|
561
639
|
yield* Effect.forkIn(syncSingletons, shardingScope)
|
|
562
|
-
|
|
563
|
-
// update metrics
|
|
564
|
-
ClusterMetrics.shards.updateUnsafe(BigInt(MutableHashSet.size(acquiredShards)), Context.empty())
|
|
565
640
|
}
|
|
566
641
|
// the shutdown handoff releases the shards acquired here without waiting
|
|
567
642
|
yield* Effect.raceFirst(Effect.sleep(1000), handoffLatch.await)
|
|
@@ -589,7 +664,7 @@ const make = Effect.gen(function*() {
|
|
|
589
664
|
MutableHashSet.add(releasingShards, shardId)
|
|
590
665
|
MutableHashSet.add(forceReleasingShards, shardId)
|
|
591
666
|
}
|
|
592
|
-
|
|
667
|
+
updateShardGauges()
|
|
593
668
|
activeShardsLatch.openUnsafe()
|
|
594
669
|
|
|
595
670
|
return Effect.gen(function*() {
|
|
@@ -632,6 +707,7 @@ const make = Effect.gen(function*() {
|
|
|
632
707
|
MutableHashSet.add(releasingShards, shardId)
|
|
633
708
|
}
|
|
634
709
|
}
|
|
710
|
+
updateShardGauges()
|
|
635
711
|
if (MutableHashSet.size(releasingShards) > 0) {
|
|
636
712
|
yield* activeShardsLatch.open
|
|
637
713
|
}
|
|
@@ -655,6 +731,7 @@ const make = Effect.gen(function*() {
|
|
|
655
731
|
yield* Effect.suspend(() => shardLocksHealthyLatch.isOpen() ? refreshShardLocks : probeShardLocks).pipe(
|
|
656
732
|
Effect.repeat(Schedule.fixed(shardLockInterval)),
|
|
657
733
|
Effect.forever,
|
|
734
|
+
(effect) => Effect.andThen(singletonsReady.await, effect),
|
|
658
735
|
Effect.forkIn(shardingScope)
|
|
659
736
|
)
|
|
660
737
|
|
|
@@ -941,20 +1018,18 @@ const make = Effect.gen(function*() {
|
|
|
941
1018
|
}
|
|
942
1019
|
removableNotifications.clear()
|
|
943
1020
|
}
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
)
|
|
949
|
-
yield* Effect.forkIn(storage.resetAddress(address), shardingScope)
|
|
950
|
-
}
|
|
951
|
-
MutableHashSet.clear(resetAddresses)
|
|
1021
|
+
for (const address of resetAddresses) {
|
|
1022
|
+
yield* Effect.logWarning("Could not find entity manager for address, retrying").pipe(
|
|
1023
|
+
Effect.annotateLogs({ address })
|
|
1024
|
+
)
|
|
952
1025
|
}
|
|
953
|
-
// Capture claims
|
|
954
|
-
//
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
1026
|
+
// Capture claims for unregistered entity types, and claims skipped
|
|
1027
|
+
// because of the entity cap. They are reset in one storage operation
|
|
1028
|
+
// after releasing the read lock, and before the next read starts.
|
|
1029
|
+
let addressesToReset: Array<EntityAddress> | undefined
|
|
1030
|
+
if (MutableHashSet.size(resetAddresses) > 0 || MutableHashSet.size(cappedAddresses) > 0) {
|
|
1031
|
+
addressesToReset = [...resetAddresses, ...cappedAddresses]
|
|
1032
|
+
MutableHashSet.clear(resetAddresses)
|
|
958
1033
|
MutableHashSet.clear(cappedAddresses)
|
|
959
1034
|
}
|
|
960
1035
|
|
|
@@ -966,8 +1041,8 @@ const make = Effect.gen(function*() {
|
|
|
966
1041
|
resetRequestIds.length = 0
|
|
967
1042
|
}
|
|
968
1043
|
|
|
969
|
-
if (
|
|
970
|
-
yield* Effect.ignore(storage.resetAddresses(
|
|
1044
|
+
if (addressesToReset !== undefined) {
|
|
1045
|
+
yield* Effect.ignore(storage.resetAddresses(addressesToReset))
|
|
971
1046
|
}
|
|
972
1047
|
|
|
973
1048
|
// A full batch means more messages could be waiting; start the next
|
|
@@ -1796,6 +1871,8 @@ const make = Effect.gen(function*() {
|
|
|
1796
1871
|
(stops) => Effect.all(stops, { discard: true })
|
|
1797
1872
|
)
|
|
1798
1873
|
|
|
1874
|
+
singletonsReady.openUnsafe()
|
|
1875
|
+
|
|
1799
1876
|
// --- Entities ---
|
|
1800
1877
|
|
|
1801
1878
|
const reaper = yield* EntityReaper
|
|
@@ -1851,6 +1928,9 @@ const make = Effect.gen(function*() {
|
|
|
1851
1928
|
yield* withStorageReadLock(Effect.sync(() => {
|
|
1852
1929
|
entityRegistrationStartMillis ??= clock.currentTimeMillisUnsafe()
|
|
1853
1930
|
entityManagers.set(entity.type, state)
|
|
1931
|
+
// persisted messages read before this registration were reset, so
|
|
1932
|
+
// read storage again instead of waiting for the next poll interval
|
|
1933
|
+
storageReadLatch.openUnsafe()
|
|
1854
1934
|
if (entityManagerLatches.has(entity.type)) {
|
|
1855
1935
|
entityManagerLatches.get(entity.type)!.openUnsafe()
|
|
1856
1936
|
entityManagerLatches.delete(entity.type)
|
|
@@ -85,6 +85,8 @@ export class ShardingConfig extends Context.Service<ShardingConfig, {
|
|
|
85
85
|
readonly shardLockExpiration: Duration.Input
|
|
86
86
|
/**
|
|
87
87
|
* Disable the use of advisory locks for shard locking.
|
|
88
|
+
*
|
|
89
|
+
* PGlite clients never use advisory locks.
|
|
88
90
|
*/
|
|
89
91
|
readonly shardLockDisableAdvisory: boolean
|
|
90
92
|
/**
|
|
@@ -97,6 +99,14 @@ export class ShardingConfig extends Context.Service<ShardingConfig, {
|
|
|
97
99
|
* The default capacity of the mailbox for entities.
|
|
98
100
|
*/
|
|
99
101
|
readonly entityMailboxCapacity: number | "unbounded"
|
|
102
|
+
/**
|
|
103
|
+
* Report the mailbox size of each resident entity with the
|
|
104
|
+
* `effect_cluster_entity_mailbox_size` gauge, unless overridden by the
|
|
105
|
+
* `mailboxMetrics` entity option.
|
|
106
|
+
*
|
|
107
|
+
* Defaults to `false`.
|
|
108
|
+
*/
|
|
109
|
+
readonly entityMailboxMetrics: boolean
|
|
100
110
|
/**
|
|
101
111
|
* The maximum number of entities that can be resident on this runner at the
|
|
102
112
|
* same time.
|
|
@@ -188,6 +198,7 @@ export const defaults: ShardingConfig["Service"] = {
|
|
|
188
198
|
shardLockExpiration: Duration.seconds(35),
|
|
189
199
|
shardLockDisableAdvisory: false,
|
|
190
200
|
entityMailboxCapacity: 4096,
|
|
201
|
+
entityMailboxMetrics: false,
|
|
191
202
|
maxResidentEntities: 10_000,
|
|
192
203
|
unprocessedMessageBatchSize: 1024,
|
|
193
204
|
entityMaxIdleTime: Duration.minutes(1),
|
|
@@ -307,6 +318,10 @@ export const config: Config.Config<ShardingConfig["Service"]> = Config.all({
|
|
|
307
318
|
Config.withDefault(defaults.entityMailboxCapacity)
|
|
308
319
|
// Config.withDescription("The default capacity of the mailbox for entities.")
|
|
309
320
|
),
|
|
321
|
+
entityMailboxMetrics: Config.Boolean("entityMailboxMetrics").pipe(
|
|
322
|
+
Config.withDefault(defaults.entityMailboxMetrics)
|
|
323
|
+
// Config.withDescription("Report the mailbox size of each resident entity.")
|
|
324
|
+
),
|
|
310
325
|
maxResidentEntities: Config.schema(
|
|
311
326
|
Schema.Int.check(Schema.isGreaterThan(0)),
|
|
312
327
|
"maxResidentEntities"
|