@plurnk/plurnk-service 1.3.12 → 1.4.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 +84 -77
- package/INSTALL.md +50 -25
- package/README.md +24 -10
- package/SPEC.md +2311 -928
- package/dist/Paths.d.ts +4 -1
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +23 -21
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/edit-receipt.d.ts +13 -28
- package/dist/content/edit-receipt.d.ts.map +1 -1
- package/dist/content/edit-receipt.js +285 -104
- package/dist/content/edit-receipt.js.map +1 -1
- package/dist/content/edited-span.d.ts.map +1 -1
- package/dist/content/edited-span.js +2 -5
- package/dist/content/edited-span.js.map +1 -1
- package/dist/content/index.d.ts +3 -3
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/line-marker.d.ts +6 -9
- package/dist/content/line-marker.d.ts.map +1 -1
- package/dist/content/line-marker.js +7 -11
- package/dist/content/line-marker.js.map +1 -1
- package/dist/content/matcher.d.ts +14 -25
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +77 -107
- package/dist/content/matcher.js.map +1 -1
- package/dist/content/mimetype-binary.d.ts +2 -2
- package/dist/content/mimetype-binary.d.ts.map +1 -1
- package/dist/content/mimetype-binary.js +10 -10
- package/dist/content/mimetype-binary.js.map +1 -1
- package/dist/content/path-mimetype.js +3 -3
- package/dist/content/path-mimetype.js.map +1 -1
- package/dist/content/read-resolve.d.ts +8 -4
- package/dist/content/read-resolve.d.ts.map +1 -1
- package/dist/content/read-resolve.js +101 -49
- package/dist/content/read-resolve.js.map +1 -1
- package/dist/core/BranchReceipt.d.ts +7 -0
- package/dist/core/BranchReceipt.d.ts.map +1 -0
- package/dist/core/BranchReceipt.js +27 -0
- package/dist/core/BranchReceipt.js.map +1 -0
- package/dist/core/BudgetOverflow.d.ts +23 -0
- package/dist/core/BudgetOverflow.d.ts.map +1 -0
- package/dist/core/BudgetOverflow.js +61 -0
- package/dist/core/BudgetOverflow.js.map +1 -0
- package/dist/core/BudgetReadout.d.ts +8 -0
- package/dist/core/BudgetReadout.d.ts.map +1 -0
- package/dist/core/BudgetReadout.js +79 -0
- package/dist/core/BudgetReadout.js.map +1 -0
- package/dist/core/ChannelWrite.d.ts +28 -9
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +28 -21
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +11 -10
- package/dist/core/CoreSchemeServices.d.ts +10 -4
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +7 -1
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +29 -20
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +1488 -599
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/DurableStatement.d.ts +6 -0
- package/dist/core/DurableStatement.d.ts.map +1 -0
- package/dist/core/DurableStatement.js +51 -0
- package/dist/core/DurableStatement.js.map +1 -0
- package/dist/core/Engine.d.ts +48 -20
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +1208 -789
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +309 -217
- package/dist/core/EnvFlags.js +1 -1
- package/dist/core/EnvFlags.js.map +1 -1
- package/dist/core/ErrorDetail.d.ts +6 -0
- package/dist/core/ErrorDetail.d.ts.map +1 -0
- package/dist/core/ErrorDetail.js +20 -0
- package/dist/core/ErrorDetail.js.map +1 -0
- package/dist/core/ExecutorRegistry.d.ts +14 -3
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +56 -30
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/GitBranch.d.ts +20 -0
- package/dist/core/GitBranch.d.ts.map +1 -0
- package/dist/core/GitBranch.js +110 -0
- package/dist/core/GitBranch.js.map +1 -0
- package/dist/core/JournalTurn.d.ts +9 -0
- package/dist/core/JournalTurn.d.ts.map +1 -0
- package/dist/core/JournalTurn.js +14 -0
- package/dist/core/JournalTurn.js.map +1 -0
- package/dist/core/JournalTurn.sql +10 -0
- package/dist/core/LogBody.d.ts +17 -0
- package/dist/core/LogBody.d.ts.map +1 -0
- package/dist/core/LogBody.js +148 -0
- package/dist/core/LogBody.js.map +1 -0
- package/dist/core/LoopFlagsReader.d.ts +7 -0
- package/dist/core/LoopFlagsReader.d.ts.map +1 -0
- package/dist/core/LoopFlagsReader.js +33 -0
- package/dist/core/LoopFlagsReader.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +8 -1
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +55 -9
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +9 -3
- package/dist/core/NoticeChannel.d.ts +13 -0
- package/dist/core/NoticeChannel.d.ts.map +1 -0
- package/dist/core/NoticeChannel.js +40 -0
- package/dist/core/NoticeChannel.js.map +1 -0
- package/dist/core/Owner.d.ts +0 -1
- package/dist/core/Owner.d.ts.map +1 -1
- package/dist/core/Owner.js +2 -5
- package/dist/core/Owner.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +25 -24
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +313 -375
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ProblemLog.d.ts +26 -0
- package/dist/core/ProblemLog.d.ts.map +1 -0
- package/dist/core/ProblemLog.js +58 -0
- package/dist/core/ProblemLog.js.map +1 -0
- package/dist/core/ProposalLifecycle.d.ts +15 -21
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +291 -78
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +51 -48
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +14 -8
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +189 -114
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ServiceTeardown.d.ts +11 -0
- package/dist/core/ServiceTeardown.d.ts.map +1 -0
- package/dist/core/ServiceTeardown.js +70 -0
- package/dist/core/ServiceTeardown.js.map +1 -0
- package/dist/core/StoredPacket.d.ts +29 -0
- package/dist/core/StoredPacket.d.ts.map +1 -0
- package/dist/core/StoredPacket.js +147 -0
- package/dist/core/StoredPacket.js.map +1 -0
- package/dist/core/StrikeRail.d.ts +1 -2
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +25 -55
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/WorkerControlAddress.d.ts +17 -0
- package/dist/core/WorkerControlAddress.d.ts.map +1 -0
- package/dist/core/WorkerControlAddress.js +44 -0
- package/dist/core/WorkerControlAddress.js.map +1 -0
- package/dist/core/WorkerName.d.ts +31 -0
- package/dist/core/WorkerName.d.ts.map +1 -0
- package/dist/core/WorkerName.js +95 -0
- package/dist/core/WorkerName.js.map +1 -0
- package/dist/core/WorkerName.sql +36 -0
- package/dist/core/WorkspaceGate.d.ts +14 -0
- package/dist/core/WorkspaceGate.d.ts.map +1 -0
- package/dist/core/WorkspaceGate.js +155 -0
- package/dist/core/WorkspaceGate.js.map +1 -0
- package/dist/core/caps/CapsResolve.d.ts +1 -1
- package/dist/core/caps/CapsResolve.d.ts.map +1 -1
- package/dist/core/caps/CapsResolve.js.map +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts +5 -11
- package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
- package/dist/core/caps/DbChannelCaps.js +24 -8
- package/dist/core/caps/DbChannelCaps.js.map +1 -1
- package/dist/core/caps/DbEntryCaps.d.ts +4 -13
- package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
- package/dist/core/caps/DbEntryCaps.js +15 -6
- 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 +12 -11
- package/dist/core/caps/DbNotifyCaps.js.map +1 -1
- package/dist/core/caps/DbProjectionCaps.d.ts +5 -5
- package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbProjectionCaps.js +21 -4
- package/dist/core/caps/DbProjectionCaps.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -4
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +57 -62
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/DbTagCaps.d.ts +5 -12
- package/dist/core/caps/DbTagCaps.d.ts.map +1 -1
- package/dist/core/caps/DbTagCaps.js +14 -7
- package/dist/core/caps/DbTagCaps.js.map +1 -1
- package/dist/core/content-hash.js +1 -1
- package/dist/core/content-hash.js.map +1 -1
- package/dist/core/env-defaults.d.ts.map +1 -1
- package/dist/core/env-defaults.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +55 -30
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +41 -27
- package/dist/core/git-env.d.ts +2 -0
- package/dist/core/git-env.d.ts.map +1 -1
- package/dist/core/git-env.js +13 -18
- package/dist/core/git-env.js.map +1 -1
- package/dist/core/git-iso.d.ts.map +1 -1
- package/dist/core/git-iso.js +9 -15
- package/dist/core/git-iso.js.map +1 -1
- package/dist/core/git-membership.d.ts +1 -1
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +198 -146
- 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 +10 -11
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/owner.sql +1 -1
- package/dist/core/packet-inject.d.ts.map +1 -1
- package/dist/core/packet-inject.js +7 -11
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts +2 -20
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +242 -368
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +12 -1
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +49 -29
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/results.d.ts +16 -5
- package/dist/core/results.d.ts.map +1 -1
- package/dist/core/results.js +27 -18
- package/dist/core/results.js.map +1 -1
- package/dist/core/ruler_count.d.ts +4 -0
- package/dist/core/ruler_count.d.ts.map +1 -0
- package/dist/core/ruler_count.js +7 -0
- package/dist/core/ruler_count.js.map +1 -0
- package/dist/core/scheme-types.d.ts +9 -11
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/core/search-gate.d.ts.map +1 -1
- package/dist/core/search-gate.js +3 -11
- package/dist/core/search-gate.js.map +1 -1
- package/dist/core/teaching-corpus.d.ts +6 -0
- package/dist/core/teaching-corpus.d.ts.map +1 -0
- package/dist/core/teaching-corpus.js +23 -0
- package/dist/core/teaching-corpus.js.map +1 -0
- package/dist/core/teaching.d.ts +0 -1
- package/dist/core/teaching.d.ts.map +1 -1
- package/dist/core/teaching.js +2 -8
- package/dist/core/teaching.js.map +1 -1
- package/dist/core/token-ruler.d.ts.map +1 -1
- package/dist/core/token-ruler.js +3 -16
- package/dist/core/token-ruler.js.map +1 -1
- package/dist/core/turn-scheduler.d.ts +1 -1
- package/dist/core/turn-scheduler.d.ts.map +1 -1
- package/dist/core/turn-scheduler.js +1 -1
- package/dist/core/turn-scheduler.js.map +1 -1
- package/dist/core/worker-cap.d.ts +2 -4
- package/dist/core/worker-cap.d.ts.map +1 -1
- package/dist/core/worker-cap.js +13 -4
- package/dist/core/worker-cap.js.map +1 -1
- package/dist/core/{run-ops.sql → worker-ops.sql} +11 -11
- package/dist/core/workspace-settings.d.ts.map +1 -1
- package/dist/core/workspace-settings.js +17 -9
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts +2 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +337 -138
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/digest.sql +19 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/matrix/live-specimen.d.ts +9 -0
- package/dist/matrix/live-specimen.d.ts.map +1 -0
- package/dist/matrix/live-specimen.js +37 -0
- package/dist/matrix/live-specimen.js.map +1 -0
- package/dist/observe/api.d.ts +6 -0
- package/dist/observe/api.d.ts.map +1 -0
- package/dist/observe/api.js +11 -0
- package/dist/observe/api.js.map +1 -0
- package/dist/observe/init.d.ts +7 -0
- package/dist/observe/init.d.ts.map +1 -0
- package/dist/observe/init.js +159 -0
- package/dist/observe/init.js.map +1 -0
- package/dist/observe/metrics.d.ts +6 -0
- package/dist/observe/metrics.d.ts.map +1 -0
- package/dist/observe/metrics.js +15 -0
- package/dist/observe/metrics.js.map +1 -0
- package/dist/observe/spans.d.ts +4 -0
- package/dist/observe/spans.d.ts.map +1 -0
- package/dist/observe/spans.js +51 -0
- package/dist/observe/spans.js.map +1 -0
- package/dist/schemes/EffectPolicy.d.ts +1 -0
- package/dist/schemes/EffectPolicy.d.ts.map +1 -1
- package/dist/schemes/EffectPolicy.js +5 -2
- package/dist/schemes/EffectPolicy.js.map +1 -1
- package/dist/schemes/Exec.d.ts +6 -11
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +364 -247
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +8 -7
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +48 -9
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts +7 -11
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +279 -142
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +4 -8
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +475 -208
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +62 -30
- package/dist/schemes/Prompt.d.ts +3 -2
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +9 -6
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/Skill.d.ts +1 -1
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +2 -3
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts +8 -16
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +179 -69
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-chunk.d.ts.map +1 -1
- package/dist/schemes/_entry-chunk.js +12 -5
- package/dist/schemes/_entry-chunk.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +10 -9
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +59 -13
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +20 -8
- package/dist/schemes/_entry-find.d.ts +20 -15
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +339 -174
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +20 -8
- package/dist/schemes/_entry-graph.d.ts +4 -2
- package/dist/schemes/_entry-graph.d.ts.map +1 -1
- package/dist/schemes/_entry-graph.js +55 -31
- package/dist/schemes/_entry-graph.js.map +1 -1
- package/dist/schemes/_entry-graph.sql +37 -22
- package/dist/schemes/_entry-manifest.d.ts +10 -15
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +50 -268
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +9 -14
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +149 -77
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-ops.sql +1 -1
- package/dist/schemes/_entry-semantic.d.ts +23 -8
- package/dist/schemes/_entry-semantic.d.ts.map +1 -1
- package/dist/schemes/_entry-semantic.js +141 -60
- package/dist/schemes/_entry-semantic.js.map +1 -1
- package/dist/schemes/_entry-semantic.sql +63 -45
- package/dist/schemes/_entry-send.d.ts +3 -4
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +48 -23
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/schemes/_path-scope.d.ts +23 -0
- package/dist/schemes/_path-scope.d.ts.map +1 -0
- package/dist/schemes/_path-scope.js +61 -0
- package/dist/schemes/_path-scope.js.map +1 -0
- package/dist/schemes/_search-candidate.d.ts +20 -0
- package/dist/schemes/_search-candidate.d.ts.map +1 -0
- package/dist/schemes/_search-candidate.js +19 -0
- package/dist/schemes/_search-candidate.js.map +1 -0
- package/dist/schemes/_search-exclusion.d.ts +7 -0
- package/dist/schemes/_search-exclusion.d.ts.map +1 -0
- package/dist/schemes/_search-exclusion.js +23 -0
- package/dist/schemes/_search-exclusion.js.map +1 -0
- package/dist/schemes/_search-index.d.ts +6 -0
- package/dist/schemes/_search-index.d.ts.map +1 -0
- package/dist/schemes/_search-index.js +326 -0
- package/dist/schemes/_search-index.js.map +1 -0
- package/dist/schemes/cosine.js +1 -1
- package/dist/schemes/cosine.js.map +1 -1
- package/dist/schemes/exec-abort.js +3 -3
- package/dist/schemes/exec-abort.js.map +1 -1
- package/dist/schemes/exec-env.js +3 -3
- package/dist/schemes/exec-env.js.map +1 -1
- package/dist/server/BranchBatches.d.ts +48 -0
- package/dist/server/BranchBatches.d.ts.map +1 -0
- package/dist/server/BranchBatches.js +591 -0
- package/dist/server/BranchBatches.js.map +1 -0
- package/dist/server/Daemon.d.ts +36 -66
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +920 -446
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +31 -0
- package/dist/server/DaemonModule.d.ts.map +1 -0
- package/dist/server/DaemonModule.js +2 -0
- package/dist/server/DaemonModule.js.map +1 -0
- package/dist/server/branch-batch.sql +152 -0
- package/dist/server/client-input.d.ts +12 -0
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +262 -57
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +15 -7
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +92 -62
- package/dist/server/envelope.d.ts +2 -5
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +119 -95
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +19 -23
- package/dist/server/exec-poll-backoff.js +1 -1
- package/dist/server/exec-poll-backoff.js.map +1 -1
- package/dist/server/lifecycle-recovery.sql +79 -2
- package/dist/server/logEntry.d.ts +3 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +4 -2
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +1 -1
- package/dist/server/loop-model.d.ts.map +1 -1
- package/dist/server/loop-model.js +22 -9
- package/dist/server/loop-model.js.map +1 -1
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +5 -4
- package/dist/server/loopDocs.js.map +1 -1
- package/dist/server/seam-entry-read.sql +15 -10
- package/dist/server/seam-log-read.sql +2 -2
- package/dist/server/seam-loop.sql +1 -1
- package/dist/server/seam-proposal-list.sql +17 -7
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +66 -60
- package/dist/service.js.map +1 -1
- package/migrations/001_schema.sql +897 -0
- package/package.json +57 -26
- package/dist/core/PluginLoader.d.ts +0 -20
- package/dist/core/PluginLoader.d.ts.map +0 -1
- package/dist/core/PluginLoader.js +0 -142
- package/dist/core/PluginLoader.js.map +0 -1
- package/dist/core/TelemetryChannel.d.ts +0 -37
- package/dist/core/TelemetryChannel.d.ts.map +0 -1
- package/dist/core/TelemetryChannel.js +0 -80
- package/dist/core/TelemetryChannel.js.map +0 -1
- package/dist/core/path-decode.d.ts +0 -3
- package/dist/core/path-decode.d.ts.map +0 -1
- package/dist/core/path-decode.js +0 -9
- package/dist/core/path-decode.js.map +0 -1
- package/dist/core/plugin-attribution.d.ts +0 -5
- package/dist/core/plugin-attribution.d.ts.map +0 -1
- package/dist/core/plugin-attribution.js +0 -39
- package/dist/core/plugin-attribution.js.map +0 -1
- package/dist/core/world-state.d.ts +0 -10
- package/dist/core/world-state.d.ts.map +0 -1
- package/dist/core/world-state.js +0 -35
- package/dist/core/world-state.js.map +0 -1
- package/dist/core/world-state.sql +0 -35
- package/dist/core/zero-pin.d.ts +0 -3
- package/dist/core/zero-pin.d.ts.map +0 -1
- package/dist/core/zero-pin.js +0 -16
- package/dist/core/zero-pin.js.map +0 -1
- package/dist/server/auto.d.ts +0 -6
- package/dist/server/auto.d.ts.map +0 -1
- package/dist/server/auto.js +0 -63
- package/dist/server/auto.js.map +0 -1
- package/dist/server/clientTurn.d.ts +0 -6
- package/dist/server/clientTurn.d.ts.map +0 -1
- package/dist/server/clientTurn.js +0 -22
- package/dist/server/clientTurn.js.map +0 -1
- package/dist/server/clientTurn.sql +0 -10
- package/dist/server/noProposals.d.ts +0 -6
- package/dist/server/noProposals.d.ts.map +0 -1
- package/dist/server/noProposals.js +0 -37
- package/dist/server/noProposals.js.map +0 -1
- package/dist/server/version-info.d.ts +0 -14
- package/dist/server/version-info.d.ts.map +0 -1
- package/dist/server/version-info.js +0 -69
- package/dist/server/version-info.js.map +0 -1
- package/migrations/0000-00-00.01_schema.sql +0 -536
- package/migrations/0004_loop-provider.sql +0 -3
- package/migrations/0005_subscription-published-channel.sql +0 -3
- package/migrations/0006_loop-max-turns.sql +0 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { assertEditReceipt, assertResourceEffects, } from "../content/index.js";
|
|
2
|
+
const EMPTY_BODY = Object.freeze({
|
|
3
|
+
content: "",
|
|
4
|
+
mimetype: "text/plain",
|
|
5
|
+
startLine: 1,
|
|
6
|
+
});
|
|
7
|
+
// The durable log row has one canonical body regardless of how it is consumed.
|
|
8
|
+
// Packet rendering projects this body, while READ(log://), FIND(log://), and
|
|
9
|
+
// search derivation consume it complete. Storage envelopes and tx/rx placement
|
|
10
|
+
// are persistence details and must not change what the row means.
|
|
11
|
+
export default class LogBody {
|
|
12
|
+
static #decode(value, mimetype) {
|
|
13
|
+
if (typeof value !== "string" || mimetype !== "application/json")
|
|
14
|
+
return value;
|
|
15
|
+
try {
|
|
16
|
+
return JSON.parse(value);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
static #contentBody(value, fallbackMimetype) {
|
|
23
|
+
if (value === null || typeof value !== "object")
|
|
24
|
+
return null;
|
|
25
|
+
const body = value;
|
|
26
|
+
if (typeof body.content !== "string")
|
|
27
|
+
return null;
|
|
28
|
+
return {
|
|
29
|
+
content: body.content,
|
|
30
|
+
mimetype: typeof body.mimetype === "string" ? body.mimetype : (fallbackMimetype ?? "text/plain"),
|
|
31
|
+
startLine: body.startLine === null ? null : (typeof body.startLine === "number" ? body.startLine : 1),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
static #receiptBody(receipts) {
|
|
35
|
+
// {§edit-result-receipt-projection} — the canonical row body is the
|
|
36
|
+
// bounded landed context, not the authored mutation text.
|
|
37
|
+
if (receipts.length === 0)
|
|
38
|
+
return EMPTY_BODY;
|
|
39
|
+
return {
|
|
40
|
+
content: receipts
|
|
41
|
+
.map((receipt) => "effect" in receipt
|
|
42
|
+
? receipt.effect.context
|
|
43
|
+
: receipt.replacement?.context ?? "")
|
|
44
|
+
.filter((context) => context.length > 0)
|
|
45
|
+
.join("\n\n"),
|
|
46
|
+
mimetype: "text/plain",
|
|
47
|
+
startLine: null,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
static resolve(row) {
|
|
51
|
+
const tx = LogBody.#decode(row.tx, row.mimetypeTx);
|
|
52
|
+
const rx = LogBody.#decode(row.rx, row.mimetypeRx);
|
|
53
|
+
const contentBody = LogBody.#contentBody(rx, row.mimetypeRx);
|
|
54
|
+
if (row.op === "READ" || row.op === "FIND" || row.op === "model" || row.op === "prompt") {
|
|
55
|
+
return contentBody ?? EMPTY_BODY;
|
|
56
|
+
}
|
|
57
|
+
if (row.op === "EDIT") {
|
|
58
|
+
if (rx !== null && typeof rx === "object") {
|
|
59
|
+
const result = rx;
|
|
60
|
+
if (Object.hasOwn(result, "receipt")) {
|
|
61
|
+
return LogBody.#receiptBody([
|
|
62
|
+
assertEditReceipt(result.receipt),
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
if (typeof result.span === "string") {
|
|
66
|
+
return {
|
|
67
|
+
content: result.span,
|
|
68
|
+
mimetype: "text/plain",
|
|
69
|
+
startLine: null,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return EMPTY_BODY;
|
|
74
|
+
}
|
|
75
|
+
if (row.op === "COPY" || row.op === "MOVE") {
|
|
76
|
+
if (rx !== null && typeof rx === "object") {
|
|
77
|
+
const result = rx;
|
|
78
|
+
if (Object.hasOwn(result, "effects")) {
|
|
79
|
+
const receipts = assertResourceEffects(result.effects)
|
|
80
|
+
.flatMap(({ receipt }) => receipt === undefined ? [] : [receipt]);
|
|
81
|
+
return LogBody.#receiptBody(receipts);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return EMPTY_BODY;
|
|
85
|
+
}
|
|
86
|
+
if (row.op === "EXEC" && tx !== null && typeof tx === "object") {
|
|
87
|
+
const body = tx.body;
|
|
88
|
+
if (typeof body === "string") {
|
|
89
|
+
return {
|
|
90
|
+
content: body,
|
|
91
|
+
mimetype: "text/plain",
|
|
92
|
+
startLine: 1,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (row.op === "PLAN" || row.op === "SEND" || row.op === "WORK" || row.op === "FORK") {
|
|
97
|
+
if (tx !== null && typeof tx === "object") {
|
|
98
|
+
const body = tx.body;
|
|
99
|
+
const content = typeof body === "string"
|
|
100
|
+
? body
|
|
101
|
+
: body !== null && typeof body === "object" && typeof body.raw === "string"
|
|
102
|
+
? body.raw
|
|
103
|
+
: "";
|
|
104
|
+
if (content.length > 0) {
|
|
105
|
+
return {
|
|
106
|
+
content,
|
|
107
|
+
mimetype: "text/plain",
|
|
108
|
+
startLine: 1,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (row.op === "SEND" && typeof rx === "string" && rx.length > 0) {
|
|
113
|
+
return {
|
|
114
|
+
content: rx,
|
|
115
|
+
mimetype: row.mimetypeRx ?? "text/plain",
|
|
116
|
+
startLine: 1,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (row.op === "error" && rx !== null && typeof rx === "object") {
|
|
121
|
+
const message = rx.message;
|
|
122
|
+
if (typeof message === "string" && message.length > 0) {
|
|
123
|
+
return {
|
|
124
|
+
content: message,
|
|
125
|
+
mimetype: "text/plain",
|
|
126
|
+
startLine: 1,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Extension rows use the same durable result/statement envelopes as
|
|
131
|
+
// built-in operations. Keep the fallback structural so a new producer
|
|
132
|
+
// cannot require a packet-renderer branch merely to expose its body.
|
|
133
|
+
if (contentBody !== null)
|
|
134
|
+
return contentBody;
|
|
135
|
+
if (tx !== null && typeof tx === "object") {
|
|
136
|
+
const body = tx.body;
|
|
137
|
+
if (typeof body === "string" && body.length > 0) {
|
|
138
|
+
return {
|
|
139
|
+
content: body,
|
|
140
|
+
mimetype: row.mimetypeTx ?? "text/plain",
|
|
141
|
+
startLine: 1,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return EMPTY_BODY;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=LogBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogBody.js","sourceRoot":"","sources":["../../src/core/LogBody.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,qBAAqB,GAExB,MAAM,qBAAqB,CAAC;AAgB7B,MAAM,UAAU,GAAoB,MAAM,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,CAAC;CACf,CAAC,CAAC;AAEH,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,kEAAkE;AAClE,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,MAAM,CAAC,OAAO,CAAC,KAAc,EAAE,QAA4B;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAC;QAC/E,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAc,EAAE,gBAAoC;QACpE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC7D,MAAM,IAAI,GAAG,KAAuE,CAAC;QACrF,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,YAAY,CAAC;YAChG,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACxG,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgC;QAChD,oEAAoE;QACpE,0DAA0D;QAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QAC7C,OAAO;YACH,OAAO,EAAE,QAAQ;iBACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,IAAI,OAAO;gBACjC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;gBACxB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;iBACxC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;iBACvC,IAAI,CAAC,MAAM,CAAC;YACjB,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,IAAI;SAClB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAe;QAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACtF,OAAO,WAAW,IAAI,UAAU,CAAC;QACrC,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,EAA6B,CAAC;gBAC7C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;oBACnC,OAAO,OAAO,CAAC,YAAY,CAAC;wBACxB,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;qBACpC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClC,OAAO;wBACH,OAAO,EAAE,MAAM,CAAC,IAAI;wBACpB,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,IAAI;qBAClB,CAAC;gBACN,CAAC;YACL,CAAC;YACD,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACzC,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,EAA6B,CAAC;gBAC7C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC;yBACjD,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACtE,OAAO,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;YACD,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAI,EAAyB,CAAC,IAAI,CAAC;YAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,YAAY;oBACtB,SAAS,EAAE,CAAC;iBACf,CAAC;YACN,CAAC;QACL,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACnF,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAI,EAAyB,CAAC,IAAI,CAAC;gBAC7C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ;oBACpC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAA0B,CAAC,GAAG,KAAK,QAAQ;wBAC9F,CAAC,CAAE,IAAwB,CAAC,GAAG;wBAC/B,CAAC,CAAC,EAAE,CAAC;gBACb,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO;wBACH,OAAO;wBACP,QAAQ,EAAE,YAAY;wBACtB,SAAS,EAAE,CAAC;qBACf,CAAC;gBACN,CAAC;YACL,CAAC;YACD,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/D,OAAO;oBACH,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,GAAG,CAAC,UAAU,IAAI,YAAY;oBACxC,SAAS,EAAE,CAAC;iBACf,CAAC;YACN,CAAC;QACL,CAAC;QAED,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAI,EAA4B,CAAC,OAAO,CAAC;YACtD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,OAAO;oBACH,OAAO,EAAE,OAAO;oBAChB,QAAQ,EAAE,YAAY;oBACtB,SAAS,EAAE,CAAC;iBACf,CAAC;YACN,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC;QAC7C,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,GAAI,EAAyB,CAAC,IAAI,CAAC;YAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,GAAG,CAAC,UAAU,IAAI,YAAY;oBACxC,SAAS,EAAE,CAAC;iBACf,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type LoopFlags } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { Db } from "./Db.ts";
|
|
3
|
+
export default class LoopFlagsReader {
|
|
4
|
+
static parse(raw: string, loopId: number): LoopFlags;
|
|
5
|
+
static read(db: Db, loopId: number): Promise<LoopFlags>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=LoopFlagsReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoopFlagsReader.d.ts","sourceRoot":"","sources":["../../src/core/LoopFlagsReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,SAAS,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAmBnD;IAED,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM5D;CACJ"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DEFAULT_LOOP_FLAGS, Validator, } from "@plurnk/plurnk-contracts";
|
|
2
|
+
// {§loop-flags-effective-read} — persistence may contain a partial object, but
|
|
3
|
+
// runtime policy is always the complete contracts-owned shape.
|
|
4
|
+
export default class LoopFlagsReader {
|
|
5
|
+
static parse(raw, loopId) {
|
|
6
|
+
let partial;
|
|
7
|
+
try {
|
|
8
|
+
partial = JSON.parse(raw);
|
|
9
|
+
}
|
|
10
|
+
catch (cause) {
|
|
11
|
+
throw new Error(`Loop ${loopId} has invalid persisted flags JSON.`, { cause });
|
|
12
|
+
}
|
|
13
|
+
if (partial === null || typeof partial !== "object" || Array.isArray(partial)) {
|
|
14
|
+
throw new Error(`Loop ${loopId} has invalid persisted flags.`, {
|
|
15
|
+
cause: new TypeError("Persisted loop flags must be a JSON object."),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
return Validator.assertLoopFlags({ ...DEFAULT_LOOP_FLAGS, ...partial });
|
|
20
|
+
}
|
|
21
|
+
catch (cause) {
|
|
22
|
+
throw new Error(`Loop ${loopId} has invalid persisted flags.`, { cause });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
static async read(db, loopId) {
|
|
26
|
+
const row = await db.engine_get_loop_flags.get({ loop_id: loopId });
|
|
27
|
+
if (row === undefined) {
|
|
28
|
+
throw new Error(`Loop ${loopId} does not exist while reading its persisted flags.`);
|
|
29
|
+
}
|
|
30
|
+
return LoopFlagsReader.parse(row.flags, loopId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=LoopFlagsReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoopFlagsReader.js","sourceRoot":"","sources":["../../src/core/LoopFlagsReader.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,SAAS,GAEZ,MAAM,0BAA0B,CAAC;AAGlC,+EAA+E;AAC/E,+DAA+D;AAC/D,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,MAAc;QACpC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,+BAA+B,EAAE;gBAC3D,KAAK,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;aACtE,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC;YACD,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,EAAe,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,+BAA+B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAM,EAAE,MAAc;QACpC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,oDAAoD,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CACJ"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Db } from "./Db.ts";
|
|
2
|
+
import { type SchemeResult } from "./results.ts";
|
|
2
3
|
export interface CancelledLoop {
|
|
3
4
|
loopId: number;
|
|
4
5
|
workerId: number;
|
|
6
|
+
result: SchemeResult;
|
|
5
7
|
}
|
|
6
8
|
export interface CancelledTree {
|
|
7
9
|
workerIds: number[];
|
|
@@ -10,10 +12,15 @@ export interface CancelledTree {
|
|
|
10
12
|
export default class LoopLifecycle {
|
|
11
13
|
#private;
|
|
12
14
|
constructor(db: Db);
|
|
15
|
+
static projectStatus(status: number): number;
|
|
13
16
|
park(loopId: number, message: string): Promise<boolean>;
|
|
14
17
|
wake(loopId: number): Promise<boolean>;
|
|
15
|
-
finish(loopId: number,
|
|
18
|
+
finish(loopId: number, result: SchemeResult, options?: {
|
|
19
|
+
message?: string | null;
|
|
20
|
+
terminatedBy?: "cancel" | null;
|
|
21
|
+
}): Promise<SchemeResult | null>;
|
|
16
22
|
status(loopId: number): Promise<number>;
|
|
23
|
+
result(loopId: number): Promise<SchemeResult | null>;
|
|
17
24
|
turnIds(loopId: number): Promise<number[]>;
|
|
18
25
|
cancelTree(workerId: number, reason: string, includeRoot: boolean): Promise<CancelledTree>;
|
|
19
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoopLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"LoopLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAG9B,YAAY,EAAE,EAAE,EAAE,EAEjB;IAMD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3C;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK5D;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI3C;IAEK,MAAM,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAO,GAC1E,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAc9B;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5C;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQzD;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAK/C;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAoC/F;CACJ"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
|
+
import Results from "./results.js";
|
|
2
|
+
import ErrorDetail from "./ErrorDetail.js";
|
|
1
3
|
export default class LoopLifecycle {
|
|
2
4
|
#db;
|
|
3
5
|
constructor(db) {
|
|
4
6
|
this.#db = db;
|
|
5
7
|
}
|
|
8
|
+
// `loops.status` is the compact scheduler state inherited by the schema;
|
|
9
|
+
// terminal_result is the lossless product result. Preserve the established
|
|
10
|
+
// terminal classes relationally while retaining an exact uncommon status
|
|
11
|
+
// (for example a provider 502) in terminal_result.
|
|
12
|
+
static projectStatus(status) {
|
|
13
|
+
if (status === 202) {
|
|
14
|
+
throw new TypeError("loop terminal result cannot be 202; 202 is the parked lifecycle state");
|
|
15
|
+
}
|
|
16
|
+
if ([200, 413, 429, 499, 500, 504, 508].includes(status))
|
|
17
|
+
return status;
|
|
18
|
+
if (status >= 200 && status <= 399)
|
|
19
|
+
return 200;
|
|
20
|
+
if (status >= 400 && status <= 599)
|
|
21
|
+
return 500;
|
|
22
|
+
throw new TypeError(`loop terminal result must have status 200 through 599; got ${status}`);
|
|
23
|
+
}
|
|
6
24
|
async park(loopId, message) {
|
|
7
25
|
return (await this.#db.lifecycle_park_loop.get({
|
|
8
26
|
loop_id: loopId,
|
|
@@ -14,13 +32,21 @@ export default class LoopLifecycle {
|
|
|
14
32
|
loop_id: loopId,
|
|
15
33
|
})) !== undefined;
|
|
16
34
|
}
|
|
17
|
-
async finish(loopId,
|
|
18
|
-
|
|
35
|
+
async finish(loopId, result, options = {}) {
|
|
36
|
+
const exact = structuredClone(Results.assert(result));
|
|
37
|
+
if (exact.problem !== undefined && exact.problem.instance === undefined) {
|
|
38
|
+
Results.attachInstance(exact, `loop:///${loopId}`);
|
|
39
|
+
}
|
|
40
|
+
const row = await this.#db.lifecycle_finish_loop.get({
|
|
19
41
|
loop_id: loopId,
|
|
20
|
-
status,
|
|
21
|
-
message,
|
|
22
|
-
|
|
23
|
-
|
|
42
|
+
status: LoopLifecycle.projectStatus(exact.status),
|
|
43
|
+
message: exact.problem?.detail ?? options.message ?? null,
|
|
44
|
+
result: JSON.stringify(exact),
|
|
45
|
+
terminated_by: options.terminatedBy ?? null,
|
|
46
|
+
});
|
|
47
|
+
if (row === undefined)
|
|
48
|
+
return null;
|
|
49
|
+
return Results.assert(JSON.parse(row.terminal_result));
|
|
24
50
|
}
|
|
25
51
|
async status(loopId) {
|
|
26
52
|
const row = await this.#db.lifecycle_loop_status.get({
|
|
@@ -30,6 +56,16 @@ export default class LoopLifecycle {
|
|
|
30
56
|
throw new Error(`loop ${loopId} does not exist`);
|
|
31
57
|
return row.status;
|
|
32
58
|
}
|
|
59
|
+
async result(loopId) {
|
|
60
|
+
const row = await this.#db.lifecycle_loop_status.get({
|
|
61
|
+
loop_id: loopId,
|
|
62
|
+
});
|
|
63
|
+
if (row === undefined)
|
|
64
|
+
throw new Error(`loop ${loopId} does not exist`);
|
|
65
|
+
return row.terminal_result === null
|
|
66
|
+
? null
|
|
67
|
+
: Results.assert(JSON.parse(row.terminal_result));
|
|
68
|
+
}
|
|
33
69
|
async turnIds(loopId) {
|
|
34
70
|
const rows = await this.#db.lifecycle_loop_turns.all({
|
|
35
71
|
loop_id: loopId,
|
|
@@ -37,19 +73,29 @@ export default class LoopLifecycle {
|
|
|
37
73
|
return rows.map(({ id }) => id);
|
|
38
74
|
}
|
|
39
75
|
async cancelTree(workerId, reason, includeRoot) {
|
|
76
|
+
const boundedReason = ErrorDetail.preview(reason) || "no reason was supplied";
|
|
40
77
|
const params = {
|
|
41
78
|
worker_id: workerId,
|
|
42
79
|
include_root: includeRoot ? 1 : 0,
|
|
43
|
-
message:
|
|
80
|
+
message: boundedReason,
|
|
44
81
|
};
|
|
45
82
|
const workers = await this.#db.lifecycle_worker_tree.all({
|
|
46
83
|
worker_id: params.worker_id,
|
|
47
84
|
include_root: params.include_root,
|
|
48
85
|
});
|
|
49
|
-
const
|
|
86
|
+
const cancellation = Results.failure("lifecycle:cancel", "scope-cancelled", 499, `The worker scope was cancelled: ${boundedReason}.`, {}, {
|
|
87
|
+
reason: boundedReason,
|
|
88
|
+
stage: "loop",
|
|
89
|
+
retryable: false,
|
|
90
|
+
});
|
|
91
|
+
const loops = await this.#db.lifecycle_cancel_worker_tree.all({ ...params, result: JSON.stringify(cancellation) });
|
|
50
92
|
return {
|
|
51
93
|
workerIds: workers.map(({ worker_id }) => worker_id),
|
|
52
|
-
loops: loops.map(({ loop_id, worker_id }) => ({
|
|
94
|
+
loops: loops.map(({ loop_id, worker_id, terminal_result }) => ({
|
|
95
|
+
loopId: loop_id,
|
|
96
|
+
workerId: worker_id,
|
|
97
|
+
result: Results.assert(JSON.parse(terminal_result)),
|
|
98
|
+
})),
|
|
53
99
|
};
|
|
54
100
|
}
|
|
55
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,12 +18,13 @@ RETURNING id;
|
|
|
18
18
|
UPDATE loops
|
|
19
19
|
SET status = $status,
|
|
20
20
|
terminal_message = $message,
|
|
21
|
+
terminal_result = $result,
|
|
21
22
|
terminated_by = $terminated_by
|
|
22
23
|
WHERE id = $loop_id AND status IN (100, 102, 202)
|
|
23
|
-
RETURNING
|
|
24
|
+
RETURNING terminal_result;
|
|
24
25
|
|
|
25
26
|
-- PREP: lifecycle_loop_status
|
|
26
|
-
SELECT status FROM loops WHERE id = $loop_id;
|
|
27
|
+
SELECT status, terminal_result FROM loops WHERE id = $loop_id;
|
|
27
28
|
|
|
28
29
|
-- PREP: lifecycle_loop_turns
|
|
29
30
|
SELECT id FROM turns WHERE loop_id = $loop_id ORDER BY sequence, id;
|
|
@@ -52,9 +53,14 @@ WITH RECURSIVE tree(id) AS (
|
|
|
52
53
|
UPDATE loops
|
|
53
54
|
SET status = 499,
|
|
54
55
|
terminal_message = $message,
|
|
56
|
+
terminal_result = json_set(
|
|
57
|
+
$result,
|
|
58
|
+
'$.problem.instance',
|
|
59
|
+
'loop:///' || id
|
|
60
|
+
),
|
|
55
61
|
terminated_by = 'cancel'
|
|
56
62
|
WHERE worker_id IN (
|
|
57
63
|
SELECT id FROM tree WHERE $include_root = 1 OR id <> $worker_id
|
|
58
64
|
)
|
|
59
65
|
AND status IN (100, 102, 202)
|
|
60
|
-
RETURNING id AS loop_id, worker_id;
|
|
66
|
+
RETURNING id AS loop_id, worker_id, terminal_result;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Notice } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { NoticeNotify } from "./ChannelWrite.ts";
|
|
3
|
+
export default class NoticeChannel {
|
|
4
|
+
#private;
|
|
5
|
+
constructor({ notify }?: {
|
|
6
|
+
notify?: NoticeNotify;
|
|
7
|
+
});
|
|
8
|
+
push(workspaceId: number, loopId: number, notice: Notice): void;
|
|
9
|
+
notify(workspaceId: number, loopId: number, notice: Notice): void;
|
|
10
|
+
drain(loopId: number): Notice[];
|
|
11
|
+
delete(loopId: number): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=NoticeChannel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoticeChannel.d.ts","sourceRoot":"","sources":["../../src/core/NoticeChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAI9B,YAAY,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,YAAY,CAAA;KAAO,EAErD;IAED,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM9D;IAID,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGhE;IAGD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK9B;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3B;CAKJ"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Validator } from "@plurnk/plurnk-contracts";
|
|
2
|
+
// The transient notice channel. Durable operation failures live in log_entries as
|
|
3
|
+
// RFC 9457 Problem Details; this buffer carries progress and diagnostic events only.
|
|
4
|
+
export default class NoticeChannel {
|
|
5
|
+
#buffer = new Map();
|
|
6
|
+
#notify;
|
|
7
|
+
constructor({ notify } = {}) {
|
|
8
|
+
this.#notify = notify;
|
|
9
|
+
}
|
|
10
|
+
push(workspaceId, loopId, notice) {
|
|
11
|
+
NoticeChannel.#assert(notice);
|
|
12
|
+
const existing = this.#buffer.get(loopId);
|
|
13
|
+
if (existing === undefined)
|
|
14
|
+
this.#buffer.set(loopId, [notice]);
|
|
15
|
+
else
|
|
16
|
+
existing.push(notice);
|
|
17
|
+
this.#notify?.(workspaceId, { loopId, notice });
|
|
18
|
+
}
|
|
19
|
+
// Live fan-out ONLY, never buffered — for work with no loop to drain the
|
|
20
|
+
// buffer (e.g. workspace-scope derivation warming, loopId 0).
|
|
21
|
+
notify(workspaceId, loopId, notice) {
|
|
22
|
+
NoticeChannel.#assert(notice);
|
|
23
|
+
this.#notify?.(workspaceId, { loopId, notice });
|
|
24
|
+
}
|
|
25
|
+
// Each observation surfaces in one model packet.
|
|
26
|
+
drain(loopId) {
|
|
27
|
+
const buf = this.#buffer.get(loopId);
|
|
28
|
+
if (buf === undefined)
|
|
29
|
+
return [];
|
|
30
|
+
this.#buffer.delete(loopId);
|
|
31
|
+
return buf;
|
|
32
|
+
}
|
|
33
|
+
delete(loopId) {
|
|
34
|
+
this.#buffer.delete(loopId);
|
|
35
|
+
}
|
|
36
|
+
static #assert(notice) {
|
|
37
|
+
Validator.assertNotice(notice);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=NoticeChannel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoticeChannel.js","sourceRoot":"","sources":["../../src/core/NoticeChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,0BAA0B,CAAC;AAGlE,kFAAkF;AAClF,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtC,OAAO,CAA2B;IAElC,YAAY,EAAE,MAAM,EAAE,GAA8B,EAAE;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;QACpD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;;YAC1D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,yEAAyE;IACzE,8DAA8D;IAC9D,MAAM,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;QACtD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,MAAc;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAc;QACzB,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CACJ"}
|
package/dist/core/Owner.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Db } from "./Db.ts";
|
|
2
2
|
import type { PlurnkSchemeContext } from "./scheme-types.ts";
|
|
3
3
|
export default class Owner {
|
|
4
|
-
static readonly RESERVED: Readonly<Set<string>>;
|
|
5
4
|
static commonsId(db: Db, workspaceId: number): Promise<number>;
|
|
6
5
|
static kernelId(db: Db, workspaceId: number): Promise<number>;
|
|
7
6
|
static resolveStreamOwner(hostname: string | null | undefined, ctx: PlurnkSchemeContext): Promise<number | null>;
|
package/dist/core/Owner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAO7D,MAAM,CAAC,OAAO,OAAO,KAAK;
|
|
1
|
+
{"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAO7D,MAAM,CAAC,OAAO,OAAO,KAAK;IAItB,OAAa,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMnE;IAGD,OAAa,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;IAOD,OAAa,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOrH;CACJ"}
|
package/dist/core/Owner.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
//
|
|
1
|
+
// {§entry-owner} — every entry is owned by a worker row: the workspace's
|
|
2
2
|
// reserved 'commons' worker for shared content, the spawning worker for capability streams. The
|
|
3
3
|
// owner id is a storage foreign key that NEVER renders into a URI or packet; the model addresses
|
|
4
4
|
// owners by NAME in the authority slot, and an empty authority resolves to the ambient principal
|
|
5
5
|
// (the caller on streams). 'plurnk' (the kernel) and 'commons' are the two reserved rows.
|
|
6
6
|
export default class Owner {
|
|
7
|
-
// Names no client- or model-supplied worker may take: the two reserved rows plus the
|
|
8
|
-
// self-sigil the #527 wave gives worker:// (reserving it now keeps the namespace clean).
|
|
9
|
-
static RESERVED = Object.freeze(new Set(["commons", "plurnk", "~", "self"])); // 'self' joins per grammar's canon — a worker named self would impersonate the ~ idiom
|
|
10
7
|
// The workspace's reserved commons worker — lazily ensured, one per workspace. A real row
|
|
11
8
|
// (never a NULL owner: NULLs are distinct under UNIQUE, so a nullable owner_id would let
|
|
12
9
|
// the shared-content identity fragment into duplicate colliding rows).
|
|
@@ -19,7 +16,7 @@ export default class Owner {
|
|
|
19
16
|
throw new Error("Owner.commonsId: commons worker insert returned no row");
|
|
20
17
|
return created.id;
|
|
21
18
|
}
|
|
22
|
-
// The reserved kernel row — worker://plurnk/, the runtime's own actor (§actor-boundary).
|
|
19
|
+
// The reserved kernel row — worker://plurnk/, the runtime's own actor ({§actor-boundary}).
|
|
23
20
|
static async kernelId(db, workspaceId) {
|
|
24
21
|
const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: "plurnk" });
|
|
25
22
|
if (existing !== undefined)
|
package/dist/core/Owner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Owner.js","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"Owner.js","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAGA,yEAAyE;AACzE,gGAAgG;AAChG,iGAAiG;AACjG,iGAAiG;AACjG,0FAA0F;AAC1F,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,0FAA0F;IAC1F,yFAAyF;IACzF,uEAAuE;IACvE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAM,EAAE,WAAmB;QAC9C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1H,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACrG,OAAO,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,2FAA2F;IAC3F,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAM,EAAE,WAAmB;QAC7C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrI,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACnG,OAAO,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,yFAAyF;IACzF,2FAA2F;IAC3F,wFAAwF;IACxF,yFAAyF;IACzF,kCAAkC;IAClC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAmC,EAAE,GAAwB;QACzF,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACxF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAwB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrI,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,CAAC;CACJ"}
|
|
@@ -1,37 +1,35 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Notice } from "@plurnk/plurnk-contracts";
|
|
2
2
|
import type { Db } from "./Db.ts";
|
|
3
3
|
import type SchemeRegistry from "./SchemeRegistry.ts";
|
|
4
4
|
import type ExecutorRegistry from "./ExecutorRegistry.ts";
|
|
5
|
-
import type
|
|
5
|
+
import type ProblemLog from "./ProblemLog.ts";
|
|
6
6
|
import type { GitStatus } from "./git-state.ts";
|
|
7
|
-
import {
|
|
8
|
-
import type { Provider } from "@plurnk/plurnk-providers";
|
|
9
|
-
export type ChatMessage
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
sections: PacketSection[];
|
|
21
|
-
telemetryErrors: object[];
|
|
7
|
+
import type { RequestPacket } from "./StoredPacket.ts";
|
|
8
|
+
import type { ChatMessage, PromptTokenMeasurement, Provider } from "@plurnk/plurnk-providers";
|
|
9
|
+
export type { ChatMessage } from "@plurnk/plurnk-providers";
|
|
10
|
+
export type PhysicalPromptAdmission = {
|
|
11
|
+
readonly admitted: true;
|
|
12
|
+
readonly capacity: number;
|
|
13
|
+
readonly measurement: PromptTokenMeasurement;
|
|
14
|
+
} | {
|
|
15
|
+
readonly admitted: false;
|
|
16
|
+
readonly reason: "unknown_context_window" | "unknown_output_envelope" | "estimate" | "over_capacity";
|
|
17
|
+
readonly detail: string;
|
|
18
|
+
readonly capacity: number | null;
|
|
19
|
+
readonly measurement?: PromptTokenMeasurement;
|
|
22
20
|
};
|
|
23
21
|
export default class PacketBuilder {
|
|
24
22
|
#private;
|
|
25
|
-
constructor({ db, schemes,
|
|
23
|
+
constructor({ db, schemes, problems, executors }: {
|
|
26
24
|
db: Db;
|
|
27
25
|
schemes: SchemeRegistry;
|
|
28
|
-
|
|
26
|
+
problems: ProblemLog;
|
|
29
27
|
executors: () => ExecutorRegistry | undefined;
|
|
30
28
|
});
|
|
31
29
|
maxTokensFor(provider: Provider): number | null;
|
|
32
30
|
promptBudgetFor(provider: Provider): number | null;
|
|
33
31
|
ceilingFor(provider: Provider): number | null;
|
|
34
|
-
buildRequestPacket({ initialMessages, requirements, workspaceId, workerId, loopId, currentTurnSeq, provider, gitStatus,
|
|
32
|
+
buildRequestPacket({ initialMessages, requirements, workspaceId, workerId, loopId, currentTurnSeq, provider, gitStatus, notices, }: {
|
|
35
33
|
initialMessages: ChatMessage[];
|
|
36
34
|
requirements: string;
|
|
37
35
|
gitStatus: GitStatus | null;
|
|
@@ -40,7 +38,7 @@ export default class PacketBuilder {
|
|
|
40
38
|
loopId: number;
|
|
41
39
|
currentTurnSeq: number;
|
|
42
40
|
provider: Provider;
|
|
43
|
-
|
|
41
|
+
notices?: readonly Notice[];
|
|
44
42
|
}): Promise<RequestPacket>;
|
|
45
43
|
docEntries(workspaceId: number): Promise<Array<{
|
|
46
44
|
name: string;
|
|
@@ -58,9 +56,12 @@ export default class PacketBuilder {
|
|
|
58
56
|
packet: RequestPacket;
|
|
59
57
|
fit: boolean;
|
|
60
58
|
struck: boolean;
|
|
59
|
+
recorded: boolean;
|
|
61
60
|
}>;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
physicalAdmission(packet: RequestPacket, provider: Provider, signal?: AbortSignal): Promise<PhysicalPromptAdmission>;
|
|
62
|
+
buildFailurePointers(loopId: number, currentTurnSeq: number): Promise<Array<{
|
|
63
|
+
status: number;
|
|
64
|
+
coordinate: string;
|
|
65
|
+
}>>;
|
|
65
66
|
}
|
|
66
67
|
//# sourceMappingURL=PacketBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"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"}
|