@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
package/dist/core/zero-pin.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// #510 — the zero-pin gate mode: strip the agent-written alias ENVELOPE pins so a demo/live run
|
|
2
|
-
// walks the fresh-user derivation path (#507 — probed window + shipped percent reserves), and a
|
|
3
|
-
// path that only works WITH a hand-written pin reads RED. Kept: the model SELECTION + defs, the
|
|
4
|
-
// shipped BARE percent reserves + safety — everything a fresh install has. Stripped: box tuning.
|
|
5
|
-
export const isEnvelopePin = (key) => /^PLURNK_PROVIDERS_CONTEXT_WINDOW(_.+)?$/.test(key) // any window pin → force the probe
|
|
6
|
-
|| /^PLURNK_PROVIDERS_(REASONING|COMPLETION)_RESERVE_.+$/.test(key) // per-alias reserve pins (bare percent stays)
|
|
7
|
-
|| /^PLURNK_SERVICE_SAFETY_.+$/.test(key); // per-alias safety pins (bare stays)
|
|
8
|
-
// Delete every envelope pin from `env` in place; return the stripped keys (for a loud report —
|
|
9
|
-
// a green zero-pin run must be trustworthy).
|
|
10
|
-
export const scrubEnvelopePins = (env) => {
|
|
11
|
-
const stripped = Object.keys(env).filter(isEnvelopePin);
|
|
12
|
-
for (const k of stripped)
|
|
13
|
-
delete env[k];
|
|
14
|
-
return stripped;
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=zero-pin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zero-pin.js","sourceRoot":"","sources":["../../src/core/zero-pin.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,gGAAgG;AAChG,gGAAgG;AAChG,iGAAiG;AACjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE,CAClD,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAc,mCAAmC;OACjG,sDAAsD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,8CAA8C;OAChH,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAuB,qCAAqC;AAE1G,+FAA+F;AAC/F,6CAA6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAsB,EAAY,EAAE;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
|
package/dist/server/auto.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/server/auto.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAuB3C;CACJ"}
|
package/dist/server/auto.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
// Loop auto-approval listener — resolves proposals when persisted flags.auto is true.
|
|
2
|
-
// No client roundtrip; no human approval; no RPC involvement.
|
|
3
|
-
//
|
|
4
|
-
// === Loop auto vs client-side YOLO ===
|
|
5
|
-
//
|
|
6
|
-
// These are distinct features. Both have legitimate use cases. Neither
|
|
7
|
-
// replaces the other.
|
|
8
|
-
//
|
|
9
|
-
// Loop auto (this file)
|
|
10
|
-
// - Enabled via loops.flags.auto = true. RPC opt-in:
|
|
11
|
-
// loop.run({ prompt, flags: { auto: true } }).
|
|
12
|
-
// - Engine auto-accepts in-process; the client need not be connected.
|
|
13
|
-
// - Use cases: benchmarks (pure model+grammar timing, no RPC roundtrip
|
|
14
|
-
// in the hot loop), CI runs, ad-hoc internal automation, test
|
|
15
|
-
// fixtures. Anywhere "just run and tell me the final state" is the
|
|
16
|
-
// right contract.
|
|
17
|
-
// - Client apps (@plurnk/plurnk CLI / TUI) intentionally do NOT expose
|
|
18
|
-
// this flag — loop auto is automation authority, not review ergonomics.
|
|
19
|
-
//
|
|
20
|
-
// Client-side YOLO (@plurnk/plurnk --yolo / PLURNK_YOLO)
|
|
21
|
-
// - Client receives the loop/proposal notification and immediately
|
|
22
|
-
// sends loop.resolve({decision:"accept", outcome:"client_yolo"}).
|
|
23
|
-
// - The wire roundtrip still happens; the daemon stays unaware that
|
|
24
|
-
// no human reviewed.
|
|
25
|
-
// - Use cases: real users who want "stop bothering me" ergonomics
|
|
26
|
-
// across an interactive workspace. Documented in client SPEC §open-fold.
|
|
27
|
-
//
|
|
28
|
-
// Listener fires BEFORE ProposalLifecycle.awaitResolution awaits the waiter, so a
|
|
29
|
-
// synchronous resolveProposal here is delivered to the awaiting dispatch
|
|
30
|
-
// without yielding. The loop/proposal broadcast still goes out (listeners
|
|
31
|
-
// fan out independently) — clients in auto runs may see a brief
|
|
32
|
-
// proposed-then-resolved blink in their UI. The carried event.flags.auto
|
|
33
|
-
// lets clients suppress review-UI rendering for those entries.
|
|
34
|
-
export default class Auto {
|
|
35
|
-
static attach(engine, _db) {
|
|
36
|
-
// §proposal-ownership-loop-auto
|
|
37
|
-
engine.onProposalPending((event) => {
|
|
38
|
-
if (!event.flags.auto)
|
|
39
|
-
return;
|
|
40
|
-
// A [300] question is NOT automatic (#346): it exists precisely to stop the world
|
|
41
|
-
// for a human — auto-accepting answers nothing. The workspace opted into questions
|
|
42
|
-
// (settings.questions), so the stop is wanted even under auto.
|
|
43
|
-
if (event.op === "SEND" && event.attrs.question !== undefined)
|
|
44
|
-
return;
|
|
45
|
-
try {
|
|
46
|
-
if (event.staleClobberRisk) {
|
|
47
|
-
// #note10 — the target diverged on disk this turn; the model's EDIT is
|
|
48
|
-
// based on a stale read. Reject rather than silently clobber the ambient
|
|
49
|
-
// change. The model sees an ordinary reject (outcome is forensics-only)
|
|
50
|
-
// and can re-READ the entry + retry against the current content.
|
|
51
|
-
engine.resolveProposal(event.logEntryId, { decision: "reject", outcome: "stale_read_clobber" });
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
engine.resolveProposal(event.logEntryId, { decision: "accept" });
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Errors here don't abort dispatch — the proposal stays
|
|
58
|
-
// pending and falls through to the RPC / timeout path.
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=auto.js.map
|
package/dist/server/auto.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/server/auto.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,8DAA8D;AAC9D,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,0BAA0B;AAC1B,yDAAyD;AACzD,qDAAqD;AACrD,0EAA0E;AAC1E,2EAA2E;AAC3E,oEAAoE;AACpE,yEAAyE;AACzE,wBAAwB;AACxB,2EAA2E;AAC3E,8EAA8E;AAC9E,EAAE;AACF,2DAA2D;AAC3D,uEAAuE;AACvE,wEAAwE;AACxE,wEAAwE;AACxE,2BAA2B;AAC3B,sEAAsE;AACtE,+EAA+E;AAC/E,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AACzE,0EAA0E;AAC1E,gEAAgE;AAChE,yEAAyE;AACzE,+DAA+D;AAM/D,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,GAAO;QACjC,gCAAgC;QAChC,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAA2B,EAAE,EAAE;YACrD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBAAE,OAAO;YAC9B,kFAAkF;YAClF,mFAAmF;YACnF,+DAA+D;YAC/D,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,IAAK,KAAK,CAAC,KAA+B,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO;YACjG,IAAI,CAAC;gBACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACzB,uEAAuE;oBACvE,yEAAyE;oBACzE,wEAAwE;oBACxE,iEAAiE;oBACjE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAChG,OAAO;gBACX,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientTurn.d.ts","sourceRoot":"","sources":["../../src/server/clientTurn.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,UAAU;;IAQ3B,OAAa,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQrE;CACJ"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Helper for creating an ordered statement turn inside a client action's
|
|
2
|
-
// journal segment, with a synthetic packet matching the model-turn shape.
|
|
3
|
-
export default class ClientTurn {
|
|
4
|
-
static #CLIENT_TURN_PACKET = JSON.stringify({
|
|
5
|
-
tokens: 0,
|
|
6
|
-
sections: [],
|
|
7
|
-
assistant: { tokens: 0, content: "", ops: [], reasoning: null },
|
|
8
|
-
assistantRaw: null,
|
|
9
|
-
});
|
|
10
|
-
static async insertClientTurn(db, loopId) {
|
|
11
|
-
const seqRow = await db.client_turn_next_sequence.get({ loop_id: loopId });
|
|
12
|
-
if (seqRow === undefined)
|
|
13
|
-
throw new Error("insertClientTurn: next-sequence query returned no row");
|
|
14
|
-
const row = await db.client_turn_insert.get({
|
|
15
|
-
loop_id: loopId, sequence: seqRow.next, packet: ClientTurn.#CLIENT_TURN_PACKET,
|
|
16
|
-
});
|
|
17
|
-
if (row === undefined)
|
|
18
|
-
throw new Error("insertClientTurn: insert returned no row");
|
|
19
|
-
return row.id;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=clientTurn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientTurn.js","sourceRoot":"","sources":["../../src/server/clientTurn.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAI1E,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;QAC/D,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAM,EAAE,MAAc;QAChD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACnG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAiB;YACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,mBAAmB;SACjF,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACnF,OAAO,GAAG,CAAC,EAAE,CAAC;IAClB,CAAC;CACJ"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
-- Client-origin turn helpers. Each client RPC op creates a synthetic turn
|
|
2
|
-
-- inside the connection's client loop with an empty packet shape.
|
|
3
|
-
|
|
4
|
-
-- PREP: client_turn_next_sequence
|
|
5
|
-
SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM turns WHERE loop_id = $loop_id;
|
|
6
|
-
|
|
7
|
-
-- PREP: client_turn_insert
|
|
8
|
-
INSERT INTO turns (loop_id, sequence, status, packet)
|
|
9
|
-
VALUES ($loop_id, $sequence, 200, $packet)
|
|
10
|
-
RETURNING id;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noProposals.d.ts","sourceRoot":"","sources":["../../src/server/noProposals.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAUtD;CACJ"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// Server-side noProposals listener — the exact inverse of auto.ts. When a
|
|
2
|
-
// loop's persisted flags.noProposals === true, proposals auto-REJECT
|
|
3
|
-
// in-process, mirroring loop auto's ACCEPT. No client roundtrip; no
|
|
4
|
-
// human review.
|
|
5
|
-
//
|
|
6
|
-
// Invisibility is the whole point. The model sees only the ordinary
|
|
7
|
-
// post-resolution result — identical to a human declining the proposal or a
|
|
8
|
-
// client's no_tty_review reject. The `outcome` reason is forensics-only,
|
|
9
|
-
// never in the rx (see ProposalResolution), so a reject under noProposals is
|
|
10
|
-
// indistinguishable, to the model, from any other reject. How a proposal is
|
|
11
|
-
// handled — manual review, client YOLO, loop auto, noProposals — leaves no
|
|
12
|
-
// fingerprint in the model's experience.
|
|
13
|
-
//
|
|
14
|
-
// Use case: a client with no review channel (no TTY — piped, scripted,
|
|
15
|
-
// redirected) sets noProposals so side-effecting ops fail closed WITHOUT a
|
|
16
|
-
// client roundtrip per proposal. The client, which set the flag, owns any
|
|
17
|
-
// end-user "edits were blocked, no review channel" messaging; the model is
|
|
18
|
-
// mode-blind.
|
|
19
|
-
//
|
|
20
|
-
// auto wins if both are (nonsensically) set — the explicit auto-accept
|
|
21
|
-
// opt-in takes precedence over the auto-reject.
|
|
22
|
-
export default class NoProposals {
|
|
23
|
-
static attachNoProposals(engine, _db) {
|
|
24
|
-
engine.onProposalPending((event) => {
|
|
25
|
-
if (event.flags.auto || !event.flags.noProposals)
|
|
26
|
-
return;
|
|
27
|
-
try {
|
|
28
|
-
engine.resolveProposal(event.logEntryId, { decision: "reject", outcome: "no_review_channel" });
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
// Errors here don't abort dispatch — the proposal stays
|
|
32
|
-
// pending and falls through to the RPC / timeout path.
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=noProposals.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noProposals.js","sourceRoot":"","sources":["../../src/server/noProposals.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qEAAqE;AACrE,oEAAoE;AACpE,gBAAgB;AAChB,EAAE;AACF,oEAAoE;AACpE,4EAA4E;AAC5E,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,yCAAyC;AACzC,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,cAAc;AACd,EAAE;AACF,uEAAuE;AACvE,gDAAgD;AAMhD,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,iBAAiB,CAAC,MAAc,EAAE,GAAO;QAC5C,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAA2B,EAAE,EAAE;YACrD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO;YACzD,IAAI,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACnG,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type Versions = {
|
|
2
|
-
service: {
|
|
3
|
-
installed: string;
|
|
4
|
-
latest?: string;
|
|
5
|
-
};
|
|
6
|
-
client: {
|
|
7
|
-
latest?: string;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export default class VersionInfo {
|
|
11
|
-
#private;
|
|
12
|
-
static get(): Promise<Versions>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=version-info.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version-info.d.ts","sourceRoot":"","sources":["../../src/server/version-info.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,QAAQ,GAAG;IAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAExG,MAAM,CAAC,OAAO,OAAO,WAAW;;IAQ5B,OAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAQpC;CA0CJ"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// #235 — version advertising for the client's update notifier. The daemon is the
|
|
2
|
-
// long-lived, already-network-capable process, so it owns the registry poll: a one-shot
|
|
3
|
-
// CLI does zero registry IO and just renders what `discover` hands it. We self-report the
|
|
4
|
-
// installed version and poll npm for `latest` of the service + client packages — CACHED
|
|
5
|
-
// (TTL) and BEST-EFFORT (offline / registry-down omits `latest`; never blocks `discover`).
|
|
6
|
-
import { readFile } from "node:fs/promises";
|
|
7
|
-
import { fileURLToPath } from "node:url";
|
|
8
|
-
import { dirname, resolve, join } from "node:path";
|
|
9
|
-
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
10
|
-
const SERVICE_PKG = "@plurnk/plurnk-service";
|
|
11
|
-
const CLIENT_PKG = "@plurnk/plurnk";
|
|
12
|
-
export default class VersionInfo {
|
|
13
|
-
static #installed;
|
|
14
|
-
static #cache = { service: undefined, client: undefined, at: 0 };
|
|
15
|
-
static #inflight = false;
|
|
16
|
-
// `discover` rides this. Returns immediately with whatever is cached; a stale/cold
|
|
17
|
-
// cache triggers a background refresh (never awaited), so the call never blocks on the
|
|
18
|
-
// network. `installed` is the daemon's honest self-report; `latest` is best-effort.
|
|
19
|
-
static async get() {
|
|
20
|
-
const installed = await VersionInfo.#installedVersion();
|
|
21
|
-
VersionInfo.#maybeRefresh();
|
|
22
|
-
const { service, client } = VersionInfo.#cache;
|
|
23
|
-
return {
|
|
24
|
-
service: service === undefined ? { installed } : { installed, latest: service },
|
|
25
|
-
client: client === undefined ? {} : { latest: client },
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
static async #installedVersion() {
|
|
29
|
-
if (VersionInfo.#installed === undefined) {
|
|
30
|
-
const raw = await readFile(join(PACKAGE_ROOT, "package.json"), "utf8");
|
|
31
|
-
VersionInfo.#installed = JSON.parse(raw).version;
|
|
32
|
-
}
|
|
33
|
-
return VersionInfo.#installed;
|
|
34
|
-
}
|
|
35
|
-
static #maybeRefresh() {
|
|
36
|
-
const ttl = VersionInfo.#envMs("PLURNK_SERVICE_VERSION_POLL_TTL", 0);
|
|
37
|
-
const timeout = VersionInfo.#envMs("PLURNK_PROVIDERS_FETCH_TIMEOUT", 1);
|
|
38
|
-
if (VersionInfo.#inflight || Date.now() - VersionInfo.#cache.at < ttl)
|
|
39
|
-
return;
|
|
40
|
-
VersionInfo.#inflight = true;
|
|
41
|
-
void VersionInfo.#refresh(timeout).finally(() => { VersionInfo.#inflight = false; });
|
|
42
|
-
}
|
|
43
|
-
// No code fallback hides a magic number — the law-file (.env.defaults) carries it.
|
|
44
|
-
static #envMs(name, min) {
|
|
45
|
-
const raw = process.env[name];
|
|
46
|
-
const n = raw === undefined ? Number.NaN : Number.parseInt(raw, 10);
|
|
47
|
-
if (!Number.isFinite(n) || n < min)
|
|
48
|
-
throw new Error(`${name} must be an integer >= ${min} (ms), got ${JSON.stringify(raw)}`);
|
|
49
|
-
return n;
|
|
50
|
-
}
|
|
51
|
-
static async #refresh(timeout) {
|
|
52
|
-
const [service, client] = await Promise.all([VersionInfo.#poll(SERVICE_PKG, timeout), VersionInfo.#poll(CLIENT_PKG, timeout)]);
|
|
53
|
-
// Keep the prior cached value on a failed poll (don't clobber a good `latest` with undefined).
|
|
54
|
-
VersionInfo.#cache = { service: service ?? VersionInfo.#cache.service, client: client ?? VersionInfo.#cache.client, at: Date.now() };
|
|
55
|
-
}
|
|
56
|
-
static async #poll(pkg, timeout) {
|
|
57
|
-
try {
|
|
58
|
-
const res = await fetch(`https://registry.npmjs.org/${pkg.replace("/", "%2F")}/latest`, { signal: AbortSignal.timeout(timeout) });
|
|
59
|
-
if (!res.ok)
|
|
60
|
-
return undefined;
|
|
61
|
-
const body = (await res.json());
|
|
62
|
-
return typeof body.version === "string" ? body.version : undefined;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
return undefined; // best-effort: offline / registry-down / abort → omit `latest`
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=version-info.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version-info.js","sourceRoot":"","sources":["../../src/server/version-info.ts"],"names":[],"mappings":"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"}
|