@plurnk/plurnk-service 1.16.5 → 1.18.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 (661) hide show
  1. package/.env.defaults +140 -246
  2. package/INSTALL.md +84 -138
  3. package/README.md +10 -6
  4. package/SPEC.md +2468 -1694
  5. package/dist/Paths.d.ts +2 -0
  6. package/dist/Paths.d.ts.map +1 -1
  7. package/dist/Paths.js +2 -0
  8. package/dist/Paths.js.map +1 -1
  9. package/dist/build-info.d.ts.map +1 -1
  10. package/dist/build-info.js +7 -1
  11. package/dist/build-info.js.map +1 -1
  12. package/dist/build-info.json +1 -1
  13. package/dist/content/body-preview.d.ts +8 -0
  14. package/dist/content/body-preview.d.ts.map +1 -0
  15. package/dist/content/body-preview.js +39 -0
  16. package/dist/content/body-preview.js.map +1 -0
  17. package/dist/content/byte-view.d.ts +1 -4
  18. package/dist/content/byte-view.d.ts.map +1 -1
  19. package/dist/content/byte-view.js.map +1 -1
  20. package/dist/content/edit-collision.d.ts.map +1 -1
  21. package/dist/content/edit-collision.js +3 -4
  22. package/dist/content/edit-collision.js.map +1 -1
  23. package/dist/content/line-anchors.d.ts +2 -2
  24. package/dist/content/line-anchors.d.ts.map +1 -1
  25. package/dist/content/line-anchors.js +4 -3
  26. package/dist/content/line-anchors.js.map +1 -1
  27. package/dist/content/line-selection.d.ts +9 -0
  28. package/dist/content/line-selection.d.ts.map +1 -0
  29. package/dist/content/line-selection.js +29 -0
  30. package/dist/content/line-selection.js.map +1 -0
  31. package/dist/content/matcher.d.ts +0 -1
  32. package/dist/content/matcher.d.ts.map +1 -1
  33. package/dist/content/matcher.js +2 -3
  34. package/dist/content/matcher.js.map +1 -1
  35. package/dist/content/pattern-edits.d.ts +39 -0
  36. package/dist/content/pattern-edits.d.ts.map +1 -0
  37. package/dist/content/pattern-edits.js +121 -0
  38. package/dist/content/pattern-edits.js.map +1 -0
  39. package/dist/content/read-projector.d.ts +18 -9
  40. package/dist/content/read-projector.d.ts.map +1 -1
  41. package/dist/content/read-projector.js +132 -35
  42. package/dist/content/read-projector.js.map +1 -1
  43. package/dist/content/read-resolve.d.ts +4 -1
  44. package/dist/content/read-resolve.d.ts.map +1 -1
  45. package/dist/content/read-resolve.js +42 -7
  46. package/dist/content/read-resolve.js.map +1 -1
  47. package/dist/core/AdmittedTurnExecutor.d.ts +2 -5
  48. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  49. package/dist/core/AdmittedTurnExecutor.js +96 -88
  50. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  51. package/dist/core/BareBatchRunner.d.ts +6 -1
  52. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  53. package/dist/core/BareBatchRunner.js +20 -5
  54. package/dist/core/BareBatchRunner.js.map +1 -1
  55. package/dist/core/BudgetReadout.d.ts +2 -3
  56. package/dist/core/BudgetReadout.d.ts.map +1 -1
  57. package/dist/core/BudgetReadout.js +23 -32
  58. package/dist/core/BudgetReadout.js.map +1 -1
  59. package/dist/core/CapabilityPolicies.d.ts +3 -8
  60. package/dist/core/CapabilityPolicies.d.ts.map +1 -1
  61. package/dist/core/CapabilityPolicies.js +2 -28
  62. package/dist/core/CapabilityPolicies.js.map +1 -1
  63. package/dist/core/CapabilityResolver.d.ts +10 -10
  64. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  65. package/dist/core/CapabilityResolver.js +122 -93
  66. package/dist/core/CapabilityResolver.js.map +1 -1
  67. package/dist/core/ChannelWrite.d.ts +15 -11
  68. package/dist/core/ChannelWrite.d.ts.map +1 -1
  69. package/dist/core/ChannelWrite.js +12 -13
  70. package/dist/core/ChannelWrite.js.map +1 -1
  71. package/dist/core/ChannelWrite.sql +99 -9
  72. package/dist/core/ClientInteractions.d.ts.map +1 -1
  73. package/dist/core/ClientInteractions.js +7 -0
  74. package/dist/core/ClientInteractions.js.map +1 -1
  75. package/dist/core/CoreSchemeServices.d.ts +13 -10
  76. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  77. package/dist/core/CoreSchemeServices.js +13 -5
  78. package/dist/core/CoreSchemeServices.js.map +1 -1
  79. package/dist/core/DataStatementRunner.d.ts +2 -2
  80. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  81. package/dist/core/DataStatementRunner.js +208 -161
  82. package/dist/core/DataStatementRunner.js.map +1 -1
  83. package/dist/core/Dispatcher.d.ts +24 -26
  84. package/dist/core/Dispatcher.d.ts.map +1 -1
  85. package/dist/core/Dispatcher.js +381 -232
  86. package/dist/core/Dispatcher.js.map +1 -1
  87. package/dist/core/Dispatcher.sql +66 -0
  88. package/dist/core/DurableStatement.d.ts.map +1 -1
  89. package/dist/core/DurableStatement.js +2 -1
  90. package/dist/core/DurableStatement.js.map +1 -1
  91. package/dist/core/EditMutations.d.ts +14 -18
  92. package/dist/core/EditMutations.d.ts.map +1 -1
  93. package/dist/core/EditMutations.js +211 -280
  94. package/dist/core/EditMutations.js.map +1 -1
  95. package/dist/core/EditMutations.sql +15 -0
  96. package/dist/core/EditSequence.d.ts +13 -0
  97. package/dist/core/EditSequence.d.ts.map +1 -0
  98. package/dist/core/EditSequence.js +73 -0
  99. package/dist/core/EditSequence.js.map +1 -0
  100. package/dist/core/Engine.d.ts +17 -23
  101. package/dist/core/Engine.d.ts.map +1 -1
  102. package/dist/core/Engine.js +74 -164
  103. package/dist/core/Engine.js.map +1 -1
  104. package/dist/core/Engine.sql +0 -724
  105. package/dist/core/EntryAddressBinding.d.ts +7 -17
  106. package/dist/core/EntryAddressBinding.d.ts.map +1 -1
  107. package/dist/core/EntryAddressBinding.js +12 -72
  108. package/dist/core/EntryAddressBinding.js.map +1 -1
  109. package/dist/core/ExecutionOutputs.d.ts +9 -0
  110. package/dist/core/ExecutionOutputs.d.ts.map +1 -0
  111. package/dist/core/ExecutionOutputs.js +36 -0
  112. package/dist/core/ExecutionOutputs.js.map +1 -0
  113. package/dist/core/ExecutionOutputs.sql +21 -0
  114. package/dist/core/ExecutorRegistry.d.ts +11 -5
  115. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  116. package/dist/core/ExecutorRegistry.js +37 -32
  117. package/dist/core/ExecutorRegistry.js.map +1 -1
  118. package/dist/core/HostPaths.d.ts +1 -0
  119. package/dist/core/HostPaths.d.ts.map +1 -1
  120. package/dist/core/HostPaths.js +4 -0
  121. package/dist/core/HostPaths.js.map +1 -1
  122. package/dist/core/InferenceCall.d.ts.map +1 -1
  123. package/dist/core/InferenceCall.js +1 -2
  124. package/dist/core/InferenceCall.js.map +1 -1
  125. package/dist/core/InferenceCall.sql +29 -0
  126. package/dist/core/KillHandler.d.ts +1 -0
  127. package/dist/core/KillHandler.d.ts.map +1 -1
  128. package/dist/core/KillHandler.js +24 -21
  129. package/dist/core/KillHandler.js.map +1 -1
  130. package/dist/core/LogBody.d.ts +8 -1
  131. package/dist/core/LogBody.d.ts.map +1 -1
  132. package/dist/core/LogBody.js +44 -12
  133. package/dist/core/LogBody.js.map +1 -1
  134. package/dist/core/LogEntryProjection.d.ts +1 -0
  135. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  136. package/dist/core/LogEntryProjection.js +12 -10
  137. package/dist/core/LogEntryProjection.js.map +1 -1
  138. package/dist/core/LogVisibility.d.ts +1 -0
  139. package/dist/core/LogVisibility.d.ts.map +1 -1
  140. package/dist/core/LogVisibility.js +3 -0
  141. package/dist/core/LogVisibility.js.map +1 -1
  142. package/dist/core/LogWriter.d.ts +2 -3
  143. package/dist/core/LogWriter.d.ts.map +1 -1
  144. package/dist/core/LogWriter.js +31 -36
  145. package/dist/core/LogWriter.js.map +1 -1
  146. package/dist/core/LogWriter.sql +23 -0
  147. package/dist/core/LoopDriver.d.ts +11 -8
  148. package/dist/core/LoopDriver.d.ts.map +1 -1
  149. package/dist/core/LoopDriver.js +161 -189
  150. package/dist/core/LoopDriver.js.map +1 -1
  151. package/dist/core/LoopDriver.sql +11 -0
  152. package/dist/core/LoopLifecycle.d.ts +32 -2
  153. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  154. package/dist/core/LoopLifecycle.js +88 -4
  155. package/dist/core/LoopLifecycle.js.map +1 -1
  156. package/dist/core/LoopLifecycle.sql +145 -28
  157. package/dist/core/LoopPolicyReader.sql +6 -0
  158. package/dist/core/MembershipMaterialization.d.ts.map +1 -1
  159. package/dist/core/MembershipMaterialization.js +6 -28
  160. package/dist/core/MembershipMaterialization.js.map +1 -1
  161. package/dist/core/ModelCall.d.ts.map +1 -1
  162. package/dist/core/ModelCall.js +2 -6
  163. package/dist/core/ModelCall.js.map +1 -1
  164. package/dist/core/ModelCall.sql +41 -0
  165. package/dist/core/MutationEffects.d.ts +5 -3
  166. package/dist/core/MutationEffects.d.ts.map +1 -1
  167. package/dist/core/MutationEffects.js +10 -28
  168. package/dist/core/MutationEffects.js.map +1 -1
  169. package/dist/core/NativeContent.d.ts +6 -0
  170. package/dist/core/NativeContent.d.ts.map +1 -0
  171. package/dist/core/NativeContent.js +16 -0
  172. package/dist/core/NativeContent.js.map +1 -0
  173. package/dist/core/NativeContent.sql +6 -0
  174. package/dist/core/NoticeChannel.js +1 -1
  175. package/dist/core/NoticeChannel.js.map +1 -1
  176. package/dist/core/OperatorConfig.js +5 -5
  177. package/dist/core/OperatorConfig.js.map +1 -1
  178. package/dist/core/PacketBuilder.d.ts +8 -5
  179. package/dist/core/PacketBuilder.d.ts.map +1 -1
  180. package/dist/core/PacketBuilder.js +117 -81
  181. package/dist/core/PacketBuilder.js.map +1 -1
  182. package/dist/core/PacketBuilder.sql +146 -0
  183. package/dist/core/PatternSelection.d.ts +28 -0
  184. package/dist/core/PatternSelection.d.ts.map +1 -0
  185. package/dist/core/PatternSelection.js +42 -0
  186. package/dist/core/PatternSelection.js.map +1 -0
  187. package/dist/core/ProblemLog.d.ts.map +1 -1
  188. package/dist/core/ProblemLog.js +0 -1
  189. package/dist/core/ProblemLog.js.map +1 -1
  190. package/dist/core/PromptFrames.d.ts +12 -0
  191. package/dist/core/PromptFrames.d.ts.map +1 -0
  192. package/dist/core/PromptFrames.js +28 -0
  193. package/dist/core/PromptFrames.js.map +1 -0
  194. package/dist/core/ProposalLifecycle.d.ts +0 -1
  195. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  196. package/dist/core/ProposalLifecycle.js +26 -23
  197. package/dist/core/ProposalLifecycle.js.map +1 -1
  198. package/dist/core/ProposalLifecycle.sql +33 -0
  199. package/dist/core/ProviderInstantiate.d.ts +1 -1
  200. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  201. package/dist/core/ProviderInstantiate.js +7 -14
  202. package/dist/core/ProviderInstantiate.js.map +1 -1
  203. package/dist/core/ReasoningView.d.ts +9 -0
  204. package/dist/core/ReasoningView.d.ts.map +1 -0
  205. package/dist/core/ReasoningView.js +47 -0
  206. package/dist/core/ReasoningView.js.map +1 -0
  207. package/dist/core/ResourceBindings.d.ts +16 -0
  208. package/dist/core/ResourceBindings.d.ts.map +1 -0
  209. package/dist/core/ResourceBindings.js +45 -0
  210. package/dist/core/ResourceBindings.js.map +1 -0
  211. package/dist/core/ResourceMutations.d.ts +5 -8
  212. package/dist/core/ResourceMutations.d.ts.map +1 -1
  213. package/dist/core/ResourceMutations.js +6 -7
  214. package/dist/core/ResourceMutations.js.map +1 -1
  215. package/dist/core/ResourceSelector.d.ts +2 -2
  216. package/dist/core/ResourceSelector.d.ts.map +1 -1
  217. package/dist/core/ResourceSelector.js +122 -62
  218. package/dist/core/ResourceSelector.js.map +1 -1
  219. package/dist/core/ResourceTransfers.d.ts +4 -2
  220. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  221. package/dist/core/ResourceTransfers.js +95 -26
  222. package/dist/core/ResourceTransfers.js.map +1 -1
  223. package/dist/core/RuntimeWorker.d.ts +5 -0
  224. package/dist/core/RuntimeWorker.d.ts.map +1 -0
  225. package/dist/core/RuntimeWorker.js +15 -0
  226. package/dist/core/RuntimeWorker.js.map +1 -0
  227. package/dist/core/RuntimeWorker.sql +11 -0
  228. package/dist/core/SchemeRegistry.d.ts +12 -16
  229. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  230. package/dist/core/SchemeRegistry.js +59 -85
  231. package/dist/core/SchemeRegistry.js.map +1 -1
  232. package/dist/core/StoredPacket.d.ts +6 -1
  233. package/dist/core/StoredPacket.d.ts.map +1 -1
  234. package/dist/core/StoredPacket.js +30 -10
  235. package/dist/core/StoredPacket.js.map +1 -1
  236. package/dist/core/StrikeRail.d.ts +11 -8
  237. package/dist/core/StrikeRail.d.ts.map +1 -1
  238. package/dist/core/StrikeRail.js +63 -114
  239. package/dist/core/StrikeRail.js.map +1 -1
  240. package/dist/core/StrikeRail.sql +12 -0
  241. package/dist/core/TerminalResult.d.ts +1 -1
  242. package/dist/core/TerminalResult.d.ts.map +1 -1
  243. package/dist/core/TerminalResult.js +2 -2
  244. package/dist/core/TerminalResult.js.map +1 -1
  245. package/dist/core/TokenCalibration.d.ts +1 -6
  246. package/dist/core/TokenCalibration.d.ts.map +1 -1
  247. package/dist/core/TokenCalibration.js +13 -9
  248. package/dist/core/TokenCalibration.js.map +1 -1
  249. package/dist/core/TokenCalibration.sql +15 -0
  250. package/dist/core/ToolInputSchema.d.ts +6 -0
  251. package/dist/core/ToolInputSchema.d.ts.map +1 -0
  252. package/dist/core/ToolInputSchema.js +43 -0
  253. package/dist/core/ToolInputSchema.js.map +1 -0
  254. package/dist/core/ToolResources.d.ts.map +1 -1
  255. package/dist/core/ToolResources.js +77 -51
  256. package/dist/core/ToolResources.js.map +1 -1
  257. package/dist/core/Turn.d.ts +5 -2
  258. package/dist/core/Turn.d.ts.map +1 -1
  259. package/dist/core/Turn.js +13 -11
  260. package/dist/core/Turn.js.map +1 -1
  261. package/dist/core/Turn.sql +25 -39
  262. package/dist/core/{SendBroadcastHandler.d.ts → TurnDispositionHandler.d.ts} +24 -18
  263. package/dist/core/TurnDispositionHandler.d.ts.map +1 -0
  264. package/dist/core/TurnDispositionHandler.js +206 -0
  265. package/dist/core/TurnDispositionHandler.js.map +1 -0
  266. package/dist/core/TurnMaterialization.d.ts +2 -3
  267. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  268. package/dist/core/TurnMaterialization.js +47 -24
  269. package/dist/core/TurnMaterialization.js.map +1 -1
  270. package/dist/core/TurnMaterialization.sql +44 -0
  271. package/dist/core/TurnOps.d.ts.map +1 -1
  272. package/dist/core/TurnOps.js +8 -64
  273. package/dist/core/TurnOps.js.map +1 -1
  274. package/dist/core/TurnRunner.d.ts +8 -15
  275. package/dist/core/TurnRunner.d.ts.map +1 -1
  276. package/dist/core/TurnRunner.js +1175 -1317
  277. package/dist/core/TurnRunner.js.map +1 -1
  278. package/dist/core/TurnRunner.sql +74 -0
  279. package/dist/core/TurnSources.sql +39 -0
  280. package/dist/core/WorkerControlAddress.d.ts +1 -0
  281. package/dist/core/WorkerControlAddress.d.ts.map +1 -1
  282. package/dist/core/WorkerControlAddress.js +5 -0
  283. package/dist/core/WorkerControlAddress.js.map +1 -1
  284. package/dist/core/WorkerControlHandler.d.ts +1 -3
  285. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  286. package/dist/core/WorkerControlHandler.js +64 -48
  287. package/dist/core/WorkerControlHandler.js.map +1 -1
  288. package/dist/core/WorkerName.d.ts +11 -12
  289. package/dist/core/WorkerName.d.ts.map +1 -1
  290. package/dist/core/WorkerName.js +40 -47
  291. package/dist/core/WorkerName.js.map +1 -1
  292. package/dist/core/WorkerName.sql +7 -10
  293. package/dist/core/WorkspaceGate.d.ts +1 -1
  294. package/dist/core/WorkspaceGate.d.ts.map +1 -1
  295. package/dist/core/WorkspaceGate.js +33 -10
  296. package/dist/core/WorkspaceGate.js.map +1 -1
  297. package/dist/core/ambient.sql +236 -0
  298. package/dist/core/attachments.d.ts +2 -1
  299. package/dist/core/attachments.d.ts.map +1 -1
  300. package/dist/core/attachments.js +5 -4
  301. package/dist/core/attachments.js.map +1 -1
  302. package/dist/core/caps/CapsResolve.d.ts +2 -3
  303. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  304. package/dist/core/caps/CapsResolve.js +5 -5
  305. package/dist/core/caps/CapsResolve.js.map +1 -1
  306. package/dist/core/caps/DbChannelCaps.d.ts +1 -1
  307. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  308. package/dist/core/caps/DbChannelCaps.js +4 -6
  309. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  310. package/dist/core/caps/DbEntryCaps.d.ts +2 -1
  311. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  312. package/dist/core/caps/DbEntryCaps.js +11 -17
  313. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  314. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  315. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  316. package/dist/core/caps/DbNotifyCaps.js +3 -5
  317. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  318. package/dist/core/caps/DbProjectionCaps.js +1 -1
  319. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  320. package/dist/core/caps/DbSubscriptionCaps.d.ts +1 -1
  321. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  322. package/dist/core/caps/DbSubscriptionCaps.js +5 -7
  323. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  324. package/dist/core/caps/SchemeCtxImpl.d.ts +0 -2
  325. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  326. package/dist/core/caps/SchemeCtxImpl.js +4 -20
  327. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  328. package/dist/core/env-catalog.d.ts +28 -0
  329. package/dist/core/env-catalog.d.ts.map +1 -0
  330. package/dist/core/env-catalog.js +99 -0
  331. package/dist/core/env-catalog.js.map +1 -0
  332. package/dist/core/env-defaults.d.ts.map +1 -1
  333. package/dist/core/env-defaults.js +4 -2
  334. package/dist/core/env-defaults.js.map +1 -1
  335. package/dist/core/file-materialization.d.ts +4 -1
  336. package/dist/core/file-materialization.d.ts.map +1 -1
  337. package/dist/core/file-materialization.js +15 -1
  338. package/dist/core/file-materialization.js.map +1 -1
  339. package/dist/core/fork.d.ts +1 -6
  340. package/dist/core/fork.d.ts.map +1 -1
  341. package/dist/core/fork.js +9 -153
  342. package/dist/core/fork.js.map +1 -1
  343. package/dist/core/fork.sql +162 -185
  344. package/dist/core/git-env.d.ts +1 -0
  345. package/dist/core/git-env.d.ts.map +1 -1
  346. package/dist/core/git-env.js +39 -2
  347. package/dist/core/git-env.js.map +1 -1
  348. package/dist/core/git-membership.d.ts.map +1 -1
  349. package/dist/core/git-membership.js +64 -48
  350. package/dist/core/git-membership.js.map +1 -1
  351. package/dist/core/git-state.d.ts.map +1 -1
  352. package/dist/core/git-state.js +26 -20
  353. package/dist/core/git-state.js.map +1 -1
  354. package/dist/core/glob_match.d.ts +4 -0
  355. package/dist/core/glob_match.d.ts.map +1 -0
  356. package/dist/core/glob_match.js +7 -0
  357. package/dist/core/glob_match.js.map +1 -0
  358. package/dist/core/maintenance.sql +6 -0
  359. package/dist/core/mutation-types.d.ts +7 -28
  360. package/dist/core/mutation-types.d.ts.map +1 -1
  361. package/dist/core/operation-target-groups.d.ts.map +1 -1
  362. package/dist/core/operation-target-groups.js +2 -1
  363. package/dist/core/operation-target-groups.js.map +1 -1
  364. package/dist/core/packet-inject.d.ts.map +1 -1
  365. package/dist/core/packet-inject.js +2 -3
  366. package/dist/core/packet-inject.js.map +1 -1
  367. package/dist/core/packet-wire.d.ts +8 -6
  368. package/dist/core/packet-wire.d.ts.map +1 -1
  369. package/dist/core/packet-wire.js +381 -388
  370. package/dist/core/packet-wire.js.map +1 -1
  371. package/dist/core/plurnk-uri.d.ts +1 -1
  372. package/dist/core/plurnk-uri.d.ts.map +1 -1
  373. package/dist/core/plurnk-uri.js +5 -12
  374. package/dist/core/plurnk-uri.js.map +1 -1
  375. package/dist/core/scheme-types.d.ts +3 -3
  376. package/dist/core/scheme-types.d.ts.map +1 -1
  377. package/dist/core/scheme-types.js.map +1 -1
  378. package/dist/core/sha256.d.ts +4 -0
  379. package/dist/core/sha256.d.ts.map +1 -0
  380. package/dist/core/sha256.js +6 -0
  381. package/dist/core/sha256.js.map +1 -0
  382. package/dist/core/teaching.js +1 -1
  383. package/dist/core/teaching.js.map +1 -1
  384. package/dist/core/turn-scheduler.d.ts.map +1 -1
  385. package/dist/core/turn-scheduler.js +5 -18
  386. package/dist/core/turn-scheduler.js.map +1 -1
  387. package/dist/core/turn-signals.d.ts +0 -6
  388. package/dist/core/turn-signals.d.ts.map +1 -1
  389. package/dist/core/turn-signals.js +1 -7
  390. package/dist/core/turn-signals.js.map +1 -1
  391. package/dist/core/worker-ops.sql +15 -22
  392. package/dist/core/workspace-settings.d.ts.map +1 -1
  393. package/dist/core/workspace-settings.js +18 -2
  394. package/dist/core/workspace-settings.js.map +1 -1
  395. package/dist/core/workspace-settings.sql +6 -0
  396. package/dist/digest/Digest.d.ts.map +1 -1
  397. package/dist/digest/Digest.js +30 -91
  398. package/dist/digest/Digest.js.map +1 -1
  399. package/dist/digest/DigestRender.d.ts +1 -0
  400. package/dist/digest/DigestRender.d.ts.map +1 -1
  401. package/dist/digest/DigestRender.js +58 -62
  402. package/dist/digest/DigestRender.js.map +1 -1
  403. package/dist/digest/digest-rows.d.ts +16 -32
  404. package/dist/digest/digest-rows.d.ts.map +1 -1
  405. package/dist/digest/digest.sql +54 -20
  406. package/dist/schemes/Exec.d.ts +6 -12
  407. package/dist/schemes/Exec.d.ts.map +1 -1
  408. package/dist/schemes/Exec.js +318 -215
  409. package/dist/schemes/Exec.js.map +1 -1
  410. package/dist/schemes/ExecOutputScheme.d.ts +8 -6
  411. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  412. package/dist/schemes/ExecOutputScheme.js +33 -61
  413. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  414. package/dist/schemes/ExecScheduler.js +2 -2
  415. package/dist/schemes/ExecScheduler.js.map +1 -1
  416. package/dist/schemes/ExecutionInput.d.ts +12 -0
  417. package/dist/schemes/ExecutionInput.d.ts.map +1 -0
  418. package/dist/schemes/ExecutionInput.js +94 -0
  419. package/dist/schemes/ExecutionInput.js.map +1 -0
  420. package/dist/schemes/File.d.ts +5 -2
  421. package/dist/schemes/File.d.ts.map +1 -1
  422. package/dist/schemes/File.js +62 -91
  423. package/dist/schemes/File.js.map +1 -1
  424. package/dist/schemes/Log.d.ts.map +1 -1
  425. package/dist/schemes/Log.js +84 -79
  426. package/dist/schemes/Log.js.map +1 -1
  427. package/dist/schemes/Log.sql +183 -15
  428. package/dist/schemes/Prompt.d.ts.map +1 -1
  429. package/dist/schemes/Prompt.js +3 -12
  430. package/dist/schemes/Prompt.js.map +1 -1
  431. package/dist/schemes/QuestionTool.d.ts +5 -0
  432. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  433. package/dist/schemes/QuestionTool.js +7 -15
  434. package/dist/schemes/QuestionTool.js.map +1 -1
  435. package/dist/schemes/Skill.d.ts +12 -7
  436. package/dist/schemes/Skill.d.ts.map +1 -1
  437. package/dist/schemes/Skill.js +149 -21
  438. package/dist/schemes/Skill.js.map +1 -1
  439. package/dist/schemes/TurnSource.d.ts +12 -0
  440. package/dist/schemes/TurnSource.d.ts.map +1 -0
  441. package/dist/schemes/TurnSource.js +117 -0
  442. package/dist/schemes/TurnSource.js.map +1 -0
  443. package/dist/schemes/Worker.d.ts +3 -3
  444. package/dist/schemes/Worker.d.ts.map +1 -1
  445. package/dist/schemes/Worker.js +61 -208
  446. package/dist/schemes/Worker.js.map +1 -1
  447. package/dist/schemes/_entry-crud.d.ts +12 -15
  448. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  449. package/dist/schemes/_entry-crud.js +63 -63
  450. package/dist/schemes/_entry-crud.js.map +1 -1
  451. package/dist/schemes/_entry-crud.sql +159 -45
  452. package/dist/schemes/_entry-find.d.ts +1 -3
  453. package/dist/schemes/_entry-find.d.ts.map +1 -1
  454. package/dist/schemes/_entry-find.js +111 -112
  455. package/dist/schemes/_entry-find.js.map +1 -1
  456. package/dist/schemes/_entry-find.sql +22 -14
  457. package/dist/schemes/_entry-fts.d.ts +14 -0
  458. package/dist/schemes/_entry-fts.d.ts.map +1 -0
  459. package/dist/schemes/_entry-fts.js +82 -0
  460. package/dist/schemes/_entry-fts.js.map +1 -0
  461. package/dist/schemes/_entry-fts.sql +31 -0
  462. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  463. package/dist/schemes/_entry-graph.js +6 -14
  464. package/dist/schemes/_entry-graph.js.map +1 -1
  465. package/dist/schemes/_entry-graph.sql +29 -44
  466. package/dist/schemes/_entry-manifest.d.ts +2 -1
  467. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  468. package/dist/schemes/_entry-manifest.js +20 -26
  469. package/dist/schemes/_entry-manifest.js.map +1 -1
  470. package/dist/schemes/_entry-manifest.sql +26 -0
  471. package/dist/schemes/_entry-ops.d.ts +3 -5
  472. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  473. package/dist/schemes/_entry-ops.js +30 -43
  474. package/dist/schemes/_entry-ops.js.map +1 -1
  475. package/dist/schemes/_entry-ops.sql +5 -6
  476. package/dist/schemes/_entry-readable.d.ts +8 -0
  477. package/dist/schemes/_entry-readable.d.ts.map +1 -0
  478. package/dist/schemes/_entry-readable.js +38 -0
  479. package/dist/schemes/_entry-readable.js.map +1 -0
  480. package/dist/schemes/_entry-send.d.ts +1 -1
  481. package/dist/schemes/_entry-send.d.ts.map +1 -1
  482. package/dist/schemes/_entry-send.js +3 -3
  483. package/dist/schemes/_entry-send.js.map +1 -1
  484. package/dist/schemes/_search-index.d.ts +5 -3
  485. package/dist/schemes/_search-index.d.ts.map +1 -1
  486. package/dist/schemes/_search-index.js +169 -160
  487. package/dist/schemes/_search-index.js.map +1 -1
  488. package/dist/schemes/_search-index.sql +47 -0
  489. package/dist/schemes/exec-abort.js +1 -1
  490. package/dist/schemes/exec-abort.js.map +1 -1
  491. package/dist/schemes/exec-env.d.ts +3 -0
  492. package/dist/schemes/exec-env.d.ts.map +1 -1
  493. package/dist/schemes/exec-env.js +66 -15
  494. package/dist/schemes/exec-env.js.map +1 -1
  495. package/dist/schemes/exec-runtime.d.ts +1 -1
  496. package/dist/schemes/exec-runtime.d.ts.map +1 -1
  497. package/dist/schemes/exec-runtime.js +1 -1
  498. package/dist/schemes/exec-runtime.js.map +1 -1
  499. package/dist/server/ClientReads.d.ts +2 -2
  500. package/dist/server/ClientReads.d.ts.map +1 -1
  501. package/dist/server/ClientReads.js +7 -9
  502. package/dist/server/ClientReads.js.map +1 -1
  503. package/dist/server/Daemon.d.ts +15 -21
  504. package/dist/server/Daemon.d.ts.map +1 -1
  505. package/dist/server/Daemon.js +165 -168
  506. package/dist/server/Daemon.js.map +1 -1
  507. package/dist/server/DaemonModule.d.ts +29 -22
  508. package/dist/server/DaemonModule.d.ts.map +1 -1
  509. package/dist/server/DrainSupervisor.d.ts +8 -21
  510. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  511. package/dist/server/DrainSupervisor.js +278 -306
  512. package/dist/server/DrainSupervisor.js.map +1 -1
  513. package/dist/server/EnvFunctionality.d.ts +43 -0
  514. package/dist/server/EnvFunctionality.d.ts.map +1 -0
  515. package/dist/server/EnvFunctionality.js +194 -0
  516. package/dist/server/EnvFunctionality.js.map +1 -0
  517. package/dist/server/Functionality.d.ts +12 -11
  518. package/dist/server/Functionality.d.ts.map +1 -1
  519. package/dist/server/Functionality.js +279 -142
  520. package/dist/server/Functionality.js.map +1 -1
  521. package/dist/server/FunctionalityManager.d.ts +5 -5
  522. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  523. package/dist/server/FunctionalityManager.js +29 -57
  524. package/dist/server/FunctionalityManager.js.map +1 -1
  525. package/dist/server/MembersFunctionality.d.ts +5 -4
  526. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  527. package/dist/server/MembersFunctionality.js +24 -38
  528. package/dist/server/MembersFunctionality.js.map +1 -1
  529. package/dist/server/PlurnkSkill.d.ts +11 -0
  530. package/dist/server/PlurnkSkill.d.ts.map +1 -0
  531. package/dist/server/PlurnkSkill.js +41 -0
  532. package/dist/server/PlurnkSkill.js.map +1 -0
  533. package/dist/server/Retention.d.ts +25 -0
  534. package/dist/server/Retention.d.ts.map +1 -0
  535. package/dist/server/Retention.js +57 -0
  536. package/dist/server/Retention.js.map +1 -0
  537. package/dist/server/Retention.sql +59 -0
  538. package/dist/server/ServiceModules.d.ts +5 -0
  539. package/dist/server/ServiceModules.d.ts.map +1 -0
  540. package/dist/server/ServiceModules.js +10 -0
  541. package/dist/server/ServiceModules.js.map +1 -0
  542. package/dist/server/SkillsFunctionality.d.ts +14 -19
  543. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  544. package/dist/server/SkillsFunctionality.js +102 -106
  545. package/dist/server/SkillsFunctionality.js.map +1 -1
  546. package/dist/server/WorkerModelResolver.d.ts +4 -0
  547. package/dist/server/WorkerModelResolver.d.ts.map +1 -1
  548. package/dist/server/WorkerModelResolver.js +72 -39
  549. package/dist/server/WorkerModelResolver.js.map +1 -1
  550. package/dist/server/WorkspaceCapabilities.d.ts +21 -0
  551. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -0
  552. package/dist/server/{WorkerCapabilities.js → WorkspaceCapabilities.js} +40 -40
  553. package/dist/server/WorkspaceCapabilities.js.map +1 -0
  554. package/dist/server/WorkspaceResidency.d.ts +38 -0
  555. package/dist/server/WorkspaceResidency.d.ts.map +1 -0
  556. package/dist/server/WorkspaceResidency.js +226 -0
  557. package/dist/server/WorkspaceResidency.js.map +1 -0
  558. package/dist/server/client-input.d.ts +1 -4
  559. package/dist/server/client-input.d.ts.map +1 -1
  560. package/dist/server/client-input.js +5 -46
  561. package/dist/server/client-input.js.map +1 -1
  562. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  563. package/dist/server/dispatch-as-plurnk.js +4 -22
  564. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  565. package/dist/server/drain.sql +66 -43
  566. package/dist/server/envelope.d.ts +8 -1
  567. package/dist/server/envelope.d.ts.map +1 -1
  568. package/dist/server/envelope.js +9 -19
  569. package/dist/server/envelope.js.map +1 -1
  570. package/dist/server/envelope.sql +49 -13
  571. package/dist/server/lifecycle-recovery.sql +18 -20
  572. package/dist/server/logEntry.d.ts +1 -1
  573. package/dist/server/logEntry.d.ts.map +1 -1
  574. package/dist/server/logEntry.js +4 -1
  575. package/dist/server/logEntry.js.map +1 -1
  576. package/dist/server/logEntry.sql +25 -1
  577. package/dist/server/loopDocs.d.ts +2 -2
  578. package/dist/server/loopDocs.d.ts.map +1 -1
  579. package/dist/server/loopDocs.js +38 -31
  580. package/dist/server/loopDocs.js.map +1 -1
  581. package/dist/server/loopDocs.sql +1 -3
  582. package/dist/server/model-catalog.d.ts.map +1 -1
  583. package/dist/server/model-catalog.js +2 -1
  584. package/dist/server/model-catalog.js.map +1 -1
  585. package/dist/server/model-route.d.ts +1 -1
  586. package/dist/server/model-route.d.ts.map +1 -1
  587. package/dist/server/model-route.js +4 -2
  588. package/dist/server/model-route.js.map +1 -1
  589. package/dist/server/seam-entry-read.sql +3 -4
  590. package/dist/server/seam-loop.sql +2 -9
  591. package/dist/server/workspace-capabilities.sql +64 -0
  592. package/dist/service.d.ts.map +1 -1
  593. package/dist/service.js +21 -18
  594. package/dist/service.js.map +1 -1
  595. package/docs/env.md +55 -0
  596. package/docs/members.md +83 -0
  597. package/docs/skills.md +50 -0
  598. package/migrations/001_workspaces.sql +53 -0
  599. package/migrations/002_workers.sql +198 -0
  600. package/migrations/003_loops.sql +326 -0
  601. package/migrations/004_inference.sql +401 -0
  602. package/migrations/005_entries.sql +215 -0
  603. package/migrations/006_log.sql +581 -0
  604. package/migrations/007_subscriptions.sql +175 -0
  605. package/migrations/008_interactions.sql +29 -0
  606. package/package.json +44 -41
  607. package/digest-sql/channel-dispositions/dispositions.sql +0 -15
  608. package/digest-sql/channel-state/state.sql +0 -6
  609. package/digest-sql/curation/curation.sql +0 -6
  610. package/digest-sql/derivations/derivations.sql +0 -4
  611. package/digest-sql/embeddings/embeddings.sql +0 -4
  612. package/digest-sql/entry-dispositions/dispositions.sql +0 -15
  613. package/digest-sql/entry-state/state.sql +0 -6
  614. package/digest-sql/token-counts/token-counts.sql +0 -2
  615. package/dist/core/EmbeddingCall.d.ts +0 -23
  616. package/dist/core/EmbeddingCall.d.ts.map +0 -1
  617. package/dist/core/EmbeddingCall.js +0 -149
  618. package/dist/core/EmbeddingCall.js.map +0 -1
  619. package/dist/core/OverflowTurn.d.ts +0 -11
  620. package/dist/core/OverflowTurn.d.ts.map +0 -1
  621. package/dist/core/OverflowTurn.js +0 -80
  622. package/dist/core/OverflowTurn.js.map +0 -1
  623. package/dist/core/Owner.d.ts +0 -8
  624. package/dist/core/Owner.d.ts.map +0 -1
  625. package/dist/core/Owner.js +0 -46
  626. package/dist/core/Owner.js.map +0 -1
  627. package/dist/core/SendBroadcastHandler.d.ts.map +0 -1
  628. package/dist/core/SendBroadcastHandler.js +0 -159
  629. package/dist/core/SendBroadcastHandler.js.map +0 -1
  630. package/dist/core/VectorPump.d.ts +0 -28
  631. package/dist/core/VectorPump.d.ts.map +0 -1
  632. package/dist/core/VectorPump.js +0 -130
  633. package/dist/core/VectorPump.js.map +0 -1
  634. package/dist/core/owner.sql +0 -11
  635. package/dist/core/worker-settings.d.ts +0 -10
  636. package/dist/core/worker-settings.d.ts.map +0 -1
  637. package/dist/core/worker-settings.js +0 -53
  638. package/dist/core/worker-settings.js.map +0 -1
  639. package/dist/schemes/_entry-chunk.d.ts +0 -14
  640. package/dist/schemes/_entry-chunk.d.ts.map +0 -1
  641. package/dist/schemes/_entry-chunk.js +0 -165
  642. package/dist/schemes/_entry-chunk.js.map +0 -1
  643. package/dist/schemes/_entry-semantic.d.ts +0 -63
  644. package/dist/schemes/_entry-semantic.d.ts.map +0 -1
  645. package/dist/schemes/_entry-semantic.js +0 -299
  646. package/dist/schemes/_entry-semantic.js.map +0 -1
  647. package/dist/schemes/_entry-semantic.sql +0 -99
  648. package/dist/schemes/cosine.d.ts +0 -4
  649. package/dist/schemes/cosine.d.ts.map +0 -1
  650. package/dist/schemes/cosine.js +0 -9
  651. package/dist/schemes/cosine.js.map +0 -1
  652. package/dist/server/WorkerCapabilities.d.ts +0 -21
  653. package/dist/server/WorkerCapabilities.d.ts.map +0 -1
  654. package/dist/server/WorkerCapabilities.js.map +0 -1
  655. package/dist/server/WorkerResidency.d.ts +0 -40
  656. package/dist/server/WorkerResidency.d.ts.map +0 -1
  657. package/dist/server/WorkerResidency.js +0 -283
  658. package/dist/server/WorkerResidency.js.map +0 -1
  659. package/dist/server/seam-log-read.sql +0 -21
  660. package/dist/server/worker-capabilities.sql +0 -28
  661. package/migrations/001_schema.sql +0 -2207
@@ -1,103 +1,11 @@
1
1
  -- Engine SQL. SPEC {§arch} (architecture), {§scheme} (op dispatch + log).
2
2
 
3
- -- PREP: engine_loop_status
4
- SELECT status FROM loops WHERE id = $loop_id;
5
-
6
- -- PREP: engine_worker_has_live_child
7
- -- A non-terminal child worker (worker:// spawn/fork set parent_worker_id) — a "live thing the worker holds",
8
- -- like an open stream. A SEND signal 200 while one exists is a premature-terminate ({§send-premature-terminate}).
9
- -- Live = a child with ANY unresolved loop (100/102/202) — the SAME definition
10
- -- engine_child_workers_live uses for the Active Child Workers orientation, so the 409 gate and the section the model
11
- -- reads NEVER disagree: a refused termination is always backed by a child the model can SEE and KILL
12
- -- ({§child-orientation}). Administrative loops may interleave with model loops, so newest-loop
13
- -- inference is not a valid worker-liveness test.
14
- SELECT 1 AS live FROM workers r
15
- JOIN loops l ON l.worker_id = r.id
16
- WHERE r.parent_worker_id = $worker_id AND l.status IN (100, 102, 202) LIMIT 1;
17
-
18
3
  -- PREP: engine_count_active_loops_for_worker
19
4
  -- Wake-on-completion uses this to decide whether to open a new loop or
20
5
  -- let the existing one pick up the channel transition at the next turn
21
6
  -- boundary. Status 102 = "in progress" (any non-terminal state).
22
7
  SELECT COUNT(*) AS n FROM loops WHERE worker_id = $worker_id AND status = 102;
23
8
 
24
- -- PREP: engine_get_loop_policy
25
- -- Complete persisted policy. LoopPolicyReader is the sole validation path
26
- -- ({§loop-policy-effective-read}).
27
- SELECT policy FROM loops WHERE id = $loop_id;
28
-
29
- -- PREP: engine_set_loop_policy
30
- -- Stores the loop's complete immutable policy at creation/setup time.
31
- UPDATE loops SET policy = $policy WHERE id = $loop_id;
32
-
33
- -- PREP: engine_set_loop_open_paths
34
- -- {§methods-loop-run-open-paths}: persist the initial prompt frame's selected
35
- -- paths (string[] JSON) until turn 1 materializes that frame.
36
- UPDATE loops SET open_paths = $open_paths WHERE id = $loop_id;
37
-
38
- -- PREP: engine_get_loop_prompt
39
- -- Initial prompt frame. Its durable log occurrence, not a process-local/model
40
- -- ordinal, decides whether runTurn still needs to publish it.
41
- SELECT l.prompt, l.prompt_source, l.sequence, l.open_paths,
42
- EXISTS (
43
- SELECT 1
44
- FROM log_entries le
45
- WHERE le.loop_id = l.id
46
- AND le.op = 'prompt'
47
- AND le.pathname = '/' || l.sequence || '/1'
48
- ) AS prompt_published
49
- FROM loops l
50
- WHERE l.id = $loop_id;
51
-
52
- -- PREP: engine_reclaim_queued_loop
53
- -- {§worker-lifecycle-wake-requeue-not-terminal} — atomic 100→102 re-claim by loop id. A wake
54
- -- re-queued this loop while ITS OWN live drain was between turns; the drain re-claims and
55
- -- keeps running (the injected prompt is already the next turn). Conditional so a racing
56
- -- claimant can never double-claim.
57
- UPDATE loops SET status = 102 WHERE id = $loop_id AND status = 100;
58
-
59
- -- PREP: workspace_get_settings
60
- -- {§operator-config} — the workspace's validated client settings bag, read at
61
- -- each owning use site with its declared composition semantics.
62
- SELECT settings FROM workspaces WHERE id = $workspace_id;
63
-
64
- -- PREP: engine_list_owner_entries
65
- -- {§entry-owner} — one principal's entries (catalogRowsFor source for an owner-scoped FIND/foist):
66
- -- the commons, a worker's own space, or a named space — exactly one owner's rows, its perspective.
67
- SELECT e.id AS entry_id, e.scheme, e.authority, e.pathname, ec.name AS channel, ec.content, ec.mimetype, ec.weight AS weight, ec.deep_hash,
68
- json_extract(e.attributes, '$.sourceProjection.mimetype') AS source_mimetype,
69
- d.parse_issues, d.summary,
70
- s.id AS subscription_id,
71
- CASE WHEN s.closed_at IS NULL
72
- THEN CAST(unixepoch('now') - unixepoch(s.opened_at) AS INTEGER)
73
- ELSE NULL
74
- END AS seconds,
75
- s.close_status
76
- FROM entries e
77
- JOIN entry_channels ec ON ec.entry_id = e.id
78
- JOIN workers owner ON owner.id = e.owner_id
79
- LEFT JOIN derivations d ON d.deep_hash = ec.deep_hash
80
- LEFT JOIN subscriptions s ON s.id = (
81
- SELECT latest.id
82
- FROM subscriptions latest
83
- WHERE latest.entry_id = e.id
84
- ORDER BY latest.id DESC
85
- LIMIT 1
86
- )
87
- WHERE owner.workspace_id = $workspace_id AND e.owner_id = $owner_id
88
- ORDER BY e.updated_at ASC, e.id ASC, ec.name;
89
-
90
- -- PREP: engine_next_turn_sequence
91
- SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM turns WHERE loop_id = $loop_id;
92
-
93
- -- PREP: engine_loop_packet_count
94
- -- Exact model-request chronology for client status. Administrative turns and
95
- -- physical provider retries carry no packet and therefore do not contribute.
96
- SELECT COUNT(*) AS count
97
- FROM turns
98
- WHERE loop_id = $loop_id
99
- AND packet IS NOT NULL;
100
-
101
9
  -- PREP: engine_loop_usage
102
10
  -- Latest packet-bearing model-turn gauge ({§tokenomics-client-gauge}), surfaced beside the derived
103
11
  -- accounting projection on {§notifications-loop-terminated}. Physical usage
@@ -169,611 +77,6 @@ FROM (
169
77
  )
170
78
  ORDER BY attribution;
171
79
 
172
- -- PREP: engine_loop_turn_seqs
173
- -- Look up (loop_seq, turn_seq) for a given (loop_id, turn_id). Used by
174
- -- #writeLog when an op needs to address itself or its output by log
175
- -- coordinate (e.g. EXEC's stream entry at exec:///<loop_seq>/<turn_seq>/<sequence>/EXEC).
176
- SELECT l.sequence AS loop_seq, t.sequence AS turn_seq
177
- FROM loops l, turns t
178
- WHERE l.id = $loop_id AND t.id = $turn_id;
179
-
180
- -- PREP: engine_open_model_call
181
- -- Logical identity and request attribution become durable before provider I/O.
182
- INSERT INTO inference_calls (
183
- workspace_id, turn_id, sequence, kind, attributions, request_model
184
- )
185
- SELECT
186
- w.workspace_id,
187
- t.id,
188
- COALESCE((SELECT MAX(sequence) FROM inference_calls WHERE turn_id = $turn_id), 0) + 1,
189
- $kind,
190
- $attributions,
191
- $model
192
- FROM turns t
193
- JOIN loops l ON l.id = t.loop_id
194
- JOIN workers w ON w.id = l.worker_id
195
- WHERE t.id = $turn_id
196
- RETURNING id, sequence;
197
-
198
- -- PREP: engine_observe_model_call_response
199
- -- Preserve the logical response before call-specific interpretation. Physical
200
- -- request accounting has already settled through its cardinal observer path.
201
- UPDATE model_calls SET
202
- native_inputs = $native_inputs,
203
- response = $response,
204
- failure = $failure,
205
- capacity = $capacity,
206
- finish_reason = $finish_reason,
207
- response_model = $model
208
- WHERE id = $id
209
- AND (SELECT state FROM inference_calls WHERE id = model_calls.id) = 'pending';
210
-
211
- -- PREP: engine_fail_model_call
212
- UPDATE model_calls SET
213
- failure = $failure,
214
- capacity = $capacity
215
- WHERE id = $id
216
- AND (SELECT state FROM inference_calls WHERE id = model_calls.id) = 'pending';
217
-
218
- -- PREP: engine_open_embedding_call
219
- INSERT INTO inference_calls (
220
- workspace_id, turn_id, sequence, kind, attributions, request_model
221
- )
222
- VALUES (
223
- $workspace_id,
224
- $turn_id,
225
- COALESCE((
226
- SELECT MAX(sequence)
227
- FROM inference_calls
228
- WHERE ($turn_id IS NOT NULL AND turn_id = $turn_id)
229
- OR ($turn_id IS NULL AND turn_id IS NULL AND workspace_id = $workspace_id)
230
- ), 0) + 1,
231
- $kind,
232
- '[]',
233
- $model
234
- )
235
- RETURNING id, sequence;
236
-
237
- -- PREP: engine_prepare_embedding_call
238
- UPDATE embedding_calls
239
- SET input_count = $input_count
240
- WHERE id = $id
241
- AND input_count IS NULL
242
- AND (SELECT state FROM inference_calls WHERE id = embedding_calls.id) = 'pending';
243
-
244
- -- PREP: engine_observe_embedding_call_response
245
- UPDATE embedding_calls
246
- SET output_count = $output_count,
247
- metadata = $metadata
248
- WHERE id = $id
249
- AND output_count IS NULL
250
- AND failure IS NULL
251
- AND (SELECT state FROM inference_calls WHERE id = embedding_calls.id) = 'pending';
252
-
253
- -- PREP: engine_fail_embedding_call
254
- UPDATE embedding_calls
255
- SET failure = $failure
256
- WHERE id = $id
257
- AND output_count IS NULL
258
- AND failure IS NULL
259
- AND (SELECT state FROM inference_calls WHERE id = embedding_calls.id) = 'pending';
260
-
261
- -- PREP: engine_open_turn_attempt
262
- INSERT INTO turn_attempts (model_call_id)
263
- VALUES ($model_call_id)
264
- RETURNING id;
265
-
266
- -- PREP: engine_classify_turn_attempt_response
267
- UPDATE turn_attempts SET
268
- accepted = $accepted,
269
- parse_errors = $parse_errors
270
- WHERE id = $id AND accepted IS NULL;
271
-
272
- -- PREP: engine_open_provider_request
273
- -- The provider calls this immediately before physical I/O.
274
- INSERT INTO provider_requests (inference_call_id, sequence, provider, model)
275
- VALUES ($inference_call_id, $sequence, $provider, $model)
276
- RETURNING id;
277
-
278
- -- PREP: engine_settle_provider_request
279
- UPDATE provider_requests SET
280
- state = 'settled',
281
- outcome = $outcome,
282
- status = $status,
283
- usage_input = $usage_input,
284
- usage_output = $usage_output,
285
- usage_total = $usage_total,
286
- usage_input_no_cache = $usage_input_no_cache,
287
- usage_input_cache_read = $usage_input_cache_read,
288
- usage_input_cache_write = $usage_input_cache_write,
289
- usage_output_text = $usage_output_text,
290
- usage_output_reasoning = $usage_output_reasoning,
291
- cost_kind = $cost_kind,
292
- cost_amount = $cost_amount,
293
- cost_currency = $cost_currency,
294
- cost_usd_equivalent = $cost_usd_equivalent,
295
- cost_source = $cost_source,
296
- cost_reason = $cost_reason,
297
- completed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
298
- WHERE id = $id AND state = 'pending';
299
-
300
- -- PREP: engine_list_workspace_entries
301
- -- Every owner-held entry of a workspace — all schemes, all channels — for
302
- -- internal indexing and aggregate inspection. Addressable catalogs use the
303
- -- owner-filtered statements above.
304
- -- The latest subscription carries stream lifecycle into the catalog. `seconds`
305
- -- is the live age of an open stream; close_status is the exact terminal status
306
- -- of a closed one. Entries with no subscription remain ordinary static entries.
307
- SELECT e.id AS entry_id, e.scheme, e.authority, e.pathname, ec.name AS channel, ec.content, ec.mimetype, ec.weight AS weight, ec.deep_hash,
308
- d.disposition AS deep_disposition, d.reason AS deep_reason,
309
- s.id AS subscription_id,
310
- CASE WHEN s.closed_at IS NULL
311
- THEN CAST(unixepoch('now') - unixepoch(s.opened_at) AS INTEGER)
312
- ELSE NULL
313
- END AS seconds,
314
- s.close_status
315
- FROM entries e
316
- JOIN entry_channels ec ON ec.entry_id = e.id
317
- JOIN workers owner ON owner.id = e.owner_id
318
- LEFT JOIN derivations d ON d.deep_hash = ec.deep_hash
319
- LEFT JOIN subscriptions s ON s.id = (
320
- SELECT latest.id
321
- FROM subscriptions latest
322
- WHERE latest.entry_id = e.id
323
- ORDER BY latest.id DESC
324
- LIMIT 1
325
- )
326
- WHERE owner.workspace_id = $workspace_id
327
- -- User Note 5 — mtime-ascending: dormant entries hold the stable prompt-cache prefix; churn clusters at the tail.
328
- ORDER BY e.updated_at ASC, e.id ASC, ec.name;
329
-
330
- -- PREP: engine_scheme_catalog_summary
331
- -- Per-scheme entry tally plus one-level catalog-row count (direct entries and
332
- -- distinct first-segment `dir/**` summaries). The engine uses the latter to
333
- -- encode a valid first-N file preview range without guessing how many rows the
334
- -- shallow projection will produce.
335
- SELECT e.scheme AS scheme,
336
- COUNT(DISTINCT e.id) AS entries,
337
- COUNT(DISTINCT CASE
338
- WHEN instr(ltrim(e.pathname, '/'), '/') = 0
339
- THEN json_array('entry', e.authority, ltrim(e.pathname, '/'))
340
- ELSE json_array('scope', e.authority, substr(ltrim(e.pathname, '/'), 1, instr(ltrim(e.pathname, '/'), '/')))
341
- END) AS shallow_items
342
- FROM entries e
343
- JOIN entry_channels ec ON ec.entry_id = e.id
344
- JOIN workers owner ON owner.id = e.owner_id
345
- WHERE owner.workspace_id = $workspace_id
346
- GROUP BY e.scheme
347
- ORDER BY e.scheme;
348
-
349
- -- PREP: engine_initialize_ambient_cursor
350
- -- Worker creation owns the baseline, and fork creation owns its inherited
351
- -- cursor/boundary. Packet assembly merely verifies that durable invariant.
352
- SELECT ambient_event_cursor
353
- FROM workers
354
- WHERE id = $worker_id
355
- AND workspace_id = $workspace_id;
356
-
357
- -- PREP: engine_pull_ambient_events
358
- -- One SQLite snapshot captures both ends of the closed observation window.
359
- -- The LEFT JOIN returns the boundary even when the window contains no event.
360
- WITH observation AS (
361
- SELECT w.ambient_event_cursor AS cursor,
362
- w.parent_worker_id,
363
- w.fork_event_boundary,
364
- COALESCE(
365
- (SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id),
366
- w.ambient_event_cursor,
367
- 0
368
- ) AS boundary
369
- FROM workers w
370
- WHERE w.id = $worker_id AND w.workspace_id = $workspace_id
371
- )
372
- SELECT o.cursor, o.boundary,
373
- ae.id AS event_id, ae.producer_worker_id, producer.name AS producer_worker_name,
374
- ae.kind, ae.source, ae.at,
375
- ae.op, ae.delimiter, ae.signal,
376
- ae.scheme, ae.username, ae.password, ae.hostname, ae.port,
377
- ae.pathname, ae.query, ae.fragment, ae.line_marker,
378
- ae.tx, ae.mimetype_tx, ae.rx, ae.mimetype_rx,
379
- ae.state, ae.outcome, ae.attrs,
380
- ae.status_rx, ae.terminated_by
381
- FROM observation o
382
- LEFT JOIN ambient_events ae
383
- ON ae.workspace_id = $workspace_id
384
- AND ae.id > o.cursor
385
- AND ae.id <= o.boundary
386
- AND ae.producer_worker_id != $worker_id
387
- AND (
388
- ae.target_parent_worker_id = $worker_id
389
- OR ae.workspace_broadcast = 1
390
- OR (
391
- o.fork_event_boundary IS NOT NULL
392
- AND ae.target_parent_worker_id = o.parent_worker_id
393
- AND ae.id <= o.fork_event_boundary
394
- )
395
- )
396
- LEFT JOIN workers producer ON producer.id = ae.producer_worker_id
397
- ORDER BY ae.id;
398
-
399
- -- PREP: engine_insert_ambient_delta
400
- -- Materialize one occurrence into the observer's self-contained log. The
401
- -- targeted conflict rule makes crash replay idempotent without swallowing any
402
- -- unrelated sequence, FK, or shape violation.
403
- INSERT INTO log_entries (
404
- worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id,
405
- op, delimiter, signal,
406
- scheme, username, password, hostname, port, pathname, query, fragment,
407
- lineMarker, tx, mimetype_tx,
408
- rx, mimetype_rx, status_rx, weight, state, outcome, initial_folded, attrs
409
- ) VALUES (
410
- $worker_id, $loop_id, $turn_id, $sequence, $at, '_plurnk', $source, $event_id,
411
- $op, $delimiter, $signal,
412
- $scheme, $username, $password, $hostname, $port, $pathname, $query, $fragment,
413
- $line_marker, $tx, $mimetype_tx,
414
- $rx, $mimetype_rx, $status, $weight, $state, $outcome, $folded, $attrs
415
- )
416
- ON CONFLICT(worker_id, ambient_event_id) WHERE ambient_event_id IS NOT NULL DO NOTHING
417
- RETURNING id;
418
-
419
- -- PREP: engine_ambient_delta_id
420
- -- Crash replay may find the observation row already inserted but its copied
421
- -- classifications incomplete. Resolve that row so idempotent tag writes can finish.
422
- SELECT id FROM log_entries WHERE worker_id = $worker_id AND ambient_event_id = $event_id;
423
-
424
- -- PREP: engine_advance_ambient_cursor
425
- -- Advance only from the snapshot that was actually materialized. A concurrent
426
- -- pull winning the CAS is safe; a loser replays idempotently on its next turn.
427
- UPDATE workers
428
- SET ambient_event_cursor = $boundary
429
- WHERE id = $worker_id
430
- AND workspace_id = $workspace_id
431
- AND ambient_event_cursor IS $cursor
432
- AND $boundary >= ambient_event_cursor
433
- RETURNING ambient_event_cursor;
434
-
435
- -- PREP: engine_worker_stream_channels
436
- -- {§exec-stream} — every not-yet-terminally-published stream channel the worker
437
- -- owns, with its durable per-subscription cursor. Log curation never rewinds it.
438
- SELECT s.id AS subscription_id, sp.id AS publication_id,
439
- sp.published_end, sp.terminal_published,
440
- e.scheme AS runtime, e.authority, e.pathname AS coord,
441
- ec.name AS channel, ec.content AS content, ec.mimetype AS mimetype,
442
- ec.state AS state, ec.producer_result AS producer_result,
443
- s.published_channel AS published_channel
444
- FROM subscriptions s
445
- JOIN entries e ON e.id = s.entry_id
446
- JOIN subscription_publications sp ON sp.subscription_id = s.id
447
- JOIN entry_channels ec ON ec.entry_id = s.entry_id AND ec.name = sp.channel
448
- WHERE s.worker_id = $worker_id
449
- AND sp.terminal_published = 0
450
- ORDER BY s.id, ec.name;
451
-
452
- -- PREP: engine_insert_stream_delta
453
- -- {§exec-stream} / {§env-delta} — materialize a channel's next publishable content as a
454
- -- foisted READ row (the model READs the stream it never typed). origin=_plurnk; fragment is
455
- -- the channel; source links an EXEC observation to its causal invocation;
456
- -- attrs.streamEnd is the next turn's cursor. Only terminal observations
457
- -- materialize here, initially visible; active progress stays in Child Streams. {§exec-stream}
458
- INSERT INTO log_entries (
459
- worker_id, loop_id, turn_id, sequence, origin, source, model_call_id,
460
- subscription_publication_id,
461
- op, scheme, hostname, port, pathname, fragment, tx, mimetype_tx, rx, mimetype_rx, status_rx, weight, attrs, initial_folded
462
- ) VALUES (
463
- $worker_id, $loop_id, $turn_id, $sequence, '_plurnk', $source, NULL,
464
- $subscription_publication_id,
465
- 'READ', $scheme, $hostname, $port, $pathname, $fragment, '', 'text/plain', $rx, 'application/json', $status, $weight, $attrs, $folded
466
- );
467
-
468
- -- PREP: engine_child_workers_live
469
- -- The worker's LIVE child workers — any loop non-terminal (100 pending / 102 processing / 202 parked).
470
- -- Powers the Active Child Workers orienting section ({§child-orientation}): terse `* <status> worker://<name>`
471
- -- pointers so the model SEES what it holds live and reasons for itself (READ/KILL), never told to.
472
- -- Empty → section omitted.
473
- SELECT r.name,
474
- CASE
475
- WHEN SUM(CASE WHEN l.status = 102 THEN 1 ELSE 0 END) > 0 THEN 102
476
- WHEN SUM(CASE WHEN l.status = 202 THEN 1 ELSE 0 END) > 0 THEN 202
477
- ELSE 100
478
- END AS status
479
- FROM workers r
480
- JOIN loops l ON l.worker_id = r.id AND l.status IN (100, 102, 202)
481
- WHERE r.parent_worker_id = $worker_id AND l.status IN (100, 102, 202)
482
- GROUP BY r.id, r.name
483
- ORDER BY r.name;
484
-
485
- -- PREP: engine_parent_worker
486
- -- The worker's PARENT, when it has one — its name and the status of its latest loop. Powers the
487
- -- Parent Worker orienting section ({§child-orientation}, #394): a child can only name its parent's
488
- -- streams and space if it is told the name. Absent → section omitted.
489
- SELECT p.name,
490
- COALESCE((SELECT l.status FROM loops l WHERE l.worker_id = p.id ORDER BY l.id DESC LIMIT 1), 0) AS status
491
- FROM workers c JOIN workers p ON p.id = c.parent_worker_id
492
- WHERE c.id = $worker_id;
493
-
494
- -- PREP: engine_child_streams_open
495
- -- The worker's OPEN streams (subscriptions not yet closed), one row per published channel with its
496
- -- size and the size last reported to the model (the publication cursor). Powers the Child Streams
497
- -- orienting section ({§child-orientation}): `* active <runtime>:///<coord> — <channel> N lines (+D)`
498
- -- pointers the model READs/KILLs. Nothing else reaches the model while a stream is active
499
- -- ({§exec-stream}). Empty → section omitted.
500
- SELECT s.scheme, e.authority, e.pathname, sp.id AS publication_id, ec.name AS channel,
501
- (length(ec.content) - length(replace(ec.content, char(10), ''))) AS lines,
502
- length(ec.content) AS bytes, sp.published_end AS reported
503
- FROM subscriptions s
504
- JOIN entries e ON e.id = s.entry_id
505
- JOIN subscription_publications sp ON sp.subscription_id = s.id
506
- JOIN entry_channels ec ON ec.entry_id = s.entry_id AND ec.name = sp.channel
507
- WHERE s.worker_id = $worker_id AND s.closed_at IS NULL
508
- ORDER BY e.pathname, ec.name;
509
-
510
- -- PREP: engine_stream_reported
511
- -- {§child-orientation} — the publication cursor now records the size last reported to the
512
- -- model by the Child Streams pointer, so the next packet can say how much the stream grew.
513
- UPDATE subscription_publications SET published_end = $reported
514
- WHERE id = $publication_id AND published_end < $reported;
515
-
516
- -- PREP: engine_render_errors
517
- -- SPEC {§operation-results}: 4xx/5xx log rows are indexed in the packet's errors as
518
- -- LogCoordinate pointers, forcing the model to confront failures instead of letting
519
- -- them rot in log:///. Window = the current would-be model turn AND the immediately
520
- -- preceding completed model turn: prior-model-turn for action failures the
521
- -- model just caused, current-turn so a pre-generate engine error surfaces THIS turn
522
- -- rather than a turn late. Packetless chronology never hides a model failure.
523
- -- {§operation-result-uniform-error-channel}
524
- WITH previous_model_turn AS (
525
- SELECT id
526
- FROM turns
527
- WHERE loop_id = $loop_id
528
- AND sequence < $current_turn_seq
529
- AND producer = 'model'
530
- AND kind = 'inference'
531
- AND completed_at IS NOT NULL
532
- ORDER BY sequence DESC
533
- LIMIT 1
534
- )
535
- SELECT
536
- le.origin, le.op, le.attrs, le.sequence, le.status_rx, le.rx, le.mimetype_rx,
537
- le.scheme, le.pathname,
538
- t.sequence AS turn_seq, l.sequence AS loop_seq
539
- FROM active_log_entries le
540
- JOIN turns t ON t.id = le.turn_id
541
- JOIN loops l ON l.id = le.loop_id
542
- WHERE le.loop_id = $loop_id
543
- AND le.status_rx >= 400
544
- -- {§log-row-self-explains}: every >=400 row points at ITSELF — the op row carries its failure
545
- -- message on its meta line (packet-wire), so the pointer leads to a record that states its why.
546
- AND (
547
- t.sequence = $current_turn_seq
548
- OR t.id = (SELECT id FROM previous_model_turn)
549
- )
550
- ORDER BY t.sequence, le.sequence;
551
-
552
- -- PREP: overflow_turn_causal_rows
553
- -- {§overflow-turn-curation} — one deterministic causal set: rows already in
554
- -- the packetless candidate and rows from the worker's immediately preceding
555
- -- completed turn.
556
- WITH current_turn AS (
557
- SELECT turn.id, turn.sequence AS turn_seq,
558
- loop.id AS loop_id, loop.sequence AS loop_seq, loop.worker_id
559
- FROM turns turn
560
- JOIN loops loop ON loop.id = turn.loop_id
561
- WHERE turn.id = $turn_id AND loop.id = $loop_id
562
- ),
563
- previous_turn AS (
564
- SELECT prior.id
565
- FROM turns prior
566
- JOIN loops prior_loop ON prior_loop.id = prior.loop_id
567
- JOIN current_turn current ON current.worker_id = prior_loop.worker_id
568
- WHERE prior.completed_at IS NOT NULL
569
- AND (
570
- prior_loop.sequence < current.loop_seq
571
- OR (
572
- prior_loop.sequence = current.loop_seq
573
- AND prior.sequence < current.turn_seq
574
- )
575
- )
576
- ORDER BY prior_loop.sequence DESC, prior.sequence DESC
577
- LIMIT 1
578
- ),
579
- causal_rows(id) AS (
580
- SELECT row.id
581
- FROM active_log_entries row
582
- WHERE row.turn_id = $turn_id
583
- OR row.turn_id = (SELECT id FROM previous_turn)
584
- )
585
- SELECT row.id,
586
- (loop.sequence || '/' || turn.sequence || '/' || row.sequence) AS coordinate,
587
- row.origin, row.op, row.attrs,
588
- row.tx, row.mimetype_tx, row.rx, row.mimetype_rx,
589
- row.folded
590
- FROM causal_rows causal
591
- JOIN active_log_entries row ON row.id = causal.id
592
- JOIN turns turn ON turn.id = row.turn_id
593
- JOIN loops loop ON loop.id = row.loop_id
594
- ORDER BY loop.sequence, turn.sequence, row.sequence;
595
-
596
- -- PREP: engine_render_log
597
- -- Render-time log-section assembly ({§body-projection}).
598
- -- Yields log_entries for the whole worker — the conversation's working
599
- -- memory carries across loops within a worker, not just the
600
- -- current loop. Coordinates append /<op> only for rows that represent an operation.
601
- -- Status 202 entries in state='proposed' are model-invisible until resolved.
602
- -- Folded intervals are projected against the canonical body by packet-wire;
603
- -- wholly suppressed rows remain listed and exactly READable. {§log-kill-scope}
604
- SELECT
605
- le.id,
606
- l.sequence AS loop_seq,
607
- t.sequence AS turn_seq,
608
- le.sequence,
609
- -- le.origin is attribution, never a render filter; the worker's actor — {§actor-boundary-origin-not-filter} {§machine-processes-worker-origin}
610
- le.origin,
611
- le.op, le.delimiter, le.signal,
612
- le.scheme, le.username, le.password,
613
- le.hostname, le.port, le.pathname,
614
- le.query, le.fragment,
615
- le.status_rx, le.rx, le.mimetype_rx,
616
- le.tx, le.mimetype_tx,
617
- le.state, le.outcome, le.folded, delivery.delivered_at AS native_delivered_at,
618
- le.source, le.weight, le.attrs
619
- FROM active_log_entries le
620
- JOIN turns t ON t.id = le.turn_id
621
- JOIN loops l ON l.id = le.loop_id
622
- LEFT JOIN native_content_deliveries delivery ON delivery.log_entry_id = le.id
623
- -- WHERE renders exactly one worker's log — {§actor-boundary-isolation} {§machine-processes-worker-is-its-log}
624
- -- the AND NOT clauses keep proposed (202) rows hidden until resolved ({§proposal-proposed-hidden})
625
- -- and dissolve successful log-curation receipts: a model-authored log-target KILL
626
- -- row renders in exactly the packet after its turn — the actor sees its 200 or 204 once — and
627
- -- leaves the projection as soon as a later model turn has rows ({§log-kill-meta-operation},
628
- -- {§curation-receipt-dissolves}). Every failed operation remains visible through
629
- -- {§operation-result-uniform-error-channel}.
630
- WHERE le.worker_id = $worker_id
631
- AND NOT (le.status_rx = 202 AND le.state = 'proposed')
632
- AND NOT (
633
- (COALESCE(le.op, '') = 'KILL' AND le.scheme = 'log')
634
- AND le.status_rx < 400
635
- AND le.source IS NULL
636
- AND le.turn_id <> (
637
- SELECT MAX(latest.turn_id) FROM active_log_entries latest
638
- WHERE latest.worker_id = le.worker_id AND latest.origin = 'model'
639
- )
640
- )
641
- -- Successful maintenance-turn rows (doc reconciliation) never render: a
642
- -- receipt answers an asker and these turns have none. Rows stay durable and
643
- -- READ-able; failures remain visible ({§operation-result-uniform-error-channel}).
644
- AND NOT (
645
- t.producer = '_plurnk'
646
- AND t.kind = 'maintenance'
647
- AND COALESCE(le.status_rx, 200) < 400
648
- AND le.source IS NULL
649
- )
650
- ORDER BY l.sequence, t.sequence, le.sequence;
651
-
652
- -- PREP: engine_log_selection_high_water
653
- -- An admitted program resolves log curation against the event journal as it
654
- -- existed on entry. Later statements may observe earlier effects, but a broad
655
- -- KILL cannot capture operation rows the same program is still emitting.
656
- SELECT COALESCE(MAX(id), 0) AS max_id
657
- FROM log_entries
658
- WHERE worker_id = $worker_id;
659
-
660
- -- PREP: engine_insert_log_entry
661
- -- Default state='resolved' covers the common path (non-proposing schemes
662
- -- return their final status immediately). Status 202 + state='proposed'
663
- -- triggers the proposal lifecycle (engine pauses dispatch; client resolves
664
- -- via proposal resolution; entry transitions through engine_resolve_log_entry).
665
- INSERT INTO log_entries (
666
- worker_id, loop_id, turn_id, sequence, origin, source, model_call_id,
667
- op, delimiter, signal,
668
- scheme, username, password, hostname, port,
669
- pathname, query, fragment, lineMarker,
670
- tx, mimetype_tx, rx, mimetype_rx, status_rx, weight,
671
- state, outcome, attrs, initial_folded
672
- ) VALUES (
673
- $worker_id, $loop_id, $turn_id, $sequence, $origin, $source, $model_call_id,
674
- $op, $delimiter, $signal,
675
- $scheme, $username, $password, $hostname, $port,
676
- $pathname, $query, $fragment, $lineMarker,
677
- $tx, $mimetype_tx, $rx, $mimetype_rx, $status_rx, $weight,
678
- $state, $outcome, $attrs, COALESCE($initial_folded, '[]')
679
- )
680
- RETURNING id;
681
-
682
- -- PREP: engine_resolve_log_entry
683
- -- Transitions a proposed log entry to its terminal state. Used by the
684
- -- proposal lifecycle (client resolution, auto resolution, timeout, abort).
685
- -- Updates status_rx + rx + state + outcome atomically.
686
- UPDATE log_entries
687
- SET state = $state,
688
- outcome = $outcome,
689
- status_rx = $status_rx,
690
- rx = $rx,
691
- weight = $weight,
692
- deep_hash = NULL
693
- WHERE id = $id
694
- AND state = 'proposed';
695
-
696
- -- PREP: engine_log_entry_coordinate
697
- -- Resolve a durable operation occurrence after a proposal settles so a
698
- -- Problem Details instance names the same model-facing log URI as every
699
- -- immediately failed operation.
700
- SELECT l.sequence AS loop_seq,
701
- t.sequence AS turn_seq,
702
- le.sequence AS sequence,
703
- le.op AS op,
704
- le.attrs AS attrs,
705
- le.tx AS tx,
706
- le.mimetype_tx AS mimetype_tx,
707
- le.mimetype_rx AS mimetype_rx
708
- FROM log_entries le
709
- JOIN turns t ON t.id = le.turn_id
710
- JOIN loops l ON l.id = le.loop_id
711
- WHERE le.id = $id;
712
-
713
- -- PREP: engine_turn_packet_boundaries
714
- -- {§send-premature-terminate}/{§wait-obligation-matrix} — operations whose useful effect crosses
715
- -- into the next packet: READ/FIND/BARE results, successful EDIT/COPY/MOVE receipts (the model
716
- -- sees what it changed before it claims done — deterministic railing, one cached turn), plus
717
- -- successful log curation. Receipts block an explicit (TERM); a log KILL blocks only the
718
- -- empty-(WAIT) inference because explicit final housekeeping remains valid.
719
- SELECT id, op FROM active_log_entries
720
- WHERE turn_id = $turn_id
721
- AND origin = 'model'
722
- AND (op IN ('READ', 'FIND', 'BARE')
723
- OR (op IN ('EDIT', 'COPY', 'MOVE') AND status_rx < 400)
724
- OR (op = 'KILL' AND scheme = 'log' AND status_rx < 400));
725
-
726
- -- PREP: engine_worker_has_undelivered_stream_term
727
- -- A stream may finish between its EXEC and a same-turn SEND. It is then no longer
728
- -- live, but its terminal outcome has not crossed the pre-turn observation boundary:
729
- -- one or more selected channel publication rows remain nonterminal. Treat that
730
- -- closed result like a same-turn retrieval or child termination so an empty
731
- -- join cannot conclude over unseen work.
732
- -- Completion is information independently of payload: an empty success and especially
733
- -- an empty failure must receive the same terminal observation as a non-empty stream.
734
- -- The close status rides along: the terminal gate lets a successful close through
735
- -- ({§send-premature-terminate}); the empty-join path delivers every close.
736
- SELECT DISTINCT s.handle AS handle, s.close_status AS closeStatus
737
- FROM subscriptions s
738
- JOIN subscription_publications sp ON sp.subscription_id = s.id
739
- WHERE s.worker_id = $worker_id
740
- AND s.closed_at IS NOT NULL
741
- AND sp.terminal_published = 0
742
- LIMIT 8;
743
-
744
- -- PREP: engine_turn_failures
745
- -- {§send-premature-terminate} — THIS turn's failed op results (the model's own ops, status >= 400), whose
746
- -- errors the model cannot have seen (they land next packet). A [200] or already-drained [202] over
747
- -- them concludes blind past a failure — refused 409; [499] abandons regardless (declaring failure
748
- -- IS weighing it).
749
- -- Actionless engine errors are excluded because only model-authored failures can make
750
- -- the model's concluding disposition blind. A model-authored statement that
751
- -- failed grammar parsing is different: source='grammar' records a bounded operation failure
752
- -- from the accepted emission, unseen until the next packet, so it gates completion like every
753
- -- other failed model operation.
754
- SELECT id FROM active_log_entries
755
- WHERE turn_id = $turn_id
756
- AND origin = 'model'
757
- AND status_rx >= 400
758
- AND (op != 'error' OR source = 'grammar');
759
-
760
- -- PREP: engine_loop_sequence
761
- -- The loop's per-worker sequence — the model-facing coordinate (prompt/<worker>/<loop-seq>/<turn-seq>,
762
- -- matching the log's loop-relative numbering). The raw db id leaked into prompt paths and the
763
- -- model's first loop read as prompt/2/1 (the docs loop holds id 1). Owner: minor but annoying.
764
- SELECT sequence FROM loops WHERE id = $loop_id;
765
-
766
- -- PREP: engine_worker_has_inference_history
767
- -- Administrative turns may legitimately precede the first provider exchange.
768
- -- Initialization is therefore keyed to inference history, never loop ordinals.
769
- SELECT EXISTS (
770
- SELECT 1
771
- FROM turns t
772
- JOIN loops l ON l.id = t.loop_id
773
- WHERE l.worker_id = $worker_id
774
- AND (t.producer = 'model' OR t.kind = 'initialization')
775
- ) AS present;
776
-
777
80
  -- PREP: engine_worker_lineage_root
778
81
  -- The no-parent root of a worker lineage; a root worker returns itself.
779
82
  -- {§worker-primary}
@@ -799,30 +102,3 @@ SELECT current.provider_identity AS worker_id,
799
102
  FROM workers current
800
103
  JOIN lineage root ON root.parent_worker_id IS NULL
801
104
  WHERE current.id = $worker_id;
802
-
803
- -- PREP: engine_worker_has_undelivered_child_term
804
- -- A child conclusion newer than the parent's observation cursor is complete but
805
- -- not delivered. This is the same durable boundary the next packet consumes,
806
- -- not a second timestamp race. {§send-undelivered-child-term}
807
- SELECT 1 AS pending
808
- FROM ambient_events ae
809
- JOIN workers parent ON parent.id = $worker_id
810
- WHERE ae.workspace_id = parent.workspace_id
811
- AND ae.kind = 'loop_termination'
812
- AND ae.target_parent_worker_id = parent.id
813
- AND ae.id > COALESCE(parent.ambient_event_cursor, 0)
814
- LIMIT 1;
815
-
816
- -- PREP: engine_calibration_samples
817
- -- {§tokenomics-calibrated-readout} — one model's last five settled emission responses, each pairing
818
- -- the request's measured packet weight with the provider's reported prompt count.
819
- -- Newest first; only rows where both figures are positive.
820
- SELECT json_extract(t.packet, '$.weight') AS weight, pr.usage_input AS reported
821
- FROM provider_requests pr
822
- JOIN inference_calls ic ON ic.id = pr.inference_call_id
823
- JOIN turns t ON t.id = ic.turn_id
824
- WHERE pr.model = $model AND pr.state = 'settled' AND pr.outcome = 'response'
825
- AND ic.kind = 'emission' AND pr.usage_input > 0
826
- AND t.packet IS NOT NULL AND json_extract(t.packet, '$.weight') > 0
827
- ORDER BY pr.id DESC
828
- LIMIT 5;