@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,165 +0,0 @@
|
|
|
1
|
-
// The chunker for the `~query` semantic dialect — lossless, structure-preferring,
|
|
2
|
-
// budget-driven. Service-owned: the embedder plugin only embeds text + reports
|
|
3
|
-
// its window/tokenizer; how an entry is sliced to fit that window is the dialect's
|
|
4
|
-
// job, and the dialect is ours.
|
|
5
|
-
//
|
|
6
|
-
// tile() partitions an entry's body into chunks each <= `budget` tokens, COVERING
|
|
7
|
-
// EVERY LINE (losslessness — no truncation, ever), preferring to break at a
|
|
8
|
-
// `boundaries` line (an &graph symbol edge) when one falls within budget. Pure: no
|
|
9
|
-
// I/O, no DB, no plugin — `countTokens` is injected (the embedder's real
|
|
10
|
-
// tokenizer selected by the pass-wide semantic plan in production; a stub in
|
|
11
|
-
// tests). Every tunable is a parameter — no constants live here.
|
|
12
|
-
import { availableParallelism } from "node:os";
|
|
13
|
-
import { TextCoordinates } from "@plurnk/plurnk-mimetypes";
|
|
14
|
-
export default class EntryChunk {
|
|
15
|
-
static async tile(content, boundaries, budget, overlap, countTokens, onPlanningProgress) {
|
|
16
|
-
if (!(budget >= 1))
|
|
17
|
-
throw new Error(`EntryChunk.tile: budget must be >= 1, got ${budget}`);
|
|
18
|
-
if (!(overlap >= 0 && overlap < 1))
|
|
19
|
-
throw new Error(`EntryChunk.tile: overlap must be in [0,1), got ${overlap}`);
|
|
20
|
-
if (content.length === 0)
|
|
21
|
-
return [];
|
|
22
|
-
const lines = TextCoordinates.logicalLines(content).map(({ start, end }) => content.slice(start, end));
|
|
23
|
-
const n = lines.length;
|
|
24
|
-
// The budget is checked against the SUM of per-line counts. Cross-line BPE
|
|
25
|
-
// merges only ever shrink the true token count, so the sum is a safe upper
|
|
26
|
-
// bound: a chunk that passes the sum check is guaranteed <= budget in the
|
|
27
|
-
// real tokenizer. Lossless, and only O(n) countTokens calls.
|
|
28
|
-
let planned = 0;
|
|
29
|
-
let nextLine = 0;
|
|
30
|
-
const lineTokens = new Array(lines.length);
|
|
31
|
-
const counter = async () => {
|
|
32
|
-
while (nextLine < lines.length) {
|
|
33
|
-
const index = nextLine++;
|
|
34
|
-
lineTokens[index] = await countTokens(lines[index]);
|
|
35
|
-
planned++;
|
|
36
|
-
onPlanningProgress?.({ completed: planned, total: lines.length });
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
// Keep only a host-relative window of token-count promises alive. Mapping a
|
|
40
|
-
// 400k-line tokenizer JSON through Promise.all retained hundreds of thousands
|
|
41
|
-
// of promises per concurrent entry and could exhaust V8 before embedding began.
|
|
42
|
-
await Promise.all(Array.from({ length: Math.min(lines.length, availableParallelism() * 2) }, () => counter()));
|
|
43
|
-
const chunks = [];
|
|
44
|
-
let start = 0;
|
|
45
|
-
while (start < n) {
|
|
46
|
-
// A single line larger than the whole budget can never fit — sub-split
|
|
47
|
-
// it (the one place we ever cut mid-line). This is what makes "no
|
|
48
|
-
// truncation, ever" hold even for a minified blob or a giant literal.
|
|
49
|
-
if (lineTokens[start] > budget) {
|
|
50
|
-
for (const piece of await EntryChunk.#splitLine(lines[start], lineTokens[start], budget, countTokens)) {
|
|
51
|
-
chunks.push({ seq: chunks.length, lineStart: start + 1, lineEnd: start + 1, text: piece });
|
|
52
|
-
}
|
|
53
|
-
start += 1;
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
// Greedily pack lines while the running sum stays within budget,
|
|
57
|
-
// remembering the last boundary line crossed (the preferred cut point).
|
|
58
|
-
let end = start;
|
|
59
|
-
let sum = lineTokens[start];
|
|
60
|
-
let lastBoundary = -1;
|
|
61
|
-
while (end + 1 < n && sum + lineTokens[end + 1] <= budget) {
|
|
62
|
-
end += 1;
|
|
63
|
-
sum += lineTokens[end];
|
|
64
|
-
if (boundaries.has(end + 1))
|
|
65
|
-
lastBoundary = end;
|
|
66
|
-
}
|
|
67
|
-
// Structure chooses among required cuts. When the complete
|
|
68
|
-
// remainder already fits, there is no cut to optimize.
|
|
69
|
-
const closeAt = end === n - 1
|
|
70
|
-
? end
|
|
71
|
-
: lastBoundary > start ? lastBoundary : end;
|
|
72
|
-
chunks.push({
|
|
73
|
-
seq: chunks.length,
|
|
74
|
-
lineStart: start + 1,
|
|
75
|
-
lineEnd: closeAt + 1,
|
|
76
|
-
text: lines.slice(start, closeAt + 1).join(""),
|
|
77
|
-
});
|
|
78
|
-
start = EntryChunk.#nextStart(start, closeAt, n, overlap, budget, lineTokens);
|
|
79
|
-
}
|
|
80
|
-
return chunks;
|
|
81
|
-
}
|
|
82
|
-
// Start of the next chunk: just after the close, backed up by ~overlap*budget
|
|
83
|
-
// tokens of trailing context. Always strictly after `start` so the tiling
|
|
84
|
-
// advances (no infinite loop) and never leaves a gap (next <= closeAt+1).
|
|
85
|
-
static #nextStart(start, closeAt, n, overlap, budget, lineTokens) {
|
|
86
|
-
const after = closeAt + 1;
|
|
87
|
-
if (overlap === 0 || after >= n || closeAt === start)
|
|
88
|
-
return after;
|
|
89
|
-
const want = budget * overlap;
|
|
90
|
-
let next = closeAt;
|
|
91
|
-
let acc = lineTokens[closeAt];
|
|
92
|
-
while (next - 1 > start && acc + lineTokens[next - 1] <= want) {
|
|
93
|
-
next -= 1;
|
|
94
|
-
acc += lineTokens[next];
|
|
95
|
-
}
|
|
96
|
-
return next;
|
|
97
|
-
}
|
|
98
|
-
// Split one over-budget line into contiguous <= budget pieces. The former
|
|
99
|
-
// longest-prefix loop awaited every tokenizer probe serially, leaving one
|
|
100
|
-
// core hot for hours on a giant one-line JSON document. Partition from the
|
|
101
|
-
// already-known whole-line token count, validate every candidate through a
|
|
102
|
-
// bounded parallel counter, and recursively repartition only candidates
|
|
103
|
-
// whose local token density still exceeds the ceiling.
|
|
104
|
-
static async #splitLine(line, totalTokens, budget, countTokens) {
|
|
105
|
-
const partition = (text, count) => {
|
|
106
|
-
const n = Math.min(text.length, Math.max(2, count));
|
|
107
|
-
const out = [];
|
|
108
|
-
let start = 0;
|
|
109
|
-
for (let i = 1; i <= n; i++) {
|
|
110
|
-
let end = i === n ? text.length : Math.floor((text.length * i) / n);
|
|
111
|
-
// Never split a UTF-16 surrogate pair across independently
|
|
112
|
-
// tokenized pieces; concatenation and embedding both stay exact.
|
|
113
|
-
const prior = text.charCodeAt(end - 1);
|
|
114
|
-
const next = text.charCodeAt(end);
|
|
115
|
-
if (prior >= 0xD800 && prior <= 0xDBFF && next >= 0xDC00 && next <= 0xDFFF)
|
|
116
|
-
end++;
|
|
117
|
-
if (prior === 0x0D && next === 0x0A)
|
|
118
|
-
end++;
|
|
119
|
-
if (end > start)
|
|
120
|
-
out.push(text.slice(start, end));
|
|
121
|
-
start = end;
|
|
122
|
-
}
|
|
123
|
-
return out;
|
|
124
|
-
};
|
|
125
|
-
const countAll = async (items) => {
|
|
126
|
-
const counts = new Array(items.length);
|
|
127
|
-
let next = 0;
|
|
128
|
-
const worker = async () => {
|
|
129
|
-
while (next < items.length) {
|
|
130
|
-
const index = next++;
|
|
131
|
-
counts[index] = await countTokens(items[index]);
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
await Promise.all(Array.from({ length: Math.min(items.length, availableParallelism() * 2) }, () => worker()));
|
|
135
|
-
return counts;
|
|
136
|
-
};
|
|
137
|
-
let pieces = partition(line, Math.ceil(totalTokens / budget));
|
|
138
|
-
while (true) {
|
|
139
|
-
const counts = await countAll(pieces);
|
|
140
|
-
let changed = false;
|
|
141
|
-
const next = [];
|
|
142
|
-
for (let i = 0; i < pieces.length; i++) {
|
|
143
|
-
const piece = pieces[i];
|
|
144
|
-
const tokens = counts[i];
|
|
145
|
-
if (tokens <= budget) {
|
|
146
|
-
next.push(piece);
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
if (piece.length <= 1) {
|
|
150
|
-
throw new RangeError(`one code unit tokenizes to ${tokens} tokens, exceeding chunk budget ${budget}`);
|
|
151
|
-
}
|
|
152
|
-
const repartitioned = partition(piece, Math.ceil(tokens / budget));
|
|
153
|
-
if (repartitioned.length === 1 && repartitioned[0] === piece) {
|
|
154
|
-
throw new RangeError(`one indivisible text unit tokenizes to ${tokens} tokens, exceeding chunk budget ${budget}`);
|
|
155
|
-
}
|
|
156
|
-
next.push(...repartitioned);
|
|
157
|
-
changed = true;
|
|
158
|
-
}
|
|
159
|
-
pieces = next;
|
|
160
|
-
if (!changed)
|
|
161
|
-
return pieces;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=_entry-chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-chunk.js","sourceRoot":"","sources":["../../src/schemes/_entry-chunk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { Db } from "../core/Db.ts";
|
|
2
|
-
import type { PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
3
|
-
import { type LineMarker, type Notice } from "@plurnk/plurnk-contracts";
|
|
4
|
-
import { type EmbedDocumentsOptions, type EmbedDocumentsResult, type Mimetypes, type TokenCountOptions, type TokenizerResolution } from "@plurnk/plurnk-mimetypes";
|
|
5
|
-
type EmbedderInfo = NonNullable<Awaited<ReturnType<Mimetypes["embedderInfo"]>>>;
|
|
6
|
-
import type { SearchCandidate } from "./_search-candidate.ts";
|
|
7
|
-
export interface SemanticPlan {
|
|
8
|
-
readonly mimetypes: Mimetypes;
|
|
9
|
-
readonly info: EmbedderInfo | null;
|
|
10
|
-
readonly countTokens: ((text: string, options?: TokenCountOptions) => Promise<number>) | null;
|
|
11
|
-
readonly tokenizer: TokenizerResolution | null;
|
|
12
|
-
readonly signature: string;
|
|
13
|
-
}
|
|
14
|
-
export type EmbedDocumentsExecutor = (texts: readonly string[], options?: EmbedDocumentsOptions) => Promise<EmbedDocumentsResult>;
|
|
15
|
-
type SemanticResultSelection = {
|
|
16
|
-
threshold: number | null;
|
|
17
|
-
page: LineMarker;
|
|
18
|
-
};
|
|
19
|
-
export default class EntrySemantic {
|
|
20
|
-
#private;
|
|
21
|
-
static resultSelection(marker: LineMarker | null): SemanticResultSelection;
|
|
22
|
-
static maxEmbedSize(): number;
|
|
23
|
-
static embedSizeRejection(content: string): {
|
|
24
|
-
actualBytes: number;
|
|
25
|
-
maxBytes: number;
|
|
26
|
-
} | null;
|
|
27
|
-
static indexFts(db: Db, derivationId: number, content: string): Promise<void>;
|
|
28
|
-
static cosine(a: Uint8Array, b: Uint8Array): number;
|
|
29
|
-
static indexEmbedding(db: Db, derivationId: number, chunks: {
|
|
30
|
-
lineStart: number;
|
|
31
|
-
lineEnd: number;
|
|
32
|
-
vector: Uint8Array;
|
|
33
|
-
}[], model: string | undefined): Promise<void>;
|
|
34
|
-
static deriveEmbeddings(plan: SemanticPlan, embedDocuments: EmbedDocumentsExecutor, content: string, symbols: readonly {
|
|
35
|
-
line?: number;
|
|
36
|
-
endLine?: number;
|
|
37
|
-
}[], fallbackEmbedding: Uint8Array | undefined, fallbackModel: string | undefined, signal?: AbortSignal, onProgress?: (progress: {
|
|
38
|
-
phase: "planning" | "embedding";
|
|
39
|
-
completed: number;
|
|
40
|
-
total: number;
|
|
41
|
-
}) => void): Promise<{
|
|
42
|
-
chunks: {
|
|
43
|
-
lineStart: number;
|
|
44
|
-
lineEnd: number;
|
|
45
|
-
vector: Uint8Array;
|
|
46
|
-
}[];
|
|
47
|
-
model: string | undefined;
|
|
48
|
-
}>;
|
|
49
|
-
static assertExactChunking(plan: SemanticPlan, pushNotice?: (notice: Notice) => void): void;
|
|
50
|
-
static prepareEmbeddings(mimetypes: Mimetypes): Promise<SemanticPlan>;
|
|
51
|
-
static ftsQueryFor(text: string): string;
|
|
52
|
-
static rankCandidates(context: PlurnkSchemeContext, candidates: readonly SearchCandidate[], queryText: string, selection: Pick<SemanticResultSelection, "threshold">): Promise<{
|
|
53
|
-
status: number;
|
|
54
|
-
results: Array<{
|
|
55
|
-
key: string;
|
|
56
|
-
lineStart: number;
|
|
57
|
-
lineEnd: number;
|
|
58
|
-
score: number | null;
|
|
59
|
-
}>;
|
|
60
|
-
}>;
|
|
61
|
-
}
|
|
62
|
-
export {};
|
|
63
|
-
//# sourceMappingURL=_entry-semantic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-semantic.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
// ~semantic storage and ranking. Complete content-addressed derivations own the
|
|
2
|
-
// exact READ-body FTS, graph, and vectors. Vector search ranks every eligible
|
|
3
|
-
// vector in scope; FTS is only the explicit no-embedder fallback.
|
|
4
|
-
import EmbeddingCall from "../core/EmbeddingCall.js";
|
|
5
|
-
import { DEFAULT_RETRIEVAL_LIMIT } from "@plurnk/plurnk-contracts";
|
|
6
|
-
import { EmbeddingVector, TextCoordinates, } from "@plurnk/plurnk-mimetypes";
|
|
7
|
-
import EntryChunk from "./_entry-chunk.js";
|
|
8
|
-
// Changes whenever the deterministic tiling algorithm changes in a way that
|
|
9
|
-
// can alter stored chunk extents. Existing vectors must never masquerade as a
|
|
10
|
-
// projection produced by the current algorithm.
|
|
11
|
-
const SEMANTIC_CHUNK_REVISION = 2;
|
|
12
|
-
export default class EntrySemantic {
|
|
13
|
-
// FIND owns result positions uniformly across matcher dialects. Semantic
|
|
14
|
-
// search adds only an optional leading decimal threshold; any remaining
|
|
15
|
-
// integers retain the ordinary FIND positional meaning. The rank query
|
|
16
|
-
// needs only the prefix ending at the requested page, while an open-ended
|
|
17
|
-
// or malformed page remains exhaustive so the shared pager can report the
|
|
18
|
-
// authoritative result extent.
|
|
19
|
-
static resultSelection(marker) {
|
|
20
|
-
if (marker === null) {
|
|
21
|
-
return { threshold: null, page: { marks: [1, DEFAULT_RETRIEVAL_LIMIT] } };
|
|
22
|
-
}
|
|
23
|
-
const [first, ...remaining] = marker.marks;
|
|
24
|
-
if (Number.isInteger(first)) {
|
|
25
|
-
return {
|
|
26
|
-
threshold: null,
|
|
27
|
-
page: marker,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
const page = remaining.length === 0
|
|
31
|
-
? { marks: [1, DEFAULT_RETRIEVAL_LIMIT] }
|
|
32
|
-
: { marks: remaining };
|
|
33
|
-
return {
|
|
34
|
-
threshold: first,
|
|
35
|
-
page,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
static maxEmbedSize() {
|
|
39
|
-
const raw = process.env.PLURNK_SERVICE_MAX_EMBED_SIZE;
|
|
40
|
-
const value = Number(raw);
|
|
41
|
-
if (!Number.isSafeInteger(value) || value < 0) {
|
|
42
|
-
throw new Error(`PLURNK_SERVICE_MAX_EMBED_SIZE must be a non-negative safe integer byte count (0 = unlimited), got ${JSON.stringify(raw)}`);
|
|
43
|
-
}
|
|
44
|
-
return value;
|
|
45
|
-
}
|
|
46
|
-
static embedSizeRejection(content) {
|
|
47
|
-
const maxBytes = EntrySemantic.maxEmbedSize();
|
|
48
|
-
if (maxBytes === 0)
|
|
49
|
-
return null;
|
|
50
|
-
const actualBytes = Buffer.byteLength(content, "utf8");
|
|
51
|
-
return actualBytes > maxBytes ? { actualBytes, maxBytes } : null;
|
|
52
|
-
}
|
|
53
|
-
// Replace a derivation artifact's FTS row with its readable content.
|
|
54
|
-
// Empty content (binary member / cleared entry) → no FTS row (delete only).
|
|
55
|
-
static async indexFts(db, derivationId, content) {
|
|
56
|
-
await db.fts_delete.run({ derivation_id: derivationId });
|
|
57
|
-
if (content.length > 0)
|
|
58
|
-
await db.fts_insert.run({ derivation_id: derivationId, content });
|
|
59
|
-
}
|
|
60
|
-
// Cosine similarity over the framework-owned embedding wire — the SqlRite
|
|
61
|
-
// `cosine()` function delegates here (cosine.ts is the registration adapter).
|
|
62
|
-
static cosine(a, b) {
|
|
63
|
-
const x = EmbeddingVector.decode(a, undefined, "cosine left operand");
|
|
64
|
-
const y = EmbeddingVector.decode(b, undefined, "cosine right operand");
|
|
65
|
-
if (x.length !== y.length) {
|
|
66
|
-
throw new RangeError(`cosine operands must have the same dimension, got ${x.length} and ${y.length}`);
|
|
67
|
-
}
|
|
68
|
-
let dot = 0, nx = 0, ny = 0;
|
|
69
|
-
for (let i = 0; i < x.length; i++) {
|
|
70
|
-
dot += x[i] * y[i];
|
|
71
|
-
nx += x[i] * x[i];
|
|
72
|
-
ny += y[i] * y[i];
|
|
73
|
-
}
|
|
74
|
-
const denom = Math.sqrt(nx) * Math.sqrt(ny);
|
|
75
|
-
return denom === 0 ? 0 : dot / denom;
|
|
76
|
-
}
|
|
77
|
-
// Store a derivation's embedding vectors + model, or clear them.
|
|
78
|
-
// row (binary/empty entry, or a degraded `embeddingMissing` projection). Called
|
|
79
|
-
// from the gated manifest-add hook beside indexFts / the symbol index.
|
|
80
|
-
static async indexEmbedding(db, derivationId, chunks, model) {
|
|
81
|
-
// Re-derivation = clear all of the artifact's chunk rows, then insert each in seq
|
|
82
|
-
// order. No model (no embedder installed) or no chunks → just cleared.
|
|
83
|
-
await db.embedding_delete.run({ derivation_id: derivationId });
|
|
84
|
-
if (model === undefined)
|
|
85
|
-
return;
|
|
86
|
-
for (const [seq, c] of chunks.entries()) {
|
|
87
|
-
await db.embedding_set.run({
|
|
88
|
-
derivation_id: derivationId, chunk_seq: seq, line_start: c.lineStart, line_end: c.lineEnd,
|
|
89
|
-
vector: c.vector, embedding_model: model,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// Project Semantics — derive an entry's chunk embeddings. Probes the embedder
|
|
94
|
-
// capability (the plugin's window + tokenizer, surfaced via the Mimetypes
|
|
95
|
-
// handle): ABSENT → one whole-entry chunk from the fallback vector (today's
|
|
96
|
-
// behavior, no extra embed call); PRESENT → lossless tile, embed each chunk.
|
|
97
|
-
// Returns the chunk list + model for indexEmbedding; never touches the DB.
|
|
98
|
-
static async deriveEmbeddings(plan, embedDocuments, content, symbols, fallbackEmbedding, fallbackModel, signal, onProgress) {
|
|
99
|
-
const { info } = plan;
|
|
100
|
-
if (info === null) {
|
|
101
|
-
const totalLines = TextCoordinates.logicalLines(content).length;
|
|
102
|
-
if (fallbackEmbedding === undefined || fallbackEmbedding.byteLength === 0 || totalLines === 0)
|
|
103
|
-
return { chunks: [], model: undefined };
|
|
104
|
-
return { chunks: [{ lineStart: 1, lineEnd: totalLines, vector: fallbackEmbedding }], model: fallbackModel };
|
|
105
|
-
}
|
|
106
|
-
EntrySemantic.assertExactChunking(plan);
|
|
107
|
-
// Symbol edges (an &graph endLine, or the line before a symbol starts) are the
|
|
108
|
-
// tiler's preferred cut points; it still tiles every line if there are none.
|
|
109
|
-
const boundaries = new Set();
|
|
110
|
-
for (const s of symbols) {
|
|
111
|
-
if (typeof s.endLine === "number")
|
|
112
|
-
boundaries.add(s.endLine);
|
|
113
|
-
if (typeof s.line === "number" && s.line > 1)
|
|
114
|
-
boundaries.add(s.line - 1);
|
|
115
|
-
}
|
|
116
|
-
// A hosted embedder may omit its own counter. The pass-wide semantic plan
|
|
117
|
-
// preserves the one fallback tokenizer resolution, including identity and
|
|
118
|
-
// exactness; {§semantic-embed-dedup} owns its derivation identity and #95
|
|
119
|
-
// owns whether an inexact resolution may authorize chunking.
|
|
120
|
-
if (info.contextWindow === null)
|
|
121
|
-
throw new Error("embedding profile reports no input context window");
|
|
122
|
-
const counter = plan.countTokens;
|
|
123
|
-
if (counter === null)
|
|
124
|
-
throw new Error("semantic plan has no token counter for an embedder with a declared context window");
|
|
125
|
-
signal?.throwIfAborted();
|
|
126
|
-
const budget = EntrySemantic.#chunkBudget(info.contextWindow);
|
|
127
|
-
let specs = await EntryChunk.tile(content, boundaries, budget, EntrySemantic.#chunkOverlap(), (text) => counter(text, { signal }), (progress) => onProgress?.({ phase: "planning", ...progress }));
|
|
128
|
-
signal?.throwIfAborted();
|
|
129
|
-
if (specs.length === 0)
|
|
130
|
-
return { chunks: [], model: undefined };
|
|
131
|
-
// Tiles cross the ordered batch seam as raw fragment text, never as
|
|
132
|
-
// standalone documents requiring format validation.
|
|
133
|
-
// {§mimetype-embedding}, {§derivation-dedup-parallel}
|
|
134
|
-
const texts = specs.map((s) => s.text);
|
|
135
|
-
const { vectors } = await embedDocuments(texts, {
|
|
136
|
-
signal,
|
|
137
|
-
onProgress: (progress) => onProgress?.({ phase: "embedding", ...progress }),
|
|
138
|
-
});
|
|
139
|
-
const chunks = [];
|
|
140
|
-
for (const [i, spec] of specs.entries()) {
|
|
141
|
-
const vector = vectors[i];
|
|
142
|
-
if (vector !== undefined && vector.byteLength > 0)
|
|
143
|
-
chunks.push({ lineStart: spec.lineStart, lineEnd: spec.lineEnd, vector });
|
|
144
|
-
}
|
|
145
|
-
return { chunks, model: chunks.length > 0 ? info.model : undefined };
|
|
146
|
-
}
|
|
147
|
-
// {§semantic-embed-dedup} — an estimate may inform callers but cannot prove
|
|
148
|
-
// that a chunk fits an embedder's declared token window.
|
|
149
|
-
static assertExactChunking(plan, pushNotice) {
|
|
150
|
-
const { info, tokenizer } = plan;
|
|
151
|
-
if (info === null || info.countTokens !== null || tokenizer === null || tokenizer.exact)
|
|
152
|
-
return;
|
|
153
|
-
for (const notice of tokenizer.notices ?? [])
|
|
154
|
-
pushNotice?.(notice);
|
|
155
|
-
throw new Error(`semantic chunking requires an exact token counter for ${JSON.stringify(info.model)}; `
|
|
156
|
-
+ `${JSON.stringify(tokenizer.tokenizerId)} is an estimate and cannot prove the declared ${info.contextWindow}-token window`);
|
|
157
|
-
}
|
|
158
|
-
// Chunk budget in tokens — `.env.defaults` is the law, no code fallback. EMPTY =
|
|
159
|
-
// the embedder's reported window (scalable — NO model-specific number baked in);
|
|
160
|
-
// a positive value caps BELOW the window (e.g. to sweep granularity).
|
|
161
|
-
static #chunkBudget(contextWindow) {
|
|
162
|
-
const raw = process.env.PLURNK_SERVICE_SEMANTIC_CHUNK_TOKENS;
|
|
163
|
-
if (raw === undefined || raw.trim() === "")
|
|
164
|
-
return contextWindow;
|
|
165
|
-
const v = Number(raw);
|
|
166
|
-
if (!Number.isInteger(v) || v < 1)
|
|
167
|
-
throw new Error(`PLURNK_SERVICE_SEMANTIC_CHUNK_TOKENS must be empty (= the embedder's window) or a positive integer, got ${JSON.stringify(raw)}`);
|
|
168
|
-
return Math.min(v, contextWindow);
|
|
169
|
-
}
|
|
170
|
-
static #chunkOverlap() {
|
|
171
|
-
const v = Number(process.env.PLURNK_SERVICE_SEMANTIC_CHUNK_OVERLAP);
|
|
172
|
-
if (!(v >= 0 && v < 1))
|
|
173
|
-
throw new Error(`PLURNK_SERVICE_SEMANTIC_CHUNK_OVERLAP must be in [0,1), got ${JSON.stringify(process.env.PLURNK_SERVICE_SEMANTIC_CHUNK_OVERLAP)}`);
|
|
174
|
-
return v;
|
|
175
|
-
}
|
|
176
|
-
// The embedder capability surface (plugin window + tokenizer + model id), probed
|
|
177
|
-
// through the Mimetypes handle. null means semantic derivation is unavailable.
|
|
178
|
-
static async #embedderInfo(mimetypes) {
|
|
179
|
-
// PLURNK_SERVICE_EMBED_DISABLE=1 forces the no-embedder path even though the default service
|
|
180
|
-
// includes one. The semantic stack funnels through this gate, so disabling it is wholly FTS-only.
|
|
181
|
-
if (process.env.PLURNK_SERVICE_EMBED_DISABLE === "1")
|
|
182
|
-
return null;
|
|
183
|
-
return await mimetypes.embedderInfo();
|
|
184
|
-
}
|
|
185
|
-
// Resolve the pass-wide semantic facts once. The plan binds the selected
|
|
186
|
-
// counter to the same identity folded into every derivation hash, so entries
|
|
187
|
-
// cannot be tiled with provenance different from the configuration key.
|
|
188
|
-
static async prepareEmbeddings(mimetypes) {
|
|
189
|
-
const info = await EntrySemantic.#embedderInfo(mimetypes);
|
|
190
|
-
if (info === null) {
|
|
191
|
-
return {
|
|
192
|
-
mimetypes,
|
|
193
|
-
info: null,
|
|
194
|
-
countTokens: null,
|
|
195
|
-
tokenizer: null,
|
|
196
|
-
signature: "embed:none",
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
const tokenizer = info.countTokens === null && info.contextWindow !== null
|
|
200
|
-
? await mimetypes.tokenizer(info.tokenizerModel ?? info.model ?? "")
|
|
201
|
-
: null;
|
|
202
|
-
const countTokens = info.countTokens ?? tokenizer?.countTokens ?? null;
|
|
203
|
-
const tokenizerIdentity = tokenizer === null
|
|
204
|
-
? ""
|
|
205
|
-
: `:tokenizer=${tokenizer.tokenizerId}:${tokenizer.exact ? "exact" : "estimate"}`;
|
|
206
|
-
const base = `embed:${info.model ?? "?"}:${info.contextWindow}:${info.contextWindow === null ? "?" : EntrySemantic.#chunkBudget(info.contextWindow)}:${EntrySemantic.#chunkOverlap()}:chunker=${SEMANTIC_CHUNK_REVISION}:wire=${EmbeddingVector.encoding}${tokenizerIdentity}`;
|
|
207
|
-
const maxBytes = EntrySemantic.maxEmbedSize();
|
|
208
|
-
return {
|
|
209
|
-
mimetypes,
|
|
210
|
-
info,
|
|
211
|
-
countTokens,
|
|
212
|
-
tokenizer,
|
|
213
|
-
signature: maxBytes === 0 ? base : `${base}:max-bytes=${maxBytes}`,
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
// Build the FTS5 query used only by the no-embedder keyword fallback.
|
|
217
|
-
static ftsQueryFor(text) {
|
|
218
|
-
const terms = text.toLowerCase().match(/[a-z0-9]+/g);
|
|
219
|
-
if (terms === null)
|
|
220
|
-
return "";
|
|
221
|
-
return [...new Set(terms)].join(" OR ");
|
|
222
|
-
}
|
|
223
|
-
// The ~query dispatch: embed the query text through the SAME channel and cosine-rank
|
|
224
|
-
// every vector in scope. Each result carries its best-matching
|
|
225
|
-
// chunk's line span (the Finding extent). No embedder -> an unthresholded
|
|
226
|
-
// ranked prefix degrades to FTS-only keyword rank (whole-entry findings);
|
|
227
|
-
// a similarity threshold stays 501.
|
|
228
|
-
static async rankCandidates(context, candidates, queryText, selection) {
|
|
229
|
-
const { threshold } = selection;
|
|
230
|
-
// {§find-semantic-selection} — the cosine the rank was ordered by rides each result;
|
|
231
|
-
// the lexical fallback ranks by BM25 and carries none.
|
|
232
|
-
const toResult = (x) => ({
|
|
233
|
-
key: x.key,
|
|
234
|
-
lineStart: x.line_start,
|
|
235
|
-
lineEnd: x.line_end,
|
|
236
|
-
score: typeof x.score === "number" ? x.score : null,
|
|
237
|
-
});
|
|
238
|
-
if (threshold !== null && (threshold <= 0 || threshold >= 1)) {
|
|
239
|
-
return { status: 416, results: [] };
|
|
240
|
-
}
|
|
241
|
-
if (candidates.length === 0)
|
|
242
|
-
return { status: 200, results: [] };
|
|
243
|
-
const serializedCandidates = JSON.stringify(candidates);
|
|
244
|
-
// The query embedding honors the SAME gate as the corpus (#embedderInfo /
|
|
245
|
-
// PLURNK_SERVICE_EMBED_DISABLE): with the embeddings package installed but disabled,
|
|
246
|
-
// calling process() directly would compute a query vector and rank it against
|
|
247
|
-
// an empty derivation_embeddings - every ~query silently []. Disabled means the honest
|
|
248
|
-
// FTS keyword fallback, same as no embedder at all.
|
|
249
|
-
const { db, mimetypes } = context;
|
|
250
|
-
if (mimetypes === undefined)
|
|
251
|
-
throw new Error("semantic ranking requires Mimetypes");
|
|
252
|
-
const info = await EntrySemantic.#embedderInfo(mimetypes);
|
|
253
|
-
// {§derivation-vectors-background} — vectors derive behind the attached artifact; the
|
|
254
|
-
// semantic query is the join and holds until every candidate's vectors landed.
|
|
255
|
-
if (info !== null && context.settleVectors !== undefined) {
|
|
256
|
-
await context.settleVectors(candidates.flatMap(({ deepHash }) => deepHash === null ? [] : [deepHash]));
|
|
257
|
-
}
|
|
258
|
-
const r = info === null
|
|
259
|
-
? { embedding: undefined, embeddingModel: undefined }
|
|
260
|
-
: await EmbeddingCall.query(db, {
|
|
261
|
-
workspaceId: context.workspaceId,
|
|
262
|
-
turnId: context.turnId > 0 ? context.turnId : null,
|
|
263
|
-
}, mimetypes, info.model, queryText, { signal: context.signal }).then(({ vector }) => ({ embedding: vector, embeddingModel: info.model }));
|
|
264
|
-
if (r.embedding === undefined || r.embedding.byteLength === 0 || r.embeddingModel === undefined) {
|
|
265
|
-
// FTS fallback: no embedder, so there is no query vector to cosine with. Top-K ranks
|
|
266
|
-
// by BM25 keyword relevance alone; the <0.x> threshold form is intrinsically cosine-
|
|
267
|
-
// based (no bounded BM25 analogue), so it stays 501.
|
|
268
|
-
if (threshold !== null)
|
|
269
|
-
return { status: 501, results: [] };
|
|
270
|
-
const ftsQuery = EntrySemantic.ftsQueryFor(queryText);
|
|
271
|
-
if (ftsQuery.length === 0)
|
|
272
|
-
return { status: 200, results: [] };
|
|
273
|
-
const rows = await db.semantic_rank_candidates_fts.all({
|
|
274
|
-
fts_query: ftsQuery,
|
|
275
|
-
candidates: serializedCandidates,
|
|
276
|
-
k: -1,
|
|
277
|
-
});
|
|
278
|
-
return { status: 200, results: rows.map(toResult) };
|
|
279
|
-
}
|
|
280
|
-
if (threshold === null) {
|
|
281
|
-
const rows = await db.semantic_rank_candidates.all({
|
|
282
|
-
candidates: serializedCandidates,
|
|
283
|
-
query_vector: r.embedding,
|
|
284
|
-
embedding_model: r.embeddingModel,
|
|
285
|
-
k: -1,
|
|
286
|
-
});
|
|
287
|
-
return { status: 200, results: rows.map(toResult) };
|
|
288
|
-
}
|
|
289
|
-
const rows = await db.semantic_rank_candidates_threshold.all({
|
|
290
|
-
candidates: serializedCandidates,
|
|
291
|
-
query_vector: r.embedding,
|
|
292
|
-
embedding_model: r.embeddingModel,
|
|
293
|
-
threshold,
|
|
294
|
-
cap: -1,
|
|
295
|
-
});
|
|
296
|
-
return { status: 200, results: rows.map(toResult) };
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
//# sourceMappingURL=_entry-semantic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-semantic.js","sourceRoot":"","sources":["../../src/schemes/_entry-semantic.ts"],"names":[],"mappings":"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"}
|