@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
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
-- MIGRATE: 4 inference
|
|
2
|
+
-- Chapter 4 of the schema baseline ({§db-schema-baseline}): Inference: logical calls, model responses, emission attempts, physical provider requests.
|
|
3
|
+
-- Version numbers order the chapters on a fresh database; they are not history. A shape
|
|
4
|
+
-- change edits the chapter in place; existing development databases are recreated.
|
|
5
|
+
|
|
6
|
+
-- One logical model call owns its lifecycle and physical-request ledger.
|
|
7
|
+
-- Response and admission evidence specialize this identity. {§tokenomics-provider-usage}
|
|
8
|
+
CREATE TABLE IF NOT EXISTS inference_calls (
|
|
9
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
10
|
+
workspace_id INTEGER NOT NULL,
|
|
11
|
+
turn_id INTEGER NOT NULL,
|
|
12
|
+
sequence INTEGER NOT NULL CHECK (sequence >= 1),
|
|
13
|
+
kind TEXT NOT NULL CHECK (kind IN ('emission', 'bare')),
|
|
14
|
+
state TEXT NOT NULL DEFAULT 'pending' CHECK (state IN ('pending', 'response', 'error')),
|
|
15
|
+
-- Exact opaque tag set forwarded with generation calls.
|
|
16
|
+
attributions TEXT NOT NULL DEFAULT '[]' CHECK (
|
|
17
|
+
json_valid(attributions) AND json_type(attributions) = 'array'
|
|
18
|
+
),
|
|
19
|
+
request_model TEXT NOT NULL CHECK (length(request_model) >= 1),
|
|
20
|
+
timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
21
|
+
completed_at TEXT,
|
|
22
|
+
CHECK (
|
|
23
|
+
(state = 'pending' AND completed_at IS NULL)
|
|
24
|
+
OR (state IN ('response', 'error') AND completed_at IS NOT NULL)
|
|
25
|
+
),
|
|
26
|
+
FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
27
|
+
FOREIGN KEY (turn_id) REFERENCES turns(id) ON DELETE CASCADE
|
|
28
|
+
) STRICT;
|
|
29
|
+
|
|
30
|
+
CREATE UNIQUE INDEX IF NOT EXISTS inference_calls_turn_sequence
|
|
31
|
+
ON inference_calls (turn_id, sequence);
|
|
32
|
+
|
|
33
|
+
CREATE INDEX IF NOT EXISTS inference_calls_workspace_id
|
|
34
|
+
ON inference_calls (workspace_id, timestamp, id);
|
|
35
|
+
|
|
36
|
+
CREATE TRIGGER IF NOT EXISTS inference_calls_open_pending
|
|
37
|
+
BEFORE INSERT ON inference_calls
|
|
38
|
+
WHEN NEW.state != 'pending' OR NEW.completed_at IS NOT NULL
|
|
39
|
+
BEGIN
|
|
40
|
+
SELECT RAISE(ABORT, 'inference call must open pending');
|
|
41
|
+
END;
|
|
42
|
+
|
|
43
|
+
CREATE TRIGGER IF NOT EXISTS inference_calls_context_valid
|
|
44
|
+
BEFORE INSERT ON inference_calls
|
|
45
|
+
WHEN COALESCE((
|
|
46
|
+
SELECT w.workspace_id = NEW.workspace_id
|
|
47
|
+
AND t.producer = 'model' AND t.kind = 'inference'
|
|
48
|
+
FROM turns t
|
|
49
|
+
JOIN loops l ON l.id = t.loop_id
|
|
50
|
+
JOIN workers w ON w.id = l.worker_id
|
|
51
|
+
WHERE t.id = NEW.turn_id
|
|
52
|
+
), 0) != 1
|
|
53
|
+
BEGIN
|
|
54
|
+
SELECT RAISE(ABORT, 'inference call requires a valid owning workspace and causal context');
|
|
55
|
+
END;
|
|
56
|
+
|
|
57
|
+
CREATE TRIGGER IF NOT EXISTS inference_calls_request_identity_immutable
|
|
58
|
+
BEFORE UPDATE OF workspace_id, turn_id, sequence, kind, attributions, request_model, timestamp
|
|
59
|
+
ON inference_calls
|
|
60
|
+
BEGIN
|
|
61
|
+
SELECT RAISE(ABORT, 'inference call request identity is immutable');
|
|
62
|
+
END;
|
|
63
|
+
|
|
64
|
+
CREATE TRIGGER IF NOT EXISTS inference_calls_state_forward_only
|
|
65
|
+
BEFORE UPDATE OF state ON inference_calls
|
|
66
|
+
WHEN NOT (
|
|
67
|
+
NEW.state = OLD.state
|
|
68
|
+
OR (OLD.state = 'pending' AND NEW.state IN ('response', 'error'))
|
|
69
|
+
)
|
|
70
|
+
BEGIN
|
|
71
|
+
SELECT RAISE(ABORT, 'inference call state may only close once');
|
|
72
|
+
END;
|
|
73
|
+
|
|
74
|
+
CREATE TRIGGER IF NOT EXISTS inference_calls_terminal_evidence_required
|
|
75
|
+
BEFORE UPDATE OF state ON inference_calls
|
|
76
|
+
WHEN NEW.state != OLD.state
|
|
77
|
+
AND NOT (
|
|
78
|
+
(NEW.state = 'response' AND EXISTS (
|
|
79
|
+
SELECT 1 FROM model_calls WHERE id = NEW.id AND response IS NOT NULL
|
|
80
|
+
))
|
|
81
|
+
OR
|
|
82
|
+
(NEW.state = 'error' AND EXISTS (
|
|
83
|
+
SELECT 1 FROM model_calls WHERE id = NEW.id AND failure IS NOT NULL
|
|
84
|
+
))
|
|
85
|
+
)
|
|
86
|
+
BEGIN
|
|
87
|
+
SELECT RAISE(ABORT, 'inference call terminal state requires specialization evidence');
|
|
88
|
+
END;
|
|
89
|
+
|
|
90
|
+
CREATE TRIGGER IF NOT EXISTS inference_calls_completion_immutable
|
|
91
|
+
BEFORE UPDATE OF completed_at ON inference_calls
|
|
92
|
+
WHEN OLD.state != 'pending'
|
|
93
|
+
BEGIN
|
|
94
|
+
SELECT RAISE(ABORT, 'inference call completion is immutable');
|
|
95
|
+
END;
|
|
96
|
+
|
|
97
|
+
-- Generation-specific response/failure evidence. The request model and
|
|
98
|
+
-- lifecycle remain on inference_calls; response_model is provider evidence.
|
|
99
|
+
CREATE TABLE IF NOT EXISTS model_calls (
|
|
100
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
101
|
+
-- {§packet-attachment-parts}: exact model-facing log coordinates whose
|
|
102
|
+
-- native bytes were present in this completed request. The ordinary READ
|
|
103
|
+
-- result remains independently durable in the log.
|
|
104
|
+
native_inputs TEXT NOT NULL DEFAULT '[]' CHECK (
|
|
105
|
+
json_valid(native_inputs) AND json_type(native_inputs) = 'array'
|
|
106
|
+
),
|
|
107
|
+
response TEXT CHECK (response IS NULL OR json_valid(response)),
|
|
108
|
+
failure TEXT CHECK (failure IS NULL OR json_valid(failure)),
|
|
109
|
+
capacity TEXT CHECK (
|
|
110
|
+
capacity IS NULL OR (json_valid(capacity) AND json_type(capacity) = 'object')
|
|
111
|
+
),
|
|
112
|
+
finish_reason TEXT,
|
|
113
|
+
response_model TEXT CHECK (response_model IS NULL OR length(response_model) >= 1),
|
|
114
|
+
CHECK (response IS NULL OR (capacity IS NOT NULL AND response_model IS NOT NULL)),
|
|
115
|
+
CHECK (json_array_length(native_inputs) = 0 OR response IS NOT NULL),
|
|
116
|
+
FOREIGN KEY (id) REFERENCES inference_calls(id) ON DELETE CASCADE
|
|
117
|
+
) STRICT;
|
|
118
|
+
|
|
119
|
+
CREATE TRIGGER IF NOT EXISTS model_calls_specializes_generation
|
|
120
|
+
BEFORE INSERT ON model_calls
|
|
121
|
+
WHEN COALESCE((
|
|
122
|
+
SELECT kind IN ('emission', 'bare') FROM inference_calls WHERE id = NEW.id
|
|
123
|
+
), 0) != 1
|
|
124
|
+
BEGIN
|
|
125
|
+
SELECT RAISE(ABORT, 'model call must specialize a generation inference');
|
|
126
|
+
END;
|
|
127
|
+
|
|
128
|
+
CREATE TRIGGER IF NOT EXISTS model_calls_cannot_orphan_inference
|
|
129
|
+
AFTER DELETE ON model_calls
|
|
130
|
+
WHEN EXISTS (SELECT 1 FROM inference_calls WHERE id = OLD.id)
|
|
131
|
+
BEGIN
|
|
132
|
+
SELECT RAISE(ABORT, 'model call specialization cannot be deleted independently');
|
|
133
|
+
END;
|
|
134
|
+
|
|
135
|
+
CREATE TRIGGER IF NOT EXISTS model_calls_observation_pending
|
|
136
|
+
BEFORE UPDATE OF native_inputs, response, failure, capacity, finish_reason, response_model
|
|
137
|
+
ON model_calls
|
|
138
|
+
WHEN COALESCE((SELECT state FROM inference_calls WHERE id = OLD.id), '') != 'pending'
|
|
139
|
+
BEGIN
|
|
140
|
+
SELECT RAISE(ABORT, 'model call observation is immutable');
|
|
141
|
+
END;
|
|
142
|
+
|
|
143
|
+
-- Emission admission specializes one model call without re-owning its response,
|
|
144
|
+
-- provider identity, ordering, or accounting evidence.
|
|
145
|
+
CREATE TABLE IF NOT EXISTS turn_attempts (
|
|
146
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
147
|
+
model_call_id INTEGER NOT NULL UNIQUE,
|
|
148
|
+
accepted INTEGER CHECK (accepted IS NULL OR accepted IN (0, 1)),
|
|
149
|
+
parse_errors TEXT NOT NULL DEFAULT '[]' CHECK (
|
|
150
|
+
json_valid(parse_errors) AND json_type(parse_errors) = 'array'
|
|
151
|
+
),
|
|
152
|
+
FOREIGN KEY (model_call_id) REFERENCES model_calls(id) ON DELETE CASCADE
|
|
153
|
+
) STRICT;
|
|
154
|
+
|
|
155
|
+
CREATE TRIGGER IF NOT EXISTS turn_attempts_request_identity_immutable
|
|
156
|
+
BEFORE UPDATE OF model_call_id ON turn_attempts
|
|
157
|
+
BEGIN
|
|
158
|
+
SELECT RAISE(ABORT, 'emission attempt identity is immutable');
|
|
159
|
+
END;
|
|
160
|
+
|
|
161
|
+
CREATE TRIGGER IF NOT EXISTS turn_attempts_emission_call_only
|
|
162
|
+
BEFORE INSERT ON turn_attempts
|
|
163
|
+
WHEN COALESCE((SELECT kind = 'emission' FROM inference_calls WHERE id = NEW.model_call_id), 0) != 1
|
|
164
|
+
BEGIN
|
|
165
|
+
SELECT RAISE(ABORT, 'turn attempt requires an emission model call');
|
|
166
|
+
END;
|
|
167
|
+
|
|
168
|
+
CREATE TRIGGER IF NOT EXISTS turn_attempts_classification_after_response
|
|
169
|
+
BEFORE UPDATE OF accepted, parse_errors ON turn_attempts
|
|
170
|
+
WHEN COALESCE((SELECT state = 'response' FROM inference_calls WHERE id = OLD.model_call_id), 0) != 1
|
|
171
|
+
BEGIN
|
|
172
|
+
SELECT RAISE(ABORT, 'emission classification requires model response evidence');
|
|
173
|
+
END;
|
|
174
|
+
|
|
175
|
+
CREATE TRIGGER IF NOT EXISTS turn_attempts_classification_once
|
|
176
|
+
BEFORE UPDATE OF accepted, parse_errors
|
|
177
|
+
ON turn_attempts
|
|
178
|
+
WHEN OLD.accepted IS NOT NULL
|
|
179
|
+
BEGIN
|
|
180
|
+
SELECT RAISE(ABORT, 'emission attempt classification is immutable');
|
|
181
|
+
END;
|
|
182
|
+
|
|
183
|
+
CREATE TRIGGER IF NOT EXISTS turn_attempts_one_accepted_insert
|
|
184
|
+
BEFORE INSERT ON turn_attempts
|
|
185
|
+
WHEN NEW.accepted = 1 AND EXISTS (
|
|
186
|
+
SELECT 1
|
|
187
|
+
FROM turn_attempts existing
|
|
188
|
+
JOIN inference_calls old_call ON old_call.id = existing.model_call_id
|
|
189
|
+
JOIN inference_calls new_call ON new_call.id = NEW.model_call_id
|
|
190
|
+
WHERE old_call.turn_id = new_call.turn_id AND existing.accepted = 1
|
|
191
|
+
)
|
|
192
|
+
BEGIN
|
|
193
|
+
SELECT RAISE(ABORT, 'one emission may be accepted per turn');
|
|
194
|
+
END;
|
|
195
|
+
|
|
196
|
+
CREATE TRIGGER IF NOT EXISTS turn_attempts_one_accepted_update
|
|
197
|
+
BEFORE UPDATE OF accepted ON turn_attempts
|
|
198
|
+
WHEN NEW.accepted = 1 AND EXISTS (
|
|
199
|
+
SELECT 1
|
|
200
|
+
FROM turn_attempts existing
|
|
201
|
+
JOIN inference_calls old_call ON old_call.id = existing.model_call_id
|
|
202
|
+
JOIN inference_calls new_call ON new_call.id = NEW.model_call_id
|
|
203
|
+
WHERE old_call.turn_id = new_call.turn_id
|
|
204
|
+
AND existing.id != OLD.id
|
|
205
|
+
AND existing.accepted = 1
|
|
206
|
+
)
|
|
207
|
+
BEGIN
|
|
208
|
+
SELECT RAISE(ABORT, 'one emission may be accepted per turn');
|
|
209
|
+
END;
|
|
210
|
+
|
|
211
|
+
-- {§provider-request-accounting}: one row is opened before one physical
|
|
212
|
+
-- provider request and settled exactly once with the evidence from that request.
|
|
213
|
+
-- Monetary values remain canonical decimal strings; SQLite REAL is never an
|
|
214
|
+
-- accounting representation.
|
|
215
|
+
CREATE TABLE IF NOT EXISTS provider_requests (
|
|
216
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
217
|
+
inference_call_id INTEGER NOT NULL,
|
|
218
|
+
sequence INTEGER NOT NULL CHECK (sequence >= 1),
|
|
219
|
+
provider TEXT NOT NULL CHECK (length(provider) > 0),
|
|
220
|
+
model TEXT NOT NULL CHECK (length(model) > 0),
|
|
221
|
+
state TEXT NOT NULL DEFAULT 'pending' CHECK (state IN ('pending', 'settled')),
|
|
222
|
+
outcome TEXT CHECK (outcome IN ('response', 'error')),
|
|
223
|
+
status INTEGER CHECK (status IS NULL OR status BETWEEN 100 AND 599),
|
|
224
|
+
usage_input INTEGER CHECK (usage_input IS NULL OR usage_input >= 0),
|
|
225
|
+
usage_output INTEGER CHECK (usage_output IS NULL OR usage_output >= 0),
|
|
226
|
+
usage_total INTEGER CHECK (usage_total IS NULL OR usage_total >= 0),
|
|
227
|
+
usage_input_no_cache INTEGER CHECK (usage_input_no_cache IS NULL OR usage_input_no_cache >= 0),
|
|
228
|
+
usage_input_cache_read INTEGER CHECK (usage_input_cache_read IS NULL OR usage_input_cache_read >= 0),
|
|
229
|
+
usage_input_cache_write INTEGER CHECK (usage_input_cache_write IS NULL OR usage_input_cache_write >= 0),
|
|
230
|
+
usage_output_text INTEGER CHECK (usage_output_text IS NULL OR usage_output_text >= 0),
|
|
231
|
+
usage_output_reasoning INTEGER CHECK (usage_output_reasoning IS NULL OR usage_output_reasoning >= 0),
|
|
232
|
+
cost_kind TEXT CHECK (cost_kind IN ('charged', 'estimated', 'unknown')),
|
|
233
|
+
cost_amount TEXT,
|
|
234
|
+
cost_currency TEXT,
|
|
235
|
+
cost_usd_equivalent TEXT,
|
|
236
|
+
cost_source TEXT,
|
|
237
|
+
cost_reason TEXT,
|
|
238
|
+
started_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
239
|
+
completed_at TEXT,
|
|
240
|
+
CHECK (
|
|
241
|
+
(state = 'pending'
|
|
242
|
+
AND outcome IS NULL AND status IS NULL
|
|
243
|
+
AND usage_input IS NULL AND usage_output IS NULL AND usage_total IS NULL
|
|
244
|
+
AND usage_input_no_cache IS NULL AND usage_input_cache_read IS NULL
|
|
245
|
+
AND usage_input_cache_write IS NULL AND usage_output_text IS NULL
|
|
246
|
+
AND usage_output_reasoning IS NULL
|
|
247
|
+
AND cost_kind IS NULL AND cost_amount IS NULL AND cost_currency IS NULL
|
|
248
|
+
AND cost_usd_equivalent IS NULL AND cost_source IS NULL AND cost_reason IS NULL
|
|
249
|
+
AND completed_at IS NULL)
|
|
250
|
+
OR
|
|
251
|
+
(state = 'settled' AND outcome IS NOT NULL AND cost_kind IS NOT NULL AND completed_at IS NOT NULL)
|
|
252
|
+
),
|
|
253
|
+
CHECK (
|
|
254
|
+
cost_amount IS NULL OR (
|
|
255
|
+
length(cost_amount) > 0
|
|
256
|
+
AND cost_amount NOT GLOB '*[^0-9.]*'
|
|
257
|
+
AND cost_amount NOT LIKE '.%'
|
|
258
|
+
AND cost_amount NOT LIKE '%.'
|
|
259
|
+
AND cost_amount NOT LIKE '%.%.%'
|
|
260
|
+
AND (cost_amount = '0' OR cost_amount NOT GLOB '0[0-9]*')
|
|
261
|
+
)
|
|
262
|
+
),
|
|
263
|
+
CHECK (
|
|
264
|
+
cost_usd_equivalent IS NULL OR (
|
|
265
|
+
length(cost_usd_equivalent) > 0
|
|
266
|
+
AND cost_usd_equivalent NOT GLOB '*[^0-9.]*'
|
|
267
|
+
AND cost_usd_equivalent NOT LIKE '.%'
|
|
268
|
+
AND cost_usd_equivalent NOT LIKE '%.'
|
|
269
|
+
AND cost_usd_equivalent NOT LIKE '%.%.%'
|
|
270
|
+
AND (cost_usd_equivalent = '0' OR cost_usd_equivalent NOT GLOB '0[0-9]*')
|
|
271
|
+
)
|
|
272
|
+
),
|
|
273
|
+
CHECK (
|
|
274
|
+
cost_currency IS NULL OR (
|
|
275
|
+
length(cost_currency) BETWEEN 3 AND 12
|
|
276
|
+
AND substr(cost_currency, 1, 1) GLOB '[A-Z]'
|
|
277
|
+
AND cost_currency NOT GLOB '*[^A-Z0-9]*'
|
|
278
|
+
)
|
|
279
|
+
),
|
|
280
|
+
CHECK (
|
|
281
|
+
cost_kind IS NULL
|
|
282
|
+
OR (cost_kind = 'charged'
|
|
283
|
+
AND cost_amount IS NOT NULL AND cost_currency IS NOT NULL
|
|
284
|
+
AND cost_source IS NOT NULL AND length(cost_source) > 0
|
|
285
|
+
AND cost_reason IS NULL)
|
|
286
|
+
OR (cost_kind = 'estimated'
|
|
287
|
+
AND cost_amount IS NOT NULL AND cost_currency IS NOT NULL
|
|
288
|
+
AND cost_usd_equivalent IS NULL
|
|
289
|
+
AND cost_source IS NOT NULL AND length(cost_source) > 0
|
|
290
|
+
AND cost_reason IS NULL)
|
|
291
|
+
OR (cost_kind = 'unknown'
|
|
292
|
+
AND cost_amount IS NULL AND cost_currency IS NULL
|
|
293
|
+
AND cost_usd_equivalent IS NULL AND cost_source IS NULL
|
|
294
|
+
AND cost_reason IS NOT NULL AND length(cost_reason) > 0)
|
|
295
|
+
),
|
|
296
|
+
UNIQUE (inference_call_id, sequence),
|
|
297
|
+
FOREIGN KEY (inference_call_id) REFERENCES inference_calls(id) ON DELETE CASCADE
|
|
298
|
+
) STRICT;
|
|
299
|
+
|
|
300
|
+
CREATE TRIGGER IF NOT EXISTS provider_requests_pending_inference_only
|
|
301
|
+
BEFORE INSERT ON provider_requests
|
|
302
|
+
WHEN COALESCE((SELECT state = 'pending' FROM inference_calls WHERE id = NEW.inference_call_id), 0) != 1
|
|
303
|
+
BEGIN
|
|
304
|
+
SELECT RAISE(ABORT, 'provider request requires a pending inference call');
|
|
305
|
+
END;
|
|
306
|
+
|
|
307
|
+
CREATE TRIGGER IF NOT EXISTS provider_requests_identity_immutable
|
|
308
|
+
BEFORE UPDATE OF inference_call_id, sequence, provider, model, started_at
|
|
309
|
+
ON provider_requests
|
|
310
|
+
BEGIN
|
|
311
|
+
SELECT RAISE(ABORT, 'provider request identity is immutable');
|
|
312
|
+
END;
|
|
313
|
+
|
|
314
|
+
CREATE TRIGGER IF NOT EXISTS provider_requests_state_forward_only
|
|
315
|
+
BEFORE UPDATE OF state ON provider_requests
|
|
316
|
+
WHEN NOT (NEW.state = OLD.state OR (OLD.state = 'pending' AND NEW.state = 'settled'))
|
|
317
|
+
BEGIN
|
|
318
|
+
SELECT RAISE(ABORT, 'provider request may only settle once');
|
|
319
|
+
END;
|
|
320
|
+
|
|
321
|
+
CREATE TRIGGER IF NOT EXISTS provider_requests_settlement_immutable
|
|
322
|
+
BEFORE UPDATE OF outcome, status,
|
|
323
|
+
usage_input, usage_output, usage_total,
|
|
324
|
+
usage_input_no_cache, usage_input_cache_read, usage_input_cache_write,
|
|
325
|
+
usage_output_text, usage_output_reasoning,
|
|
326
|
+
cost_kind, cost_amount, cost_currency, cost_usd_equivalent,
|
|
327
|
+
cost_source, cost_reason, completed_at
|
|
328
|
+
ON provider_requests
|
|
329
|
+
WHEN OLD.state != 'pending'
|
|
330
|
+
BEGIN
|
|
331
|
+
SELECT RAISE(ABORT, 'provider request settlement is immutable');
|
|
332
|
+
END;
|
|
333
|
+
|
|
334
|
+
CREATE TRIGGER IF NOT EXISTS model_calls_native_inputs_valid
|
|
335
|
+
BEFORE UPDATE OF native_inputs ON model_calls
|
|
336
|
+
WHEN (
|
|
337
|
+
SELECT COUNT(*) != COUNT(DISTINCT value)
|
|
338
|
+
OR SUM(CASE WHEN type != 'text' OR length(value) = 0 THEN 1 ELSE 0 END) > 0
|
|
339
|
+
FROM json_each(NEW.native_inputs)
|
|
340
|
+
)
|
|
341
|
+
OR EXISTS (
|
|
342
|
+
SELECT 1
|
|
343
|
+
FROM json_each(NEW.native_inputs) native
|
|
344
|
+
WHERE NOT EXISTS (
|
|
345
|
+
SELECT 1
|
|
346
|
+
FROM inference_calls call
|
|
347
|
+
JOIN turns request_turn ON request_turn.id = call.turn_id
|
|
348
|
+
JOIN loops request_loop ON request_loop.id = request_turn.loop_id
|
|
349
|
+
JOIN log_entries entry ON entry.worker_id = request_loop.worker_id
|
|
350
|
+
JOIN turns entry_turn ON entry_turn.id = entry.turn_id
|
|
351
|
+
JOIN loops entry_loop ON entry_loop.id = entry_turn.loop_id
|
|
352
|
+
WHERE call.id = NEW.id
|
|
353
|
+
AND entry.op = 'READ'
|
|
354
|
+
AND entry.status_rx < 400
|
|
355
|
+
AND (entry_loop.sequence || '/' || entry_turn.sequence || '/' || entry.sequence) = native.value
|
|
356
|
+
)
|
|
357
|
+
)
|
|
358
|
+
BEGIN
|
|
359
|
+
SELECT RAISE(ABORT, 'model call native inputs must be unique successful READ coordinates owned by its worker');
|
|
360
|
+
END;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
-- MIGRATE: 5 entries
|
|
2
|
+
-- Chapter 5 of the schema baseline ({§db-schema-baseline}): Entries and their channels, derivations and the search artifacts over them, native content.
|
|
3
|
+
-- Version numbers order the chapters on a fresh database; they are not history. A shape
|
|
4
|
+
-- change edits the chapter in place; existing development databases are recreated.
|
|
5
|
+
|
|
6
|
+
-- derivations
|
|
7
|
+
-- Content-addressed deep projections. Entry channels and log projections point
|
|
8
|
+
-- at a COMPLETE artifact by deep_hash; graph and FTS are stored once
|
|
9
|
+
-- regardless of how many addresses carry identical content under the same reader/config.
|
|
10
|
+
-- A building row is unattached and safely replaceable after interruption.
|
|
11
|
+
CREATE TABLE IF NOT EXISTS derivations (
|
|
12
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
13
|
+
deep_hash TEXT NOT NULL UNIQUE CHECK (length(deep_hash) > 0),
|
|
14
|
+
state TEXT NOT NULL DEFAULT 'building' CHECK (state IN ('building', 'complete')),
|
|
15
|
+
disposition TEXT CHECK (disposition IN ('indexed', 'excluded', 'unsearchable', 'failed')),
|
|
16
|
+
reason TEXT,
|
|
17
|
+
parse_issues INTEGER CHECK (parse_issues IS NULL OR parse_issues > 0),
|
|
18
|
+
summary TEXT CHECK (
|
|
19
|
+
summary IS NULL OR (
|
|
20
|
+
length(summary) > 0
|
|
21
|
+
AND summary = trim(summary)
|
|
22
|
+
AND instr(summary, char(10)) = 0
|
|
23
|
+
AND instr(summary, char(13)) = 0
|
|
24
|
+
)
|
|
25
|
+
),
|
|
26
|
+
CHECK ((state = 'building' AND disposition IS NULL) OR (state = 'complete' AND disposition IS NOT NULL))
|
|
27
|
+
) STRICT;
|
|
28
|
+
|
|
29
|
+
-- entries
|
|
30
|
+
-- {§entry-identity-no-null} A resource belongs directly to its workspace.
|
|
31
|
+
-- Actor attribution and subscriptions do not participate in its address.
|
|
32
|
+
CREATE TABLE IF NOT EXISTS entries (
|
|
33
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
34
|
+
version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
|
|
35
|
+
scheme TEXT NOT NULL CHECK (length(scheme) > 0),
|
|
36
|
+
-- Canonical resource authority; namespace schemes fold it into pathname.
|
|
37
|
+
authority TEXT NOT NULL DEFAULT '',
|
|
38
|
+
pathname TEXT NOT NULL,
|
|
39
|
+
workspace_id INTEGER NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
40
|
+
-- Entry-private metadata. Prompt frames use `openPaths` to carry selected
|
|
41
|
+
-- workspace paths into the exact turn that publishes the frame
|
|
42
|
+
-- ({§methods-loop-run-open-paths}).
|
|
43
|
+
attributes TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(attributes)),
|
|
44
|
+
default_channel TEXT NOT NULL DEFAULT 'body' CHECK (length(default_channel) > 0),
|
|
45
|
+
output INTEGER NOT NULL DEFAULT 0 CHECK (output IN (0, 1)),
|
|
46
|
+
-- SPEC {§membership} — how a file member entered the curated surface. 'git' rows are
|
|
47
|
+
-- reconciled against the repo's members each turn — tracked ls-files PLUS untracked-
|
|
48
|
+
-- but-not-ignored files ({§membership-auto-add}) — registered + un-registered so entries
|
|
49
|
+
-- == members; 'constraint' rows are reconciled from ordinary pick policy.
|
|
50
|
+
-- NULL = not a file member (other schemes don't carry origin).
|
|
51
|
+
membership_origin TEXT CHECK (membership_origin IS NULL OR membership_origin IN ('git', 'constraint')),
|
|
52
|
+
-- SPEC {§membership-change-gated-sync} — the per-member sync stat-detect:
|
|
53
|
+
-- "<mtimeMs>:<size>" of the disk file at its last materialization, or `absent`
|
|
54
|
+
-- after an observed deletion. The pre-turn
|
|
55
|
+
-- sync stat()s every member but re-reads/re-tokenizes/rewrites only one whose
|
|
56
|
+
-- signature changed; an unchanged member is a no-op. NULL = never synced.
|
|
57
|
+
synced_sig TEXT,
|
|
58
|
+
-- User Note 5 — manifest cache-friendliness. Last-modified stamp, bumped on every
|
|
59
|
+
-- addressable representation change; engine_list_workspace_entries orders the catalog
|
|
60
|
+
-- by it ASC so dormant entries hold the stable prompt-cache prefix. Private derivation
|
|
61
|
+
-- attachment does not make an entry recently touched.
|
|
62
|
+
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
63
|
+
) STRICT;
|
|
64
|
+
|
|
65
|
+
-- {§entry-owner}, {§execution-output-identity}: one canonical resource key.
|
|
66
|
+
CREATE UNIQUE INDEX IF NOT EXISTS entries_identity ON entries (workspace_id, scheme, authority, pathname);
|
|
67
|
+
|
|
68
|
+
-- The ONE engine-imposed constraint (SPEC {§stream-constraints}, {§stream-constraints-engine-one-cap}): 100 MiB char-length cap
|
|
69
|
+
-- per channel content body. All other limits are extrinsic.
|
|
70
|
+
CREATE TABLE IF NOT EXISTS entry_channels (
|
|
71
|
+
entry_id INTEGER NOT NULL,
|
|
72
|
+
name TEXT NOT NULL CHECK (length(name) > 0),
|
|
73
|
+
content TEXT NOT NULL CHECK (length(content) <= 104857600),
|
|
74
|
+
mimetype TEXT NOT NULL CHECK (length(mimetype) > 0),
|
|
75
|
+
weight INTEGER NOT NULL DEFAULT 0 CHECK (weight >= 0),
|
|
76
|
+
-- Content identity: sha256 of content, stamped at static writes; streamed
|
|
77
|
+
-- appends leave it NULL. Curation weight remains model-independent.
|
|
78
|
+
content_hash TEXT,
|
|
79
|
+
-- Search derivation for this exact addressable channel representation.
|
|
80
|
+
-- Content or mimetype changes invalidate it at the owning channel row.
|
|
81
|
+
deep_hash TEXT,
|
|
82
|
+
state TEXT NOT NULL DEFAULT 'static' CHECK (state IN ('static', 'active', 'closed', 'errored')),
|
|
83
|
+
-- Exact terminal producer evidence for this representation channel. NULL is
|
|
84
|
+
-- the ordinary implicit {status:200}; selection/projection metadata belongs
|
|
85
|
+
-- to core and is never stored here.
|
|
86
|
+
producer_result TEXT,
|
|
87
|
+
CONSTRAINT entry_channel_producer_result_contract CHECK (
|
|
88
|
+
CASE
|
|
89
|
+
WHEN producer_result IS NULL THEN 1
|
|
90
|
+
WHEN NOT json_valid(producer_result) THEN 0
|
|
91
|
+
ELSE
|
|
92
|
+
json_type(producer_result) IS 'object'
|
|
93
|
+
AND json_type(producer_result, '$.status') IS 'integer'
|
|
94
|
+
AND json_extract(producer_result, '$.status') BETWEEN 200 AND 599
|
|
95
|
+
AND json_extract(producer_result, '$.status') != 202
|
|
96
|
+
AND CASE
|
|
97
|
+
WHEN json_extract(producer_result, '$.status') < 400 THEN
|
|
98
|
+
json_type(producer_result, '$.problem') IS NULL
|
|
99
|
+
ELSE
|
|
100
|
+
json_type(producer_result, '$.problem') IS 'object'
|
|
101
|
+
AND json_type(producer_result, '$.problem.status') IS 'integer'
|
|
102
|
+
AND json_extract(producer_result, '$.problem.status')
|
|
103
|
+
= json_extract(producer_result, '$.status')
|
|
104
|
+
AND json_type(producer_result, '$.problem.type') IS 'text'
|
|
105
|
+
AND length(json_extract(producer_result, '$.problem.type')) > 0
|
|
106
|
+
AND json_type(producer_result, '$.problem.title') IS 'text'
|
|
107
|
+
AND length(json_extract(producer_result, '$.problem.title')) > 0
|
|
108
|
+
AND json_type(producer_result, '$.problem.detail') IS 'text'
|
|
109
|
+
AND length(json_extract(producer_result, '$.problem.detail')) > 0
|
|
110
|
+
END
|
|
111
|
+
END
|
|
112
|
+
),
|
|
113
|
+
PRIMARY KEY (entry_id, name),
|
|
114
|
+
FOREIGN KEY (entry_id) REFERENCES entries(id) ON DELETE CASCADE,
|
|
115
|
+
FOREIGN KEY (deep_hash) REFERENCES derivations(deep_hash)
|
|
116
|
+
) STRICT, WITHOUT ROWID;
|
|
117
|
+
|
|
118
|
+
-- {§db-fk-indexes} Derivation replacement checks channels by hash; catalog joins drive on it too.
|
|
119
|
+
CREATE INDEX IF NOT EXISTS entry_channels_deep_hash ON entry_channels (deep_hash) WHERE deep_hash IS NOT NULL;
|
|
120
|
+
|
|
121
|
+
-- {§crud} A publication is one SQL statement: failure rolls back metadata and
|
|
122
|
+
-- every channel. The view is an input boundary, not a second persisted copy.
|
|
123
|
+
CREATE VIEW IF NOT EXISTS entry_publication AS
|
|
124
|
+
SELECT NULL AS workspace_id, NULL AS scheme, NULL AS authority, NULL AS pathname,
|
|
125
|
+
NULL AS attributes, NULL AS default_channel, NULL AS output,
|
|
126
|
+
NULL AS channels, NULL AS created
|
|
127
|
+
WHERE 0;
|
|
128
|
+
|
|
129
|
+
CREATE TRIGGER IF NOT EXISTS entry_publication_insert
|
|
130
|
+
INSTEAD OF INSERT ON entry_publication
|
|
131
|
+
BEGIN
|
|
132
|
+
SELECT CASE WHEN json_type(NEW.channels) IS NOT 'object'
|
|
133
|
+
THEN RAISE(ABORT, 'entry publication requires a channel object') END;
|
|
134
|
+
INSERT INTO entries (workspace_id, scheme, authority, pathname, attributes, default_channel, output)
|
|
135
|
+
VALUES (NEW.workspace_id, NEW.scheme, NEW.authority, NEW.pathname,
|
|
136
|
+
COALESCE(NEW.attributes, '{}'), NEW.default_channel, NEW.output)
|
|
137
|
+
ON CONFLICT (workspace_id, scheme, authority, pathname) DO UPDATE SET
|
|
138
|
+
attributes = COALESCE(NEW.attributes, entries.attributes),
|
|
139
|
+
default_channel = excluded.default_channel,
|
|
140
|
+
output = MAX(entries.output, excluded.output);
|
|
141
|
+
DELETE FROM entry_channels WHERE entry_id = (
|
|
142
|
+
SELECT id FROM entries WHERE workspace_id = NEW.workspace_id
|
|
143
|
+
AND scheme = NEW.scheme AND authority = NEW.authority AND pathname = NEW.pathname
|
|
144
|
+
);
|
|
145
|
+
INSERT INTO entry_channels (entry_id, name, content, mimetype, weight, content_hash, state, producer_result)
|
|
146
|
+
SELECT e.id, c.key, json_extract(c.value, '$.content'), json_extract(c.value, '$.mimetype'),
|
|
147
|
+
json_extract(c.value, '$.weight'), json_extract(c.value, '$.content_hash'),
|
|
148
|
+
json_extract(c.value, '$.state'), json_extract(c.value, '$.producer_result')
|
|
149
|
+
FROM entries e, json_each(NEW.channels) c
|
|
150
|
+
WHERE e.workspace_id = NEW.workspace_id AND e.scheme = NEW.scheme
|
|
151
|
+
AND e.authority = NEW.authority AND e.pathname = NEW.pathname;
|
|
152
|
+
END;
|
|
153
|
+
|
|
154
|
+
-- symbol_defs
|
|
155
|
+
-- &graph NODES ({§relation-indexed-dialects}). Code symbol definitions, populated
|
|
156
|
+
-- once per content-addressed derivation from mimetypes'
|
|
157
|
+
-- `symbols` channel. Qualified path = container ? container || '.' || name : name.
|
|
158
|
+
CREATE TABLE IF NOT EXISTS symbol_defs (
|
|
159
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
160
|
+
derivation_id INTEGER NOT NULL,
|
|
161
|
+
name TEXT NOT NULL CHECK (length(name) > 0),
|
|
162
|
+
kind TEXT NOT NULL,
|
|
163
|
+
container TEXT,
|
|
164
|
+
line INTEGER NOT NULL,
|
|
165
|
+
end_line INTEGER,
|
|
166
|
+
FOREIGN KEY (derivation_id) REFERENCES derivations(id) ON DELETE CASCADE
|
|
167
|
+
) STRICT;
|
|
168
|
+
|
|
169
|
+
CREATE INDEX IF NOT EXISTS symbol_defs_name ON symbol_defs (name);
|
|
170
|
+
|
|
171
|
+
-- {§db-fk-indexes} Reindexing deletes a derivation's definitions by derivation; mirrors symbol_refs_source.
|
|
172
|
+
CREATE INDEX IF NOT EXISTS symbol_defs_source ON symbol_defs (derivation_id);
|
|
173
|
+
|
|
174
|
+
-- symbol_refs
|
|
175
|
+
-- &graph EDGES ({§relation-indexed-dialects}), from mimetypes' `references` channel.
|
|
176
|
+
-- name = edge TARGET; container = the SOURCE def's full qualified path (the
|
|
177
|
+
-- &> join key; module-level → NULL); kind ∈ import|call|instantiate|inherit|
|
|
178
|
+
-- type|use (frozen, edge metadata only — traversal is kind-agnostic).
|
|
179
|
+
CREATE TABLE IF NOT EXISTS symbol_refs (
|
|
180
|
+
id INTEGER NOT NULL PRIMARY KEY,
|
|
181
|
+
derivation_id INTEGER NOT NULL,
|
|
182
|
+
name TEXT NOT NULL CHECK (length(name) > 0),
|
|
183
|
+
kind TEXT NOT NULL,
|
|
184
|
+
container TEXT,
|
|
185
|
+
line INTEGER NOT NULL,
|
|
186
|
+
FOREIGN KEY (derivation_id) REFERENCES derivations(id) ON DELETE CASCADE
|
|
187
|
+
) STRICT;
|
|
188
|
+
|
|
189
|
+
CREATE INDEX IF NOT EXISTS symbol_refs_name ON symbol_refs (name);
|
|
190
|
+
|
|
191
|
+
CREATE INDEX IF NOT EXISTS symbol_refs_source ON symbol_refs (derivation_id, container);
|
|
192
|
+
|
|
193
|
+
-- {§find-fulltext-selection} Native full-text index of the addressed READ body.
|
|
194
|
+
-- rowid is the content-addressed derivation id.
|
|
195
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS derivation_fts USING fts5(content);
|
|
196
|
+
|
|
197
|
+
-- {§packet-attachment-parts}: READ snapshots survive source changes and log curation.
|
|
198
|
+
CREATE TABLE IF NOT EXISTS native_contents (
|
|
199
|
+
hash TEXT NOT NULL PRIMARY KEY CHECK (length(hash) = 64),
|
|
200
|
+
content BLOB NOT NULL
|
|
201
|
+
) STRICT, WITHOUT ROWID;
|
|
202
|
+
|
|
203
|
+
CREATE TRIGGER IF NOT EXISTS native_contents_immutable
|
|
204
|
+
BEFORE UPDATE ON native_contents
|
|
205
|
+
BEGIN
|
|
206
|
+
SELECT RAISE(ABORT, 'native content is immutable');
|
|
207
|
+
END;
|