@plurnk/plurnk-service 1.7.0 → 1.9.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 +49 -42
- package/INSTALL.md +48 -11
- package/README.md +12 -2
- package/SPEC.md +1166 -475
- package/digest-sql/channel-dispositions/dispositions.sql +15 -0
- package/digest-sql/channel-state/state.sql +6 -0
- package/digest-sql/curation/curation.sql +5 -0
- package/digest-sql/derivations/derivations.sql +4 -0
- package/digest-sql/embeddings/embeddings.sql +4 -0
- package/digest-sql/entry-dispositions/dispositions.sql +15 -0
- package/digest-sql/entry-state/state.sql +6 -0
- package/digest-sql/token-counts/token-counts.sql +2 -0
- package/dist/Paths.d.ts +0 -4
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +1 -21
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +4 -3
- package/dist/content/read-projector.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +12 -22
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +8 -3
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +40 -8
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +19 -5
- package/dist/core/CoreSchemeServices.d.ts +7 -3
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +8 -1
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +15 -6
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +352 -306
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +22 -10
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +86 -46
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +202 -177
- package/dist/core/EntryAddressBinding.d.ts +32 -0
- package/dist/core/EntryAddressBinding.d.ts.map +1 -0
- package/dist/core/EntryAddressBinding.js +93 -0
- package/dist/core/EntryAddressBinding.js.map +1 -0
- package/dist/core/ExecutorRegistry.d.ts +12 -6
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +34 -31
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/HostPaths.d.ts +29 -0
- package/dist/core/HostPaths.d.ts.map +1 -0
- package/dist/core/HostPaths.js +74 -0
- package/dist/core/HostPaths.js.map +1 -0
- package/dist/core/LegacyHome.d.ts +10 -0
- package/dist/core/LegacyHome.d.ts.map +1 -0
- package/dist/core/LegacyHome.js +170 -0
- package/dist/core/LegacyHome.js.map +1 -0
- package/dist/core/LogBody.d.ts +1 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +21 -3
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogEntryProjection.js +1 -1
- package/dist/core/LogEntryProjection.js.map +1 -1
- package/dist/core/LogVisibility.d.ts +28 -0
- package/dist/core/LogVisibility.d.ts.map +1 -0
- package/dist/core/LogVisibility.js +215 -0
- package/dist/core/LogVisibility.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +1 -0
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +8 -0
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +10 -0
- package/dist/core/OperatorConfig.d.ts +6 -0
- package/dist/core/OperatorConfig.d.ts.map +1 -0
- package/dist/core/OperatorConfig.js +95 -0
- package/dist/core/OperatorConfig.js.map +1 -0
- package/dist/core/OverflowTurn.d.ts +11 -0
- package/dist/core/OverflowTurn.d.ts.map +1 -0
- package/dist/core/OverflowTurn.js +81 -0
- package/dist/core/OverflowTurn.js.map +1 -0
- package/dist/core/Owner.js +3 -3
- package/dist/core/Owner.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +7 -15
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +64 -127
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ProblemLog.js +1 -1
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/ProposalLifecycle.d.ts +4 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +86 -47
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts +9 -5
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +99 -104
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/ReasoningEvent.d.ts +13 -0
- package/dist/core/ReasoningEvent.d.ts.map +1 -0
- package/dist/core/ReasoningEvent.js +6 -0
- package/dist/core/ReasoningEvent.js.map +1 -0
- package/dist/core/ResourceMutations.d.ts +15 -19
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +118 -41
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +12 -12
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +58 -57
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ToolResources.d.ts +19 -0
- package/dist/core/ToolResources.d.ts.map +1 -0
- package/dist/core/ToolResources.js +123 -0
- package/dist/core/ToolResources.js.map +1 -0
- package/dist/core/Turn.d.ts +27 -0
- package/dist/core/Turn.d.ts.map +1 -0
- package/dist/core/Turn.js +43 -0
- package/dist/core/Turn.js.map +1 -0
- package/dist/core/Turn.sql +72 -0
- package/dist/core/TurnOps.d.ts +7 -0
- package/dist/core/TurnOps.d.ts.map +1 -0
- package/dist/core/TurnOps.js +73 -0
- package/dist/core/TurnOps.js.map +1 -0
- package/dist/core/TurnRunner.d.ts +56 -5
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +1163 -929
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/WorkerName.d.ts +2 -1
- package/dist/core/WorkerName.d.ts.map +1 -1
- package/dist/core/WorkerName.js +2 -1
- package/dist/core/WorkerName.js.map +1 -1
- package/dist/core/WorkerName.sql +17 -2
- package/dist/core/WorkspaceGate.js +1 -1
- package/dist/core/WorkspaceGate.js.map +1 -1
- package/dist/core/caps/CapsResolve.d.ts +2 -2
- package/dist/core/caps/CapsResolve.d.ts.map +1 -1
- package/dist/core/caps/CapsResolve.js +5 -7
- package/dist/core/caps/CapsResolve.js.map +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
- package/dist/core/caps/DbChannelCaps.js +13 -11
- package/dist/core/caps/DbChannelCaps.js.map +1 -1
- package/dist/core/caps/DbEntryCaps.d.ts +5 -5
- package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
- package/dist/core/caps/DbEntryCaps.js +27 -30
- 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 +5 -3
- package/dist/core/caps/DbNotifyCaps.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts +3 -3
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +16 -26
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts +6 -4
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +37 -5
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/env-defaults.d.ts.map +1 -1
- package/dist/core/env-defaults.js +7 -5
- package/dist/core/env-defaults.js.map +1 -1
- package/dist/core/file-creation-policy.d.ts +9 -0
- package/dist/core/file-creation-policy.d.ts.map +1 -0
- package/dist/core/file-creation-policy.js +25 -0
- package/dist/core/file-creation-policy.js.map +1 -0
- package/dist/core/fork.d.ts +4 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +39 -16
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +83 -40
- package/dist/core/git-env.d.ts +0 -1
- package/dist/core/git-env.d.ts.map +1 -1
- package/dist/core/git-env.js +0 -3
- package/dist/core/git-env.js.map +1 -1
- package/dist/core/git-membership.d.ts +19 -1
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +233 -74
- 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 +13 -14
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/operation-target-groups.d.ts +3 -0
- package/dist/core/operation-target-groups.d.ts.map +1 -0
- package/dist/core/operation-target-groups.js +53 -0
- package/dist/core/operation-target-groups.js.map +1 -0
- package/dist/core/packet-inject.d.ts +0 -1
- package/dist/core/packet-inject.d.ts.map +1 -1
- package/dist/core/packet-inject.js +6 -13
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts +4 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +226 -53
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +14 -3
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +62 -24
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/scheme-types.d.ts +1 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/teaching.d.ts.map +1 -1
- package/dist/core/teaching.js +4 -5
- package/dist/core/teaching.js.map +1 -1
- package/dist/core/worker-ops.sql +10 -6
- package/dist/core/worker-settings.d.ts +10 -0
- package/dist/core/worker-settings.d.ts.map +1 -0
- package/dist/core/worker-settings.js +32 -0
- package/dist/core/worker-settings.js.map +1 -0
- package/dist/core/workspace-settings.d.ts +2 -11
- package/dist/core/workspace-settings.d.ts.map +1 -1
- package/dist/core/workspace-settings.js +7 -47
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +164 -92
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/digest.sql +9 -3
- package/dist/observe/genai.d.ts +9 -0
- package/dist/observe/genai.d.ts.map +1 -0
- package/dist/observe/genai.js +31 -0
- package/dist/observe/genai.js.map +1 -0
- package/dist/observe/spans.d.ts +3 -3
- package/dist/observe/spans.d.ts.map +1 -1
- package/dist/observe/spans.js +20 -5
- package/dist/observe/spans.js.map +1 -1
- package/dist/schemes/EffectPolicy.d.ts +3 -0
- package/dist/schemes/EffectPolicy.d.ts.map +1 -1
- package/dist/schemes/EffectPolicy.js +38 -6
- package/dist/schemes/EffectPolicy.js.map +1 -1
- package/dist/schemes/Exec.d.ts +3 -2
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +109 -34
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +5 -4
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +170 -80
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +6 -2
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +73 -22
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +25 -7
- package/dist/schemes/Prompt.d.ts +2 -3
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +5 -9
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/QuestionTool.d.ts +10 -0
- package/dist/schemes/QuestionTool.d.ts.map +1 -0
- package/dist/schemes/QuestionTool.js +81 -0
- package/dist/schemes/QuestionTool.js.map +1 -0
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +6 -1
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +97 -34
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +5 -5
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +22 -17
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +77 -24
- package/dist/schemes/_entry-find.d.ts +8 -5
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +121 -40
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +16 -11
- package/dist/schemes/_entry-graph.sql +2 -6
- package/dist/schemes/_entry-manifest.d.ts +2 -2
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +18 -6
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +6 -5
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +39 -46
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-ops.sql +9 -6
- package/dist/schemes/_entry-send.d.ts +2 -2
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +16 -14
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +39 -25
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/server/Daemon.d.ts +98 -15
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +864 -348
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +84 -19
- package/dist/server/DaemonModule.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +15 -10
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +70 -19
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/Functionality.d.ts +44 -0
- package/dist/server/Functionality.d.ts.map +1 -0
- package/dist/server/Functionality.js +422 -0
- package/dist/server/Functionality.js.map +1 -0
- package/dist/server/FunctionalityManager.d.ts +22 -0
- package/dist/server/FunctionalityManager.d.ts.map +1 -0
- package/dist/server/FunctionalityManager.js +121 -0
- package/dist/server/FunctionalityManager.js.map +1 -0
- package/dist/server/SkillsFunctionality.d.ts +61 -0
- package/dist/server/SkillsFunctionality.d.ts.map +1 -0
- package/dist/server/SkillsFunctionality.js +449 -0
- package/dist/server/SkillsFunctionality.js.map +1 -0
- package/dist/server/WorkerCapabilities.d.ts +21 -0
- package/dist/server/WorkerCapabilities.d.ts.map +1 -0
- package/dist/server/WorkerCapabilities.js +214 -0
- package/dist/server/WorkerCapabilities.js.map +1 -0
- package/dist/server/WorkerResidency.d.ts +40 -0
- package/dist/server/WorkerResidency.d.ts.map +1 -0
- package/dist/server/WorkerResidency.js +283 -0
- package/dist/server/WorkerResidency.js.map +1 -0
- package/dist/server/client-input.d.ts +6 -2
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +72 -32
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts +2 -2
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +109 -23
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +33 -13
- package/dist/server/envelope.d.ts +7 -2
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +12 -6
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +36 -4
- package/dist/server/lifecycle-recovery.sql +24 -17
- package/dist/server/logEntry.d.ts +2 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +3 -2
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +7 -0
- package/dist/server/loop-model.d.ts +2 -2
- package/dist/server/loop-model.d.ts.map +1 -1
- package/dist/server/loop-model.js +23 -33
- package/dist/server/loop-model.js.map +1 -1
- package/dist/server/loopDocs.d.ts +2 -1
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +88 -21
- package/dist/server/loopDocs.js.map +1 -1
- package/dist/server/loopDocs.sql +14 -8
- package/dist/server/model-catalog.d.ts +3 -0
- package/dist/server/model-catalog.d.ts.map +1 -0
- package/dist/server/model-catalog.js +83 -0
- package/dist/server/model-catalog.js.map +1 -0
- package/dist/server/model-route.d.ts +7 -0
- package/dist/server/model-route.d.ts.map +1 -0
- package/dist/server/model-route.js +47 -0
- package/dist/server/model-route.js.map +1 -0
- package/dist/server/module-discovery.d.ts +13 -0
- package/dist/server/module-discovery.d.ts.map +1 -0
- package/dist/server/module-discovery.js +103 -0
- package/dist/server/module-discovery.js.map +1 -0
- package/dist/server/seam-entry-read.sql +9 -7
- package/dist/server/seam-log-read.sql +1 -1
- package/dist/server/seam-loop.sql +10 -1
- package/dist/server/seam-proposal-list.sql +4 -2
- package/dist/server/worker-capabilities.sql +19 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +193 -124
- package/dist/service.js.map +1 -1
- package/migrations/001_schema.sql +905 -196
- package/package.json +40 -38
- package/dist/core/ExecutableTools.d.ts +0 -11
- package/dist/core/ExecutableTools.d.ts.map +0 -1
- package/dist/core/ExecutableTools.js +0 -49
- package/dist/core/ExecutableTools.js.map +0 -1
- package/dist/core/JournalTurn.d.ts +0 -9
- package/dist/core/JournalTurn.d.ts.map +0 -1
- package/dist/core/JournalTurn.js +0 -14
- package/dist/core/JournalTurn.js.map +0 -1
- package/dist/core/JournalTurn.sql +0 -10
- package/dist/core/git-iso.d.ts +0 -13
- package/dist/core/git-iso.d.ts.map +0 -1
- package/dist/core/git-iso.js +0 -267
- package/dist/core/git-iso.js.map +0 -1
- package/dist/core/search-gate.d.ts +0 -17
- package/dist/core/search-gate.d.ts.map +0 -1
- package/dist/core/search-gate.js +0 -77
- package/dist/core/search-gate.js.map +0 -1
- package/dist/digest/Digest.sql +0 -1
- package/dist/server/workspace-capabilities.sql +0 -19
package/dist/server/loopDocs.sql
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
--
|
|
1
|
+
-- Worker generated-document reconciliation: the whole {§worker-generated-subtree}
|
|
2
|
+
-- — scheme and tool references, AGENTS.md, and every Functionality family's
|
|
3
|
+
-- documents ({§schemes-self-doc-materialization}, {§tools-resource-materialization},
|
|
4
|
+
-- {§functionality-documents}).
|
|
2
5
|
|
|
3
6
|
-- PREP: loop_docs_materialized
|
|
4
|
-
SELECT pathname
|
|
5
|
-
FROM entries
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
AND
|
|
10
|
-
|
|
7
|
+
SELECT e.pathname, ec.content
|
|
8
|
+
FROM entries e
|
|
9
|
+
JOIN workers owner ON owner.id = e.owner_id
|
|
10
|
+
LEFT JOIN entry_channels ec ON ec.entry_id = e.id AND ec.name = 'body'
|
|
11
|
+
WHERE owner.workspace_id = $workspace_id
|
|
12
|
+
AND e.owner_id = $owner_id
|
|
13
|
+
AND e.scheme = 'worker'
|
|
14
|
+
AND e.authority = ''
|
|
15
|
+
AND substr(e.pathname, 1, 9) = '/_plurnk/'
|
|
16
|
+
ORDER BY e.pathname;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/server/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEzB,MAAM,0BAA0B,CAAC;AAuBlC,eAAO,MAAM,gBAAgB,UAClB,iBAAiB,QACnB,MAAM,CAAC,UAAU,KACvB,gBAkEF,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Validator, } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import { catalogSnapshot, providerCatalogSnapshot, providerNameFromCatalogId, } from "@plurnk/plurnk-models";
|
|
3
|
+
import { providerReadiness } from "@plurnk/plurnk-providers";
|
|
4
|
+
const DEFAULT_LIMIT = 50;
|
|
5
|
+
const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
6
|
+
const entryMatches = (entry, search) => [
|
|
7
|
+
entry.selector,
|
|
8
|
+
entry.provider,
|
|
9
|
+
entry.providerName,
|
|
10
|
+
entry.model,
|
|
11
|
+
entry.modelName,
|
|
12
|
+
].some((value) => value.toLowerCase().includes(search));
|
|
13
|
+
// {§model-catalog} Core composes the release-pinned Models.dev facts with the
|
|
14
|
+
// provider owner's local readiness predicate. Enumeration is pure local work:
|
|
15
|
+
// it never probes, authenticates, selects, or invokes a model.
|
|
16
|
+
export const listModelCatalog = (input, env = process.env) => {
|
|
17
|
+
const query = Validator.assertModelCatalogQuery(input);
|
|
18
|
+
const requestedProvider = query.provider?.toLowerCase();
|
|
19
|
+
const search = query.search?.trim().toLowerCase() ?? "";
|
|
20
|
+
const availability = query.availability ?? "configured";
|
|
21
|
+
const offset = query.offset ?? 0;
|
|
22
|
+
const limit = query.limit ?? DEFAULT_LIMIT;
|
|
23
|
+
const providers = providerCatalogSnapshot();
|
|
24
|
+
const readinessByProvider = new Map();
|
|
25
|
+
const entries = [];
|
|
26
|
+
for (const [catalogProviderId, models] of Object.entries(catalogSnapshot())) {
|
|
27
|
+
const provider = providerNameFromCatalogId(catalogProviderId);
|
|
28
|
+
if (requestedProvider !== undefined && provider.toLowerCase() !== requestedProvider)
|
|
29
|
+
continue;
|
|
30
|
+
const providerInfo = providers[catalogProviderId];
|
|
31
|
+
if (providerInfo === undefined) {
|
|
32
|
+
throw new Error(`Models.dev catalog provider '${catalogProviderId}' has no provider facts`);
|
|
33
|
+
}
|
|
34
|
+
let readiness = readinessByProvider.get(provider);
|
|
35
|
+
if (readiness === undefined) {
|
|
36
|
+
const resolved = providerReadiness(provider, env);
|
|
37
|
+
if (resolved === null) {
|
|
38
|
+
throw new Error(`Models.dev catalog provider '${catalogProviderId}' has no supported runtime adapter`);
|
|
39
|
+
}
|
|
40
|
+
readiness = resolved;
|
|
41
|
+
readinessByProvider.set(provider, readiness);
|
|
42
|
+
}
|
|
43
|
+
if (availability === "configured" && !readiness.ready)
|
|
44
|
+
continue;
|
|
45
|
+
for (const [model, info] of Object.entries(models)) {
|
|
46
|
+
const selector = `${provider}/${model}`;
|
|
47
|
+
const entry = {
|
|
48
|
+
selector,
|
|
49
|
+
provider,
|
|
50
|
+
providerName: providerInfo.name,
|
|
51
|
+
model,
|
|
52
|
+
modelName: info.name,
|
|
53
|
+
limits: {
|
|
54
|
+
contextTokens: info.contextWindow,
|
|
55
|
+
...(info.maxInputTokens === undefined ? {} : { inputTokens: info.maxInputTokens }),
|
|
56
|
+
...(info.maxOutputTokens === undefined ? {} : { outputTokens: info.maxOutputTokens }),
|
|
57
|
+
},
|
|
58
|
+
capabilities: {
|
|
59
|
+
attachment: info.attachment,
|
|
60
|
+
reasoning: info.reasoning,
|
|
61
|
+
toolCall: info.toolCall,
|
|
62
|
+
...(info.structuredOutput === undefined ? {} : { structuredOutput: info.structuredOutput }),
|
|
63
|
+
...(info.temperature === undefined ? {} : { temperature: info.temperature }),
|
|
64
|
+
inputModalities: [...info.modalities.input],
|
|
65
|
+
outputModalities: [...info.modalities.output],
|
|
66
|
+
},
|
|
67
|
+
readiness,
|
|
68
|
+
};
|
|
69
|
+
if (search.length === 0 || entryMatches(entry, search))
|
|
70
|
+
entries.push(entry);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
entries.sort((left, right) => compareText(left.selector, right.selector));
|
|
74
|
+
const items = entries.slice(offset, offset + limit);
|
|
75
|
+
const nextOffset = offset + items.length;
|
|
76
|
+
return Validator.assertModelCatalogPage({
|
|
77
|
+
items,
|
|
78
|
+
offset,
|
|
79
|
+
total: entries.length,
|
|
80
|
+
...(nextOffset < entries.length ? { nextOffset } : {}),
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=model-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/server/model-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModelRoute } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { ProviderSpec } from "@plurnk/plurnk-providers";
|
|
3
|
+
import type { Db } from "../core/Db.ts";
|
|
4
|
+
export declare const routeForSpec: (db: Db, spec: ProviderSpec | null) => Promise<number | null>;
|
|
5
|
+
export declare const specForRoute: (db: Db, routeId: number | null) => Promise<ProviderSpec | null>;
|
|
6
|
+
export declare const projectModelRoute: (spec: ProviderSpec) => ModelRoute;
|
|
7
|
+
//# sourceMappingURL=model-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-route.d.ts","sourceRoot":"","sources":["../../src/server/model-route.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,eAAO,MAAM,YAAY,OAAc,EAAE,QAAQ,YAAY,GAAG,IAAI,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAmB3F,CAAC;AAEF,eAAO,MAAM,YAAY,OAAc,EAAE,WAAW,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAU9F,CAAC;AAGF,eAAO,MAAM,iBAAiB,SAAU,YAAY,KAAG,UAIrD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// {§worker-model-selection} — create-or-lookup for resolved model routes and the
|
|
2
|
+
// inverse lookup. The owning boundary resolves aliases to a complete route before
|
|
3
|
+
// persistence; no path re-resolves a historical selection through a possibly
|
|
4
|
+
// changed alias declaration.
|
|
5
|
+
export const routeForSpec = async (db, spec) => {
|
|
6
|
+
if (spec === null)
|
|
7
|
+
return null;
|
|
8
|
+
const alias = spec.alias ?? null;
|
|
9
|
+
const baseUrl = spec.baseUrl ?? null;
|
|
10
|
+
const existing = await db.model_route_lookup.get({
|
|
11
|
+
alias,
|
|
12
|
+
provider: spec.provider,
|
|
13
|
+
model: spec.model,
|
|
14
|
+
base_url: baseUrl,
|
|
15
|
+
});
|
|
16
|
+
if (existing !== undefined)
|
|
17
|
+
return existing.id;
|
|
18
|
+
const created = await db.model_route_create.get({
|
|
19
|
+
alias,
|
|
20
|
+
provider: spec.provider,
|
|
21
|
+
model: spec.model,
|
|
22
|
+
base_url: baseUrl,
|
|
23
|
+
});
|
|
24
|
+
if (created === undefined)
|
|
25
|
+
throw new Error("model_route_create returned no row");
|
|
26
|
+
return created.id;
|
|
27
|
+
};
|
|
28
|
+
export const specForRoute = async (db, routeId) => {
|
|
29
|
+
if (routeId === null)
|
|
30
|
+
return null;
|
|
31
|
+
const row = await db.model_route_by_id.get({ id: routeId });
|
|
32
|
+
if (row === undefined)
|
|
33
|
+
throw new Error(`model_route ${routeId} is missing`);
|
|
34
|
+
return {
|
|
35
|
+
...(row.alias === null ? {} : { alias: row.alias }),
|
|
36
|
+
provider: row.provider,
|
|
37
|
+
model: row.model,
|
|
38
|
+
...(row.base_url === null ? {} : { baseUrl: row.base_url }),
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
// The provider endpoint is durable construction state, not client model identity.
|
|
42
|
+
export const projectModelRoute = (spec) => ({
|
|
43
|
+
...(spec.alias === undefined ? {} : { alias: spec.alias }),
|
|
44
|
+
provider: spec.provider,
|
|
45
|
+
model: spec.model,
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=model-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-route.js","sourceRoot":"","sources":["../../src/server/model-route.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,6EAA6E;AAC7E,6BAA6B;AAM7B,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EAAM,EAAE,IAAyB,EAA0B,EAAE;IAC5F,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAiB;QAC7D,KAAK;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAiB;QAC5D,KAAK;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACjF,OAAO,OAAO,CAAC,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EAAM,EAAE,OAAsB,EAAgC,EAAE;IAC/F,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAqF,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChJ,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,aAAa,CAAC,CAAC;IAC5E,OAAO;QACH,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACnD,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;KAC9D,CAAC;AACN,CAAC,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAkB,EAAc,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1D,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,KAAK,EAAE,IAAI,CAAC,KAAK;CACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ApplicationPort } from "@plurnk/plurnk-contracts";
|
|
2
|
+
import type { DaemonModule } from "./DaemonModule.ts";
|
|
3
|
+
export declare const discoverDaemonModules: (options?: {
|
|
4
|
+
cwd?: string;
|
|
5
|
+
packageDirs?: Array<{
|
|
6
|
+
dir: string;
|
|
7
|
+
name: string;
|
|
8
|
+
}>;
|
|
9
|
+
}) => Promise<{
|
|
10
|
+
readonly modules: ReadonlyArray<DaemonModule<ApplicationPort>>;
|
|
11
|
+
readonly skipped: readonly string[];
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=module-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-discovery.d.ts","sourceRoot":"","sources":["../../src/server/module-discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmEtD,eAAO,MAAM,qBAAqB,aACrB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,KAC9E,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAoCjH,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import { pathToFileURL } from "node:url";
|
|
11
|
+
import fs from "node:fs/promises";
|
|
12
|
+
import Meta from "@plurnk/plurnk-meta";
|
|
13
|
+
// {§module-discovery} — third-party daemon-module composition. A package
|
|
14
|
+
// declares `plurnk: { kind: "module", module: "<export-subpath>" }`; the export
|
|
15
|
+
// is one DaemonModule (an object, or a no-arg factory returning one).
|
|
16
|
+
// Discovery mirrors the executor family ({§plugin-discovery}): scope-agnostic
|
|
17
|
+
// package scan, trust gate ({§plugin-trust-boundary}), lazy import.
|
|
18
|
+
//
|
|
19
|
+
// The service's explicit composition — the AG-UI, hooks, and MCP modules —
|
|
20
|
+
// carries init options and is wired in service.ts; discovery never duplicates
|
|
21
|
+
// those packages.
|
|
22
|
+
const EXPLICIT_COMPOSITION = new Set([
|
|
23
|
+
"@plurnk/plurnk-agui",
|
|
24
|
+
"@plurnk/plurnk-hooks",
|
|
25
|
+
"@plurnk/plurnk-mcp",
|
|
26
|
+
]);
|
|
27
|
+
const assertDaemonModule = (value, packageName, source) => {
|
|
28
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
29
|
+
const detail = source === "factory"
|
|
30
|
+
? "factory returned a non-object DaemonModule"
|
|
31
|
+
: "must export a DaemonModule object or no-argument factory";
|
|
32
|
+
throw new TypeError(`module package '${packageName}' ${detail}.`);
|
|
33
|
+
}
|
|
34
|
+
for (const member of ["setup", "start", "close"]) {
|
|
35
|
+
const hook = value[member];
|
|
36
|
+
if (hook !== undefined && typeof hook !== "function") {
|
|
37
|
+
throw new TypeError(`module package '${packageName}' lifecycle member '${member}' must be a function when present.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
};
|
|
42
|
+
const readManifest = async (dir) => {
|
|
43
|
+
let raw;
|
|
44
|
+
try {
|
|
45
|
+
raw = await fs.readFile(join(dir, "package.json"), "utf8");
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
let pkg;
|
|
51
|
+
try {
|
|
52
|
+
pkg = JSON.parse(raw);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const plurnk = pkg.plurnk;
|
|
58
|
+
if (!Meta.declaresKind(plurnk, "module"))
|
|
59
|
+
return null;
|
|
60
|
+
const moduleSubpath = plurnk.module;
|
|
61
|
+
if (typeof moduleSubpath !== "string" || moduleSubpath.length === 0)
|
|
62
|
+
return null;
|
|
63
|
+
const packageName = typeof pkg.name === "string" && pkg.name.length > 0 ? pkg.name : null;
|
|
64
|
+
if (packageName === null)
|
|
65
|
+
return null;
|
|
66
|
+
return { packageName, module: moduleSubpath };
|
|
67
|
+
};
|
|
68
|
+
export const discoverDaemonModules = async (options = {}) => {
|
|
69
|
+
const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
70
|
+
const dirs = (options.packageDirs
|
|
71
|
+
?? await Meta.packageDirs(join(options.cwd ?? process.cwd(), "node_modules")))
|
|
72
|
+
.toSorted((left, right) => compareText(left.name, right.name) || compareText(left.dir, right.dir));
|
|
73
|
+
const pending = [];
|
|
74
|
+
const skipped = [];
|
|
75
|
+
for (const candidate of dirs) {
|
|
76
|
+
const manifest = await readManifest(candidate.dir);
|
|
77
|
+
if (manifest === null)
|
|
78
|
+
continue;
|
|
79
|
+
if (EXPLICIT_COMPOSITION.has(manifest.packageName))
|
|
80
|
+
continue;
|
|
81
|
+
if (!Meta.isTrusted(manifest.packageName)) {
|
|
82
|
+
skipped.push(manifest.packageName);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
pending.push((async () => {
|
|
86
|
+
const imported = await import(__rewriteRelativeImportExtension(pathToFileURL(join(candidate.dir, manifest.module)).href));
|
|
87
|
+
const exported = imported.default;
|
|
88
|
+
if (exported === undefined) {
|
|
89
|
+
throw new Error(`module package '${manifest.packageName}' exports no default DaemonModule at '${manifest.module}'.`);
|
|
90
|
+
}
|
|
91
|
+
if (typeof exported !== "function") {
|
|
92
|
+
return assertDaemonModule(exported, manifest.packageName, "export");
|
|
93
|
+
}
|
|
94
|
+
if (exported.length !== 0) {
|
|
95
|
+
throw new TypeError(`module package '${manifest.packageName}' DaemonModule factory must accept no arguments.`);
|
|
96
|
+
}
|
|
97
|
+
const created = await exported();
|
|
98
|
+
return assertDaemonModule(created, manifest.packageName, "factory");
|
|
99
|
+
})());
|
|
100
|
+
}
|
|
101
|
+
return { modules: await Promise.all(pending), skipped };
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=module-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-discovery.js","sourceRoot":"","sources":["../../src/server/module-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
--
|
|
1
|
+
-- ApplicationPort readEntry queries. SPEC {§methods-entry-read}.
|
|
2
2
|
|
|
3
3
|
-- PREP: entry_read_lookup
|
|
4
|
-
SELECT id, workspace_id, owner_id, scheme, pathname
|
|
5
|
-
FROM entries
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
AND
|
|
9
|
-
AND
|
|
4
|
+
SELECT e.id, owner.workspace_id, e.owner_id, e.scheme, e.authority, e.pathname
|
|
5
|
+
FROM entries e
|
|
6
|
+
JOIN workers owner ON owner.id = e.owner_id
|
|
7
|
+
WHERE owner.workspace_id = $workspace_id
|
|
8
|
+
AND e.owner_id = $owner_id
|
|
9
|
+
AND e.scheme = $scheme
|
|
10
|
+
AND e.authority = $authority
|
|
11
|
+
AND e.pathname = $pathname;
|
|
10
12
|
|
|
11
13
|
-- PREP: entry_read_channels
|
|
12
14
|
SELECT name, content, 0 AS contentOffset, length(content) AS contentLength, mimetype, weight, state
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
--
|
|
1
|
+
-- ApplicationPort readLog query. SPEC {§methods-log-read}.
|
|
2
2
|
-- Static query with IS-NULL guards on optional filters. The loops/turns joins
|
|
3
3
|
-- resolve the DISPLAY coordinate (loop_seq/turn_seq/op-sequence) so a client can
|
|
4
4
|
-- target one entry by its `L/T/S` coordinate instead of
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
--
|
|
1
|
+
-- ApplicationPort runLoop queries. SPEC {§methods-loop-run}.
|
|
2
2
|
|
|
3
3
|
-- PREP: loop_run_next_sequence
|
|
4
4
|
SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM loops WHERE worker_id = $worker_id;
|
|
@@ -7,3 +7,12 @@ SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM loops WHERE worker_id = $work
|
|
|
7
7
|
INSERT INTO loops (worker_id, sequence, status, prompt)
|
|
8
8
|
VALUES ($worker_id, $sequence, 102, $prompt)
|
|
9
9
|
RETURNING id;
|
|
10
|
+
|
|
11
|
+
-- PREP: application_list_worker_loops
|
|
12
|
+
-- {§methods-worker-loops}: durable lifecycle projection for exterior adapters.
|
|
13
|
+
SELECT id, worker_id AS workerId, sequence, status, prompt,
|
|
14
|
+
prompt_source AS promptSource, terminated_at AS terminatedAt,
|
|
15
|
+
terminal_result AS terminalResult
|
|
16
|
+
FROM loops
|
|
17
|
+
WHERE worker_id = $worker_id
|
|
18
|
+
ORDER BY sequence;
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
-- Daemon nor an interface module reconstructs authority from this persistence shape.
|
|
5
5
|
SELECT le.id AS logEntryId, r.workspace_id AS workspaceId,
|
|
6
6
|
le.worker_id AS workerId, le.loop_id AS loopId, le.turn_id AS turnId,
|
|
7
|
-
le.op, le.signal, le.scheme, le.
|
|
7
|
+
le.op, le.signal, le.scheme, le.hostname, le.port, le.pathname, le.query,
|
|
8
|
+
le.rx, le.attrs, l.flags AS loop_flags
|
|
8
9
|
FROM log_entries le
|
|
9
10
|
JOIN workers r ON r.id = le.worker_id
|
|
10
11
|
JOIN loops l ON l.id = le.loop_id
|
|
@@ -16,7 +17,8 @@ ORDER BY le.id;
|
|
|
16
17
|
-- the live path. Both paths enter ProposalLifecycle's one projection function.
|
|
17
18
|
SELECT le.id AS logEntryId, r.workspace_id AS workspaceId,
|
|
18
19
|
le.worker_id AS workerId, le.loop_id AS loopId, le.turn_id AS turnId,
|
|
19
|
-
le.op, le.signal, le.scheme, le.
|
|
20
|
+
le.op, le.signal, le.scheme, le.hostname, le.port, le.pathname, le.query,
|
|
21
|
+
le.rx, le.attrs, l.flags AS loop_flags
|
|
20
22
|
FROM log_entries le
|
|
21
23
|
JOIN workers r ON r.id = le.worker_id
|
|
22
24
|
JOIN loops l ON l.id = le.loop_id
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
-- Durable module-owned Worker state. {§module-worker-state}
|
|
2
|
+
|
|
3
|
+
-- PREP: worker_module_state_get
|
|
4
|
+
SELECT state
|
|
5
|
+
FROM worker_module_state
|
|
6
|
+
WHERE worker_id = $worker_id
|
|
7
|
+
AND namespace_owner = $namespace_owner;
|
|
8
|
+
|
|
9
|
+
-- PREP: worker_module_state_put
|
|
10
|
+
INSERT INTO worker_module_state (worker_id, namespace_owner, state)
|
|
11
|
+
VALUES ($worker_id, $namespace_owner, $state)
|
|
12
|
+
ON CONFLICT (worker_id, namespace_owner) DO UPDATE SET
|
|
13
|
+
state = excluded.state,
|
|
14
|
+
updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now');
|
|
15
|
+
|
|
16
|
+
-- PREP: worker_module_state_delete
|
|
17
|
+
DELETE FROM worker_module_state
|
|
18
|
+
WHERE worker_id = $worker_id
|
|
19
|
+
AND namespace_owner = $namespace_owner;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAoCA,MAAM,CAAC,OAAO,OAAO,OAAO;;IAqUxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuGjC;CACJ"}
|