@plurnk/plurnk-service 1.3.12 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.env.defaults +84 -77
  2. package/INSTALL.md +50 -25
  3. package/README.md +24 -10
  4. package/SPEC.md +2311 -928
  5. package/dist/Paths.d.ts +4 -1
  6. package/dist/Paths.d.ts.map +1 -1
  7. package/dist/Paths.js +23 -21
  8. package/dist/Paths.js.map +1 -1
  9. package/dist/build-info.json +1 -1
  10. package/dist/content/edit-receipt.d.ts +13 -28
  11. package/dist/content/edit-receipt.d.ts.map +1 -1
  12. package/dist/content/edit-receipt.js +285 -104
  13. package/dist/content/edit-receipt.js.map +1 -1
  14. package/dist/content/edited-span.d.ts.map +1 -1
  15. package/dist/content/edited-span.js +2 -5
  16. package/dist/content/edited-span.js.map +1 -1
  17. package/dist/content/index.d.ts +3 -3
  18. package/dist/content/index.d.ts.map +1 -1
  19. package/dist/content/index.js +1 -1
  20. package/dist/content/index.js.map +1 -1
  21. package/dist/content/line-marker.d.ts +6 -9
  22. package/dist/content/line-marker.d.ts.map +1 -1
  23. package/dist/content/line-marker.js +7 -11
  24. package/dist/content/line-marker.js.map +1 -1
  25. package/dist/content/matcher.d.ts +14 -25
  26. package/dist/content/matcher.d.ts.map +1 -1
  27. package/dist/content/matcher.js +77 -107
  28. package/dist/content/matcher.js.map +1 -1
  29. package/dist/content/mimetype-binary.d.ts +2 -2
  30. package/dist/content/mimetype-binary.d.ts.map +1 -1
  31. package/dist/content/mimetype-binary.js +10 -10
  32. package/dist/content/mimetype-binary.js.map +1 -1
  33. package/dist/content/path-mimetype.js +3 -3
  34. package/dist/content/path-mimetype.js.map +1 -1
  35. package/dist/content/read-resolve.d.ts +8 -4
  36. package/dist/content/read-resolve.d.ts.map +1 -1
  37. package/dist/content/read-resolve.js +101 -49
  38. package/dist/content/read-resolve.js.map +1 -1
  39. package/dist/core/BranchReceipt.d.ts +7 -0
  40. package/dist/core/BranchReceipt.d.ts.map +1 -0
  41. package/dist/core/BranchReceipt.js +27 -0
  42. package/dist/core/BranchReceipt.js.map +1 -0
  43. package/dist/core/BudgetOverflow.d.ts +23 -0
  44. package/dist/core/BudgetOverflow.d.ts.map +1 -0
  45. package/dist/core/BudgetOverflow.js +61 -0
  46. package/dist/core/BudgetOverflow.js.map +1 -0
  47. package/dist/core/BudgetReadout.d.ts +8 -0
  48. package/dist/core/BudgetReadout.d.ts.map +1 -0
  49. package/dist/core/BudgetReadout.js +79 -0
  50. package/dist/core/BudgetReadout.js.map +1 -0
  51. package/dist/core/ChannelWrite.d.ts +28 -9
  52. package/dist/core/ChannelWrite.d.ts.map +1 -1
  53. package/dist/core/ChannelWrite.js +28 -21
  54. package/dist/core/ChannelWrite.js.map +1 -1
  55. package/dist/core/ChannelWrite.sql +11 -10
  56. package/dist/core/CoreSchemeServices.d.ts +10 -4
  57. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  58. package/dist/core/CoreSchemeServices.js +7 -1
  59. package/dist/core/CoreSchemeServices.js.map +1 -1
  60. package/dist/core/Dispatcher.d.ts +29 -20
  61. package/dist/core/Dispatcher.d.ts.map +1 -1
  62. package/dist/core/Dispatcher.js +1488 -599
  63. package/dist/core/Dispatcher.js.map +1 -1
  64. package/dist/core/DurableStatement.d.ts +6 -0
  65. package/dist/core/DurableStatement.d.ts.map +1 -0
  66. package/dist/core/DurableStatement.js +51 -0
  67. package/dist/core/DurableStatement.js.map +1 -0
  68. package/dist/core/Engine.d.ts +48 -20
  69. package/dist/core/Engine.d.ts.map +1 -1
  70. package/dist/core/Engine.js +1208 -789
  71. package/dist/core/Engine.js.map +1 -1
  72. package/dist/core/Engine.sql +309 -217
  73. package/dist/core/EnvFlags.js +1 -1
  74. package/dist/core/EnvFlags.js.map +1 -1
  75. package/dist/core/ErrorDetail.d.ts +6 -0
  76. package/dist/core/ErrorDetail.d.ts.map +1 -0
  77. package/dist/core/ErrorDetail.js +20 -0
  78. package/dist/core/ErrorDetail.js.map +1 -0
  79. package/dist/core/ExecutorRegistry.d.ts +14 -3
  80. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  81. package/dist/core/ExecutorRegistry.js +56 -30
  82. package/dist/core/ExecutorRegistry.js.map +1 -1
  83. package/dist/core/GitBranch.d.ts +20 -0
  84. package/dist/core/GitBranch.d.ts.map +1 -0
  85. package/dist/core/GitBranch.js +110 -0
  86. package/dist/core/GitBranch.js.map +1 -0
  87. package/dist/core/JournalTurn.d.ts +9 -0
  88. package/dist/core/JournalTurn.d.ts.map +1 -0
  89. package/dist/core/JournalTurn.js +14 -0
  90. package/dist/core/JournalTurn.js.map +1 -0
  91. package/dist/core/JournalTurn.sql +10 -0
  92. package/dist/core/LogBody.d.ts +17 -0
  93. package/dist/core/LogBody.d.ts.map +1 -0
  94. package/dist/core/LogBody.js +148 -0
  95. package/dist/core/LogBody.js.map +1 -0
  96. package/dist/core/LoopFlagsReader.d.ts +7 -0
  97. package/dist/core/LoopFlagsReader.d.ts.map +1 -0
  98. package/dist/core/LoopFlagsReader.js +33 -0
  99. package/dist/core/LoopFlagsReader.js.map +1 -0
  100. package/dist/core/LoopLifecycle.d.ts +8 -1
  101. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  102. package/dist/core/LoopLifecycle.js +55 -9
  103. package/dist/core/LoopLifecycle.js.map +1 -1
  104. package/dist/core/LoopLifecycle.sql +9 -3
  105. package/dist/core/NoticeChannel.d.ts +13 -0
  106. package/dist/core/NoticeChannel.d.ts.map +1 -0
  107. package/dist/core/NoticeChannel.js +40 -0
  108. package/dist/core/NoticeChannel.js.map +1 -0
  109. package/dist/core/Owner.d.ts +0 -1
  110. package/dist/core/Owner.d.ts.map +1 -1
  111. package/dist/core/Owner.js +2 -5
  112. package/dist/core/Owner.js.map +1 -1
  113. package/dist/core/PacketBuilder.d.ts +25 -24
  114. package/dist/core/PacketBuilder.d.ts.map +1 -1
  115. package/dist/core/PacketBuilder.js +313 -375
  116. package/dist/core/PacketBuilder.js.map +1 -1
  117. package/dist/core/ProblemLog.d.ts +26 -0
  118. package/dist/core/ProblemLog.d.ts.map +1 -0
  119. package/dist/core/ProblemLog.js +58 -0
  120. package/dist/core/ProblemLog.js.map +1 -0
  121. package/dist/core/ProposalLifecycle.d.ts +15 -21
  122. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  123. package/dist/core/ProposalLifecycle.js +291 -78
  124. package/dist/core/ProposalLifecycle.js.map +1 -1
  125. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  126. package/dist/core/ProviderInstantiate.js +51 -48
  127. package/dist/core/ProviderInstantiate.js.map +1 -1
  128. package/dist/core/SchemeRegistry.d.ts +14 -8
  129. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  130. package/dist/core/SchemeRegistry.js +189 -114
  131. package/dist/core/SchemeRegistry.js.map +1 -1
  132. package/dist/core/ServiceTeardown.d.ts +11 -0
  133. package/dist/core/ServiceTeardown.d.ts.map +1 -0
  134. package/dist/core/ServiceTeardown.js +70 -0
  135. package/dist/core/ServiceTeardown.js.map +1 -0
  136. package/dist/core/StoredPacket.d.ts +29 -0
  137. package/dist/core/StoredPacket.d.ts.map +1 -0
  138. package/dist/core/StoredPacket.js +147 -0
  139. package/dist/core/StoredPacket.js.map +1 -0
  140. package/dist/core/StrikeRail.d.ts +1 -2
  141. package/dist/core/StrikeRail.d.ts.map +1 -1
  142. package/dist/core/StrikeRail.js +25 -55
  143. package/dist/core/StrikeRail.js.map +1 -1
  144. package/dist/core/WorkerControlAddress.d.ts +17 -0
  145. package/dist/core/WorkerControlAddress.d.ts.map +1 -0
  146. package/dist/core/WorkerControlAddress.js +44 -0
  147. package/dist/core/WorkerControlAddress.js.map +1 -0
  148. package/dist/core/WorkerName.d.ts +31 -0
  149. package/dist/core/WorkerName.d.ts.map +1 -0
  150. package/dist/core/WorkerName.js +95 -0
  151. package/dist/core/WorkerName.js.map +1 -0
  152. package/dist/core/WorkerName.sql +36 -0
  153. package/dist/core/WorkspaceGate.d.ts +14 -0
  154. package/dist/core/WorkspaceGate.d.ts.map +1 -0
  155. package/dist/core/WorkspaceGate.js +155 -0
  156. package/dist/core/WorkspaceGate.js.map +1 -0
  157. package/dist/core/caps/CapsResolve.d.ts +1 -1
  158. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  159. package/dist/core/caps/CapsResolve.js.map +1 -1
  160. package/dist/core/caps/DbChannelCaps.d.ts +5 -11
  161. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  162. package/dist/core/caps/DbChannelCaps.js +24 -8
  163. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  164. package/dist/core/caps/DbEntryCaps.d.ts +4 -13
  165. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  166. package/dist/core/caps/DbEntryCaps.js +15 -6
  167. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  168. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  169. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  170. package/dist/core/caps/DbNotifyCaps.js +12 -11
  171. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  172. package/dist/core/caps/DbProjectionCaps.d.ts +5 -5
  173. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  174. package/dist/core/caps/DbProjectionCaps.js +21 -4
  175. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  176. package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -4
  177. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  178. package/dist/core/caps/DbSubscriptionCaps.js +57 -62
  179. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  180. package/dist/core/caps/DbTagCaps.d.ts +5 -12
  181. package/dist/core/caps/DbTagCaps.d.ts.map +1 -1
  182. package/dist/core/caps/DbTagCaps.js +14 -7
  183. package/dist/core/caps/DbTagCaps.js.map +1 -1
  184. package/dist/core/content-hash.js +1 -1
  185. package/dist/core/content-hash.js.map +1 -1
  186. package/dist/core/env-defaults.d.ts.map +1 -1
  187. package/dist/core/env-defaults.js.map +1 -1
  188. package/dist/core/fork.d.ts.map +1 -1
  189. package/dist/core/fork.js +55 -30
  190. package/dist/core/fork.js.map +1 -1
  191. package/dist/core/fork.sql +41 -27
  192. package/dist/core/git-env.d.ts +2 -0
  193. package/dist/core/git-env.d.ts.map +1 -1
  194. package/dist/core/git-env.js +13 -18
  195. package/dist/core/git-env.js.map +1 -1
  196. package/dist/core/git-iso.d.ts.map +1 -1
  197. package/dist/core/git-iso.js +9 -15
  198. package/dist/core/git-iso.js.map +1 -1
  199. package/dist/core/git-membership.d.ts +1 -1
  200. package/dist/core/git-membership.d.ts.map +1 -1
  201. package/dist/core/git-membership.js +198 -146
  202. package/dist/core/git-membership.js.map +1 -1
  203. package/dist/core/git-state.d.ts.map +1 -1
  204. package/dist/core/git-state.js +10 -11
  205. package/dist/core/git-state.js.map +1 -1
  206. package/dist/core/owner.sql +1 -1
  207. package/dist/core/packet-inject.d.ts.map +1 -1
  208. package/dist/core/packet-inject.js +7 -11
  209. package/dist/core/packet-inject.js.map +1 -1
  210. package/dist/core/packet-wire.d.ts +2 -20
  211. package/dist/core/packet-wire.d.ts.map +1 -1
  212. package/dist/core/packet-wire.js +242 -368
  213. package/dist/core/packet-wire.js.map +1 -1
  214. package/dist/core/plurnk-uri.d.ts +12 -1
  215. package/dist/core/plurnk-uri.d.ts.map +1 -1
  216. package/dist/core/plurnk-uri.js +49 -29
  217. package/dist/core/plurnk-uri.js.map +1 -1
  218. package/dist/core/results.d.ts +16 -5
  219. package/dist/core/results.d.ts.map +1 -1
  220. package/dist/core/results.js +27 -18
  221. package/dist/core/results.js.map +1 -1
  222. package/dist/core/ruler_count.d.ts +4 -0
  223. package/dist/core/ruler_count.d.ts.map +1 -0
  224. package/dist/core/ruler_count.js +7 -0
  225. package/dist/core/ruler_count.js.map +1 -0
  226. package/dist/core/scheme-types.d.ts +9 -11
  227. package/dist/core/scheme-types.d.ts.map +1 -1
  228. package/dist/core/scheme-types.js.map +1 -1
  229. package/dist/core/search-gate.d.ts.map +1 -1
  230. package/dist/core/search-gate.js +3 -11
  231. package/dist/core/search-gate.js.map +1 -1
  232. package/dist/core/teaching-corpus.d.ts +6 -0
  233. package/dist/core/teaching-corpus.d.ts.map +1 -0
  234. package/dist/core/teaching-corpus.js +23 -0
  235. package/dist/core/teaching-corpus.js.map +1 -0
  236. package/dist/core/teaching.d.ts +0 -1
  237. package/dist/core/teaching.d.ts.map +1 -1
  238. package/dist/core/teaching.js +2 -8
  239. package/dist/core/teaching.js.map +1 -1
  240. package/dist/core/token-ruler.d.ts.map +1 -1
  241. package/dist/core/token-ruler.js +3 -16
  242. package/dist/core/token-ruler.js.map +1 -1
  243. package/dist/core/turn-scheduler.d.ts +1 -1
  244. package/dist/core/turn-scheduler.d.ts.map +1 -1
  245. package/dist/core/turn-scheduler.js +1 -1
  246. package/dist/core/turn-scheduler.js.map +1 -1
  247. package/dist/core/worker-cap.d.ts +2 -4
  248. package/dist/core/worker-cap.d.ts.map +1 -1
  249. package/dist/core/worker-cap.js +13 -4
  250. package/dist/core/worker-cap.js.map +1 -1
  251. package/dist/core/{run-ops.sql → worker-ops.sql} +11 -11
  252. package/dist/core/workspace-settings.d.ts.map +1 -1
  253. package/dist/core/workspace-settings.js +17 -9
  254. package/dist/core/workspace-settings.js.map +1 -1
  255. package/dist/digest/Digest.d.ts +2 -1
  256. package/dist/digest/Digest.d.ts.map +1 -1
  257. package/dist/digest/Digest.js +337 -138
  258. package/dist/digest/Digest.js.map +1 -1
  259. package/dist/digest/digest.sql +19 -10
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +3 -5
  262. package/dist/index.js.map +1 -1
  263. package/dist/matrix/live-specimen.d.ts +9 -0
  264. package/dist/matrix/live-specimen.d.ts.map +1 -0
  265. package/dist/matrix/live-specimen.js +37 -0
  266. package/dist/matrix/live-specimen.js.map +1 -0
  267. package/dist/observe/api.d.ts +6 -0
  268. package/dist/observe/api.d.ts.map +1 -0
  269. package/dist/observe/api.js +11 -0
  270. package/dist/observe/api.js.map +1 -0
  271. package/dist/observe/init.d.ts +7 -0
  272. package/dist/observe/init.d.ts.map +1 -0
  273. package/dist/observe/init.js +159 -0
  274. package/dist/observe/init.js.map +1 -0
  275. package/dist/observe/metrics.d.ts +6 -0
  276. package/dist/observe/metrics.d.ts.map +1 -0
  277. package/dist/observe/metrics.js +15 -0
  278. package/dist/observe/metrics.js.map +1 -0
  279. package/dist/observe/spans.d.ts +4 -0
  280. package/dist/observe/spans.d.ts.map +1 -0
  281. package/dist/observe/spans.js +51 -0
  282. package/dist/observe/spans.js.map +1 -0
  283. package/dist/schemes/EffectPolicy.d.ts +1 -0
  284. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  285. package/dist/schemes/EffectPolicy.js +5 -2
  286. package/dist/schemes/EffectPolicy.js.map +1 -1
  287. package/dist/schemes/Exec.d.ts +6 -11
  288. package/dist/schemes/Exec.d.ts.map +1 -1
  289. package/dist/schemes/Exec.js +364 -247
  290. package/dist/schemes/Exec.js.map +1 -1
  291. package/dist/schemes/ExecOutputScheme.d.ts +8 -7
  292. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  293. package/dist/schemes/ExecOutputScheme.js +48 -9
  294. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  295. package/dist/schemes/File.d.ts +7 -11
  296. package/dist/schemes/File.d.ts.map +1 -1
  297. package/dist/schemes/File.js +279 -142
  298. package/dist/schemes/File.js.map +1 -1
  299. package/dist/schemes/Log.d.ts +4 -8
  300. package/dist/schemes/Log.d.ts.map +1 -1
  301. package/dist/schemes/Log.js +475 -208
  302. package/dist/schemes/Log.js.map +1 -1
  303. package/dist/schemes/Log.sql +62 -30
  304. package/dist/schemes/Prompt.d.ts +3 -2
  305. package/dist/schemes/Prompt.d.ts.map +1 -1
  306. package/dist/schemes/Prompt.js +9 -6
  307. package/dist/schemes/Prompt.js.map +1 -1
  308. package/dist/schemes/Skill.d.ts +1 -1
  309. package/dist/schemes/Skill.d.ts.map +1 -1
  310. package/dist/schemes/Skill.js +2 -3
  311. package/dist/schemes/Skill.js.map +1 -1
  312. package/dist/schemes/Worker.d.ts +8 -16
  313. package/dist/schemes/Worker.d.ts.map +1 -1
  314. package/dist/schemes/Worker.js +179 -69
  315. package/dist/schemes/Worker.js.map +1 -1
  316. package/dist/schemes/_entry-chunk.d.ts.map +1 -1
  317. package/dist/schemes/_entry-chunk.js +12 -5
  318. package/dist/schemes/_entry-chunk.js.map +1 -1
  319. package/dist/schemes/_entry-crud.d.ts +10 -9
  320. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  321. package/dist/schemes/_entry-crud.js +59 -13
  322. package/dist/schemes/_entry-crud.js.map +1 -1
  323. package/dist/schemes/_entry-crud.sql +20 -8
  324. package/dist/schemes/_entry-find.d.ts +20 -15
  325. package/dist/schemes/_entry-find.d.ts.map +1 -1
  326. package/dist/schemes/_entry-find.js +339 -174
  327. package/dist/schemes/_entry-find.js.map +1 -1
  328. package/dist/schemes/_entry-find.sql +20 -8
  329. package/dist/schemes/_entry-graph.d.ts +4 -2
  330. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  331. package/dist/schemes/_entry-graph.js +55 -31
  332. package/dist/schemes/_entry-graph.js.map +1 -1
  333. package/dist/schemes/_entry-graph.sql +37 -22
  334. package/dist/schemes/_entry-manifest.d.ts +10 -15
  335. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  336. package/dist/schemes/_entry-manifest.js +50 -268
  337. package/dist/schemes/_entry-manifest.js.map +1 -1
  338. package/dist/schemes/_entry-ops.d.ts +9 -14
  339. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  340. package/dist/schemes/_entry-ops.js +149 -77
  341. package/dist/schemes/_entry-ops.js.map +1 -1
  342. package/dist/schemes/_entry-ops.sql +1 -1
  343. package/dist/schemes/_entry-semantic.d.ts +23 -8
  344. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  345. package/dist/schemes/_entry-semantic.js +141 -60
  346. package/dist/schemes/_entry-semantic.js.map +1 -1
  347. package/dist/schemes/_entry-semantic.sql +63 -45
  348. package/dist/schemes/_entry-send.d.ts +3 -4
  349. package/dist/schemes/_entry-send.d.ts.map +1 -1
  350. package/dist/schemes/_entry-send.js +48 -23
  351. package/dist/schemes/_entry-send.js.map +1 -1
  352. package/dist/schemes/_path-scope.d.ts +23 -0
  353. package/dist/schemes/_path-scope.d.ts.map +1 -0
  354. package/dist/schemes/_path-scope.js +61 -0
  355. package/dist/schemes/_path-scope.js.map +1 -0
  356. package/dist/schemes/_search-candidate.d.ts +20 -0
  357. package/dist/schemes/_search-candidate.d.ts.map +1 -0
  358. package/dist/schemes/_search-candidate.js +19 -0
  359. package/dist/schemes/_search-candidate.js.map +1 -0
  360. package/dist/schemes/_search-exclusion.d.ts +7 -0
  361. package/dist/schemes/_search-exclusion.d.ts.map +1 -0
  362. package/dist/schemes/_search-exclusion.js +23 -0
  363. package/dist/schemes/_search-exclusion.js.map +1 -0
  364. package/dist/schemes/_search-index.d.ts +6 -0
  365. package/dist/schemes/_search-index.d.ts.map +1 -0
  366. package/dist/schemes/_search-index.js +326 -0
  367. package/dist/schemes/_search-index.js.map +1 -0
  368. package/dist/schemes/cosine.js +1 -1
  369. package/dist/schemes/cosine.js.map +1 -1
  370. package/dist/schemes/exec-abort.js +3 -3
  371. package/dist/schemes/exec-abort.js.map +1 -1
  372. package/dist/schemes/exec-env.js +3 -3
  373. package/dist/schemes/exec-env.js.map +1 -1
  374. package/dist/server/BranchBatches.d.ts +48 -0
  375. package/dist/server/BranchBatches.d.ts.map +1 -0
  376. package/dist/server/BranchBatches.js +591 -0
  377. package/dist/server/BranchBatches.js.map +1 -0
  378. package/dist/server/Daemon.d.ts +36 -66
  379. package/dist/server/Daemon.d.ts.map +1 -1
  380. package/dist/server/Daemon.js +920 -446
  381. package/dist/server/Daemon.js.map +1 -1
  382. package/dist/server/DaemonModule.d.ts +31 -0
  383. package/dist/server/DaemonModule.d.ts.map +1 -0
  384. package/dist/server/DaemonModule.js +2 -0
  385. package/dist/server/DaemonModule.js.map +1 -0
  386. package/dist/server/branch-batch.sql +152 -0
  387. package/dist/server/client-input.d.ts +12 -0
  388. package/dist/server/client-input.d.ts.map +1 -1
  389. package/dist/server/client-input.js +262 -57
  390. package/dist/server/client-input.js.map +1 -1
  391. package/dist/server/dispatch-as-plurnk.d.ts +1 -1
  392. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  393. package/dist/server/dispatch-as-plurnk.js +15 -7
  394. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  395. package/dist/server/drain.sql +92 -62
  396. package/dist/server/envelope.d.ts +2 -5
  397. package/dist/server/envelope.d.ts.map +1 -1
  398. package/dist/server/envelope.js +119 -95
  399. package/dist/server/envelope.js.map +1 -1
  400. package/dist/server/envelope.sql +19 -23
  401. package/dist/server/exec-poll-backoff.js +1 -1
  402. package/dist/server/exec-poll-backoff.js.map +1 -1
  403. package/dist/server/lifecycle-recovery.sql +79 -2
  404. package/dist/server/logEntry.d.ts +3 -1
  405. package/dist/server/logEntry.d.ts.map +1 -1
  406. package/dist/server/logEntry.js +4 -2
  407. package/dist/server/logEntry.js.map +1 -1
  408. package/dist/server/logEntry.sql +1 -1
  409. package/dist/server/loop-model.d.ts.map +1 -1
  410. package/dist/server/loop-model.js +22 -9
  411. package/dist/server/loop-model.js.map +1 -1
  412. package/dist/server/loopDocs.d.ts.map +1 -1
  413. package/dist/server/loopDocs.js +5 -4
  414. package/dist/server/loopDocs.js.map +1 -1
  415. package/dist/server/seam-entry-read.sql +15 -10
  416. package/dist/server/seam-log-read.sql +2 -2
  417. package/dist/server/seam-loop.sql +1 -1
  418. package/dist/server/seam-proposal-list.sql +17 -7
  419. package/dist/service.d.ts.map +1 -1
  420. package/dist/service.js +66 -60
  421. package/dist/service.js.map +1 -1
  422. package/migrations/001_schema.sql +897 -0
  423. package/package.json +57 -26
  424. package/dist/core/PluginLoader.d.ts +0 -20
  425. package/dist/core/PluginLoader.d.ts.map +0 -1
  426. package/dist/core/PluginLoader.js +0 -142
  427. package/dist/core/PluginLoader.js.map +0 -1
  428. package/dist/core/TelemetryChannel.d.ts +0 -37
  429. package/dist/core/TelemetryChannel.d.ts.map +0 -1
  430. package/dist/core/TelemetryChannel.js +0 -80
  431. package/dist/core/TelemetryChannel.js.map +0 -1
  432. package/dist/core/path-decode.d.ts +0 -3
  433. package/dist/core/path-decode.d.ts.map +0 -1
  434. package/dist/core/path-decode.js +0 -9
  435. package/dist/core/path-decode.js.map +0 -1
  436. package/dist/core/plugin-attribution.d.ts +0 -5
  437. package/dist/core/plugin-attribution.d.ts.map +0 -1
  438. package/dist/core/plugin-attribution.js +0 -39
  439. package/dist/core/plugin-attribution.js.map +0 -1
  440. package/dist/core/world-state.d.ts +0 -10
  441. package/dist/core/world-state.d.ts.map +0 -1
  442. package/dist/core/world-state.js +0 -35
  443. package/dist/core/world-state.js.map +0 -1
  444. package/dist/core/world-state.sql +0 -35
  445. package/dist/core/zero-pin.d.ts +0 -3
  446. package/dist/core/zero-pin.d.ts.map +0 -1
  447. package/dist/core/zero-pin.js +0 -16
  448. package/dist/core/zero-pin.js.map +0 -1
  449. package/dist/server/auto.d.ts +0 -6
  450. package/dist/server/auto.d.ts.map +0 -1
  451. package/dist/server/auto.js +0 -63
  452. package/dist/server/auto.js.map +0 -1
  453. package/dist/server/clientTurn.d.ts +0 -6
  454. package/dist/server/clientTurn.d.ts.map +0 -1
  455. package/dist/server/clientTurn.js +0 -22
  456. package/dist/server/clientTurn.js.map +0 -1
  457. package/dist/server/clientTurn.sql +0 -10
  458. package/dist/server/noProposals.d.ts +0 -6
  459. package/dist/server/noProposals.d.ts.map +0 -1
  460. package/dist/server/noProposals.js +0 -37
  461. package/dist/server/noProposals.js.map +0 -1
  462. package/dist/server/version-info.d.ts +0 -14
  463. package/dist/server/version-info.d.ts.map +0 -1
  464. package/dist/server/version-info.js +0 -69
  465. package/dist/server/version-info.js.map +0 -1
  466. package/migrations/0000-00-00.01_schema.sql +0 -536
  467. package/migrations/0004_loop-provider.sql +0 -3
  468. package/migrations/0005_subscription-published-channel.sql +0 -3
  469. package/migrations/0006_loop-max-turns.sql +0 -3
@@ -1,8 +1,9 @@
1
- -- Envelope lifecycle queries. SPEC §connection-lifecycle.
1
+ -- Envelope lifecycle queries. SPEC {§connection-lifecycle}.
2
2
 
3
3
  -- PREP: envelope_insert_workspace
4
4
  INSERT INTO workspaces (name, project_root, settings)
5
5
  VALUES ($name, $project_root, $settings)
6
+ ON CONFLICT(name) DO NOTHING
6
7
  RETURNING id, name, project_root;
7
8
 
8
9
  -- PREP: envelope_get_workspace
@@ -15,13 +16,18 @@ SELECT id FROM workspaces WHERE name = $name;
15
16
 
16
17
  -- PREP: envelope_set_workspace_name
17
18
  -- Used by workspace.rename. The workspace name is a MUTABLE handle (vs a worker's
18
- -- immutable name, §machine-processes). Returns the updated row to refresh the
19
+ -- immutable name, {§machine-processes}). Returns the updated row to refresh the
19
20
  -- caller's ClientEnvelope copy.
20
- UPDATE workspaces SET name = $name WHERE id = $id
21
+ UPDATE workspaces SET name = $name
22
+ WHERE id = $id
23
+ AND NOT EXISTS (
24
+ SELECT 1 FROM workspaces AS other
25
+ WHERE other.name = $name AND other.id <> $id
26
+ )
21
27
  RETURNING id, name;
22
28
 
23
29
  -- PREP: envelope_insert_worker
24
- -- origin is the worker's actor (§machine-processes): 'model' (the conversation),
30
+ -- origin is the worker's actor ({§machine-processes}): 'model' (the conversation),
25
31
  -- 'client' (a connection's own worker), or 'plurnk' (the runtime self-hosting worker).
26
32
  INSERT INTO workers (workspace_id, name, origin)
27
33
  VALUES ($workspace_id, $name, $origin)
@@ -30,12 +36,6 @@ RETURNING id, name, origin;
30
36
  -- PREP: envelope_get_worker_by_id
31
37
  SELECT id, name, workspace_id, origin FROM workers WHERE id = $id;
32
38
 
33
- -- PREP: envelope_count_workers_by_prefix
34
- -- {§worker-auto-name} — ever-created count for the per-workspace ordinal auto-name
35
- -- (`<prefix>-<N>`); monotonic (counts terminated workers too), so a reclaimed name
36
- -- never re-mints. The fork_count_branches pattern, workspace-wide.
37
- SELECT COUNT(*) AS n FROM workers WHERE workspace_id = $workspace_id AND name LIKE $name_prefix;
38
-
39
39
  -- PREP: envelope_get_worker_by_name
40
40
  SELECT id, name FROM workers WHERE workspace_id = $workspace_id AND name = $name;
41
41
 
@@ -46,10 +46,8 @@ WHERE workspace_id = $workspace_id
46
46
  ORDER BY created_at DESC;
47
47
 
48
48
  -- PREP: envelope_list_workspace_prompts
49
- -- #238 — a workspace's user prompts for client up/down history: the conversation worker's
50
- -- non-empty loop seeds, newest-first, capped. The conversation worker is origin='model' +
51
- -- parentless; spawned/forked worker:// sub-runs (parent_worker_id set) are excluded — their
52
- -- seed prompts are not user input.
49
+ -- {§methods-workspace-prompts}: nonempty model-root loop seeds, newest-first;
50
+ -- spawned and forked children are not workspace-level user prompt history.
53
51
  SELECT l.prompt
54
52
  FROM loops l
55
53
  JOIN workers r ON r.id = l.worker_id
@@ -62,21 +60,19 @@ LIMIT $limit;
62
60
 
63
61
  -- PREP: envelope_insert_client_loop
64
62
  -- sequence is auto-computed: 1 + max(existing sequence in this worker) so
65
- -- multiple client connections attaching to the same run get distinct loops.
63
+ -- multiple client connections attaching to the same worker get distinct loops.
66
64
  INSERT INTO loops (worker_id, sequence, status, prompt)
67
65
  VALUES ($worker_id, COALESCE((SELECT MAX(sequence) FROM loops WHERE worker_id = $worker_id), 0) + 1, 102, '')
68
- RETURNING id;
66
+ RETURNING id, sequence;
69
67
 
70
68
  -- PREP: envelope_close_client_loop
71
- UPDATE loops SET status = $status WHERE id = $loop_id AND status = 102;
69
+ UPDATE loops
70
+ SET status = $status,
71
+ terminal_result = $result,
72
+ terminal_message = $message
73
+ WHERE id = $loop_id AND status = 102;
72
74
 
73
75
  -- PREP: envelope_list_workspaces
74
76
  SELECT id, name, project_root, created_at, cost_usd
75
77
  FROM workspaces
76
78
  ORDER BY created_at DESC;
77
-
78
- -- PREP: envelope_get_model_worker
79
- -- #371 — the workspace's canonical model CONVERSATION run: the earliest model-origin ROOT run
80
- -- (parent_worker_id NULL excludes forks and spawned workers, which inherit origin='model').
81
- -- ensureModelWorker finds this first; only a workspace with none mints one.
82
- SELECT id FROM workers WHERE workspace_id = $workspace_id AND origin = 'model' AND parent_worker_id IS NULL ORDER BY id LIMIT 1;
@@ -1,4 +1,4 @@
1
- // #521 (§exec-poll, owner-ruled) — the exponential backoff schedule for a parked exec stream with
1
+ // {§exec-poll} — the exponential backoff schedule for a parked exec stream with
2
2
  // no explicit `<,P>` cadence. Wake N fires at base·2^min(N, turns-1) seconds — doubling for `turns`
3
3
  // steps, then holding at the cap forever (never reverts to blind). Pure so the curve is testable
4
4
  // without racing a real timer.
@@ -1 +1 @@
1
- {"version":3,"file":"exec-poll-backoff.js","sourceRoot":"","sources":["../../src/server/exec-poll-backoff.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,oGAAoG;AACpG,iGAAiG;AACjG,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAa,EAAU,EAAE,CACtF,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"exec-poll-backoff.js","sourceRoot":"","sources":["../../src/server/exec-poll-backoff.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oGAAoG;AACpG,iGAAiG;AACjG,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAa,EAAU,EAAE,CACtF,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC"}
@@ -7,9 +7,46 @@
7
7
  -- replaying its provider turn could duplicate effects whose commit boundary is unknown.
8
8
  UPDATE loops
9
9
  SET status = 500,
10
- terminal_message = 'daemon restarted while this loop was active'
10
+ terminal_message = 'The daemon restarted while this loop was active; its process-local owner no longer exists.',
11
+ terminal_result = json_object(
12
+ 'status', 500,
13
+ 'problem', json_object(
14
+ 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
15
+ 'title', 'Owner vanished',
16
+ 'status', 500,
17
+ 'detail', 'The daemon restarted while this loop was active; its process-local owner no longer exists.',
18
+ 'instance', 'loop:///' || id
19
+ )
20
+ )
11
21
  WHERE status = 102;
12
22
 
23
+ -- PREP: recovery_fail_ownerless_proposals
24
+ -- {§worker-lifecycle-restart-recovery} Every proposed row depended on a
25
+ -- process-local resolution waiter. At boot that owner is necessarily gone, so
26
+ -- terminalize the occurrence before {§proposal-list} can open to clients.
27
+ UPDATE log_entries
28
+ SET state = 'failed',
29
+ outcome = 'owner_vanished',
30
+ status_rx = 500,
31
+ rx = json_object(
32
+ 'status', 500,
33
+ 'problem', json_object(
34
+ 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
35
+ 'title', 'Owner vanished',
36
+ 'status', 500,
37
+ 'detail', 'The daemon restarted while this proposal was pending; its process-local owner no longer exists.',
38
+ 'instance', printf(
39
+ 'log:///%d/%d/%d/%s',
40
+ (SELECT sequence FROM loops WHERE id = log_entries.loop_id),
41
+ (SELECT sequence FROM turns WHERE id = log_entries.turn_id),
42
+ sequence,
43
+ op
44
+ )
45
+ )
46
+ ),
47
+ deep_hash = NULL
48
+ WHERE state = 'proposed';
49
+
13
50
  -- PREP: recovery_error_orphan_subscription_channels
14
51
  -- Every open subscription belonged to a callable in the prior process. Mark its
15
52
  -- active content terminal before closing the durable row, so an interruption
@@ -24,7 +61,16 @@ WHERE state = 'active'
24
61
  -- PREP: recovery_fail_orphan_subscriptions
25
62
  UPDATE subscriptions
26
63
  SET closed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now'),
27
- close_status = 500
64
+ close_status = 500,
65
+ close_result = json_object(
66
+ 'status', 500,
67
+ 'problem', json_object(
68
+ 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
69
+ 'title', 'Owner vanished',
70
+ 'status', 500,
71
+ 'detail', 'The daemon restarted while this stream was active; its process-local owner no longer exists.'
72
+ )
73
+ )
28
74
  WHERE closed_at IS NULL;
29
75
 
30
76
  -- PREP: recovery_resume_unblocked_parks
@@ -53,11 +99,42 @@ WHERE status = 202
53
99
  AND child_loop.status IN (100, 102, 202)
54
100
  );
55
101
 
102
+ -- PREP: recovery_orphan_prompt_sources
103
+ -- {§prompt-loop-containment}: finish an absent or partially staged orphan
104
+ -- recovery before queued drains become visible at boot. A non-queued recovery
105
+ -- already crossed its delivery boundary and must never be replayed.
106
+ SELECT source.id AS loop_id, source.worker_id AS worker_id
107
+ FROM loops source
108
+ LEFT JOIN loops recovery ON recovery.orphan_source_loop_id = source.id
109
+ WHERE source.status IN (200, 413, 429, 499, 500, 504, 508)
110
+ AND (recovery.id IS NULL OR recovery.status = 100)
111
+ AND EXISTS (
112
+ SELECT 1
113
+ FROM entries e
114
+ JOIN entry_channels c ON c.entry_id = e.id AND c.name = 'body'
115
+ WHERE e.scheme = 'prompt'
116
+ AND e.owner_id = source.worker_id
117
+ AND e.pathname LIKE '/' || source.sequence || '/%'
118
+ AND NOT EXISTS (
119
+ SELECT 1 FROM log_entries le
120
+ WHERE le.loop_id = source.id AND le.origin = 'plurnk' AND le.op = 'prompt'
121
+ AND le.scheme = 'prompt' AND le.pathname = e.pathname
122
+ )
123
+ )
124
+ ORDER BY source.worker_id, source.sequence;
125
+
56
126
  -- PREP: recovery_queued_workers
57
127
  SELECT DISTINCT w.id AS worker_id, w.workspace_id
58
128
  FROM workers w
59
129
  JOIN loops l ON l.worker_id = w.id
60
130
  WHERE l.status = 100
131
+ AND NOT EXISTS (
132
+ SELECT 1
133
+ FROM branch_batch_items bi
134
+ JOIN branch_batches bb ON bb.id = bi.batch_id
135
+ WHERE bi.loop_id = l.id
136
+ AND bb.state IN ('collecting', 'queued', 'running', 'recovery_required')
137
+ )
61
138
  ORDER BY w.id;
62
139
 
63
140
  -- PREP: recovery_parked_workers
@@ -9,6 +9,7 @@ export type LogEntryWire = {
9
9
  sequence: number;
10
10
  at: string;
11
11
  origin: string;
12
+ source: string | null;
12
13
  op: string;
13
14
  suffix: string;
14
15
  signal: unknown;
@@ -18,7 +19,7 @@ export type LogEntryWire = {
18
19
  hostname: string | null;
19
20
  port: number | null;
20
21
  pathname: string | null;
21
- params: unknown;
22
+ query: string | null;
22
23
  fragment: string | null;
23
24
  lineMarker: unknown;
24
25
  tx: unknown;
@@ -27,6 +28,7 @@ export type LogEntryWire = {
27
28
  mimetype_rx: string;
28
29
  status_rx: number;
29
30
  tokens: number;
31
+ attrs: unknown;
30
32
  };
31
33
  export default class LogEntry {
32
34
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"logEntry.d.ts","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAMxC,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IASzB,OAAa,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAgCpE;CACJ"}
1
+ {"version":3,"file":"logEntry.d.ts","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAMxC,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IASzB,OAAa,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkCpE;CACJ"}
@@ -1,5 +1,5 @@
1
1
  // Hydrate a log_entries row for the wire. Re-parses JSON-encoded columns
2
- // (signal, params, lineMarker, tx, rx) so the client receives
2
+ // (signal, lineMarker, tx, rx, attrs) so the client receives
3
3
  // structured values, not opaque strings.
4
4
  export default class LogEntry {
5
5
  static #parseJsonOrNull(v) {
@@ -25,6 +25,7 @@ export default class LogEntry {
25
25
  sequence: row.sequence,
26
26
  at: row.at,
27
27
  origin: row.origin,
28
+ source: row.source,
28
29
  op: row.op,
29
30
  suffix: row.suffix,
30
31
  signal: LogEntry.#parseJsonOrNull(row.signal),
@@ -34,7 +35,7 @@ export default class LogEntry {
34
35
  hostname: row.hostname,
35
36
  port: row.port,
36
37
  pathname: row.pathname,
37
- params: LogEntry.#parseJsonOrNull(row.params),
38
+ query: row.query,
38
39
  fragment: row.fragment,
39
40
  lineMarker: LogEntry.#parseJsonOrNull(row.lineMarker),
40
41
  tx: LogEntry.#parseJsonOrNull(row.tx),
@@ -43,6 +44,7 @@ export default class LogEntry {
43
44
  mimetype_rx: row.mimetype_rx,
44
45
  status_rx: row.status_rx,
45
46
  tokens: row.tokens,
47
+ attrs: LogEntry.#parseJsonOrNull(row.attrs),
46
48
  };
47
49
  }
48
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logEntry.js","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8DAA8D;AAC9D,yCAAyC;AAsCzC,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,gBAAgB,CAAC,CAAU;QAC9B,uFAAuF;QACvF,kFAAkF;QAClF,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAM,EAAE,EAAU;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,GAAG,CAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QAC1E,OAAO;YACH,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7C,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,IAAI,EAAE,GAAG,CAAC,IAAqB;YAC/B,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7C,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;YACrD,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,WAAqB;YACtC,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,WAAqB;YACtC,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,MAAM,EAAE,GAAG,CAAC,MAAgB;SAC/B,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"logEntry.js","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,6DAA6D;AAC7D,yCAAyC;AAwCzC,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,gBAAgB,CAAC,CAAU;QAC9B,uFAAuF;QACvF,kFAAkF;QAClF,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAM,EAAE,EAAU;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,GAAG,CAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QAC1E,OAAO;YACH,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7C,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,IAAI,EAAE,GAAG,CAAC,IAAqB;YAC/B,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,KAAK,EAAE,GAAG,CAAC,KAAsB;YACjC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;YACrD,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,WAAqB;YACtC,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,WAAqB;YACtC,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;SAC9C,CAAC;IACN,CAAC;CACJ"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  -- PREP: log_entry_by_id
4
4
  -- loop_seq / turn_seq are the loop+turn ordinals (the logical coordinate clients
5
- -- render, e.g. 01/02/03) — distinct from the loop_id/turn_id DB keys (#208).
5
+ -- render, e.g. 01/02/03) — distinct from the loop_id/turn_id DB keys ({§methods-log-coordinate}).
6
6
  SELECT le.*, l.sequence AS loop_seq, t.sequence AS turn_seq
7
7
  FROM log_entries le
8
8
  JOIN loops l ON l.id = le.loop_id
@@ -1 +1 @@
1
- {"version":3,"file":"loop-model.d.ts","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAU9D,eAAO,MAAM,gBAAgB,UAClB,MAAM,GAAG,SAAS,SAClB,MAAM,GAAG,SAAS,YACf,SAAS,aAAa,EAAE,KACnC,aAAa,GAAG,IAclB,CAAC"}
1
+ {"version":3,"file":"loop-model.d.ts","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAW9D,eAAO,MAAM,gBAAgB,UAClB,MAAM,GAAG,SAAS,SAClB,MAAM,GAAG,SAAS,YACf,SAAS,aAAa,EAAE,KACnC,aAAa,GAAG,IA0ClB,CAAC"}
@@ -1,24 +1,37 @@
1
- // #414 — per-loop model selection: resolve a runLoop call's optional (alias, model) to the
1
+ import Results, { OperationFailureError } from "../core/results.js";
2
+ // {§methods-loop-run-model}: resolve a runLoop call's optional (alias, model) to the
2
3
  // ProviderAlias to instantiate, or null for "use the boot default". PURE (no env read, no
3
4
  // construction) so the precedence + parse contract is hermetically testable; the Daemon wraps it
4
5
  // with ProviderInstantiate + the #provider fallback.
5
6
  //
6
- // Precedence: `model` (client-resolved `<provider>/<model>`, #90) wins over a named `alias`,
7
- // matching how the legacy WS loop.run treated the pair. A malformed model spec or an undeclared
8
- // alias throws legibly — the daemon must never silently run the wrong model.
7
+ // Precedence: `model` (client-resolved `<provider>/<model>`) wins over a named `alias`.
8
+ // A malformed model spec or an undeclared alias throws legibly — the daemon must never silently
9
+ // run the wrong model.
9
10
  export const resolveLoopAlias = (alias, model, declared) => {
10
11
  if (typeof model === "string" && model.length > 0) {
11
12
  const slash = model.indexOf("/");
12
- if (slash <= 0)
13
- throw new Error(`runLoop: model must be '<provider>/<model>' (got '${model}')`);
14
- // A client-resolved spec is alias-independent (#90): the provider's own env carries the
13
+ if (slash <= 0 || slash === model.length - 1) {
14
+ throw new OperationFailureError(Results.failure("daemon:provider", "model-spec-invalid", 400, `Model '${model}' is not a provider/model specification.`, {}, {
15
+ model,
16
+ stage: "provider-selection",
17
+ recovery: "Use a provider/model specification.",
18
+ retryable: false,
19
+ }));
20
+ }
21
+ // A client-resolved spec is alias-independent: the provider's own env carries the
15
22
  // base URL, so the synthetic alias name is cosmetic (reuse the given alias if present).
16
23
  return { alias: alias ?? model, provider: model.slice(0, slash), model: model.slice(slash + 1) };
17
24
  }
18
25
  if (typeof alias === "string" && alias.length > 0) {
19
26
  const resolved = declared.find((a) => a.alias === alias.toLowerCase());
20
- if (resolved === undefined)
21
- throw new Error(`runLoop: alias '${alias}' is not declared (set PLURNK_MODEL_${alias}=<provider>/<model>)`);
27
+ if (resolved === undefined) {
28
+ throw new OperationFailureError(Results.failure("daemon:provider", "alias-not-found", 404, `Provider alias '${alias}' is not declared.`, {}, {
29
+ alias,
30
+ stage: "provider-selection",
31
+ recovery: "Select a declared provider alias.",
32
+ retryable: false,
33
+ }));
34
+ }
22
35
  return resolved;
23
36
  }
24
37
  return null; // neither → the daemon's boot default
@@ -1 +1 @@
1
- {"version":3,"file":"loop-model.js","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,0FAA0F;AAC1F,iGAAiG;AACjG,qDAAqD;AACrD,EAAE;AACF,6FAA6F;AAC7F,gGAAgG;AAChG,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,KAAyB,EACzB,KAAyB,EACzB,QAAkC,EACd,EAAE;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,KAAK,IAAI,CAAC,CAAC;QAChG,wFAAwF;QACxF,wFAAwF;QACxF,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,uCAAuC,KAAK,sBAAsB,CAAC,CAAC;QACxI,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,CAAE,sCAAsC;AACxD,CAAC,CAAC"}
1
+ {"version":3,"file":"loop-model.js","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,qFAAqF;AACrF,0FAA0F;AAC1F,iGAAiG;AACjG,qDAAqD;AACrD,EAAE;AACF,wFAAwF;AACxF,gGAAgG;AAChG,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,KAAyB,EACzB,KAAyB,EACzB,QAAkC,EACd,EAAE;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAC3C,iBAAiB,EACjB,oBAAoB,EACpB,GAAG,EACH,UAAU,KAAK,0CAA0C,EACzD,EAAE,EACF;gBACI,KAAK;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,qCAAqC;gBAC/C,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,kFAAkF;QAClF,wFAAwF;QACxF,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAC3C,iBAAiB,EACjB,iBAAiB,EACjB,GAAG,EACH,mBAAmB,KAAK,oBAAoB,EAC5C,EAAE,EACF;gBACI,KAAK;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,mCAAmC;gBAC7C,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,CAAE,sCAAsC;AACxD,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loopDocs.d.ts","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAKxC,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,OAAa,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAenF;CACJ"}
1
+ {"version":3,"file":"loopDocs.d.ts","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAKxC,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,OAAa,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAenF;CACJ"}
@@ -1,3 +1,4 @@
1
+ import { UNKNOWN_POSITION } from "@plurnk/plurnk-contracts";
1
2
  import WorkspaceSettings from "../core/workspace-settings.js";
2
3
  import DispatchAsPlurnk from "./dispatch-as-plurnk.js";
3
4
  export default class LoopDocs {
@@ -5,14 +6,14 @@ export default class LoopDocs {
5
6
  const { mdDocs } = await WorkspaceSettings.read(db, workspaceId);
6
7
  const docStmts = (await WorkspaceSettings.resolveDocs(mdDocs)).map((doc) => ({
7
8
  op: "EDIT", suffix: "", signal: null,
8
- target: { kind: "url", raw: `worker://plurnk/${doc.entryName}`, scheme: "worker", username: null, password: null, hostname: "plurnk", port: null, pathname: `/${doc.entryName}`, params: {}, fragment: null },
9
- lineMarker: { marks: [1, -1] }, body: doc.content, position: { line: 1, column: 1 },
9
+ target: { kind: "url", raw: `worker://plurnk/${doc.entryName}`, scheme: "worker", username: null, password: null, hostname: "plurnk", port: null, pathname: `/${doc.entryName}`, query: null, fragment: null },
10
+ lineMarker: { marks: [1, -1] }, body: doc.content, position: UNKNOWN_POSITION,
10
11
  }));
11
12
  for (const { name, content } of await engine.docEntries(workspaceId)) {
12
13
  docStmts.push({
13
14
  op: "EDIT", suffix: "", signal: null,
14
- target: { kind: "url", raw: `worker://plurnk/docs/${name}.md`, scheme: "worker", username: null, password: null, hostname: "plurnk", port: null, pathname: `/docs/${name}.md`, params: {}, fragment: null },
15
- lineMarker: { marks: [1, -1] }, body: content, position: { line: 1, column: 1 },
15
+ target: { kind: "url", raw: `worker://plurnk/docs/${name}.md`, scheme: "worker", username: null, password: null, hostname: "plurnk", port: null, pathname: `/docs/${name}.md`, query: null, fragment: null },
16
+ lineMarker: { marks: [1, -1] }, body: content, position: UNKNOWN_POSITION,
16
17
  });
17
18
  }
18
19
  if (docStmts.length > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"loopDocs.js","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"AAUA,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,EAAM,EAAE,WAAmB;QAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAoB,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1F,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI;YACpC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7M,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;SACtF,CAAC,CAAC,CAAC;QACJ,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI;gBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,IAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC3M,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;aAClF,CAAC,CAAC;QACP,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,QAA6B,CAAC,CAAC;IACrH,CAAC;CACJ"}
1
+ {"version":3,"file":"loopDocs.js","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAA4C,MAAM,0BAA0B,CAAC;AACtG,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,EAAM,EAAE,WAAmB;QAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAoB,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1F,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI;YACpC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9M,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB;SAChF,CAAC,CAAC,CAAC;QACJ,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI;gBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,IAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC5M,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB;aAC5E,CAAC,CAAC;QACP,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,QAA6B,CAAC,CAAC;IACrH,CAAC;CACJ"}
@@ -1,22 +1,27 @@
1
- -- entry.read RPC queries. SPEC §methods.
1
+ -- CoreSeam readEntry queries. SPEC {§methods-entry-read}.
2
2
 
3
3
  -- PREP: entry_read_lookup
4
4
  SELECT id, workspace_id, owner_id, scheme, pathname
5
5
  FROM entries
6
- WHERE workspace_id = $workspace_id AND scheme = $scheme AND pathname = $pathname
7
- LIMIT 1;
6
+ WHERE workspace_id = $workspace_id
7
+ AND owner_id = $owner_id
8
+ AND scheme = $scheme
9
+ AND pathname = $pathname;
8
10
 
9
11
  -- PREP: entry_read_channels
10
- SELECT name, content, length(content) AS contentLength, mimetype, tokens, state
12
+ SELECT name, content, 0 AS contentOffset, length(content) AS contentLength, mimetype, tokens, state
11
13
  FROM entry_channels
12
14
  WHERE entry_id = $entry_id;
13
15
 
14
- -- entry.read({channel, offset}) — incremental delta read for streaming viewers
15
- -- (#192): substr ships only content from $offset (chars — the unit contentLength
16
- -- counts), and contentLength is the full length so the client's next offset
17
- -- survives growth between a stream/event and this read. $offset=0 → whole channel;
18
- -- $offset past the end → '' (caught up). SQLite substr is 1-indexed → $offset + 1.
16
+ -- {§entry-read-result}: return the selected channel suffix in Unicode code points
17
+ -- plus its complete current length. SQLite substr is 1-indexed, hence offset + 1.
19
18
  -- PREP: entry_read_channel_slice
20
- SELECT name, substr(content, $offset + 1) AS content, length(content) AS contentLength, mimetype, tokens, state
19
+ SELECT name,
20
+ substr(content, $offset + 1) AS content,
21
+ min($offset, length(content)) AS contentOffset,
22
+ length(content) AS contentLength,
23
+ mimetype,
24
+ tokens,
25
+ state
21
26
  FROM entry_channels
22
27
  WHERE entry_id = $entry_id AND name = $channel;
@@ -1,7 +1,7 @@
1
- -- log.read RPC query. SPEC §methods.
1
+ -- CoreSeam readLog query. SPEC {§methods-log-read}.
2
2
  -- Static query with IS-NULL guards on optional filters. The loops/turns joins
3
3
  -- resolve the DISPLAY coordinate (loop_seq/turn_seq/op-sequence) so a client can
4
- -- target one entry by its `L/T/S` coordinate (plurnk-service#271) instead of
4
+ -- target one entry by its `L/T/S` coordinate instead of
5
5
  -- fetching a worker and matching client-side. INNER JOINs are safe: log_entries
6
6
  -- carries worker_id/loop_id/turn_id NOT NULL, so no row is dropped; the coordinate
7
7
  -- guards are inert when their param is NULL (identical to the id-only filters).
@@ -1,4 +1,4 @@
1
- -- loop.run RPC queries. SPEC §rpc.
1
+ -- CoreSeam runLoop queries. SPEC {§methods-loop-run}.
2
2
 
3
3
  -- PREP: loop_run_next_sequence
4
4
  SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM loops WHERE worker_id = $worker_id;
@@ -1,13 +1,23 @@
1
1
  -- PREP: proposal_list_pending
2
- -- §proposal-list — every stopped-world proposal in the workspace (state='proposed'): file edits,
3
- -- MCP auths, [300] questions. The ruling's mandatory companion ({§proposal-timeout-cancels}
4
- -- ships indefinite): a world that can stay stopped for days MUST be discoverable by a
5
- -- reconnecting client, or granted patience reads as a mystery hang.
6
- SELECT le.id AS logEntryId, le.worker_id AS workerId, le.loop_id AS loopId, le.turn_id AS turnId,
7
- le.op, le.suffix, le.scheme, le.pathname, le.tx, le.attrs, le.at,
8
- l.flags AS loop_flags
2
+ -- {§proposal-list} — durable candidates in a workspace. ProposalLifecycle intersects
3
+ -- them with its live resolution owners before projecting a stopped world; neither
4
+ -- Daemon nor an interface module reconstructs authority from this persistence shape.
5
+ SELECT le.id AS logEntryId, r.workspace_id AS workspaceId,
6
+ le.worker_id AS workerId, le.loop_id AS loopId, le.turn_id AS turnId,
7
+ le.op, le.signal, le.scheme, le.pathname, le.rx, le.attrs, l.flags AS loop_flags
9
8
  FROM log_entries le
10
9
  JOIN workers r ON r.id = le.worker_id
11
10
  JOIN loops l ON l.id = le.loop_id
12
11
  WHERE r.workspace_id = $workspace_id AND le.state = 'proposed'
13
12
  ORDER BY le.id;
13
+
14
+ -- PREP: proposal_get_pending
15
+ -- Same durable input as proposal_list_pending, selected by proposal identity for
16
+ -- the live path. Both paths enter ProposalLifecycle's one projection function.
17
+ SELECT le.id AS logEntryId, r.workspace_id AS workspaceId,
18
+ le.worker_id AS workerId, le.loop_id AS loopId, le.turn_id AS turnId,
19
+ le.op, le.signal, le.scheme, le.pathname, le.rx, le.attrs, l.flags AS loop_flags
20
+ FROM log_entries le
21
+ JOIN workers r ON r.id = le.worker_id
22
+ JOIN loops l ON l.id = le.loop_id
23
+ WHERE le.id = $log_entry_id AND le.state = 'proposed';
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAsBA,MAAM,CAAC,OAAO,OAAO,OAAO;;IA6OxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiFjC;CACJ"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAyBA,MAAM,CAAC,OAAO,OAAO,OAAO;;IA4PxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA+EjC;CACJ"}