@plurnk/plurnk-service 1.18.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 (447) hide show
  1. package/.env.defaults +76 -13
  2. package/README.md +5 -3
  3. package/SPEC.md +924 -689
  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 +79 -37
  19. package/dist/content/read-projector.js.map +1 -1
  20. package/dist/content/scope-format.d.ts +9 -0
  21. package/dist/content/scope-format.d.ts.map +1 -0
  22. package/dist/content/scope-format.js +28 -0
  23. package/dist/content/scope-format.js.map +1 -0
  24. package/dist/core/AdministrativeLoop.d.ts +8 -0
  25. package/dist/core/AdministrativeLoop.d.ts.map +1 -0
  26. package/dist/core/AdministrativeLoop.js +16 -0
  27. package/dist/core/AdministrativeLoop.js.map +1 -0
  28. package/dist/core/AdmittedTurnExecutor.d.ts +2 -1
  29. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  30. package/dist/core/AdmittedTurnExecutor.js +19 -19
  31. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  32. package/dist/core/BareBatchRunner.d.ts +1 -2
  33. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  34. package/dist/core/BareBatchRunner.js +7 -12
  35. package/dist/core/BareBatchRunner.js.map +1 -1
  36. package/dist/core/BudgetReadout.d.ts.map +1 -1
  37. package/dist/core/BudgetReadout.js +3 -4
  38. package/dist/core/BudgetReadout.js.map +1 -1
  39. package/dist/core/CapabilityPolicies.d.ts +4 -2
  40. package/dist/core/CapabilityPolicies.d.ts.map +1 -1
  41. package/dist/core/CapabilityPolicies.js +23 -2
  42. package/dist/core/CapabilityPolicies.js.map +1 -1
  43. package/dist/core/CapabilityResolver.d.ts +2 -2
  44. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  45. package/dist/core/CapabilityResolver.js +6 -3
  46. package/dist/core/CapabilityResolver.js.map +1 -1
  47. package/dist/core/ChannelWrite.d.ts +3 -6
  48. package/dist/core/ChannelWrite.d.ts.map +1 -1
  49. package/dist/core/ChannelWrite.js +8 -8
  50. package/dist/core/ChannelWrite.js.map +1 -1
  51. package/dist/core/ChannelWrite.sql +17 -11
  52. package/dist/core/ClientInteractions.d.ts +11 -1
  53. package/dist/core/ClientInteractions.d.ts.map +1 -1
  54. package/dist/core/ClientInteractions.js +26 -2
  55. package/dist/core/ClientInteractions.js.map +1 -1
  56. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  57. package/dist/core/CoreSchemeServices.js +1 -0
  58. package/dist/core/CoreSchemeServices.js.map +1 -1
  59. package/dist/core/DataStatementRunner.js +6 -6
  60. package/dist/core/DataStatementRunner.js.map +1 -1
  61. package/dist/core/Dispatcher.d.ts +12 -4
  62. package/dist/core/Dispatcher.d.ts.map +1 -1
  63. package/dist/core/Dispatcher.js +112 -90
  64. package/dist/core/Dispatcher.js.map +1 -1
  65. package/dist/core/Dispatcher.sql +11 -26
  66. package/dist/core/DurableStatement.d.ts +4 -1
  67. package/dist/core/DurableStatement.d.ts.map +1 -1
  68. package/dist/core/DurableStatement.js +4 -4
  69. package/dist/core/DurableStatement.js.map +1 -1
  70. package/dist/core/EditMutations.d.ts.map +1 -1
  71. package/dist/core/EditMutations.js +5 -2
  72. package/dist/core/EditMutations.js.map +1 -1
  73. package/dist/core/Engine.d.ts +11 -9
  74. package/dist/core/Engine.d.ts.map +1 -1
  75. package/dist/core/Engine.js +27 -65
  76. package/dist/core/Engine.js.map +1 -1
  77. package/dist/core/Engine.sql +2 -22
  78. package/dist/core/EnvFlags.d.ts.map +1 -1
  79. package/dist/core/EnvFlags.js +4 -2
  80. package/dist/core/EnvFlags.js.map +1 -1
  81. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  82. package/dist/core/ExecutorRegistry.js +2 -1
  83. package/dist/core/ExecutorRegistry.js.map +1 -1
  84. package/dist/core/KillHandler.d.ts.map +1 -1
  85. package/dist/core/KillHandler.js +7 -12
  86. package/dist/core/KillHandler.js.map +1 -1
  87. package/dist/core/Knob.d.ts +9 -0
  88. package/dist/core/Knob.d.ts.map +1 -0
  89. package/dist/core/Knob.js +50 -0
  90. package/dist/core/Knob.js.map +1 -0
  91. package/dist/core/LogBody.d.ts.map +1 -1
  92. package/dist/core/LogBody.js +6 -35
  93. package/dist/core/LogBody.js.map +1 -1
  94. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  95. package/dist/core/LogEntryProjection.js +4 -0
  96. package/dist/core/LogEntryProjection.js.map +1 -1
  97. package/dist/core/LogVisibility.d.ts.map +1 -1
  98. package/dist/core/LogVisibility.js +2 -1
  99. package/dist/core/LogVisibility.js.map +1 -1
  100. package/dist/core/LogWriter.js +2 -2
  101. package/dist/core/LogWriter.js.map +1 -1
  102. package/dist/core/LoopDriver.d.ts +1 -1
  103. package/dist/core/LoopDriver.d.ts.map +1 -1
  104. package/dist/core/LoopDriver.js +23 -29
  105. package/dist/core/LoopDriver.js.map +1 -1
  106. package/dist/core/LoopLifecycle.d.ts +4 -17
  107. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  108. package/dist/core/LoopLifecycle.js +20 -22
  109. package/dist/core/LoopLifecycle.js.map +1 -1
  110. package/dist/core/LoopLifecycle.sql +36 -49
  111. package/dist/core/LoopOutcome.d.ts +10 -0
  112. package/dist/core/LoopOutcome.d.ts.map +1 -0
  113. package/dist/core/LoopOutcome.js +28 -0
  114. package/dist/core/LoopOutcome.js.map +1 -0
  115. package/dist/core/LoopPolicies.d.ts +7 -0
  116. package/dist/core/LoopPolicies.d.ts.map +1 -0
  117. package/dist/core/LoopPolicies.js +37 -0
  118. package/dist/core/LoopPolicies.js.map +1 -0
  119. package/dist/core/MessageResources.d.ts +15 -0
  120. package/dist/core/MessageResources.d.ts.map +1 -0
  121. package/dist/core/MessageResources.js +46 -0
  122. package/dist/core/MessageResources.js.map +1 -0
  123. package/dist/core/MessageResources.sql +36 -0
  124. package/dist/core/OperatorConfig.d.ts +2 -1
  125. package/dist/core/OperatorConfig.d.ts.map +1 -1
  126. package/dist/core/OperatorConfig.js +14 -6
  127. package/dist/core/OperatorConfig.js.map +1 -1
  128. package/dist/core/PacketBuilder.d.ts.map +1 -1
  129. package/dist/core/PacketBuilder.js +20 -35
  130. package/dist/core/PacketBuilder.js.map +1 -1
  131. package/dist/core/PacketBuilder.sql +24 -6
  132. package/dist/core/PatternSelection.d.ts +1 -1
  133. package/dist/core/PatternSelection.d.ts.map +1 -1
  134. package/dist/core/ProposalLifecycle.d.ts +3 -1
  135. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  136. package/dist/core/ProposalLifecycle.js +85 -22
  137. package/dist/core/ProposalLifecycle.js.map +1 -1
  138. package/dist/core/ProviderInstantiate.d.ts +1 -0
  139. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  140. package/dist/core/ProviderInstantiate.js +12 -7
  141. package/dist/core/ProviderInstantiate.js.map +1 -1
  142. package/dist/core/ReasoningView.d.ts +1 -2
  143. package/dist/core/ReasoningView.d.ts.map +1 -1
  144. package/dist/core/ReasoningView.js +9 -20
  145. package/dist/core/ReasoningView.js.map +1 -1
  146. package/dist/core/ResourceBindings.d.ts.map +1 -1
  147. package/dist/core/ResourceBindings.js +5 -4
  148. package/dist/core/ResourceBindings.js.map +1 -1
  149. package/dist/core/ResourceMutations.d.ts +4 -4
  150. package/dist/core/ResourceMutations.d.ts.map +1 -1
  151. package/dist/core/ResourceMutations.js +2 -3
  152. package/dist/core/ResourceMutations.js.map +1 -1
  153. package/dist/core/ResourceSelector.d.ts +10 -3
  154. package/dist/core/ResourceSelector.d.ts.map +1 -1
  155. package/dist/core/ResourceSelector.js +52 -13
  156. package/dist/core/ResourceSelector.js.map +1 -1
  157. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  158. package/dist/core/ResourceTransfers.js +4 -2
  159. package/dist/core/ResourceTransfers.js.map +1 -1
  160. package/dist/core/SchemeRegistry.d.ts +2 -0
  161. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  162. package/dist/core/SchemeRegistry.js +11 -5
  163. package/dist/core/SchemeRegistry.js.map +1 -1
  164. package/dist/core/StoredPacket.d.ts +3 -1
  165. package/dist/core/StoredPacket.d.ts.map +1 -1
  166. package/dist/core/StoredPacket.js +7 -3
  167. package/dist/core/StoredPacket.js.map +1 -1
  168. package/dist/core/StrikeRail.d.ts.map +1 -1
  169. package/dist/core/StrikeRail.js +9 -3
  170. package/dist/core/StrikeRail.js.map +1 -1
  171. package/dist/core/TerminalResult.d.ts +2 -2
  172. package/dist/core/TerminalResult.d.ts.map +1 -1
  173. package/dist/core/TerminalResult.js +15 -8
  174. package/dist/core/TerminalResult.js.map +1 -1
  175. package/dist/core/ToolInputSchema.d.ts.map +1 -1
  176. package/dist/core/ToolInputSchema.js +24 -8
  177. package/dist/core/ToolInputSchema.js.map +1 -1
  178. package/dist/core/ToolResources.d.ts +1 -0
  179. package/dist/core/ToolResources.d.ts.map +1 -1
  180. package/dist/core/ToolResources.js +45 -23
  181. package/dist/core/ToolResources.js.map +1 -1
  182. package/dist/core/Turn.d.ts +3 -1
  183. package/dist/core/Turn.d.ts.map +1 -1
  184. package/dist/core/Turn.js +4 -1
  185. package/dist/core/Turn.js.map +1 -1
  186. package/dist/core/Turn.sql +14 -2
  187. package/dist/core/TurnDispositionHandler.d.ts +13 -21
  188. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  189. package/dist/core/TurnDispositionHandler.js +32 -190
  190. package/dist/core/TurnDispositionHandler.js.map +1 -1
  191. package/dist/core/TurnMaterialization.d.ts +9 -7
  192. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  193. package/dist/core/TurnMaterialization.js +63 -41
  194. package/dist/core/TurnMaterialization.js.map +1 -1
  195. package/dist/core/TurnMaterialization.sql +23 -6
  196. package/dist/core/TurnOps.js +1 -1
  197. package/dist/core/TurnRunner.d.ts +1 -3
  198. package/dist/core/TurnRunner.d.ts.map +1 -1
  199. package/dist/core/TurnRunner.js +148 -189
  200. package/dist/core/TurnRunner.js.map +1 -1
  201. package/dist/core/TurnRunner.sql +1 -24
  202. package/dist/core/TurnSources.sql +42 -11
  203. package/dist/core/WorkerName.d.ts +1 -1
  204. package/dist/core/WorkerName.d.ts.map +1 -1
  205. package/dist/core/WorkerName.js +3 -3
  206. package/dist/core/WorkerName.js.map +1 -1
  207. package/dist/core/ambient.sql +45 -19
  208. package/dist/core/attachments.d.ts +3 -1
  209. package/dist/core/attachments.d.ts.map +1 -1
  210. package/dist/core/attachments.js +4 -0
  211. package/dist/core/attachments.js.map +1 -1
  212. package/dist/core/caps/CoreInteractionCaps.d.ts +1 -1
  213. package/dist/core/caps/CoreInteractionCaps.d.ts.map +1 -1
  214. package/dist/core/caps/CoreInteractionCaps.js +4 -2
  215. package/dist/core/caps/CoreInteractionCaps.js.map +1 -1
  216. package/dist/core/caps/DbChannelCaps.js +6 -6
  217. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  218. package/dist/core/caps/DbEntryCaps.js +1 -1
  219. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  220. package/dist/core/caps/DbMessageCaps.d.ts +10 -0
  221. package/dist/core/caps/DbMessageCaps.d.ts.map +1 -0
  222. package/dist/core/caps/DbMessageCaps.js +39 -0
  223. package/dist/core/caps/DbMessageCaps.js.map +1 -0
  224. package/dist/core/caps/DbProjectionCaps.d.ts +2 -2
  225. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  226. package/dist/core/caps/DbProjectionCaps.js +10 -4
  227. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  228. package/dist/core/caps/SchemeCtxImpl.d.ts +3 -1
  229. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  230. package/dist/core/caps/SchemeCtxImpl.js +11 -0
  231. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  232. package/dist/core/fork.sql +7 -6
  233. package/dist/core/git-state.d.ts +3 -2
  234. package/dist/core/git-state.d.ts.map +1 -1
  235. package/dist/core/git-state.js +37 -20
  236. package/dist/core/git-state.js.map +1 -1
  237. package/dist/core/packet-inject.js +1 -1
  238. package/dist/core/packet-wire.d.ts +11 -0
  239. package/dist/core/packet-wire.d.ts.map +1 -1
  240. package/dist/core/packet-wire.js +112 -88
  241. package/dist/core/packet-wire.js.map +1 -1
  242. package/dist/core/plurnk-uri.d.ts +4 -5
  243. package/dist/core/plurnk-uri.d.ts.map +1 -1
  244. package/dist/core/plurnk-uri.js +10 -31
  245. package/dist/core/plurnk-uri.js.map +1 -1
  246. package/dist/core/scheme-types.d.ts +3 -1
  247. package/dist/core/scheme-types.d.ts.map +1 -1
  248. package/dist/core/scheme-types.js +1 -1
  249. package/dist/core/scheme-types.js.map +1 -1
  250. package/dist/core/teaching.d.ts.map +1 -1
  251. package/dist/core/teaching.js +2 -1
  252. package/dist/core/teaching.js.map +1 -1
  253. package/dist/core/types.d.ts +1 -2
  254. package/dist/core/types.d.ts.map +1 -1
  255. package/dist/core/types.js +1 -1
  256. package/dist/core/types.js.map +1 -1
  257. package/dist/core/worker-ops.sql +3 -8
  258. package/dist/digest/Digest.d.ts.map +1 -1
  259. package/dist/digest/Digest.js +35 -30
  260. package/dist/digest/Digest.js.map +1 -1
  261. package/dist/digest/DigestRender.d.ts +1 -0
  262. package/dist/digest/DigestRender.d.ts.map +1 -1
  263. package/dist/digest/DigestRender.js +53 -1
  264. package/dist/digest/DigestRender.js.map +1 -1
  265. package/dist/digest/DigestRequiem.d.ts.map +1 -1
  266. package/dist/digest/DigestRequiem.js +13 -15
  267. package/dist/digest/DigestRequiem.js.map +1 -1
  268. package/dist/digest/digest-db.d.ts +3 -0
  269. package/dist/digest/digest-db.d.ts.map +1 -0
  270. package/dist/digest/digest-db.js +68 -0
  271. package/dist/digest/digest-db.js.map +1 -0
  272. package/dist/digest/digest-paths.d.ts +6 -0
  273. package/dist/digest/digest-paths.d.ts.map +1 -0
  274. package/dist/digest/digest-paths.js +23 -0
  275. package/dist/digest/digest-paths.js.map +1 -0
  276. package/dist/digest/digest-rows.d.ts +15 -0
  277. package/dist/digest/digest-rows.d.ts.map +1 -1
  278. package/dist/digest/digest.sql +13 -3
  279. package/dist/index.d.ts +0 -1
  280. package/dist/index.d.ts.map +1 -1
  281. package/dist/index.js +0 -1
  282. package/dist/index.js.map +1 -1
  283. package/dist/observe/genai.d.ts +2 -2
  284. package/dist/observe/genai.d.ts.map +1 -1
  285. package/dist/observe/genai.js +15 -5
  286. package/dist/observe/genai.js.map +1 -1
  287. package/dist/schemes/EffectPolicy.d.ts +0 -2
  288. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  289. package/dist/schemes/EffectPolicy.js +25 -36
  290. package/dist/schemes/EffectPolicy.js.map +1 -1
  291. package/dist/schemes/Exec.d.ts +4 -5
  292. package/dist/schemes/Exec.d.ts.map +1 -1
  293. package/dist/schemes/Exec.js +74 -62
  294. package/dist/schemes/Exec.js.map +1 -1
  295. package/dist/schemes/ExecOutputScheme.d.ts +6 -5
  296. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  297. package/dist/schemes/ExecOutputScheme.js +49 -16
  298. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  299. package/dist/schemes/File.d.ts.map +1 -1
  300. package/dist/schemes/File.js +28 -20
  301. package/dist/schemes/File.js.map +1 -1
  302. package/dist/schemes/Log.d.ts +4 -4
  303. package/dist/schemes/Log.d.ts.map +1 -1
  304. package/dist/schemes/Log.js +29 -9
  305. package/dist/schemes/Log.js.map +1 -1
  306. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  307. package/dist/schemes/QuestionTool.js +14 -1
  308. package/dist/schemes/QuestionTool.js.map +1 -1
  309. package/dist/schemes/TurnSource.d.ts +3 -2
  310. package/dist/schemes/TurnSource.d.ts.map +1 -1
  311. package/dist/schemes/TurnSource.js +80 -35
  312. package/dist/schemes/TurnSource.js.map +1 -1
  313. package/dist/schemes/Worker.d.ts.map +1 -1
  314. package/dist/schemes/Worker.js +22 -56
  315. package/dist/schemes/Worker.js.map +1 -1
  316. package/dist/schemes/_entry-crud.js +6 -6
  317. package/dist/schemes/_entry-crud.js.map +1 -1
  318. package/dist/schemes/_entry-crud.sql +19 -17
  319. package/dist/schemes/_entry-find.d.ts.map +1 -1
  320. package/dist/schemes/_entry-find.js +6 -5
  321. package/dist/schemes/_entry-find.js.map +1 -1
  322. package/dist/schemes/_entry-fts.d.ts.map +1 -1
  323. package/dist/schemes/_entry-fts.js +6 -3
  324. package/dist/schemes/_entry-fts.js.map +1 -1
  325. package/dist/schemes/_entry-fts.sql +25 -6
  326. package/dist/schemes/_entry-manifest.d.ts +1 -1
  327. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  328. package/dist/schemes/_entry-manifest.js +5 -3
  329. package/dist/schemes/_entry-manifest.js.map +1 -1
  330. package/dist/schemes/_entry-ops.js +4 -4
  331. package/dist/schemes/_entry-ops.js.map +1 -1
  332. package/dist/schemes/_entry-ops.sql +2 -2
  333. package/dist/schemes/_entry-readable.d.ts.map +1 -1
  334. package/dist/schemes/_entry-readable.js +5 -4
  335. package/dist/schemes/_entry-readable.js.map +1 -1
  336. package/dist/schemes/_entry-send.js +2 -2
  337. package/dist/schemes/_entry-send.js.map +1 -1
  338. package/dist/schemes/_search-exclusion.d.ts +1 -0
  339. package/dist/schemes/_search-exclusion.d.ts.map +1 -1
  340. package/dist/schemes/_search-exclusion.js +12 -0
  341. package/dist/schemes/_search-exclusion.js.map +1 -1
  342. package/dist/schemes/_search-index.js +4 -4
  343. package/dist/schemes/_search-index.js.map +1 -1
  344. package/dist/schemes/exec-abort.d.ts.map +1 -1
  345. package/dist/schemes/exec-abort.js +4 -3
  346. package/dist/schemes/exec-abort.js.map +1 -1
  347. package/dist/schemes/exec-lifetime.d.ts +11 -0
  348. package/dist/schemes/exec-lifetime.d.ts.map +1 -0
  349. package/dist/schemes/exec-lifetime.js +29 -0
  350. package/dist/schemes/exec-lifetime.js.map +1 -0
  351. package/dist/server/ClientReads.d.ts.map +1 -1
  352. package/dist/server/ClientReads.js +3 -1
  353. package/dist/server/ClientReads.js.map +1 -1
  354. package/dist/server/Daemon.d.ts +30 -7
  355. package/dist/server/Daemon.d.ts.map +1 -1
  356. package/dist/server/Daemon.js +107 -48
  357. package/dist/server/Daemon.js.map +1 -1
  358. package/dist/server/DaemonModule.d.ts +19 -5
  359. package/dist/server/DaemonModule.d.ts.map +1 -1
  360. package/dist/server/DrainSupervisor.d.ts +13 -11
  361. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  362. package/dist/server/DrainSupervisor.js +87 -98
  363. package/dist/server/DrainSupervisor.js.map +1 -1
  364. package/dist/server/EnvFunctionality.d.ts +12 -3
  365. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  366. package/dist/server/EnvFunctionality.js +19 -14
  367. package/dist/server/EnvFunctionality.js.map +1 -1
  368. package/dist/server/Functionality.d.ts +2 -2
  369. package/dist/server/Functionality.d.ts.map +1 -1
  370. package/dist/server/Functionality.js +97 -62
  371. package/dist/server/Functionality.js.map +1 -1
  372. package/dist/server/FunctionalityManager.d.ts +3 -1
  373. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  374. package/dist/server/FunctionalityManager.js +11 -5
  375. package/dist/server/FunctionalityManager.js.map +1 -1
  376. package/dist/server/HttpListener.d.ts +16 -0
  377. package/dist/server/HttpListener.d.ts.map +1 -0
  378. package/dist/server/HttpListener.js +81 -0
  379. package/dist/server/HttpListener.js.map +1 -0
  380. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  381. package/dist/server/MembersFunctionality.js +12 -16
  382. package/dist/server/MembersFunctionality.js.map +1 -1
  383. package/dist/server/PlurnkSkill.d.ts.map +1 -1
  384. package/dist/server/PlurnkSkill.js +1 -0
  385. package/dist/server/PlurnkSkill.js.map +1 -1
  386. package/dist/server/Retention.d.ts +11 -0
  387. package/dist/server/Retention.d.ts.map +1 -1
  388. package/dist/server/Retention.js +47 -2
  389. package/dist/server/Retention.js.map +1 -1
  390. package/dist/server/Retention.sql +32 -1
  391. package/dist/server/ServiceModules.d.ts.map +1 -1
  392. package/dist/server/ServiceModules.js +2 -0
  393. package/dist/server/ServiceModules.js.map +1 -1
  394. package/dist/server/SkillsFunctionality.d.ts +2 -0
  395. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  396. package/dist/server/SkillsFunctionality.js +22 -15
  397. package/dist/server/SkillsFunctionality.js.map +1 -1
  398. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -1
  399. package/dist/server/WorkspaceCapabilities.js +1 -0
  400. package/dist/server/WorkspaceCapabilities.js.map +1 -1
  401. package/dist/server/WorkspaceStorage.d.ts +8 -0
  402. package/dist/server/WorkspaceStorage.d.ts.map +1 -0
  403. package/dist/server/WorkspaceStorage.js +26 -0
  404. package/dist/server/WorkspaceStorage.js.map +1 -0
  405. package/dist/server/client-input.d.ts +4 -3
  406. package/dist/server/client-input.d.ts.map +1 -1
  407. package/dist/server/client-input.js +24 -26
  408. package/dist/server/client-input.js.map +1 -1
  409. package/dist/server/dispatch-as-plurnk.js +2 -2
  410. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  411. package/dist/server/drain.sql +69 -132
  412. package/dist/server/envelope.d.ts +2 -2
  413. package/dist/server/envelope.d.ts.map +1 -1
  414. package/dist/server/envelope.js +7 -9
  415. package/dist/server/envelope.js.map +1 -1
  416. package/dist/server/envelope.sql +10 -6
  417. package/dist/server/exec-poll-backoff.js +3 -3
  418. package/dist/server/exec-poll-backoff.js.map +1 -1
  419. package/dist/server/lifecycle-recovery.sql +8 -35
  420. package/dist/server/logEntry.sql +2 -2
  421. package/dist/server/loopDocs.js +3 -3
  422. package/dist/server/loopDocs.sql +4 -2
  423. package/dist/server/model-catalog.d.ts.map +1 -1
  424. package/dist/server/model-catalog.js +2 -2
  425. package/dist/server/model-catalog.js.map +1 -1
  426. package/dist/server/seam-loop.sql +0 -1
  427. package/dist/server/workspace-storage.sql +8 -0
  428. package/dist/service.d.ts.map +1 -1
  429. package/dist/service.js +21 -10
  430. package/dist/service.js.map +1 -1
  431. package/docs/copy-move.md +31 -0
  432. package/docs/env.md +19 -7
  433. package/docs/skills.md +2 -2
  434. package/migrations/002_workers.sql +26 -17
  435. package/migrations/003_loops.sql +82 -28
  436. package/migrations/005_entries.sql +135 -22
  437. package/migrations/006_log.sql +77 -25
  438. package/migrations/007_subscriptions.sql +10 -15
  439. package/package.json +35 -36
  440. package/dist/core/PromptFrames.d.ts +0 -12
  441. package/dist/core/PromptFrames.d.ts.map +0 -1
  442. package/dist/core/PromptFrames.js +0 -28
  443. package/dist/core/PromptFrames.js.map +0 -1
  444. package/dist/schemes/Prompt.d.ts +0 -8
  445. package/dist/schemes/Prompt.d.ts.map +0 -1
  446. package/dist/schemes/Prompt.js +0 -25
  447. package/dist/schemes/Prompt.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AACA,OAAO,OAA8B,MAAM,cAAc,CAAC;AAC1D,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAmBrD,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,GAAG,CAAK;IACR,WAAW,GAAG,IAAI,GAAG,EAAoD,CAAC;IAE1E,YAAY,EAAM;QACd,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,CAAC,aAAa,CAAC,MAAc;QAC/B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACxE,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAC/C,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QAC/C,MAAM,IAAI,SAAS,CAAC,8DAA8D,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,QAAgB,EAAE,SAAqB;QACxE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAEzD,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxF,IAAI,KAAgD,CAAC;QACrD,MAAM,GAAG,GAAG,GAAS,EAAE;YACnB,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,GAAG,OAAO,EAAE,CAAC;YACzD,IAAI,SAAS,IAAI,CAAC;gBAAE,SAAS,EAAE,CAAC;;gBAC3B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACxF,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE;YACzB,QAAQ,EAAE,MAAM,CAAC,SAAS;YAC1B,IAAI,EAAE,GAAG,EAAE;gBACP,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,OAAO,EAAE,CAAC;YACrB,CAAC;SACJ,CAAC,CAAC;QACH,GAAG,EAAE,CAAC;QACN,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;IACL,CAAC;IAED,gGAAgG;IAChG,gGAAgG;IAChG,8FAA8F;IAC9F,2FAA2F;IAC3F,gGAAgG;IAChG,gGAAgG;IAChG,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,EAAE,OAAO,EAA8B;QAC9D,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,mEAAmE,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAiB;YAC3D,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;SAC1C,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,SAAS,GAA+D,EAAE;QACjG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAiB;YAC3D,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,IAAI;YACpC,MAAM,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI;YAC/B,UAAU,EAAE,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnD,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAE,MAAc;QAC9D,MAAM,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,MAAM,CACR,MAAc,EACd,MAAoB,EACpB,OAAO,GAAkE,EAAE;QAE3E,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAA8B;YAC9E,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,IAAI;YAChB,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC7B,aAAa,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC3C,gBAAgB,EAAE,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7D,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAM,EAAE,MAAc;QACvC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAuB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAqD;YACrG,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAqD;YACrG,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,eAAe,KAAK,IAAI;YAC/B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAiB,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAiB;YACjE,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,GAAG,CAAoB;YAC9E,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,kCAAkC,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,WAAoB;QACnE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,wBAAwB,CAAC;QAC9E,MAAM,MAAM,GAAG;YACX,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpC,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAA4D;YAChH,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAChC,kBAAkB,EAClB,iBAAiB,EACjB,GAAG,EACH,mCAAmC,aAAa,GAAG,EACnD,EAAE,EACF;YACI,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,KAAK;SACnB,CACJ,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,CACrE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC7B,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1H,gGAAgG;QAChG,MAAM,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,CAIvD,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO;YACH,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC;YACpD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3D,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAiB,CAAC;aACtE,CAAC,CAAC;SACN,CAAC;IACN,CAAC;CACJ"}
@@ -15,48 +15,40 @@ UPDATE loops
15
15
  SET status = 202,
16
16
  execution_elapsed_ms = COALESCE($elapsed_ms, execution_elapsed_ms),
17
17
  wait_revision = wait_revision + 1,
18
- wait_deadline_at = $deadline_at,
19
- wait_poll_interval = $poll_interval,
20
- wait_poll_at = $poll_at
18
+ wait_poll_at = NULL
21
19
  WHERE id = $loop_id AND status = 102
22
20
  RETURNING id;
23
21
 
24
22
  -- PREP: lifecycle_wake_loop
25
23
  UPDATE loops
26
24
  SET status = 100,
27
- wait_deadline_at = NULL,
28
- wait_poll_interval = NULL,
29
25
  wait_poll_at = NULL
30
26
  WHERE id = $loop_id AND status = 202
31
27
  AND ($revision IS NULL OR wait_revision = $revision)
32
- AND ($due_at IS NULL OR wait_deadline_at <= $due_at OR wait_poll_at <= $due_at)
28
+ AND ($due_at IS NULL OR wait_poll_at <= $due_at)
33
29
  AND ($event_only = 0 OR observed_wake_revision < (SELECT wake_revision FROM workers WHERE id = loops.worker_id))
34
30
  RETURNING id;
35
31
 
36
32
  -- PREP: lifecycle_parked_loops
37
- SELECT id, wait_revision, wait_deadline_at, wait_poll_interval, wait_poll_at
33
+ SELECT id, wait_revision, wait_poll_at
38
34
  FROM loops WHERE worker_id = $worker_id AND status = 202
39
35
  ORDER BY sequence;
40
36
 
41
37
  -- PREP: lifecycle_set_inherited_poll
42
38
  UPDATE loops SET wait_poll_at = $poll_at
43
39
  WHERE id = $loop_id AND status = 202 AND wait_revision = $revision
44
- AND wait_poll_interval IS NULL AND wait_poll_at IS NULL;
40
+ AND wait_poll_at IS NULL;
45
41
 
46
42
  -- PREP: lifecycle_finish_loop
47
43
  UPDATE loops
48
44
  SET status = $status,
49
45
  execution_elapsed_ms = COALESCE($elapsed_ms, execution_elapsed_ms),
50
- wait_deadline_at = NULL,
51
- wait_poll_interval = NULL,
52
46
  wait_poll_at = NULL,
53
- terminal_result = CASE WHEN EXISTS (SELECT 1 FROM loop_responses WHERE loop_id = loops.id)
54
- THEN json_set($result,
55
- '$.content', (SELECT content FROM loop_responses WHERE loop_id = loops.id),
56
- '$.mimetype', 'text/markdown')
57
- ELSE $result END,
47
+ terminal_result = $result,
58
48
  terminated_by = $terminated_by
59
49
  WHERE id = $loop_id AND status IN (100, 102, 202)
50
+ AND ($require_answered = 0 OR NOT EXISTS (SELECT 1 FROM unanswered_messages WHERE loop_id = loops.id))
51
+ AND ($require_answered = 0 OR observed_wake_revision = (SELECT wake_revision FROM workers WHERE id = loops.worker_id))
60
52
  RETURNING terminal_result;
61
53
 
62
54
  -- PREP: lifecycle_loop_status
@@ -117,34 +109,30 @@ WHERE loops.sequence > json_extract(cutoff.value, '$.cancelled_through_sequence'
117
109
  AND loops.status = 499 AND loops.terminated_by = 'cancel'
118
110
  ORDER BY loops.id;
119
111
 
120
- -- INIT: loops_schedule_successor
121
- -- {§worker-scheduled-send}: settlement and successor admission are one mutation.
122
- -- Claims coalesce elapsed cadence slots; neither prompts nor effects are replayed.
123
- DROP TRIGGER IF EXISTS loops_schedule_successor;
124
- CREATE TRIGGER loops_schedule_successor
112
+ -- INIT: loops_stamp_claimed_at_insert
113
+ -- {§loop-claim-latency}: a loop inserted running is claimed at its insertion; the first claim stays.
114
+ DROP TRIGGER IF EXISTS loops_stamp_claimed_at_insert;
115
+ CREATE TRIGGER loops_stamp_claimed_at_insert
116
+ AFTER INSERT ON loops
117
+ WHEN NEW.status = 102 AND NEW.claimed_at IS NULL
118
+ BEGIN
119
+ UPDATE loops SET claimed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now') WHERE id = NEW.id;
120
+ END;
121
+
122
+ -- INIT: loops_stamp_claimed_at_update
123
+ -- {§loop-claim-latency}: a queued loop is claimed when it first moves to 102.
124
+ DROP TRIGGER IF EXISTS loops_stamp_claimed_at_update;
125
+ CREATE TRIGGER loops_stamp_claimed_at_update
125
126
  AFTER UPDATE OF status ON loops
126
- WHEN NEW.status = 200 AND OLD.status IN (100, 102, 202)
127
- AND NEW.repeat_interval_ms IS NOT NULL
127
+ WHEN NEW.status = 102 AND OLD.status <> 102 AND NEW.claimed_at IS NULL
128
128
  BEGIN
129
- INSERT INTO loops (
130
- worker_id, sequence, status, prompt, prompt_source, policy,
131
- model_route_id, spawn_model_route_id, reasoning_policy, max_turns,
132
- execution_budget_ms, open_paths, scheduled_at, repeat_interval_ms, recurrence_root_loop_id
133
- )
134
- SELECT NEW.worker_id,
135
- (SELECT COALESCE(MAX(sequence), 0) + 1 FROM loops WHERE worker_id = NEW.worker_id),
136
- 100, seed.prompt, seed.prompt_source, seed.policy,
137
- seed.model_route_id, seed.spawn_model_route_id, seed.reasoning_policy, seed.max_turns,
138
- seed.execution_budget_ms, seed.open_paths,
139
- NEW.scheduled_at + NEW.repeat_interval_ms, NEW.repeat_interval_ms, seed.id
140
- FROM loops seed
141
- WHERE seed.id = COALESCE(NEW.recurrence_root_loop_id, NEW.id);
129
+ UPDATE loops SET claimed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now') WHERE id = NEW.id;
142
130
  END;
143
131
 
144
132
  -- INIT: loops_stamp_terminated_at
145
133
  -- {§worker-scheme}: a loop crossing into a terminal status stamps terminated_at, so sibling
146
- -- workers pull the termination as a folded ambient delta — caught uniformly across every
147
- -- death-path (SEND, overflow recovery, max-turns, strike, KILL). The stamp updates terminated_at,
134
+ -- workers observe the terminal outcome uniformly across every conclusion path.
135
+ -- The stamp updates terminated_at,
148
136
  -- never status, so it cannot re-fire this trigger. Terminals: 200 done · 413 budget ·
149
137
  -- 429 turn-ceiling · 499 cancel · 500 fail · 504 execution timeout · 508 runaway. (202 = parked/sleeping, NOT terminal.)
150
138
  DROP TRIGGER IF EXISTS loops_stamp_terminated_at;
@@ -157,7 +145,7 @@ END;
157
145
 
158
146
  -- INIT: workers_cancel_live_loops
159
147
  -- {§worker-cancel-trigger}: writing a worker's cancellation retires its live loops in the same
160
- -- statement — 499, waits cleared, the delivered response kept as the result's content, the
148
+ -- statement — 499, waits cleared, the
161
149
  -- Problem instanced per loop. Loops already terminal keep their own outcome.
162
150
  DROP TRIGGER IF EXISTS workers_cancel_live_loops;
163
151
  CREATE TRIGGER workers_cancel_live_loops
@@ -166,17 +154,11 @@ WHEN NEW.cancellation IS NOT NULL
166
154
  BEGIN
167
155
  UPDATE loops
168
156
  SET status = 499,
169
- wait_deadline_at = NULL,
170
- wait_poll_interval = NULL,
171
157
  wait_poll_at = NULL,
172
158
  terminal_result = json_set(
173
- CASE WHEN EXISTS (SELECT 1 FROM loop_responses WHERE loop_id = loops.id)
174
- THEN json_set(NEW.cancellation,
175
- '$.content', (SELECT content FROM loop_responses WHERE loop_id = loops.id),
176
- '$.mimetype', 'text/markdown')
177
- ELSE NEW.cancellation END,
159
+ NEW.cancellation,
178
160
  '$.problem.instance',
179
- 'loop:///' || id
161
+ 'ops://' || NEW.name || '/' || sequence
180
162
  ),
181
163
  terminated_by = 'cancel'
182
164
  WHERE worker_id = NEW.id
@@ -184,7 +166,12 @@ BEGIN
184
166
  END;
185
167
 
186
168
  -- PREP: engine_loop_sequence
187
- -- The loop's per-worker sequence — the model-facing coordinate (prompt/<worker>/<loop-seq>/<turn-seq>,
188
- -- matching the log's loop-relative numbering). The raw db id leaked into prompt paths and the
189
- -- model's first loop read as prompt/2/1 (the docs loop holds id 1). Owner: minor but annoying.
190
169
  SELECT sequence FROM loops WHERE id = $loop_id;
170
+
171
+ -- PREP: loop_resource_identity
172
+ SELECT 'ops://' || w.name || '/' || l.sequence AS resource
173
+ FROM loops l JOIN workers w ON w.id = l.worker_id WHERE l.id = $loop_id;
174
+
175
+ -- PREP: loop_live_obligations
176
+ -- {§worker-obligations}: the live work a loop is held on — its worker's open streams and live children.
177
+ SELECT streams, workers FROM loop_obligations WHERE loop_id = $loop_id;
@@ -0,0 +1,10 @@
1
+ import type { Db } from "./Db.ts";
2
+ import type { SchemeResult } from "@plurnk/plurnk-schemes";
3
+ export interface LoopOutcome {
4
+ readonly resource: string;
5
+ readonly result: SchemeResult;
6
+ readonly terminatedBy: string | null;
7
+ }
8
+ export declare const loopAddress: (worker: string, sequence: number) => string;
9
+ export declare const loopOutcome: (db: Db, workspaceId: number, worker: string, sequence: number) => Promise<LoopOutcome | null>;
10
+ //# sourceMappingURL=LoopOutcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopOutcome.d.ts","sourceRoot":"","sources":["../../src/core/LoopOutcome.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,eAAO,MAAM,WAAW,WAAY,MAAM,YAAY,MAAM,KAAG,MAAuC,CAAC;AAGvG,eAAO,MAAM,WAAW,OAChB,EAAE,eACO,MAAM,UACX,MAAM,YACJ,MAAM,KACjB,OAAO,CAAC,WAAW,GAAG,IAAI,CAuB5B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import Results from "./results.js";
2
+ import TerminalResult from "./TerminalResult.js";
3
+ export const loopAddress = (worker, sequence) => `ops://${worker}/${sequence}`;
4
+ // `null` means no such loop; every other state is a result the caller can publish.
5
+ export const loopOutcome = async (db, workspaceId, worker, sequence) => {
6
+ const row = await db.turn_source_loop_answer.get({ workspace_id: workspaceId, worker_name: worker, loop_seq: sequence });
7
+ if (row === undefined)
8
+ return null;
9
+ const resource = loopAddress(worker, sequence);
10
+ const terminal = row.terminal_result === null ? null : TerminalResult.parse(row.terminal_result, resource);
11
+ // A loop that ended badly reports how it ended, even when it answered earlier: the failure is
12
+ // the news. Otherwise its answer is what it said.
13
+ if (terminal !== null && Results.isErrorStatus(terminal.status)) {
14
+ return { resource, result: terminal, terminatedBy: row.terminated_by };
15
+ }
16
+ if (row.answer !== null) {
17
+ return { resource, result: Results.assert({ status: 200, content: row.answer, mimetype: "text/markdown" }), terminatedBy: row.terminated_by };
18
+ }
19
+ if (terminal === null) {
20
+ return {
21
+ resource,
22
+ result: Results.failure("scheme:ops", "loop-running", 425, `The execution at ${resource} has not concluded.`, { resource }, { retryable: true }),
23
+ terminatedBy: row.terminated_by,
24
+ };
25
+ }
26
+ return { resource, result: terminal, terminatedBy: row.terminated_by };
27
+ };
28
+ //# sourceMappingURL=LoopOutcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopOutcome.js","sourceRoot":"","sources":["../../src/core/LoopOutcome.ts"],"names":[],"mappings":"AAOA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAQjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAU,EAAE,CAAC,SAAS,MAAM,IAAI,QAAQ,EAAE,CAAC;AAEvG,mFAAmF;AACnF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC5B,EAAM,EACN,WAAmB,EACnB,MAAc,EACd,QAAgB,EACW,EAAE;IAC7B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAE7C,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC3G,8FAA8F;IAC9F,kDAAkD;IAClD,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;IAClJ,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACH,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,oBAAoB,QAAQ,qBAAqB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAChJ,YAAY,EAAE,GAAG,CAAC,aAAa;SAClC,CAAC;IACN,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3E,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type LoopPolicy, type LoopPolicyRequest } from "@plurnk/plurnk-contracts";
2
+ export default class LoopPolicies {
3
+ #private;
4
+ static compose(stated: LoopPolicyRequest): LoopPolicy;
5
+ static validateConfiguration(): void;
6
+ }
7
+ //# sourceMappingURL=LoopPolicies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopPolicies.d.ts","sourceRoot":"","sources":["../../src/core/LoopPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAOjH,MAAM,CAAC,OAAO,OAAO,YAAY;;IAI7B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAoBpD;IAGD,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAInC;CAOJ"}
@@ -0,0 +1,37 @@
1
+ import { PROPOSAL_POLICIES, Validator } from "@plurnk/plurnk-contracts";
2
+ import Knob from "./Knob.js";
3
+ import Results, { OperationFailureError } from "./results.js";
4
+ // {§loop-policy-composition} — a loop's policy is what its creator stated over what the panel
5
+ // says, composed once, where the loop is persisted. Every panel state is lawful: attendance picks
6
+ // which disposition knob answers, so only a creator's own statement can contradict itself.
7
+ export default class LoopPolicies {
8
+ // Nobody is present to review in an unattended loop, so review is not a choice there.
9
+ static #UNATTENDED = PROPOSAL_POLICIES.filter((policy) => policy !== "review");
10
+ static compose(stated) {
11
+ const attended = stated.attended ?? Knob.flag("PLURNK_SERVICE_ATTENDED");
12
+ const policy = {
13
+ proposals: stated.proposals ?? LoopPolicies.#proposals(attended),
14
+ attended,
15
+ };
16
+ if (Validator.validateLoopPolicy(policy).valid)
17
+ return policy;
18
+ throw new OperationFailureError(Results.failure("daemon:input", "loop-policy-invalid", 400, "An unattended loop cannot hold a proposal for review: nobody is present to answer.", {}, {
19
+ field: "policy",
20
+ stage: "loop-policy-composition",
21
+ recovery: "State proposals accept or reject, or attend the loop.",
22
+ retryable: false,
23
+ }));
24
+ }
25
+ // An invalid panel fails boot by the knob's name, not the first loop.
26
+ static validateConfiguration() {
27
+ Knob.flag("PLURNK_SERVICE_ATTENDED");
28
+ LoopPolicies.#proposals(true);
29
+ LoopPolicies.#proposals(false);
30
+ }
31
+ static #proposals(attended) {
32
+ return attended
33
+ ? Knob.choice("PLURNK_SERVICE_PROPOSALS", PROPOSAL_POLICIES)
34
+ : Knob.choice("PLURNK_SERVICE_UNATTENDED_PROPOSALS", LoopPolicies.#UNATTENDED);
35
+ }
36
+ }
37
+ //# sourceMappingURL=LoopPolicies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopPolicies.js","sourceRoot":"","sources":["../../src/core/LoopPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAA2C,MAAM,0BAA0B,CAAC;AACjH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE9D,8FAA8F;AAC9F,kGAAkG;AAClG,2FAA2F;AAC3F,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,sFAAsF;IACtF,MAAM,CAAU,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAExF,MAAM,CAAC,OAAO,CAAC,MAAyB;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;YAChE,QAAQ;SACX,CAAC;QACF,IAAI,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC;QAC9D,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAC3C,cAAc,EACd,qBAAqB,EACrB,GAAG,EACH,oFAAoF,EACpF,EAAE,EACF;YACI,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,yBAAyB;YAChC,QAAQ,EAAE,uDAAuD;YACjE,SAAS,EAAE,KAAK;SACnB,CACJ,CAAC,CAAC;IACP,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,qBAAqB;QACxB,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAAiB;QAC/B,OAAO,QAAQ;YACX,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,iBAAiB,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,qCAAqC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACvF,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ import type { ApplicationMessage, MessageResource, MessageResourceReceipt } from "@plurnk/plurnk-contracts";
2
+ import type { Db } from "./Db.ts";
3
+ import type { PlurnkSchemeContext } from "./scheme-types.ts";
4
+ export default class MessageResources {
5
+ static publish(body: string, resources: readonly MessageResource[], ctx: PlurnkSchemeContext): Promise<{
6
+ body: string;
7
+ attachments: MessageResourceReceipt[];
8
+ }>;
9
+ static read(db: Db, args: {
10
+ workspaceId: number;
11
+ workerId: number;
12
+ loopId?: number;
13
+ }): Promise<ApplicationMessage[]>;
14
+ }
15
+ //# sourceMappingURL=MessageResources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageResources.d.ts","sourceRoot":"","sources":["../../src/core/MessageResources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAmB,eAAe,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAE7H,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK7D,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACjC,OAAa,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,eAAe,EAAE,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,sBAAsB,EAAE,CAAA;KAAE,CAAC,CAqBpK;IAED,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAczH;CACJ"}
@@ -0,0 +1,46 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { ResourceNames } from "@plurnk/plurnk-schemes";
3
+ import NativeContent from "./NativeContent.js";
4
+ import EntryCrud from "../schemes/_entry-crud.js";
5
+ import { OperationFailureError } from "./results.js";
6
+ export default class MessageResources {
7
+ static async publish(body, resources, ctx) {
8
+ if (resources.length === 0)
9
+ return { body, attachments: [] };
10
+ const worker = await ctx.db.worker_get.get({ id: ctx.workerId });
11
+ if (worker === undefined)
12
+ throw new Error(`Message recipient ${ctx.workerId} is absent.`);
13
+ const names = new ResourceNames();
14
+ const directory = `/attachments/${randomBytes(4).toString("hex")}`;
15
+ const attachments = [];
16
+ const links = [];
17
+ for (const [index, resource] of resources.entries()) {
18
+ const contentHash = await NativeContent.retain(ctx.db, resource.bytes);
19
+ const name = names.allocate(resource.name, `${contentHash}/${index}`);
20
+ const pathname = `${directory}/${name}`;
21
+ const written = await EntryCrud.writeEntry({ authority: worker.name, pathname }, {
22
+ channels: { body: { content: "", bytes: resource.bytes, mimetype: resource.mediaType } },
23
+ }, ctx, "worker");
24
+ if (written.status >= 400)
25
+ throw new OperationFailureError(written);
26
+ const target = `worker://${worker.name}${pathname}`;
27
+ attachments.push({ name: resource.name || decodeURIComponent(name), mediaType: resource.mediaType, contentHash, target });
28
+ links.push(`<${target}>`);
29
+ }
30
+ return { body: [body, ...links].filter((part) => part.length > 0).join("\n\n"), attachments };
31
+ }
32
+ static async read(db, args) {
33
+ const rows = await db.message_history.all({ workspace_id: args.workspaceId, worker_id: args.workerId, loop_id: args.loopId ?? null });
34
+ return Promise.all(rows.map(async (row) => {
35
+ const evidence = JSON.parse(row.evidence);
36
+ const attachments = await Promise.all((evidence.attachments ?? []).map(async (receipt) => ({
37
+ name: receipt.name, mediaType: receipt.mediaType, target: receipt.target,
38
+ bytes: await NativeContent.read(db, receipt.contentHash),
39
+ })));
40
+ return { id: row.id, loopId: row.loop_id, direction: row.direction, source: row.source, body: row.body,
41
+ answers: JSON.parse(row.answers),
42
+ ...(evidence.envelope === undefined ? {} : { envelope: evidence.envelope }), attachments };
43
+ }));
44
+ }
45
+ }
46
+ //# sourceMappingURL=MessageResources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageResources.js","sourceRoot":"","sources":["../../src/core/MessageResources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ -- PREP: message_history
2
+ -- {§message-envelope-evidence}: evidence is independent of log curation/publication.
3
+ SELECT m.id AS id, m.loop_id AS loop_id, 'inbound' AS direction, m.source, m.body, m.evidence, '[]' AS answers
4
+ FROM loop_messages m
5
+ JOIN loops l ON l.id = m.loop_id
6
+ JOIN workers w ON w.id = l.worker_id
7
+ WHERE w.workspace_id = $workspace_id AND w.id = $worker_id
8
+ AND ($loop_id IS NULL OR l.id = $loop_id)
9
+ UNION ALL
10
+ SELECT e.id, e.loop_id, 'outbound', e.source, e.content,
11
+ json_object('attachments', json(COALESCE(json_extract(e.rx, '$.attachments'), '[]'))),
12
+ json_extract(e.rx, '$.answers')
13
+ FROM message_responses e
14
+ JOIN workers w ON w.id = e.worker_id
15
+ WHERE w.workspace_id = $workspace_id AND w.id = $worker_id
16
+ AND ($loop_id IS NULL OR e.loop_id = $loop_id)
17
+ ORDER BY loop_id, id;
18
+ -- PREP: message_source_resources
19
+ -- A message keeps the address its minter gave it (`a2a://…`, `agui://…`), and {§message-short-identity}
20
+ -- adds the short `message://<worker>/<key>` alias the worker docs teach.
21
+ SELECT path, body FROM message_sources
22
+ WHERE workspace_id = $workspace_id AND path LIKE $scheme || '://%'
23
+ AND ($target IS NULL OR path = $target)
24
+ UNION ALL
25
+ SELECT key_path AS path, body FROM message_sources
26
+ WHERE workspace_id = $workspace_id AND address IS NOT NULL AND $scheme = 'message'
27
+ AND ($target IS NULL OR key_path = $target);
28
+
29
+ -- PREP: message_source_by_address
30
+ -- The short address the model is taught, or the durable one a client minted.
31
+ SELECT * FROM message_sources WHERE workspace_id = $workspace_id AND key_path = $path
32
+ UNION ALL
33
+ SELECT * FROM message_sources WHERE workspace_id = $workspace_id AND address = $path;
34
+
35
+ -- PREP: message_unanswered_count
36
+ SELECT count(*) AS count FROM unanswered_messages WHERE loop_id = $loop_id;
@@ -1,6 +1,7 @@
1
1
  import type HostPaths from "./HostPaths.ts";
2
2
  export default class OperatorConfig {
3
- static renderSeed(): string;
3
+ #private;
4
+ static renderSeed(token?: string): string;
4
5
  static ensure(paths: HostPaths, policySource: string): Promise<boolean>;
5
6
  }
6
7
  //# sourceMappingURL=OperatorConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorConfig.d.ts","sourceRoot":"","sources":["../../src/core/OperatorConfig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAQ5C,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,MAAM,CAAC,UAAU,IAAI,MAAM,CAiD1B;IAED,OAAa,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B5E;CACJ"}
1
+ {"version":3,"file":"OperatorConfig.d.ts","sourceRoot":"","sources":["../../src/core/OperatorConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAQ5C,MAAM,CAAC,OAAO,OAAO,cAAc;;IAU/B,MAAM,CAAC,UAAU,CAAC,KAAK,SAA8B,GAAG,MAAM,CAgD7D;IAED,OAAa,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B5E;CACJ"}
@@ -1,3 +1,4 @@
1
+ import { randomBytes } from "node:crypto";
1
2
  import { constants } from "node:fs";
2
3
  import { access, mkdir, readFile, rmdir, unlink, writeFile } from "node:fs/promises";
3
4
  const exists = async (path) => access(path, constants.F_OK)
@@ -6,18 +7,25 @@ const exists = async (path) => access(path, constants.F_OK)
6
7
  // {§operator-config-discovery} — the user owns this one ordinary dotenv file.
7
8
  // Package defaults remain package-owned and are projected on demand.
8
9
  export default class OperatorConfig {
9
- static renderSeed() {
10
+ // {§agui-http-authorization} — a daemon is one trust domain, and on loopback the operator's own
11
+ // browser is inside it: any page they visit can POST to the port. The bearer is the perimeter,
12
+ // so a fresh install mints one instead of shipping the empty value that means "no check". It
13
+ // lands in the same file the client reads through the same cascade, so a default install keeps
14
+ // working untouched; an operator who wants no perimeter empties the line themselves.
15
+ static #mintToken() {
16
+ return randomBytes(32).toString("base64url");
17
+ }
18
+ static renderSeed(token = OperatorConfig.#mintToken()) {
10
19
  return [
11
20
  "# Plurnk user configuration. This file is yours and is never overwritten.",
12
21
  "# Full installed options: plurnk-service config defaults",
13
22
  "# Validate this cascade: plurnk-service config check",
14
23
  "#",
15
- "# Choose one model profile by uncommenting its complete block.",
24
+ "# The bearer every client presents to this daemon, minted for this install. Anything",
25
+ "# that can reach the port can drive the daemon, so emptying this removes the perimeter.",
26
+ `PLURNK_AGUI_TOKEN=${token}`,
16
27
  "",
17
- "# PLURNK.AI — the proprietary Plurnk endpoint.",
18
- "# PLURNK_MODEL_plurnk=\"plurnk/plurnk\"",
19
- "# PLURNK_API_KEY=\"...\"",
20
- "# PLURNK_MODEL=plurnk",
28
+ "# Choose one model profile by uncommenting its complete block.",
21
29
  "",
22
30
  "# OPENROUTER — bring any supported OpenRouter model.",
23
31
  "# PLURNK_MODEL_openrouter=\"openrouter/qwen/qwen3-coder\"",
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorConfig.js","sourceRoot":"","sources":["../../src/core/OperatorConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OperatorConfig.js","sourceRoot":"","sources":["../../src/core/OperatorConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkBhD,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC;AAG5E,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA2FtE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,CAAC,OAAO,OAAO,aAAa;;IAkB9B,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;QACpC,EAAE,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;KACjD,EASA;IAED,yBAAyB,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAEhH;IAiCD,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAItD;IAIK,kBAAkB,CAAC,EACrB,eAAe,EAAE,KAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAY,EAC7G,uBAA8B,EAC9B,gBAA8B,EAC9B,MAAa,GAChB,EAAE;QACC,eAAe,EAAE,WAAW,EAAE,CAAC;QAE/B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAEtD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QAInB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAG5B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAGxC,gBAAgB,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,OAAO,CAAC,aAAa,CAAC,CAqLzB;IAIK,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQzE;IAEK,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7D;IAIK,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAkCjG;IAGD,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAM/D;IAKK,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9E,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC,CASF;CAsFJ"}
1
+ {"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkBhD,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC;AAG5E,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA2FtE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,CAAC,OAAO,OAAO,aAAa;;IAkB9B,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;QACpC,EAAE,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;KACjD,EASA;IAED,yBAAyB,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAEhH;IAiCD,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAItD;IAIK,kBAAkB,CAAC,EACrB,eAAe,EAAE,KAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAY,EAC7G,uBAA8B,EAC9B,gBAA8B,EAC9B,MAAa,GAChB,EAAE;QACC,eAAe,EAAE,WAAW,EAAE,CAAC;QAE/B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAEtD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC;QAInB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAG5B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAGxC,gBAAgB,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;QAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,OAAO,CAAC,aAAa,CAAC,CAmKzB;IAIK,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQzE;IAEK,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7D;IAIK,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAkCjG;IAGD,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAM/D;IAKK,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9E,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC,CASF;CAsFJ"}
@@ -1,6 +1,6 @@
1
1
  var _a;
2
2
  import WorkerName from "./WorkerName.js";
3
- import { generatedPathname, renderAddress, promptLoopPrefix } from "./plurnk-uri.js";
3
+ import { generatedPathname, renderAddress } from "./plurnk-uri.js";
4
4
  import { contentWeight } from "./content-weight.js";
5
5
  import LoopPolicyReader from "./LoopPolicyReader.js";
6
6
  import CapabilityPolicies from "./CapabilityPolicies.js";
@@ -176,30 +176,22 @@ class PacketBuilder {
176
176
  // {§loop-policy-effective-read} Validate active-loop policy before any
177
177
  // packet assembly or provider spend, independently of its presentation.
178
178
  await LoopPolicyReader.read(this.#db, loopId);
179
- await CapabilityPolicies.layers(this.#db, workspaceId);
179
+ await CapabilityPolicies.layers(this.#db, workspaceId, loopId);
180
180
  const byRole = (role) => initialMessages.filter((m) => m.role === role).map((m) => m.content).join("\n\n");
181
181
  // Resource references are discovered through Turn0, not injected. {§schemes-directory}
182
182
  const system_definition = compactDefinitionTables(byRole("system"));
183
- // The prompt section sources the loop's prompt://<worker>/<loop>/<id> entries.
184
- // Inject and turn-1 initialization write them. Bare callers that
185
- // bypass prompt persistence fall back to messages.user.
186
183
  const loopSeqRow = await this.#db.engine_loop_sequence.get({ loop_id: loopId });
187
184
  const workerName = await WorkerName.forId(this.#db, workerId);
188
- const promptPrefix = promptLoopPrefix(loopSeqRow?.sequence ?? loopId);
189
- const promptRows = (await this.#db.drain_get_all_prompt_bodies_for_loop.all({
190
- worker_id: workerId,
191
- pattern: `${promptPrefix}%`,
192
- prefix_len: promptPrefix.length,
193
- }))
194
- .filter((r) => typeof r.content === "string" && r.content.length > 0);
195
- // The section is a JSON array of prompt paths (the errors shape - no bodies);
196
- // each prompt's content reaches the model through its actionless prompt row, and
197
- // prior prompts stay READable by the listed address - never silently lost, never an
198
- // unfair curation imposition. Fallback: callers that bypass persistence (bare messages)
199
- // still get their user text rendered directly.
200
- const prompt = promptRows.length > 0
201
- ? `[${promptRows.map((r) => JSON.stringify(`prompt://${workerName}${r.pathname}`)).join(",\n")}]`
202
- : byRole("user");
185
+ // {§message-arrival}: source addresses survive curation of their log observations.
186
+ const openMessages = await this.#db.engine_open_messages.all({ loop_id: loopId });
187
+ // {§message-short-identity}: the model is shown the short address, never a client's own
188
+ // transport identity; answering either reaches the same message.
189
+ const prompt = openMessages.length > 0
190
+ ? `[${openMessages.map((m) => JSON.stringify({
191
+ path: m.key_path,
192
+ ...(m.source === null ? {} : { source: m.source }),
193
+ })).join(",\n")}]`
194
+ : "[]";
203
195
  // {§recap}: a non-empty override wins; otherwise read the meta-owned source per packet.
204
196
  const recapContent = recap.length > 0
205
197
  ? recap
@@ -236,7 +228,7 @@ class PacketBuilder {
236
228
  const inject = await readPacketInject(); // {§packet-inject} — per-turn; a broken configured path fails hard
237
229
  const systemPolicy = await readSystemPolicy(); // XDG config AGENTS.md (or PLURNK_SERVICE_POLICY)
238
230
  // {§turn0-agents-stunt} — the PROJECT AGENTS.md rides turn 0 as a foisted
239
- // READ (LoopDocs → worker:///_plurnk/agents.md), not the system prompt.
231
+ // READ (LoopDocs → worker:///_plurnk/AGENTS.md), not the system prompt.
240
232
  // Child-orientation ({§child-orientation}): the live things this worker holds — open streams +
241
233
  // unconcluded child workers — surfaced every turn as `{status, path}` JSON pointers (same shape
242
234
  // as errors) just above the errors section. Orienting STATE so the model never loses track of
@@ -250,15 +242,8 @@ class PacketBuilder {
250
242
  path,
251
243
  detail: channels.map((c) => `${c.channel} ${c.lines} lines (+${Math.max(0, c.bytes - c.reported)} bytes)`).join("; "),
252
244
  }));
253
- const childWorkers = (await this.#db.engine_child_workers_live.all({ worker_id: workerId })).map((r) => {
254
- const tasks = JSON.parse(r.scheduled_tasks);
255
- return {
256
- status: r.status, path: `worker://${r.name}`,
257
- // No clock in a packet (operator, 2026-09-13): a scheduled task is due in so many minutes.
258
- ...(tasks.length === 0 ? {} : { detail: tasks.map((task) => `task ${task.id}: due in ${Math.max(0, Math.round((task.scheduled_at - Date.now()) / 60_000))} min`
259
- + (task.repeat_interval_ms === null ? "" : `, every ${task.repeat_interval_ms / 60_000} min`)).join("; ") }),
260
- };
261
- });
245
+ const childWorkers = (await this.#db.engine_child_workers_live.all({ worker_id: workerId }))
246
+ .map((r) => ({ status: r.status, path: `worker://${r.name}` }));
262
247
  // {§child-orientation} — a child is told whose child it is, so it can name the parent's
263
248
  // streams and space ({§worker-read-scope}, #394). The parent rides the `## Worker` identity
264
249
  // block; a root worker states `"parent": null` rather than omitting it.
@@ -287,7 +272,7 @@ class PacketBuilder {
287
272
  },
288
273
  // {§packet-current-turn} — the Worker block opens the status clump below the log: who
289
274
  // the actor is, whose child it is, and the coordinate this packet's response becomes —
290
- // the one fact the sources cannot state about themselves (which `reasoning:///L/T` is
275
+ // the one fact the sources cannot state about themselves (which `reasoning://<worker>/L/T` is
291
276
  // the model's own). It changes every turn, so it never precedes the log.
292
277
  { name: "worker", slot: "user", header: "Worker", content: JSON.stringify({ path: `worker://${workerName}`, parent: parentPath, loop: loopSeqRow?.sequence ?? loopId, turn: currentTurnSeq }) },
293
278
  // The per-turn status clump follows the log ({§packet-cache-monotone}).
@@ -301,9 +286,9 @@ class PacketBuilder {
301
286
  // Familiar token language is a deliberate final model projection;
302
287
  // internally this is curation weight, never provider admission.
303
288
  { name: "budget", slot: "user", header: "Context Curation", content: budgetReadout },
304
- // The prompts section closes the status clump as a paths-only list;
305
- // bodies arrive through first-class prompt rows.
306
- { name: "prompt", slot: "user", header: "Active Prompts", content: prompt },
289
+ // The messages section closes the status clump as a pointer list of open
290
+ // arrivals; bodies arrive through their inbound SEND rows ({§message-arrival}).
291
+ { name: "messages", slot: "user", header: "Open Messages", content: prompt },
307
292
  { name: "recap", slot: "user", header: "Recap", content: recapContent },
308
293
  ];
309
294
  // Plugin packet control ({§packet-assembly}): trusted schemes rewrite the
@@ -435,7 +420,7 @@ class PacketBuilder {
435
420
  // User prompts are first-class actionless log entries written by
436
421
  // runTurn. They surface naturally in this query without synthetic
437
422
  // EDIT/READ delivery rows.
438
- const rows = await this.#db.engine_render_log.all({ worker_id: workerId });
423
+ const rows = await this.#db.engine_render_log.all({ worker_id: workerId, turn_id: turnId });
439
424
  return rows.map((r) => {
440
425
  const tx = r.mimetype_tx === "application/json" ? JSON.parse(r.tx) : r.tx;
441
426
  const rx = r.mimetype_rx === "application/json" ? JSON.parse(r.rx) : r.rx;