@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
@@ -0,0 +1,148 @@
1
+ import { assertEditReceipt, assertResourceEffects, } from "../content/index.js";
2
+ const EMPTY_BODY = Object.freeze({
3
+ content: "",
4
+ mimetype: "text/plain",
5
+ startLine: 1,
6
+ });
7
+ // The durable log row has one canonical body regardless of how it is consumed.
8
+ // Packet rendering projects this body, while READ(log://), FIND(log://), and
9
+ // search derivation consume it complete. Storage envelopes and tx/rx placement
10
+ // are persistence details and must not change what the row means.
11
+ export default class LogBody {
12
+ static #decode(value, mimetype) {
13
+ if (typeof value !== "string" || mimetype !== "application/json")
14
+ return value;
15
+ try {
16
+ return JSON.parse(value);
17
+ }
18
+ catch {
19
+ return value;
20
+ }
21
+ }
22
+ static #contentBody(value, fallbackMimetype) {
23
+ if (value === null || typeof value !== "object")
24
+ return null;
25
+ const body = value;
26
+ if (typeof body.content !== "string")
27
+ return null;
28
+ return {
29
+ content: body.content,
30
+ mimetype: typeof body.mimetype === "string" ? body.mimetype : (fallbackMimetype ?? "text/plain"),
31
+ startLine: body.startLine === null ? null : (typeof body.startLine === "number" ? body.startLine : 1),
32
+ };
33
+ }
34
+ static #receiptBody(receipts) {
35
+ // {§edit-result-receipt-projection} — the canonical row body is the
36
+ // bounded landed context, not the authored mutation text.
37
+ if (receipts.length === 0)
38
+ return EMPTY_BODY;
39
+ return {
40
+ content: receipts
41
+ .map((receipt) => "effect" in receipt
42
+ ? receipt.effect.context
43
+ : receipt.replacement?.context ?? "")
44
+ .filter((context) => context.length > 0)
45
+ .join("\n\n"),
46
+ mimetype: "text/plain",
47
+ startLine: null,
48
+ };
49
+ }
50
+ static resolve(row) {
51
+ const tx = LogBody.#decode(row.tx, row.mimetypeTx);
52
+ const rx = LogBody.#decode(row.rx, row.mimetypeRx);
53
+ const contentBody = LogBody.#contentBody(rx, row.mimetypeRx);
54
+ if (row.op === "READ" || row.op === "FIND" || row.op === "model" || row.op === "prompt") {
55
+ return contentBody ?? EMPTY_BODY;
56
+ }
57
+ if (row.op === "EDIT") {
58
+ if (rx !== null && typeof rx === "object") {
59
+ const result = rx;
60
+ if (Object.hasOwn(result, "receipt")) {
61
+ return LogBody.#receiptBody([
62
+ assertEditReceipt(result.receipt),
63
+ ]);
64
+ }
65
+ if (typeof result.span === "string") {
66
+ return {
67
+ content: result.span,
68
+ mimetype: "text/plain",
69
+ startLine: null,
70
+ };
71
+ }
72
+ }
73
+ return EMPTY_BODY;
74
+ }
75
+ if (row.op === "COPY" || row.op === "MOVE") {
76
+ if (rx !== null && typeof rx === "object") {
77
+ const result = rx;
78
+ if (Object.hasOwn(result, "effects")) {
79
+ const receipts = assertResourceEffects(result.effects)
80
+ .flatMap(({ receipt }) => receipt === undefined ? [] : [receipt]);
81
+ return LogBody.#receiptBody(receipts);
82
+ }
83
+ }
84
+ return EMPTY_BODY;
85
+ }
86
+ if (row.op === "EXEC" && tx !== null && typeof tx === "object") {
87
+ const body = tx.body;
88
+ if (typeof body === "string") {
89
+ return {
90
+ content: body,
91
+ mimetype: "text/plain",
92
+ startLine: 1,
93
+ };
94
+ }
95
+ }
96
+ if (row.op === "PLAN" || row.op === "SEND" || row.op === "WORK" || row.op === "FORK") {
97
+ if (tx !== null && typeof tx === "object") {
98
+ const body = tx.body;
99
+ const content = typeof body === "string"
100
+ ? body
101
+ : body !== null && typeof body === "object" && typeof body.raw === "string"
102
+ ? body.raw
103
+ : "";
104
+ if (content.length > 0) {
105
+ return {
106
+ content,
107
+ mimetype: "text/plain",
108
+ startLine: 1,
109
+ };
110
+ }
111
+ }
112
+ if (row.op === "SEND" && typeof rx === "string" && rx.length > 0) {
113
+ return {
114
+ content: rx,
115
+ mimetype: row.mimetypeRx ?? "text/plain",
116
+ startLine: 1,
117
+ };
118
+ }
119
+ }
120
+ if (row.op === "error" && rx !== null && typeof rx === "object") {
121
+ const message = rx.message;
122
+ if (typeof message === "string" && message.length > 0) {
123
+ return {
124
+ content: message,
125
+ mimetype: "text/plain",
126
+ startLine: 1,
127
+ };
128
+ }
129
+ }
130
+ // Extension rows use the same durable result/statement envelopes as
131
+ // built-in operations. Keep the fallback structural so a new producer
132
+ // cannot require a packet-renderer branch merely to expose its body.
133
+ if (contentBody !== null)
134
+ return contentBody;
135
+ if (tx !== null && typeof tx === "object") {
136
+ const body = tx.body;
137
+ if (typeof body === "string" && body.length > 0) {
138
+ return {
139
+ content: body,
140
+ mimetype: row.mimetypeTx ?? "text/plain",
141
+ startLine: 1,
142
+ };
143
+ }
144
+ }
145
+ return EMPTY_BODY;
146
+ }
147
+ }
148
+ //# sourceMappingURL=LogBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogBody.js","sourceRoot":"","sources":["../../src/core/LogBody.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type LoopFlags } from "@plurnk/plurnk-contracts";
2
+ import type { Db } from "./Db.ts";
3
+ export default class LoopFlagsReader {
4
+ static parse(raw: string, loopId: number): LoopFlags;
5
+ static read(db: Db, loopId: number): Promise<LoopFlags>;
6
+ }
7
+ //# sourceMappingURL=LoopFlagsReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopFlagsReader.d.ts","sourceRoot":"","sources":["../../src/core/LoopFlagsReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,SAAS,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAmBnD;IAED,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM5D;CACJ"}
@@ -0,0 +1,33 @@
1
+ import { DEFAULT_LOOP_FLAGS, Validator, } from "@plurnk/plurnk-contracts";
2
+ // {§loop-flags-effective-read} — persistence may contain a partial object, but
3
+ // runtime policy is always the complete contracts-owned shape.
4
+ export default class LoopFlagsReader {
5
+ static parse(raw, loopId) {
6
+ let partial;
7
+ try {
8
+ partial = JSON.parse(raw);
9
+ }
10
+ catch (cause) {
11
+ throw new Error(`Loop ${loopId} has invalid persisted flags JSON.`, { cause });
12
+ }
13
+ if (partial === null || typeof partial !== "object" || Array.isArray(partial)) {
14
+ throw new Error(`Loop ${loopId} has invalid persisted flags.`, {
15
+ cause: new TypeError("Persisted loop flags must be a JSON object."),
16
+ });
17
+ }
18
+ try {
19
+ return Validator.assertLoopFlags({ ...DEFAULT_LOOP_FLAGS, ...partial });
20
+ }
21
+ catch (cause) {
22
+ throw new Error(`Loop ${loopId} has invalid persisted flags.`, { cause });
23
+ }
24
+ }
25
+ static async read(db, loopId) {
26
+ const row = await db.engine_get_loop_flags.get({ loop_id: loopId });
27
+ if (row === undefined) {
28
+ throw new Error(`Loop ${loopId} does not exist while reading its persisted flags.`);
29
+ }
30
+ return LoopFlagsReader.parse(row.flags, loopId);
31
+ }
32
+ }
33
+ //# sourceMappingURL=LoopFlagsReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoopFlagsReader.js","sourceRoot":"","sources":["../../src/core/LoopFlagsReader.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,SAAS,GAEZ,MAAM,0BAA0B,CAAC;AAGlC,+EAA+E;AAC/E,+DAA+D;AAC/D,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,MAAc;QACpC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,+BAA+B,EAAE;gBAC3D,KAAK,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;aACtE,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC;YACD,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,EAAe,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,+BAA+B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAM,EAAE,MAAc;QACpC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,oDAAoD,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CACJ"}
@@ -1,7 +1,9 @@
1
1
  import type { Db } from "./Db.ts";
2
+ import { type SchemeResult } from "./results.ts";
2
3
  export interface CancelledLoop {
3
4
  loopId: number;
4
5
  workerId: number;
6
+ result: SchemeResult;
5
7
  }
6
8
  export interface CancelledTree {
7
9
  workerIds: number[];
@@ -10,10 +12,15 @@ export interface CancelledTree {
10
12
  export default class LoopLifecycle {
11
13
  #private;
12
14
  constructor(db: Db);
15
+ static projectStatus(status: number): number;
13
16
  park(loopId: number, message: string): Promise<boolean>;
14
17
  wake(loopId: number): Promise<boolean>;
15
- finish(loopId: number, status: 200 | 413 | 429 | 499 | 500 | 504 | 508, message: string | null, terminatedBy?: "cancel" | null): Promise<boolean>;
18
+ finish(loopId: number, result: SchemeResult, options?: {
19
+ message?: string | null;
20
+ terminatedBy?: "cancel" | null;
21
+ }): Promise<SchemeResult | null>;
16
22
  status(loopId: number): Promise<number>;
23
+ result(loopId: number): Promise<SchemeResult | null>;
17
24
  turnIds(loopId: number): Promise<number[]>;
18
25
  cancelTree(workerId: number, reason: string, includeRoot: boolean): Promise<CancelledTree>;
19
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LoopLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAG9B,YAAY,EAAE,EAAE,EAAE,EAEjB;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK5D;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI3C;IAEK,MAAM,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAC/C,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,YAAY,GAAE,QAAQ,GAAG,IAAW,GACrC,OAAO,CAAC,OAAO,CAAC,CAOlB;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5C;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAK/C;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB/F;CACJ"}
1
+ {"version":3,"file":"LoopLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAG9B,YAAY,EAAE,EAAE,EAAE,EAEjB;IAMD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3C;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK5D;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI3C;IAEK,MAAM,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAO,GAC1E,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAc9B;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5C;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQzD;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAK/C;IAEK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAoC/F;CACJ"}
@@ -1,8 +1,26 @@
1
+ import Results from "./results.js";
2
+ import ErrorDetail from "./ErrorDetail.js";
1
3
  export default class LoopLifecycle {
2
4
  #db;
3
5
  constructor(db) {
4
6
  this.#db = db;
5
7
  }
8
+ // `loops.status` is the compact scheduler state inherited by the schema;
9
+ // terminal_result is the lossless product result. Preserve the established
10
+ // terminal classes relationally while retaining an exact uncommon status
11
+ // (for example a provider 502) in terminal_result.
12
+ static projectStatus(status) {
13
+ if (status === 202) {
14
+ throw new TypeError("loop terminal result cannot be 202; 202 is the parked lifecycle state");
15
+ }
16
+ if ([200, 413, 429, 499, 500, 504, 508].includes(status))
17
+ return status;
18
+ if (status >= 200 && status <= 399)
19
+ return 200;
20
+ if (status >= 400 && status <= 599)
21
+ return 500;
22
+ throw new TypeError(`loop terminal result must have status 200 through 599; got ${status}`);
23
+ }
6
24
  async park(loopId, message) {
7
25
  return (await this.#db.lifecycle_park_loop.get({
8
26
  loop_id: loopId,
@@ -14,13 +32,21 @@ export default class LoopLifecycle {
14
32
  loop_id: loopId,
15
33
  })) !== undefined;
16
34
  }
17
- async finish(loopId, status, message, terminatedBy = null) {
18
- return (await this.#db.lifecycle_finish_loop.get({
35
+ async finish(loopId, result, options = {}) {
36
+ const exact = structuredClone(Results.assert(result));
37
+ if (exact.problem !== undefined && exact.problem.instance === undefined) {
38
+ Results.attachInstance(exact, `loop:///${loopId}`);
39
+ }
40
+ const row = await this.#db.lifecycle_finish_loop.get({
19
41
  loop_id: loopId,
20
- status,
21
- message,
22
- terminated_by: terminatedBy,
23
- })) !== undefined;
42
+ status: LoopLifecycle.projectStatus(exact.status),
43
+ message: exact.problem?.detail ?? options.message ?? null,
44
+ result: JSON.stringify(exact),
45
+ terminated_by: options.terminatedBy ?? null,
46
+ });
47
+ if (row === undefined)
48
+ return null;
49
+ return Results.assert(JSON.parse(row.terminal_result));
24
50
  }
25
51
  async status(loopId) {
26
52
  const row = await this.#db.lifecycle_loop_status.get({
@@ -30,6 +56,16 @@ export default class LoopLifecycle {
30
56
  throw new Error(`loop ${loopId} does not exist`);
31
57
  return row.status;
32
58
  }
59
+ async result(loopId) {
60
+ const row = await this.#db.lifecycle_loop_status.get({
61
+ loop_id: loopId,
62
+ });
63
+ if (row === undefined)
64
+ throw new Error(`loop ${loopId} does not exist`);
65
+ return row.terminal_result === null
66
+ ? null
67
+ : Results.assert(JSON.parse(row.terminal_result));
68
+ }
33
69
  async turnIds(loopId) {
34
70
  const rows = await this.#db.lifecycle_loop_turns.all({
35
71
  loop_id: loopId,
@@ -37,19 +73,29 @@ export default class LoopLifecycle {
37
73
  return rows.map(({ id }) => id);
38
74
  }
39
75
  async cancelTree(workerId, reason, includeRoot) {
76
+ const boundedReason = ErrorDetail.preview(reason) || "no reason was supplied";
40
77
  const params = {
41
78
  worker_id: workerId,
42
79
  include_root: includeRoot ? 1 : 0,
43
- message: reason.slice(0, 500),
80
+ message: boundedReason,
44
81
  };
45
82
  const workers = await this.#db.lifecycle_worker_tree.all({
46
83
  worker_id: params.worker_id,
47
84
  include_root: params.include_root,
48
85
  });
49
- const loops = await this.#db.lifecycle_cancel_worker_tree.all(params);
86
+ const cancellation = Results.failure("lifecycle:cancel", "scope-cancelled", 499, `The worker scope was cancelled: ${boundedReason}.`, {}, {
87
+ reason: boundedReason,
88
+ stage: "loop",
89
+ retryable: false,
90
+ });
91
+ const loops = await this.#db.lifecycle_cancel_worker_tree.all({ ...params, result: JSON.stringify(cancellation) });
50
92
  return {
51
93
  workerIds: workers.map(({ worker_id }) => worker_id),
52
- loops: loops.map(({ loop_id, worker_id }) => ({ loopId: loop_id, workerId: worker_id })),
94
+ loops: loops.map(({ loop_id, worker_id, terminal_result }) => ({
95
+ loopId: loop_id,
96
+ workerId: worker_id,
97
+ result: Results.assert(JSON.parse(terminal_result)),
98
+ })),
53
99
  };
54
100
  }
55
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,GAAG,CAAK;IAER,YAAY,EAAM;QACd,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAe;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAiB;YAC3D,OAAO,EAAE,MAAM;YACf,OAAO;SACV,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACrB,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAiB;YAC3D,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CACR,MAAc,EACd,MAA+C,EAC/C,OAAsB,EACtB,YAAY,GAAoB,IAAI;QAEpC,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAiB;YAC7D,OAAO,EAAE,MAAM;YACf,MAAM;YACN,OAAO;YACP,aAAa,EAAE,YAAY;SAC9B,CAAC,CAAC,KAAK,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAqB;YACrE,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAiB;YACjE,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,WAAoB;QACnE,MAAM,MAAM,GAAG;YACX,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SAChC,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAwB;YAC5E,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAG1D,MAAM,CAAC,CAAC;QACX,OAAO;YACH,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC;YACpD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3F,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"LoopLifecycle.js","sourceRoot":"","sources":["../../src/core/LoopLifecycle.ts"],"names":[],"mappings":"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"}
@@ -18,12 +18,13 @@ RETURNING id;
18
18
  UPDATE loops
19
19
  SET status = $status,
20
20
  terminal_message = $message,
21
+ terminal_result = $result,
21
22
  terminated_by = $terminated_by
22
23
  WHERE id = $loop_id AND status IN (100, 102, 202)
23
- RETURNING id;
24
+ RETURNING terminal_result;
24
25
 
25
26
  -- PREP: lifecycle_loop_status
26
- SELECT status FROM loops WHERE id = $loop_id;
27
+ SELECT status, terminal_result FROM loops WHERE id = $loop_id;
27
28
 
28
29
  -- PREP: lifecycle_loop_turns
29
30
  SELECT id FROM turns WHERE loop_id = $loop_id ORDER BY sequence, id;
@@ -52,9 +53,14 @@ WITH RECURSIVE tree(id) AS (
52
53
  UPDATE loops
53
54
  SET status = 499,
54
55
  terminal_message = $message,
56
+ terminal_result = json_set(
57
+ $result,
58
+ '$.problem.instance',
59
+ 'loop:///' || id
60
+ ),
55
61
  terminated_by = 'cancel'
56
62
  WHERE worker_id IN (
57
63
  SELECT id FROM tree WHERE $include_root = 1 OR id <> $worker_id
58
64
  )
59
65
  AND status IN (100, 102, 202)
60
- RETURNING id AS loop_id, worker_id;
66
+ RETURNING id AS loop_id, worker_id, terminal_result;
@@ -0,0 +1,13 @@
1
+ import { type Notice } from "@plurnk/plurnk-contracts";
2
+ import type { NoticeNotify } from "./ChannelWrite.ts";
3
+ export default class NoticeChannel {
4
+ #private;
5
+ constructor({ notify }?: {
6
+ notify?: NoticeNotify;
7
+ });
8
+ push(workspaceId: number, loopId: number, notice: Notice): void;
9
+ notify(workspaceId: number, loopId: number, notice: Notice): void;
10
+ drain(loopId: number): Notice[];
11
+ delete(loopId: number): void;
12
+ }
13
+ //# sourceMappingURL=NoticeChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoticeChannel.d.ts","sourceRoot":"","sources":["../../src/core/NoticeChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAI9B,YAAY,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,YAAY,CAAA;KAAO,EAErD;IAED,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM9D;IAID,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGhE;IAGD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK9B;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3B;CAKJ"}
@@ -0,0 +1,40 @@
1
+ import { Validator } from "@plurnk/plurnk-contracts";
2
+ // The transient notice channel. Durable operation failures live in log_entries as
3
+ // RFC 9457 Problem Details; this buffer carries progress and diagnostic events only.
4
+ export default class NoticeChannel {
5
+ #buffer = new Map();
6
+ #notify;
7
+ constructor({ notify } = {}) {
8
+ this.#notify = notify;
9
+ }
10
+ push(workspaceId, loopId, notice) {
11
+ NoticeChannel.#assert(notice);
12
+ const existing = this.#buffer.get(loopId);
13
+ if (existing === undefined)
14
+ this.#buffer.set(loopId, [notice]);
15
+ else
16
+ existing.push(notice);
17
+ this.#notify?.(workspaceId, { loopId, notice });
18
+ }
19
+ // Live fan-out ONLY, never buffered — for work with no loop to drain the
20
+ // buffer (e.g. workspace-scope derivation warming, loopId 0).
21
+ notify(workspaceId, loopId, notice) {
22
+ NoticeChannel.#assert(notice);
23
+ this.#notify?.(workspaceId, { loopId, notice });
24
+ }
25
+ // Each observation surfaces in one model packet.
26
+ drain(loopId) {
27
+ const buf = this.#buffer.get(loopId);
28
+ if (buf === undefined)
29
+ return [];
30
+ this.#buffer.delete(loopId);
31
+ return buf;
32
+ }
33
+ delete(loopId) {
34
+ this.#buffer.delete(loopId);
35
+ }
36
+ static #assert(notice) {
37
+ Validator.assertNotice(notice);
38
+ }
39
+ }
40
+ //# sourceMappingURL=NoticeChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoticeChannel.js","sourceRoot":"","sources":["../../src/core/NoticeChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,0BAA0B,CAAC;AAGlE,kFAAkF;AAClF,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtC,OAAO,CAA2B;IAElC,YAAY,EAAE,MAAM,EAAE,GAA8B,EAAE;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;QACpD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;;YAC1D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,yEAAyE;IACzE,8DAA8D;IAC9D,MAAM,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;QACtD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,MAAc;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAc;QACzB,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CACJ"}
@@ -1,7 +1,6 @@
1
1
  import type { Db } from "./Db.ts";
2
2
  import type { PlurnkSchemeContext } from "./scheme-types.ts";
3
3
  export default class Owner {
4
- static readonly RESERVED: Readonly<Set<string>>;
5
4
  static commonsId(db: Db, workspaceId: number): Promise<number>;
6
5
  static kernelId(db: Db, workspaceId: number): Promise<number>;
7
6
  static resolveStreamOwner(hostname: string | null | undefined, ctx: PlurnkSchemeContext): Promise<number | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAO7D,MAAM,CAAC,OAAO,OAAO,KAAK;IAGtB,MAAM,CAAC,QAAQ,CAAC,QAAQ,wBAA8D;IAKtF,OAAa,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMnE;IAGD,OAAa,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;IAOD,OAAa,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOrH;CACJ"}
1
+ {"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAO7D,MAAM,CAAC,OAAO,OAAO,KAAK;IAItB,OAAa,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMnE;IAGD,OAAa,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;IAOD,OAAa,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOrH;CACJ"}
@@ -1,12 +1,9 @@
1
- // #527 {§entry-owner} — entry ownership. Every entry is owned by a worker row: the workspace's
1
+ // {§entry-owner} — every entry is owned by a worker row: the workspace's
2
2
  // reserved 'commons' worker for shared content, the spawning worker for capability streams. The
3
3
  // owner id is a storage foreign key that NEVER renders into a URI or packet; the model addresses
4
4
  // owners by NAME in the authority slot, and an empty authority resolves to the ambient principal
5
5
  // (the caller on streams). 'plurnk' (the kernel) and 'commons' are the two reserved rows.
6
6
  export default class Owner {
7
- // Names no client- or model-supplied worker may take: the two reserved rows plus the
8
- // self-sigil the #527 wave gives worker:// (reserving it now keeps the namespace clean).
9
- static RESERVED = Object.freeze(new Set(["commons", "plurnk", "~", "self"])); // 'self' joins per grammar's canon — a worker named self would impersonate the ~ idiom
10
7
  // The workspace's reserved commons worker — lazily ensured, one per workspace. A real row
11
8
  // (never a NULL owner: NULLs are distinct under UNIQUE, so a nullable owner_id would let
12
9
  // the shared-content identity fragment into duplicate colliding rows).
@@ -19,7 +16,7 @@ export default class Owner {
19
16
  throw new Error("Owner.commonsId: commons worker insert returned no row");
20
17
  return created.id;
21
18
  }
22
- // The reserved kernel row — worker://plurnk/, the runtime's own actor (§actor-boundary).
19
+ // The reserved kernel row — worker://plurnk/, the runtime's own actor ({§actor-boundary}).
23
20
  static async kernelId(db, workspaceId) {
24
21
  const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: "plurnk" });
25
22
  if (existing !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"Owner.js","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAGA,+FAA+F;AAC/F,gGAAgG;AAChG,iGAAiG;AACjG,iGAAiG;AACjG,0FAA0F;AAC1F,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,qFAAqF;IACrF,yFAAyF;IACzF,MAAM,CAAU,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,uFAAuF;IAE9K,0FAA0F;IAC1F,yFAAyF;IACzF,uEAAuE;IACvE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAM,EAAE,WAAmB;QAC9C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1H,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACrG,OAAO,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,yFAAyF;IACzF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAM,EAAE,WAAmB;QAC7C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrI,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACnG,OAAO,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,yFAAyF;IACzF,2FAA2F;IAC3F,wFAAwF;IACxF,yFAAyF;IACzF,kCAAkC;IAClC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAmC,EAAE,GAAwB;QACzF,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACxF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAwB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrI,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,CAAC;CACJ"}
1
+ {"version":3,"file":"Owner.js","sourceRoot":"","sources":["../../src/core/Owner.ts"],"names":[],"mappings":"AAGA,yEAAyE;AACzE,gGAAgG;AAChG,iGAAiG;AACjG,iGAAiG;AACjG,0FAA0F;AAC1F,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,0FAA0F;IAC1F,yFAAyF;IACzF,uEAAuE;IACvE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAM,EAAE,WAAmB;QAC9C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1H,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACrG,OAAO,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,2FAA2F;IAC3F,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAM,EAAE,WAAmB;QAC7C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrI,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACnG,OAAO,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,yFAAyF;IACzF,2FAA2F;IAC3F,wFAAwF;IACxF,yFAAyF;IACzF,kCAAkC;IAClC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAmC,EAAE,GAAwB;QACzF,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;QACxF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAwB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrI,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,CAAC;CACJ"}
@@ -1,37 +1,35 @@
1
- import type { PlurnkStatement } from "@plurnk/plurnk-grammar";
1
+ import type { Notice } from "@plurnk/plurnk-contracts";
2
2
  import type { Db } from "./Db.ts";
3
3
  import type SchemeRegistry from "./SchemeRegistry.ts";
4
4
  import type ExecutorRegistry from "./ExecutorRegistry.ts";
5
- import type TelemetryChannel from "./TelemetryChannel.ts";
5
+ import type ProblemLog from "./ProblemLog.ts";
6
6
  import type { GitStatus } from "./git-state.ts";
7
- import { type PacketSection } from "./packet-wire.ts";
8
- import type { Provider } from "@plurnk/plurnk-providers";
9
- export type ChatMessage = {
10
- role: "system" | "user" | "assistant";
11
- content: string;
12
- };
13
- export type PacketAssistant = {
14
- content: string;
15
- ops: PlurnkStatement[];
16
- reasoning: string | null;
17
- };
18
- export type RequestPacket = {
19
- tokens: number;
20
- sections: PacketSection[];
21
- telemetryErrors: object[];
7
+ import type { RequestPacket } from "./StoredPacket.ts";
8
+ import type { ChatMessage, PromptTokenMeasurement, Provider } from "@plurnk/plurnk-providers";
9
+ export type { ChatMessage } from "@plurnk/plurnk-providers";
10
+ export type PhysicalPromptAdmission = {
11
+ readonly admitted: true;
12
+ readonly capacity: number;
13
+ readonly measurement: PromptTokenMeasurement;
14
+ } | {
15
+ readonly admitted: false;
16
+ readonly reason: "unknown_context_window" | "unknown_output_envelope" | "estimate" | "over_capacity";
17
+ readonly detail: string;
18
+ readonly capacity: number | null;
19
+ readonly measurement?: PromptTokenMeasurement;
22
20
  };
23
21
  export default class PacketBuilder {
24
22
  #private;
25
- constructor({ db, schemes, telemetry, executors }: {
23
+ constructor({ db, schemes, problems, executors }: {
26
24
  db: Db;
27
25
  schemes: SchemeRegistry;
28
- telemetry: TelemetryChannel;
26
+ problems: ProblemLog;
29
27
  executors: () => ExecutorRegistry | undefined;
30
28
  });
31
29
  maxTokensFor(provider: Provider): number | null;
32
30
  promptBudgetFor(provider: Provider): number | null;
33
31
  ceilingFor(provider: Provider): number | null;
34
- buildRequestPacket({ initialMessages, requirements, workspaceId, workerId, loopId, currentTurnSeq, provider, gitStatus, telemetryErrors: presetTelemetry, }: {
32
+ buildRequestPacket({ initialMessages, requirements, workspaceId, workerId, loopId, currentTurnSeq, provider, gitStatus, notices, }: {
35
33
  initialMessages: ChatMessage[];
36
34
  requirements: string;
37
35
  gitStatus: GitStatus | null;
@@ -40,7 +38,7 @@ export default class PacketBuilder {
40
38
  loopId: number;
41
39
  currentTurnSeq: number;
42
40
  provider: Provider;
43
- telemetryErrors?: object[];
41
+ notices?: readonly Notice[];
44
42
  }): Promise<RequestPacket>;
45
43
  docEntries(workspaceId: number): Promise<Array<{
46
44
  name: string;
@@ -58,9 +56,12 @@ export default class PacketBuilder {
58
56
  packet: RequestPacket;
59
57
  fit: boolean;
60
58
  struck: boolean;
59
+ recorded: boolean;
61
60
  }>;
62
- exactPacketTokens(packet: RequestPacket, provider: Provider): number;
63
- completePacket(requestPacket: RequestPacket, assistant: PacketAssistant, assistantRaw: unknown, provider: Provider): object;
64
- buildTelemetryErrors(loopId: number, currentTurnSeq: number): Promise<object[]>;
61
+ physicalAdmission(packet: RequestPacket, provider: Provider, signal?: AbortSignal): Promise<PhysicalPromptAdmission>;
62
+ buildFailurePointers(loopId: number, currentTurnSeq: number): Promise<Array<{
63
+ status: number;
64
+ coordinate: string;
65
+ }>>;
65
66
  }
66
67
  //# sourceMappingURL=PacketBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/PacketBuilder.ts"],"names":[],"mappings":"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"}