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
|
@@ -125,6 +125,8 @@ type FlagRegistry = {
|
|
|
125
125
|
readonly params: ReadonlyArray<FlagParam>
|
|
126
126
|
/** Maps canonical names and aliases → flag param */
|
|
127
127
|
readonly index: Map<string, FlagParam>
|
|
128
|
+
/** Maps negated names of boolean flags → flag param */
|
|
129
|
+
readonly negations: Map<string, FlagParam>
|
|
128
130
|
}
|
|
129
131
|
|
|
130
132
|
/**
|
|
@@ -229,12 +231,22 @@ const makeCursor = (tokens: ReadonlyArray<Token>): TokenCursor => {
|
|
|
229
231
|
/* Flag Registry */
|
|
230
232
|
/* ========================================================================== */
|
|
231
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Long name that sets a boolean flag to `false`, or `undefined` when the flag
|
|
236
|
+
* has no negated form.
|
|
237
|
+
*/
|
|
238
|
+
const negatedName = (param: FlagParam): string | undefined =>
|
|
239
|
+
!Primitive.isBoolean(param.primitiveType) || param.negation === false
|
|
240
|
+
? undefined
|
|
241
|
+
: param.negation ?? `no-${param.name}`
|
|
242
|
+
|
|
232
243
|
/**
|
|
233
244
|
* Creates a registry for O(1) flag lookup by name or alias.
|
|
234
245
|
* @internal
|
|
235
246
|
*/
|
|
236
247
|
export const createFlagRegistry = (params: ReadonlyArray<FlagParam>): FlagRegistry => {
|
|
237
248
|
const index = new Map<string, FlagParam>()
|
|
249
|
+
const negations = new Map<string, FlagParam>()
|
|
238
250
|
|
|
239
251
|
for (const param of params) {
|
|
240
252
|
if (index.has(param.name)) {
|
|
@@ -250,9 +262,19 @@ export const createFlagRegistry = (params: ReadonlyArray<FlagParam>): FlagRegist
|
|
|
250
262
|
}
|
|
251
263
|
index.set(alias, param)
|
|
252
264
|
}
|
|
265
|
+
|
|
266
|
+
const negation = negatedName(param)
|
|
267
|
+
if (negation !== undefined) {
|
|
268
|
+
if (negations.has(negation)) {
|
|
269
|
+
throw new Error(
|
|
270
|
+
`Duplicate negation "${negation}" in command definition (conflicts with "${negations.get(negation)!.name}")`
|
|
271
|
+
)
|
|
272
|
+
}
|
|
273
|
+
negations.set(negation, param)
|
|
274
|
+
}
|
|
253
275
|
}
|
|
254
276
|
|
|
255
|
-
return { params, index }
|
|
277
|
+
return { params, index, negations }
|
|
256
278
|
}
|
|
257
279
|
|
|
258
280
|
const buildSubcommandIndex = (
|
|
@@ -362,14 +384,11 @@ const resolveFlag = (
|
|
|
362
384
|
}
|
|
363
385
|
}
|
|
364
386
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
param,
|
|
371
|
-
negated: true
|
|
372
|
-
}
|
|
387
|
+
const negated = token._tag === "LongOption" ? registry.negations.get(token.name) : undefined
|
|
388
|
+
if (negated) {
|
|
389
|
+
return {
|
|
390
|
+
param: negated,
|
|
391
|
+
negated: true
|
|
373
392
|
}
|
|
374
393
|
}
|
|
375
394
|
|
|
@@ -740,8 +759,9 @@ const createUnrecognizedFlagError = (
|
|
|
740
759
|
// that was intentionally kept out of --help.
|
|
741
760
|
if (p.hidden) continue
|
|
742
761
|
validNames.push(p.name)
|
|
743
|
-
|
|
744
|
-
|
|
762
|
+
const negation = negatedName(p)
|
|
763
|
+
if (negation !== undefined) {
|
|
764
|
+
validNames.push(negation)
|
|
745
765
|
}
|
|
746
766
|
for (const alias of p.aliases) {
|
|
747
767
|
validNames.push(alias)
|
|
@@ -7,9 +7,15 @@
|
|
|
7
7
|
* for distributed maintenance work where the job should be owned by the cluster
|
|
8
8
|
* rather than by every runner independently.
|
|
9
9
|
*
|
|
10
|
+
* With `calculateNextRunFromPrevious`, every run is processed by a single
|
|
11
|
+
* entity per cron job, so runs never overlap and are caught up in order. The
|
|
12
|
+
* scheduled time of the current run is available through
|
|
13
|
+
* `CurrentScheduledTime`.
|
|
14
|
+
*
|
|
10
15
|
* @stability unstable
|
|
11
16
|
* @since 4.0.0
|
|
12
17
|
*/
|
|
18
|
+
import * as Context from "../Context.ts"
|
|
13
19
|
import * as Cron from "../Cron.ts"
|
|
14
20
|
import * as DateTime from "../DateTime.ts"
|
|
15
21
|
import * as Duration from "../Duration.ts"
|
|
@@ -29,6 +35,23 @@ import * as Entity from "./Entity.ts"
|
|
|
29
35
|
import type { Sharding } from "./Sharding.ts"
|
|
30
36
|
import * as Singleton from "./Singleton.ts"
|
|
31
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Service tag for the scheduled time of the cron run currently executing.
|
|
40
|
+
*
|
|
41
|
+
* **When to use**
|
|
42
|
+
*
|
|
43
|
+
* Use to read the time the current run was scheduled for, inside the
|
|
44
|
+
* `execute` effect of `make`.
|
|
45
|
+
*
|
|
46
|
+
* @stability unstable
|
|
47
|
+
* @category services
|
|
48
|
+
* @since 4.0.0
|
|
49
|
+
*/
|
|
50
|
+
export class CurrentScheduledTime extends Context.Service<
|
|
51
|
+
CurrentScheduledTime,
|
|
52
|
+
DateTime.Utc
|
|
53
|
+
>()("effect/cluster/ClusterCron/CurrentScheduledTime") {}
|
|
54
|
+
|
|
32
55
|
/**
|
|
33
56
|
* Creates a layer that runs a cron job through the cluster sharding system.
|
|
34
57
|
*
|
|
@@ -60,6 +83,11 @@ export const make = <E, R>(options: {
|
|
|
60
83
|
*
|
|
61
84
|
* Defaults to `false`, meaning the next run will be calculated from the
|
|
62
85
|
* current time.
|
|
86
|
+
*
|
|
87
|
+
* When enabled, all runs are processed one at a time by a single entity, so
|
|
88
|
+
* missed runs are caught up in order without overlapping. A run that fails
|
|
89
|
+
* is retried in place and blocks later runs until it succeeds or is older
|
|
90
|
+
* than `skipIfOlderThan`.
|
|
63
91
|
*/
|
|
64
92
|
readonly calculateNextRunFromPrevious?: boolean | undefined
|
|
65
93
|
|
|
@@ -76,26 +104,42 @@ export const make = <E, R>(options: {
|
|
|
76
104
|
* Defaults to "1 day".
|
|
77
105
|
*/
|
|
78
106
|
readonly skipIfOlderThan?: Duration.Input | undefined
|
|
79
|
-
}): Layer.Layer<never, never, Sharding | Exclude<R, Scope>> => {
|
|
107
|
+
}): Layer.Layer<never, never, Sharding | Exclude<Exclude<R, CurrentScheduledTime>, Scope>> => {
|
|
108
|
+
const fromPrevious = options.calculateNextRunFromPrevious === true
|
|
109
|
+
const nextRun = (after: DateTime.Utc) => DateTime.fromDateUnsafe(Cron.next(options.cron, after))
|
|
110
|
+
|
|
80
111
|
const CronEntity = Entity.make(`ClusterCron/${options.name}`, [
|
|
81
112
|
Rpc.make("run", {
|
|
82
113
|
payload: CronPayload
|
|
83
114
|
})
|
|
84
115
|
.annotate(Persisted, true)
|
|
85
|
-
.annotate(Uninterruptible, true)
|
|
116
|
+
.annotate(Uninterruptible, true),
|
|
117
|
+
Rpc.make("start").annotate(Persisted, true)
|
|
86
118
|
])
|
|
87
119
|
.annotate(ClusterSchema.ShardGroup, () => options.shardGroup ?? "default")
|
|
88
120
|
.annotate(ClusterSchema.ClientTracingEnabled, false)
|
|
89
121
|
|
|
122
|
+
// with `calculateNextRunFromPrevious`, every run shares the executor address
|
|
123
|
+
const send = (dateTime: DateTime.Utc) =>
|
|
124
|
+
Effect.flatMap(CronEntity.client, (makeClient) =>
|
|
125
|
+
fromPrevious
|
|
126
|
+
? makeClient(executorId).run(new CronPayload({ dateTime, executor: true }), { discard: true })
|
|
127
|
+
: makeClient(DateTime.formatIso(dateTime)).run(new CronPayload({ dateTime }), { discard: true }))
|
|
128
|
+
|
|
129
|
+
const schedule = (dateTime: DateTime.Utc) => send(dateTime).pipe(withRetry("Failed to schedule next run, retrying"))
|
|
130
|
+
|
|
90
131
|
const InitialRun = Singleton.make(
|
|
91
132
|
`ClusterCron/${options.name}`,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
133
|
+
fromPrevious
|
|
134
|
+
// the executor schedules the next run if its chain has been lost.
|
|
135
|
+
// `start` has no primary key, so each retry is a new message
|
|
136
|
+
? Effect.flatMap(CronEntity.client, (makeClient) => makeClient(executorId).start()).pipe(
|
|
137
|
+
withRetry("Failed to start cron job, retrying")
|
|
138
|
+
)
|
|
139
|
+
: Effect.flatMap(
|
|
140
|
+
DateTime.now,
|
|
141
|
+
(now) => send(nextRun(now)).pipe(withRetry("Failed to schedule initial run, retrying"))
|
|
142
|
+
),
|
|
99
143
|
{ shardGroup: options.shardGroup }
|
|
100
144
|
)
|
|
101
145
|
|
|
@@ -104,61 +148,76 @@ export const make = <E, R>(options: {
|
|
|
104
148
|
Option.getOrElse(() => Duration.days(1))
|
|
105
149
|
)
|
|
106
150
|
|
|
107
|
-
const
|
|
151
|
+
const execute = Effect.fnUntraced(function*(dateTime: DateTime.Utc) {
|
|
108
152
|
const now = yield* DateTime.now
|
|
109
153
|
if (DateTime.isLessThan(dateTime, DateTime.subtractDuration(now, skipIfOlderThan))) {
|
|
110
154
|
return
|
|
111
155
|
}
|
|
112
|
-
return yield* options.execute
|
|
156
|
+
return yield* Effect.provideService(options.execute, CurrentScheduledTime, dateTime)
|
|
113
157
|
}, Effect.orDie)
|
|
114
158
|
|
|
115
159
|
const EntityLayer = CronEntity.toLayer(Effect.gen(function*() {
|
|
116
|
-
const
|
|
160
|
+
const address = yield* Entity.CurrentAddress
|
|
161
|
+
// runs are processed one at a time, so a run processed before `start`
|
|
162
|
+
// means the chain is alive
|
|
163
|
+
let processedRun = false
|
|
117
164
|
return {
|
|
118
|
-
run: (request) =>
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Effect.tapCause((cause) => Effect.logWarning("Failed to schedule next run, retrying", cause)),
|
|
133
|
-
Effect.sandbox,
|
|
134
|
-
Effect.retry(retryPolicy),
|
|
135
|
-
Effect.orDie
|
|
136
|
-
)
|
|
137
|
-
}),
|
|
165
|
+
run: (request) => {
|
|
166
|
+
const dateTime = request.payload.dateTime
|
|
167
|
+
if (fromPrevious && address.entityId !== executorId) {
|
|
168
|
+
// a run scheduled by an earlier release joins the executor's chain
|
|
169
|
+
return schedule(dateTime)
|
|
170
|
+
}
|
|
171
|
+
processedRun = true
|
|
172
|
+
return Effect.onExitPrimitive(
|
|
173
|
+
execute(dateTime),
|
|
174
|
+
(exit) =>
|
|
175
|
+
Effect.andThen(
|
|
176
|
+
Exit.isFailure(exit) ? Effect.logWarning(exit.cause) : Effect.void,
|
|
177
|
+
fromPrevious ? schedule(nextRun(dateTime)) : Effect.flatMap(DateTime.now, (now) => schedule(nextRun(now)))
|
|
178
|
+
),
|
|
138
179
|
true
|
|
139
180
|
).pipe(
|
|
140
181
|
Effect.annotateLogs({
|
|
141
182
|
module: "effect/cluster/ClusterCron",
|
|
142
183
|
name: options.name,
|
|
143
|
-
dateTime
|
|
184
|
+
dateTime
|
|
144
185
|
})
|
|
145
186
|
)
|
|
187
|
+
},
|
|
188
|
+
start: () =>
|
|
189
|
+
processedRun
|
|
190
|
+
? Effect.void
|
|
191
|
+
// deduplicated against the pending run if the chain is alive
|
|
192
|
+
: Effect.flatMap(DateTime.now, (now) => schedule(nextRun(now)))
|
|
146
193
|
}
|
|
147
194
|
}))
|
|
148
195
|
|
|
149
196
|
return Layer.merge(InitialRun, EntityLayer)
|
|
150
197
|
}
|
|
151
198
|
|
|
199
|
+
const executorId = "executor"
|
|
200
|
+
|
|
152
201
|
const retryPolicy = Schedule.min([
|
|
153
202
|
Schedule.exponential(200, 1.5),
|
|
154
203
|
Schedule.spaced("1 minute")
|
|
155
204
|
])
|
|
156
205
|
|
|
206
|
+
const withRetry = (message: string) => <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, never, R> =>
|
|
207
|
+
self.pipe(
|
|
208
|
+
Effect.tapCause((cause) => Effect.logWarning(message, cause)),
|
|
209
|
+
Effect.sandbox,
|
|
210
|
+
Effect.retry(retryPolicy),
|
|
211
|
+
Effect.orDie
|
|
212
|
+
)
|
|
213
|
+
|
|
157
214
|
class CronPayload extends Schema.Class<CronPayload>("effect/cluster/ClusterCron/CronPayload")({
|
|
158
|
-
dateTime: Schema.DateTimeUtc
|
|
215
|
+
dateTime: Schema.DateTimeUtc,
|
|
216
|
+
// set for runs sent to the executor, which share one entity address
|
|
217
|
+
executor: Schema.optional(Schema.Boolean)
|
|
159
218
|
}) {
|
|
160
219
|
[PrimaryKey.symbol]() {
|
|
161
|
-
return ""
|
|
220
|
+
return this.executor ? DateTime.formatIso(this.dateTime) : ""
|
|
162
221
|
}
|
|
163
222
|
[DeliverAt.symbol]() {
|
|
164
223
|
return this.dateTime
|
|
@@ -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)
|
|
@@ -374,26 +384,25 @@ export const make = Effect.gen(function*() {
|
|
|
374
384
|
// `Suspended`. Replies are only observed on the runner that saves them, so
|
|
375
385
|
// callers on other runners, and any failure here, leave delivery to the
|
|
376
386
|
// caller's retry schedule.
|
|
377
|
-
const awaitComplete = (workflow: Workflow.Any, executionId: string)
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}).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))
|
|
397
406
|
|
|
398
407
|
const interrupt = Effect.fnUntraced(
|
|
399
408
|
function*(workflow: Workflow.Any, executionId: string) {
|
|
@@ -465,7 +474,14 @@ export const make = Effect.gen(function*() {
|
|
|
465
474
|
(decoded.exit._tag === "Success" ? decoded.exit.value : decoded.exit) as Exit.Exit<unknown, unknown>
|
|
466
475
|
)
|
|
467
476
|
}
|
|
468
|
-
pending = {
|
|
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))
|
|
469
485
|
pendingByActivation.set(activation, pending)
|
|
470
486
|
}
|
|
471
487
|
// Retain awaited names through reply persistence, including suspension.
|
|
@@ -476,24 +492,34 @@ export const make = Effect.gen(function*() {
|
|
|
476
492
|
// Activity awaits must wake the run after suspension without preempting it.
|
|
477
493
|
readonly activityAwaits: Map<string, number>
|
|
478
494
|
} | undefined
|
|
479
|
-
// Concurrent wakes share one wait for the current run to
|
|
480
|
-
// Explicit wakes cannot be dropped
|
|
481
|
-
//
|
|
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.
|
|
482
499
|
const resumeGate = Semaphore.makeUnsafe(1)
|
|
500
|
+
const waitForCurrentRunReply = Effect.suspend(() =>
|
|
501
|
+
currentRun ? waitForRunReply(workflow, currentRun.request) : Effect.void
|
|
502
|
+
)
|
|
483
503
|
const resumeCurrentRun = (mode: WakeMode) =>
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
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
|
+
)
|
|
493
514
|
)
|
|
494
515
|
return {
|
|
495
516
|
run: (request: Entity.Request<any>) => {
|
|
496
|
-
|
|
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)
|
|
497
523
|
currentRun = { request, instance, activityAwaits: new Map() }
|
|
498
524
|
const parent = (request.payload as any)[payloadParentKey] as
|
|
499
525
|
| { workflowName: string; executionId: string; detached?: boolean }
|
|
@@ -533,6 +559,11 @@ export const make = Effect.gen(function*() {
|
|
|
533
559
|
)
|
|
534
560
|
}),
|
|
535
561
|
Workflow.intoResult,
|
|
562
|
+
Effect.onExit((exit) =>
|
|
563
|
+
Exit.isSuccess(exit) && exit.value._tag === "Suspended"
|
|
564
|
+
? Effect.void
|
|
565
|
+
: closeRuns(pending, instance.abandoned)
|
|
566
|
+
),
|
|
536
567
|
(effect) => deferredState.trackRun(instance, effect),
|
|
537
568
|
// Request middleware and local callers may carry another entity's context.
|
|
538
569
|
Effect.provideService(CurrentActivationScope, activation)
|
|
@@ -591,8 +622,10 @@ export const make = Effect.gen(function*() {
|
|
|
591
622
|
// a later await would require waiting for its reply before reset.
|
|
592
623
|
// A run completing its own deferred also reads it from the cache
|
|
593
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.
|
|
594
627
|
const wake = Effect.suspend(() =>
|
|
595
|
-
currentRun && !currentRun.instance.awaitedDeferreds.has(payload.name)
|
|
628
|
+
currentRun && mode === "automatic" && !currentRun.instance.awaitedDeferreds.has(payload.name)
|
|
596
629
|
? currentRun.activityAwaits.has(payload.name)
|
|
597
630
|
// Hold an activity wake until the run has published its reply.
|
|
598
631
|
? resumeCurrentRun(mode)
|
|
@@ -909,6 +942,16 @@ const DeferredRpc = Rpc.make("deferred", {
|
|
|
909
942
|
|
|
910
943
|
type WakeMode = "explicit" | "automatic"
|
|
911
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
|
+
|
|
912
955
|
const isSuspendedReply = (reply: WithExitEncoded<Workflow.ResultEncoded<any, any>>) =>
|
|
913
956
|
reply.exit._tag === "Success" && reply.exit.value._tag === "Suspended"
|
|
914
957
|
|