effect 4.0.4 → 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/src/52_graphql/10_basics.ts +19 -13
- package/ai-docs/src/52_graphql/30_batching.ts +6 -4
- package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Array.d.ts +207 -58
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +45 -22
- 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 +187 -14
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +142 -33
- 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 +34 -32
- 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 +58 -21
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +548 -182
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +261 -76
- 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 +28 -9
- 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/Match.d.ts +20 -6
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +2 -2
- package/dist/Match.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 +37 -5
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +44 -6
- 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 +383 -326
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +338 -17
- 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 +16 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +25 -10
- 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/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +3 -2
- package/dist/TxRef.js.map +1 -1
- package/dist/ai/AiError.d.ts +78 -14
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +51 -3
- 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 +116 -20
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js +37 -3
- 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 +183 -95
- 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/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +47 -35
- package/dist/ai/LanguageModel.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 +6 -52
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +27 -50
- 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 +148 -4
- 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 +10 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +215 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +89 -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 +194 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +86 -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 +7 -3
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +7 -5
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +16 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +12 -10
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +20 -10
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +15 -8
- 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 +35 -15
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cli/internal/wizard.d.ts.map +1 -1
- package/dist/cli/internal/wizard.js +2 -1
- package/dist/cli/internal/wizard.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 +2 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +98 -18
- 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 +20 -12
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +96 -37
- 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 +66 -9
- 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/Sse.js +1 -1
- package/dist/encoding/Sse.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/GraphQLClient.d.ts.map +1 -1
- package/dist/graphql/GraphQLClient.js +12 -5
- package/dist/graphql/GraphQLClient.js.map +1 -1
- 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 +252 -11
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +99 -8
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +3 -1
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +91 -19
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +13 -3
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +56 -6
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +12 -1
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +230 -3
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +267 -5
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +105 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +69 -17
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +8 -6
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +274 -7
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +91 -3
- 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 +179 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +226 -18
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +58 -14
- 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 +11 -7
- 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 +38 -12
- 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 +25 -17
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.js +1 -1
- package/dist/http/HttpTraceContext.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 +8 -2
- package/dist/http/Url.js.map +1 -1
- package/dist/http/UrlParams.d.ts +112 -8
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +141 -14
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.d.ts +1 -1
- package/dist/http/internal/compression.d.ts.map +1 -1
- package/dist/http/internal/compression.js +2 -10
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/compressionBody.d.ts +2 -0
- package/dist/http/internal/compressionBody.d.ts.map +1 -0
- package/dist/http/internal/compressionBody.js +36 -0
- package/dist/http/internal/compressionBody.js.map +1 -0
- package/dist/http/internal/decompression.d.ts +2 -0
- package/dist/http/internal/decompression.d.ts.map +1 -0
- package/dist/http/internal/decompression.js +168 -0
- package/dist/http/internal/decompression.js.map +1 -0
- 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/tracing.js +14 -4
- package/dist/http/internal/tracing.js.map +1 -1
- package/dist/http/internal/urlParams.d.ts +2 -0
- package/dist/http/internal/urlParams.d.ts.map +1 -0
- package/dist/http/internal/urlParams.js +4 -0
- package/dist/http/internal/urlParams.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 +85 -24
- 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 +18 -2
- 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 +89 -76
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/graphql.js +12 -2
- package/dist/internal/graphql.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/Otlp.d.ts +15 -0
- package/dist/observability/Otlp.d.ts.map +1 -1
- package/dist/observability/Otlp.js +3 -0
- package/dist/observability/Otlp.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts +8 -0
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +15 -13
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpLogger.d.ts +17 -0
- package/dist/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/observability/OtlpLogger.js +14 -1
- package/dist/observability/OtlpLogger.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts +17 -0
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +18 -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/OtlpTracer.d.ts +17 -0
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +15 -2
- package/dist/observability/OtlpTracer.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 +6 -0
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +28 -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 +47 -10
- 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 +202 -61
- 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 +151 -12
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +156 -34
- 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 +16 -3
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +115 -23
- 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/Activity.js +1 -0
- package/dist/workflow/Activity.js.map +1 -1
- package/dist/workflow/Workflow.d.ts +22 -0
- package/dist/workflow/Workflow.d.ts.map +1 -1
- package/dist/workflow/Workflow.js +15 -3
- package/dist/workflow/Workflow.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts +20 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +52 -24
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Array.ts +223 -61
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +287 -439
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +41 -44
- package/src/Cron.ts +6 -3
- package/src/Duration.ts +70 -21
- package/src/Effect.ts +642 -220
- 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 +33 -9
- 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/Match.ts +65 -12
- 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 +61 -8
- 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 +596 -348
- 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 +25 -12
- package/src/TextDiff.ts +766 -0
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/TxRef.ts +4 -2
- package/src/ai/AiError.ts +69 -5
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +119 -22
- package/src/ai/DecisionModel.ts +265 -109
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/LanguageModel.ts +57 -51
- 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 +232 -275
- 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 +10 -0
- package/src/cli/Flag.ts +218 -0
- package/src/cli/GlobalFlag.ts +3 -3
- package/src/cli/Param.ts +218 -0
- package/src/cli/TerminalCapabilities.ts +156 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +10 -4
- package/src/cli/internal/completions/bash.ts +7 -5
- package/src/cli/internal/completions/descriptor.ts +20 -1
- package/src/cli/internal/completions/fish.ts +12 -10
- package/src/cli/internal/completions/powershell.ts +25 -13
- package/src/cli/internal/completions/zsh.ts +15 -8
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +43 -14
- package/src/cli/internal/wizard.ts +2 -1
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +164 -53
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +21 -3
- package/src/cluster/Runners.ts +145 -72
- 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 +81 -11
- 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/Sse.ts +1 -1
- 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/GraphQLClient.ts +17 -5
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +277 -20
- package/src/graphql/GraphQLResolver.ts +109 -230
- package/src/http/FetchHttpClient.ts +61 -8
- package/src/http/FindMyWay/internal/router.ts +13 -1
- package/src/http/Headers.ts +343 -163
- package/src/http/HttpClient.ts +144 -136
- package/src/http/HttpClientError.ts +10 -6
- package/src/http/HttpClientRequest.ts +315 -11
- 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 +265 -28
- package/src/http/HttpRouter.ts +67 -14
- package/src/http/HttpServerError.ts +14 -7
- package/src/http/HttpServerRequest.ts +73 -14
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +29 -19
- package/src/http/HttpTraceContext.ts +1 -1
- 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 +8 -2
- package/src/http/UrlParams.ts +225 -26
- package/src/http/internal/compression.ts +3 -17
- package/src/http/internal/compressionBody.ts +56 -0
- package/src/http/internal/decompression.ts +235 -0
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/tracing.ts +21 -4
- package/src/http/internal/urlParams.ts +5 -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 +160 -31
- 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 +22 -2
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +125 -88
- package/src/internal/graphql.ts +30 -7
- 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/Otlp.ts +18 -0
- package/src/observability/OtlpExporter.ts +19 -15
- package/src/observability/OtlpLogger.ts +31 -2
- package/src/observability/OtlpMetrics.ts +35 -4
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/OtlpTracer.ts +32 -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 +35 -38
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +53 -30
- 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 +285 -104
- 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 +275 -36
- package/src/sql/SqlResolver.ts +9 -0
- package/src/sql/Statement.ts +35 -8
- package/src/testing/TestClock.ts +147 -29
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/Activity.ts +1 -0
- package/src/workflow/Workflow.ts +31 -5
- package/src/workflow/WorkflowEngine.ts +93 -31
- 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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Standard metric definitions used by the unstable cluster runtime. The gauges
|
|
3
|
-
* track runner-local entities,
|
|
4
|
-
* healthy runners, and
|
|
3
|
+
* track runner-local entities, entity mailbox sizes, singleton processes,
|
|
4
|
+
* registered runners, healthy runners, acquired shards, and shards being
|
|
5
|
+
* released. The timer tracks shard release duration.
|
|
5
6
|
*
|
|
6
7
|
* This module only defines the metric handles. The runtime components that
|
|
7
|
-
* manage entities, runners, singletons, and sharding update these
|
|
8
|
+
* manage entities, runners, singletons, and sharding update these metrics while
|
|
8
9
|
* the cluster is running.
|
|
9
10
|
*
|
|
10
11
|
* @stability unstable
|
|
@@ -23,13 +24,13 @@ import * as Metric from "../Metric.ts"
|
|
|
23
24
|
*
|
|
24
25
|
* **Details**
|
|
25
26
|
*
|
|
26
|
-
* Bigint gauge named `effect_cluster_entities`,
|
|
27
|
-
* a
|
|
27
|
+
* Bigint gauge named `effect_cluster_entities`, tagged with the entity type.
|
|
28
|
+
* Each entity manager registers a series that reads its active entity count
|
|
29
|
+
* when metrics are snapshotted, and removes it when the manager shuts down.
|
|
28
30
|
*
|
|
29
31
|
* **Gotchas**
|
|
30
32
|
*
|
|
31
|
-
* This gauge is runner-local
|
|
32
|
-
* across runners and expect up to roughly one polling interval of lag.
|
|
33
|
+
* This gauge is runner-local. Aggregate across runners.
|
|
33
34
|
*
|
|
34
35
|
* @see {@link singletons} for singleton process counts on the current runner
|
|
35
36
|
* @see {@link shards} for shard ownership on the current runner
|
|
@@ -40,6 +41,86 @@ import * as Metric from "../Metric.ts"
|
|
|
40
41
|
*/
|
|
41
42
|
export const entities = Metric.gauge("effect_cluster_entities", { bigint: true })
|
|
42
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Represents a gauge tracking the mailbox size of each entity resident on the
|
|
46
|
+
* current runner.
|
|
47
|
+
*
|
|
48
|
+
* **When to use**
|
|
49
|
+
*
|
|
50
|
+
* Use to find entities whose mailboxes back up, before sends start failing
|
|
51
|
+
* with `MailboxFull`.
|
|
52
|
+
*
|
|
53
|
+
* **Details**
|
|
54
|
+
*
|
|
55
|
+
* Bigint gauge named `effect_cluster_entity_mailbox_size`, with one series per
|
|
56
|
+
* resident entity tagged with `type`, `id` and `shard`. The value is the
|
|
57
|
+
* number the mailbox capacity check compares against: requests admitted to the
|
|
58
|
+
* entity, whether queued or in flight, excluding internal keep-alive requests.
|
|
59
|
+
*
|
|
60
|
+
* The value is read when metrics are snapshotted, so it adds no work per
|
|
61
|
+
* message. Each series is removed when its entity is released.
|
|
62
|
+
*
|
|
63
|
+
* **Gotchas**
|
|
64
|
+
*
|
|
65
|
+
* Off by default. Enable it with `ShardingConfig.entityMailboxMetrics` or the
|
|
66
|
+
* `mailboxMetrics` option when registering an entity. One series per resident
|
|
67
|
+
* entity can mean many series on busy runners.
|
|
68
|
+
*
|
|
69
|
+
* An entity keeps reporting while it drains in-flight requests during
|
|
70
|
+
* shutdown. `Metric.update` and `Metric.modify` on this gauge do nothing for
|
|
71
|
+
* series the runtime registered.
|
|
72
|
+
*
|
|
73
|
+
* Like the other runner gauges it has no runner attribute: runners sharing a
|
|
74
|
+
* registry without distinct metric attributes overwrite each other's series.
|
|
75
|
+
*
|
|
76
|
+
* @see {@link entities} for the number of resident entities per type
|
|
77
|
+
* @see {@link entityMailboxSizeMax} for the always-on per-type maximum
|
|
78
|
+
*
|
|
79
|
+
* @stability unstable
|
|
80
|
+
* @category metrics
|
|
81
|
+
* @since 4.0.6
|
|
82
|
+
*/
|
|
83
|
+
export const entityMailboxSize = Metric.gauge("effect_cluster_entity_mailbox_size", { bigint: true })
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Represents a gauge tracking the largest mailbox size among the entities of
|
|
87
|
+
* each type resident on the current runner.
|
|
88
|
+
*
|
|
89
|
+
* **When to use**
|
|
90
|
+
*
|
|
91
|
+
* Use to alert on entity types whose mailboxes back up, before sends start
|
|
92
|
+
* failing with `MailboxFull`, without paying for a series per entity.
|
|
93
|
+
*
|
|
94
|
+
* **Details**
|
|
95
|
+
*
|
|
96
|
+
* Bigint gauge named `effect_cluster_entity_mailbox_size_max`, with one series
|
|
97
|
+
* per registered entity type tagged with `type`. The value is the largest
|
|
98
|
+
* mailbox size that {@link entityMailboxSize} would report for the type,
|
|
99
|
+
* including entities draining in-flight requests during shutdown, or `0` when
|
|
100
|
+
* the type has no resident entities.
|
|
101
|
+
*
|
|
102
|
+
* The value is computed when metrics are snapshotted, by visiting each
|
|
103
|
+
* resident entity of the type, so it adds no work per message. Entities
|
|
104
|
+
* draining during shutdown keep their slot until they finish, so the visit is
|
|
105
|
+
* bounded by `ShardingConfig.maxResidentEntities` across all types, unless it
|
|
106
|
+
* is `"unbounded"`. The series is removed when the entity type shuts down.
|
|
107
|
+
*
|
|
108
|
+
* **Gotchas**
|
|
109
|
+
*
|
|
110
|
+
* Always on. `Metric.update` and `Metric.modify` on this gauge do nothing for
|
|
111
|
+
* series the runtime registered.
|
|
112
|
+
*
|
|
113
|
+
* Like the other runner gauges it has no runner attribute: runners sharing a
|
|
114
|
+
* registry without distinct metric attributes overwrite each other's series.
|
|
115
|
+
*
|
|
116
|
+
* @see {@link entityMailboxSize} for the opt-in per-entity mailbox sizes
|
|
117
|
+
*
|
|
118
|
+
* @stability unstable
|
|
119
|
+
* @category metrics
|
|
120
|
+
* @since 4.0.6
|
|
121
|
+
*/
|
|
122
|
+
export const entityMailboxSizeMax = Metric.gauge("effect_cluster_entity_mailbox_size_max", { bigint: true })
|
|
123
|
+
|
|
43
124
|
/**
|
|
44
125
|
* Creates a gauge tracking the number of singleton processes currently running on the
|
|
45
126
|
* current runner.
|
|
@@ -116,3 +197,64 @@ export const runnersHealthy = Metric.gauge("effect_cluster_runners_healthy", { b
|
|
|
116
197
|
* @since 4.0.0
|
|
117
198
|
*/
|
|
118
199
|
export const shards = Metric.gauge("effect_cluster_shards", { bigint: true })
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Represents a gauge tracking the number of shards the current runner is still
|
|
203
|
+
* releasing.
|
|
204
|
+
*
|
|
205
|
+
* **When to use**
|
|
206
|
+
*
|
|
207
|
+
* Use to detect shard releases that stall during rebalancing, shutdown handoff
|
|
208
|
+
* or lock storage failures.
|
|
209
|
+
*
|
|
210
|
+
* **Details**
|
|
211
|
+
*
|
|
212
|
+
* Bigint gauge named `effect_cluster_shards_releasing`, updated with the number
|
|
213
|
+
* of distinct shards being released. A shard counts from the moment it is no
|
|
214
|
+
* longer acquired until its entities and singletons have stopped and its lock
|
|
215
|
+
* is released, including waits for lock storage to recover and release
|
|
216
|
+
* retries.
|
|
217
|
+
*
|
|
218
|
+
* **Gotchas**
|
|
219
|
+
*
|
|
220
|
+
* Positive values are normal while shards move; alert only when the value
|
|
221
|
+
* stays positive. It does not reflect lock ownership, and reacquisition can
|
|
222
|
+
* stay blocked briefly after it returns to zero, while a forced release
|
|
223
|
+
* finishes its bookkeeping.
|
|
224
|
+
*
|
|
225
|
+
* Like the other runner gauges it assumes one runner per process: runners
|
|
226
|
+
* sharing a registry without distinct metric attributes overwrite each other's
|
|
227
|
+
* value.
|
|
228
|
+
*
|
|
229
|
+
* @stability unstable
|
|
230
|
+
* @category metrics
|
|
231
|
+
* @since 4.1.0
|
|
232
|
+
*/
|
|
233
|
+
export const shardsReleasing = Metric.gauge("effect_cluster_shards_releasing", { bigint: true })
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Represents a timer tracking how long the current runner takes to release a
|
|
237
|
+
* shard after reassignment, lock loss or shutdown handoff.
|
|
238
|
+
*
|
|
239
|
+
* **When to use**
|
|
240
|
+
*
|
|
241
|
+
* Use to observe shard handoff latency during rebalancing, shutdown, or lock
|
|
242
|
+
* storage failures.
|
|
243
|
+
*
|
|
244
|
+
* **Details**
|
|
245
|
+
*
|
|
246
|
+
* Millisecond timer named `effect_cluster_shard_release`. Each sample covers
|
|
247
|
+
* entity teardown, retries and any wait for shard lock storage to recover.
|
|
248
|
+
*
|
|
249
|
+
* **Gotchas**
|
|
250
|
+
*
|
|
251
|
+
* Only completed releases are recorded. Interrupted releases and forced
|
|
252
|
+
* releases after lock storage becomes unhealthy are not.
|
|
253
|
+
*
|
|
254
|
+
* @stability unstable
|
|
255
|
+
* @category metrics
|
|
256
|
+
* @since 4.0.0
|
|
257
|
+
*/
|
|
258
|
+
export const shardReleaseDuration = Metric.timer("effect_cluster_shard_release", {
|
|
259
|
+
description: "Time taken to release a shard, including entity teardown, retries and lock storage recovery"
|
|
260
|
+
})
|
|
@@ -24,7 +24,7 @@ import * as Rpc from "../rpc/Rpc.ts"
|
|
|
24
24
|
import { ClientAbort } from "../rpc/RpcSchema.ts"
|
|
25
25
|
import * as Schedule from "../Schedule.ts"
|
|
26
26
|
import * as Schema from "../Schema.ts"
|
|
27
|
-
import
|
|
27
|
+
import * as Scope from "../Scope.ts"
|
|
28
28
|
import * as Semaphore from "../Semaphore.ts"
|
|
29
29
|
import * as Activity from "../workflow/Activity.ts"
|
|
30
30
|
import * as DurableClock from "../workflow/DurableClock.ts"
|
|
@@ -135,11 +135,21 @@ export const make = Effect.gen(function*() {
|
|
|
135
135
|
// Rebuilds share an activation; overlapping activations have separate results.
|
|
136
136
|
// Weak keys do not retain scopes, but contexts captured by clients, activities,
|
|
137
137
|
// or finalizers can keep a closed scope (and its results) reachable until later.
|
|
138
|
-
const pendingByActivation = new WeakMap<Scope.Scope,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
const pendingByActivation = new WeakMap<Scope.Scope, ActivationState>()
|
|
139
|
+
// Closes the scopes retained by suspended runs. The latest run already closed
|
|
140
|
+
// its own scope with its real exit, so earlier finalizers observe success and
|
|
141
|
+
// skip superseded compensations. Abandonment releases owner-local resources
|
|
142
|
+
// without running durable finalizers, so the run can replay elsewhere.
|
|
143
|
+
const closeRuns = (state: ActivationState, abandoned: boolean) =>
|
|
144
|
+
Effect.suspend(() => {
|
|
145
|
+
const scope = state.scope
|
|
146
|
+
if (abandoned) {
|
|
147
|
+
for (const instance of state.instances) instance.abandoned = true
|
|
148
|
+
}
|
|
149
|
+
state.instances.clear()
|
|
150
|
+
state.scope = Scope.makeUnsafe()
|
|
151
|
+
return Scope.close(scope, Exit.void)
|
|
152
|
+
})
|
|
143
153
|
const clients = yield* RcMap.make({
|
|
144
154
|
lookup: Effect.fnUntraced(function*(workflowName: string) {
|
|
145
155
|
const entity = entities.get(workflowName)
|
|
@@ -282,7 +292,7 @@ export const make = Effect.gen(function*() {
|
|
|
282
292
|
yield* storage.clearAddress(clockAddress)
|
|
283
293
|
})
|
|
284
294
|
|
|
285
|
-
const resume = Effect.fnUntraced(function*(workflow: Workflow.Any, executionId: string) {
|
|
295
|
+
const resume = Effect.fnUntraced(function*(workflow: Workflow.Any, executionId: string, mode: WakeMode) {
|
|
286
296
|
const maybeReply = yield* requestReply({
|
|
287
297
|
workflow,
|
|
288
298
|
entityType: `Workflow/${workflow._tag}`,
|
|
@@ -294,6 +304,8 @@ export const make = Effect.gen(function*() {
|
|
|
294
304
|
const maybeSuspended = Option.filter(maybeReply, isSuspendedReply)
|
|
295
305
|
|
|
296
306
|
if (Option.isNone(maybeSuspended)) return
|
|
307
|
+
// Replies without `failed` retain automatic wakes for compatibility.
|
|
308
|
+
if (mode === "automatic" && isFailedReply(maybeSuspended.value)) return
|
|
297
309
|
if (
|
|
298
310
|
!(yield* sharding.reset(
|
|
299
311
|
Snowflake.Snowflake(maybeSuspended.value.requestId),
|
|
@@ -305,6 +317,15 @@ export const make = Effect.gen(function*() {
|
|
|
305
317
|
yield* sharding.pollStorage
|
|
306
318
|
})
|
|
307
319
|
|
|
320
|
+
// Activations load a persisted interrupt when they start, so the per-call
|
|
321
|
+
// check reads only memory.
|
|
322
|
+
const interruptPending = (instance: WorkflowEngine.WorkflowInstance["Service"]) =>
|
|
323
|
+
Effect.map(Effect.serviceOption(CurrentActivationScope), (activation) => {
|
|
324
|
+
const pending = Option.isSome(activation) ? pendingByActivation.get(activation.value) : undefined
|
|
325
|
+
return pending?.workflowName === instance.workflow._tag && pending.executionId === instance.executionId &&
|
|
326
|
+
pending.results.has(InterruptSignal.name)
|
|
327
|
+
})
|
|
328
|
+
|
|
308
329
|
const sendResumeParent = Effect.fnUntraced(function*(options: {
|
|
309
330
|
readonly workflowName: string
|
|
310
331
|
readonly executionId: string
|
|
@@ -363,26 +384,25 @@ export const make = Effect.gen(function*() {
|
|
|
363
384
|
// `Suspended`. Replies are only observed on the runner that saves them, so
|
|
364
385
|
// callers on other runners, and any failure here, leave delivery to the
|
|
365
386
|
// caller's retry schedule.
|
|
366
|
-
const awaitComplete = (workflow: Workflow.Any, executionId: string)
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
}).pipe(Effect.catchCause(() => Effect.never))
|
|
387
|
+
const awaitComplete = Effect.fnUntraced(function*(workflow: Workflow.Any, executionId: string) {
|
|
388
|
+
const address = entityAddressFor({ workflow, entityType: `Workflow/${workflow._tag}`, executionId })
|
|
389
|
+
if (!sharding.hasShardId(address.shardId)) return yield* Effect.never
|
|
390
|
+
const requestId = yield* storage.requestIdForPrimaryKey({ address, tag: "run", id: "" })
|
|
391
|
+
if (Option.isNone(requestId)) return yield* Effect.never
|
|
392
|
+
const request = Envelope.makeRequest<any>({
|
|
393
|
+
requestId: requestId.value,
|
|
394
|
+
address,
|
|
395
|
+
tag: "run",
|
|
396
|
+
payload: {},
|
|
397
|
+
headers: Headers.empty
|
|
398
|
+
})
|
|
399
|
+
// A replay that suspends again re-arms the wait, so it does not spend a
|
|
400
|
+
// step of the caller's retry schedule.
|
|
401
|
+
let settled = false
|
|
402
|
+
while (!settled) {
|
|
403
|
+
settled = yield* awaitRunReply(workflow, request, (reply) => !isSuspendedReply(reply))
|
|
404
|
+
}
|
|
405
|
+
}, Effect.catchCause(() => Effect.never))
|
|
386
406
|
|
|
387
407
|
const interrupt = Effect.fnUntraced(
|
|
388
408
|
function*(workflow: Workflow.Any, executionId: string) {
|
|
@@ -436,7 +456,32 @@ export const make = Effect.gen(function*() {
|
|
|
436
456
|
const activation = yield* CurrentActivationScope
|
|
437
457
|
let pending = pendingByActivation.get(activation)
|
|
438
458
|
if (!pending) {
|
|
439
|
-
|
|
459
|
+
const results = new Map<string, Exit.Exit<unknown, unknown>>()
|
|
460
|
+
// A new owner must see an interrupt persisted before it took over.
|
|
461
|
+
// Publish the cache only once loaded, so a retried build repeats
|
|
462
|
+
// a failed lookup.
|
|
463
|
+
const interrupt = yield* Effect.orDie(requestReply({
|
|
464
|
+
workflow,
|
|
465
|
+
entityType: `Workflow/${workflow._tag}`,
|
|
466
|
+
executionId,
|
|
467
|
+
tag: "deferred",
|
|
468
|
+
id: InterruptSignal.name
|
|
469
|
+
}))
|
|
470
|
+
if (Option.isSome(interrupt)) {
|
|
471
|
+
const decoded = decodeDeferredWithExit(interrupt.value as any)
|
|
472
|
+
results.set(
|
|
473
|
+
InterruptSignal.name,
|
|
474
|
+
(decoded.exit._tag === "Success" ? decoded.exit.value : decoded.exit) as Exit.Exit<unknown, unknown>
|
|
475
|
+
)
|
|
476
|
+
}
|
|
477
|
+
pending = {
|
|
478
|
+
workflowName: workflow._tag,
|
|
479
|
+
executionId,
|
|
480
|
+
results,
|
|
481
|
+
instances: new Set(),
|
|
482
|
+
scope: Scope.makeUnsafe()
|
|
483
|
+
}
|
|
484
|
+
yield* Scope.addFinalizer(activation, closeRuns(pending, true))
|
|
440
485
|
pendingByActivation.set(activation, pending)
|
|
441
486
|
}
|
|
442
487
|
// Retain awaited names through reply persistence, including suspension.
|
|
@@ -444,25 +489,40 @@ export const make = Effect.gen(function*() {
|
|
|
444
489
|
let currentRun: {
|
|
445
490
|
readonly request: Entity.Request<any>
|
|
446
491
|
readonly instance: WorkflowEngine.WorkflowInstance["Service"]
|
|
492
|
+
// Activity awaits must wake the run after suspension without preempting it.
|
|
493
|
+
readonly activityAwaits: Map<string, number>
|
|
447
494
|
} | undefined
|
|
448
|
-
// Concurrent wakes share one wait for the current run to
|
|
495
|
+
// Concurrent automatic wakes share one wait for the current run to
|
|
496
|
+
// publish its reply. Explicit wakes cannot be dropped, because an
|
|
497
|
+
// automatic wake skips the reset of a failure suspension, so they
|
|
498
|
+
// wait outside the gate. Operator resume does not use the gate.
|
|
449
499
|
const resumeGate = Semaphore.makeUnsafe(1)
|
|
450
|
-
const
|
|
451
|
-
|
|
452
|
-
currentRun ? waitForRunReply(workflow, currentRun.request) : Effect.void
|
|
453
|
-
)
|
|
454
|
-
).pipe(
|
|
455
|
-
// Release the gate before reset can start another run, so later
|
|
456
|
-
// completions can wake that replay.
|
|
457
|
-
Effect.flatMap((waited) => Option.isSome(waited) ? resume(workflow, executionId) : Effect.void),
|
|
458
|
-
ensureSuccess
|
|
500
|
+
const waitForCurrentRunReply = Effect.suspend(() =>
|
|
501
|
+
currentRun ? waitForRunReply(workflow, currentRun.request) : Effect.void
|
|
459
502
|
)
|
|
503
|
+
const resumeCurrentRun = (mode: WakeMode) =>
|
|
504
|
+
ensureSuccess(
|
|
505
|
+
mode === "explicit"
|
|
506
|
+
? Effect.andThen(waitForCurrentRunReply, resume(workflow, executionId, mode))
|
|
507
|
+
: resumeGate.withPermitsIfAvailable(1)(waitForCurrentRunReply).pipe(
|
|
508
|
+
// Release the gate before reset can start another run, so later
|
|
509
|
+
// completions can wake that replay.
|
|
510
|
+
Effect.flatMap((waited) =>
|
|
511
|
+
Option.isSome(waited) ? resume(workflow, executionId, mode) : Effect.void
|
|
512
|
+
)
|
|
513
|
+
)
|
|
514
|
+
)
|
|
460
515
|
return {
|
|
461
516
|
run: (request: Entity.Request<any>) => {
|
|
462
|
-
|
|
463
|
-
|
|
517
|
+
// Each run gets a fresh scope under the activation's parent, so
|
|
518
|
+
// replays rebuild compensations while suspended runs keep theirs.
|
|
519
|
+
const instance = WorkflowEngine.WorkflowInstance.initial(workflow, executionId, {
|
|
520
|
+
scope: Scope.forkUnsafe(pending.scope)
|
|
521
|
+
})
|
|
522
|
+
pending.instances.add(instance)
|
|
523
|
+
currentRun = { request, instance, activityAwaits: new Map() }
|
|
464
524
|
const parent = (request.payload as any)[payloadParentKey] as
|
|
465
|
-
| { workflowName: string; executionId: string }
|
|
525
|
+
| { workflowName: string; executionId: string; detached?: boolean }
|
|
466
526
|
| undefined
|
|
467
527
|
return execute(workflow.payloadSchema.make(request.payload) as object, executionId).pipe(
|
|
468
528
|
Effect.onExit((exit) => {
|
|
@@ -479,7 +539,9 @@ export const make = Effect.gen(function*() {
|
|
|
479
539
|
!instance.abandoned &&
|
|
480
540
|
!(suspendOnFailure && exit._tag === "Failure")
|
|
481
541
|
) {
|
|
482
|
-
return parent
|
|
542
|
+
return parent && !parent.detached
|
|
543
|
+
? ensureSuccess(sendResumeParent(parent, executionId))
|
|
544
|
+
: Effect.void
|
|
483
545
|
}
|
|
484
546
|
return engine.deferredResult(InterruptSignal).pipe(
|
|
485
547
|
Effect.flatMap((maybeExit) => {
|
|
@@ -497,6 +559,11 @@ export const make = Effect.gen(function*() {
|
|
|
497
559
|
)
|
|
498
560
|
}),
|
|
499
561
|
Workflow.intoResult,
|
|
562
|
+
Effect.onExit((exit) =>
|
|
563
|
+
Exit.isSuccess(exit) && exit.value._tag === "Suspended"
|
|
564
|
+
? Effect.void
|
|
565
|
+
: closeRuns(pending, instance.abandoned)
|
|
566
|
+
),
|
|
500
567
|
(effect) => deferredState.trackRun(instance, effect),
|
|
501
568
|
// Request middleware and local callers may carry another entity's context.
|
|
502
569
|
Effect.provideService(CurrentActivationScope, activation)
|
|
@@ -506,7 +573,9 @@ export const make = Effect.gen(function*() {
|
|
|
506
573
|
activity(request: Entity.Request<any>) {
|
|
507
574
|
const payload = request.payload as { name: string; attempt: number }
|
|
508
575
|
const activityId = `${executionId}/${payload.name}`
|
|
509
|
-
const instance = WorkflowEngine.WorkflowInstance.initial(workflow, executionId
|
|
576
|
+
const instance = WorkflowEngine.WorkflowInstance.initial(workflow, executionId, {
|
|
577
|
+
awaitedDeferreds: currentRun?.activityAwaits
|
|
578
|
+
})
|
|
510
579
|
interruptedActivities.delete(activityId)
|
|
511
580
|
const entry = activities.get(activityId)
|
|
512
581
|
if (!entry) {
|
|
@@ -546,18 +615,26 @@ export const make = Effect.gen(function*() {
|
|
|
546
615
|
deferred: (request: Entity.Request<any>) => {
|
|
547
616
|
const payload = request.payload as any
|
|
548
617
|
pending.results.set(payload.name, payload.exit)
|
|
618
|
+
const mode: WakeMode = payload.name === InterruptSignal.name ? "explicit" : "automatic"
|
|
549
619
|
// Await registers before reading the cache. If this run has not
|
|
550
620
|
// registered yet, a later await will see the result just stored.
|
|
551
621
|
// Check when the wake runs and skip preemption too: interrupting
|
|
552
622
|
// a later await would require waiting for its reply before reset.
|
|
553
623
|
// A run completing its own deferred also reads it from the cache
|
|
554
|
-
// when it awaits later,
|
|
624
|
+
// when it awaits later, unless an activity is already parked on it.
|
|
625
|
+
// A run only reads InterruptSignal while suspending, so an interrupt
|
|
626
|
+
// always waits for the current run's reply before it resets the run.
|
|
555
627
|
const wake = Effect.suspend(() =>
|
|
556
|
-
currentRun && !currentRun.instance.awaitedDeferreds.has(payload.name)
|
|
557
|
-
? currentRun.
|
|
628
|
+
currentRun && mode === "automatic" && !currentRun.instance.awaitedDeferreds.has(payload.name)
|
|
629
|
+
? currentRun.activityAwaits.has(payload.name)
|
|
630
|
+
// Hold an activity wake until the run has published its reply.
|
|
631
|
+
? resumeCurrentRun(mode)
|
|
632
|
+
: currentRun.instance.completedDeferreds.has(payload.name)
|
|
558
633
|
? Effect.void
|
|
559
|
-
: ensureSuccess(resume(workflow, executionId))
|
|
560
|
-
: deferredState.deferredDone(executionId, payload.name).pipe(
|
|
634
|
+
: ensureSuccess(resume(workflow, executionId, mode))
|
|
635
|
+
: deferredState.deferredDone(executionId, payload.name).pipe(
|
|
636
|
+
Effect.andThen(resumeCurrentRun(mode))
|
|
637
|
+
)
|
|
561
638
|
)
|
|
562
639
|
// An asynchronous reply releases the RPC concurrency permit while
|
|
563
640
|
// the wake waits; the pending request still occupies mailbox capacity.
|
|
@@ -572,7 +649,7 @@ export const make = Effect.gen(function*() {
|
|
|
572
649
|
)
|
|
573
650
|
},
|
|
574
651
|
|
|
575
|
-
resume: () => resumeCurrentRun.pipe(Rpc.wrap({ fork: true, uninterruptible: true }))
|
|
652
|
+
resume: () => resumeCurrentRun("automatic").pipe(Rpc.wrap({ fork: true, uninterruptible: true }))
|
|
576
653
|
}
|
|
577
654
|
}),
|
|
578
655
|
// Alongside the run, let deferred handlers briefly acquire a permit to
|
|
@@ -589,7 +666,7 @@ export const make = Effect.gen(function*() {
|
|
|
589
666
|
).pipe(Effect.andThen(registration))
|
|
590
667
|
}),
|
|
591
668
|
|
|
592
|
-
execute: (workflow, { discard, executionId, parent, payload }) => {
|
|
669
|
+
execute: (workflow, { detached, discard, executionId, parent, payload }) => {
|
|
593
670
|
ensureEntity(workflow)
|
|
594
671
|
return RcMap.get(clients, workflow._tag).pipe(
|
|
595
672
|
Effect.flatMap((make) =>
|
|
@@ -597,7 +674,10 @@ export const make = Effect.gen(function*() {
|
|
|
597
674
|
parent ?
|
|
598
675
|
{
|
|
599
676
|
...payload,
|
|
600
|
-
|
|
677
|
+
// A detached child keeps its parent for observability only.
|
|
678
|
+
[payloadParentKey]: detached
|
|
679
|
+
? { workflowName: parent.workflow._tag, executionId: parent.executionId, detached: true }
|
|
680
|
+
: { workflowName: parent.workflow._tag, executionId: parent.executionId }
|
|
601
681
|
} :
|
|
602
682
|
payload,
|
|
603
683
|
{ discard }
|
|
@@ -649,7 +729,7 @@ export const make = Effect.gen(function*() {
|
|
|
649
729
|
))
|
|
650
730
|
}),
|
|
651
731
|
|
|
652
|
-
resume: (workflow, executionId) => ensureSuccess(resume(workflow, executionId)),
|
|
732
|
+
resume: (workflow, executionId) => ensureSuccess(resume(workflow, executionId, "explicit")),
|
|
653
733
|
|
|
654
734
|
awaitComplete,
|
|
655
735
|
|
|
@@ -659,6 +739,21 @@ export const make = Effect.gen(function*() {
|
|
|
659
739
|
const instance = Context.get(services, WorkflowEngine.WorkflowInstance)
|
|
660
740
|
yield* Effect.annotateCurrentSpan("executionId", instance.executionId)
|
|
661
741
|
const activityId = `${instance.executionId}/${activity.name}`
|
|
742
|
+
// A pending interrupt replays only to rebuild compensations, so it must
|
|
743
|
+
// not run new activities. Finalizers run once `interrupted` is set.
|
|
744
|
+
if (!instance.interrupted && (yield* interruptPending(instance))) {
|
|
745
|
+
const reply = yield* Effect.orDie(requestReply({
|
|
746
|
+
workflow: instance.workflow,
|
|
747
|
+
entityType: `Workflow/${instance.workflow._tag}`,
|
|
748
|
+
executionId: instance.executionId,
|
|
749
|
+
tag: "activity",
|
|
750
|
+
id: activityPrimaryKey(activity.name, attempt)
|
|
751
|
+
}))
|
|
752
|
+
// Suspend so `onExit` applies the interrupt to the run.
|
|
753
|
+
if (Option.isNone(reply) || isSuspendedReply(reply.value)) {
|
|
754
|
+
return new Workflow.Suspended({})
|
|
755
|
+
}
|
|
756
|
+
}
|
|
662
757
|
const client = (yield* RcMap.get(clientsPartial, instance.workflow._tag))(instance.executionId)
|
|
663
758
|
while (true) {
|
|
664
759
|
if (!activities.has(activityId)) {
|
|
@@ -845,9 +940,24 @@ const DeferredRpc = Rpc.make("deferred", {
|
|
|
845
940
|
.annotate(ClusterSchema.Persisted, true)
|
|
846
941
|
.annotate(ClusterSchema.Uninterruptible, true)
|
|
847
942
|
|
|
943
|
+
type WakeMode = "explicit" | "automatic"
|
|
944
|
+
|
|
945
|
+
interface ActivationState {
|
|
946
|
+
readonly workflowName: string
|
|
947
|
+
readonly executionId: string
|
|
948
|
+
readonly results: Map<string, Exit.Exit<unknown, unknown>>
|
|
949
|
+
// Every run forks its scope from here, so runs that suspended keep their
|
|
950
|
+
// resources and durable finalizers until the execution finishes.
|
|
951
|
+
scope: Scope.Closeable
|
|
952
|
+
readonly instances: Set<WorkflowEngine.WorkflowInstance["Service"]>
|
|
953
|
+
}
|
|
954
|
+
|
|
848
955
|
const isSuspendedReply = (reply: WithExitEncoded<Workflow.ResultEncoded<any, any>>) =>
|
|
849
956
|
reply.exit._tag === "Success" && reply.exit.value._tag === "Suspended"
|
|
850
957
|
|
|
958
|
+
const isFailedReply = (reply: WithExitEncoded<Workflow.ResultEncoded<any, any>>) =>
|
|
959
|
+
reply.exit._tag === "Success" && reply.exit.value._tag === "Suspended" && reply.exit.value.failed === true
|
|
960
|
+
|
|
851
961
|
const decodeDeferredWithExit = Schema.decodeSync(Schema.toCodecJson(Reply.WithExit.schema(DeferredRpc)))
|
|
852
962
|
|
|
853
963
|
const ResumeRpc = Rpc.make("resume", {
|
|
@@ -875,7 +985,8 @@ const makeWorkflowEntity = (workflow: Workflow.Any) =>
|
|
|
875
985
|
...workflow.payloadSchema.fields,
|
|
876
986
|
[payloadParentKey]: Schema.optional(Schema.Struct({
|
|
877
987
|
workflowName: Schema.String,
|
|
878
|
-
executionId: Schema.String
|
|
988
|
+
executionId: Schema.String,
|
|
989
|
+
detached: Schema.optional(Schema.Boolean)
|
|
879
990
|
}))
|
|
880
991
|
},
|
|
881
992
|
primaryKey: () => "",
|
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>
|
|
@@ -1086,8 +1093,8 @@ export class MemoryDriver extends Context.Service<MemoryDriver>()("effect/cluste
|
|
|
1086
1093
|
journal.push(envelope)
|
|
1087
1094
|
return SaveResultEncoded.Success()
|
|
1088
1095
|
}),
|
|
1089
|
-
saveReply: (reply_) =>
|
|
1090
|
-
Effect.sync(() => {
|
|
1096
|
+
saveReply: (reply_) => {
|
|
1097
|
+
const save = Effect.sync(() => {
|
|
1091
1098
|
const reply = JSON.parse(JSON.stringify(reply_)) as Reply.Encoded
|
|
1092
1099
|
const entry = requests.get(reply.requestId)
|
|
1093
1100
|
if (!entry || replyIds.has(reply.id)) return
|
|
@@ -1098,7 +1105,18 @@ export class MemoryDriver extends Context.Service<MemoryDriver>()("effect/cluste
|
|
|
1098
1105
|
entry.replies.push(reply)
|
|
1099
1106
|
replyIds.add(reply.id)
|
|
1100
1107
|
replyLatch.openUnsafe()
|
|
1101
|
-
})
|
|
1108
|
+
})
|
|
1109
|
+
// Memory has no transaction isolation. Publish terminal replies at the
|
|
1110
|
+
// outer commit boundary, before their queued handler notifications, so
|
|
1111
|
+
// reply readers cannot deliver a success that may still be rolled back.
|
|
1112
|
+
return TransactionNotifications.use((notifications) =>
|
|
1113
|
+
reply_._tag === "WithExit" && notifications
|
|
1114
|
+
? Effect.sync(() => {
|
|
1115
|
+
notifications.push(save)
|
|
1116
|
+
})
|
|
1117
|
+
: save
|
|
1118
|
+
)
|
|
1119
|
+
},
|
|
1102
1120
|
clearReplies: (id, options) =>
|
|
1103
1121
|
Effect.sync(() => {
|
|
1104
1122
|
const entry = requests.get(String(id))
|