@plurnk/plurnk-service 1.16.4 → 1.17.0
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/.env.defaults +122 -246
- package/INSTALL.md +84 -138
- package/README.md +9 -5
- package/SPEC.md +1710 -1015
- package/dist/Paths.d.ts +2 -0
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +2 -0
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.d.ts.map +1 -1
- package/dist/build-info.js +7 -1
- package/dist/build-info.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/body-preview.d.ts +8 -0
- package/dist/content/body-preview.d.ts.map +1 -0
- package/dist/content/body-preview.js +39 -0
- package/dist/content/body-preview.js.map +1 -0
- package/dist/content/byte-view.d.ts +1 -4
- package/dist/content/byte-view.d.ts.map +1 -1
- package/dist/content/byte-view.js.map +1 -1
- package/dist/content/edit-collision.d.ts.map +1 -1
- package/dist/content/edit-collision.js +3 -4
- package/dist/content/edit-collision.js.map +1 -1
- package/dist/content/line-anchors.d.ts +2 -2
- package/dist/content/line-anchors.d.ts.map +1 -1
- package/dist/content/line-anchors.js +4 -3
- package/dist/content/line-anchors.js.map +1 -1
- package/dist/content/line-selection.d.ts +9 -0
- package/dist/content/line-selection.d.ts.map +1 -0
- package/dist/content/line-selection.js +29 -0
- package/dist/content/line-selection.js.map +1 -0
- package/dist/content/matcher.d.ts +0 -1
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +2 -3
- package/dist/content/matcher.js.map +1 -1
- package/dist/content/pattern-edits.d.ts +39 -0
- package/dist/content/pattern-edits.d.ts.map +1 -0
- package/dist/content/pattern-edits.js +121 -0
- package/dist/content/pattern-edits.js.map +1 -0
- package/dist/content/read-projector.d.ts +18 -9
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +132 -35
- package/dist/content/read-projector.js.map +1 -1
- package/dist/content/read-resolve.d.ts +3 -1
- package/dist/content/read-resolve.d.ts.map +1 -1
- package/dist/content/read-resolve.js +39 -7
- package/dist/content/read-resolve.js.map +1 -1
- package/dist/core/AdmittedTurnExecutor.d.ts +3 -5
- package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
- package/dist/core/AdmittedTurnExecutor.js +91 -83
- package/dist/core/AdmittedTurnExecutor.js.map +1 -1
- package/dist/core/BareBatchRunner.d.ts +6 -1
- package/dist/core/BareBatchRunner.d.ts.map +1 -1
- package/dist/core/BareBatchRunner.js +20 -5
- package/dist/core/BareBatchRunner.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts +2 -3
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +23 -32
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/CapabilityPolicies.d.ts +3 -8
- package/dist/core/CapabilityPolicies.d.ts.map +1 -1
- package/dist/core/CapabilityPolicies.js +2 -28
- package/dist/core/CapabilityPolicies.js.map +1 -1
- package/dist/core/CapabilityResolver.d.ts +10 -10
- package/dist/core/CapabilityResolver.d.ts.map +1 -1
- package/dist/core/CapabilityResolver.js +87 -65
- package/dist/core/CapabilityResolver.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +14 -11
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +11 -12
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +99 -9
- package/dist/core/ClientInteractions.d.ts.map +1 -1
- package/dist/core/ClientInteractions.js +7 -0
- package/dist/core/ClientInteractions.js.map +1 -1
- package/dist/core/CoreSchemeServices.d.ts +13 -10
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +13 -5
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/DataStatementRunner.d.ts +2 -2
- package/dist/core/DataStatementRunner.d.ts.map +1 -1
- package/dist/core/DataStatementRunner.js +36 -39
- package/dist/core/DataStatementRunner.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +19 -26
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +369 -219
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Dispatcher.sql +66 -0
- package/dist/core/DurableStatement.d.ts.map +1 -1
- package/dist/core/DurableStatement.js +2 -1
- package/dist/core/DurableStatement.js.map +1 -1
- package/dist/core/EditMutations.d.ts +14 -18
- package/dist/core/EditMutations.d.ts.map +1 -1
- package/dist/core/EditMutations.js +211 -280
- package/dist/core/EditMutations.js.map +1 -1
- package/dist/core/EditMutations.sql +15 -0
- package/dist/core/EditSequence.d.ts +13 -0
- package/dist/core/EditSequence.d.ts.map +1 -0
- package/dist/core/EditSequence.js +73 -0
- package/dist/core/EditSequence.js.map +1 -0
- package/dist/core/Engine.d.ts +17 -23
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +73 -163
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +0 -724
- package/dist/core/EntryAddressBinding.d.ts +7 -17
- package/dist/core/EntryAddressBinding.d.ts.map +1 -1
- package/dist/core/EntryAddressBinding.js +12 -72
- package/dist/core/EntryAddressBinding.js.map +1 -1
- package/dist/core/ExecutionOutputs.d.ts +9 -0
- package/dist/core/ExecutionOutputs.d.ts.map +1 -0
- package/dist/core/ExecutionOutputs.js +36 -0
- package/dist/core/ExecutionOutputs.js.map +1 -0
- package/dist/core/ExecutionOutputs.sql +13 -0
- package/dist/core/ExecutorRegistry.d.ts +7 -5
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +36 -32
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/HostPaths.d.ts +1 -0
- package/dist/core/HostPaths.d.ts.map +1 -1
- package/dist/core/HostPaths.js +4 -0
- package/dist/core/HostPaths.js.map +1 -1
- package/dist/core/InferenceCall.d.ts.map +1 -1
- package/dist/core/InferenceCall.js +1 -2
- package/dist/core/InferenceCall.js.map +1 -1
- package/dist/core/InferenceCall.sql +29 -0
- package/dist/core/KillHandler.d.ts +1 -0
- package/dist/core/KillHandler.d.ts.map +1 -1
- package/dist/core/KillHandler.js +24 -21
- package/dist/core/KillHandler.js.map +1 -1
- package/dist/core/LogBody.d.ts +8 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +42 -11
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogEntryProjection.d.ts +1 -0
- package/dist/core/LogEntryProjection.d.ts.map +1 -1
- package/dist/core/LogEntryProjection.js +18 -10
- package/dist/core/LogEntryProjection.js.map +1 -1
- package/dist/core/LogVisibility.d.ts +1 -0
- package/dist/core/LogVisibility.d.ts.map +1 -1
- package/dist/core/LogVisibility.js +3 -0
- package/dist/core/LogVisibility.js.map +1 -1
- package/dist/core/LogWriter.d.ts +2 -3
- package/dist/core/LogWriter.d.ts.map +1 -1
- package/dist/core/LogWriter.js +25 -32
- package/dist/core/LogWriter.js.map +1 -1
- package/dist/core/LogWriter.sql +23 -0
- package/dist/core/LoopDriver.d.ts +11 -8
- package/dist/core/LoopDriver.d.ts.map +1 -1
- package/dist/core/LoopDriver.js +163 -189
- package/dist/core/LoopDriver.js.map +1 -1
- package/dist/core/LoopDriver.sql +11 -0
- package/dist/core/LoopLifecycle.d.ts +32 -2
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +88 -4
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +145 -28
- package/dist/core/LoopPolicyReader.sql +6 -0
- package/dist/core/MembershipMaterialization.d.ts.map +1 -1
- package/dist/core/MembershipMaterialization.js +6 -28
- package/dist/core/MembershipMaterialization.js.map +1 -1
- package/dist/core/ModelCall.sql +70 -0
- package/dist/core/MutationEffects.d.ts +5 -3
- package/dist/core/MutationEffects.d.ts.map +1 -1
- package/dist/core/MutationEffects.js +10 -28
- package/dist/core/MutationEffects.js.map +1 -1
- package/dist/core/NativeContent.d.ts +6 -0
- package/dist/core/NativeContent.d.ts.map +1 -0
- package/dist/core/NativeContent.js +16 -0
- package/dist/core/NativeContent.js.map +1 -0
- package/dist/core/NativeContent.sql +6 -0
- package/dist/core/NoticeChannel.js +1 -1
- package/dist/core/NoticeChannel.js.map +1 -1
- package/dist/core/OperatorConfig.js +5 -5
- package/dist/core/OperatorConfig.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +8 -5
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +117 -81
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/PacketBuilder.sql +146 -0
- package/dist/core/PatternSelection.d.ts +28 -0
- package/dist/core/PatternSelection.d.ts.map +1 -0
- package/dist/core/PatternSelection.js +42 -0
- package/dist/core/PatternSelection.js.map +1 -0
- package/dist/core/ProblemLog.d.ts.map +1 -1
- package/dist/core/ProblemLog.js +0 -1
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/PromptFrames.d.ts +12 -0
- package/dist/core/PromptFrames.d.ts.map +1 -0
- package/dist/core/PromptFrames.js +28 -0
- package/dist/core/PromptFrames.js.map +1 -0
- package/dist/core/ProposalLifecycle.d.ts +0 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +20 -19
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProposalLifecycle.sql +33 -0
- package/dist/core/ProviderInstantiate.d.ts +1 -1
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +7 -14
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/ReasoningView.d.ts +9 -0
- package/dist/core/ReasoningView.d.ts.map +1 -0
- package/dist/core/ReasoningView.js +47 -0
- package/dist/core/ReasoningView.js.map +1 -0
- package/dist/core/ResourceBindings.d.ts +16 -0
- package/dist/core/ResourceBindings.d.ts.map +1 -0
- package/dist/core/ResourceBindings.js +45 -0
- package/dist/core/ResourceBindings.js.map +1 -0
- package/dist/core/ResourceMutations.d.ts +5 -8
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +6 -7
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/ResourceSelector.d.ts +2 -2
- package/dist/core/ResourceSelector.d.ts.map +1 -1
- package/dist/core/ResourceSelector.js +122 -62
- package/dist/core/ResourceSelector.js.map +1 -1
- package/dist/core/ResourceTransfers.d.ts +4 -2
- package/dist/core/ResourceTransfers.d.ts.map +1 -1
- package/dist/core/ResourceTransfers.js +95 -26
- package/dist/core/ResourceTransfers.js.map +1 -1
- package/dist/core/RuntimeWorker.d.ts +5 -0
- package/dist/core/RuntimeWorker.d.ts.map +1 -0
- package/dist/core/RuntimeWorker.js +10 -0
- package/dist/core/RuntimeWorker.js.map +1 -0
- package/dist/core/RuntimeWorker.sql +5 -0
- package/dist/core/SchemeRegistry.d.ts +12 -16
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +58 -84
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/StoredPacket.d.ts +6 -1
- package/dist/core/StoredPacket.d.ts.map +1 -1
- package/dist/core/StoredPacket.js +30 -10
- package/dist/core/StoredPacket.js.map +1 -1
- package/dist/core/StrikeRail.d.ts +9 -6
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +60 -113
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/StrikeRail.sql +12 -0
- package/dist/core/TerminalResult.d.ts +1 -1
- package/dist/core/TerminalResult.d.ts.map +1 -1
- package/dist/core/TerminalResult.js +2 -2
- package/dist/core/TerminalResult.js.map +1 -1
- package/dist/core/TokenCalibration.d.ts +1 -6
- package/dist/core/TokenCalibration.d.ts.map +1 -1
- package/dist/core/TokenCalibration.js +13 -9
- package/dist/core/TokenCalibration.js.map +1 -1
- package/dist/core/TokenCalibration.sql +15 -0
- package/dist/core/ToolInputSchema.d.ts +6 -0
- package/dist/core/ToolInputSchema.d.ts.map +1 -0
- package/dist/core/ToolInputSchema.js +43 -0
- package/dist/core/ToolInputSchema.js.map +1 -0
- package/dist/core/ToolResources.d.ts.map +1 -1
- package/dist/core/ToolResources.js +76 -52
- package/dist/core/ToolResources.js.map +1 -1
- package/dist/core/Turn.d.ts +5 -2
- package/dist/core/Turn.d.ts.map +1 -1
- package/dist/core/Turn.js +13 -11
- package/dist/core/Turn.js.map +1 -1
- package/dist/core/Turn.sql +25 -39
- package/dist/core/{SendBroadcastHandler.d.ts → TurnDispositionHandler.d.ts} +25 -17
- package/dist/core/TurnDispositionHandler.d.ts.map +1 -0
- package/dist/core/TurnDispositionHandler.js +198 -0
- package/dist/core/TurnDispositionHandler.js.map +1 -0
- package/dist/core/TurnMaterialization.d.ts +2 -3
- package/dist/core/TurnMaterialization.d.ts.map +1 -1
- package/dist/core/TurnMaterialization.js +40 -15
- package/dist/core/TurnMaterialization.js.map +1 -1
- package/dist/core/TurnMaterialization.sql +44 -0
- package/dist/core/TurnOps.d.ts.map +1 -1
- package/dist/core/TurnOps.js +8 -64
- package/dist/core/TurnOps.js.map +1 -1
- package/dist/core/TurnRunner.d.ts +9 -12
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +232 -408
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/TurnRunner.sql +74 -0
- package/dist/core/TurnSources.sql +39 -0
- package/dist/core/WorkerControlAddress.d.ts +1 -0
- package/dist/core/WorkerControlAddress.d.ts.map +1 -1
- package/dist/core/WorkerControlAddress.js +5 -0
- package/dist/core/WorkerControlAddress.js.map +1 -1
- package/dist/core/WorkerControlHandler.d.ts +1 -3
- package/dist/core/WorkerControlHandler.d.ts.map +1 -1
- package/dist/core/WorkerControlHandler.js +41 -48
- package/dist/core/WorkerControlHandler.js.map +1 -1
- package/dist/core/WorkerName.d.ts +8 -6
- package/dist/core/WorkerName.d.ts.map +1 -1
- package/dist/core/WorkerName.js +33 -24
- package/dist/core/WorkerName.js.map +1 -1
- package/dist/core/WorkerName.sql +7 -10
- package/dist/core/WorkspaceGate.d.ts +1 -1
- package/dist/core/WorkspaceGate.d.ts.map +1 -1
- package/dist/core/WorkspaceGate.js +29 -6
- package/dist/core/WorkspaceGate.js.map +1 -1
- package/dist/core/ambient.sql +236 -0
- package/dist/core/attachments.d.ts +2 -1
- package/dist/core/attachments.d.ts.map +1 -1
- package/dist/core/attachments.js +5 -4
- package/dist/core/attachments.js.map +1 -1
- package/dist/core/caps/CapsResolve.d.ts +2 -3
- package/dist/core/caps/CapsResolve.d.ts.map +1 -1
- package/dist/core/caps/CapsResolve.js +5 -5
- package/dist/core/caps/CapsResolve.js.map +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
- package/dist/core/caps/DbChannelCaps.js +4 -6
- package/dist/core/caps/DbChannelCaps.js.map +1 -1
- package/dist/core/caps/DbEntryCaps.d.ts +2 -1
- package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
- package/dist/core/caps/DbEntryCaps.js +11 -17
- package/dist/core/caps/DbEntryCaps.js.map +1 -1
- package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
- package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
- package/dist/core/caps/DbNotifyCaps.js +3 -5
- package/dist/core/caps/DbNotifyCaps.js.map +1 -1
- package/dist/core/caps/DbProjectionCaps.js +1 -1
- package/dist/core/caps/DbProjectionCaps.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +5 -7
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts +0 -2
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +4 -20
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/env-defaults.d.ts.map +1 -1
- package/dist/core/env-defaults.js +4 -2
- package/dist/core/env-defaults.js.map +1 -1
- package/dist/core/file-materialization.d.ts +4 -1
- package/dist/core/file-materialization.d.ts.map +1 -1
- package/dist/core/file-materialization.js +14 -0
- package/dist/core/file-materialization.js.map +1 -1
- package/dist/core/fork.d.ts +1 -6
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +9 -153
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +162 -185
- package/dist/core/git-env.d.ts +1 -0
- package/dist/core/git-env.d.ts.map +1 -1
- package/dist/core/git-env.js +39 -2
- package/dist/core/git-env.js.map +1 -1
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +64 -48
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/git-state.d.ts.map +1 -1
- package/dist/core/git-state.js +25 -19
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/glob_match.d.ts +4 -0
- package/dist/core/glob_match.d.ts.map +1 -0
- package/dist/core/glob_match.js +7 -0
- package/dist/core/glob_match.js.map +1 -0
- package/dist/core/maintenance.sql +6 -0
- package/dist/core/mutation-types.d.ts +7 -28
- package/dist/core/mutation-types.d.ts.map +1 -1
- package/dist/core/packet-inject.d.ts.map +1 -1
- package/dist/core/packet-inject.js +2 -3
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts +8 -6
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +131 -163
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +1 -1
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +5 -12
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/scheme-types.d.ts +3 -3
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/core/sha256.d.ts +4 -0
- package/dist/core/sha256.d.ts.map +1 -0
- package/dist/core/sha256.js +6 -0
- package/dist/core/sha256.js.map +1 -0
- package/dist/core/teaching.js +1 -1
- package/dist/core/teaching.js.map +1 -1
- package/dist/core/turn-scheduler.d.ts.map +1 -1
- package/dist/core/turn-scheduler.js +5 -18
- package/dist/core/turn-scheduler.js.map +1 -1
- package/dist/core/turn-signals.d.ts +0 -6
- package/dist/core/turn-signals.d.ts.map +1 -1
- package/dist/core/turn-signals.js +1 -7
- package/dist/core/turn-signals.js.map +1 -1
- package/dist/core/worker-ops.sql +15 -22
- package/dist/core/workspace-settings.d.ts.map +1 -1
- package/dist/core/workspace-settings.js +18 -2
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/core/workspace-settings.sql +6 -0
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +27 -90
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/DigestRender.d.ts.map +1 -1
- package/dist/digest/DigestRender.js +14 -54
- package/dist/digest/DigestRender.js.map +1 -1
- package/dist/digest/digest-rows.d.ts +10 -32
- package/dist/digest/digest-rows.d.ts.map +1 -1
- package/dist/digest/digest.sql +43 -18
- package/dist/schemes/Exec.d.ts +6 -12
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +256 -188
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +8 -6
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +33 -61
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/ExecutionInput.d.ts +12 -0
- package/dist/schemes/ExecutionInput.d.ts.map +1 -0
- package/dist/schemes/ExecutionInput.js +94 -0
- package/dist/schemes/ExecutionInput.js.map +1 -0
- package/dist/schemes/File.d.ts +5 -2
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +62 -92
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +84 -79
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +183 -15
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +3 -12
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/QuestionTool.d.ts +5 -0
- package/dist/schemes/QuestionTool.d.ts.map +1 -1
- package/dist/schemes/QuestionTool.js +6 -14
- package/dist/schemes/QuestionTool.js.map +1 -1
- package/dist/schemes/Skill.d.ts +12 -7
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +149 -21
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/TurnSource.d.ts +12 -0
- package/dist/schemes/TurnSource.d.ts.map +1 -0
- package/dist/schemes/TurnSource.js +116 -0
- package/dist/schemes/TurnSource.js.map +1 -0
- package/dist/schemes/Worker.d.ts +3 -3
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +61 -208
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +12 -15
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +63 -63
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +142 -46
- package/dist/schemes/_entry-find.d.ts +1 -3
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +111 -112
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +22 -14
- package/dist/schemes/_entry-fts.d.ts +14 -0
- package/dist/schemes/_entry-fts.d.ts.map +1 -0
- package/dist/schemes/_entry-fts.js +82 -0
- package/dist/schemes/_entry-fts.js.map +1 -0
- package/dist/schemes/_entry-fts.sql +31 -0
- package/dist/schemes/_entry-graph.d.ts.map +1 -1
- package/dist/schemes/_entry-graph.js +6 -14
- package/dist/schemes/_entry-graph.js.map +1 -1
- package/dist/schemes/_entry-graph.sql +29 -44
- package/dist/schemes/_entry-manifest.d.ts +2 -1
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +15 -12
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-manifest.sql +26 -0
- package/dist/schemes/_entry-ops.d.ts +3 -5
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +30 -43
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-ops.sql +5 -6
- package/dist/schemes/_entry-readable.d.ts +8 -0
- package/dist/schemes/_entry-readable.d.ts.map +1 -0
- package/dist/schemes/_entry-readable.js +38 -0
- package/dist/schemes/_entry-readable.js.map +1 -0
- package/dist/schemes/_entry-send.d.ts +1 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +3 -3
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/schemes/_search-index.d.ts +1 -3
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +79 -110
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/schemes/_search-index.sql +30 -0
- package/dist/schemes/exec-runtime.d.ts +1 -1
- package/dist/schemes/exec-runtime.d.ts.map +1 -1
- package/dist/schemes/exec-runtime.js.map +1 -1
- package/dist/server/ClientReads.d.ts +2 -2
- package/dist/server/ClientReads.d.ts.map +1 -1
- package/dist/server/ClientReads.js +5 -8
- package/dist/server/ClientReads.js.map +1 -1
- package/dist/server/Daemon.d.ts +14 -21
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +135 -156
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +23 -21
- package/dist/server/DaemonModule.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +8 -21
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +278 -306
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/Functionality.d.ts +11 -12
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js +129 -101
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.d.ts +3 -5
- package/dist/server/FunctionalityManager.d.ts.map +1 -1
- package/dist/server/FunctionalityManager.js +20 -58
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/MembersFunctionality.d.ts +5 -4
- package/dist/server/MembersFunctionality.d.ts.map +1 -1
- package/dist/server/MembersFunctionality.js +24 -37
- package/dist/server/MembersFunctionality.js.map +1 -1
- package/dist/server/PlurnkSkill.d.ts +11 -0
- package/dist/server/PlurnkSkill.d.ts.map +1 -0
- package/dist/server/PlurnkSkill.js +41 -0
- package/dist/server/PlurnkSkill.js.map +1 -0
- package/dist/server/Retention.d.ts +22 -0
- package/dist/server/Retention.d.ts.map +1 -0
- package/dist/server/Retention.js +54 -0
- package/dist/server/Retention.js.map +1 -0
- package/dist/server/Retention.sql +36 -0
- package/dist/server/ServiceModules.d.ts +5 -0
- package/dist/server/ServiceModules.d.ts.map +1 -0
- package/dist/server/ServiceModules.js +10 -0
- package/dist/server/ServiceModules.js.map +1 -0
- package/dist/server/SkillsFunctionality.d.ts +14 -19
- package/dist/server/SkillsFunctionality.d.ts.map +1 -1
- package/dist/server/SkillsFunctionality.js +97 -104
- package/dist/server/SkillsFunctionality.js.map +1 -1
- package/dist/server/WorkerModelResolver.d.ts +4 -0
- package/dist/server/WorkerModelResolver.d.ts.map +1 -1
- package/dist/server/WorkerModelResolver.js +72 -39
- package/dist/server/WorkerModelResolver.js.map +1 -1
- package/dist/server/WorkspaceCapabilities.d.ts +21 -0
- package/dist/server/WorkspaceCapabilities.d.ts.map +1 -0
- package/dist/server/{WorkerCapabilities.js → WorkspaceCapabilities.js} +40 -40
- package/dist/server/WorkspaceCapabilities.js.map +1 -0
- package/dist/server/WorkspaceResidency.d.ts +36 -0
- package/dist/server/WorkspaceResidency.d.ts.map +1 -0
- package/dist/server/WorkspaceResidency.js +199 -0
- package/dist/server/WorkspaceResidency.js.map +1 -0
- package/dist/server/client-input.d.ts +1 -4
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +4 -45
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +4 -22
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +65 -42
- package/dist/server/envelope.d.ts +8 -0
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +9 -7
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +49 -13
- package/dist/server/lifecycle-recovery.sql +14 -17
- package/dist/server/logEntry.d.ts +1 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +4 -1
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +25 -1
- package/dist/server/loopDocs.d.ts +2 -2
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +38 -31
- package/dist/server/loopDocs.js.map +1 -1
- package/dist/server/loopDocs.sql +1 -3
- package/dist/server/model-catalog.d.ts.map +1 -1
- package/dist/server/model-catalog.js +2 -1
- package/dist/server/model-catalog.js.map +1 -1
- package/dist/server/model-route.d.ts +1 -1
- package/dist/server/model-route.d.ts.map +1 -1
- package/dist/server/model-route.js +4 -2
- package/dist/server/model-route.js.map +1 -1
- package/dist/server/seam-entry-read.sql +3 -4
- package/dist/server/seam-loop.sql +2 -9
- package/dist/server/workspace-capabilities.sql +19 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +5 -17
- package/dist/service.js.map +1 -1
- package/docs/members.md +83 -0
- package/docs/skills.md +50 -0
- package/migrations/001_workspaces.sql +53 -0
- package/migrations/002_workers.sql +183 -0
- package/migrations/003_loops.sql +326 -0
- package/migrations/004_inference.sql +360 -0
- package/migrations/005_entries.sql +207 -0
- package/migrations/006_log.sql +578 -0
- package/migrations/007_subscriptions.sql +175 -0
- package/migrations/008_interactions.sql +29 -0
- package/package.json +33 -40
- package/digest-sql/channel-dispositions/dispositions.sql +0 -15
- package/digest-sql/channel-state/state.sql +0 -6
- package/digest-sql/curation/curation.sql +0 -6
- package/digest-sql/derivations/derivations.sql +0 -4
- package/digest-sql/embeddings/embeddings.sql +0 -4
- package/digest-sql/entry-dispositions/dispositions.sql +0 -15
- package/digest-sql/entry-state/state.sql +0 -6
- package/digest-sql/token-counts/token-counts.sql +0 -2
- package/dist/core/EmbeddingCall.d.ts +0 -23
- package/dist/core/EmbeddingCall.d.ts.map +0 -1
- package/dist/core/EmbeddingCall.js +0 -149
- package/dist/core/EmbeddingCall.js.map +0 -1
- package/dist/core/OverflowTurn.d.ts +0 -11
- package/dist/core/OverflowTurn.d.ts.map +0 -1
- package/dist/core/OverflowTurn.js +0 -80
- package/dist/core/OverflowTurn.js.map +0 -1
- package/dist/core/Owner.d.ts +0 -8
- package/dist/core/Owner.d.ts.map +0 -1
- package/dist/core/Owner.js +0 -46
- package/dist/core/Owner.js.map +0 -1
- package/dist/core/SendBroadcastHandler.d.ts.map +0 -1
- package/dist/core/SendBroadcastHandler.js +0 -159
- package/dist/core/SendBroadcastHandler.js.map +0 -1
- package/dist/core/VectorPump.d.ts +0 -28
- package/dist/core/VectorPump.d.ts.map +0 -1
- package/dist/core/VectorPump.js +0 -130
- package/dist/core/VectorPump.js.map +0 -1
- package/dist/core/owner.sql +0 -11
- package/dist/core/worker-settings.d.ts +0 -10
- package/dist/core/worker-settings.d.ts.map +0 -1
- package/dist/core/worker-settings.js +0 -53
- package/dist/core/worker-settings.js.map +0 -1
- package/dist/schemes/_entry-chunk.d.ts +0 -14
- package/dist/schemes/_entry-chunk.d.ts.map +0 -1
- package/dist/schemes/_entry-chunk.js +0 -165
- package/dist/schemes/_entry-chunk.js.map +0 -1
- package/dist/schemes/_entry-semantic.d.ts +0 -63
- package/dist/schemes/_entry-semantic.d.ts.map +0 -1
- package/dist/schemes/_entry-semantic.js +0 -299
- package/dist/schemes/_entry-semantic.js.map +0 -1
- package/dist/schemes/_entry-semantic.sql +0 -99
- package/dist/schemes/cosine.d.ts +0 -4
- package/dist/schemes/cosine.d.ts.map +0 -1
- package/dist/schemes/cosine.js +0 -9
- package/dist/schemes/cosine.js.map +0 -1
- package/dist/server/WorkerCapabilities.d.ts +0 -21
- package/dist/server/WorkerCapabilities.d.ts.map +0 -1
- package/dist/server/WorkerCapabilities.js.map +0 -1
- package/dist/server/WorkerResidency.d.ts +0 -40
- package/dist/server/WorkerResidency.d.ts.map +0 -1
- package/dist/server/WorkerResidency.js +0 -283
- package/dist/server/WorkerResidency.js.map +0 -1
- package/dist/server/seam-log-read.sql +0 -21
- package/dist/server/worker-capabilities.sql +0 -28
- package/migrations/001_schema.sql +0 -2207
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { InvalidOperationResultError } from "@plurnk/plurnk-schemes";
|
|
2
2
|
import { schemeNameOf } from "./plurnk-uri.js";
|
|
3
|
-
import {
|
|
3
|
+
import { EditCollision, LineAnchors } from "../content/index.js";
|
|
4
4
|
import SchemeCtxImpl from "./caps/SchemeCtxImpl.js";
|
|
5
5
|
import Results from "./results.js";
|
|
6
6
|
import MutationEffects from "./MutationEffects.js";
|
|
7
|
-
|
|
7
|
+
import PatternEdits from "../content/pattern-edits.js";
|
|
8
|
+
import PatternSelection from "./PatternSelection.js";
|
|
9
|
+
// {§edit-execution}: one authored EDIT owns one effect and one proposal.
|
|
8
10
|
export default class EditMutations {
|
|
9
11
|
#schemes;
|
|
10
12
|
#liveSubscriptions;
|
|
@@ -13,6 +15,11 @@ export default class EditMutations {
|
|
|
13
15
|
#checkCapabilities;
|
|
14
16
|
#editTargetIdentity;
|
|
15
17
|
#resolveDataEntryAddress;
|
|
18
|
+
// {§kill-pattern} — EDITs synthesized from a KILL with a matcher remove whole lines.
|
|
19
|
+
#lineDeletions = new WeakSet();
|
|
20
|
+
markLineDeletion(statement) {
|
|
21
|
+
this.#lineDeletions.add(statement);
|
|
22
|
+
}
|
|
16
23
|
#preparedEdits = new WeakMap();
|
|
17
24
|
constructor({ schemes, liveSubscriptions, run, checkWritable, checkCapabilities, editTargetIdentity, resolveDataEntryAddress }) {
|
|
18
25
|
this.#schemes = schemes;
|
|
@@ -23,18 +30,19 @@ export default class EditMutations {
|
|
|
23
30
|
this.#editTargetIdentity = editTargetIdentity;
|
|
24
31
|
this.#resolveDataEntryAddress = resolveDataEntryAddress;
|
|
25
32
|
}
|
|
26
|
-
async resolveEditAnchors(
|
|
27
|
-
const anchored =
|
|
33
|
+
async #resolveEditAnchors(authored, identity, schemeName, manifest, ctx, sequence) {
|
|
34
|
+
const anchored = LineAnchors.hasAnchor(authored.lineMarker);
|
|
28
35
|
// {§edit-batch-merges} — a body that looks like a pasted READ rendering needs the current
|
|
29
36
|
// anchors to be verified, so it takes the anchored path even without an anchor of its own.
|
|
30
37
|
const looksRendered = ({ body }) => {
|
|
31
38
|
const rows = (body ?? "").split("\n").filter((row) => row.length > 0);
|
|
32
39
|
return rows.length > 0 && rows.every((row) => LineAnchors.isAnchoredLine(row));
|
|
33
40
|
};
|
|
34
|
-
const rendered =
|
|
41
|
+
const rendered = looksRendered(authored)
|
|
35
42
|
&& manifest.textEditScopes === true && manifest.writableBy.includes("model");
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
const track = sequence !== undefined && manifest.textEditScopes === true && manifest.writableBy.includes("model");
|
|
44
|
+
if (!anchored && !rendered && !track) {
|
|
45
|
+
return { statement: authored, precondition: null };
|
|
38
46
|
}
|
|
39
47
|
if (manifest.textEditScopes !== true || !manifest.writableBy.includes("model")) {
|
|
40
48
|
return {
|
|
@@ -44,30 +52,29 @@ export default class EditMutations {
|
|
|
44
52
|
recovery: "Remove the scope and submit the scheme's complete editable unit.",
|
|
45
53
|
retryable: false,
|
|
46
54
|
}),
|
|
47
|
-
failedStatement: null,
|
|
48
55
|
};
|
|
49
56
|
}
|
|
50
57
|
if (identity === null) {
|
|
51
58
|
return {
|
|
52
59
|
result: MutationEffects.failure("edit-target-required", 400, "A line-anchored EDIT requires a target resource.", {}, { recovery: "Provide the target that rendered the line anchor.", retryable: false }),
|
|
53
|
-
failedStatement: null,
|
|
54
60
|
};
|
|
55
61
|
}
|
|
56
|
-
const first = statements[0];
|
|
57
|
-
if (first === undefined)
|
|
58
|
-
return { statements: [], precondition: null, prefixFacts: new Map() };
|
|
59
62
|
const current = await this.#run(schemeName, {
|
|
60
63
|
op: "READ",
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
metadata: first.metadata,
|
|
64
|
+
aside: null,
|
|
65
|
+
target: authored.target,
|
|
66
|
+
metadata: authored.metadata,
|
|
65
67
|
lineMarker: { marks: [1, -1] },
|
|
68
|
+
matcher: null,
|
|
66
69
|
body: null,
|
|
67
|
-
position:
|
|
70
|
+
position: authored.position,
|
|
68
71
|
}, ctx);
|
|
69
72
|
if (current.status === 204 || current.status === 404) {
|
|
70
|
-
|
|
73
|
+
sequence?.forget(identity);
|
|
74
|
+
if (!anchored && !rendered) {
|
|
75
|
+
return { statement: authored, precondition: null };
|
|
76
|
+
}
|
|
77
|
+
return { result: EditCollision.result(identity) };
|
|
71
78
|
}
|
|
72
79
|
if (current.status >= 300) {
|
|
73
80
|
return {
|
|
@@ -77,59 +84,39 @@ export default class EditMutations {
|
|
|
77
84
|
stage: "mutation-precondition",
|
|
78
85
|
retryable: false,
|
|
79
86
|
}),
|
|
80
|
-
failedStatement: null,
|
|
81
87
|
};
|
|
82
88
|
}
|
|
83
89
|
if (current.status !== 200) {
|
|
84
|
-
return { result: EditCollision.result(identity)
|
|
90
|
+
return { result: EditCollision.result(identity) };
|
|
85
91
|
}
|
|
86
92
|
const content = current.content;
|
|
87
93
|
if (typeof content !== "string") {
|
|
88
94
|
throw new InvalidOperationResultError(`Scheme '${schemeName}' returned READ ${current.status} without textual content while validating an EDIT anchor.`);
|
|
89
95
|
}
|
|
90
|
-
const lineAnchors = current.lineAnchors;
|
|
91
96
|
const lineAnchorIdentity = current.lineAnchorIdentity;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (typeof lineAnchorIdentity !== "string" || lineAnchorIdentity.length === 0) {
|
|
95
|
-
throw new TypeError("READ line anchors require their canonical derivation identity.");
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (cause) {
|
|
99
|
-
throw new InvalidOperationResultError(`Scheme '${schemeName}' returned READ 200 without its core-owned line-anchor projection.`, { cause });
|
|
97
|
+
if (typeof lineAnchorIdentity !== "string" || lineAnchorIdentity.length === 0) {
|
|
98
|
+
throw new InvalidOperationResultError(`Scheme '${schemeName}' returned READ 200 without its canonical derivation identity.`);
|
|
100
99
|
}
|
|
101
|
-
|
|
100
|
+
// {§line-anchor-write-authority}: internal validation does not depend on published edit hints.
|
|
101
|
+
const lineAnchors = LineAnchors.tokens(lineAnchorIdentity, content);
|
|
102
|
+
let resolved;
|
|
103
|
+
const snapshot = sequence?.observe(lineAnchorIdentity, content);
|
|
104
|
+
const resolve = (marker) => LineAnchors.resolve(lineAnchors, marker, snapshot?.anchors);
|
|
102
105
|
const checks = [];
|
|
103
|
-
// {§edit-batch-receipt} —
|
|
104
|
-
|
|
105
|
-
const stale = [];
|
|
106
|
+
// {§edit-batch-receipt} — diagnose all unresolved anchors, including both range endpoints.
|
|
107
|
+
const unresolved = new Map();
|
|
106
108
|
// {§edit-batch-merges} — a body whose every line carries this resource's own rendered
|
|
107
109
|
// `@xxxxx L:` prefix, hash-verified at its ordinal against the current anchors, is the
|
|
108
110
|
// READ rendering pasted back: the prefixes are stripped and the row says so. A look-alike
|
|
109
111
|
// that does not verify is content and is written as authored, with the fact reported.
|
|
110
|
-
|
|
112
|
+
let prefixFact;
|
|
111
113
|
let publishedReads = null;
|
|
112
114
|
const publishedAnchors = async () => {
|
|
113
115
|
if (publishedReads !== null)
|
|
114
116
|
return publishedReads;
|
|
115
|
-
const rows = await ctx.db.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (row.op !== "READ" || row.status_rx !== 200 || typeof row.rx !== "string")
|
|
119
|
-
continue;
|
|
120
|
-
let parsed;
|
|
121
|
-
try {
|
|
122
|
-
parsed = JSON.parse(row.rx);
|
|
123
|
-
}
|
|
124
|
-
catch {
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
if (parsed.lineAnchorIdentity !== lineAnchorIdentity || !Array.isArray(parsed.lineAnchors))
|
|
128
|
-
continue;
|
|
129
|
-
reads.push({ startLine: typeof parsed.startLine === "number" ? parsed.startLine : 1, anchors: parsed.lineAnchors });
|
|
130
|
-
}
|
|
131
|
-
publishedReads = reads;
|
|
132
|
-
return reads;
|
|
117
|
+
const rows = await ctx.db.edit_published_reads.all({ worker_id: ctx.workerId, identity: lineAnchorIdentity });
|
|
118
|
+
publishedReads = rows.map(({ start_line, anchors }) => ({ startLine: start_line, anchors: JSON.parse(anchors) }));
|
|
119
|
+
return publishedReads;
|
|
133
120
|
};
|
|
134
121
|
const stripRendered = async (statement) => {
|
|
135
122
|
const body = statement.body;
|
|
@@ -144,37 +131,46 @@ export default class EditMutations {
|
|
|
144
131
|
const current = verifies(lineAnchors, 1);
|
|
145
132
|
const source = current ? "current" : (await publishedAnchors()).some(({ anchors, startLine }) => verifies(anchors, startLine)) ? "log" : null;
|
|
146
133
|
if (source === null) {
|
|
147
|
-
|
|
134
|
+
prefixFact = { rule: "rendered-prefix-unverified", lines: filled.length };
|
|
148
135
|
return statement;
|
|
149
136
|
}
|
|
150
|
-
|
|
137
|
+
prefixFact = { rule: "rendered-prefix-stripped", lines: filled.length, source };
|
|
151
138
|
// A rendered row per line: a blank last line keeps its terminator so the paste
|
|
152
139
|
// reproduces exactly the lines it rendered.
|
|
153
140
|
const stripped = rows.map((row) => row.replace(/^@[0-9A-Za-z]{5} +\d+:/, ""));
|
|
154
141
|
return { ...statement, body: stripped.join("\n") + (stripped.length > 1 && stripped.at(-1) === "" ? "\n" : "") };
|
|
155
142
|
};
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const resolution = LineAnchors.resolve(lineAnchors, statement.lineMarker);
|
|
143
|
+
const statement = await stripRendered(authored);
|
|
144
|
+
if (statement.lineMarker === null || !LineAnchors.hasAnchor(statement.lineMarker)) {
|
|
145
|
+
resolved = statement;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const resolution = resolve(statement.lineMarker);
|
|
163
149
|
if (!resolution.ok) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
150
|
+
if (resolution.failure.kind === "invalid") {
|
|
151
|
+
return {
|
|
152
|
+
result: MutationEffects.failure("line-anchor-invalid", 400, LineAnchors.invalidCoordinateDetail, {}, { anchor: resolution.failure.anchor, target: identity, recovery: LineAnchors.invalidCoordinateRecovery, retryable: false }),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
for (const mark of statement.lineMarker.marks) {
|
|
156
|
+
if (typeof mark !== "string" || unresolved.has(mark))
|
|
157
|
+
continue;
|
|
158
|
+
const endpoint = resolve({ marks: [mark] });
|
|
159
|
+
if (endpoint.ok)
|
|
160
|
+
continue;
|
|
161
|
+
if (endpoint.failure.kind === "invalid") {
|
|
162
|
+
throw new InvalidOperationResultError("A validated EDIT anchor became an invalid line coordinate.");
|
|
163
|
+
}
|
|
164
|
+
const { anchor, kind, matches } = endpoint.failure;
|
|
165
|
+
unresolved.set(anchor, { anchor, kind, ...(matches === undefined ? {} : { lines: matches }) });
|
|
169
166
|
}
|
|
170
167
|
return {
|
|
171
|
-
result:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
168
|
+
result: EditCollision.result(lineAnchorIdentity, {}, {
|
|
169
|
+
unresolvedAnchors: [...unresolved.values()],
|
|
170
|
+
editCount: 1,
|
|
171
|
+
applied: 0,
|
|
172
|
+
recovery: "0 of 1 edits applied. READ the target for current coordinates.",
|
|
176
173
|
}),
|
|
177
|
-
failedStatement: authored,
|
|
178
174
|
};
|
|
179
175
|
}
|
|
180
176
|
for (const [index, anchor] of statement.lineMarker.marks.entries()) {
|
|
@@ -184,233 +180,168 @@ export default class EditMutations {
|
|
|
184
180
|
if (typeof line !== "number") {
|
|
185
181
|
throw new InvalidOperationResultError("An EDIT line anchor did not lower to a numeric line.");
|
|
186
182
|
}
|
|
187
|
-
|
|
183
|
+
// The owner validates current content, not the carried anchor's former neighborhood.
|
|
184
|
+
checks.push({ anchor: lineAnchors[line - 1], line });
|
|
188
185
|
}
|
|
189
|
-
resolved
|
|
190
|
-
}
|
|
191
|
-
if (stale.length > 0) {
|
|
192
|
-
const named = stale.map((s) => s.kind === "ambiguous" ? `${s.anchor} (matches lines ${(s.lines ?? []).join(", ")})` : s.anchor).join(", ");
|
|
193
|
-
return {
|
|
194
|
-
result: EditCollision.result(lineAnchorIdentity, {}, {
|
|
195
|
-
staleAnchors: stale,
|
|
196
|
-
editCount: statements.length,
|
|
197
|
-
applied: 0,
|
|
198
|
-
recovery: `${named} no longer resolve${stale.length === 1 ? "s" : ""} — the line moved or changed since the READ that rendered ${stale.length === 1 ? "it" : "them"}; 0 of ${statements.length} edits in this batch were applied. READ the target again before selecting current coordinates.`,
|
|
199
|
-
}),
|
|
200
|
-
failedStatement: null,
|
|
201
|
-
};
|
|
186
|
+
resolved = { ...statement, lineMarker: resolution.marker };
|
|
202
187
|
}
|
|
203
188
|
const uniqueChecks = [...new Map(checks.map((check) => [`${check.anchor}:${check.line}`, check])).values()];
|
|
204
189
|
return {
|
|
205
|
-
|
|
206
|
-
// A strip-only
|
|
190
|
+
statement: resolved,
|
|
191
|
+
// A strip-only EDIT authored no anchor and so carries no compare-and-swap precondition.
|
|
207
192
|
precondition: uniqueChecks.length === 0 ? null : { identity: lineAnchorIdentity, checks: uniqueChecks },
|
|
208
|
-
|
|
193
|
+
prefixFact,
|
|
194
|
+
snapshot,
|
|
209
195
|
};
|
|
210
196
|
}
|
|
211
|
-
async
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
groups.set(key, {
|
|
220
|
-
identity,
|
|
221
|
-
statements: [statement],
|
|
222
|
-
});
|
|
223
|
-
else
|
|
224
|
-
group.statements.push(statement);
|
|
197
|
+
async edit(statement, ctx, sequence) {
|
|
198
|
+
const denial = this.#checkWritable(statement, ctx.writer, ctx.workspaceId)
|
|
199
|
+
?? await this.#checkCapabilities(statement, ctx);
|
|
200
|
+
if (denial !== null)
|
|
201
|
+
return denial;
|
|
202
|
+
const schemeName = schemeNameOf(statement.target);
|
|
203
|
+
if (schemeName === null || statement.target === null) {
|
|
204
|
+
return MutationEffects.failure("target-required", 400, "EDIT requires a target scheme.", {}, { retryable: false });
|
|
225
205
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
if ("result" in resolved) {
|
|
265
|
-
initial = resolved.result;
|
|
266
|
-
if (resolved.failedStatement !== null) {
|
|
267
|
-
projections = new Map(group.map((statement) => [
|
|
268
|
-
statement,
|
|
269
|
-
statement === resolved.failedStatement
|
|
270
|
-
? resolved.result
|
|
271
|
-
: MutationEffects.failure("edit-batch-rejected", 424, "This EDIT was not applied because another EDIT in the same resource batch was invalid.", {}, {
|
|
272
|
-
operation: "EDIT",
|
|
273
|
-
target: preparedGroup.identity,
|
|
274
|
-
retryable: false,
|
|
275
|
-
}),
|
|
276
|
-
]));
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
prefixFacts = resolved.prefixFacts;
|
|
281
|
-
const addressedScheme = first.target?.kind === "url" ? first.target.scheme : schemeName;
|
|
282
|
-
const publishedChannel = first.target?.kind === "url"
|
|
283
|
-
? first.target.fragment ?? manifest.defaultChannel
|
|
284
|
-
: manifest.defaultChannel;
|
|
285
|
-
if (first.target === null) {
|
|
286
|
-
throw new InvalidOperationResultError("An EDIT batch has no target.");
|
|
287
|
-
}
|
|
288
|
-
const binding = await this.#resolveDataEntryAddress({
|
|
289
|
-
target: first.target,
|
|
290
|
-
routedScheme: schemeName,
|
|
291
|
-
handler,
|
|
292
|
-
manifest,
|
|
293
|
-
ctx: schemeCtx,
|
|
294
|
-
});
|
|
295
|
-
if (binding.result !== null) {
|
|
296
|
-
initial = binding.result;
|
|
297
|
-
}
|
|
298
|
-
else if (binding.address === null) {
|
|
299
|
-
initial = MutationEffects.failure("entry-not-found", 404, "The EDIT target could not be resolved.");
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
initial = Results.assert(await method.call(handler, resolved.statements, new SchemeCtxImpl(schemeCtx, addressedScheme ?? schemeName, manifest, this.#liveSubscriptions, {
|
|
303
|
-
authority: binding.address.authority,
|
|
304
|
-
ownerId: binding.address.ownerId,
|
|
305
|
-
publishedChannel,
|
|
306
|
-
editPrecondition: resolved.precondition,
|
|
307
|
-
})));
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
catch (err) {
|
|
312
|
-
if (err instanceof InvalidOperationResultError)
|
|
313
|
-
throw err;
|
|
314
|
-
console.error(`Scheme '${schemeName}' EDIT batch threw outside its operation result contract:`, err);
|
|
315
|
-
initial = MutationEffects.failure("scheme-handler-threw", 500, `The '${schemeName}' scheme did not produce an EDIT result.`, {}, {
|
|
316
|
-
stage: "scheme-dispatch",
|
|
317
|
-
scheme: schemeName,
|
|
318
|
-
operation: "EDIT",
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
let resolveSettled;
|
|
324
|
-
const settled = new Promise((resolve) => { resolveSettled = resolve; });
|
|
325
|
-
const candidate = initial.editReceipt;
|
|
326
|
-
const expectedNormalizations = group.filter(({ lineMarker }) => lineMarker?.marks.length === 3).length;
|
|
327
|
-
if (initial.status < 400
|
|
328
|
-
&& (initial.scopeNormalizations?.length ?? 0) !== expectedNormalizations) {
|
|
329
|
-
throw new InvalidOperationResultError(`EDIT batch normalized ${initial.scopeNormalizations?.length ?? 0} scope(s), expected ${expectedNormalizations}.`);
|
|
330
|
-
}
|
|
331
|
-
const batch = {
|
|
332
|
-
initial,
|
|
333
|
-
settled,
|
|
334
|
-
aggregate: candidate === undefined || candidate === null
|
|
335
|
-
? undefined
|
|
336
|
-
: assertEditBatchReceipt(candidate),
|
|
337
|
-
settle: resolveSettled,
|
|
338
|
-
};
|
|
339
|
-
// {§edit-batch-merges} — the scheme's merge facts are keyed by authored index; a dropped
|
|
340
|
-
// duplicate has no effect in the applied-edits receipt, so receipt indices re-align.
|
|
341
|
-
const merges = initial.status < 400
|
|
342
|
-
? (initial.merges ?? [])
|
|
343
|
-
: [];
|
|
344
|
-
const DROPPING_RULES = new Set(["duplicate-of", "contained-relocated", "contained-already-applied"]);
|
|
345
|
-
const droppedIndices = new Set(merges.filter(({ rule }) => DROPPING_RULES.has(rule)).map(({ index }) => index));
|
|
346
|
-
let normalizationIndex = 0;
|
|
347
|
-
for (const [index, statement] of group.entries()) {
|
|
348
|
-
const dropped = droppedIndices.has(index);
|
|
349
|
-
const ownsNormalization = statement.lineMarker?.marks.length === 3 && initial.status < 400 && !dropped;
|
|
350
|
-
const own = merges.filter((merge) => merge.index === index).map(({ index: _index, ...fact }) => fact);
|
|
351
|
-
const prefix = prefixFacts.get(statement);
|
|
352
|
-
if (prefix !== undefined)
|
|
353
|
-
own.push(prefix);
|
|
354
|
-
this.#preparedEdits.set(statement, {
|
|
355
|
-
first: index === 0,
|
|
356
|
-
index,
|
|
357
|
-
normalizationIndex: ownsNormalization ? normalizationIndex++ : null,
|
|
358
|
-
projection: projections?.get(statement) ?? null,
|
|
359
|
-
batch,
|
|
360
|
-
receiptIndex: dropped ? null : index - [...droppedIndices].filter((d) => d < index).length,
|
|
361
|
-
merged: own,
|
|
362
|
-
});
|
|
206
|
+
const handler = this.#schemes.get(schemeName, ctx.workspaceId);
|
|
207
|
+
const manifest = this.#schemes.manifestFor(schemeName, ctx.workspaceId);
|
|
208
|
+
if (handler?.editBatch === undefined || manifest === undefined) {
|
|
209
|
+
return MutationEffects.failure("operation-not-implemented", 501, `Scheme '${schemeName}' does not implement EDIT.`, {}, { scheme: schemeName, operation: "EDIT", retryable: false });
|
|
210
|
+
}
|
|
211
|
+
if (statement.metadata !== null && manifest.metadataModifier !== true) {
|
|
212
|
+
return MutationEffects.failure("scheme-metadata-unsupported", 400, `Scheme '${schemeName}' does not accept the [metadata] modifier.`, {}, { scheme: schemeName, operation: "EDIT", retryable: false });
|
|
213
|
+
}
|
|
214
|
+
const addressedScheme = statement.target.kind === "url" ? statement.target.scheme : schemeName;
|
|
215
|
+
const publishedChannel = statement.target.fragment ?? manifest.defaultChannel;
|
|
216
|
+
const binding = manifest.category !== "data" ? null : await this.#resolveDataEntryAddress({
|
|
217
|
+
target: statement.target, routedScheme: schemeName, handler, manifest, ctx, access: "write",
|
|
218
|
+
});
|
|
219
|
+
if (binding?.result !== null && binding?.result !== undefined)
|
|
220
|
+
return binding.result;
|
|
221
|
+
if (binding !== null && binding.address === null) {
|
|
222
|
+
return MutationEffects.failure("entry-not-found", 404, "The EDIT target could not be resolved.");
|
|
223
|
+
}
|
|
224
|
+
const identity = await this.#editTargetIdentity(statement, ctx.workspaceId, ctx.workspaceId);
|
|
225
|
+
const resolved = await this.#resolveEditAnchors(statement, identity, schemeName, manifest, ctx, sequence);
|
|
226
|
+
if ("result" in resolved)
|
|
227
|
+
return resolved.result;
|
|
228
|
+
// {§edit-pattern} — a matcher expands the one authored EDIT into a batch of span edits
|
|
229
|
+
// over the current content, guarded by the anchors of every line it touches.
|
|
230
|
+
let batch = [resolved.statement];
|
|
231
|
+
let precondition = resolved.precondition;
|
|
232
|
+
let matched;
|
|
233
|
+
if (statement.matcher !== null) {
|
|
234
|
+
const expanded = await this.expandPattern(resolved.statement, this.#lineDeletions.has(statement) ? "lines" : "spans", schemeName, manifest, ctx);
|
|
235
|
+
if ("result" in expanded)
|
|
236
|
+
return expanded.result;
|
|
237
|
+
batch = expanded.statements;
|
|
238
|
+
matched = expanded.matched;
|
|
239
|
+
precondition = expanded.precondition;
|
|
240
|
+
if (batch.length === 0) {
|
|
241
|
+
// {§edit-pattern} zero matches is the answer: nothing touched, nothing failed.
|
|
242
|
+
sequence?.forget(expanded.identity);
|
|
243
|
+
return Results.assert({ status: 204, matched: 0, detail: "No span matched the pattern; the resource is unchanged." });
|
|
363
244
|
}
|
|
364
245
|
}
|
|
246
|
+
const result = Results.assert(await handler.editBatch(batch, new SchemeCtxImpl(ctx, addressedScheme ?? schemeName, manifest, this.#liveSubscriptions, {
|
|
247
|
+
authority: binding?.address?.authority ?? (statement.target.kind === "url" ? statement.target.hostname ?? "" : ""),
|
|
248
|
+
publishedChannel,
|
|
249
|
+
editPrecondition: precondition,
|
|
250
|
+
})));
|
|
251
|
+
const expectedNormalizations = matched !== undefined ? 0 : statement.lineMarker?.marks.length === 3 ? 1 : 0;
|
|
252
|
+
if (result.status < 400 && (result.scopeNormalizations?.length ?? 0) !== expectedNormalizations) {
|
|
253
|
+
throw new InvalidOperationResultError(`EDIT normalized ${result.scopeNormalizations?.length ?? 0} scope(s), expected ${expectedNormalizations}.`);
|
|
254
|
+
}
|
|
255
|
+
if (matched !== undefined) {
|
|
256
|
+
// The batch landed as one operation: the receipt counts the spans and keeps the
|
|
257
|
+
// boundary context of the first and last of them; the sequence re-reads next time.
|
|
258
|
+
if (resolved.snapshot !== undefined)
|
|
259
|
+
sequence?.forget(resolved.snapshot.identity);
|
|
260
|
+
return this.withMergeFacts(statement, MutationEffects.projectEdit(PatternEdits.compactReceipt(result, matched)));
|
|
261
|
+
}
|
|
262
|
+
const merged = resolved.prefixFact === undefined ? [] : [resolved.prefixFact];
|
|
263
|
+
this.#preparedEdits.set(statement, {
|
|
264
|
+
merged,
|
|
265
|
+
snapshot: resolved.snapshot,
|
|
266
|
+
resolved: resolved.statement,
|
|
267
|
+
sequence,
|
|
268
|
+
});
|
|
269
|
+
return this.withMergeFacts(statement, MutationEffects.projectEdit(result));
|
|
365
270
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
271
|
+
// {§edit-pattern} {§kill-pattern} — read the resource once, match, and expand into a batch of
|
|
272
|
+
// coordinate edits: within-line spans replaced by the body ("spans"), or whole matched lines
|
|
273
|
+
// removed ("lines"). Every touched line's anchor guards the batch, so a same-turn change to
|
|
274
|
+
// one of them collides exactly as an anchored EDIT would.
|
|
275
|
+
async expandPattern(resolved, mode, schemeName, manifest, ctx) {
|
|
276
|
+
const matcher = resolved.matcher;
|
|
277
|
+
if (matcher === null)
|
|
278
|
+
throw new Error("expandPattern requires a matcher");
|
|
279
|
+
const operation = mode === "spans" ? "EDIT" : "KILL";
|
|
280
|
+
const refuse = (code, status, detail) => ({
|
|
281
|
+
result: PatternSelection.refuse(code, status, detail, schemeName, operation),
|
|
282
|
+
});
|
|
283
|
+
const dialect = PatternSelection.refuseDialect(matcher, schemeName, operation);
|
|
284
|
+
if (dialect !== null)
|
|
285
|
+
return { result: dialect };
|
|
286
|
+
if (manifest.textEditScopes !== true) {
|
|
287
|
+
return refuse("pattern-unsupported", 400, `Scheme '${schemeName}' has no textual lines for a pattern to select.`);
|
|
288
|
+
}
|
|
289
|
+
const target = resolved.target;
|
|
290
|
+
if (target === null)
|
|
291
|
+
return refuse("edit-target-required", 400, `A pattern ${operation} requires a target resource.`);
|
|
292
|
+
const current = await this.#run(schemeName, {
|
|
293
|
+
op: "READ", aside: null, target, metadata: resolved.metadata, lineMarker: { marks: [1, -1] }, matcher: null, body: null, position: resolved.position,
|
|
294
|
+
}, ctx);
|
|
295
|
+
if (current.status === 204 || current.status === 404) {
|
|
296
|
+
return refuse("entry-not-found", 404, `Nothing to match: ${target.raw} has no text.`);
|
|
297
|
+
}
|
|
298
|
+
if (current.status >= 300)
|
|
299
|
+
return { result: current };
|
|
300
|
+
const content = current.content;
|
|
301
|
+
const read = current;
|
|
302
|
+
// The whole-resource slice reads as the text primitive; the channel's own mimetype picks
|
|
303
|
+
// the handler the pattern runs under, exactly as FIND does.
|
|
304
|
+
const mimetype = typeof read.sourceMimetype === "string" ? read.sourceMimetype : read.mimetype;
|
|
305
|
+
const identity = current.lineAnchorIdentity;
|
|
306
|
+
if (typeof content !== "string" || typeof identity !== "string" || identity.length === 0) {
|
|
307
|
+
throw new InvalidOperationResultError(`Scheme '${schemeName}' returned READ ${current.status} without textual content and its anchor identity for a pattern ${operation}.`);
|
|
308
|
+
}
|
|
309
|
+
const matched = await PatternSelection.match({
|
|
310
|
+
matcher, content, mimetype: typeof mimetype === "string" ? mimetype : "text/plain",
|
|
311
|
+
marks: resolved.lineMarker?.marks, ctx, scheme: schemeName, operation,
|
|
312
|
+
});
|
|
313
|
+
if ("result" in matched)
|
|
314
|
+
return matched;
|
|
315
|
+
const { evidence, bounds } = matched;
|
|
316
|
+
let edits;
|
|
317
|
+
if (mode === "spans") {
|
|
318
|
+
const spans = PatternEdits.spans(matcher, content, evidence, bounds);
|
|
319
|
+
if ("error" in spans)
|
|
320
|
+
return refuse("pattern-span-invalid", 400, spans.error);
|
|
321
|
+
edits = PatternEdits.replacements(spans, (resolved.body ?? "").replace(/\r\n?/g, "\n"));
|
|
370
322
|
}
|
|
371
|
-
|
|
323
|
+
else {
|
|
324
|
+
edits = PatternEdits.deletions(PatternEdits.lines(evidence, bounds));
|
|
325
|
+
}
|
|
326
|
+
const tokens = LineAnchors.tokens(identity, content);
|
|
327
|
+
const checks = PatternEdits.touchedLines(edits).flatMap((line) => tokens[line - 1] === undefined ? [] : [{ anchor: tokens[line - 1], line }]);
|
|
328
|
+
return {
|
|
329
|
+
statements: edits.map((edit) => ({ ...resolved, lineMarker: edit.marker, matcher: null, body: edit.body })),
|
|
330
|
+
matched: edits.length,
|
|
331
|
+
precondition: { identity, checks },
|
|
332
|
+
identity,
|
|
333
|
+
};
|
|
372
334
|
}
|
|
373
335
|
withMergeFacts(statement, result) {
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
return result;
|
|
377
|
-
return Results.assert({ ...result, merged: prepared.merged });
|
|
336
|
+
const merged = this.mergeFacts(statement);
|
|
337
|
+
return merged.length === 0 ? result : Results.assert({ ...result, merged });
|
|
378
338
|
}
|
|
379
339
|
settleEdit(statement, result) {
|
|
380
340
|
const prepared = this.#preparedEdits.get(statement);
|
|
381
|
-
if (prepared?.
|
|
382
|
-
|
|
383
|
-
const normalizations = prepared.batch.initial.scopeNormalizations;
|
|
384
|
-
prepared.batch.settle(normalizations === undefined
|
|
385
|
-
? result
|
|
386
|
-
: Results.assert({ ...result, scopeNormalizations: normalizations }));
|
|
387
|
-
}
|
|
388
|
-
recordEditSettlement(statement, settlement) {
|
|
389
|
-
if (statement.op !== "EDIT")
|
|
390
|
-
return;
|
|
391
|
-
const prepared = this.#preparedEdits.get(statement);
|
|
392
|
-
if (prepared === undefined || !prepared.first) {
|
|
393
|
-
throw new InvalidOperationResultError("An EDIT proposal settled without its prepared batch owner.");
|
|
394
|
-
}
|
|
395
|
-
const { resolution, applied } = settlement;
|
|
396
|
-
if (resolution.decision !== "accept"
|
|
397
|
-
|| applied === undefined
|
|
398
|
-
|| applied.status >= 300) {
|
|
399
|
-
prepared.batch.aggregate = undefined;
|
|
400
|
-
return;
|
|
401
|
-
}
|
|
402
|
-
if (applied.editReceipt === null) {
|
|
403
|
-
prepared.batch.aggregate = undefined;
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
if (applied.editReceipt !== undefined) {
|
|
407
|
-
prepared.batch.aggregate = assertEditBatchReceipt(applied.editReceipt);
|
|
408
|
-
return;
|
|
341
|
+
if (prepared?.snapshot !== undefined && prepared.resolved !== undefined) {
|
|
342
|
+
prepared.sequence?.settle(prepared.snapshot, prepared.resolved, result);
|
|
409
343
|
}
|
|
410
|
-
if (resolution.body !== undefined)
|
|
411
|
-
prepared.batch.aggregate = undefined;
|
|
412
344
|
}
|
|
413
|
-
// The merge facts the preparation recorded for one statement, for its proposal settlement.
|
|
414
345
|
mergeFacts(statement) {
|
|
415
346
|
return this.#preparedEdits.get(statement)?.merged ?? [];
|
|
416
347
|
}
|