@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,326 @@
1
+ // Search-index materialization for every readable workspace body. Entries
2
+ // and logs attach to the same immutable, content-addressed derivation artifacts;
3
+ // FTS, vectors, and graph relationships consume those artifacts uniformly.
4
+ import { isMimetypeInputError } from "@plurnk/plurnk-mimetypes";
5
+ import { createHash } from "node:crypto";
6
+ import { availableParallelism } from "node:os";
7
+ import EntryGraph from "./_entry-graph.js";
8
+ import EntrySemantic from "./_entry-semantic.js";
9
+ import LogBody from "../core/LogBody.js";
10
+ import matchSearchExclusion from "./_search-exclusion.js";
11
+ const NO_PROJECTION_IDENTITY = "projection:none";
12
+ export default class SearchIndex {
13
+ // The index materializes one immutable artifact per exact READ body and
14
+ // configuration identity, then atomically attaches resource addresses to it.
15
+ // Cancellation leaves a building artifact unattached for retry; a typed
16
+ // invalid-source failure is terminal and observable so
17
+ // one malformed specimen cannot hold workspace readiness hostage.
18
+ // Hash-keyed chains serialize concurrent workspace warm requests for the same
19
+ // artifact while distinct artifacts remain parallel.
20
+ static #deriveChains = new Map();
21
+ static async #deriveOne(ctx, r, hash, semanticPlan, searchExcluded, binary, callbacks = {}) {
22
+ const prior = SearchIndex.#deriveChains.get(hash) ?? Promise.resolve();
23
+ const run = prior.then(() => SearchIndex.#deriveOneUnlocked(ctx, r, hash, semanticPlan, searchExcluded, binary, callbacks));
24
+ const tail = run.catch(() => { }); // the chain survives a failed link; deriveOne's caller sees the rejection
25
+ SearchIndex.#deriveChains.set(hash, tail);
26
+ void tail.finally(() => {
27
+ if (SearchIndex.#deriveChains.get(hash) === tail)
28
+ SearchIndex.#deriveChains.delete(hash);
29
+ });
30
+ return run;
31
+ }
32
+ static async #deriveOneUnlocked(ctx, r, hash, semanticPlan, searchExcluded, binary, callbacks) {
33
+ const { db, mimetypes } = ctx;
34
+ if (mimetypes === undefined)
35
+ throw new Error("deriveOne: ctx.mimetypes is required");
36
+ const attach = async () => {
37
+ if (r.attachment === "entry") {
38
+ await db.graph_set_deep_hash.run({ entry_id: r.id, deep_hash: hash });
39
+ }
40
+ else {
41
+ await db.log_set_deep_hash.run({ log_entry_id: r.id, deep_hash: hash });
42
+ }
43
+ };
44
+ let artifact = await db.derivation_get.get({ deep_hash: hash });
45
+ if (artifact?.state === "complete") {
46
+ await attach();
47
+ return;
48
+ }
49
+ if (artifact === undefined) {
50
+ artifact = await db.derivation_create.get({ deep_hash: hash });
51
+ }
52
+ if (artifact === undefined)
53
+ throw new Error(`failed to create derivation artifact ${hash}`);
54
+ const derivationId = artifact.id;
55
+ const attachComplete = async (disposition, reason = null) => {
56
+ await db.derivation_complete.run({ derivation_id: derivationId, disposition, reason });
57
+ await attach();
58
+ };
59
+ const wantGraph = r.content.length > 0 && !binary;
60
+ if (searchExcluded !== undefined) {
61
+ await EntryGraph.populateFrom(db, derivationId, [], []);
62
+ await EntrySemantic.indexFts(db, derivationId, "");
63
+ await EntrySemantic.indexEmbedding(db, derivationId, [], undefined);
64
+ await attachComplete("excluded", searchExcluded);
65
+ return;
66
+ }
67
+ if (!wantGraph) {
68
+ await EntryGraph.populateFrom(db, derivationId, [], []);
69
+ await EntrySemantic.indexFts(db, derivationId, "");
70
+ await EntrySemantic.indexEmbedding(db, derivationId, [], undefined);
71
+ await attachComplete("nonsemantic", r.content.length === 0 ? "empty" : "binary");
72
+ return;
73
+ }
74
+ let result;
75
+ try {
76
+ result = await mimetypes.process({ content: r.content, hint: r.mimetype, path: r.pathname }, { channels: ["symbols", "references"] });
77
+ }
78
+ catch (error) {
79
+ if (ctx.signal?.aborted === true || !isMimetypeInputError(error))
80
+ throw error;
81
+ await EntryGraph.populateFrom(db, derivationId, [], []);
82
+ await EntrySemantic.indexFts(db, derivationId, "");
83
+ await EntrySemantic.indexEmbedding(db, derivationId, [], undefined);
84
+ await attachComplete("failed", error instanceof Error ? error.message : String(error));
85
+ return;
86
+ }
87
+ for (const notice of result.notices ?? [])
88
+ callbacks.onNotice?.(notice);
89
+ // Persistence and embedding operations are outside typed input-failure
90
+ // containment. An internal/operational failure leaves the artifact
91
+ // building and propagates so a later warm can retry; it is never
92
+ // mislabeled as one malformed resource.
93
+ await EntryGraph.populateFrom(db, derivationId, result.symbols ?? [], result.references ?? []);
94
+ // The stored default body is the exact text READ exposes and therefore the
95
+ // only honest coordinate space for FTS and vectors. Acquisition schemes
96
+ // project noisy source material before writing that body (HTTP retains raw
97
+ // HTML in an auxiliary channel); authored files remain verbatim data.
98
+ const semanticSource = r.content;
99
+ await EntrySemantic.indexFts(db, derivationId, semanticSource);
100
+ // Size rejection is vector-only: membership, READ, graph, and FTS remain exhaustive.
101
+ if (EntrySemantic.embedSizeRejection(semanticSource) !== null) {
102
+ await EntrySemantic.indexEmbedding(db, derivationId, [], undefined);
103
+ await attachComplete("lexical", "max_embed_size");
104
+ return;
105
+ }
106
+ if (semanticPlan.info === null) {
107
+ await EntrySemantic.indexEmbedding(db, derivationId, [], undefined);
108
+ await attachComplete("lexical", "embedder_unavailable");
109
+ return;
110
+ }
111
+ const { chunks, model } = await EntrySemantic.deriveEmbeddings(semanticPlan, semanticSource, result.symbols ?? [], undefined, undefined, ctx.signal, callbacks.onProgress);
112
+ await EntrySemantic.indexEmbedding(db, derivationId, chunks, model);
113
+ await attachComplete(chunks.length > 0 ? "vector" : "nonsemantic", chunks.length > 0 ? null : "no_embedding_content");
114
+ }
115
+ static async maintain(ctx) {
116
+ const { db, workspaceId, mimetypes } = ctx;
117
+ if (mimetypes === undefined)
118
+ throw new Error("SearchIndex.maintain: ctx.mimetypes is required");
119
+ const progressSteps = Number(process.env.PLURNK_SERVICE_DERIVE_PROGRESS_STEPS);
120
+ if (!Number.isInteger(progressSteps) || progressSteps <= 0) {
121
+ throw new RangeError(`PLURNK_SERVICE_DERIVE_PROGRESS_STEPS must be a positive integer; got ${JSON.stringify(process.env.PLURNK_SERVICE_DERIVE_PROGRESS_STEPS)}`);
122
+ }
123
+ const progressHeartbeatMs = Number(process.env.PLURNK_SERVICE_DERIVE_PROGRESS_HEARTBEAT_MS);
124
+ if (!Number.isInteger(progressHeartbeatMs) || progressHeartbeatMs <= 0) {
125
+ throw new RangeError(`PLURNK_SERVICE_DERIVE_PROGRESS_HEARTBEAT_MS must be a positive integer; got ${JSON.stringify(process.env.PLURNK_SERVICE_DERIVE_PROGRESS_HEARTBEAT_MS)}`);
126
+ }
127
+ // Validate global graph persistence tuning before resource-local
128
+ // derivation containment can classify a handler failure.
129
+ EntryGraph.storeBatch();
130
+ const entryRows = await db.engine_list_workspace_entries.all({ workspace_id: workspaceId });
131
+ const logRows = await db.log_derivation_rows.all({ workspace_id: workspaceId });
132
+ // One resolved plan supplies both chunking and the configuration identity
133
+ // for every entry in this pass ({§semantic-embed-dedup}).
134
+ const semanticPlan = await EntrySemantic.prepareEmbeddings(mimetypes);
135
+ const deepCfgSig = semanticPlan.signature;
136
+ const projectionIdentities = new Map();
137
+ const projectionIdentityFor = (mimetype, content, binary, searchExcluded) => {
138
+ if (searchExcluded !== undefined || content.length === 0 || binary) {
139
+ return Promise.resolve(NO_PROJECTION_IDENTITY);
140
+ }
141
+ const cached = projectionIdentities.get(mimetype);
142
+ if (cached !== undefined)
143
+ return cached;
144
+ const identity = mimetypes.projectionIdentity(mimetype);
145
+ projectionIdentities.set(mimetype, identity);
146
+ return identity;
147
+ };
148
+ // No embedder (absent OR PLURNK_SERVICE_EMBED_DISABLE) is represented by
149
+ // the same plan and `embed:none` signature; derivation keeps only graph/FTS.
150
+ // Compute the changed-resource worklist before scheduling so aggregate
151
+ // progress has a stable total. {§derivation-dedup-parallel}
152
+ const pending = [];
153
+ for (const r of entryRows) {
154
+ if (r.channel !== "body")
155
+ continue; // derivation fires on the body channel only
156
+ const searchExcluded = matchSearchExclusion(r);
157
+ const dispositionIdentity = searchExcluded === undefined ? "included" : `excluded:${searchExcluded}`;
158
+ const binary = (await mimetypes.classify(r.mimetype)).binary;
159
+ const projectionIdentity = await projectionIdentityFor(r.mimetype, r.content, binary, searchExcluded);
160
+ const hash = derivationHash({
161
+ content: r.content,
162
+ mimetype: r.mimetype,
163
+ binary,
164
+ projectionIdentity,
165
+ semanticIdentity: deepCfgSig,
166
+ dispositionIdentity,
167
+ });
168
+ if (hash !== r.deep_hash)
169
+ pending.push({
170
+ r: {
171
+ id: r.entry_id,
172
+ attachment: "entry",
173
+ pathname: r.pathname,
174
+ content: r.content,
175
+ mimetype: r.mimetype,
176
+ },
177
+ hash,
178
+ searchExcluded,
179
+ binary,
180
+ }); // unchanged since last derivation → deep rows persist
181
+ }
182
+ for (const row of logRows) {
183
+ const projection = LogBody.resolve({
184
+ op: row.op,
185
+ tx: row.tx,
186
+ rx: row.rx,
187
+ mimetypeTx: row.mimetype_tx,
188
+ mimetypeRx: row.mimetype_rx,
189
+ });
190
+ const binary = (await mimetypes.classify(projection.mimetype)).binary;
191
+ const projectionIdentity = await projectionIdentityFor(projection.mimetype, projection.content, binary, undefined);
192
+ const hash = derivationHash({
193
+ content: projection.content,
194
+ mimetype: projection.mimetype,
195
+ binary,
196
+ projectionIdentity,
197
+ semanticIdentity: deepCfgSig,
198
+ dispositionIdentity: "included",
199
+ });
200
+ if (hash !== row.deep_hash)
201
+ pending.push({
202
+ r: {
203
+ id: row.id,
204
+ attachment: "log",
205
+ pathname: row.coordinate,
206
+ content: projection.content,
207
+ mimetype: projection.mimetype,
208
+ },
209
+ hash,
210
+ searchExcluded: undefined,
211
+ binary,
212
+ });
213
+ }
214
+ const hasVectorCandidate = semanticPlan.info !== null && pending.some(({ r, searchExcluded, binary }) => searchExcluded === undefined
215
+ && r.content.length > 0
216
+ && !binary
217
+ && EntrySemantic.embedSizeRejection(r.content) === null);
218
+ if (hasVectorCandidate)
219
+ EntrySemantic.assertExactChunking(semanticPlan, ctx.pushNotice);
220
+ // {§derivation-dedup-parallel} — warm smaller projections before an
221
+ // expensive outlier; ordering never changes exhaustive derivation.
222
+ pending.sort((a, b) => a.r.content.length - b.r.content.length);
223
+ const total = pending.length;
224
+ const step = total > 1 ? Math.max(1, Math.floor(total / progressSteps)) : 0;
225
+ let completed = 0;
226
+ const projectionNotices = new Set();
227
+ const forwardProjectionNotice = (notice) => {
228
+ const key = JSON.stringify(notice);
229
+ if (projectionNotices.has(key))
230
+ return;
231
+ projectionNotices.add(key);
232
+ ctx.pushNotice?.(notice);
233
+ };
234
+ const tick = () => {
235
+ completed++;
236
+ if (step > 0 && (completed === total || completed % step === 0)) {
237
+ const percent = Math.floor((completed / total) * 100);
238
+ ctx.pushNotice?.({ source: "engine:derivation", kind: "embed_progress", message: `Indexing repository semantics: ${percent}% (${completed}/${total})`, completed, total, percent, level: "info" });
239
+ }
240
+ };
241
+ // Each derivation identity builds one shared artifact while distinct
242
+ // artifacts run with bounded concurrency. {§derivation-dedup-parallel}
243
+ const groups = new Map();
244
+ for (const p of pending) {
245
+ const g = groups.get(p.hash);
246
+ if (g === undefined)
247
+ groups.set(p.hash, [p]);
248
+ else
249
+ g.push(p);
250
+ }
251
+ const rawConcurrency = process.env.PLURNK_SERVICE_DERIVE_CONCURRENCY;
252
+ const cores = availableParallelism();
253
+ const configuredConcurrency = rawConcurrency === undefined || rawConcurrency.trim() === ""
254
+ // Entry derivation is a producer tier above the all-core embedding pool.
255
+ // A square-root fan-out keeps that pool fed without simultaneously
256
+ // materializing one enormous symbol/chunk graph per host core.
257
+ ? Math.max(1, Math.floor(Math.sqrt(cores)))
258
+ : Number(rawConcurrency);
259
+ if (!Number.isInteger(configuredConcurrency) || configuredConcurrency === 0 || configuredConcurrency < -1) {
260
+ throw new RangeError(`PLURNK_SERVICE_DERIVE_CONCURRENCY must be -1 (match cores) or a positive integer; got ${JSON.stringify(rawConcurrency)}`);
261
+ }
262
+ const concurrency = configuredConcurrency === -1 ? availableParallelism() : configuredConcurrency;
263
+ let lastHeartbeatAt = 0;
264
+ const workerPool = async (work) => {
265
+ let next = 0;
266
+ const worker = async () => {
267
+ while (next < work.length) {
268
+ if (ctx.signal?.aborted === true)
269
+ return;
270
+ const group = work[next++];
271
+ for (const { r, hash, searchExcluded, binary } of group) {
272
+ if (Boolean(ctx.signal?.aborted))
273
+ return;
274
+ await SearchIndex.#deriveOne(ctx, r, hash, semanticPlan, searchExcluded, binary, {
275
+ onNotice: forwardProjectionNotice,
276
+ onProgress: (progress) => {
277
+ if (step === 0 || progress.total <= 1)
278
+ return;
279
+ const milestone = progress.completed === progress.total
280
+ || progress.completed % Math.max(1, Math.floor(progress.total / progressSteps)) === 0;
281
+ if (!milestone)
282
+ return;
283
+ const now = Date.now();
284
+ if (now - lastHeartbeatAt < progressHeartbeatMs)
285
+ return;
286
+ lastHeartbeatAt = now;
287
+ const percent = Math.floor((completed / total) * 100);
288
+ ctx.pushNotice?.({
289
+ source: "engine:derivation",
290
+ kind: "embed_progress",
291
+ message: `Indexing repository semantics: ${percent}% (${completed}/${total})`,
292
+ completed,
293
+ total,
294
+ percent,
295
+ phase: progress.phase,
296
+ level: "info",
297
+ });
298
+ },
299
+ });
300
+ tick();
301
+ }
302
+ }
303
+ };
304
+ await Promise.all(Array.from({ length: Math.min(concurrency, work.length || 1) }, () => worker()));
305
+ };
306
+ // Each group stays on one worker: its representative completes the artifact, then every
307
+ // sibling attaches that same immutable result.
308
+ await workerPool([...groups.values()]);
309
+ }
310
+ }
311
+ function derivationHash(input) {
312
+ return createHash("sha256")
313
+ .update(input.content)
314
+ .update("\0")
315
+ .update(input.mimetype)
316
+ .update("\0")
317
+ .update(input.binary ? "binary" : "text")
318
+ .update("\0")
319
+ .update(input.projectionIdentity)
320
+ .update("\0")
321
+ .update(input.semanticIdentity)
322
+ .update("\0")
323
+ .update(input.dispositionIdentity)
324
+ .digest("hex");
325
+ }
326
+ //# sourceMappingURL=_search-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_search-index.js","sourceRoot":"","sources":["../../src/schemes/_search-index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // SqlRite function module (#186, ~semantic). The sqlrite contract requires a
1
+ // SqlRite function module for ~semantic ({§relation-indexed-dialects}). The sqlrite contract requires a
2
2
  // default-export handler and turns the filename into the SQL function name — so
3
3
  // this is a thin registration adapter; the logic lives in EntrySemantic.cosine
4
4
  // (OO). `deterministic` marks it a pure function so SQLite may optimize it. One
@@ -1 +1 @@
1
- {"version":3,"file":"cosine.js","sourceRoot":"","sources":["../../src/schemes/cosine.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,eAAe,CAAC,CAAa,EAAE,CAAa,EAAU,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cosine.js","sourceRoot":"","sources":["../../src/schemes/cosine.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,eAAe,CAAC,CAAa,EAAE,CAAa,EAAU,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -1,16 +1,16 @@
1
1
  // The abort-reason protocol @plurnk/plurnk-execs' SubprocessExecutor reads off `signal.reason`:
2
2
  // { signal } → deliver exactly that Unix signal, once, no escalation.
3
- // { housekeeping: true, graceMs } → loop/run teardown: the polite signal, then SIGKILL after graceMs.
3
+ // { housekeeping: true, graceMs } → loop/worker teardown: the polite signal, then SIGKILL after graceMs.
4
4
  // A { signal: null } reason (a bare KILL) carries no override, so the executor applies its own
5
5
  // polite default, SIGHUP — the gentlest rung; the model escalates with explicit codes.
6
6
  export default class ExecAbort {
7
7
  // The grace a teardown straggler gets before the hard SIGKILL. The executor refuses to bake a
8
8
  // number (it'd be a magic literal there); the consumer owns it — env-tunable, 2s default. A
9
- // getter, not a static field, so a test can set the env at runtime. §worker-lifecycle-total-reap
9
+ // getter, not a static field, so a test can set the env at runtime. {§worker-lifecycle-total-reap}
10
10
  static get graceMs() {
11
11
  return Number(process.env.PLURNK_SERVICE_EXEC_KILL_GRACE_MS ?? "2000");
12
12
  }
13
- // Loop/run teardown — a BOUNDED reap, so Exec.idle() can't wedge on a signal-ignoring spawn.
13
+ // Loop/worker teardown — a bounded reap, so Exec.idle() can't wedge on a signal-ignoring spawn.
14
14
  static teardownReason() {
15
15
  return { housekeeping: true, graceMs: ExecAbort.graceMs };
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exec-abort.js","sourceRoot":"","sources":["../../src/schemes/exec-abort.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,8FAA8F;AAC9F,yGAAyG;AACzG,+FAA+F;AAC/F,uFAAuF;AACvF,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,8FAA8F;IAC9F,4FAA4F;IAC5F,iGAAiG;IACjG,MAAM,KAAK,OAAO;QACd,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,6FAA6F;IAC7F,MAAM,CAAC,cAAc;QACjB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED,mGAAmG;IACnG,mGAAmG;IACnG,MAAM,CAAC,UAAU,CAAC,MAAqB;QACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,8FAA8F;IAC9F,6FAA6F;IAC7F,mGAAmG;IACnG,MAAM,CAAC,aAAa;QAChB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CACJ"}
1
+ {"version":3,"file":"exec-abort.js","sourceRoot":"","sources":["../../src/schemes/exec-abort.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,8FAA8F;AAC9F,4GAA4G;AAC5G,+FAA+F;AAC/F,uFAAuF;AACvF,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,8FAA8F;IAC9F,4FAA4F;IAC5F,mGAAmG;IACnG,MAAM,KAAK,OAAO;QACd,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,gGAAgG;IAChG,MAAM,CAAC,cAAc;QACjB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED,mGAAmG;IACnG,mGAAmG;IACnG,MAAM,CAAC,UAAU,CAAC,MAAqB;QACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,8FAA8F;IAC9F,6FAA6F;IAC7F,mGAAmG;IACnG,MAAM,CAAC,aAAa;QAChB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CACJ"}
@@ -1,4 +1,4 @@
1
- // SPEC §exec {§exec-env-scoped} — the environment an EXEC subprocess receives.
1
+ // SPEC {§exec} {§exec-env-scoped} — the environment an EXEC subprocess receives.
2
2
  //
3
3
  // It gets the *project's* environment (its `.env`, the standard shell vars like PATH
4
4
  // and HOME) so the model's commands run as the project expects — but never plurnk's
@@ -9,8 +9,8 @@
9
9
  //
10
10
  // A denylist, not an allowlist: a subprocess needs the long tail of inherited vars
11
11
  // (PATH, HOME, LANG, the project's own keys); only plurnk's two owned families are
12
- // stripped. The service owns this policy; the executor (plurnk-execs SubprocessExecutor,
13
- // plurnk-execs#8) spawns with the env it is handed.
12
+ // stripped. The service owns this policy; the subprocess executor spawns with
13
+ // the environment it is handed.
14
14
  import { providerCredentialEnvNames } from "@plurnk/plurnk-models";
15
15
  export default class ExecEnv {
16
16
  // Read at call time (not memoized) so a secret set into process.env after boot is
@@ -1 +1 @@
1
- {"version":3,"file":"exec-env.js","sourceRoot":"","sources":["../../src/schemes/exec-env.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,qFAAqF;AACrF,oFAAoF;AACpF,8EAA8E;AAC9E,yFAAyF;AACzF,2GAA2G;AAC3G,kEAAkE;AAClE,EAAE;AACF,mFAAmF;AACnF,mFAAmF;AACnF,yFAAyF;AACzF,oDAAoD;AAEpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,kFAAkF;IAClF,sCAAsC;IACtC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;QAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,CACxB,0BAA0B,EAAE,CAC/B,CAAC;QACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAE,SAAS;YAC7F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtD,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAE,uCAAuC;YAC1G,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
1
+ {"version":3,"file":"exec-env.js","sourceRoot":"","sources":["../../src/schemes/exec-env.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,qFAAqF;AACrF,oFAAoF;AACpF,8EAA8E;AAC9E,yFAAyF;AACzF,2GAA2G;AAC3G,kEAAkE;AAClE,EAAE;AACF,mFAAmF;AACnF,mFAAmF;AACnF,8EAA8E;AAC9E,gCAAgC;AAEhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,kFAAkF;IAClF,sCAAsC;IACtC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;QAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,CACxB,0BAA0B,EAAE,CAC/B,CAAC;QACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAE,SAAS;YAC7F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtD,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAE,uCAAuC;YAC1G,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
@@ -0,0 +1,48 @@
1
+ import type { Db } from "../core/Db.ts";
2
+ import { type SchemeResult } from "../core/results.ts";
3
+ import type { LoopFlags, WriterTier } from "../core/types.ts";
4
+ import type WorkspaceGate from "../core/WorkspaceGate.ts";
5
+ export interface EnqueueBranchWorker {
6
+ workspaceId: number;
7
+ parentWorkerId: number;
8
+ op: "WORK" | "FORK";
9
+ name: string;
10
+ prompt: string;
11
+ flags: LoopFlags;
12
+ origin: WriterTier;
13
+ }
14
+ export interface BranchBatchDependencies {
15
+ settleWorkspace(workspaceId: number): Promise<void>;
16
+ createChild(args: EnqueueBranchWorker): Promise<{
17
+ workerId: number;
18
+ loopId: number;
19
+ }>;
20
+ startChild(workspaceId: number, workerId: number, loopId: number): Promise<SchemeResult>;
21
+ wakeParent(workspaceId: number, workerId: number): Promise<void>;
22
+ notify(workspaceId: number, payload: Readonly<Record<string, unknown>>): void;
23
+ }
24
+ export default class BranchBatches {
25
+ #private;
26
+ constructor(db: Db, gate: WorkspaceGate, dependencies: BranchBatchDependencies);
27
+ enqueue(args: {
28
+ workspaceId: number;
29
+ parentWorkerId: number;
30
+ parentLoopId: number;
31
+ parentTurnId: number;
32
+ op: "WORK" | "FORK";
33
+ name: string;
34
+ branch: string;
35
+ prompt: string;
36
+ flags: LoopFlags;
37
+ origin: WriterTier;
38
+ }): Promise<{
39
+ workerId: number;
40
+ loopId: number;
41
+ }>;
42
+ sealTurn(parentTurnId: number): Promise<void>;
43
+ completionGate(workerId: number): Promise<SchemeResult | null>;
44
+ recover(): Promise<void>;
45
+ idle(): Promise<void>;
46
+ beginStop(): void;
47
+ }
48
+ //# sourceMappingURL=BranchBatches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BranchBatches.d.ts","sourceRoot":"","sources":["../../src/server/BranchBatches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAKxC,OAAgB,EAAyB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AA8B1D,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACpC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CACjF;AAID,MAAM,CAAC,OAAO,OAAO,aAAa;;IAQ9B,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,uBAAuB,EAK7E;IAEK,OAAO,CAAC,IAAI,EAAE;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,SAAS,CAAC;QACjB,MAAM,EAAE,UAAU,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CA6HhD;IAKK,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlD;IAEK,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA8CnE;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B7B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAED,SAAS,IAAI,IAAI,CAEhB;CAqeJ"}