@plurnk/plurnk-service 4.2.1 → 4.3.1
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/INSTALL.md +7 -2
- package/README.md +3 -1
- package/SPEC.md +1988 -1408
- package/dist/build-info.d.ts.map +1 -1
- package/dist/build-info.js +25 -3
- package/dist/build-info.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/completions/_plurnk-service +1 -1
- package/dist/completions/plurnk-service.bash +1 -1
- package/dist/completions/plurnk-service.fish +1 -0
- package/dist/content/body-preview.js.map +1 -1
- package/dist/content/byte-view.d.ts.map +1 -1
- package/dist/content/byte-view.js +3 -2
- package/dist/content/byte-view.js.map +1 -1
- package/dist/content/edit-collision.d.ts +2 -1
- package/dist/content/edit-collision.d.ts.map +1 -1
- package/dist/content/edit-collision.js.map +1 -1
- package/dist/content/edit-receipt.d.ts.map +1 -1
- package/dist/content/edit-receipt.js +28 -23
- package/dist/content/edit-receipt.js.map +1 -1
- package/dist/content/edited-span.js +1 -1
- package/dist/content/edited-span.js.map +1 -1
- package/dist/content/line-anchors.d.ts +3 -2
- package/dist/content/line-anchors.d.ts.map +1 -1
- package/dist/content/line-anchors.js +33 -19
- package/dist/content/line-anchors.js.map +1 -1
- package/dist/content/line-selection.js.map +1 -1
- package/dist/content/pattern-edits.js +1 -1
- package/dist/content/pattern-edits.js.map +1 -1
- package/dist/content/read-projector.d.ts +1 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +10 -8
- package/dist/content/read-projector.js.map +1 -1
- package/dist/content/read-resolve.d.ts.map +1 -1
- package/dist/content/read-resolve.js +6 -5
- package/dist/content/read-resolve.js.map +1 -1
- package/dist/core/AdmittedTurnExecutor.d.ts +4 -4
- package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
- package/dist/core/AdmittedTurnExecutor.js +20 -18
- package/dist/core/AdmittedTurnExecutor.js.map +1 -1
- package/dist/core/AmbientMembers.d.ts +1 -1
- package/dist/core/AmbientMembers.d.ts.map +1 -1
- package/dist/core/AmbientMembers.js +5 -2
- package/dist/core/AmbientMembers.js.map +1 -1
- package/dist/core/BareBatchRunner.d.ts +1 -1
- package/dist/core/BareBatchRunner.d.ts.map +1 -1
- package/dist/core/BareBatchRunner.js +2 -2
- package/dist/core/BareBatchRunner.js.map +1 -1
- package/dist/core/CapabilityPolicies.js.map +1 -1
- package/dist/core/CapabilityResolver.d.ts +1 -2
- package/dist/core/CapabilityResolver.d.ts.map +1 -1
- package/dist/core/CapabilityResolver.js +11 -7
- package/dist/core/CapabilityResolver.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +2 -2
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +27 -0
- package/dist/core/ClientInteractions.js.map +1 -1
- package/dist/core/ContextFit.js +1 -1
- package/dist/core/ContextFit.js.map +1 -1
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +4 -4
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/DataStatementRunner.d.ts.map +1 -1
- package/dist/core/DataStatementRunner.js +15 -15
- package/dist/core/DataStatementRunner.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +29 -5
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +210 -130
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/EditMutations.d.ts.map +1 -1
- package/dist/core/EditMutations.js +12 -6
- package/dist/core/EditMutations.js.map +1 -1
- package/dist/core/EditSequence.js.map +1 -1
- package/dist/core/Engine.d.ts +15 -7
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +32 -7
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/ExecutionOutputs.js.map +1 -1
- package/dist/core/ExecutorRegistry.d.ts +1 -2
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +2 -2
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/FileAddress.js.map +1 -1
- package/dist/core/FilePublication.d.ts.map +1 -1
- package/dist/core/FilePublication.js +6 -3
- package/dist/core/FilePublication.js.map +1 -1
- package/dist/core/FileSnapshot.d.ts.map +1 -1
- package/dist/core/FileSnapshot.js +8 -5
- package/dist/core/FileSnapshot.js.map +1 -1
- package/dist/core/KillHandler.d.ts.map +1 -1
- package/dist/core/KillHandler.js +7 -0
- package/dist/core/KillHandler.js.map +1 -1
- package/dist/core/LiveSubscription.d.ts +1 -0
- package/dist/core/LiveSubscription.d.ts.map +1 -1
- package/dist/core/LiveSubscription.js +3 -2
- package/dist/core/LiveSubscription.js.map +1 -1
- package/dist/core/LiveSubscriptions.d.ts +4 -1
- package/dist/core/LiveSubscriptions.d.ts.map +1 -1
- package/dist/core/LiveSubscriptions.js +42 -1
- package/dist/core/LiveSubscriptions.js.map +1 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +22 -19
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogVisibility.d.ts +1 -1
- package/dist/core/LogVisibility.d.ts.map +1 -1
- package/dist/core/LogVisibility.js +4 -6
- package/dist/core/LogVisibility.js.map +1 -1
- package/dist/core/LogWriter.d.ts.map +1 -1
- package/dist/core/LogWriter.js +6 -9
- package/dist/core/LogWriter.js.map +1 -1
- package/dist/core/LoopDriver.d.ts +4 -4
- package/dist/core/LoopDriver.d.ts.map +1 -1
- package/dist/core/LoopDriver.js +4 -5
- package/dist/core/LoopDriver.js.map +1 -1
- package/dist/core/LoopLifecycle.d.ts +2 -0
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +13 -3
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +4 -4
- package/dist/core/LoopOutcome.d.ts.map +1 -1
- package/dist/core/LoopOutcome.js +2 -2
- package/dist/core/LoopOutcome.js.map +1 -1
- package/dist/core/MembershipMaterialization.d.ts.map +1 -1
- package/dist/core/MembershipMaterialization.js +29 -29
- package/dist/core/MembershipMaterialization.js.map +1 -1
- package/dist/core/MessageResources.d.ts +5 -1
- package/dist/core/MessageResources.d.ts.map +1 -1
- package/dist/core/MessageResources.js +12 -0
- package/dist/core/MessageResources.js.map +1 -1
- package/dist/core/MessageResources.sql +26 -0
- package/dist/core/MutationEffects.d.ts +1 -0
- package/dist/core/MutationEffects.d.ts.map +1 -1
- package/dist/core/MutationEffects.js +14 -10
- package/dist/core/MutationEffects.js.map +1 -1
- package/dist/core/OperationHistory.d.ts.map +1 -1
- package/dist/core/OperationHistory.js +4 -3
- package/dist/core/OperationHistory.js.map +1 -1
- package/dist/core/OperatorConfig.d.ts.map +1 -1
- package/dist/core/OperatorConfig.js +3 -2
- package/dist/core/OperatorConfig.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +3 -7
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +40 -31
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/PacketBuilder.sql +11 -0
- package/dist/core/ProblemLog.d.ts +2 -5
- package/dist/core/ProblemLog.d.ts.map +1 -1
- package/dist/core/ProblemLog.js +2 -3
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/ProposalLifecycle.d.ts +12 -11
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +92 -84
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ReasoningEvent.d.ts +2 -0
- package/dist/core/ReasoningEvent.d.ts.map +1 -1
- package/dist/core/ReplyMetadata.d.ts.map +1 -1
- package/dist/core/ReplyMetadata.js +4 -3
- package/dist/core/ReplyMetadata.js.map +1 -1
- package/dist/core/ResourceBindings.d.ts +2 -2
- package/dist/core/ResourceBindings.d.ts.map +1 -1
- package/dist/core/ResourceBindings.js.map +1 -1
- package/dist/core/ResourceMutations.d.ts +1 -1
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +1 -2
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/ResourceSelector.js +2 -2
- package/dist/core/ResourceSelector.js.map +1 -1
- package/dist/core/ResourceTransfers.d.ts.map +1 -1
- package/dist/core/ResourceTransfers.js +162 -120
- package/dist/core/ResourceTransfers.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +6 -5
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +32 -26
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ServiceHelp.d.ts.map +1 -1
- package/dist/core/ServiceHelp.js +2 -1
- package/dist/core/ServiceHelp.js.map +1 -1
- package/dist/core/StoredPacket.d.ts.map +1 -1
- package/dist/core/StoredPacket.js +26 -19
- package/dist/core/StoredPacket.js.map +1 -1
- package/dist/core/StrikeRail.d.ts +1 -2
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +4 -4
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/TerminalResult.d.ts +0 -2
- package/dist/core/TerminalResult.d.ts.map +1 -1
- package/dist/core/TerminalResult.js +0 -18
- package/dist/core/TerminalResult.js.map +1 -1
- package/dist/core/TokenCalibration.d.ts +4 -2
- package/dist/core/TokenCalibration.d.ts.map +1 -1
- package/dist/core/TokenCalibration.js +30 -13
- package/dist/core/TokenCalibration.js.map +1 -1
- package/dist/core/TokenCalibration.sql +7 -17
- package/dist/core/ToolResources.d.ts +2 -1
- package/dist/core/ToolResources.d.ts.map +1 -1
- package/dist/core/ToolResources.js +10 -34
- package/dist/core/ToolResources.js.map +1 -1
- package/dist/core/TurnDispositionHandler.d.ts +1 -1
- package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
- package/dist/core/TurnDispositionHandler.js +7 -3
- package/dist/core/TurnDispositionHandler.js.map +1 -1
- package/dist/core/TurnMaterialization.d.ts.map +1 -1
- package/dist/core/TurnMaterialization.js +3 -2
- package/dist/core/TurnMaterialization.js.map +1 -1
- package/dist/core/TurnRunner.d.ts +13 -12
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +198 -230
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/TurnRunner.sql +3 -3
- package/dist/core/WorkerOwners.js.map +1 -1
- package/dist/core/caps/DbEntryCaps.js.map +1 -1
- package/dist/core/caps/DbMessageCaps.d.ts +3 -3
- package/dist/core/caps/DbMessageCaps.d.ts.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.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +1 -0
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +4 -1
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/env-catalog.js.map +1 -1
- package/dist/core/env-defaults.d.ts.map +1 -1
- package/dist/core/env-defaults.js +5 -3
- package/dist/core/env-defaults.js.map +1 -1
- package/dist/core/file-creation-policy.d.ts.map +1 -1
- package/dist/core/file-creation-policy.js +2 -1
- package/dist/core/file-creation-policy.js.map +1 -1
- package/dist/core/file-materialization.d.ts.map +1 -1
- package/dist/core/file-materialization.js +9 -11
- package/dist/core/file-materialization.js.map +1 -1
- 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 +34 -3
- package/dist/core/git-env.js.map +1 -1
- package/dist/core/git-membership.d.ts +5 -0
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +55 -21
- 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 +1 -0
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/packet-wire.d.ts +26 -27
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +154 -132
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/results.d.ts +9 -4
- package/dist/core/results.d.ts.map +1 -1
- package/dist/core/results.js +14 -1
- package/dist/core/results.js.map +1 -1
- package/dist/core/runtime-floor.d.ts +8 -0
- package/dist/core/runtime-floor.d.ts.map +1 -0
- package/dist/core/runtime-floor.js +40 -0
- package/dist/core/runtime-floor.js.map +1 -0
- package/dist/core/runtime-guard.d.ts +2 -0
- package/dist/core/runtime-guard.d.ts.map +1 -0
- package/dist/core/runtime-guard.js +5 -0
- package/dist/core/runtime-guard.js.map +1 -0
- package/dist/core/sqlite-synchronous.d.ts +1 -1
- package/dist/core/sqlite-synchronous.d.ts.map +1 -1
- package/dist/core/sqlite-synchronous.js.map +1 -1
- package/dist/core/statement-primary.d.ts +2 -2
- package/dist/core/statement-primary.d.ts.map +1 -1
- package/dist/core/statement-primary.js.map +1 -1
- package/dist/core/workspace-settings.js +1 -1
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/evidence/EvidenceReader.d.ts.map +1 -1
- package/dist/evidence/EvidenceReader.js +20 -6
- package/dist/evidence/EvidenceReader.js.map +1 -1
- package/dist/launch/Launch.d.ts +1 -0
- package/dist/launch/Launch.d.ts.map +1 -1
- package/dist/launch/Launch.js +28 -12
- package/dist/launch/Launch.js.map +1 -1
- package/dist/man/plurnk-service.1 +6 -2
- package/dist/schemes/EffectPolicy.js +1 -1
- package/dist/schemes/EffectPolicy.js.map +1 -1
- package/dist/schemes/Env.d.ts +1 -1
- package/dist/schemes/Env.d.ts.map +1 -1
- package/dist/schemes/Env.js +7 -1
- package/dist/schemes/Env.js.map +1 -1
- package/dist/schemes/Exec.d.ts +10 -12
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +337 -437
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +4 -6
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +17 -17
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/ExecScheduler.d.ts.map +1 -1
- package/dist/schemes/ExecScheduler.js +1 -2
- package/dist/schemes/ExecScheduler.js.map +1 -1
- package/dist/schemes/ExecutionInput.js +3 -3
- package/dist/schemes/ExecutionInput.js.map +1 -1
- package/dist/schemes/File.d.ts +3 -18
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +136 -79
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +193 -161
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/QuestionTool.d.ts.map +1 -1
- package/dist/schemes/QuestionTool.js +6 -8
- package/dist/schemes/QuestionTool.js.map +1 -1
- package/dist/schemes/ResourceTreeScheme.d.ts.map +1 -1
- package/dist/schemes/ResourceTreeScheme.js +2 -2
- package/dist/schemes/ResourceTreeScheme.js.map +1 -1
- package/dist/schemes/TurnSource.js +3 -3
- package/dist/schemes/TurnSource.js.map +1 -1
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +4 -2
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +187 -139
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-manifest.js +1 -1
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/schemes/exec-entry-sink.d.ts +30 -0
- package/dist/schemes/exec-entry-sink.d.ts.map +1 -0
- package/dist/schemes/exec-entry-sink.js +238 -0
- package/dist/schemes/exec-entry-sink.js.map +1 -0
- package/dist/schemes/exec-lifetime.d.ts.map +1 -1
- package/dist/schemes/exec-lifetime.js +5 -2
- package/dist/schemes/exec-lifetime.js.map +1 -1
- package/dist/server/ClientOperations.d.ts +45 -0
- package/dist/server/ClientOperations.d.ts.map +1 -0
- package/dist/server/ClientOperations.js +192 -0
- package/dist/server/ClientOperations.js.map +1 -0
- package/dist/server/ClientReads.d.ts +13 -5
- package/dist/server/ClientReads.d.ts.map +1 -1
- package/dist/server/ClientReads.js +108 -21
- package/dist/server/ClientReads.js.map +1 -1
- package/dist/server/Credentials.js +2 -2
- package/dist/server/Credentials.js.map +1 -1
- package/dist/server/Daemon.d.ts +40 -28
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +255 -839
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonLock.d.ts +2 -0
- package/dist/server/DaemonLock.d.ts.map +1 -1
- package/dist/server/DaemonLock.js +10 -1
- package/dist/server/DaemonLock.js.map +1 -1
- package/dist/server/DaemonModules.d.ts +39 -0
- package/dist/server/DaemonModules.d.ts.map +1 -0
- package/dist/server/DaemonModules.js +219 -0
- package/dist/server/DaemonModules.js.map +1 -0
- package/dist/server/DrainSupervisor.d.ts +4 -2
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +318 -290
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/EnvFunctionality.d.ts +10 -7
- package/dist/server/EnvFunctionality.d.ts.map +1 -1
- package/dist/server/EnvFunctionality.js +6 -5
- package/dist/server/EnvFunctionality.js.map +1 -1
- package/dist/server/Functionality.d.ts +8 -6
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js +110 -32
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.d.ts.map +1 -1
- package/dist/server/FunctionalityManager.js +16 -2
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/HttpListener.d.ts.map +1 -1
- package/dist/server/HttpListener.js +28 -8
- package/dist/server/HttpListener.js.map +1 -1
- package/dist/server/MembersFunctionality.d.ts +19 -7
- package/dist/server/MembersFunctionality.d.ts.map +1 -1
- package/dist/server/MembersFunctionality.js +30 -16
- package/dist/server/MembersFunctionality.js.map +1 -1
- package/dist/server/MessageDelivery.d.ts +43 -0
- package/dist/server/MessageDelivery.d.ts.map +1 -0
- package/dist/server/MessageDelivery.js +186 -0
- package/dist/server/MessageDelivery.js.map +1 -0
- package/dist/server/ModuleHost.d.ts +3 -3
- package/dist/server/ModuleHost.d.ts.map +1 -1
- package/dist/server/Places.d.ts +19 -0
- package/dist/server/Places.d.ts.map +1 -0
- package/dist/server/Places.js +76 -0
- package/dist/server/Places.js.map +1 -0
- package/dist/server/PluginSources.d.ts.map +1 -1
- package/dist/server/PluginSources.js +2 -1
- package/dist/server/PluginSources.js.map +1 -1
- package/dist/server/PlurnkSkill.d.ts.map +1 -1
- package/dist/server/PlurnkSkill.js +5 -4
- package/dist/server/PlurnkSkill.js.map +1 -1
- package/dist/server/Rollback.d.ts.map +1 -1
- package/dist/server/Rollback.js +2 -1
- package/dist/server/Rollback.js.map +1 -1
- package/dist/server/WorkerModels.d.ts +87 -0
- package/dist/server/WorkerModels.d.ts.map +1 -0
- package/dist/server/WorkerModels.js +540 -0
- package/dist/server/WorkerModels.js.map +1 -0
- package/dist/server/WorkerOverview.d.ts +22 -0
- package/dist/server/WorkerOverview.d.ts.map +1 -0
- package/dist/server/WorkerOverview.js +42 -0
- package/dist/server/WorkerOverview.js.map +1 -0
- package/dist/server/WorkspacePlugins.d.ts +1 -1
- package/dist/server/WorkspacePlugins.d.ts.map +1 -1
- package/dist/server/WorkspacePlugins.js +0 -1
- package/dist/server/WorkspacePlugins.js.map +1 -1
- package/dist/server/WorkspaceResidency.d.ts +3 -3
- package/dist/server/WorkspaceResidency.d.ts.map +1 -1
- package/dist/server/WorkspaceResidency.js.map +1 -1
- package/dist/server/client-input.d.ts +2 -2
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +19 -12
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/envelope.d.ts +4 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +7 -3
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +10 -6
- package/dist/server/logEntry.d.ts +38 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +9 -9
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +4 -2
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +11 -2
- package/dist/server/loopDocs.js.map +1 -1
- package/dist/server/module-discovery.d.ts +2 -3
- package/dist/server/module-discovery.d.ts.map +1 -1
- package/dist/server/module-discovery.js +6 -6
- package/dist/server/module-discovery.js.map +1 -1
- package/dist/server/places.sql +83 -0
- package/dist/server/seam-loop.sql +8 -0
- package/dist/server/worker-overview.sql +57 -0
- package/dist/service.d.ts +1 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +35 -9
- package/dist/service.js.map +1 -1
- package/docs/members.md +11 -21
- package/migrations/033_hidden_places.sql +10 -0
- package/package.json +52 -61
- package/dist/core/ToolInputSchema.d.ts +0 -7
- package/dist/core/ToolInputSchema.d.ts.map +0 -1
- package/dist/core/ToolInputSchema.js +0 -65
- package/dist/core/ToolInputSchema.js.map +0 -1
- package/dist/observe/init.d.ts +0 -8
- package/dist/observe/init.d.ts.map +0 -1
- package/dist/observe/init.js +0 -163
- package/dist/observe/init.js.map +0 -1
- package/dist/server/WorkerModelResolver.d.ts +0 -20
- package/dist/server/WorkerModelResolver.d.ts.map +0 -1
- package/dist/server/WorkerModelResolver.js +0 -200
- package/dist/server/WorkerModelResolver.js.map +0 -1
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
import { projectModelRoute, routeForSpec, specForRoute } from "./model-route.js";
|
|
2
|
+
import { EFFORTS, Validator } from "@plurnk/plurnk-contracts";
|
|
3
|
+
import { parseAliasesFromEnv, resolveActiveRoute, resolveChildRoute, UnsupportedEffortError } from "@plurnk/plurnk-providers";
|
|
4
|
+
import ConfigurationError from "@plurnk/plurnk-meta/configuration-error";
|
|
5
|
+
import ProviderInstantiate from "../core/ProviderInstantiate.js";
|
|
6
|
+
import { resolveLoopRoute } from "./loop-model.js";
|
|
7
|
+
import Results, { OperationFailureError } from "../core/results.js";
|
|
8
|
+
import { daemonFailure, modelRouteLabel } from "./daemon-results.js";
|
|
9
|
+
import ClientInput from "./client-input.js";
|
|
10
|
+
import { listModelCatalog } from "./model-catalog.js";
|
|
11
|
+
// {§problems-functionality} A worker with no model to run, whether a selection or a loop found none.
|
|
12
|
+
export const providerNotConfigured = () => new OperationFailureError(Results.failure("daemon:provider", "not-configured", 501, "No provider is configured for this worker.", {}, {
|
|
13
|
+
stage: "provider-selection",
|
|
14
|
+
recovery: "Select a model for this worker, or set `PLURNK_MODEL=<provider/model>` as the service default; that provider's API key must be in the service's environment.",
|
|
15
|
+
retryable: false,
|
|
16
|
+
}));
|
|
17
|
+
export default class WorkerModels {
|
|
18
|
+
#db;
|
|
19
|
+
// The boot provider, whose input capacity the active alias reports ({§agui-provider-routes}).
|
|
20
|
+
#provider;
|
|
21
|
+
// {§notifications-worker-policy} Told of each write that changed a worker's stored policy.
|
|
22
|
+
#policyChanged;
|
|
23
|
+
// {§worker-model-selection} Measures whether the worker's current curated context fits a target model's budget.
|
|
24
|
+
#workerCurationOverflow;
|
|
25
|
+
constructor({ db, provider, policyChanged = async () => { }, workerCurationOverflow = async () => null }) {
|
|
26
|
+
this.#db = db;
|
|
27
|
+
this.#provider = provider;
|
|
28
|
+
this.#policyChanged = policyChanged;
|
|
29
|
+
this.#workerCurationOverflow = workerCurationOverflow;
|
|
30
|
+
}
|
|
31
|
+
async persistGenerationPolicy(workerId, policy, options) {
|
|
32
|
+
const params = { id: workerId, ...policy };
|
|
33
|
+
// {§worker-effort-source} — the source is provenance, not generation policy: it takes no
|
|
34
|
+
// part in the mid-loop change check, so the selectable probe sees only the policy columns.
|
|
35
|
+
const { effort_source: _source, ...generation } = params;
|
|
36
|
+
if (await this.#db.worker_generation_policy_selectable.get(generation) === undefined) {
|
|
37
|
+
return this.#refuseGenerationChange(workerId, policy);
|
|
38
|
+
}
|
|
39
|
+
const supportedEfforts = await this.supportedEfforts(policy);
|
|
40
|
+
const stored = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
41
|
+
if (options?.spawn !== true && policy.model_route_id !== null && stored?.model_route_id !== policy.model_route_id) {
|
|
42
|
+
await this.#assertContextFitsModel(workerId, policy.model_route_id, policy.effort ?? undefined);
|
|
43
|
+
}
|
|
44
|
+
if (await this.#db.worker_generation_policy_update.get(params) === undefined) {
|
|
45
|
+
return this.#refuseGenerationChange(workerId, policy);
|
|
46
|
+
}
|
|
47
|
+
// {§notifications-worker-policy} A write that changed the stored policy is announced; one that changed nothing is not.
|
|
48
|
+
if (stored === undefined || stored.model_route_id !== policy.model_route_id || stored.spawn_model_route_id !== policy.spawn_model_route_id
|
|
49
|
+
|| stored.effort !== policy.effort || stored.effort_source !== policy.effort_source)
|
|
50
|
+
await this.#policyChanged(workerId);
|
|
51
|
+
return supportedEfforts;
|
|
52
|
+
}
|
|
53
|
+
// {§worker-model-selection} — a model switch cannot select a model whose calibrated budget cannot hold
|
|
54
|
+
// the worker's current context; the worker curates first or chooses a larger model.
|
|
55
|
+
async #assertContextFitsModel(workerId, routeId, effort) {
|
|
56
|
+
const spec = await specForRoute(this.#db, routeId);
|
|
57
|
+
if (spec === null)
|
|
58
|
+
throw new Error(`model route ${routeId} is missing`);
|
|
59
|
+
const provider = await this.providerForPolicy(spec, effort);
|
|
60
|
+
const overflow = await this.#workerCurationOverflow(workerId, provider);
|
|
61
|
+
if (overflow === null)
|
|
62
|
+
return;
|
|
63
|
+
throw daemonFailure("daemon:provider", "context-exceeds-model-budget", 413, `Current context (${overflow.weight} tokens) does not fit in ${modelRouteLabel(spec)} (budget: ${overflow.budget} tokens).`, {
|
|
64
|
+
workerId,
|
|
65
|
+
...(spec.alias === undefined ? {} : { alias: spec.alias }),
|
|
66
|
+
provider: spec.provider,
|
|
67
|
+
model: spec.model,
|
|
68
|
+
tokens: overflow.weight,
|
|
69
|
+
budget: overflow.budget,
|
|
70
|
+
excess: overflow.excess,
|
|
71
|
+
stage: "model-selection",
|
|
72
|
+
recovery: `Curate context below ${overflow.budget} tokens or select a larger model.`,
|
|
73
|
+
retryable: false,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async supportedEfforts(policy) {
|
|
77
|
+
let supportedEfforts;
|
|
78
|
+
for (const routeId of [policy.model_route_id, policy.spawn_model_route_id]) {
|
|
79
|
+
if (routeId === null)
|
|
80
|
+
continue;
|
|
81
|
+
const spec = await specForRoute(this.#db, routeId);
|
|
82
|
+
if (spec === null)
|
|
83
|
+
throw new Error(`model route ${routeId} is missing`);
|
|
84
|
+
const provider = await this.providerForPolicy(spec, policy.effort ?? undefined);
|
|
85
|
+
supportedEfforts = supportedEfforts === undefined
|
|
86
|
+
? provider.supportedEfforts
|
|
87
|
+
: supportedEfforts.filter((candidate) => provider.supportedEfforts.includes(candidate));
|
|
88
|
+
}
|
|
89
|
+
return supportedEfforts ?? [];
|
|
90
|
+
}
|
|
91
|
+
async #refuseGenerationChange(workerId, requested) {
|
|
92
|
+
const selected = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
93
|
+
if (selected === undefined)
|
|
94
|
+
throw new Error(`worker ${workerId}: generation policy row missing`);
|
|
95
|
+
const selectedModel = await specForRoute(this.#db, selected.model_route_id);
|
|
96
|
+
const requestedModel = await specForRoute(this.#db, requested.model_route_id);
|
|
97
|
+
throw daemonFailure("daemon:worker", "worker-loop-active", 409, `Worker ${workerId} has unfinished tasks; its model and reasoning settings cannot change yet.`, {
|
|
98
|
+
workerId,
|
|
99
|
+
...(selectedModel?.alias === undefined ? {} : { selectedAlias: selectedModel.alias }),
|
|
100
|
+
...(requestedModel?.alias === undefined ? {} : { requestedAlias: requestedModel.alias }),
|
|
101
|
+
stage: "model-selection",
|
|
102
|
+
recovery: "Conclude or cancel its unfinished tasks before changing these settings.",
|
|
103
|
+
retryable: false,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// {§worker-model-selection} — a model worker owns one durable model. An explicit
|
|
107
|
+
// selector persists onto the worker; an omitted selector resolves the worker's
|
|
108
|
+
// durable model, seeded once from the daemon default. A deliberately modelless
|
|
109
|
+
// daemon leaves the worker unset until an explicit selection arrives.
|
|
110
|
+
async resolveWorkerModel(workerId, selector, chosen) {
|
|
111
|
+
const worker = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
112
|
+
if (worker === undefined)
|
|
113
|
+
throw new Error(`worker ${workerId}: model route row missing`);
|
|
114
|
+
if (selector !== undefined) {
|
|
115
|
+
const spec = this.#resolveLoopProvider(selector);
|
|
116
|
+
if (spec === null)
|
|
117
|
+
return null;
|
|
118
|
+
// {§worker-effort-source} — a chosen effort follows the worker across models; a seeded one
|
|
119
|
+
// re-derives from the new alias, so a default never outlives its alias. An effort chosen with the
|
|
120
|
+
// model replaces the carried one, and the pair is validated as one.
|
|
121
|
+
const explicit = chosen !== undefined || worker.effort_source === "explicit" && worker.effort !== null;
|
|
122
|
+
const effort = chosen ?? (explicit
|
|
123
|
+
? worker.effort
|
|
124
|
+
: this.#configuredEffort(spec));
|
|
125
|
+
const effortSource = explicit ? "explicit" : "default";
|
|
126
|
+
await this.persistGenerationPolicy(workerId, {
|
|
127
|
+
model_route_id: await routeForSpec(this.#db, spec),
|
|
128
|
+
spawn_model_route_id: worker.spawn_model_route_id,
|
|
129
|
+
effort,
|
|
130
|
+
effort_source: effortSource
|
|
131
|
+
});
|
|
132
|
+
return { providerSpec: spec, effort, effortSource };
|
|
133
|
+
}
|
|
134
|
+
if (worker.model_route_id !== null) {
|
|
135
|
+
if (worker.effort === null) {
|
|
136
|
+
throw new Error(`worker ${workerId}: durable model has no effort`);
|
|
137
|
+
}
|
|
138
|
+
const spec = await specForRoute(this.#db, worker.model_route_id);
|
|
139
|
+
if (spec === null)
|
|
140
|
+
throw new Error(`worker ${workerId}: model route is missing`);
|
|
141
|
+
await this.providerForPolicy(spec, worker.effort);
|
|
142
|
+
return { providerSpec: spec, effort: worker.effort, effortSource: worker.effort_source };
|
|
143
|
+
}
|
|
144
|
+
const spec = this.#configured(() => resolveActiveRoute());
|
|
145
|
+
if (spec !== null) {
|
|
146
|
+
const effort = this.#configuredEffort(spec);
|
|
147
|
+
await this.persistGenerationPolicy(workerId, {
|
|
148
|
+
model_route_id: await routeForSpec(this.#db, spec),
|
|
149
|
+
spawn_model_route_id: worker.spawn_model_route_id,
|
|
150
|
+
effort,
|
|
151
|
+
effort_source: "default"
|
|
152
|
+
});
|
|
153
|
+
return { providerSpec: spec, effort, effortSource: "default" };
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
// {§worker-model-selection} — the persistent spawn override. An explicit child
|
|
158
|
+
// selector persists onto the worker (null clears it back to inherit); an omitted
|
|
159
|
+
// selector resolves the persisted override, seeded once from the operator's
|
|
160
|
+
// PLURNK_MODEL_CHILD default.
|
|
161
|
+
async resolveWorkerSpawnModel(workerId, childSelector) {
|
|
162
|
+
const worker = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
163
|
+
if (worker === undefined)
|
|
164
|
+
throw new Error(`worker ${workerId}: model route row missing`);
|
|
165
|
+
if (childSelector !== undefined) {
|
|
166
|
+
const spec = childSelector === null
|
|
167
|
+
? null
|
|
168
|
+
: this.#resolveLoopProvider(childSelector);
|
|
169
|
+
await this.persistGenerationPolicy(workerId, {
|
|
170
|
+
model_route_id: worker.model_route_id,
|
|
171
|
+
spawn_model_route_id: spec === null ? null : await routeForSpec(this.#db, spec),
|
|
172
|
+
effort: worker.effort,
|
|
173
|
+
effort_source: worker.effort_source
|
|
174
|
+
});
|
|
175
|
+
return spec;
|
|
176
|
+
}
|
|
177
|
+
if (worker.spawn_model_route_id !== null) {
|
|
178
|
+
const spec = await specForRoute(this.#db, worker.spawn_model_route_id);
|
|
179
|
+
if (spec === null)
|
|
180
|
+
throw new Error(`worker ${workerId}: spawn model route is missing`);
|
|
181
|
+
if (worker.effort !== null) {
|
|
182
|
+
await this.providerForPolicy(spec, worker.effort);
|
|
183
|
+
}
|
|
184
|
+
return spec;
|
|
185
|
+
}
|
|
186
|
+
const spec = this.#configured(() => resolveChildRoute());
|
|
187
|
+
if (spec !== null) {
|
|
188
|
+
await this.persistGenerationPolicy(workerId, {
|
|
189
|
+
model_route_id: worker.model_route_id,
|
|
190
|
+
spawn_model_route_id: await routeForSpec(this.#db, spec),
|
|
191
|
+
effort: worker.effort,
|
|
192
|
+
effort_source: worker.effort_source
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return spec;
|
|
196
|
+
}
|
|
197
|
+
// Resolve eagerly so runLoop fails before enqueue when the selected route
|
|
198
|
+
// and durable effort cannot compose. The drain later retrieves
|
|
199
|
+
// this cached handle from the loop's immutable snapshot.
|
|
200
|
+
async providerForPolicy(spec, effort) {
|
|
201
|
+
try {
|
|
202
|
+
const provider = await ProviderInstantiate.instantiateProvider(spec, process.env, effort);
|
|
203
|
+
ProviderInstantiate.validateGrammarConfiguration(provider, process.env);
|
|
204
|
+
return provider;
|
|
205
|
+
}
|
|
206
|
+
catch (cause) {
|
|
207
|
+
if (cause instanceof OperationFailureError)
|
|
208
|
+
throw cause;
|
|
209
|
+
if (cause instanceof ConfigurationError)
|
|
210
|
+
throw new OperationFailureError(Results.configurationFailure(cause), { cause });
|
|
211
|
+
if (cause instanceof UnsupportedEffortError) {
|
|
212
|
+
throw daemonFailure("daemon:provider", "effort-unsupported", 409, `${modelRouteLabel(spec)} does not support effort '${cause.policy}'.`, {
|
|
213
|
+
...(spec.alias === undefined ? {} : { alias: spec.alias }),
|
|
214
|
+
provider: spec.provider,
|
|
215
|
+
model: spec.model,
|
|
216
|
+
effort: cause.policy,
|
|
217
|
+
supportedEfforts: cause.supported,
|
|
218
|
+
stage: "provider-selection",
|
|
219
|
+
recovery: `Select one of the provider's supported efforts: ${cause.supported.join(", ")}.`,
|
|
220
|
+
retryable: false
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
console.error(`${modelRouteLabel(spec)} could not be instantiated:`, cause);
|
|
224
|
+
const reason = cause instanceof Error && cause.message.length > 0 ? ` ${cause.message}` : "";
|
|
225
|
+
throw daemonFailure("daemon:provider", "provider-unavailable", 503, `${modelRouteLabel(spec)} is unavailable.${reason}`, {
|
|
226
|
+
...(spec.alias === undefined ? {} : { alias: spec.alias }),
|
|
227
|
+
provider: spec.provider,
|
|
228
|
+
model: spec.model,
|
|
229
|
+
stage: "provider-selection",
|
|
230
|
+
retryable: false
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// {§methods-loop-run-model}: resolve identity without provider setup.
|
|
235
|
+
#resolveLoopProvider(selector) {
|
|
236
|
+
return this.#configured(() => resolveLoopRoute(selector, selector.includes("/") ? [] : parseAliasesFromEnv()));
|
|
237
|
+
}
|
|
238
|
+
#configured(read) {
|
|
239
|
+
try {
|
|
240
|
+
return read();
|
|
241
|
+
}
|
|
242
|
+
catch (cause) {
|
|
243
|
+
if (!(cause instanceof ConfigurationError))
|
|
244
|
+
throw cause;
|
|
245
|
+
throw new OperationFailureError(Results.configurationFailure(cause), { cause });
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
#configuredEffort(spec) {
|
|
249
|
+
try {
|
|
250
|
+
return ProviderInstantiate.configuredEffort(spec);
|
|
251
|
+
}
|
|
252
|
+
catch (cause) {
|
|
253
|
+
const invalid = new ConfigurationError("PLURNK_PROVIDERS_EFFORT", cause instanceof Error ? cause.message : String(cause), { cause });
|
|
254
|
+
throw new OperationFailureError(Results.configurationFailure(invalid), { cause });
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// {§machine-processes} — provider inference is an exclusive capability of a
|
|
258
|
+
// model worker. The same assertion is used by early client admissions, the final
|
|
259
|
+
// drain callback, and the model, reasoning, and spawn-model controls
|
|
260
|
+
// ({§worker-model-selection}), so recovery and internal callers cannot bypass it.
|
|
261
|
+
async assertModelWorker(workspaceId, workerId) {
|
|
262
|
+
const worker = await this.#db.envelope_get_worker_by_id.get({ id: workerId });
|
|
263
|
+
if (worker === undefined) {
|
|
264
|
+
throw daemonFailure("daemon:worker", "worker-not-found", 404, `Worker ${workerId} does not exist.`, { workerId });
|
|
265
|
+
}
|
|
266
|
+
if (worker.workspace_id !== workspaceId) {
|
|
267
|
+
throw daemonFailure("daemon:worker", "workspace-mismatch", 409, `Worker ${workerId} does not belong to workspace ${workspaceId}.`, {
|
|
268
|
+
workerId,
|
|
269
|
+
workspaceId,
|
|
270
|
+
actualWorkspaceId: worker.workspace_id,
|
|
271
|
+
retryable: false
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (worker.origin !== "model") {
|
|
275
|
+
throw daemonFailure("daemon:worker", "model-worker-required", 409, `Worker ${workerId} is not a model worker.`, {
|
|
276
|
+
workerId,
|
|
277
|
+
actualOrigin: worker.origin,
|
|
278
|
+
recovery: "Select or create a model worker.",
|
|
279
|
+
retryable: false
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// {§worker-model-selection} — the loop's durable snapshot is the immutable route ids,
|
|
284
|
+
// resolved through model_routes at the claim boundary; never re-resolved through the
|
|
285
|
+
// alias cascade (a changed alias declaration must not rewrite history).
|
|
286
|
+
async loopPolicy(loopId) {
|
|
287
|
+
const row = await this.#db.drain_loop_generation_policy.get({ loop_id: loopId });
|
|
288
|
+
if (row === undefined)
|
|
289
|
+
throw new Error(`loop ${loopId}: provider selection row is missing`);
|
|
290
|
+
const providerSpec = await specForRoute(this.#db, row.model_route_id);
|
|
291
|
+
if (providerSpec === null) {
|
|
292
|
+
throw new Error(`loop ${loopId}: persisted provider selection is missing — refusing boot-default substitution`);
|
|
293
|
+
}
|
|
294
|
+
if (row.effort === null) {
|
|
295
|
+
throw new Error(`loop ${loopId}: persisted effort is missing`);
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
providerSpec,
|
|
299
|
+
childProviderSpec: await specForRoute(this.#db, row.spawn_model_route_id),
|
|
300
|
+
effort: row.effort
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
async #specForLoop(loopId) {
|
|
304
|
+
return (await this.loopPolicy(loopId)).providerSpec;
|
|
305
|
+
}
|
|
306
|
+
// The providers a claimed loop runs on, instantiated from its snapshot: the loop's own, and its spawn
|
|
307
|
+
// model's or the same one.
|
|
308
|
+
async providersForLoop(loopId) {
|
|
309
|
+
const policy = await this.loopPolicy(loopId);
|
|
310
|
+
const provider = await this.providerForPolicy(policy.providerSpec, policy.effort);
|
|
311
|
+
const childProvider = policy.childProviderSpec === null
|
|
312
|
+
? provider
|
|
313
|
+
: await this.providerForPolicy(policy.childProviderSpec, policy.effort);
|
|
314
|
+
return { provider, childProvider };
|
|
315
|
+
}
|
|
316
|
+
async #assertLoopProvider(loopId, requested) {
|
|
317
|
+
const selected = await this.#specForLoop(loopId);
|
|
318
|
+
if (JSON.stringify(selected) !== JSON.stringify(requested)) {
|
|
319
|
+
throw daemonFailure("daemon:provider", "loop-provider-conflict", 409, `Loop ${loopId} uses ${modelRouteLabel(selected)}, not ${modelRouteLabel(requested)}.`, {
|
|
320
|
+
loopId,
|
|
321
|
+
...(selected.alias === undefined ? {} : { selectedAlias: selected.alias }),
|
|
322
|
+
selectedModel: `${selected.provider}/${selected.model}`,
|
|
323
|
+
...(requested.alias === undefined ? {} : { requestedAlias: requested.alias }),
|
|
324
|
+
requestedModel: `${requested.provider}/${requested.model}`,
|
|
325
|
+
stage: "loop-injection",
|
|
326
|
+
recovery: "Cancel or conclude the loop before selecting another provider.",
|
|
327
|
+
retryable: false
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
async #assertLoopEffort(loopId, requested) {
|
|
332
|
+
const selected = (await this.loopPolicy(loopId)).effort;
|
|
333
|
+
if (selected !== requested) {
|
|
334
|
+
throw daemonFailure("daemon:provider", "loop-effort-conflict", 409, `Loop ${loopId} uses effort '${selected}', not '${requested}'.`, {
|
|
335
|
+
loopId,
|
|
336
|
+
selectedEffort: selected,
|
|
337
|
+
requestedEffort: requested,
|
|
338
|
+
stage: "loop-injection",
|
|
339
|
+
recovery: "Cancel or conclude the loop before selecting another effort.",
|
|
340
|
+
retryable: false
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
async #assertLoopChildProvider(loopId, requested) {
|
|
345
|
+
const selected = (await this.loopPolicy(loopId)).childProviderSpec;
|
|
346
|
+
if (JSON.stringify(selected) !== JSON.stringify(requested)) {
|
|
347
|
+
throw daemonFailure("daemon:provider", "loop-child-provider-conflict", 409, `Loop ${loopId} already has a different child provider policy.`, {
|
|
348
|
+
loopId,
|
|
349
|
+
selectedChildAlias: selected?.alias ?? null,
|
|
350
|
+
selectedChildModel: selected === null ? null : `${selected.provider}/${selected.model}`,
|
|
351
|
+
requestedChildAlias: requested?.alias ?? null,
|
|
352
|
+
requestedChildModel: requested === null ? null : `${requested.provider}/${requested.model}`,
|
|
353
|
+
stage: "loop-injection",
|
|
354
|
+
recovery: "Cancel or conclude the loop before changing its child provider policy.",
|
|
355
|
+
retryable: false
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
async #assertLoopMaxTurns(loopId, requested) {
|
|
360
|
+
if (requested === undefined)
|
|
361
|
+
return;
|
|
362
|
+
const durable = await this.#db.drain_get_loop_max_turns.get({ loop_id: loopId });
|
|
363
|
+
if (durable === undefined)
|
|
364
|
+
throw new Error(`inject: loop ${loopId} has no durable turn ceiling`);
|
|
365
|
+
if (durable.max_turns !== requested) {
|
|
366
|
+
throw daemonFailure("daemon:loop", "turn-ceiling-conflict", 409, `Loop ${loopId} has turn ceiling ${durable.max_turns}, not ${requested}.`, {
|
|
367
|
+
loopId,
|
|
368
|
+
selectedMaximumTurns: durable.max_turns,
|
|
369
|
+
requestedMaximumTurns: requested,
|
|
370
|
+
stage: "loop-injection",
|
|
371
|
+
recovery: "Cancel or conclude the loop before selecting another turn ceiling.",
|
|
372
|
+
retryable: false
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
// {§worker-model-selection} An omitted selector keeps the loop's durable provider; only an explicit selection is
|
|
377
|
+
// checked against it (a deliberate switch). Effort, the spawn model and an explicit turn ceiling are checked alike.
|
|
378
|
+
async assertInjectionCompatibility({ loopId, providerSpec, providerSpecExplicit, effort, childProviderSpec, turnCeiling }) {
|
|
379
|
+
// An omitted selector keeps the loop's durable provider; only an
|
|
380
|
+
// explicit selection is checked against it (a deliberate switch).
|
|
381
|
+
if (providerSpecExplicit !== false) {
|
|
382
|
+
await this.#assertLoopProvider(loopId, providerSpec);
|
|
383
|
+
}
|
|
384
|
+
await this.#assertLoopEffort(loopId, effort);
|
|
385
|
+
if (childProviderSpec !== undefined) {
|
|
386
|
+
await this.#assertLoopChildProvider(loopId, childProviderSpec);
|
|
387
|
+
}
|
|
388
|
+
await this.#assertLoopMaxTurns(loopId, turnCeiling?.source === "explicit" ? turnCeiling.effective : undefined);
|
|
389
|
+
}
|
|
390
|
+
// {§worker-model-selection} — project a worker's durable model and spawn override
|
|
391
|
+
// for a client-interface get/set surface. Ownership is checked at this boundary.
|
|
392
|
+
async readWorkerModel(args) {
|
|
393
|
+
const workspaceId = ClientInput.assertId("worker.model.get", "workspaceId", args.workspaceId);
|
|
394
|
+
const workerId = ClientInput.assertId("worker.model.get", "workerId", args.workerId);
|
|
395
|
+
await this.assertModelWorker(workspaceId, workerId);
|
|
396
|
+
const row = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
397
|
+
if (row === undefined)
|
|
398
|
+
throw new Error(`worker ${workerId}: model route row missing`);
|
|
399
|
+
const modelSpec = await specForRoute(this.#db, row.model_route_id);
|
|
400
|
+
const spawnModelSpec = await specForRoute(this.#db, row.spawn_model_route_id);
|
|
401
|
+
return {
|
|
402
|
+
model: modelSpec === null ? null : projectModelRoute(modelSpec, row.effort, row.effort_source),
|
|
403
|
+
spawnModel: spawnModelSpec === null ? null : projectModelRoute(spawnModelSpec, row.effort, row.effort_source)
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
// {§worker-model-selection} — persist an explicit model selection onto the worker
|
|
407
|
+
// and return the resolved spec. An unresolvable selector fails loud here.
|
|
408
|
+
async setWorkerModel(args) {
|
|
409
|
+
const workspaceId = ClientInput.assertId("worker.model.set", "workspaceId", args.workspaceId);
|
|
410
|
+
const workerId = ClientInput.assertId("worker.model.set", "workerId", args.workerId);
|
|
411
|
+
await this.assertModelWorker(workspaceId, workerId);
|
|
412
|
+
const selector = ClientInput.assertSelector("worker.model.set", "selector", args.selector);
|
|
413
|
+
let chosen;
|
|
414
|
+
if (args.effort !== undefined) {
|
|
415
|
+
try {
|
|
416
|
+
chosen = Validator.assertEffort(args.effort);
|
|
417
|
+
}
|
|
418
|
+
catch (cause) {
|
|
419
|
+
throw daemonFailure("daemon:input", "effort-invalid", 400, cause instanceof Error ? cause.message : "The effort is invalid.", {
|
|
420
|
+
field: "effort",
|
|
421
|
+
recovery: `Select a valid effort: ${EFFORTS.join(", ")}.`,
|
|
422
|
+
retryable: false
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
const policy = await this.resolveWorkerModel(workerId, selector, chosen);
|
|
427
|
+
if (policy === null)
|
|
428
|
+
throw providerNotConfigured();
|
|
429
|
+
return projectModelRoute(policy.providerSpec, policy.effort, policy.effortSource);
|
|
430
|
+
}
|
|
431
|
+
// {§worker-effort} — the worker's effort is durable and
|
|
432
|
+
// provider-relative. A model-less worker remains explicitly uninitialized.
|
|
433
|
+
async readWorkerEffort(args) {
|
|
434
|
+
const workspaceId = ClientInput.assertId("worker.effort.get", "workspaceId", args.workspaceId);
|
|
435
|
+
const workerId = ClientInput.assertId("worker.effort.get", "workerId", args.workerId);
|
|
436
|
+
await this.assertModelWorker(workspaceId, workerId);
|
|
437
|
+
await this.resolveWorkerModel(workerId, undefined);
|
|
438
|
+
const row = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
439
|
+
if (row === undefined)
|
|
440
|
+
throw new Error(`worker ${workerId}: generation policy row missing`);
|
|
441
|
+
if (row.model_route_id === null) {
|
|
442
|
+
if (row.effort !== null) {
|
|
443
|
+
throw new Error(`worker ${workerId}: effort exists without a model route`);
|
|
444
|
+
}
|
|
445
|
+
return { effort: null, source: "default", supportedEfforts: [] };
|
|
446
|
+
}
|
|
447
|
+
if (row.effort === null) {
|
|
448
|
+
throw new Error(`worker ${workerId}: durable model has no effort`);
|
|
449
|
+
}
|
|
450
|
+
return {
|
|
451
|
+
effort: row.effort,
|
|
452
|
+
source: row.effort_source,
|
|
453
|
+
supportedEfforts: await this.supportedEfforts(row)
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
// {§worker-effort} — mutate between loops, validate against both
|
|
457
|
+
// the worker model and its optional spawn model, then persist atomically.
|
|
458
|
+
async setWorkerEffort(args) {
|
|
459
|
+
const workspaceId = ClientInput.assertId("worker.effort.set", "workspaceId", args.workspaceId);
|
|
460
|
+
const workerId = ClientInput.assertId("worker.effort.set", "workerId", args.workerId);
|
|
461
|
+
let effort;
|
|
462
|
+
try {
|
|
463
|
+
effort = Validator.assertEffort(args.effort);
|
|
464
|
+
}
|
|
465
|
+
catch (cause) {
|
|
466
|
+
throw daemonFailure("daemon:input", "effort-invalid", 400, cause instanceof Error ? cause.message : "The effort is invalid.", {
|
|
467
|
+
field: "effort",
|
|
468
|
+
recovery: `Select a valid effort: ${EFFORTS.join(", ")}.`,
|
|
469
|
+
retryable: false,
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
await this.assertModelWorker(workspaceId, workerId);
|
|
473
|
+
// A model-less worker takes the default first; an existing pair is replaced, not re-validated, so an
|
|
474
|
+
// effort its model no longer supports can be corrected ({§worker-effort}).
|
|
475
|
+
const current = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
476
|
+
if (current?.model_route_id === null)
|
|
477
|
+
await this.resolveWorkerModel(workerId, undefined);
|
|
478
|
+
const row = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
479
|
+
if (row === undefined)
|
|
480
|
+
throw new Error(`worker ${workerId}: generation policy row missing`);
|
|
481
|
+
const spec = await specForRoute(this.#db, row.model_route_id);
|
|
482
|
+
if (spec === null) {
|
|
483
|
+
throw daemonFailure("daemon:provider", "worker-model-unset", 409, `Worker ${workerId} has no model against which to validate an effort.`, {
|
|
484
|
+
workerId,
|
|
485
|
+
stage: "provider-selection",
|
|
486
|
+
recovery: "Select a model before selecting its effort.",
|
|
487
|
+
retryable: false
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
const supportedEfforts = await this.persistGenerationPolicy(workerId, {
|
|
491
|
+
model_route_id: row.model_route_id,
|
|
492
|
+
spawn_model_route_id: row.spawn_model_route_id,
|
|
493
|
+
effort,
|
|
494
|
+
effort_source: "explicit"
|
|
495
|
+
});
|
|
496
|
+
return { effort, source: "explicit", supportedEfforts };
|
|
497
|
+
}
|
|
498
|
+
// {§worker-model-selection} — persist the worker's spawn override; a null
|
|
499
|
+
// selector means inherit (clears the override).
|
|
500
|
+
async setWorkerSpawnModel(args) {
|
|
501
|
+
const workspaceId = ClientInput.assertId("worker.child.set", "workspaceId", args.workspaceId);
|
|
502
|
+
const workerId = ClientInput.assertId("worker.child.set", "workerId", args.workerId);
|
|
503
|
+
await this.assertModelWorker(workspaceId, workerId);
|
|
504
|
+
const selector = ClientInput.assertChildSelector("worker.child.set", args.selector);
|
|
505
|
+
const spec = await this.resolveWorkerSpawnModel(workerId, selector);
|
|
506
|
+
if (spec === null)
|
|
507
|
+
return null;
|
|
508
|
+
const row = await this.#db.worker_generation_policy_read.get({ id: workerId });
|
|
509
|
+
return projectModelRoute(spec, row?.effort ?? null, row?.effort_source ?? "default");
|
|
510
|
+
}
|
|
511
|
+
listProviders() {
|
|
512
|
+
const active = process.env.PLURNK_MODEL?.toLowerCase();
|
|
513
|
+
let aliases;
|
|
514
|
+
try {
|
|
515
|
+
aliases = parseAliasesFromEnv();
|
|
516
|
+
}
|
|
517
|
+
catch (cause) {
|
|
518
|
+
if (!(cause instanceof ConfigurationError))
|
|
519
|
+
throw cause;
|
|
520
|
+
throw new OperationFailureError(Results.configurationFailure(cause), { cause });
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
aliases: aliases.map((a) => {
|
|
524
|
+
const isActive = active === a.alias;
|
|
525
|
+
// {§agui-provider-routes} — the route a worker seeded from this alias gets: what it would read back.
|
|
526
|
+
const effort = this.#configuredEffort(a);
|
|
527
|
+
return {
|
|
528
|
+
...projectModelRoute(a, effort, "default"), alias: a.alias, active: isActive,
|
|
529
|
+
inputCapacity: isActive && this.#provider !== null ? this.#provider.inputCapacity : null
|
|
530
|
+
};
|
|
531
|
+
})
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
// {§model-catalog} The catalog is a bounded, daemon-local projection.
|
|
535
|
+
// It performs no provider I/O and never changes the worker's selection.
|
|
536
|
+
listModels(query) {
|
|
537
|
+
return listModelCatalog(query);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
//# sourceMappingURL=WorkerModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerModels.js","sourceRoot":"","sources":["../../src/server/WorkerModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ApplicationWorkerOverview } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { Db } from "../core/Db.ts";
|
|
3
|
+
export interface OverviewPlace {
|
|
4
|
+
readonly id: number;
|
|
5
|
+
readonly replyId: number | null;
|
|
6
|
+
}
|
|
7
|
+
export default class WorkerOverview {
|
|
8
|
+
static hold<T extends OverviewPlace>(places: readonly T[], gates: ReadonlyMap<number, number>, limit: number): {
|
|
9
|
+
held: T[];
|
|
10
|
+
omitted: number;
|
|
11
|
+
};
|
|
12
|
+
static read(db: Db, scope: {
|
|
13
|
+
readonly workspaceId: number | null;
|
|
14
|
+
readonly limit: number;
|
|
15
|
+
readonly excerptChars: number;
|
|
16
|
+
readonly pending: (workspaceId: number) => Promise<ReadonlyArray<{
|
|
17
|
+
readonly workerId: number;
|
|
18
|
+
}>>;
|
|
19
|
+
readonly projectLabel: (projectRoot: string | null) => string | null;
|
|
20
|
+
}): Promise<ApplicationWorkerOverview>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=WorkerOverview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerOverview.d.ts","sourceRoot":"","sources":["../../src/server/WorkerOverview.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6C,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IAG/B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAK5I;IAED,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAE9B,QAAQ,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC;YAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC,CAAC;QACjG,QAAQ,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;KACxE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA4BrC;CACJ"}
|