@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,6 +1,5 @@
1
- -- Drain queries for the worker-level loop queue (SPEC §_run_drain — TBD).
2
- -- Mirrors rummy's AgentLoop drain pattern: enqueue loop at status=100,
3
- -- claim atomically (100 → 102), execute, repeat.
1
+ -- {§worker-loop-lifecycle} — the worker-level loop queue: enqueue at status 100,
2
+ -- claim atomically (100 → 102) in FIFO order, execute, and continue draining.
4
3
 
5
4
  -- PREP: drain_enqueue_loop
6
5
  -- Insert a loop at queued state. Sequence is per-worker, 1-based.
@@ -28,8 +27,8 @@ SELECT max_turns FROM loops WHERE id = $loop_id;
28
27
  -- PREP: drain_current_loop_for_worker
29
28
  -- The worker's current NON-TERMINAL loop — active (102) or parked (202). At most one per worker
30
29
  -- under drain semantics. Engine.inject uses it to write the prompt entry for the right loop's
31
- -- next turn; including 202 lets an irc target a PARKED loop's resume turn (#55) instead of
32
- -- orphaning it with a fresh loop. (102 preferred if both somehow exist.)
30
+ -- next turn; {§methods-loop-run-fold-consistency} requires an IRC to target a PARKED loop's
31
+ -- resume turn instead of orphaning it with a fresh loop. (102 preferred if both somehow exist.)
33
32
  SELECT id, sequence FROM loops
34
33
  WHERE worker_id = $worker_id AND status IN (102, 202)
35
34
  ORDER BY (status = 102) DESC, sequence ASC
@@ -37,45 +36,28 @@ LIMIT 1;
37
36
 
38
37
  -- PREP: drain_next_turn_seq_for_loop
39
38
  -- Next turn sequence for the given loop. Used by Engine.inject to compute
40
- -- the path of the prompt entry it should write (plurnk://prompt/<run>/<loop>/<N>).
39
+ -- the turn on which its next prompt frame will be published.
41
40
  SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM turns WHERE loop_id = $loop_id;
42
41
 
43
42
  -- PREP: drain_get_worker_workspace
44
43
  -- Resolve workerId → workspaceId. Needed when wake/inject paths only have the
45
- -- workerId (e.g., a stream concluded in run X; daemon needs the workspace
46
- -- context to write entries under the worker's workspace scope).
44
+ -- workerId (e.g., a stream concluded in worker X; daemon needs the workspace
45
+ -- context paired with that worker's owner identity).
47
46
  SELECT workspace_id FROM workers WHERE id = $worker_id;
48
47
 
49
- -- PREP: drain_get_latest_prompt_body_for_loop
50
- -- Sources packet.user.prompt at packet-build time. plurnk://prompt/<run>/<loop>/<N>
51
- -- entries accumulate per turn; the latest one (highest entries.id) is the
52
- -- "current" prompt the model sees in user.prompt. Falls back to NULL when
53
- -- no prompt entry exists for the loop (caller substitutes runLoop's
54
- -- messages parameter for backward compat with tests that bypass inject).
55
- -- Pattern is built JS-side via promptLoopPrefix (worker-qualified `/prompt/<run>/<loop>/%`,
56
- -- matching the foist's #pathnameOf and the inject) — SqlRite's parameter
57
- -- binding doesn't reliably coerce integers for `LIKE` with `||`.
58
- SELECT c.content, e.pathname
59
- FROM entries e
60
- JOIN entry_channels c ON c.entry_id = e.id
61
- WHERE e.scheme = 'prompt'
62
- AND e.owner_id = $owner_id
63
- AND e.pathname LIKE $pattern
64
- AND c.name = 'body'
65
- ORDER BY e.id DESC
66
- LIMIT 1;
67
-
68
- -- PREP: drain_count_prompts_for_loop
69
- -- {§prompt-loop-containment} — the per-loop prompt ORDINAL source: N = count+1. The frame key is
70
- -- the Nth prompt of the loop, never a turn slot, so rapid arrivals can never share a row.
71
- SELECT COUNT(*) AS n FROM entries
48
+ -- PREP: drain_next_prompt_ordinal_for_loop
49
+ -- {§prompt-loop-containment} — derive the next per-loop frame ordinal from the
50
+ -- greatest materialized ordinal. The initial frame reserves ordinal 1 even
51
+ -- before turn 1 materializes it, so an injection starts at 2.
52
+ SELECT COALESCE(MAX(CAST(substr(pathname, $prefix_len + 1) AS INTEGER)), 1) + 1 AS next
53
+ FROM entries
72
54
  WHERE scheme = 'prompt' AND owner_id = $owner_id AND pathname LIKE $pattern;
73
55
 
74
56
  -- PREP: drain_undelivered_prompts_for_loop
75
- -- {§prompt-loop-containment} — the prompts the loop CONTAINS but has not yet delivered: no
76
- -- plurnk-origin auto-READ row exists for the frame in this loop. Oldest first; the next turn
77
- -- boundary foists each, so every arrival reaches the model exactly once.
78
- SELECT c.content, e.pathname
57
+ -- {§prompt-loop-containment} - the prompts the loop contains but has not yet delivered: no
58
+ -- actionless prompt row exists for the frame in this loop. Oldest first; the next turn
59
+ -- boundary publishes each, so every arrival reaches the model exactly once.
60
+ SELECT c.content, e.pathname, e.attributes
79
61
  FROM entries e
80
62
  JOIN entry_channels c ON c.entry_id = e.id
81
63
  WHERE e.scheme = 'prompt'
@@ -84,15 +66,15 @@ WHERE e.scheme = 'prompt'
84
66
  AND c.name = 'body'
85
67
  AND NOT EXISTS (
86
68
  SELECT 1 FROM log_entries le
87
- WHERE le.loop_id = $loop_id AND le.origin = 'plurnk' AND le.op = 'READ'
69
+ WHERE le.loop_id = $loop_id AND le.origin = 'plurnk' AND le.op = 'prompt'
88
70
  AND le.scheme = 'prompt' AND le.pathname = e.pathname
89
71
  )
90
- ORDER BY e.id ASC;
72
+ ORDER BY CAST(substr(e.pathname, $prefix_len + 1) AS INTEGER) ASC;
91
73
 
92
74
  -- PREP: drain_get_all_prompt_bodies_for_loop
93
- -- Sources the Active User Prompts section (§prompt-fold): EVERY prompt entry the
75
+ -- Sources the Active User Prompts section: EVERY prompt entry the
94
76
  -- current loop holds, OLDEST first — typically one, but an active loop admits injected
95
- -- prompts (multiple plurnk://prompt/<run>/<loop>/<N>), all shown in order. Same pattern as
77
+ -- prompts (multiple prompt:///<loop>/<N> entries), all shown in order. Same pattern as
96
78
  -- the latest-only sibling (promptLoopPrefix pattern, built JS-side); the section renders
97
79
  -- each body as a bare heredoc.
98
80
  SELECT c.content, e.pathname
@@ -102,18 +84,20 @@ WHERE e.scheme = 'prompt'
102
84
  AND e.owner_id = $owner_id
103
85
  AND e.pathname LIKE $pattern
104
86
  AND c.name = 'body'
105
- ORDER BY e.id ASC;
87
+ ORDER BY CAST(substr(e.pathname, $prefix_len + 1) AS INTEGER) ASC;
106
88
 
107
- -- PREP: drain_orphaned_prompt_for_loop
89
+ -- PREP: drain_orphaned_prompts_for_loop
108
90
  -- A loop can terminate before consuming a next-turn prompt injected into it
109
- -- (a wake-on-completion, or a loop.run-while-active that landed on a turn the
110
- -- loop never reached). Engine.inject writes prompt/<run>/<loop>/<N> at MAX(turn)+1;
91
+ -- (a wake-on-completion, or a runLoop-while-active prompt that landed on a turn the
92
+ -- loop never reached). Engine.inject writes prompt:///<loop>/<N>;
111
93
  -- if the loop ended at turn K, an injected prompt at turn > K never ran.
112
- -- Returns the latest such orphan's body + the ended loop's flags so
113
- -- the drain can promote it to a fresh loop — no wake silently lost.
94
+ -- Return the complete orphan set oldest-first with the ended loop posture so
95
+ -- one recovery loop can preserve frame cardinality and ordering.
114
96
  -- $pattern = promptLoopPrefix + '%', $prefix_len = length of that prefix
115
97
  -- built JS-side (per the SqlRite LIKE-binding note above).
116
- SELECT c.content AS body, l.flags AS flags, l.provider_spec AS provider_spec
98
+ SELECT c.content AS body, l.flags AS flags, l.provider_spec AS provider_spec,
99
+ l.max_turns AS max_turns,
100
+ json_extract(e.attributes, '$.openPaths') AS open_paths
117
101
  FROM entries e
118
102
  JOIN entry_channels c ON c.entry_id = e.id
119
103
  JOIN loops l ON l.id = $loop_id
@@ -123,34 +107,80 @@ WHERE e.scheme = 'prompt'
123
107
  AND c.name = 'body'
124
108
  AND NOT EXISTS (
125
109
  SELECT 1 FROM log_entries le
126
- WHERE le.loop_id = $loop_id AND le.origin = 'plurnk' AND le.op = 'READ'
110
+ WHERE le.loop_id = $loop_id AND le.origin = 'plurnk' AND le.op = 'prompt'
127
111
  AND le.scheme = 'prompt' AND le.pathname = e.pathname
128
112
  )
129
- ORDER BY e.id DESC
130
- LIMIT 1;
113
+ ORDER BY CAST(substr(e.pathname, $prefix_len + 1) AS INTEGER) ASC;
114
+
115
+ -- PREP: drain_enqueue_orphan_recovery_loop
116
+ -- {§prompt-loop-containment}: recovery identity is the concluded source loop.
117
+ -- Retrying returns that same queued loop instead of minting duplicate work.
118
+ INSERT INTO loops (
119
+ worker_id, sequence, status, prompt, flags, provider_spec, max_turns,
120
+ open_paths, orphan_source_loop_id
121
+ )
122
+ VALUES (
123
+ $worker_id, $sequence, 100, $prompt, $flags, $provider_spec, $max_turns,
124
+ $open_paths, $orphan_source_loop_id
125
+ )
126
+ ON CONFLICT (orphan_source_loop_id) DO UPDATE
127
+ SET orphan_source_loop_id = excluded.orphan_source_loop_id
128
+ RETURNING id, sequence, status;
129
+
130
+ -- PREP: drain_rehome_orphaned_prompt_frames
131
+ -- Move, rather than copy, the source loop's undelivered entry identities into
132
+ -- the recovery loop. The materialized rank freezes the complete source set for
133
+ -- this one atomic statement while pathnames change underneath it.
134
+ WITH orphaned(id, ordinal) AS MATERIALIZED (
135
+ SELECT e.id,
136
+ ROW_NUMBER() OVER (
137
+ ORDER BY CAST(substr(e.pathname, $source_prefix_len + 1) AS INTEGER) ASC
138
+ )
139
+ FROM entries e
140
+ WHERE e.scheme = 'prompt'
141
+ AND e.owner_id = $owner_id
142
+ AND e.pathname LIKE $source_pattern
143
+ AND EXISTS (
144
+ SELECT 1 FROM entry_channels c
145
+ WHERE c.entry_id = e.id AND c.name = 'body'
146
+ )
147
+ AND NOT EXISTS (
148
+ SELECT 1 FROM log_entries le
149
+ WHERE le.loop_id = $source_loop_id AND le.origin = 'plurnk' AND le.op = 'prompt'
150
+ AND le.scheme = 'prompt' AND le.pathname = e.pathname
151
+ )
152
+ )
153
+ UPDATE entries
154
+ SET pathname = $target_prefix || (
155
+ SELECT ordinal FROM orphaned WHERE orphaned.id = entries.id
156
+ )
157
+ WHERE id IN (SELECT id FROM orphaned)
158
+ RETURNING id, pathname;
131
159
 
132
160
  -- PREP: drain_find_slept_loop
133
161
  -- A worker's parked (slept) loop — SEND[202] suspends it at status 202, resumable by a wake
134
- -- (§worker-lifecycle-wake-liveness). A worker parks one at a time; take the most recent.
162
+ -- ({§worker-lifecycle-wake-liveness}). A worker parks one at a time; take the most recent.
135
163
  SELECT id FROM loops WHERE worker_id = $worker_id AND status = 202 ORDER BY sequence DESC LIMIT 1;
136
164
 
137
165
  -- PREP: drain_loop_provider_spec
138
166
  SELECT provider_spec FROM loops WHERE id = $loop_id;
139
167
 
140
168
  -- PREP: drain_worker_min_poll
141
- -- grammar 0.74.20 EXEC `<T,P>` — the tightest poll cadence (seconds) among a worker's OPEN
142
- -- subscriptions. open_count distinguishes no stream from an open stream whose cadence is NULL;
143
- -- child-only joins have no polling policy and wake exclusively from child settlement.
144
- SELECT COUNT(*) AS open_count, MIN(poll_seconds) AS poll_seconds
169
+ -- EXEC `<T,P>` — aggregate each open subscription's policy into one worker timer. A fixed cadence
170
+ -- wins at its tightest positive value; otherwise any omitted cadence requests default backoff;
171
+ -- only an all-zero set disables the timer. Child-only joins have no subscription policy.
172
+ SELECT
173
+ COUNT(*) AS open_count,
174
+ CASE
175
+ WHEN COUNT(*) = 0 THEN NULL
176
+ WHEN MIN(CASE WHEN poll_seconds > 0 THEN poll_seconds END) IS NOT NULL
177
+ THEN MIN(CASE WHEN poll_seconds > 0 THEN poll_seconds END)
178
+ WHEN SUM(CASE WHEN poll_seconds IS NULL THEN 1 ELSE 0 END) > 0 THEN NULL
179
+ ELSE 0
180
+ END AS poll_seconds
145
181
  FROM subscriptions WHERE worker_id = $worker_id AND closed_at IS NULL;
146
182
 
147
183
  -- PREP: worker_parent_id
148
- -- A worker's parent (worker:// spawn / fork set parent_worker_id, §lifecycle-terms). NULL = a root run.
149
- -- Used at drain-exit to wake a parent that parked awaiting this child (§run-lifecycle topology join).
184
+ -- A worker's parent (worker:// spawn / fork set parent_worker_id, {§lifecycle-terms}). NULL = a root worker.
185
+ -- Used at drain-exit to wake a parent that parked awaiting this child ({§worker-loop-lifecycle} topology join).
150
186
  SELECT parent_worker_id FROM workers WHERE id = $worker_id;
151
-
152
- -- PREP: drain_active_loop_flags
153
- -- #368 — the LIVE loop's persisted flags for the fold-posture guard: an inject carrying flags
154
- -- that differ from the loop it would fold into is refused, never a silent posture discard.
155
- -- The worker's currently-executing loop is its most recent non-terminal one.
156
- SELECT id, flags FROM loops WHERE worker_id = $worker_id AND status IN (100, 102) ORDER BY sequence DESC LIMIT 1;
@@ -1,4 +1,5 @@
1
1
  import type { Db } from "../core/Db.ts";
2
+ import { type SchemeResult } from "../core/results.ts";
2
3
  export interface WorkspaceRow {
3
4
  id: number;
4
5
  name: string;
@@ -19,14 +20,10 @@ export interface ClientEnvelope {
19
20
  projectRoot: string | null;
20
21
  workerId: number;
21
22
  workerName: string;
22
- modelWorkerId: number | null;
23
- clientLoopId: number | null;
24
23
  }
25
24
  export default class Envelope {
26
25
  #private;
27
- static readonly RESERVED_RUN_NAMES: ReadonlySet<string>;
28
26
  static generateWorkspaceName(): string;
29
- static mintWorkerName(db: Db, workspaceId: number, prefix: string): Promise<string>;
30
27
  static createClientEnvelope(db: Db, opts?: {
31
28
  name?: string;
32
29
  prefix?: string;
@@ -46,7 +43,7 @@ export default class Envelope {
46
43
  static ensurePlurnkWorker(db: Db, workspaceId: number): Promise<number>;
47
44
  static listWorkersForWorkspace(db: Db, workspaceId: number): Promise<WorkerRow[]>;
48
45
  static listPromptsForWorkspace(db: Db, workspaceId: number, limit: number): Promise<string[]>;
49
- static closeClientLoop(db: Db, loopId: number, status: 200 | 499): Promise<void>;
46
+ static closeClientLoop(db: Db, loopId: number, result: SchemeResult): Promise<void>;
50
47
  static listWorkspaces(db: Db): Promise<WorkspaceRow[]>;
51
48
  static updateWorkspaceName(db: Db, workspaceId: number, name: string): Promise<string>;
52
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,OAAgB,EAAyB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAcvF,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzC;AAKD,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAUzB,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAErC;IAED,OAAa,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CA+BhK;IAgED,OAAa,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAiB1I;IAID,OAAa,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvE;IAQD,OAAa,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAehH;IAED,OAAa,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS3E;IAKD,OAAa,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5E;IAED,OAAa,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtF;IAID,OAAa,uBAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGlG;IAED,OAAa,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxF;IAED,OAAa,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE3D;IAKD,OAAa,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B3F;CACJ"}
@@ -1,21 +1,17 @@
1
- // Envelope lifecycle helpers for client connections. SPEC §connection-lifecycle.
1
+ // Envelope lifecycle helpers for module clients. SPEC {§connection-lifecycle}.
2
2
  //
3
- // Every connected client gets a (workspace, run, client-loop) envelope. Either
4
- // the client picks the workspace explicitly (workspace.create / workspace.attach)
5
- // or the daemon auto-creates one on first requiresInit RPC. In both cases
6
- // the daemon opens a NEW run within the workspace and a NEW client loop within
7
- // that worker; the client loop closes on disconnect.
3
+ // A client-interface module receives this value from an explicit workspace create
4
+ // or attach call. Core creates or selects the client worker but retains no transport
5
+ // binding; each dispatched client action allocates and settles its own journal segment.
8
6
  import GitMembership from "../core/git-membership.js";
9
- import Owner from "../core/Owner.js";
7
+ import Results, { OperationFailureError } from "../core/results.js";
8
+ import LoopLifecycle from "../core/LoopLifecycle.js";
9
+ import WorkerName from "../core/WorkerName.js";
10
+ const envelopeFailure = (owner, code, status, detail, extensions = {}) => new OperationFailureError(Results.failure(owner, code, status, detail, {}, extensions));
10
11
  export default class Envelope {
11
- // Run names reserved for non-client actors: a client must not create OR
12
- // attach to a worker under a reserved name (origin-impersonation — `plurnk`
13
- // is the runtime actor, §authority-terms/§actor-boundary). Checked case-insensitively, before
14
- // lookup, so a client can neither forge nor hijack one (SPEC §methods).
15
- static RESERVED_RUN_NAMES = Owner.RESERVED; // §methods-worker-name-reserved + {§entry-owner} (commons/plurnk rows, ~ self-sigil)
16
- // Grammar 0.5.0 (#10): Workspace and Run carry user-renameable string names.
17
- // Defaults are `workspace-{unixtime}` and `run-{unixtime}`; random suffix avoids
18
- // collisions when two creations land in the same second.
12
+ // Workspace names default to `workspace-{unixtime}-{random}`; the suffix avoids
13
+ // collisions when two creations land in the same second. Worker names use the
14
+ // workspace-local `<prefix>-<ordinal>` contract in WorkerName.
19
15
  static #tsName(prefix) {
20
16
  const ts = Math.floor(Date.now() / 1000);
21
17
  const rand = Math.floor(Math.random() * 0xFFFFFF).toString(36).padStart(4, "0");
@@ -24,81 +20,87 @@ export default class Envelope {
24
20
  static generateWorkspaceName() {
25
21
  return Envelope.#tsName("workspace");
26
22
  }
27
- static async mintWorkerName(db, workspaceId, prefix) {
28
- const count = await db.envelope_count_workers_by_prefix.get({ workspace_id: workspaceId, name_prefix: `${prefix}-%` });
29
- let n = (count?.n ?? 0) + 1;
30
- // A manually-named squatter (`model-3` typed by a user) can hold the ordinal — bump past it.
31
- while (await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: `${prefix}-${n}` }) !== undefined)
32
- n++;
33
- return `${prefix}-${n}`;
34
- }
35
23
  static async createClientEnvelope(db, opts = {}) {
36
24
  const name = opts.name ?? Envelope.#tsName(opts.prefix ?? "workspace");
37
25
  const projectRoot = opts.projectRoot ?? null;
38
26
  const workspace = await db.envelope_insert_workspace.get({ name, project_root: projectRoot, settings: opts.settings ?? "{}" });
39
- if (workspace === undefined)
40
- throw new Error("createClientEnvelope: workspace insert returned no row");
41
- // SPEC §membership D4 — establish git-ls-files membership at workspace setup so
27
+ if (workspace === undefined) {
28
+ throw envelopeFailure("daemon:workspace", "name-conflict", 409, `Workspace name '${name}' is already in use.`, {
29
+ name,
30
+ recovery: "Choose another workspace name or attach to the existing workspace.",
31
+ retryable: false,
32
+ });
33
+ }
34
+ // SPEC {§membership} D4 — establish git-ls-files membership at workspace setup so
42
35
  // tracked files are members before the first op. No-op when projectRoot is
43
36
  // null (headless) or not a git working tree.
44
37
  await GitMembership.resolveGitMembership(db, workspace.id, undefined);
45
- const workerName = await Envelope.mintWorkerName(db, workspace.id, "client");
46
- const run = await db.envelope_insert_worker.get({ workspace_id: workspace.id, name: workerName, origin: "client" });
47
- if (run === undefined)
48
- throw new Error("createClientEnvelope: run insert returned no row");
38
+ const worker = await WorkerName.claimAuto(db, {
39
+ workspaceId: workspace.id,
40
+ prefix: "client",
41
+ origin: "client",
42
+ });
49
43
  return {
50
44
  workspaceId: workspace.id, workspaceName: workspace.name,
51
45
  projectRoot: workspace.project_root,
52
- workerId: run.id, workerName: run.name,
53
- modelWorkerId: null,
54
- clientLoopId: null,
46
+ workerId: worker.id, workerName: worker.name,
55
47
  };
56
48
  }
57
49
  // Resolve the worker inside a workspace. Three modes:
58
50
  // - opts.workerId given: lookup by id, verify workspace ownership (else throw).
59
51
  // - opts.workerName given: lookup by (workspaceId, name); reuse if found, create otherwise.
60
- // - neither: create a new run with an auto-generated name (current behavior).
52
+ // - neither: create a new worker with an auto-generated name (current behavior).
61
53
  // `workerId` and `workerName` are alternatives — passing both throws (use one).
62
54
  static async #resolveWorker(db, workspaceId, opts) {
63
55
  if (opts.workerId !== undefined && opts.workerName !== undefined) {
64
- throw new Error("attachToWorkspace: pass workerId OR workerName, not both");
56
+ throw envelopeFailure("daemon:worker", "worker-selector-conflict", 400, "Workspace attachment received both a worker ID and worker name.", {
57
+ workerId: opts.workerId,
58
+ workerName: opts.workerName,
59
+ recovery: "Select the worker by either ID or name.",
60
+ retryable: false,
61
+ });
65
62
  }
66
63
  if (opts.workerId !== undefined) {
67
64
  const existing = await db.envelope_get_worker_by_id.get({ id: opts.workerId });
68
- if (existing === undefined)
69
- throw new Error(`run ${opts.workerId} not found`);
70
- if (existing.workspace_id !== workspaceId)
71
- throw new Error(`run ${opts.workerId} belongs to workspace ${existing.workspace_id}, not ${workspaceId}`);
65
+ if (existing === undefined) {
66
+ throw envelopeFailure("daemon:worker", "worker-not-found", 404, `Worker ${opts.workerId} does not exist.`, { workerId: opts.workerId });
67
+ }
68
+ if (existing.workspace_id !== workspaceId) {
69
+ throw envelopeFailure("daemon:worker", "workspace-mismatch", 409, `Worker ${opts.workerId} does not belong to workspace ${workspaceId}.`, {
70
+ workerId: opts.workerId,
71
+ workspaceId,
72
+ actualWorkspaceId: existing.workspace_id,
73
+ retryable: false,
74
+ });
75
+ }
72
76
  return { id: existing.id, name: existing.name };
73
77
  }
74
78
  if (opts.workerName !== undefined) {
75
- if (Envelope.RESERVED_RUN_NAMES.has(opts.workerName.toLowerCase())) {
76
- throw new Error(`worker name "${opts.workerName}" is reserved for a non-client actor`);
77
- }
78
- const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: opts.workerName });
79
+ const workerName = WorkerName.assert(opts.workerName); // {§worker-name-minting}
80
+ const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: workerName });
79
81
  if (existing !== undefined)
80
82
  return existing;
81
- const created = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: opts.workerName, origin: "client" });
83
+ const created = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: workerName, origin: "client" });
82
84
  if (created === undefined)
83
- throw new Error("resolveWorker: run insert returned no row");
85
+ throw new Error("resolveWorker: worker insert returned no row");
84
86
  return created;
85
87
  }
86
- const created = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: await Envelope.mintWorkerName(db, workspaceId, "client"), origin: "client" });
87
- if (created === undefined)
88
- throw new Error("resolveWorker: run insert returned no row");
89
- return created;
88
+ return await WorkerName.claimAuto(db, {
89
+ workspaceId,
90
+ prefix: "client",
91
+ origin: "client",
92
+ });
90
93
  }
91
94
  static async attachToWorkspace(db, workspaceId, opts = {}) {
92
95
  const workspace = await db.envelope_get_workspace.get({ id: workspaceId });
93
- if (workspace === undefined)
94
- throw new Error(`workspace ${workspaceId} not found`);
95
- const run = await Envelope.#resolveWorker(db, workspace.id, opts);
96
+ if (workspace === undefined) {
97
+ throw envelopeFailure("daemon:workspace", "workspace-not-found", 404, `Workspace ${workspaceId} does not exist.`, { workspaceId });
98
+ }
99
+ const worker = await Envelope.#resolveWorker(db, workspace.id, opts);
96
100
  return {
97
101
  workspaceId: workspace.id, workspaceName: workspace.name,
98
102
  projectRoot: workspace.project_root,
99
- workerId: run.id, workerName: run.name,
100
- modelWorkerId: null,
101
- clientLoopId: null,
103
+ workerId: worker.id, workerName: worker.name,
102
104
  };
103
105
  }
104
106
  // Client action journal allocator. One action allocates one segment; its
@@ -109,70 +111,92 @@ export default class Envelope {
109
111
  throw new Error("ensureClientLoop: loop insert returned no row");
110
112
  return loop.id;
111
113
  }
112
- // Lazy model-run allocator (§connection-lifecycle, §machine-processes — the client writes to its own worker).
113
- // The model's conversation lives in its OWN run, distinct from the connection's
114
- // (client) run, so the packet — rendered from the model's run — never carries
115
- // the client's op.*. Created on the first loop.run; reused for the connection.
116
- // #366 — a FRESH conversation over the same world (§machine-processes: two workers are two
117
- // conversations about one curated workspace): a named, empty-log, model-origin ROOT run.
118
- // Distinct from ensureModelWorker (the stable default conversation) and forkWorker (copies history).
114
+ // Lazy model-worker allocator ({§connection-lifecycle}, {§machine-processes} — the client writes to its own worker).
115
+ // The model's conversation lives in its own worker, distinct from the client's
116
+ // client worker, so the packet — rendered from the model worker — never carries
117
+ // the client's dispatched actions. The module resolves and retains the binding.
118
+ // {§methods-conversation-worker}: a fresh conversation is a named, empty-log,
119
+ // model-origin root, distinct from the stable default and from a history-copying fork.
119
120
  static async createModelWorker(db, workspaceId, name) {
120
- if (name !== undefined && Owner.RESERVED.has(name.toLowerCase()))
121
- throw new Error(`worker name "${name}" is reserved`);
122
- const run = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: name ?? await Envelope.mintWorkerName(db, workspaceId, "model"), origin: "model" });
123
- if (run === undefined)
124
- throw new Error("createModelWorker: run insert returned no row");
125
- return run;
121
+ if (name === undefined) {
122
+ return await WorkerName.claimAuto(db, {
123
+ workspaceId,
124
+ prefix: "model",
125
+ origin: "model",
126
+ });
127
+ }
128
+ const worker = await db.envelope_insert_worker.get({
129
+ workspace_id: workspaceId,
130
+ name: WorkerName.assert(name),
131
+ origin: "model",
132
+ });
133
+ if (worker === undefined)
134
+ throw new Error("createModelWorker: worker insert returned no row");
135
+ return worker;
126
136
  }
127
137
  static async ensureModelWorker(db, workspaceId) {
128
- // #371 — ensure means FIND-FIRST (the WS connection's per-workspace cache used to hide the
129
- // insert-only bug; the seam has no connection state, so idempotence lives HERE): reuse the
130
- // workspace's canonical conversation worker — the earliest model-origin root (forks/workers
131
- // inherit origin and are excluded by parent_worker_id). #366 is the explicit fresh-run door.
132
- const existing = await db.envelope_get_model_worker.get({ workspace_id: workspaceId });
133
- if (existing !== undefined)
134
- return existing.id;
135
- const run = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: await Envelope.mintWorkerName(db, workspaceId, "model"), origin: "model" });
136
- if (run === undefined)
137
- throw new Error("ensureModelWorker: run insert returned no row");
138
- return run.id;
138
+ // {§methods-model-worker}: idempotence lives at the seam, not in a client's
139
+ // connection cache. The durable role, not root ordering or a name parse,
140
+ // distinguishes this default from arbitrary fresh conversations.
141
+ const worker = await WorkerName.ensureDefaultConversation(db, {
142
+ workspaceId,
143
+ prefix: "model",
144
+ });
145
+ return worker.id;
139
146
  }
140
- // Self-hosting keystone (§actor-boundary): the workspace's reserved `plurnk` run, where the
141
- // runtime acts as an ordinary actor (doc materialization today; fs/git work
142
- // later). One per workspace, reused; its log is the runtime's own — invisible
143
- // to other workers except through the shared workspace filesystem.
147
+ // Self-hosting keystone ({§actor-boundary-self-hosting}): the workspace's
148
+ // reserved `plurnk` worker. One durable worker per workspace, reused across
149
+ // the ephemeral administrative loops that dispatch ordinary runtime-owned ops.
144
150
  static async ensurePlurnkWorker(db, workspaceId) {
145
151
  const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: "plurnk" });
146
152
  if (existing !== undefined)
147
153
  return existing.id;
148
- const run = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: "plurnk", origin: "plurnk" });
149
- if (run === undefined)
150
- throw new Error("ensurePlurnkWorker: run insert returned no row");
151
- return run.id;
154
+ const worker = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: "plurnk", origin: "plurnk" });
155
+ if (worker === undefined)
156
+ throw new Error("ensurePlurnkWorker: worker insert returned no row");
157
+ return worker.id;
152
158
  }
153
159
  static async listWorkersForWorkspace(db, workspaceId) {
154
160
  return await db.envelope_list_workers_for_workspace.all({ workspace_id: workspaceId });
155
161
  }
156
- // #238 — a workspace's prior user prompts, newest-first, capped. The conversation worker's
157
- // loop seeds (engine_get_loop_prompt is the per-loop read); exposed directly so a
158
- // client seeds up/down history without log archaeology.
162
+ // {§methods-workspace-prompts}: expose root-conversation loop seeds directly,
163
+ // without forcing clients to reconstruct prompt history from log rows.
159
164
  static async listPromptsForWorkspace(db, workspaceId, limit) {
160
165
  const rows = await db.envelope_list_workspace_prompts.all({ workspace_id: workspaceId, limit });
161
166
  return rows.map((r) => r.prompt);
162
167
  }
163
- static async closeClientLoop(db, loopId, status) {
164
- await db.envelope_close_client_loop.run({ status, loop_id: loopId });
168
+ static async closeClientLoop(db, loopId, result) {
169
+ const exact = structuredClone(Results.assert(result));
170
+ if (exact.problem !== undefined && exact.problem.instance === undefined) {
171
+ Results.attachInstance(exact, `loop:///${loopId}`);
172
+ }
173
+ await db.envelope_close_client_loop.run({
174
+ status: LoopLifecycle.projectStatus(exact.status),
175
+ result: JSON.stringify(exact),
176
+ message: exact.problem?.detail ?? null,
177
+ loop_id: loopId,
178
+ });
165
179
  }
166
180
  static async listWorkspaces(db) {
167
181
  return await db.envelope_list_workspaces.all();
168
182
  }
169
183
  // workspace.rename — the workspace name is a mutable handle (vs a worker's immutable
170
- // name, §machine-processes). Mutates workspaces.name only; the UNIQUE constraint is
184
+ // name, {§machine-processes}). Mutates workspaces.name only; the UNIQUE constraint is
171
185
  // the real guard against collision (the handler pre-checks for a clean error).
172
186
  static async updateWorkspaceName(db, workspaceId, name) {
173
187
  const row = await db.envelope_set_workspace_name.get({ id: workspaceId, name });
174
- if (row === undefined)
175
- throw new Error(`workspace ${workspaceId} not found`);
188
+ if (row === undefined) {
189
+ const workspace = await db.envelope_get_workspace.get({ id: workspaceId });
190
+ if (workspace !== undefined) {
191
+ throw envelopeFailure("daemon:workspace", "name-conflict", 409, `Workspace name '${name}' is already in use.`, {
192
+ workspaceId,
193
+ name,
194
+ recovery: "Choose another workspace name.",
195
+ retryable: false,
196
+ });
197
+ }
198
+ throw envelopeFailure("daemon:workspace", "workspace-not-found", 404, `Workspace ${workspaceId} does not exist.`, { workspaceId });
199
+ }
176
200
  return row.name;
177
201
  }
178
202
  }
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}