@plurnk/plurnk-service 1.17.0 → 1.19.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.
Files changed (501) hide show
  1. package/.env.defaults +95 -14
  2. package/README.md +5 -3
  3. package/SPEC.md +1756 -1442
  4. package/dist/Paths.js +3 -3
  5. package/dist/build-info.json +1 -1
  6. package/dist/content/body-preview.d.ts +1 -0
  7. package/dist/content/body-preview.d.ts.map +1 -1
  8. package/dist/content/body-preview.js +8 -10
  9. package/dist/content/body-preview.js.map +1 -1
  10. package/dist/content/edit-receipt.d.ts.map +1 -1
  11. package/dist/content/edit-receipt.js +30 -29
  12. package/dist/content/edit-receipt.js.map +1 -1
  13. package/dist/content/line-anchors.d.ts.map +1 -1
  14. package/dist/content/line-anchors.js +17 -5
  15. package/dist/content/line-anchors.js.map +1 -1
  16. package/dist/content/read-projector.d.ts +2 -2
  17. package/dist/content/read-projector.d.ts.map +1 -1
  18. package/dist/content/read-projector.js +81 -39
  19. package/dist/content/read-projector.js.map +1 -1
  20. package/dist/content/read-resolve.d.ts +1 -0
  21. package/dist/content/read-resolve.d.ts.map +1 -1
  22. package/dist/content/read-resolve.js +13 -10
  23. package/dist/content/read-resolve.js.map +1 -1
  24. package/dist/content/scope-format.d.ts +9 -0
  25. package/dist/content/scope-format.d.ts.map +1 -0
  26. package/dist/content/scope-format.js +28 -0
  27. package/dist/content/scope-format.js.map +1 -0
  28. package/dist/core/AdministrativeLoop.d.ts +8 -0
  29. package/dist/core/AdministrativeLoop.d.ts.map +1 -0
  30. package/dist/core/AdministrativeLoop.js +16 -0
  31. package/dist/core/AdministrativeLoop.js.map +1 -0
  32. package/dist/core/AdmittedTurnExecutor.d.ts +2 -2
  33. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  34. package/dist/core/AdmittedTurnExecutor.js +26 -26
  35. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  36. package/dist/core/BareBatchRunner.d.ts +1 -2
  37. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  38. package/dist/core/BareBatchRunner.js +7 -12
  39. package/dist/core/BareBatchRunner.js.map +1 -1
  40. package/dist/core/BudgetReadout.d.ts.map +1 -1
  41. package/dist/core/BudgetReadout.js +3 -4
  42. package/dist/core/BudgetReadout.js.map +1 -1
  43. package/dist/core/CapabilityPolicies.d.ts +4 -2
  44. package/dist/core/CapabilityPolicies.d.ts.map +1 -1
  45. package/dist/core/CapabilityPolicies.js +23 -2
  46. package/dist/core/CapabilityPolicies.js.map +1 -1
  47. package/dist/core/CapabilityResolver.d.ts +2 -2
  48. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  49. package/dist/core/CapabilityResolver.js +46 -36
  50. package/dist/core/CapabilityResolver.js.map +1 -1
  51. package/dist/core/ChannelWrite.d.ts +4 -6
  52. package/dist/core/ChannelWrite.d.ts.map +1 -1
  53. package/dist/core/ChannelWrite.js +8 -8
  54. package/dist/core/ChannelWrite.js.map +1 -1
  55. package/dist/core/ChannelWrite.sql +17 -11
  56. package/dist/core/ClientInteractions.d.ts +11 -1
  57. package/dist/core/ClientInteractions.d.ts.map +1 -1
  58. package/dist/core/ClientInteractions.js +26 -2
  59. package/dist/core/ClientInteractions.js.map +1 -1
  60. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  61. package/dist/core/CoreSchemeServices.js +1 -0
  62. package/dist/core/CoreSchemeServices.js.map +1 -1
  63. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  64. package/dist/core/DataStatementRunner.js +198 -148
  65. package/dist/core/DataStatementRunner.js.map +1 -1
  66. package/dist/core/Dispatcher.d.ts +18 -5
  67. package/dist/core/Dispatcher.d.ts.map +1 -1
  68. package/dist/core/Dispatcher.js +135 -114
  69. package/dist/core/Dispatcher.js.map +1 -1
  70. package/dist/core/Dispatcher.sql +11 -26
  71. package/dist/core/DurableStatement.d.ts +4 -1
  72. package/dist/core/DurableStatement.d.ts.map +1 -1
  73. package/dist/core/DurableStatement.js +4 -4
  74. package/dist/core/DurableStatement.js.map +1 -1
  75. package/dist/core/EditMutations.d.ts.map +1 -1
  76. package/dist/core/EditMutations.js +5 -2
  77. package/dist/core/EditMutations.js.map +1 -1
  78. package/dist/core/Engine.d.ts +11 -9
  79. package/dist/core/Engine.d.ts.map +1 -1
  80. package/dist/core/Engine.js +27 -65
  81. package/dist/core/Engine.js.map +1 -1
  82. package/dist/core/Engine.sql +2 -22
  83. package/dist/core/EnvFlags.d.ts.map +1 -1
  84. package/dist/core/EnvFlags.js +4 -2
  85. package/dist/core/EnvFlags.js.map +1 -1
  86. package/dist/core/ExecutionOutputs.sql +8 -0
  87. package/dist/core/ExecutorRegistry.d.ts +4 -0
  88. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  89. package/dist/core/ExecutorRegistry.js +3 -1
  90. package/dist/core/ExecutorRegistry.js.map +1 -1
  91. package/dist/core/KillHandler.d.ts.map +1 -1
  92. package/dist/core/KillHandler.js +7 -12
  93. package/dist/core/KillHandler.js.map +1 -1
  94. package/dist/core/Knob.d.ts +9 -0
  95. package/dist/core/Knob.d.ts.map +1 -0
  96. package/dist/core/Knob.js +50 -0
  97. package/dist/core/Knob.js.map +1 -0
  98. package/dist/core/LogBody.d.ts.map +1 -1
  99. package/dist/core/LogBody.js +8 -36
  100. package/dist/core/LogBody.js.map +1 -1
  101. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  102. package/dist/core/LogEntryProjection.js +8 -10
  103. package/dist/core/LogEntryProjection.js.map +1 -1
  104. package/dist/core/LogVisibility.d.ts.map +1 -1
  105. package/dist/core/LogVisibility.js +2 -1
  106. package/dist/core/LogVisibility.js.map +1 -1
  107. package/dist/core/LogWriter.d.ts.map +1 -1
  108. package/dist/core/LogWriter.js +11 -9
  109. package/dist/core/LogWriter.js.map +1 -1
  110. package/dist/core/LoopDriver.d.ts +1 -1
  111. package/dist/core/LoopDriver.d.ts.map +1 -1
  112. package/dist/core/LoopDriver.js +24 -32
  113. package/dist/core/LoopDriver.js.map +1 -1
  114. package/dist/core/LoopLifecycle.d.ts +4 -17
  115. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  116. package/dist/core/LoopLifecycle.js +20 -22
  117. package/dist/core/LoopLifecycle.js.map +1 -1
  118. package/dist/core/LoopLifecycle.sql +36 -49
  119. package/dist/core/LoopOutcome.d.ts +10 -0
  120. package/dist/core/LoopOutcome.d.ts.map +1 -0
  121. package/dist/core/LoopOutcome.js +28 -0
  122. package/dist/core/LoopOutcome.js.map +1 -0
  123. package/dist/core/LoopPolicies.d.ts +7 -0
  124. package/dist/core/LoopPolicies.d.ts.map +1 -0
  125. package/dist/core/LoopPolicies.js +37 -0
  126. package/dist/core/LoopPolicies.js.map +1 -0
  127. package/dist/core/MessageResources.d.ts +15 -0
  128. package/dist/core/MessageResources.d.ts.map +1 -0
  129. package/dist/core/MessageResources.js +46 -0
  130. package/dist/core/MessageResources.js.map +1 -0
  131. package/dist/core/MessageResources.sql +36 -0
  132. package/dist/core/ModelCall.d.ts.map +1 -1
  133. package/dist/core/ModelCall.js +2 -6
  134. package/dist/core/ModelCall.js.map +1 -1
  135. package/dist/core/ModelCall.sql +7 -36
  136. package/dist/core/OperatorConfig.d.ts +2 -1
  137. package/dist/core/OperatorConfig.d.ts.map +1 -1
  138. package/dist/core/OperatorConfig.js +14 -6
  139. package/dist/core/OperatorConfig.js.map +1 -1
  140. package/dist/core/PacketBuilder.d.ts.map +1 -1
  141. package/dist/core/PacketBuilder.js +20 -35
  142. package/dist/core/PacketBuilder.js.map +1 -1
  143. package/dist/core/PacketBuilder.sql +24 -6
  144. package/dist/core/PatternSelection.d.ts +1 -1
  145. package/dist/core/PatternSelection.d.ts.map +1 -1
  146. package/dist/core/ProposalLifecycle.d.ts +3 -1
  147. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  148. package/dist/core/ProposalLifecycle.js +93 -28
  149. package/dist/core/ProposalLifecycle.js.map +1 -1
  150. package/dist/core/ProviderInstantiate.d.ts +1 -0
  151. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  152. package/dist/core/ProviderInstantiate.js +12 -7
  153. package/dist/core/ProviderInstantiate.js.map +1 -1
  154. package/dist/core/ReasoningView.d.ts +1 -2
  155. package/dist/core/ReasoningView.d.ts.map +1 -1
  156. package/dist/core/ReasoningView.js +9 -20
  157. package/dist/core/ReasoningView.js.map +1 -1
  158. package/dist/core/ResourceBindings.d.ts.map +1 -1
  159. package/dist/core/ResourceBindings.js +5 -4
  160. package/dist/core/ResourceBindings.js.map +1 -1
  161. package/dist/core/ResourceMutations.d.ts +4 -4
  162. package/dist/core/ResourceMutations.d.ts.map +1 -1
  163. package/dist/core/ResourceMutations.js +2 -3
  164. package/dist/core/ResourceMutations.js.map +1 -1
  165. package/dist/core/ResourceSelector.d.ts +10 -3
  166. package/dist/core/ResourceSelector.d.ts.map +1 -1
  167. package/dist/core/ResourceSelector.js +52 -13
  168. package/dist/core/ResourceSelector.js.map +1 -1
  169. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  170. package/dist/core/ResourceTransfers.js +4 -2
  171. package/dist/core/ResourceTransfers.js.map +1 -1
  172. package/dist/core/RuntimeWorker.d.ts.map +1 -1
  173. package/dist/core/RuntimeWorker.js +6 -1
  174. package/dist/core/RuntimeWorker.js.map +1 -1
  175. package/dist/core/RuntimeWorker.sql +7 -1
  176. package/dist/core/SchemeRegistry.d.ts +2 -0
  177. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  178. package/dist/core/SchemeRegistry.js +12 -6
  179. package/dist/core/SchemeRegistry.js.map +1 -1
  180. package/dist/core/StoredPacket.d.ts +3 -1
  181. package/dist/core/StoredPacket.d.ts.map +1 -1
  182. package/dist/core/StoredPacket.js +7 -3
  183. package/dist/core/StoredPacket.js.map +1 -1
  184. package/dist/core/StrikeRail.d.ts +2 -2
  185. package/dist/core/StrikeRail.d.ts.map +1 -1
  186. package/dist/core/StrikeRail.js +15 -7
  187. package/dist/core/StrikeRail.js.map +1 -1
  188. package/dist/core/TerminalResult.d.ts +2 -2
  189. package/dist/core/TerminalResult.d.ts.map +1 -1
  190. package/dist/core/TerminalResult.js +15 -8
  191. package/dist/core/TerminalResult.js.map +1 -1
  192. package/dist/core/ToolInputSchema.d.ts.map +1 -1
  193. package/dist/core/ToolInputSchema.js +24 -8
  194. package/dist/core/ToolInputSchema.js.map +1 -1
  195. package/dist/core/ToolResources.d.ts +1 -0
  196. package/dist/core/ToolResources.d.ts.map +1 -1
  197. package/dist/core/ToolResources.js +50 -26
  198. package/dist/core/ToolResources.js.map +1 -1
  199. package/dist/core/Turn.d.ts +3 -1
  200. package/dist/core/Turn.d.ts.map +1 -1
  201. package/dist/core/Turn.js +4 -1
  202. package/dist/core/Turn.js.map +1 -1
  203. package/dist/core/Turn.sql +14 -2
  204. package/dist/core/TurnDispositionHandler.d.ts +13 -23
  205. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  206. package/dist/core/TurnDispositionHandler.js +30 -180
  207. package/dist/core/TurnDispositionHandler.js.map +1 -1
  208. package/dist/core/TurnMaterialization.d.ts +9 -7
  209. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  210. package/dist/core/TurnMaterialization.js +66 -46
  211. package/dist/core/TurnMaterialization.js.map +1 -1
  212. package/dist/core/TurnMaterialization.sql +23 -6
  213. package/dist/core/TurnOps.d.ts.map +1 -1
  214. package/dist/core/TurnOps.js +2 -2
  215. package/dist/core/TurnOps.js.map +1 -1
  216. package/dist/core/TurnRunner.d.ts +2 -8
  217. package/dist/core/TurnRunner.d.ts.map +1 -1
  218. package/dist/core/TurnRunner.js +1116 -1123
  219. package/dist/core/TurnRunner.js.map +1 -1
  220. package/dist/core/TurnRunner.sql +1 -24
  221. package/dist/core/TurnSources.sql +42 -11
  222. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  223. package/dist/core/WorkerControlHandler.js +23 -0
  224. package/dist/core/WorkerControlHandler.js.map +1 -1
  225. package/dist/core/WorkerName.d.ts +3 -6
  226. package/dist/core/WorkerName.d.ts.map +1 -1
  227. package/dist/core/WorkerName.js +10 -26
  228. package/dist/core/WorkerName.js.map +1 -1
  229. package/dist/core/WorkspaceGate.js +4 -4
  230. package/dist/core/WorkspaceGate.js.map +1 -1
  231. package/dist/core/ambient.sql +45 -19
  232. package/dist/core/attachments.d.ts +3 -1
  233. package/dist/core/attachments.d.ts.map +1 -1
  234. package/dist/core/attachments.js +4 -0
  235. package/dist/core/attachments.js.map +1 -1
  236. package/dist/core/caps/CoreInteractionCaps.d.ts +1 -1
  237. package/dist/core/caps/CoreInteractionCaps.d.ts.map +1 -1
  238. package/dist/core/caps/CoreInteractionCaps.js +4 -2
  239. package/dist/core/caps/CoreInteractionCaps.js.map +1 -1
  240. package/dist/core/caps/DbChannelCaps.js +6 -6
  241. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  242. package/dist/core/caps/DbEntryCaps.js +1 -1
  243. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  244. package/dist/core/caps/DbMessageCaps.d.ts +10 -0
  245. package/dist/core/caps/DbMessageCaps.d.ts.map +1 -0
  246. package/dist/core/caps/DbMessageCaps.js +39 -0
  247. package/dist/core/caps/DbMessageCaps.js.map +1 -0
  248. package/dist/core/caps/DbProjectionCaps.d.ts +2 -2
  249. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  250. package/dist/core/caps/DbProjectionCaps.js +10 -4
  251. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  252. package/dist/core/caps/SchemeCtxImpl.d.ts +3 -1
  253. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  254. package/dist/core/caps/SchemeCtxImpl.js +11 -0
  255. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  256. package/dist/core/env-catalog.d.ts +28 -0
  257. package/dist/core/env-catalog.d.ts.map +1 -0
  258. package/dist/core/env-catalog.js +99 -0
  259. package/dist/core/env-catalog.js.map +1 -0
  260. package/dist/core/file-materialization.js +1 -1
  261. package/dist/core/file-materialization.js.map +1 -1
  262. package/dist/core/fork.sql +7 -6
  263. package/dist/core/git-state.d.ts +3 -2
  264. package/dist/core/git-state.d.ts.map +1 -1
  265. package/dist/core/git-state.js +38 -21
  266. package/dist/core/git-state.js.map +1 -1
  267. package/dist/core/operation-target-groups.d.ts.map +1 -1
  268. package/dist/core/operation-target-groups.js +2 -1
  269. package/dist/core/operation-target-groups.js.map +1 -1
  270. package/dist/core/packet-inject.js +1 -1
  271. package/dist/core/packet-wire.d.ts +11 -0
  272. package/dist/core/packet-wire.d.ts.map +1 -1
  273. package/dist/core/packet-wire.js +382 -333
  274. package/dist/core/packet-wire.js.map +1 -1
  275. package/dist/core/plurnk-uri.d.ts +4 -5
  276. package/dist/core/plurnk-uri.d.ts.map +1 -1
  277. package/dist/core/plurnk-uri.js +10 -31
  278. package/dist/core/plurnk-uri.js.map +1 -1
  279. package/dist/core/scheme-types.d.ts +3 -1
  280. package/dist/core/scheme-types.d.ts.map +1 -1
  281. package/dist/core/scheme-types.js +1 -1
  282. package/dist/core/scheme-types.js.map +1 -1
  283. package/dist/core/teaching.d.ts.map +1 -1
  284. package/dist/core/teaching.js +2 -1
  285. package/dist/core/teaching.js.map +1 -1
  286. package/dist/core/types.d.ts +1 -2
  287. package/dist/core/types.d.ts.map +1 -1
  288. package/dist/core/types.js +1 -1
  289. package/dist/core/types.js.map +1 -1
  290. package/dist/core/worker-ops.sql +3 -8
  291. package/dist/digest/Digest.d.ts.map +1 -1
  292. package/dist/digest/Digest.js +37 -30
  293. package/dist/digest/Digest.js.map +1 -1
  294. package/dist/digest/DigestRender.d.ts +2 -0
  295. package/dist/digest/DigestRender.d.ts.map +1 -1
  296. package/dist/digest/DigestRender.js +97 -9
  297. package/dist/digest/DigestRender.js.map +1 -1
  298. package/dist/digest/DigestRequiem.d.ts.map +1 -1
  299. package/dist/digest/DigestRequiem.js +13 -15
  300. package/dist/digest/DigestRequiem.js.map +1 -1
  301. package/dist/digest/digest-db.d.ts +3 -0
  302. package/dist/digest/digest-db.d.ts.map +1 -0
  303. package/dist/digest/digest-db.js +68 -0
  304. package/dist/digest/digest-db.js.map +1 -0
  305. package/dist/digest/digest-paths.d.ts +6 -0
  306. package/dist/digest/digest-paths.d.ts.map +1 -0
  307. package/dist/digest/digest-paths.js +23 -0
  308. package/dist/digest/digest-paths.js.map +1 -0
  309. package/dist/digest/digest-rows.d.ts +21 -0
  310. package/dist/digest/digest-rows.d.ts.map +1 -1
  311. package/dist/digest/digest.sql +24 -5
  312. package/dist/index.d.ts +0 -1
  313. package/dist/index.d.ts.map +1 -1
  314. package/dist/index.js +0 -1
  315. package/dist/index.js.map +1 -1
  316. package/dist/observe/genai.d.ts +2 -2
  317. package/dist/observe/genai.d.ts.map +1 -1
  318. package/dist/observe/genai.js +15 -5
  319. package/dist/observe/genai.js.map +1 -1
  320. package/dist/schemes/EffectPolicy.d.ts +0 -2
  321. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  322. package/dist/schemes/EffectPolicy.js +25 -36
  323. package/dist/schemes/EffectPolicy.js.map +1 -1
  324. package/dist/schemes/Exec.d.ts +4 -5
  325. package/dist/schemes/Exec.d.ts.map +1 -1
  326. package/dist/schemes/Exec.js +129 -82
  327. package/dist/schemes/Exec.js.map +1 -1
  328. package/dist/schemes/ExecOutputScheme.d.ts +6 -5
  329. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  330. package/dist/schemes/ExecOutputScheme.js +49 -16
  331. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  332. package/dist/schemes/ExecScheduler.js +2 -2
  333. package/dist/schemes/ExecScheduler.js.map +1 -1
  334. package/dist/schemes/File.d.ts.map +1 -1
  335. package/dist/schemes/File.js +30 -21
  336. package/dist/schemes/File.js.map +1 -1
  337. package/dist/schemes/Log.d.ts +4 -4
  338. package/dist/schemes/Log.d.ts.map +1 -1
  339. package/dist/schemes/Log.js +30 -10
  340. package/dist/schemes/Log.js.map +1 -1
  341. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  342. package/dist/schemes/QuestionTool.js +15 -2
  343. package/dist/schemes/QuestionTool.js.map +1 -1
  344. package/dist/schemes/TurnSource.d.ts +3 -2
  345. package/dist/schemes/TurnSource.d.ts.map +1 -1
  346. package/dist/schemes/TurnSource.js +87 -41
  347. package/dist/schemes/TurnSource.js.map +1 -1
  348. package/dist/schemes/Worker.d.ts.map +1 -1
  349. package/dist/schemes/Worker.js +22 -56
  350. package/dist/schemes/Worker.js.map +1 -1
  351. package/dist/schemes/_entry-crud.js +6 -6
  352. package/dist/schemes/_entry-crud.js.map +1 -1
  353. package/dist/schemes/_entry-crud.sql +37 -17
  354. package/dist/schemes/_entry-find.d.ts.map +1 -1
  355. package/dist/schemes/_entry-find.js +6 -5
  356. package/dist/schemes/_entry-find.js.map +1 -1
  357. package/dist/schemes/_entry-fts.d.ts.map +1 -1
  358. package/dist/schemes/_entry-fts.js +6 -3
  359. package/dist/schemes/_entry-fts.js.map +1 -1
  360. package/dist/schemes/_entry-fts.sql +25 -6
  361. package/dist/schemes/_entry-manifest.d.ts +1 -1
  362. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  363. package/dist/schemes/_entry-manifest.js +10 -17
  364. package/dist/schemes/_entry-manifest.js.map +1 -1
  365. package/dist/schemes/_entry-manifest.sql +1 -1
  366. package/dist/schemes/_entry-ops.js +4 -4
  367. package/dist/schemes/_entry-ops.js.map +1 -1
  368. package/dist/schemes/_entry-ops.sql +2 -2
  369. package/dist/schemes/_entry-readable.d.ts.map +1 -1
  370. package/dist/schemes/_entry-readable.js +5 -4
  371. package/dist/schemes/_entry-readable.js.map +1 -1
  372. package/dist/schemes/_entry-send.js +2 -2
  373. package/dist/schemes/_entry-send.js.map +1 -1
  374. package/dist/schemes/_search-exclusion.d.ts +1 -0
  375. package/dist/schemes/_search-exclusion.d.ts.map +1 -1
  376. package/dist/schemes/_search-exclusion.js +12 -0
  377. package/dist/schemes/_search-exclusion.js.map +1 -1
  378. package/dist/schemes/_search-index.d.ts +5 -1
  379. package/dist/schemes/_search-index.d.ts.map +1 -1
  380. package/dist/schemes/_search-index.js +99 -59
  381. package/dist/schemes/_search-index.js.map +1 -1
  382. package/dist/schemes/_search-index.sql +17 -0
  383. package/dist/schemes/exec-abort.d.ts.map +1 -1
  384. package/dist/schemes/exec-abort.js +5 -4
  385. package/dist/schemes/exec-abort.js.map +1 -1
  386. package/dist/schemes/exec-env.d.ts +3 -0
  387. package/dist/schemes/exec-env.d.ts.map +1 -1
  388. package/dist/schemes/exec-env.js +66 -15
  389. package/dist/schemes/exec-env.js.map +1 -1
  390. package/dist/schemes/exec-lifetime.d.ts +11 -0
  391. package/dist/schemes/exec-lifetime.d.ts.map +1 -0
  392. package/dist/schemes/exec-lifetime.js +29 -0
  393. package/dist/schemes/exec-lifetime.js.map +1 -0
  394. package/dist/schemes/exec-runtime.d.ts +1 -1
  395. package/dist/schemes/exec-runtime.d.ts.map +1 -1
  396. package/dist/schemes/exec-runtime.js +1 -1
  397. package/dist/schemes/exec-runtime.js.map +1 -1
  398. package/dist/server/ClientReads.d.ts.map +1 -1
  399. package/dist/server/ClientReads.js +5 -2
  400. package/dist/server/ClientReads.js.map +1 -1
  401. package/dist/server/Daemon.d.ts +31 -7
  402. package/dist/server/Daemon.d.ts.map +1 -1
  403. package/dist/server/Daemon.js +137 -60
  404. package/dist/server/Daemon.js.map +1 -1
  405. package/dist/server/DaemonModule.d.ts +25 -6
  406. package/dist/server/DaemonModule.d.ts.map +1 -1
  407. package/dist/server/DrainSupervisor.d.ts +13 -11
  408. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  409. package/dist/server/DrainSupervisor.js +87 -98
  410. package/dist/server/DrainSupervisor.js.map +1 -1
  411. package/dist/server/EnvFunctionality.d.ts +52 -0
  412. package/dist/server/EnvFunctionality.d.ts.map +1 -0
  413. package/dist/server/EnvFunctionality.js +199 -0
  414. package/dist/server/EnvFunctionality.js.map +1 -0
  415. package/dist/server/Functionality.d.ts +4 -2
  416. package/dist/server/Functionality.d.ts.map +1 -1
  417. package/dist/server/Functionality.js +250 -106
  418. package/dist/server/Functionality.js.map +1 -1
  419. package/dist/server/FunctionalityManager.d.ts +5 -1
  420. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  421. package/dist/server/FunctionalityManager.js +24 -8
  422. package/dist/server/FunctionalityManager.js.map +1 -1
  423. package/dist/server/HttpListener.d.ts +16 -0
  424. package/dist/server/HttpListener.d.ts.map +1 -0
  425. package/dist/server/HttpListener.js +81 -0
  426. package/dist/server/HttpListener.js.map +1 -0
  427. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  428. package/dist/server/MembersFunctionality.js +12 -17
  429. package/dist/server/MembersFunctionality.js.map +1 -1
  430. package/dist/server/PlurnkSkill.d.ts.map +1 -1
  431. package/dist/server/PlurnkSkill.js +1 -0
  432. package/dist/server/PlurnkSkill.js.map +1 -1
  433. package/dist/server/Retention.d.ts +14 -0
  434. package/dist/server/Retention.d.ts.map +1 -1
  435. package/dist/server/Retention.js +52 -4
  436. package/dist/server/Retention.js.map +1 -1
  437. package/dist/server/Retention.sql +55 -1
  438. package/dist/server/ServiceModules.d.ts.map +1 -1
  439. package/dist/server/ServiceModules.js +2 -0
  440. package/dist/server/ServiceModules.js.map +1 -1
  441. package/dist/server/SkillsFunctionality.d.ts +2 -0
  442. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  443. package/dist/server/SkillsFunctionality.js +27 -17
  444. package/dist/server/SkillsFunctionality.js.map +1 -1
  445. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -1
  446. package/dist/server/WorkspaceCapabilities.js +1 -0
  447. package/dist/server/WorkspaceCapabilities.js.map +1 -1
  448. package/dist/server/WorkspaceResidency.d.ts +2 -0
  449. package/dist/server/WorkspaceResidency.d.ts.map +1 -1
  450. package/dist/server/WorkspaceResidency.js +27 -0
  451. package/dist/server/WorkspaceResidency.js.map +1 -1
  452. package/dist/server/WorkspaceStorage.d.ts +8 -0
  453. package/dist/server/WorkspaceStorage.d.ts.map +1 -0
  454. package/dist/server/WorkspaceStorage.js +26 -0
  455. package/dist/server/WorkspaceStorage.js.map +1 -0
  456. package/dist/server/client-input.d.ts +4 -3
  457. package/dist/server/client-input.d.ts.map +1 -1
  458. package/dist/server/client-input.js +25 -27
  459. package/dist/server/client-input.js.map +1 -1
  460. package/dist/server/dispatch-as-plurnk.js +2 -2
  461. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  462. package/dist/server/drain.sql +69 -132
  463. package/dist/server/envelope.d.ts +2 -3
  464. package/dist/server/envelope.d.ts.map +1 -1
  465. package/dist/server/envelope.js +7 -21
  466. package/dist/server/envelope.js.map +1 -1
  467. package/dist/server/envelope.sql +10 -6
  468. package/dist/server/exec-poll-backoff.js +3 -3
  469. package/dist/server/exec-poll-backoff.js.map +1 -1
  470. package/dist/server/lifecycle-recovery.sql +12 -38
  471. package/dist/server/logEntry.sql +2 -2
  472. package/dist/server/loopDocs.js +3 -3
  473. package/dist/server/loopDocs.sql +4 -2
  474. package/dist/server/model-catalog.d.ts.map +1 -1
  475. package/dist/server/model-catalog.js +2 -2
  476. package/dist/server/model-catalog.js.map +1 -1
  477. package/dist/server/seam-loop.sql +0 -1
  478. package/dist/server/workspace-capabilities.sql +45 -0
  479. package/dist/server/workspace-storage.sql +8 -0
  480. package/dist/service.d.ts.map +1 -1
  481. package/dist/service.js +37 -11
  482. package/dist/service.js.map +1 -1
  483. package/docs/copy-move.md +31 -0
  484. package/docs/env.md +67 -0
  485. package/docs/members.md +4 -4
  486. package/docs/skills.md +2 -2
  487. package/migrations/002_workers.sql +41 -17
  488. package/migrations/003_loops.sql +82 -28
  489. package/migrations/004_inference.sql +53 -12
  490. package/migrations/005_entries.sql +135 -14
  491. package/migrations/006_log.sql +79 -24
  492. package/migrations/007_subscriptions.sql +10 -15
  493. package/package.json +45 -36
  494. package/dist/core/PromptFrames.d.ts +0 -12
  495. package/dist/core/PromptFrames.d.ts.map +0 -1
  496. package/dist/core/PromptFrames.js +0 -28
  497. package/dist/core/PromptFrames.js.map +0 -1
  498. package/dist/schemes/Prompt.d.ts +0 -8
  499. package/dist/schemes/Prompt.d.ts.map +0 -1
  500. package/dist/schemes/Prompt.js +0 -25
  501. package/dist/schemes/Prompt.js.map +0 -1
@@ -17,8 +17,8 @@ export interface WorkerRow {
17
17
  lifecycle: WorkerLifecycle;
18
18
  }
19
19
  export declare const projectWorkerRow: <T extends {
20
- latestLoopStatus: number | null;
21
- }>(row: T) => Omit<T, "latestLoopStatus"> & {
20
+ loopObservations: string;
21
+ }>(row: T) => Omit<T, "loopObservations"> & {
22
22
  lifecycle: WorkerLifecycle;
23
23
  };
24
24
  export interface WorkerQuery {
@@ -51,7 +51,6 @@ export default class Envelope {
51
51
  name: string;
52
52
  }>;
53
53
  static ensureModelWorker(db: Db, workspaceId: number): Promise<number>;
54
- static ensurePlurnkWorker(db: Db, workspaceId: number): Promise<number>;
55
54
  static listWorkersForWorkspace(db: Db, workspaceId: number, query?: WorkerQuery): Promise<WorkerRow[]>;
56
55
  static listPromptsForWorkspace(db: Db, workspaceId: number, limit: number): Promise<string[]>;
57
56
  static closeClientLoop(db: Db, loopId: number, result: SchemeResult): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,18 @@
3
3
  // A client-interface module receives this value from an explicit workspace create
4
4
  // or attach call. Core creates or selects the client worker but retains no transport
5
5
  // binding; each dispatched client action allocates and settles its own administrative loop.
6
+ import AdministrativeLoop from "../core/AdministrativeLoop.js";
6
7
  import { randomBytes } from "node:crypto";
7
8
  import GitMembership from "../core/git-membership.js";
8
9
  import Results, { OperationFailureError } from "../core/results.js";
9
10
  import LoopLifecycle from "../core/LoopLifecycle.js";
10
11
  import WorkerName from "../core/WorkerName.js";
11
- import { lifecycleOfLoopStatus } from "@plurnk/plurnk-contracts";
12
+ import { lifecycleOfLoopStatus, selectWorkerLoop } from "@plurnk/plurnk-contracts";
12
13
  const envelopeFailure = (owner, code, status, detail, extensions = {}) => new OperationFailureError(Results.failure(owner, code, status, detail, {}, extensions));
13
- // The SQL projects the latest loop's status; the shared vocabulary turns it into a lifecycle word.
14
14
  export const projectWorkerRow = (row) => {
15
- const { latestLoopStatus, ...rest } = row;
16
- return { ...rest, lifecycle: lifecycleOfLoopStatus(latestLoopStatus) };
15
+ const { loopObservations, ...rest } = row;
16
+ const loops = JSON.parse(loopObservations);
17
+ return { ...rest, lifecycle: lifecycleOfLoopStatus(selectWorkerLoop(loops)?.status) };
17
18
  };
18
19
  export default class Envelope {
19
20
  // {§workspace-auto-name} — five characters from the line-anchor alphabet, no prefix:
@@ -110,10 +111,7 @@ export default class Envelope {
110
111
  // Client action loop allocator. One action allocates one administrative
111
112
  // loop; its statements become ordered turns and settlement closes the loop.
112
113
  static async ensureClientLoop(db, workerId) {
113
- const loop = await db.envelope_insert_client_loop.get({ worker_id: workerId });
114
- if (loop === undefined)
115
- throw new Error("ensureClientLoop: loop insert returned no row");
116
- return loop.id;
114
+ return (await AdministrativeLoop.open(db, workerId)).id;
117
115
  }
118
116
  // Lazy model-worker allocator ({§connection-lifecycle}, {§machine-processes} — the client writes to its own worker).
119
117
  // The model's conversation lives in its own worker, distinct from the client's
@@ -146,18 +144,6 @@ export default class Envelope {
146
144
  });
147
145
  return worker.id;
148
146
  }
149
- // Self-hosting keystone ({§actor-boundary-self-hosting}): the workspace's
150
- // reserved `plurnk` worker. One durable worker per workspace, reused across
151
- // the ephemeral administrative loops that dispatch ordinary runtime-owned ops.
152
- static async ensurePlurnkWorker(db, workspaceId) {
153
- const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: "plurnk" });
154
- if (existing !== undefined)
155
- return existing.id;
156
- const worker = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: "plurnk", origin: "_plurnk" });
157
- if (worker === undefined)
158
- throw new Error("ensurePlurnkWorker: worker insert returned no row");
159
- return worker.id;
160
- }
161
147
  static async listWorkersForWorkspace(db, workspaceId, query = {}) {
162
148
  const filterParent = Object.hasOwn(query, "parentWorkerId");
163
149
  const rows = await db.envelope_list_workers_for_workspace.all({
@@ -177,7 +163,7 @@ export default class Envelope {
177
163
  static async closeClientLoop(db, loopId, result) {
178
164
  const exact = structuredClone(Results.assert(result));
179
165
  if (exact.problem !== undefined && exact.problem.instance === undefined) {
180
- Results.attachInstance(exact, `loop:///${loopId}`);
166
+ Results.attachInstance(exact, await LoopLifecycle.address(db, loopId));
181
167
  }
182
168
  await db.envelope_close_client_loop.run({
183
169
  status: LoopLifecycle.projectStatus(exact.status),
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
@@ -34,14 +34,15 @@ VALUES ($workspace_id, $name, $origin)
34
34
  RETURNING id, name, origin;
35
35
 
36
36
  -- {§application-worker-observation}: kind is minted lineage (fork boundary → fork, other child →
37
- -- work, root → conversation); latestLoopStatus feeds the shared lifecycle vocabulary in TS.
37
+ -- work, root → conversation); loop observations feed the shared lifecycle selector in TS.
38
38
  -- PREP: envelope_get_worker_by_id
39
39
  SELECT id, name, workspace_id, created_at, origin,
40
40
  parent_worker_id AS parentWorkerId,
41
41
  CASE WHEN fork_event_boundary IS NOT NULL THEN 'fork'
42
42
  WHEN parent_worker_id IS NOT NULL THEN 'work'
43
43
  ELSE 'conversation' END AS kind,
44
- (SELECT l.status FROM work_loops l WHERE l.worker_id = workers.id ORDER BY l.sequence DESC LIMIT 1) AS latestLoopStatus
44
+ (SELECT json_group_array(json_object('status', l.status, 'sequence', l.sequence, 'terminatedAt', l.terminated_at))
45
+ FROM work_loops l WHERE l.worker_id = workers.id) AS loopObservations
45
46
  FROM workers
46
47
  WHERE id = $id;
47
48
 
@@ -51,7 +52,8 @@ SELECT id, name, workspace_id, created_at, origin,
51
52
  CASE WHEN fork_event_boundary IS NOT NULL THEN 'fork'
52
53
  WHEN parent_worker_id IS NOT NULL THEN 'work'
53
54
  ELSE 'conversation' END AS kind,
54
- (SELECT l.status FROM work_loops l WHERE l.worker_id = workers.id ORDER BY l.sequence DESC LIMIT 1) AS latestLoopStatus
55
+ (SELECT json_group_array(json_object('status', l.status, 'sequence', l.sequence, 'terminatedAt', l.terminated_at))
56
+ FROM work_loops l WHERE l.worker_id = workers.id) AS loopObservations
55
57
  FROM workers
56
58
  WHERE workspace_id = $workspace_id AND name = $name;
57
59
 
@@ -60,7 +62,8 @@ SELECT id, name, created_at, origin, parent_worker_id AS parentWorkerId,
60
62
  CASE WHEN fork_event_boundary IS NOT NULL THEN 'fork'
61
63
  WHEN parent_worker_id IS NOT NULL THEN 'work'
62
64
  ELSE 'conversation' END AS kind,
63
- (SELECT l.status FROM work_loops l WHERE l.worker_id = workers.id ORDER BY l.sequence DESC LIMIT 1) AS latestLoopStatus
65
+ (SELECT json_group_array(json_object('status', l.status, 'sequence', l.sequence, 'terminatedAt', l.terminated_at))
66
+ FROM work_loops l WHERE l.worker_id = workers.id) AS loopObservations
64
67
  FROM workers
65
68
  WHERE workspace_id = $workspace_id
66
69
  AND ($origin IS NULL OR origin = $origin)
@@ -129,8 +132,9 @@ LIMIT $limit;
129
132
  -- PREP: envelope_insert_client_loop
130
133
  -- sequence is auto-computed: 1 + max(existing sequence in this worker) so
131
134
  -- multiple client connections attaching to the same worker get distinct loops.
132
- INSERT INTO loops (worker_id, sequence, status, prompt)
133
- VALUES ($worker_id, COALESCE((SELECT MAX(sequence) FROM loops WHERE worker_id = $worker_id), 0) + 1, 102, '')
135
+ -- An administrative loop runs no model turns, so no turn ceiling governs it (-1).
136
+ INSERT INTO loops (worker_id, sequence, status, prompt, policy, max_turns)
137
+ VALUES ($worker_id, COALESCE((SELECT MAX(sequence) FROM loops WHERE worker_id = $worker_id), 0) + 1, 102, '', $policy, -1)
134
138
  RETURNING id, sequence;
135
139
 
136
140
  -- PREP: envelope_close_client_loop
@@ -1,6 +1,6 @@
1
- // {§exec-poll} — the exponential backoff schedule for a parked exec stream with
2
- // no explicit `<,P>` cadence. Wake N fires at base·2^min(N, turns-1) seconds — doubling for `turns`
3
- // steps, then holding at the cap forever (never reverts to blind). Pure so the curve is testable
1
+ // {§exec-lifetime} — the exponential backoff schedule for a parked exec stream: cadence is the
2
+ // daemon's alone. Wake N fires at base·2^min(N, turns-1) seconds — doubling for `turns` steps,
3
+ // then holding at the cap forever (never reverts to blind). Pure so the curve is testable
4
4
  // without racing a real timer.
5
5
  export const execPollBackoffMs = (step, baseSec, turns) => baseSec * 2 ** Math.min(Math.max(step, 0), Math.max(turns - 1, 0)) * 1000;
6
6
  //# sourceMappingURL=exec-poll-backoff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec-poll-backoff.js","sourceRoot":"","sources":["../../src/server/exec-poll-backoff.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oGAAoG;AACpG,iGAAiG;AACjG,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAa,EAAU,EAAE,CACtF,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"exec-poll-backoff.js","sourceRoot":"","sources":["../../src/server/exec-poll-backoff.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,+FAA+F;AAC/F,0FAA0F;AAC1F,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAa,EAAU,EAAE,CACtF,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC"}
@@ -14,7 +14,7 @@ SET status = 500,
14
14
  'title', 'Owner vanished',
15
15
  'status', 500,
16
16
  'detail', 'The daemon restarted while this loop was active; its process-local owner no longer exists.',
17
- 'instance', 'loop:///' || id
17
+ 'instance', 'ops://' || (SELECT name FROM workers WHERE workers.id = loops.worker_id) || '/' || sequence
18
18
  )
19
19
  )
20
20
  WHERE status = 102;
@@ -35,8 +35,8 @@ WHERE state = 'pending'
35
35
  -- PREP: recovery_fail_open_model_calls
36
36
  -- The process-local model-call owner vanished. Physical requests have already
37
37
  -- been settled above, preserving unknown evidence without fabricating zero use.
38
- UPDATE model_calls
39
- SET failure = json_object(
38
+ INSERT INTO model_call_observation (id, failure)
39
+ SELECT mc.id, json_object(
40
40
  'status', 500,
41
41
  'problem', json_object(
42
42
  'type', 'https://problems.plurnk.xyz/lifecycle/recovery/owner-vanished',
@@ -45,7 +45,8 @@ SET failure = json_object(
45
45
  'detail', 'The daemon restarted before this provider response was durably observed; whether the provider completed the call is unknown.'
46
46
  )
47
47
  )
48
- WHERE (SELECT state FROM inference_calls WHERE id = model_calls.id) = 'pending';
48
+ FROM model_calls mc
49
+ WHERE (SELECT state FROM inference_calls WHERE id = mc.id) = 'pending';
49
50
 
50
51
  -- PREP: recovery_fail_open_turns
51
52
  -- Every open turn has lost its process-local producer, including a narrow crash
@@ -121,33 +122,19 @@ SET closed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now'),
121
122
  WHERE closed_at IS NULL;
122
123
 
123
124
  -- PREP: recovery_resume_unblocked_parks
124
- -- {§loop-wake-identity}: a persisted completion beats a future clock. Otherwise
125
- -- only an untimed, now-empty join wakes here; clock ownership is restored below
125
+ -- {§loop-wake-identity}: a persisted completion beats a future observation. Otherwise
126
+ -- only a now-empty join wakes here; observation ownership is restored below
126
127
  -- through the same scheduler used after a live park.
127
128
  UPDATE loops
128
129
  SET status = 100,
129
- wait_deadline_at = NULL,
130
- wait_poll_interval = NULL,
131
130
  wait_poll_at = NULL
132
131
  WHERE status = 202
133
132
  AND (observed_wake_revision < (SELECT wake_revision FROM workers WHERE id = loops.worker_id)
134
- OR (wait_deadline_at IS NULL
135
- AND COALESCE(wait_poll_interval, 0) = 0
136
- AND NOT EXISTS (
137
- SELECT 1
138
- FROM subscriptions s
139
- WHERE s.worker_id = loops.worker_id AND s.closed_at IS NULL
140
- )
141
- AND NOT EXISTS (
142
- SELECT 1
143
- FROM workers child
144
- JOIN loops child_loop ON child_loop.worker_id = child.id
145
- WHERE child.parent_worker_id = loops.worker_id
146
- AND child_loop.status IN (100, 102, 202)
147
- )));
133
+ OR EXISTS (SELECT 1 FROM loop_obligations held WHERE held.loop_id = loops.id
134
+ AND held.streams = 0 AND held.workers = 0));
148
135
 
149
- -- PREP: recovery_orphan_prompt_sources
150
- -- {§prompt-loop-containment}: finish an absent or partially staged orphan
136
+ -- PREP: recovery_orphan_message_sources
137
+ -- {§message-loop-containment}: finish an absent or partially staged orphan
151
138
  -- recovery before queued drains become visible at boot. A non-queued recovery
152
139
  -- already crossed its delivery boundary and must never be replayed.
153
140
  SELECT source.id AS loop_id, source.worker_id AS worker_id, w.origin
@@ -158,21 +145,8 @@ WHERE source.status IN (200, 413, 429, 499, 500, 504, 508)
158
145
  AND source.terminated_by IS NOT 'cancel'
159
146
  AND source.sequence > w.cancelled_through_sequence
160
147
  AND (recovery.id IS NULL OR recovery.status = 100)
161
- AND EXISTS (
162
- SELECT 1
163
- FROM entries e
164
- JOIN entry_channels c ON c.entry_id = e.id AND c.name = 'body'
165
- WHERE e.scheme = 'prompt'
166
- AND e.workspace_id = w.workspace_id AND e.authority = w.name
167
- AND e.pathname LIKE '/' || source.sequence || '/%'
168
- AND NOT EXISTS (
169
- SELECT 1 FROM log_entries le
170
- WHERE le.loop_id = source.id AND le.origin = '_plurnk' AND le.op = 'prompt'
171
- AND le.scheme = 'prompt' AND le.pathname = e.pathname
172
- )
173
- )
148
+ AND EXISTS (SELECT 1 FROM loop_messages m WHERE m.loop_id = source.id AND m.ordinal > 1 AND m.log_entry_id IS NULL)
174
149
  ORDER BY source.worker_id, source.sequence;
175
-
176
150
  -- PREP: recovery_queued_workers
177
151
  SELECT DISTINCT w.id AS worker_id, w.workspace_id, w.origin
178
152
  FROM workers w
@@ -6,7 +6,7 @@
6
6
  SELECT le.*, l.sequence AS loop_seq, t.sequence AS turn_seq,
7
7
  CASE
8
8
  WHEN le.origin = 'model'
9
- AND le.op IN ('SEND', 'TASK')
9
+ AND le.op IN ('SEND', 'NOTE', 'WAIT')
10
10
  AND json_type(t.packet, '$.assistant.reasoning') = 'text'
11
11
  AND length(json_extract(t.packet, '$.assistant.reasoning')) > 0
12
12
  THEN json_extract(t.packet, '$.assistant.reasoning')
@@ -22,7 +22,7 @@ WHERE le.id = $id;
22
22
  SELECT le.*, l.sequence AS loop_seq, t.sequence AS turn_seq,
23
23
  CASE
24
24
  WHEN le.origin = 'model'
25
- AND le.op IN ('SEND', 'TASK')
25
+ AND le.op IN ('SEND', 'NOTE', 'WAIT')
26
26
  AND json_type(t.packet, '$.assistant.reasoning') = 'text'
27
27
  AND length(json_extract(t.packet, '$.assistant.reasoning')) > 0
28
28
  THEN json_extract(t.packet, '$.assistant.reasoning')
@@ -1,7 +1,7 @@
1
1
  // Worker documentation projections of the shared workspace environment.
2
2
  // Reconcile on reader demand and after workspace Functionality changes. Two private sets run through
3
3
  // an ordinary `_plurnk` turn in the addressed worker ({§actor-boundary-doc-injection}):
4
- // 1. the project AGENTS.md at worker:///_plurnk/agents.md — Engine.runTurn foists
4
+ // 1. the project AGENTS.md at worker:///_plurnk/AGENTS.md — Engine.runTurn foists
5
5
  // its READ at turn 0 ({§turn0-agents-stunt});
6
6
  // 2. the exact current scheme and executable-tool reference set under
7
7
  // worker:///_plurnk/plurnk/ and worker:///_plurnk/tools/ — discovered by the
@@ -79,7 +79,7 @@ export default class LoopDocs {
79
79
  }
80
80
  static async #materialize(engine, db, workspaceId) {
81
81
  // {§turn0-agents-stunt} — the project's AGENTS.md becomes one
82
- // shared worker:///_plurnk/agents.md entry, read at turn 0.
82
+ // shared worker:///_plurnk/AGENTS.md entry, read at turn 0.
83
83
  const workspace = await db.envelope_get_workspace.get({
84
84
  id: workspaceId,
85
85
  });
@@ -91,7 +91,7 @@ export default class LoopDocs {
91
91
  : await readFile(join(workspace.project_root, "AGENTS.md"), "utf8").catch(() => null);
92
92
  const desired = new Map((await engine.referenceEntries(workspaceId)).map(({ pathname, content }) => [pathname, content]));
93
93
  if (agentsContent !== null)
94
- desired.set(generatedPathname("/agents.md"), agentsContent);
94
+ desired.set(generatedPathname("/AGENTS.md"), agentsContent);
95
95
  // #346 — nested AGENTS.md honor the standard's closest-file scope:
96
96
  // each materializes at _plurnk/instructions/<subtree>/AGENTS.md with its
97
97
  // path preserved. No foisted READ and no teaching (operator-ruled):
@@ -4,9 +4,11 @@
4
4
  -- {§functionality-documents}).
5
5
 
6
6
  -- PREP: loop_docs_materialized
7
- SELECT e.pathname, ec.content
7
+ -- An outer join cannot flatten the entry_channels view, so this one reads its tables ({§content-store}).
8
+ SELECT e.pathname, COALESCE(ec.buffer, b.content) AS content
8
9
  FROM entries e
9
- LEFT JOIN entry_channels ec ON ec.entry_id = e.id AND ec.name = 'body'
10
+ LEFT JOIN entry_channel_rows ec ON ec.entry_id = e.id AND ec.name = 'body'
11
+ LEFT JOIN contents b ON b.id = ec.content_id
10
12
  WHERE e.workspace_id = $workspace_id
11
13
  AND e.scheme = 'worker'
12
14
  AND e.authority = ''
@@ -1 +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,gBAmEF,CAAC"}
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;AAsBlC,eAAO,MAAM,gBAAgB,UAClB,iBAAiB,QACnB,MAAM,CAAC,UAAU,KACvB,gBAmEF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Validator, } from "@plurnk/plurnk-contracts";
2
2
  import { catalogSnapshot, providerCatalogSnapshot, providerNameFromCatalogId, } from "@plurnk/plurnk-models";
3
3
  import { catalogReasoningPolicies, providerReadiness } from "@plurnk/plurnk-providers";
4
- const DEFAULT_LIMIT = 50;
4
+ import Knob from "../core/Knob.js";
5
5
  const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
6
6
  const entryMatches = (entry, search) => [
7
7
  entry.selector,
@@ -19,7 +19,7 @@ export const listModelCatalog = (input, env = process.env) => {
19
19
  const search = query.search?.trim().toLowerCase() ?? "";
20
20
  const availability = query.availability ?? "configured";
21
21
  const offset = query.offset ?? 0;
22
- const limit = query.limit ?? DEFAULT_LIMIT;
22
+ const limit = query.limit ?? Knob.integer("PLURNK_SERVICE_MODEL_CATALOG_PAGE", 1);
23
23
  const providers = providerCatalogSnapshot();
24
24
  const readinessByProvider = new Map();
25
25
  const entries = [];
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/server/model-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/server/model-catalog.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@
5
5
  SELECT id, worker_id AS workerId, sequence, status, prompt,
6
6
  prompt_source AS promptSource, terminated_at AS terminatedAt,
7
7
  terminal_result AS terminalResult,
8
- scheduled_at, repeat_interval_ms, recurrence_root_loop_id,
9
8
  (SELECT COUNT(*)
10
9
  FROM turns
11
10
  WHERE turns.loop_id = loops.id
@@ -17,3 +17,48 @@ ON CONFLICT (workspace_id, namespace_owner) DO UPDATE SET
17
17
  DELETE FROM workspace_module_state
18
18
  WHERE workspace_id = $workspace_id
19
19
  AND namespace_owner = $namespace_owner;
20
+
21
+ -- Worker-scoped module state ({§module-workspace-state}). Same snapshot, different owner: a
22
+ -- family declares its scope and the coordinator keys state by it, so origin, enabledness and the
23
+ -- service-baseline rules stay one implementation across every family.
24
+
25
+ -- PREP: worker_module_state_get
26
+ SELECT state
27
+ FROM worker_module_state
28
+ WHERE worker_id = $worker_id
29
+ AND namespace_owner = $namespace_owner;
30
+
31
+ -- PREP: worker_module_state_put
32
+ INSERT INTO worker_module_state (worker_id, namespace_owner, state)
33
+ VALUES ($worker_id, $namespace_owner, $state)
34
+ ON CONFLICT (worker_id, namespace_owner) DO UPDATE SET
35
+ state = excluded.state,
36
+ updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now');
37
+
38
+ -- PREP: worker_module_state_delete
39
+ DELETE FROM worker_module_state
40
+ WHERE worker_id = $worker_id
41
+ AND namespace_owner = $namespace_owner;
42
+
43
+ -- INIT: workers_inherit_module_state
44
+ -- {§functionality-scope} — a Worker created with a parent (WORK and FORK alike) starts with a copy
45
+ -- of the parent's worker-scoped state, taken at creation: the child owns its copy, and neither
46
+ -- side's later edits reach the other. Each copied entry names its source Worker (`inherited`),
47
+ -- preserved across generations, so `list` renders provenance rather than claiming the child set it.
48
+ DROP TRIGGER IF EXISTS workers_inherit_module_state;
49
+ CREATE TRIGGER workers_inherit_module_state
50
+ AFTER INSERT ON workers
51
+ WHEN NEW.parent_worker_id IS NOT NULL
52
+ BEGIN
53
+ INSERT INTO worker_module_state (worker_id, namespace_owner, state)
54
+ SELECT NEW.id, s.namespace_owner,
55
+ json_set(s.state, '$.definitions', coalesce(
56
+ (SELECT json_group_object(key,
57
+ CASE WHEN json_extract(value, '$.inherited') IS NULL
58
+ THEN json_set(value, '$.inherited', (SELECT name FROM workers WHERE id = NEW.parent_worker_id))
59
+ ELSE json(value) END)
60
+ FROM json_each(s.state, '$.definitions')),
61
+ json('{}')))
62
+ FROM worker_module_state s
63
+ WHERE s.worker_id = NEW.parent_worker_id;
64
+ END;
@@ -0,0 +1,8 @@
1
+ -- {§module-workspace-directory} — one atomic allocation; opening a second module
2
+ -- or racing the first lookup cannot replace the workspace's existing identity.
3
+ -- PREP: workspace_storage_key
4
+ INSERT INTO workspace_module_state (workspace_id, namespace_owner, state)
5
+ SELECT id, '@plurnk/plurnk-service/storage', json_object('key', lower(hex(randomblob(16))))
6
+ FROM workspaces WHERE id = $workspace_id
7
+ ON CONFLICT (workspace_id, namespace_owner) DO UPDATE SET state = workspace_module_state.state
8
+ RETURNING state;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAmCA,MAAM,CAAC,OAAO,OAAO,OAAO;;IAqTxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuGjC;CACJ"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAoCA,MAAM,CAAC,OAAO,OAAO,OAAO;;IAsUxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA8GjC;CACJ"}
package/dist/service.js CHANGED
@@ -6,6 +6,7 @@ import { fileURLToPath } from "node:url";
6
6
  import { dirname, resolve } from "node:path";
7
7
  import SqlRite from "@possumtech/sqlrite";
8
8
  import Daemon from "./server/Daemon.js";
9
+ import HttpListener from "./server/HttpListener.js";
9
10
  import DaemonLock from "./server/DaemonLock.js";
10
11
  import EnvFlags from "./core/EnvFlags.js";
11
12
  import EnvDefaults from "./core/env-defaults.js";
@@ -138,6 +139,14 @@ export default class Service {
138
139
  if (v !== undefined)
139
140
  tuning[opt] = v;
140
141
  }
142
+ // sqlrite's own contract for the pool size; -1 is refused here, never read as "match cores".
143
+ const readers = Service.#sqliteKnob("PLURNK_SERVICE_SQLITE_READERS");
144
+ if (readers !== undefined) {
145
+ if (!Number.isSafeInteger(readers) || readers < 0) {
146
+ Service.#die(78, `PLURNK_SERVICE_SQLITE_READERS must be a non-negative integer (read-only database Workers beside the writer), got ${readers}`);
147
+ }
148
+ tuning.readers = readers;
149
+ }
141
150
  mkdirSync(dirname(dbPath), { recursive: true, mode: 0o700 });
142
151
  const lock = exclusive ? await DaemonLock.acquire(dbPath) : null;
143
152
  try {
@@ -173,7 +182,14 @@ export default class Service {
173
182
  const hint = sidecars.length > 0
174
183
  ? ` — stale sidecar(s) present (${sidecars.join(", ")}): a prior daemon may still hold the old database; stop it and delete the sidecars`
175
184
  : "";
176
- throw new Error(`open ${dbPath} failed${hint}`, { cause });
185
+ // A missing column or table on an existing database is the pre-migration phase at work
186
+ // ({§db-schema-baseline}): a chapter changed under it, and the remedy is deletion. Say
187
+ // so; the bare cause reads like a bug.
188
+ const diagnosis = cause instanceof Error ? cause.message : String(cause);
189
+ const baseline = /^no such (?:column|table)\b/.test(diagnosis)
190
+ ? ` — the database predates the current schema baseline: stop every daemon that holds it, delete ${dbPath} with its -wal and -shm sidecars, then start again`
191
+ : "";
192
+ throw new Error(`open ${dbPath} failed${hint}${baseline}`, { cause });
177
193
  }
178
194
  }
179
195
  static async #migrate() {
@@ -186,6 +202,7 @@ export default class Service {
186
202
  await db.close();
187
203
  }
188
204
  }
205
+ // {§startup-admission} — listener, database, provider, daemon, in that order; a failure unwinds what it holds.
189
206
  static async #start() {
190
207
  FileCreationPolicy.serviceScope();
191
208
  const dbPath = Service.#databasePath();
@@ -196,14 +213,15 @@ export default class Service {
196
213
  // {§operator-config} — an explicit boot selector must resolve; only an
197
214
  // unset selector permits modelless boot for per-request selection.
198
215
  const { active: route } = Service.#modelConfiguration();
199
- // {§startup-listener-admission}: the client-interface module wins the
200
- // configured address before anything may mutate durable state. It owns
201
- // the bound socket but serves only 503 until daemon activation.
202
- const aguiModule = await AguiModule.bind({ host, port });
216
+ // {§startup-listener-admission}: the daemon's one listener wins the configured
217
+ // address before anything may mutate durable state ({§http-host}). It answers 503
218
+ // until the client-interface module mounts the root at daemon activation.
219
+ const listener = await HttpListener.bind({ host, port });
220
+ const aguiModule = AguiModule.create({ host, port });
203
221
  let db = null;
204
222
  let daemon = null;
205
223
  let observability = null;
206
- const teardown = new ServiceTeardown(async () => { await daemon?.stop(); }, async () => { await observability?.shutdown(); }, async () => { await db?.close(); }, async () => { await aguiModule.close(); });
224
+ const teardown = new ServiceTeardown(async () => { await daemon?.stop(); }, async () => { await observability?.shutdown(); }, async () => { await db?.close(); }, async () => { await listener.close(); });
207
225
  try {
208
226
  // {§startup-admission-order}: after listener ownership, persistence
209
227
  // and its exclusive owner are admitted before provider verification
@@ -214,17 +232,17 @@ export default class Service {
214
232
  observability = await startObservability();
215
233
  const hooksModule = HooksModule.init();
216
234
  const provider = route === null ? null : await ProviderInstantiate.loadActiveProvider();
217
- daemon = new Daemon({ db, provider, nodeModulesPath: Service.#pluginsNodeModules(), skills: { hostPaths: Service.#hostPaths } });
235
+ daemon = new Daemon({ db, provider, nodeModulesPath: Service.#pluginsNodeModules(), hostPaths: Service.#hostPaths, http: listener });
218
236
  ServiceModules.registerWorkspaceCapabilities(daemon);
219
237
  daemon.registerModule(hooksModule);
220
238
  const a2a = hostedAgentConfiguration();
221
239
  if (a2a !== null)
222
240
  daemon.registerModule(A2aModule.init(a2a));
223
- // {§rpc}: AG-UI owns the already-bound client listener. Daemon
224
- // activation makes it ready without a close/rebind race.
241
+ // {§rpc}: AG-UI mounts the root of the daemon's listener at activation; the
242
+ // socket never closes or rebinds between admission and readiness.
225
243
  daemon.registerModule(aguiModule);
226
244
  await daemon.start();
227
- const aguiAddr = aguiModule.address();
245
+ const aguiAddr = listener.httpAddress();
228
246
  if (route === null) {
229
247
  process.stderr.write(`plurnk-service: no model configured — choose a profile in ${Service.#hostPaths.configFile}; `
230
248
  + "run plurnk-service config defaults for every installed option. Loops fail legibly until then.\n");
@@ -328,7 +346,15 @@ export default class Service {
328
346
  // `config defaults`; there is no generated configuration copy.
329
347
  const defaultsFiles = await EnvDefaults.collect(Service.#projectRoot, Service.#pluginsNodeModules());
330
348
  EnvDefaults.apply(EnvDefaults.merge(defaultsFiles));
331
- const flagDescriptors = await EnvFlags.parseEnvDefaults(resolve(Service.#projectRoot, ".env.defaults"));
349
+ // A flag is a knob's spelling for one invocation: the service's own panel, and the keys it
350
+ // shares with every client ({§operator-config-shared-keys}), which contracts declares.
351
+ const shared = defaultsFiles.find(({ owner }) => owner === "@plurnk/plurnk-contracts");
352
+ if (shared === undefined)
353
+ throw new Error("@plurnk/plurnk-contracts: .env.defaults missing — the shared endpoint keys have no owner");
354
+ const flagDescriptors = [
355
+ ...await EnvFlags.parseEnvDefaults(resolve(Service.#projectRoot, ".env.defaults")),
356
+ ...EnvFlags.parseEnvDefaultsContent(shared.text),
357
+ ];
332
358
  const flagOptions = {};
333
359
  for (const f of flagDescriptors) {
334
360
  flagOptions[f.flagName.replace(/^--/, "")] = { type: "string" };