@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,4 +1,3 @@
|
|
|
1
|
-
import { type CapabilityPolicy } from "@plurnk/plurnk-contracts";
|
|
2
1
|
import type { Db } from "./Db.ts";
|
|
3
2
|
export type WorkerNameRejection = "invalid" | "reserved";
|
|
4
3
|
export type WorkerOrigin = "model" | "client" | "_plurnk";
|
|
@@ -8,12 +7,13 @@ export interface WorkerNameClaim {
|
|
|
8
7
|
}
|
|
9
8
|
interface AutoWorkerOptions {
|
|
10
9
|
workspaceId: number;
|
|
11
|
-
prefix: string;
|
|
12
|
-
qualifier?: string;
|
|
13
10
|
parentWorkerId?: number;
|
|
14
11
|
origin: WorkerOrigin;
|
|
15
12
|
forkSnapshot?: boolean;
|
|
16
|
-
|
|
13
|
+
}
|
|
14
|
+
export declare class WorkerNameConflictError extends Error {
|
|
15
|
+
readonly workerName: string;
|
|
16
|
+
constructor(workerName: string);
|
|
17
17
|
}
|
|
18
18
|
export declare class WorkerNameError extends Error {
|
|
19
19
|
readonly workerName: string;
|
|
@@ -24,11 +24,13 @@ export declare class WorkerNameError extends Error {
|
|
|
24
24
|
}
|
|
25
25
|
export default class WorkerName {
|
|
26
26
|
#private;
|
|
27
|
+
static forId(db: Db, workerId: number): Promise<string>;
|
|
27
28
|
static rejection(workerName: string): WorkerNameRejection | null;
|
|
28
29
|
static assert(workerName: string): string;
|
|
29
|
-
static
|
|
30
|
+
static short(): string;
|
|
30
31
|
static claimAuto(db: Db, options: AutoWorkerOptions): Promise<WorkerNameClaim>;
|
|
31
|
-
static
|
|
32
|
+
static claimNamed(db: Db, name: string, options: AutoWorkerOptions): Promise<WorkerNameClaim>;
|
|
33
|
+
static ensureDefaultConversation(db: Db, options: Pick<AutoWorkerOptions, "workspaceId">): Promise<WorkerNameClaim>;
|
|
32
34
|
}
|
|
33
35
|
export {};
|
|
34
36
|
//# sourceMappingURL=WorkerName.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerName.d.ts","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkerName.d.ts","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,UAAU,EAAE,MAAM,EAI7B;CACJ;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,YAAY,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAY7D;CACJ;AAID,MAAM,CAAC,OAAO,OAAO,UAAU;;IAG3B,OAAa,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5D;IAED,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAG/D;IAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIxC;IAED,MAAM,CAAC,KAAK,IAAI,MAAM,CAErB;IA0CD,OAAa,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAEnF;IAED,OAAa,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAWlG;IAID,OAAa,yBAAyB,CAClC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAChD,OAAO,CAAC,eAAe,CAAC,CAI1B;CACJ"}
|
package/dist/core/WorkerName.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { RESERVED_AUTHORITIES, WORKER_NAME, } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import { randomBytes } from "node:crypto";
|
|
3
|
+
export class WorkerNameConflictError extends Error {
|
|
4
|
+
workerName;
|
|
5
|
+
constructor(workerName) {
|
|
6
|
+
super(`Worker '${workerName}' already exists in this workspace.`);
|
|
7
|
+
this.name = "WorkerNameConflictError";
|
|
8
|
+
this.workerName = workerName;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
2
11
|
export class WorkerNameError extends Error {
|
|
3
12
|
workerName;
|
|
4
13
|
rejection;
|
|
@@ -21,7 +30,13 @@ export class WorkerNameError extends Error {
|
|
|
21
30
|
// {§worker-name-minting} Model/client minting only; internal reserved actors and
|
|
22
31
|
// generic URI ingestion have their own contracts.
|
|
23
32
|
export default class WorkerName {
|
|
24
|
-
static #RESERVED = new Set(
|
|
33
|
+
static #RESERVED = new Set(RESERVED_AUTHORITIES);
|
|
34
|
+
static async forId(db, workerId) {
|
|
35
|
+
const row = await db.worker_name_by_id.get({ worker_id: workerId });
|
|
36
|
+
if (row === undefined)
|
|
37
|
+
throw new Error(`Worker ${workerId} does not exist.`);
|
|
38
|
+
return row.name;
|
|
39
|
+
}
|
|
25
40
|
static rejection(workerName) {
|
|
26
41
|
if (WorkerName.#RESERVED.has(workerName.toLowerCase()))
|
|
27
42
|
return "reserved";
|
|
@@ -33,19 +48,8 @@ export default class WorkerName {
|
|
|
33
48
|
throw new WorkerNameError(workerName, rejection);
|
|
34
49
|
return workerName;
|
|
35
50
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
static ordinal(prefix, ordinal, qualifier) {
|
|
39
|
-
if (!Number.isSafeInteger(ordinal) || ordinal < 1) {
|
|
40
|
-
throw new Error(`Worker ordinal must be a positive safe integer; received ${ordinal}.`);
|
|
41
|
-
}
|
|
42
|
-
const suffix = `${qualifier === undefined ? "" : `-${qualifier}`}-${ordinal}`;
|
|
43
|
-
for (let length = prefix.length; length > 0; length--) {
|
|
44
|
-
const candidate = `${prefix.slice(0, length)}${suffix}`;
|
|
45
|
-
if (WorkerName.rejection(candidate) === null)
|
|
46
|
-
return candidate;
|
|
47
|
-
}
|
|
48
|
-
throw new Error(`Worker ordinal suffix '${suffix}' leaves no mintable name prefix.`);
|
|
51
|
+
static short() {
|
|
52
|
+
return randomBytes(4).toString("hex");
|
|
49
53
|
}
|
|
50
54
|
static async #defaultConversation(db, workspaceId) {
|
|
51
55
|
return await db.worker_name_get_default_conversation.get({
|
|
@@ -53,22 +57,15 @@ export default class WorkerName {
|
|
|
53
57
|
});
|
|
54
58
|
}
|
|
55
59
|
static async #claimAuto(db, options, defaultConversation) {
|
|
56
|
-
const { workspaceId,
|
|
57
|
-
const namePrefix = `${prefix}${qualifier === undefined ? "" : `-${qualifier}`}-%`;
|
|
58
|
-
const count = await db.worker_name_count.get({
|
|
59
|
-
workspace_id: workspaceId,
|
|
60
|
-
name_prefix: namePrefix,
|
|
61
|
-
});
|
|
62
|
-
let ordinal = (count?.n ?? 0) + 1;
|
|
60
|
+
const { workspaceId, parentWorkerId, origin, forkSnapshot = false, } = options;
|
|
63
61
|
while (true) {
|
|
64
62
|
const claimed = await db.worker_name_claim.get({
|
|
65
63
|
workspace_id: workspaceId,
|
|
66
|
-
name: WorkerName.
|
|
64
|
+
name: WorkerName.short(),
|
|
67
65
|
parent_worker_id: parentWorkerId ?? null,
|
|
68
66
|
origin,
|
|
69
67
|
default_conversation: defaultConversation ? 1 : 0,
|
|
70
68
|
fork_snapshot: forkSnapshot ? 1 : 0,
|
|
71
|
-
capability_bound: JSON.stringify(capabilityBound),
|
|
72
69
|
});
|
|
73
70
|
if (claimed !== undefined)
|
|
74
71
|
return claimed;
|
|
@@ -77,7 +74,6 @@ export default class WorkerName {
|
|
|
77
74
|
if (existing !== undefined)
|
|
78
75
|
return existing;
|
|
79
76
|
}
|
|
80
|
-
ordinal++;
|
|
81
77
|
}
|
|
82
78
|
}
|
|
83
79
|
// A generated name is not minted until this atomic claim creates its worker.
|
|
@@ -85,6 +81,19 @@ export default class WorkerName {
|
|
|
85
81
|
static async claimAuto(db, options) {
|
|
86
82
|
return await WorkerName.#claimAuto(db, options, false);
|
|
87
83
|
}
|
|
84
|
+
static async claimNamed(db, name, options) {
|
|
85
|
+
const claimed = await db.worker_name_claim.get({
|
|
86
|
+
workspace_id: options.workspaceId,
|
|
87
|
+
name: WorkerName.assert(name),
|
|
88
|
+
parent_worker_id: options.parentWorkerId ?? null,
|
|
89
|
+
origin: options.origin,
|
|
90
|
+
default_conversation: 0,
|
|
91
|
+
fork_snapshot: options.forkSnapshot ? 1 : 0,
|
|
92
|
+
});
|
|
93
|
+
if (claimed === undefined)
|
|
94
|
+
throw new WorkerNameConflictError(name);
|
|
95
|
+
return claimed;
|
|
96
|
+
}
|
|
88
97
|
// The stable default conversation is both an auto-name allocation and the
|
|
89
98
|
// workspace's one durable default role; both predicates share one write.
|
|
90
99
|
static async ensureDefaultConversation(db, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerName.js","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,WAAW,
|
|
1
|
+
{"version":3,"file":"WorkerName.js","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"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"}
|
package/dist/core/WorkerName.sql
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
-- Automatic worker allocation. SPEC {§worker-auto-name}.
|
|
2
2
|
|
|
3
|
-
-- PREP: worker_name_count
|
|
4
|
-
-- A starting hint only. The atomic claim below remains authoritative because
|
|
5
|
-
-- explicit names and concurrent allocators can occupy any candidate.
|
|
6
|
-
SELECT COUNT(*) AS n
|
|
7
|
-
FROM workers
|
|
8
|
-
WHERE workspace_id = $workspace_id AND name LIKE $name_prefix;
|
|
9
|
-
|
|
10
3
|
-- PREP: worker_name_claim
|
|
11
4
|
-- Claiming the literal and creating its worker are one SQLite write statement.
|
|
12
5
|
-- The default-conversation predicate is enabled only by
|
|
@@ -14,16 +7,20 @@ WHERE workspace_id = $workspace_id AND name LIKE $name_prefix;
|
|
|
14
7
|
-- on the generated literal.
|
|
15
8
|
INSERT INTO workers (
|
|
16
9
|
workspace_id, name, parent_worker_id, origin, default_conversation,
|
|
17
|
-
|
|
10
|
+
ambient_event_cursor, fork_event_boundary,
|
|
11
|
+
model_route_id, spawn_model_route_id, reasoning_policy
|
|
18
12
|
)
|
|
19
13
|
SELECT $workspace_id, $name, $parent_worker_id, $origin, $default_conversation,
|
|
20
|
-
$capability_bound,
|
|
21
14
|
CASE WHEN $fork_snapshot = 1 THEN (
|
|
22
15
|
SELECT ambient_event_cursor FROM workers WHERE id = $parent_worker_id
|
|
23
16
|
) ELSE NULL END,
|
|
24
17
|
CASE WHEN $fork_snapshot = 1 THEN COALESCE((
|
|
25
18
|
SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id
|
|
26
|
-
), 0) ELSE NULL END
|
|
19
|
+
), 0) ELSE NULL END,
|
|
20
|
+
-- {§worker-fork-trigger}: a branch copies durable generation policy by value, then diverges.
|
|
21
|
+
CASE WHEN $fork_snapshot = 1 THEN (SELECT model_route_id FROM workers WHERE id = $parent_worker_id) END,
|
|
22
|
+
CASE WHEN $fork_snapshot = 1 THEN (SELECT spawn_model_route_id FROM workers WHERE id = $parent_worker_id) END,
|
|
23
|
+
CASE WHEN $fork_snapshot = 1 THEN (SELECT reasoning_policy FROM workers WHERE id = $parent_worker_id) END
|
|
27
24
|
WHERE NOT EXISTS (
|
|
28
25
|
SELECT 1
|
|
29
26
|
FROM workers
|
|
@@ -7,7 +7,7 @@ export interface WorkspaceExclusive {
|
|
|
7
7
|
export default class WorkspaceGate {
|
|
8
8
|
#private;
|
|
9
9
|
constructor(isDescendant: (workerId: number, rootWorkerId: number) => Promise<boolean>);
|
|
10
|
-
acquireTurn(workspaceId: number, workerId: number): Promise<Release>;
|
|
10
|
+
acquireTurn(workspaceId: number, workerId: number, signal?: AbortSignal): Promise<Release>;
|
|
11
11
|
requestExclusive(workspaceId: number): WorkspaceExclusive;
|
|
12
12
|
tryExclusive(workspaceId: number): WorkspaceExclusive | null;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceGate.d.ts","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAuB1B,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACnB;AAMD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAI9B,YAAY,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAErF;IAED,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"WorkspaceGate.d.ts","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAuB1B,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACnB;AAMD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAI9B,YAAY,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAErF;IAED,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBzF;IAED,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA8CxD;IAMD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAiC3D;CA2FJ"}
|
|
@@ -8,10 +8,27 @@ export default class WorkspaceGate {
|
|
|
8
8
|
constructor(isDescendant) {
|
|
9
9
|
this.#isDescendant = isDescendant;
|
|
10
10
|
}
|
|
11
|
-
acquireTurn(workspaceId, workerId) {
|
|
11
|
+
acquireTurn(workspaceId, workerId, signal) {
|
|
12
|
+
if (signal?.aborted === true)
|
|
13
|
+
return Promise.reject(signal.reason);
|
|
12
14
|
const state = this.#state(workspaceId);
|
|
13
15
|
return new Promise((resolve, reject) => {
|
|
14
|
-
|
|
16
|
+
const clear = () => signal?.removeEventListener("abort", cancel);
|
|
17
|
+
const request = {
|
|
18
|
+
workerId,
|
|
19
|
+
resolve: (release) => { clear(); resolve(release); },
|
|
20
|
+
reject: (error) => { clear(); reject(error); },
|
|
21
|
+
};
|
|
22
|
+
const cancel = () => {
|
|
23
|
+
const index = state.turns.indexOf(request);
|
|
24
|
+
if (index < 0)
|
|
25
|
+
return;
|
|
26
|
+
state.turns.splice(index, 1);
|
|
27
|
+
request.reject(signal?.reason);
|
|
28
|
+
this.#requestPump(workspaceId, state);
|
|
29
|
+
};
|
|
30
|
+
signal?.addEventListener("abort", cancel, { once: true });
|
|
31
|
+
state.turns.push(request);
|
|
15
32
|
this.#requestPump(workspaceId, state);
|
|
16
33
|
});
|
|
17
34
|
}
|
|
@@ -67,7 +84,7 @@ export default class WorkspaceGate {
|
|
|
67
84
|
// Capability snapshots cannot wait behind a proposal that may require the
|
|
68
85
|
// very client issuing the mutation. Acquire synchronously only at a fully
|
|
69
86
|
// quiescent boundary; otherwise the caller returns 409 and retries after
|
|
70
|
-
// settling current work. {§module-
|
|
87
|
+
// settling current work. {§module-workspace-quiescence}
|
|
71
88
|
tryExclusive(workspaceId) {
|
|
72
89
|
const state = this.#state(workspaceId);
|
|
73
90
|
if (state.readers !== 0
|
|
@@ -111,9 +128,15 @@ export default class WorkspaceGate {
|
|
|
111
128
|
if (state.exclusive) {
|
|
112
129
|
if (state.exclusiveTurns !== 0 || state.exclusiveRoot === null)
|
|
113
130
|
return;
|
|
114
|
-
for (
|
|
115
|
-
const
|
|
116
|
-
|
|
131
|
+
for (const request of [...state.turns]) {
|
|
132
|
+
const root = state.exclusiveRoot;
|
|
133
|
+
const allowed = await this.#isDescendant(request.workerId, root);
|
|
134
|
+
if (!state.exclusive || state.exclusiveRoot !== root) {
|
|
135
|
+
this.#requestPump(workspaceId, state);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const index = state.turns.indexOf(request);
|
|
139
|
+
if (index < 0 || !allowed)
|
|
117
140
|
continue;
|
|
118
141
|
state.turns.splice(index, 1);
|
|
119
142
|
state.exclusiveTurns = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceGate.js","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"AA6BA,uEAAuE;AACvE,2EAA2E;AAC3E,4EAA4E;AAC5E,gDAAgD;AAChD,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,aAAa,CAA+D;IAC5E,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAErD,YAAY,YAA0E;QAClF,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,WAAmB,EAAE,QAAgB;
|
|
1
|
+
{"version":3,"file":"WorkspaceGate.js","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
-- The ambient activity feed: what a worker's siblings and parent observe of it. The process
|
|
2
|
+
-- triggers that publish it ({§db-process-triggers}) and the cursor statements TurnMaterialization
|
|
3
|
+
-- pulls it with.
|
|
4
|
+
|
|
5
|
+
-- INIT: ambient_child_wake_revision
|
|
6
|
+
DROP TRIGGER IF EXISTS ambient_child_wake_revision;
|
|
7
|
+
CREATE TRIGGER ambient_child_wake_revision
|
|
8
|
+
AFTER INSERT ON ambient_events
|
|
9
|
+
WHEN NEW.kind = 'loop_termination'
|
|
10
|
+
BEGIN
|
|
11
|
+
UPDATE workers SET wake_revision = wake_revision + 1
|
|
12
|
+
WHERE id = NEW.target_parent_worker_id;
|
|
13
|
+
END;
|
|
14
|
+
|
|
15
|
+
-- INIT: workers_capture_ambient_baseline
|
|
16
|
+
-- A worker begins after the history that predates its existence. This trigger
|
|
17
|
+
-- runs in the worker INSERT statement, so an occurrence is either in the
|
|
18
|
+
-- baseline or after it. Fork INSERTs supply their own cursor/boundary and skip
|
|
19
|
+
-- this ordinary-worker baseline. {§env-delta-log-pull}
|
|
20
|
+
DROP TRIGGER IF EXISTS workers_capture_ambient_baseline;
|
|
21
|
+
CREATE TRIGGER workers_capture_ambient_baseline
|
|
22
|
+
AFTER INSERT ON workers
|
|
23
|
+
WHEN NEW.ambient_event_cursor IS NULL
|
|
24
|
+
BEGIN
|
|
25
|
+
UPDATE workers
|
|
26
|
+
SET ambient_event_cursor = COALESCE((
|
|
27
|
+
SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = NEW.workspace_id
|
|
28
|
+
), 0)
|
|
29
|
+
WHERE id = NEW.id;
|
|
30
|
+
END;
|
|
31
|
+
|
|
32
|
+
-- INIT: loops_append_ambient_event
|
|
33
|
+
-- A child terminal transition is an occurrence addressed only to its direct
|
|
34
|
+
-- parent. Directly inserted fork history never crosses this transition and
|
|
35
|
+
-- therefore cannot fabricate a new conclusion event. The occurrence carries no
|
|
36
|
+
-- target: it is a message from the child, and a commons-shaped
|
|
37
|
+
-- `worker:///name` would name an entry the child never wrote (#567).
|
|
38
|
+
DROP TRIGGER IF EXISTS loops_append_ambient_event;
|
|
39
|
+
CREATE TRIGGER loops_append_ambient_event
|
|
40
|
+
AFTER UPDATE OF status ON loops
|
|
41
|
+
WHEN NEW.status IN (200, 413, 429, 499, 500, 504, 508) AND OLD.status NOT IN (200, 413, 429, 499, 500, 504, 508)
|
|
42
|
+
BEGIN
|
|
43
|
+
INSERT INTO ambient_events (
|
|
44
|
+
workspace_id, producer_worker_id, target_parent_worker_id,
|
|
45
|
+
workspace_broadcast, kind, source_record_id, source,
|
|
46
|
+
op, scheme, pathname,
|
|
47
|
+
tx, mimetype_tx, rx, mimetype_rx, status_rx, state, terminated_by
|
|
48
|
+
)
|
|
49
|
+
SELECT w.workspace_id, NEW.worker_id, w.parent_worker_id,
|
|
50
|
+
0, 'loop_termination', NEW.id, NULL,
|
|
51
|
+
'SEND', NULL, NULL,
|
|
52
|
+
'', 'text/plain', NEW.terminal_result, 'application/json',
|
|
53
|
+
json_extract(NEW.terminal_result, '$.status'), 'resolved', NEW.terminated_by
|
|
54
|
+
FROM workers w
|
|
55
|
+
WHERE w.id = NEW.worker_id
|
|
56
|
+
AND w.parent_worker_id IS NOT NULL
|
|
57
|
+
-- {§env-delta-child-termination}: runtime administrative work is not a
|
|
58
|
+
-- delegated conclusion. A spawn failing before its first turn still is.
|
|
59
|
+
AND (
|
|
60
|
+
NOT EXISTS (SELECT 1 FROM turns t WHERE t.loop_id = NEW.id)
|
|
61
|
+
OR EXISTS (
|
|
62
|
+
SELECT 1
|
|
63
|
+
FROM turns t
|
|
64
|
+
WHERE t.loop_id = NEW.id
|
|
65
|
+
AND NOT (t.producer = '_plurnk' AND t.kind IN ('operation', 'maintenance'))
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
END;
|
|
69
|
+
|
|
70
|
+
-- INIT: log_entries_append_ambient_event_insert
|
|
71
|
+
-- Every final op-bearing child row is parent activity. A successful operation
|
|
72
|
+
-- whose landed effects touch worker:/// additionally acquires the workspace
|
|
73
|
+
-- audience. Observer rows and copied fork history cannot republish themselves.
|
|
74
|
+
DROP TRIGGER IF EXISTS log_entries_append_ambient_event_insert;
|
|
75
|
+
CREATE TRIGGER log_entries_append_ambient_event_insert
|
|
76
|
+
AFTER INSERT ON log_entries
|
|
77
|
+
WHEN NEW.state != 'proposed'
|
|
78
|
+
BEGIN
|
|
79
|
+
INSERT INTO ambient_events (
|
|
80
|
+
workspace_id, producer_worker_id, target_parent_worker_id,
|
|
81
|
+
workspace_broadcast, kind, source_record_id, at, source,
|
|
82
|
+
op, signal,
|
|
83
|
+
scheme, username, password, hostname, port, pathname, query, fragment,
|
|
84
|
+
line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
|
|
85
|
+
state, outcome, attrs
|
|
86
|
+
)
|
|
87
|
+
SELECT workspace_id, producer_worker_id, target_parent_worker_id,
|
|
88
|
+
workspace_broadcast, 'activity', source_record_id, at, source,
|
|
89
|
+
op, signal,
|
|
90
|
+
scheme, username, password, hostname, port, pathname, query, fragment,
|
|
91
|
+
line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
|
|
92
|
+
state, outcome, attrs
|
|
93
|
+
FROM ambient_activity_candidates
|
|
94
|
+
WHERE source_record_id = NEW.id;
|
|
95
|
+
|
|
96
|
+
UPDATE log_entries
|
|
97
|
+
SET ambient_event_id = (
|
|
98
|
+
SELECT id FROM ambient_events
|
|
99
|
+
WHERE producer_worker_id = NEW.worker_id
|
|
100
|
+
AND kind = 'activity'
|
|
101
|
+
AND source_record_id = NEW.id
|
|
102
|
+
)
|
|
103
|
+
WHERE id = NEW.id
|
|
104
|
+
AND EXISTS (
|
|
105
|
+
SELECT 1 FROM ambient_events
|
|
106
|
+
WHERE producer_worker_id = NEW.worker_id
|
|
107
|
+
AND kind = 'activity'
|
|
108
|
+
AND source_record_id = NEW.id
|
|
109
|
+
);
|
|
110
|
+
END;
|
|
111
|
+
|
|
112
|
+
-- INIT: log_entries_append_ambient_event_resolve
|
|
113
|
+
-- A proposed operation becomes activity only when its lifecycle settles.
|
|
114
|
+
DROP TRIGGER IF EXISTS log_entries_append_ambient_event_resolve;
|
|
115
|
+
CREATE TRIGGER log_entries_append_ambient_event_resolve
|
|
116
|
+
AFTER UPDATE OF state, status_rx, rx, outcome ON log_entries
|
|
117
|
+
WHEN OLD.state = 'proposed' AND NEW.state != 'proposed'
|
|
118
|
+
BEGIN
|
|
119
|
+
INSERT INTO ambient_events (
|
|
120
|
+
workspace_id, producer_worker_id, target_parent_worker_id,
|
|
121
|
+
workspace_broadcast, kind, source_record_id, at, source,
|
|
122
|
+
op, signal,
|
|
123
|
+
scheme, username, password, hostname, port, pathname, query, fragment,
|
|
124
|
+
line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
|
|
125
|
+
state, outcome, attrs
|
|
126
|
+
)
|
|
127
|
+
SELECT workspace_id, producer_worker_id, target_parent_worker_id,
|
|
128
|
+
workspace_broadcast, 'activity', source_record_id, at, source,
|
|
129
|
+
op, signal,
|
|
130
|
+
scheme, username, password, hostname, port, pathname, query, fragment,
|
|
131
|
+
line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
|
|
132
|
+
state, outcome, attrs
|
|
133
|
+
FROM ambient_activity_candidates
|
|
134
|
+
WHERE source_record_id = NEW.id;
|
|
135
|
+
|
|
136
|
+
UPDATE log_entries
|
|
137
|
+
SET ambient_event_id = (
|
|
138
|
+
SELECT id FROM ambient_events
|
|
139
|
+
WHERE producer_worker_id = NEW.worker_id
|
|
140
|
+
AND kind = 'activity'
|
|
141
|
+
AND source_record_id = NEW.id
|
|
142
|
+
)
|
|
143
|
+
WHERE id = NEW.id
|
|
144
|
+
AND EXISTS (
|
|
145
|
+
SELECT 1 FROM ambient_events
|
|
146
|
+
WHERE producer_worker_id = NEW.worker_id
|
|
147
|
+
AND kind = 'activity'
|
|
148
|
+
AND source_record_id = NEW.id
|
|
149
|
+
);
|
|
150
|
+
END;
|
|
151
|
+
|
|
152
|
+
-- PREP: engine_initialize_ambient_cursor
|
|
153
|
+
-- Worker creation owns the baseline, and fork creation owns its inherited
|
|
154
|
+
-- cursor/boundary. Packet assembly merely verifies that durable invariant.
|
|
155
|
+
SELECT ambient_event_cursor
|
|
156
|
+
FROM workers
|
|
157
|
+
WHERE id = $worker_id
|
|
158
|
+
AND workspace_id = $workspace_id;
|
|
159
|
+
|
|
160
|
+
-- PREP: engine_pull_ambient_events
|
|
161
|
+
-- One SQLite snapshot captures both ends of the closed observation window.
|
|
162
|
+
-- The LEFT JOIN returns the boundary even when the window contains no event.
|
|
163
|
+
WITH observation AS (
|
|
164
|
+
SELECT w.ambient_event_cursor AS cursor,
|
|
165
|
+
w.parent_worker_id,
|
|
166
|
+
w.fork_event_boundary,
|
|
167
|
+
COALESCE(
|
|
168
|
+
(SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id),
|
|
169
|
+
w.ambient_event_cursor,
|
|
170
|
+
0
|
|
171
|
+
) AS boundary
|
|
172
|
+
FROM workers w
|
|
173
|
+
WHERE w.id = $worker_id AND w.workspace_id = $workspace_id
|
|
174
|
+
)
|
|
175
|
+
SELECT o.cursor, o.boundary,
|
|
176
|
+
ae.id AS event_id, ae.producer_worker_id, producer.name AS producer_worker_name,
|
|
177
|
+
ae.kind, ae.source, ae.at,
|
|
178
|
+
ae.op, ae.signal,
|
|
179
|
+
ae.scheme, ae.username, ae.password, ae.hostname, ae.port,
|
|
180
|
+
ae.pathname, ae.query, ae.fragment, ae.line_marker,
|
|
181
|
+
ae.tx, ae.mimetype_tx, ae.rx, ae.mimetype_rx,
|
|
182
|
+
ae.state, ae.outcome, ae.attrs,
|
|
183
|
+
ae.status_rx, ae.terminated_by
|
|
184
|
+
FROM observation o
|
|
185
|
+
LEFT JOIN ambient_events ae
|
|
186
|
+
ON ae.workspace_id = $workspace_id
|
|
187
|
+
AND ae.id > o.cursor
|
|
188
|
+
AND ae.id <= o.boundary
|
|
189
|
+
AND ae.producer_worker_id != $worker_id
|
|
190
|
+
AND (
|
|
191
|
+
ae.target_parent_worker_id = $worker_id
|
|
192
|
+
OR ae.workspace_broadcast = 1
|
|
193
|
+
OR (
|
|
194
|
+
o.fork_event_boundary IS NOT NULL
|
|
195
|
+
AND ae.target_parent_worker_id = o.parent_worker_id
|
|
196
|
+
AND ae.id <= o.fork_event_boundary
|
|
197
|
+
)
|
|
198
|
+
)
|
|
199
|
+
LEFT JOIN workers producer ON producer.id = ae.producer_worker_id
|
|
200
|
+
ORDER BY ae.id;
|
|
201
|
+
|
|
202
|
+
-- PREP: engine_insert_ambient_delta
|
|
203
|
+
-- Materialize one occurrence into the observer's self-contained log. The
|
|
204
|
+
-- targeted conflict rule makes crash replay idempotent without swallowing any
|
|
205
|
+
-- unrelated sequence, FK, or shape violation.
|
|
206
|
+
INSERT INTO log_entries (
|
|
207
|
+
worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id,
|
|
208
|
+
op, signal,
|
|
209
|
+
scheme, username, password, hostname, port, pathname, query, fragment,
|
|
210
|
+
lineMarker, tx, mimetype_tx,
|
|
211
|
+
rx, mimetype_rx, status_rx, weight, state, outcome, initial_folded, attrs
|
|
212
|
+
) VALUES (
|
|
213
|
+
$worker_id, $loop_id, $turn_id, $sequence, $at, '_plurnk', $source, $event_id,
|
|
214
|
+
$op, $signal,
|
|
215
|
+
$scheme, $username, $password, $hostname, $port, $pathname, $query, $fragment,
|
|
216
|
+
$line_marker, $tx, $mimetype_tx,
|
|
217
|
+
$rx, $mimetype_rx, $status, $weight, $state, $outcome, $folded, $attrs
|
|
218
|
+
)
|
|
219
|
+
ON CONFLICT(worker_id, ambient_event_id) WHERE ambient_event_id IS NOT NULL DO NOTHING
|
|
220
|
+
RETURNING id;
|
|
221
|
+
|
|
222
|
+
-- PREP: engine_ambient_delta_id
|
|
223
|
+
-- Crash replay may find the observation row already inserted but its copied
|
|
224
|
+
-- classifications incomplete. Resolve that row so idempotent tag writes can finish.
|
|
225
|
+
SELECT id FROM log_entries WHERE worker_id = $worker_id AND ambient_event_id = $event_id;
|
|
226
|
+
|
|
227
|
+
-- PREP: engine_advance_ambient_cursor
|
|
228
|
+
-- Advance only from the snapshot that was actually materialized. A concurrent
|
|
229
|
+
-- pull winning the CAS is safe; a loser replays idempotently on its next turn.
|
|
230
|
+
UPDATE workers
|
|
231
|
+
SET ambient_event_cursor = $boundary
|
|
232
|
+
WHERE id = $worker_id
|
|
233
|
+
AND workspace_id = $workspace_id
|
|
234
|
+
AND ambient_event_cursor IS $cursor
|
|
235
|
+
AND $boundary >= ambient_event_cursor
|
|
236
|
+
RETURNING ambient_event_cursor;
|
|
@@ -7,6 +7,7 @@ export interface AttachmentRow {
|
|
|
7
7
|
export declare const ATTACHMENT_KINDS: readonly AttachmentRow[];
|
|
8
8
|
export declare const imageWeight: (width: number, height: number) => number;
|
|
9
9
|
export declare const PDF_TOKENS_PER_PAGE = 1500;
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const PDF_BYTES_PER_TOKEN = 4;
|
|
11
|
+
export declare const pdfWeight: (pages: number | null, bytes: number) => number;
|
|
11
12
|
export declare const acceptedKinds: (modalities: ReadonlySet<InputModality>) => readonly AttachmentKind[];
|
|
12
13
|
//# sourceMappingURL=attachments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CACpC;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAGnD,CAAC;AAGH,eAAO,MAAM,WAAW,UAAW,MAAM,UAAU,MAAM,KAAG,MAA2C,CAAC;AAIxG,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,SAAS,UAAW,MAAM,GAAG,IAAI,SAAS,MAAM,KAAG,MACyB,CAAC;AAE1F,eAAO,MAAM,aAAa,eAAgB,WAAW,CAAC,aAAa,CAAC,KAAG,SAAS,cAAc,EACL,CAAC"}
|
package/dist/core/attachments.js
CHANGED
|
@@ -2,11 +2,12 @@ export const ATTACHMENT_KINDS = Object.freeze([
|
|
|
2
2
|
{ kind: "image", modality: "image" },
|
|
3
3
|
{ kind: "pdf", modality: "pdf" },
|
|
4
4
|
]);
|
|
5
|
-
//
|
|
5
|
+
// Stable curation weight by pixels, not a provider-token measurement.
|
|
6
6
|
export const imageWeight = (width, height) => Math.ceil((width * height) / 750);
|
|
7
|
-
//
|
|
8
|
-
//
|
|
7
|
+
// Stable curation weight by pages; calibration adjusts capacity, never this cost. A document whose
|
|
8
|
+
// page tree is unreadable (a compressed object stream) weighs by its bytes instead.
|
|
9
9
|
export const PDF_TOKENS_PER_PAGE = 1500;
|
|
10
|
-
export const
|
|
10
|
+
export const PDF_BYTES_PER_TOKEN = 4;
|
|
11
|
+
export const pdfWeight = (pages, bytes) => pages === null ? Math.ceil(bytes / PDF_BYTES_PER_TOKEN) : pages * PDF_TOKENS_PER_PAGE;
|
|
11
12
|
export const acceptedKinds = (modalities) => ATTACHMENT_KINDS.filter((row) => modalities.has(row.modality)).map((row) => row.kind);
|
|
12
13
|
//# sourceMappingURL=attachments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,gBAAgB,GAA6B,MAAM,CAAC,MAAM,CAAC;IACpE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IACpC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;CACnC,CAAC,CAAC;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AAExG,mGAAmG;AACnG,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,KAAa,EAAU,EAAE,CACrE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,mBAAmB,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAsC,EAA6B,EAAE,CAC/F,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
2
2
|
export default class CapsResolve {
|
|
3
|
-
static entry(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string
|
|
3
|
+
static entry(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string): Promise<{
|
|
4
4
|
entryId: number;
|
|
5
|
-
workerId: number;
|
|
6
5
|
} | null>;
|
|
7
|
-
static entryId(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string
|
|
6
|
+
static entryId(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string): Promise<number | null>;
|
|
8
7
|
}
|
|
9
8
|
//# sourceMappingURL=CapsResolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapsResolve.d.ts","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,OAAa,KAAK,CACd,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CapsResolve.d.ts","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,OAAa,KAAK,CACd,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAKrC;IAED,OAAa,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1H;CACJ"}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
// through EntryCrud (which resolves internally). Static delegation, not a base
|
|
4
4
|
// class — the caps call it, they don't inherit it.
|
|
5
5
|
export default class CapsResolve {
|
|
6
|
-
static async entry(ctx, scheme, authority, pathname
|
|
6
|
+
static async entry(ctx, scheme, authority, pathname) {
|
|
7
7
|
const row = await ctx.db.crud_find_workspace_entry.get({
|
|
8
|
-
workspace_id: ctx.workspaceId,
|
|
8
|
+
workspace_id: ctx.workspaceId, scheme, authority, pathname,
|
|
9
9
|
});
|
|
10
|
-
return row === undefined ? null : { entryId: row.id
|
|
10
|
+
return row === undefined ? null : { entryId: row.id };
|
|
11
11
|
}
|
|
12
|
-
static async entryId(ctx, scheme, authority, pathname
|
|
13
|
-
return (await CapsResolve.entry(ctx, scheme, authority, pathname
|
|
12
|
+
static async entryId(ctx, scheme, authority, pathname) {
|
|
13
|
+
return (await CapsResolve.entry(ctx, scheme, authority, pathname))?.entryId ?? null;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=CapsResolve.js.map
|