@plurnk/plurnk-service 1.3.12 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.env.defaults +84 -77
  2. package/INSTALL.md +50 -25
  3. package/README.md +24 -10
  4. package/SPEC.md +2311 -928
  5. package/dist/Paths.d.ts +4 -1
  6. package/dist/Paths.d.ts.map +1 -1
  7. package/dist/Paths.js +23 -21
  8. package/dist/Paths.js.map +1 -1
  9. package/dist/build-info.json +1 -1
  10. package/dist/content/edit-receipt.d.ts +13 -28
  11. package/dist/content/edit-receipt.d.ts.map +1 -1
  12. package/dist/content/edit-receipt.js +285 -104
  13. package/dist/content/edit-receipt.js.map +1 -1
  14. package/dist/content/edited-span.d.ts.map +1 -1
  15. package/dist/content/edited-span.js +2 -5
  16. package/dist/content/edited-span.js.map +1 -1
  17. package/dist/content/index.d.ts +3 -3
  18. package/dist/content/index.d.ts.map +1 -1
  19. package/dist/content/index.js +1 -1
  20. package/dist/content/index.js.map +1 -1
  21. package/dist/content/line-marker.d.ts +6 -9
  22. package/dist/content/line-marker.d.ts.map +1 -1
  23. package/dist/content/line-marker.js +7 -11
  24. package/dist/content/line-marker.js.map +1 -1
  25. package/dist/content/matcher.d.ts +14 -25
  26. package/dist/content/matcher.d.ts.map +1 -1
  27. package/dist/content/matcher.js +77 -107
  28. package/dist/content/matcher.js.map +1 -1
  29. package/dist/content/mimetype-binary.d.ts +2 -2
  30. package/dist/content/mimetype-binary.d.ts.map +1 -1
  31. package/dist/content/mimetype-binary.js +10 -10
  32. package/dist/content/mimetype-binary.js.map +1 -1
  33. package/dist/content/path-mimetype.js +3 -3
  34. package/dist/content/path-mimetype.js.map +1 -1
  35. package/dist/content/read-resolve.d.ts +8 -4
  36. package/dist/content/read-resolve.d.ts.map +1 -1
  37. package/dist/content/read-resolve.js +101 -49
  38. package/dist/content/read-resolve.js.map +1 -1
  39. package/dist/core/BranchReceipt.d.ts +7 -0
  40. package/dist/core/BranchReceipt.d.ts.map +1 -0
  41. package/dist/core/BranchReceipt.js +27 -0
  42. package/dist/core/BranchReceipt.js.map +1 -0
  43. package/dist/core/BudgetOverflow.d.ts +23 -0
  44. package/dist/core/BudgetOverflow.d.ts.map +1 -0
  45. package/dist/core/BudgetOverflow.js +61 -0
  46. package/dist/core/BudgetOverflow.js.map +1 -0
  47. package/dist/core/BudgetReadout.d.ts +8 -0
  48. package/dist/core/BudgetReadout.d.ts.map +1 -0
  49. package/dist/core/BudgetReadout.js +79 -0
  50. package/dist/core/BudgetReadout.js.map +1 -0
  51. package/dist/core/ChannelWrite.d.ts +28 -9
  52. package/dist/core/ChannelWrite.d.ts.map +1 -1
  53. package/dist/core/ChannelWrite.js +28 -21
  54. package/dist/core/ChannelWrite.js.map +1 -1
  55. package/dist/core/ChannelWrite.sql +11 -10
  56. package/dist/core/CoreSchemeServices.d.ts +10 -4
  57. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  58. package/dist/core/CoreSchemeServices.js +7 -1
  59. package/dist/core/CoreSchemeServices.js.map +1 -1
  60. package/dist/core/Dispatcher.d.ts +29 -20
  61. package/dist/core/Dispatcher.d.ts.map +1 -1
  62. package/dist/core/Dispatcher.js +1488 -599
  63. package/dist/core/Dispatcher.js.map +1 -1
  64. package/dist/core/DurableStatement.d.ts +6 -0
  65. package/dist/core/DurableStatement.d.ts.map +1 -0
  66. package/dist/core/DurableStatement.js +51 -0
  67. package/dist/core/DurableStatement.js.map +1 -0
  68. package/dist/core/Engine.d.ts +48 -20
  69. package/dist/core/Engine.d.ts.map +1 -1
  70. package/dist/core/Engine.js +1208 -789
  71. package/dist/core/Engine.js.map +1 -1
  72. package/dist/core/Engine.sql +309 -217
  73. package/dist/core/EnvFlags.js +1 -1
  74. package/dist/core/EnvFlags.js.map +1 -1
  75. package/dist/core/ErrorDetail.d.ts +6 -0
  76. package/dist/core/ErrorDetail.d.ts.map +1 -0
  77. package/dist/core/ErrorDetail.js +20 -0
  78. package/dist/core/ErrorDetail.js.map +1 -0
  79. package/dist/core/ExecutorRegistry.d.ts +14 -3
  80. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  81. package/dist/core/ExecutorRegistry.js +56 -30
  82. package/dist/core/ExecutorRegistry.js.map +1 -1
  83. package/dist/core/GitBranch.d.ts +20 -0
  84. package/dist/core/GitBranch.d.ts.map +1 -0
  85. package/dist/core/GitBranch.js +110 -0
  86. package/dist/core/GitBranch.js.map +1 -0
  87. package/dist/core/JournalTurn.d.ts +9 -0
  88. package/dist/core/JournalTurn.d.ts.map +1 -0
  89. package/dist/core/JournalTurn.js +14 -0
  90. package/dist/core/JournalTurn.js.map +1 -0
  91. package/dist/core/JournalTurn.sql +10 -0
  92. package/dist/core/LogBody.d.ts +17 -0
  93. package/dist/core/LogBody.d.ts.map +1 -0
  94. package/dist/core/LogBody.js +148 -0
  95. package/dist/core/LogBody.js.map +1 -0
  96. package/dist/core/LoopFlagsReader.d.ts +7 -0
  97. package/dist/core/LoopFlagsReader.d.ts.map +1 -0
  98. package/dist/core/LoopFlagsReader.js +33 -0
  99. package/dist/core/LoopFlagsReader.js.map +1 -0
  100. package/dist/core/LoopLifecycle.d.ts +8 -1
  101. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  102. package/dist/core/LoopLifecycle.js +55 -9
  103. package/dist/core/LoopLifecycle.js.map +1 -1
  104. package/dist/core/LoopLifecycle.sql +9 -3
  105. package/dist/core/NoticeChannel.d.ts +13 -0
  106. package/dist/core/NoticeChannel.d.ts.map +1 -0
  107. package/dist/core/NoticeChannel.js +40 -0
  108. package/dist/core/NoticeChannel.js.map +1 -0
  109. package/dist/core/Owner.d.ts +0 -1
  110. package/dist/core/Owner.d.ts.map +1 -1
  111. package/dist/core/Owner.js +2 -5
  112. package/dist/core/Owner.js.map +1 -1
  113. package/dist/core/PacketBuilder.d.ts +25 -24
  114. package/dist/core/PacketBuilder.d.ts.map +1 -1
  115. package/dist/core/PacketBuilder.js +313 -375
  116. package/dist/core/PacketBuilder.js.map +1 -1
  117. package/dist/core/ProblemLog.d.ts +26 -0
  118. package/dist/core/ProblemLog.d.ts.map +1 -0
  119. package/dist/core/ProblemLog.js +58 -0
  120. package/dist/core/ProblemLog.js.map +1 -0
  121. package/dist/core/ProposalLifecycle.d.ts +15 -21
  122. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  123. package/dist/core/ProposalLifecycle.js +291 -78
  124. package/dist/core/ProposalLifecycle.js.map +1 -1
  125. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  126. package/dist/core/ProviderInstantiate.js +51 -48
  127. package/dist/core/ProviderInstantiate.js.map +1 -1
  128. package/dist/core/SchemeRegistry.d.ts +14 -8
  129. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  130. package/dist/core/SchemeRegistry.js +189 -114
  131. package/dist/core/SchemeRegistry.js.map +1 -1
  132. package/dist/core/ServiceTeardown.d.ts +11 -0
  133. package/dist/core/ServiceTeardown.d.ts.map +1 -0
  134. package/dist/core/ServiceTeardown.js +70 -0
  135. package/dist/core/ServiceTeardown.js.map +1 -0
  136. package/dist/core/StoredPacket.d.ts +29 -0
  137. package/dist/core/StoredPacket.d.ts.map +1 -0
  138. package/dist/core/StoredPacket.js +147 -0
  139. package/dist/core/StoredPacket.js.map +1 -0
  140. package/dist/core/StrikeRail.d.ts +1 -2
  141. package/dist/core/StrikeRail.d.ts.map +1 -1
  142. package/dist/core/StrikeRail.js +25 -55
  143. package/dist/core/StrikeRail.js.map +1 -1
  144. package/dist/core/WorkerControlAddress.d.ts +17 -0
  145. package/dist/core/WorkerControlAddress.d.ts.map +1 -0
  146. package/dist/core/WorkerControlAddress.js +44 -0
  147. package/dist/core/WorkerControlAddress.js.map +1 -0
  148. package/dist/core/WorkerName.d.ts +31 -0
  149. package/dist/core/WorkerName.d.ts.map +1 -0
  150. package/dist/core/WorkerName.js +95 -0
  151. package/dist/core/WorkerName.js.map +1 -0
  152. package/dist/core/WorkerName.sql +36 -0
  153. package/dist/core/WorkspaceGate.d.ts +14 -0
  154. package/dist/core/WorkspaceGate.d.ts.map +1 -0
  155. package/dist/core/WorkspaceGate.js +155 -0
  156. package/dist/core/WorkspaceGate.js.map +1 -0
  157. package/dist/core/caps/CapsResolve.d.ts +1 -1
  158. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  159. package/dist/core/caps/CapsResolve.js.map +1 -1
  160. package/dist/core/caps/DbChannelCaps.d.ts +5 -11
  161. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  162. package/dist/core/caps/DbChannelCaps.js +24 -8
  163. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  164. package/dist/core/caps/DbEntryCaps.d.ts +4 -13
  165. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  166. package/dist/core/caps/DbEntryCaps.js +15 -6
  167. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  168. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  169. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  170. package/dist/core/caps/DbNotifyCaps.js +12 -11
  171. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  172. package/dist/core/caps/DbProjectionCaps.d.ts +5 -5
  173. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  174. package/dist/core/caps/DbProjectionCaps.js +21 -4
  175. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  176. package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -4
  177. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  178. package/dist/core/caps/DbSubscriptionCaps.js +57 -62
  179. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  180. package/dist/core/caps/DbTagCaps.d.ts +5 -12
  181. package/dist/core/caps/DbTagCaps.d.ts.map +1 -1
  182. package/dist/core/caps/DbTagCaps.js +14 -7
  183. package/dist/core/caps/DbTagCaps.js.map +1 -1
  184. package/dist/core/content-hash.js +1 -1
  185. package/dist/core/content-hash.js.map +1 -1
  186. package/dist/core/env-defaults.d.ts.map +1 -1
  187. package/dist/core/env-defaults.js.map +1 -1
  188. package/dist/core/fork.d.ts.map +1 -1
  189. package/dist/core/fork.js +55 -30
  190. package/dist/core/fork.js.map +1 -1
  191. package/dist/core/fork.sql +41 -27
  192. package/dist/core/git-env.d.ts +2 -0
  193. package/dist/core/git-env.d.ts.map +1 -1
  194. package/dist/core/git-env.js +13 -18
  195. package/dist/core/git-env.js.map +1 -1
  196. package/dist/core/git-iso.d.ts.map +1 -1
  197. package/dist/core/git-iso.js +9 -15
  198. package/dist/core/git-iso.js.map +1 -1
  199. package/dist/core/git-membership.d.ts +1 -1
  200. package/dist/core/git-membership.d.ts.map +1 -1
  201. package/dist/core/git-membership.js +198 -146
  202. package/dist/core/git-membership.js.map +1 -1
  203. package/dist/core/git-state.d.ts.map +1 -1
  204. package/dist/core/git-state.js +10 -11
  205. package/dist/core/git-state.js.map +1 -1
  206. package/dist/core/owner.sql +1 -1
  207. package/dist/core/packet-inject.d.ts.map +1 -1
  208. package/dist/core/packet-inject.js +7 -11
  209. package/dist/core/packet-inject.js.map +1 -1
  210. package/dist/core/packet-wire.d.ts +2 -20
  211. package/dist/core/packet-wire.d.ts.map +1 -1
  212. package/dist/core/packet-wire.js +242 -368
  213. package/dist/core/packet-wire.js.map +1 -1
  214. package/dist/core/plurnk-uri.d.ts +12 -1
  215. package/dist/core/plurnk-uri.d.ts.map +1 -1
  216. package/dist/core/plurnk-uri.js +49 -29
  217. package/dist/core/plurnk-uri.js.map +1 -1
  218. package/dist/core/results.d.ts +16 -5
  219. package/dist/core/results.d.ts.map +1 -1
  220. package/dist/core/results.js +27 -18
  221. package/dist/core/results.js.map +1 -1
  222. package/dist/core/ruler_count.d.ts +4 -0
  223. package/dist/core/ruler_count.d.ts.map +1 -0
  224. package/dist/core/ruler_count.js +7 -0
  225. package/dist/core/ruler_count.js.map +1 -0
  226. package/dist/core/scheme-types.d.ts +9 -11
  227. package/dist/core/scheme-types.d.ts.map +1 -1
  228. package/dist/core/scheme-types.js.map +1 -1
  229. package/dist/core/search-gate.d.ts.map +1 -1
  230. package/dist/core/search-gate.js +3 -11
  231. package/dist/core/search-gate.js.map +1 -1
  232. package/dist/core/teaching-corpus.d.ts +6 -0
  233. package/dist/core/teaching-corpus.d.ts.map +1 -0
  234. package/dist/core/teaching-corpus.js +23 -0
  235. package/dist/core/teaching-corpus.js.map +1 -0
  236. package/dist/core/teaching.d.ts +0 -1
  237. package/dist/core/teaching.d.ts.map +1 -1
  238. package/dist/core/teaching.js +2 -8
  239. package/dist/core/teaching.js.map +1 -1
  240. package/dist/core/token-ruler.d.ts.map +1 -1
  241. package/dist/core/token-ruler.js +3 -16
  242. package/dist/core/token-ruler.js.map +1 -1
  243. package/dist/core/turn-scheduler.d.ts +1 -1
  244. package/dist/core/turn-scheduler.d.ts.map +1 -1
  245. package/dist/core/turn-scheduler.js +1 -1
  246. package/dist/core/turn-scheduler.js.map +1 -1
  247. package/dist/core/worker-cap.d.ts +2 -4
  248. package/dist/core/worker-cap.d.ts.map +1 -1
  249. package/dist/core/worker-cap.js +13 -4
  250. package/dist/core/worker-cap.js.map +1 -1
  251. package/dist/core/{run-ops.sql → worker-ops.sql} +11 -11
  252. package/dist/core/workspace-settings.d.ts.map +1 -1
  253. package/dist/core/workspace-settings.js +17 -9
  254. package/dist/core/workspace-settings.js.map +1 -1
  255. package/dist/digest/Digest.d.ts +2 -1
  256. package/dist/digest/Digest.d.ts.map +1 -1
  257. package/dist/digest/Digest.js +337 -138
  258. package/dist/digest/Digest.js.map +1 -1
  259. package/dist/digest/digest.sql +19 -10
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +3 -5
  262. package/dist/index.js.map +1 -1
  263. package/dist/matrix/live-specimen.d.ts +9 -0
  264. package/dist/matrix/live-specimen.d.ts.map +1 -0
  265. package/dist/matrix/live-specimen.js +37 -0
  266. package/dist/matrix/live-specimen.js.map +1 -0
  267. package/dist/observe/api.d.ts +6 -0
  268. package/dist/observe/api.d.ts.map +1 -0
  269. package/dist/observe/api.js +11 -0
  270. package/dist/observe/api.js.map +1 -0
  271. package/dist/observe/init.d.ts +7 -0
  272. package/dist/observe/init.d.ts.map +1 -0
  273. package/dist/observe/init.js +159 -0
  274. package/dist/observe/init.js.map +1 -0
  275. package/dist/observe/metrics.d.ts +6 -0
  276. package/dist/observe/metrics.d.ts.map +1 -0
  277. package/dist/observe/metrics.js +15 -0
  278. package/dist/observe/metrics.js.map +1 -0
  279. package/dist/observe/spans.d.ts +4 -0
  280. package/dist/observe/spans.d.ts.map +1 -0
  281. package/dist/observe/spans.js +51 -0
  282. package/dist/observe/spans.js.map +1 -0
  283. package/dist/schemes/EffectPolicy.d.ts +1 -0
  284. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  285. package/dist/schemes/EffectPolicy.js +5 -2
  286. package/dist/schemes/EffectPolicy.js.map +1 -1
  287. package/dist/schemes/Exec.d.ts +6 -11
  288. package/dist/schemes/Exec.d.ts.map +1 -1
  289. package/dist/schemes/Exec.js +364 -247
  290. package/dist/schemes/Exec.js.map +1 -1
  291. package/dist/schemes/ExecOutputScheme.d.ts +8 -7
  292. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  293. package/dist/schemes/ExecOutputScheme.js +48 -9
  294. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  295. package/dist/schemes/File.d.ts +7 -11
  296. package/dist/schemes/File.d.ts.map +1 -1
  297. package/dist/schemes/File.js +279 -142
  298. package/dist/schemes/File.js.map +1 -1
  299. package/dist/schemes/Log.d.ts +4 -8
  300. package/dist/schemes/Log.d.ts.map +1 -1
  301. package/dist/schemes/Log.js +475 -208
  302. package/dist/schemes/Log.js.map +1 -1
  303. package/dist/schemes/Log.sql +62 -30
  304. package/dist/schemes/Prompt.d.ts +3 -2
  305. package/dist/schemes/Prompt.d.ts.map +1 -1
  306. package/dist/schemes/Prompt.js +9 -6
  307. package/dist/schemes/Prompt.js.map +1 -1
  308. package/dist/schemes/Skill.d.ts +1 -1
  309. package/dist/schemes/Skill.d.ts.map +1 -1
  310. package/dist/schemes/Skill.js +2 -3
  311. package/dist/schemes/Skill.js.map +1 -1
  312. package/dist/schemes/Worker.d.ts +8 -16
  313. package/dist/schemes/Worker.d.ts.map +1 -1
  314. package/dist/schemes/Worker.js +179 -69
  315. package/dist/schemes/Worker.js.map +1 -1
  316. package/dist/schemes/_entry-chunk.d.ts.map +1 -1
  317. package/dist/schemes/_entry-chunk.js +12 -5
  318. package/dist/schemes/_entry-chunk.js.map +1 -1
  319. package/dist/schemes/_entry-crud.d.ts +10 -9
  320. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  321. package/dist/schemes/_entry-crud.js +59 -13
  322. package/dist/schemes/_entry-crud.js.map +1 -1
  323. package/dist/schemes/_entry-crud.sql +20 -8
  324. package/dist/schemes/_entry-find.d.ts +20 -15
  325. package/dist/schemes/_entry-find.d.ts.map +1 -1
  326. package/dist/schemes/_entry-find.js +339 -174
  327. package/dist/schemes/_entry-find.js.map +1 -1
  328. package/dist/schemes/_entry-find.sql +20 -8
  329. package/dist/schemes/_entry-graph.d.ts +4 -2
  330. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  331. package/dist/schemes/_entry-graph.js +55 -31
  332. package/dist/schemes/_entry-graph.js.map +1 -1
  333. package/dist/schemes/_entry-graph.sql +37 -22
  334. package/dist/schemes/_entry-manifest.d.ts +10 -15
  335. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  336. package/dist/schemes/_entry-manifest.js +50 -268
  337. package/dist/schemes/_entry-manifest.js.map +1 -1
  338. package/dist/schemes/_entry-ops.d.ts +9 -14
  339. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  340. package/dist/schemes/_entry-ops.js +149 -77
  341. package/dist/schemes/_entry-ops.js.map +1 -1
  342. package/dist/schemes/_entry-ops.sql +1 -1
  343. package/dist/schemes/_entry-semantic.d.ts +23 -8
  344. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  345. package/dist/schemes/_entry-semantic.js +141 -60
  346. package/dist/schemes/_entry-semantic.js.map +1 -1
  347. package/dist/schemes/_entry-semantic.sql +63 -45
  348. package/dist/schemes/_entry-send.d.ts +3 -4
  349. package/dist/schemes/_entry-send.d.ts.map +1 -1
  350. package/dist/schemes/_entry-send.js +48 -23
  351. package/dist/schemes/_entry-send.js.map +1 -1
  352. package/dist/schemes/_path-scope.d.ts +23 -0
  353. package/dist/schemes/_path-scope.d.ts.map +1 -0
  354. package/dist/schemes/_path-scope.js +61 -0
  355. package/dist/schemes/_path-scope.js.map +1 -0
  356. package/dist/schemes/_search-candidate.d.ts +20 -0
  357. package/dist/schemes/_search-candidate.d.ts.map +1 -0
  358. package/dist/schemes/_search-candidate.js +19 -0
  359. package/dist/schemes/_search-candidate.js.map +1 -0
  360. package/dist/schemes/_search-exclusion.d.ts +7 -0
  361. package/dist/schemes/_search-exclusion.d.ts.map +1 -0
  362. package/dist/schemes/_search-exclusion.js +23 -0
  363. package/dist/schemes/_search-exclusion.js.map +1 -0
  364. package/dist/schemes/_search-index.d.ts +6 -0
  365. package/dist/schemes/_search-index.d.ts.map +1 -0
  366. package/dist/schemes/_search-index.js +326 -0
  367. package/dist/schemes/_search-index.js.map +1 -0
  368. package/dist/schemes/cosine.js +1 -1
  369. package/dist/schemes/cosine.js.map +1 -1
  370. package/dist/schemes/exec-abort.js +3 -3
  371. package/dist/schemes/exec-abort.js.map +1 -1
  372. package/dist/schemes/exec-env.js +3 -3
  373. package/dist/schemes/exec-env.js.map +1 -1
  374. package/dist/server/BranchBatches.d.ts +48 -0
  375. package/dist/server/BranchBatches.d.ts.map +1 -0
  376. package/dist/server/BranchBatches.js +591 -0
  377. package/dist/server/BranchBatches.js.map +1 -0
  378. package/dist/server/Daemon.d.ts +36 -66
  379. package/dist/server/Daemon.d.ts.map +1 -1
  380. package/dist/server/Daemon.js +920 -446
  381. package/dist/server/Daemon.js.map +1 -1
  382. package/dist/server/DaemonModule.d.ts +31 -0
  383. package/dist/server/DaemonModule.d.ts.map +1 -0
  384. package/dist/server/DaemonModule.js +2 -0
  385. package/dist/server/DaemonModule.js.map +1 -0
  386. package/dist/server/branch-batch.sql +152 -0
  387. package/dist/server/client-input.d.ts +12 -0
  388. package/dist/server/client-input.d.ts.map +1 -1
  389. package/dist/server/client-input.js +262 -57
  390. package/dist/server/client-input.js.map +1 -1
  391. package/dist/server/dispatch-as-plurnk.d.ts +1 -1
  392. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  393. package/dist/server/dispatch-as-plurnk.js +15 -7
  394. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  395. package/dist/server/drain.sql +92 -62
  396. package/dist/server/envelope.d.ts +2 -5
  397. package/dist/server/envelope.d.ts.map +1 -1
  398. package/dist/server/envelope.js +119 -95
  399. package/dist/server/envelope.js.map +1 -1
  400. package/dist/server/envelope.sql +19 -23
  401. package/dist/server/exec-poll-backoff.js +1 -1
  402. package/dist/server/exec-poll-backoff.js.map +1 -1
  403. package/dist/server/lifecycle-recovery.sql +79 -2
  404. package/dist/server/logEntry.d.ts +3 -1
  405. package/dist/server/logEntry.d.ts.map +1 -1
  406. package/dist/server/logEntry.js +4 -2
  407. package/dist/server/logEntry.js.map +1 -1
  408. package/dist/server/logEntry.sql +1 -1
  409. package/dist/server/loop-model.d.ts.map +1 -1
  410. package/dist/server/loop-model.js +22 -9
  411. package/dist/server/loop-model.js.map +1 -1
  412. package/dist/server/loopDocs.d.ts.map +1 -1
  413. package/dist/server/loopDocs.js +5 -4
  414. package/dist/server/loopDocs.js.map +1 -1
  415. package/dist/server/seam-entry-read.sql +15 -10
  416. package/dist/server/seam-log-read.sql +2 -2
  417. package/dist/server/seam-loop.sql +1 -1
  418. package/dist/server/seam-proposal-list.sql +17 -7
  419. package/dist/service.d.ts.map +1 -1
  420. package/dist/service.js +66 -60
  421. package/dist/service.js.map +1 -1
  422. package/migrations/001_schema.sql +897 -0
  423. package/package.json +57 -26
  424. package/dist/core/PluginLoader.d.ts +0 -20
  425. package/dist/core/PluginLoader.d.ts.map +0 -1
  426. package/dist/core/PluginLoader.js +0 -142
  427. package/dist/core/PluginLoader.js.map +0 -1
  428. package/dist/core/TelemetryChannel.d.ts +0 -37
  429. package/dist/core/TelemetryChannel.d.ts.map +0 -1
  430. package/dist/core/TelemetryChannel.js +0 -80
  431. package/dist/core/TelemetryChannel.js.map +0 -1
  432. package/dist/core/path-decode.d.ts +0 -3
  433. package/dist/core/path-decode.d.ts.map +0 -1
  434. package/dist/core/path-decode.js +0 -9
  435. package/dist/core/path-decode.js.map +0 -1
  436. package/dist/core/plugin-attribution.d.ts +0 -5
  437. package/dist/core/plugin-attribution.d.ts.map +0 -1
  438. package/dist/core/plugin-attribution.js +0 -39
  439. package/dist/core/plugin-attribution.js.map +0 -1
  440. package/dist/core/world-state.d.ts +0 -10
  441. package/dist/core/world-state.d.ts.map +0 -1
  442. package/dist/core/world-state.js +0 -35
  443. package/dist/core/world-state.js.map +0 -1
  444. package/dist/core/world-state.sql +0 -35
  445. package/dist/core/zero-pin.d.ts +0 -3
  446. package/dist/core/zero-pin.d.ts.map +0 -1
  447. package/dist/core/zero-pin.js +0 -16
  448. package/dist/core/zero-pin.js.map +0 -1
  449. package/dist/server/auto.d.ts +0 -6
  450. package/dist/server/auto.d.ts.map +0 -1
  451. package/dist/server/auto.js +0 -63
  452. package/dist/server/auto.js.map +0 -1
  453. package/dist/server/clientTurn.d.ts +0 -6
  454. package/dist/server/clientTurn.d.ts.map +0 -1
  455. package/dist/server/clientTurn.js +0 -22
  456. package/dist/server/clientTurn.js.map +0 -1
  457. package/dist/server/clientTurn.sql +0 -10
  458. package/dist/server/noProposals.d.ts +0 -6
  459. package/dist/server/noProposals.d.ts.map +0 -1
  460. package/dist/server/noProposals.js +0 -37
  461. package/dist/server/noProposals.js.map +0 -1
  462. package/dist/server/version-info.d.ts +0 -14
  463. package/dist/server/version-info.d.ts.map +0 -1
  464. package/dist/server/version-info.js +0 -69
  465. package/dist/server/version-info.js.map +0 -1
  466. package/migrations/0000-00-00.01_schema.sql +0 -536
  467. package/migrations/0004_loop-provider.sql +0 -3
  468. package/migrations/0005_subscription-published-channel.sql +0 -3
  469. package/migrations/0006_loop-max-turns.sql +0 -3
@@ -1,16 +0,0 @@
1
- // #510 — the zero-pin gate mode: strip the agent-written alias ENVELOPE pins so a demo/live run
2
- // walks the fresh-user derivation path (#507 — probed window + shipped percent reserves), and a
3
- // path that only works WITH a hand-written pin reads RED. Kept: the model SELECTION + defs, the
4
- // shipped BARE percent reserves + safety — everything a fresh install has. Stripped: box tuning.
5
- export const isEnvelopePin = (key) => /^PLURNK_PROVIDERS_CONTEXT_WINDOW(_.+)?$/.test(key) // any window pin → force the probe
6
- || /^PLURNK_PROVIDERS_(REASONING|COMPLETION)_RESERVE_.+$/.test(key) // per-alias reserve pins (bare percent stays)
7
- || /^PLURNK_SERVICE_SAFETY_.+$/.test(key); // per-alias safety pins (bare stays)
8
- // Delete every envelope pin from `env` in place; return the stripped keys (for a loud report —
9
- // a green zero-pin run must be trustworthy).
10
- export const scrubEnvelopePins = (env) => {
11
- const stripped = Object.keys(env).filter(isEnvelopePin);
12
- for (const k of stripped)
13
- delete env[k];
14
- return stripped;
15
- };
16
- //# sourceMappingURL=zero-pin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zero-pin.js","sourceRoot":"","sources":["../../src/core/zero-pin.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,gGAAgG;AAChG,gGAAgG;AAChG,iGAAiG;AACjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE,CAClD,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAc,mCAAmC;OACjG,sDAAsD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,8CAA8C;OAChH,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAuB,qCAAqC;AAE1G,+FAA+F;AAC/F,6CAA6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAsB,EAAY,EAAE;IAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- import type Engine from "../core/Engine.ts";
2
- import type { Db } from "../core/Db.ts";
3
- export default class Auto {
4
- static attach(engine: Engine, _db: Db): void;
5
- }
6
- //# sourceMappingURL=auto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/server/auto.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAuB3C;CACJ"}
@@ -1,63 +0,0 @@
1
- // Loop auto-approval listener — resolves proposals when persisted flags.auto is true.
2
- // No client roundtrip; no human approval; no RPC involvement.
3
- //
4
- // === Loop auto vs client-side YOLO ===
5
- //
6
- // These are distinct features. Both have legitimate use cases. Neither
7
- // replaces the other.
8
- //
9
- // Loop auto (this file)
10
- // - Enabled via loops.flags.auto = true. RPC opt-in:
11
- // loop.run({ prompt, flags: { auto: true } }).
12
- // - Engine auto-accepts in-process; the client need not be connected.
13
- // - Use cases: benchmarks (pure model+grammar timing, no RPC roundtrip
14
- // in the hot loop), CI runs, ad-hoc internal automation, test
15
- // fixtures. Anywhere "just run and tell me the final state" is the
16
- // right contract.
17
- // - Client apps (@plurnk/plurnk CLI / TUI) intentionally do NOT expose
18
- // this flag — loop auto is automation authority, not review ergonomics.
19
- //
20
- // Client-side YOLO (@plurnk/plurnk --yolo / PLURNK_YOLO)
21
- // - Client receives the loop/proposal notification and immediately
22
- // sends loop.resolve({decision:"accept", outcome:"client_yolo"}).
23
- // - The wire roundtrip still happens; the daemon stays unaware that
24
- // no human reviewed.
25
- // - Use cases: real users who want "stop bothering me" ergonomics
26
- // across an interactive workspace. Documented in client SPEC §open-fold.
27
- //
28
- // Listener fires BEFORE ProposalLifecycle.awaitResolution awaits the waiter, so a
29
- // synchronous resolveProposal here is delivered to the awaiting dispatch
30
- // without yielding. The loop/proposal broadcast still goes out (listeners
31
- // fan out independently) — clients in auto runs may see a brief
32
- // proposed-then-resolved blink in their UI. The carried event.flags.auto
33
- // lets clients suppress review-UI rendering for those entries.
34
- export default class Auto {
35
- static attach(engine, _db) {
36
- // §proposal-ownership-loop-auto
37
- engine.onProposalPending((event) => {
38
- if (!event.flags.auto)
39
- return;
40
- // A [300] question is NOT automatic (#346): it exists precisely to stop the world
41
- // for a human — auto-accepting answers nothing. The workspace opted into questions
42
- // (settings.questions), so the stop is wanted even under auto.
43
- if (event.op === "SEND" && event.attrs.question !== undefined)
44
- return;
45
- try {
46
- if (event.staleClobberRisk) {
47
- // #note10 — the target diverged on disk this turn; the model's EDIT is
48
- // based on a stale read. Reject rather than silently clobber the ambient
49
- // change. The model sees an ordinary reject (outcome is forensics-only)
50
- // and can re-READ the entry + retry against the current content.
51
- engine.resolveProposal(event.logEntryId, { decision: "reject", outcome: "stale_read_clobber" });
52
- return;
53
- }
54
- engine.resolveProposal(event.logEntryId, { decision: "accept" });
55
- }
56
- catch {
57
- // Errors here don't abort dispatch — the proposal stays
58
- // pending and falls through to the RPC / timeout path.
59
- }
60
- });
61
- }
62
- }
63
- //# sourceMappingURL=auto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/server/auto.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,8DAA8D;AAC9D,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,0BAA0B;AAC1B,yDAAyD;AACzD,qDAAqD;AACrD,0EAA0E;AAC1E,2EAA2E;AAC3E,oEAAoE;AACpE,yEAAyE;AACzE,wBAAwB;AACxB,2EAA2E;AAC3E,8EAA8E;AAC9E,EAAE;AACF,2DAA2D;AAC3D,uEAAuE;AACvE,wEAAwE;AACxE,wEAAwE;AACxE,2BAA2B;AAC3B,sEAAsE;AACtE,+EAA+E;AAC/E,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AACzE,0EAA0E;AAC1E,gEAAgE;AAChE,yEAAyE;AACzE,+DAA+D;AAM/D,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,GAAO;QACjC,gCAAgC;QAChC,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAA2B,EAAE,EAAE;YACrD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBAAE,OAAO;YAC9B,kFAAkF;YAClF,mFAAmF;YACnF,+DAA+D;YAC/D,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,IAAK,KAAK,CAAC,KAA+B,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO;YACjG,IAAI,CAAC;gBACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACzB,uEAAuE;oBACvE,yEAAyE;oBACzE,wEAAwE;oBACxE,iEAAiE;oBACjE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAChG,OAAO;gBACX,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,6 +0,0 @@
1
- import type { Db } from "../core/Db.ts";
2
- export default class ClientTurn {
3
- #private;
4
- static insertClientTurn(db: Db, loopId: number): Promise<number>;
5
- }
6
- //# sourceMappingURL=clientTurn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientTurn.d.ts","sourceRoot":"","sources":["../../src/server/clientTurn.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,UAAU;;IAQ3B,OAAa,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQrE;CACJ"}
@@ -1,22 +0,0 @@
1
- // Helper for creating an ordered statement turn inside a client action's
2
- // journal segment, with a synthetic packet matching the model-turn shape.
3
- export default class ClientTurn {
4
- static #CLIENT_TURN_PACKET = JSON.stringify({
5
- tokens: 0,
6
- sections: [],
7
- assistant: { tokens: 0, content: "", ops: [], reasoning: null },
8
- assistantRaw: null,
9
- });
10
- static async insertClientTurn(db, loopId) {
11
- const seqRow = await db.client_turn_next_sequence.get({ loop_id: loopId });
12
- if (seqRow === undefined)
13
- throw new Error("insertClientTurn: next-sequence query returned no row");
14
- const row = await db.client_turn_insert.get({
15
- loop_id: loopId, sequence: seqRow.next, packet: ClientTurn.#CLIENT_TURN_PACKET,
16
- });
17
- if (row === undefined)
18
- throw new Error("insertClientTurn: insert returned no row");
19
- return row.id;
20
- }
21
- }
22
- //# sourceMappingURL=clientTurn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientTurn.js","sourceRoot":"","sources":["../../src/server/clientTurn.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAI1E,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;QAC/D,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAM,EAAE,MAAc;QAChD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACnG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAiB;YACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,mBAAmB;SACjF,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACnF,OAAO,GAAG,CAAC,EAAE,CAAC;IAClB,CAAC;CACJ"}
@@ -1,10 +0,0 @@
1
- -- Client-origin turn helpers. Each client RPC op creates a synthetic turn
2
- -- inside the connection's client loop with an empty packet shape.
3
-
4
- -- PREP: client_turn_next_sequence
5
- SELECT COALESCE(MAX(sequence), 0) + 1 AS next FROM turns WHERE loop_id = $loop_id;
6
-
7
- -- PREP: client_turn_insert
8
- INSERT INTO turns (loop_id, sequence, status, packet)
9
- VALUES ($loop_id, $sequence, 200, $packet)
10
- RETURNING id;
@@ -1,6 +0,0 @@
1
- import type Engine from "../core/Engine.ts";
2
- import type { Db } from "../core/Db.ts";
3
- export default class NoProposals {
4
- static attachNoProposals(engine: Engine, _db: Db): void;
5
- }
6
- //# sourceMappingURL=noProposals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noProposals.d.ts","sourceRoot":"","sources":["../../src/server/noProposals.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAUtD;CACJ"}
@@ -1,37 +0,0 @@
1
- // Server-side noProposals listener — the exact inverse of auto.ts. When a
2
- // loop's persisted flags.noProposals === true, proposals auto-REJECT
3
- // in-process, mirroring loop auto's ACCEPT. No client roundtrip; no
4
- // human review.
5
- //
6
- // Invisibility is the whole point. The model sees only the ordinary
7
- // post-resolution result — identical to a human declining the proposal or a
8
- // client's no_tty_review reject. The `outcome` reason is forensics-only,
9
- // never in the rx (see ProposalResolution), so a reject under noProposals is
10
- // indistinguishable, to the model, from any other reject. How a proposal is
11
- // handled — manual review, client YOLO, loop auto, noProposals — leaves no
12
- // fingerprint in the model's experience.
13
- //
14
- // Use case: a client with no review channel (no TTY — piped, scripted,
15
- // redirected) sets noProposals so side-effecting ops fail closed WITHOUT a
16
- // client roundtrip per proposal. The client, which set the flag, owns any
17
- // end-user "edits were blocked, no review channel" messaging; the model is
18
- // mode-blind.
19
- //
20
- // auto wins if both are (nonsensically) set — the explicit auto-accept
21
- // opt-in takes precedence over the auto-reject.
22
- export default class NoProposals {
23
- static attachNoProposals(engine, _db) {
24
- engine.onProposalPending((event) => {
25
- if (event.flags.auto || !event.flags.noProposals)
26
- return;
27
- try {
28
- engine.resolveProposal(event.logEntryId, { decision: "reject", outcome: "no_review_channel" });
29
- }
30
- catch {
31
- // Errors here don't abort dispatch — the proposal stays
32
- // pending and falls through to the RPC / timeout path.
33
- }
34
- });
35
- }
36
- }
37
- //# sourceMappingURL=noProposals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"noProposals.js","sourceRoot":"","sources":["../../src/server/noProposals.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qEAAqE;AACrE,oEAAoE;AACpE,gBAAgB;AAChB,EAAE;AACF,oEAAoE;AACpE,4EAA4E;AAC5E,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,yCAAyC;AACzC,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,cAAc;AACd,EAAE;AACF,uEAAuE;AACvE,gDAAgD;AAMhD,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,iBAAiB,CAAC,MAAc,EAAE,GAAO;QAC5C,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAA2B,EAAE,EAAE;YACrD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW;gBAAE,OAAO;YACzD,IAAI,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACnG,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,14 +0,0 @@
1
- export type Versions = {
2
- service: {
3
- installed: string;
4
- latest?: string;
5
- };
6
- client: {
7
- latest?: string;
8
- };
9
- };
10
- export default class VersionInfo {
11
- #private;
12
- static get(): Promise<Versions>;
13
- }
14
- //# sourceMappingURL=version-info.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-info.d.ts","sourceRoot":"","sources":["../../src/server/version-info.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,QAAQ,GAAG;IAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAExG,MAAM,CAAC,OAAO,OAAO,WAAW;;IAQ5B,OAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAQpC;CA0CJ"}
@@ -1,69 +0,0 @@
1
- // #235 — version advertising for the client's update notifier. The daemon is the
2
- // long-lived, already-network-capable process, so it owns the registry poll: a one-shot
3
- // CLI does zero registry IO and just renders what `discover` hands it. We self-report the
4
- // installed version and poll npm for `latest` of the service + client packages — CACHED
5
- // (TTL) and BEST-EFFORT (offline / registry-down omits `latest`; never blocks `discover`).
6
- import { readFile } from "node:fs/promises";
7
- import { fileURLToPath } from "node:url";
8
- import { dirname, resolve, join } from "node:path";
9
- const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
10
- const SERVICE_PKG = "@plurnk/plurnk-service";
11
- const CLIENT_PKG = "@plurnk/plurnk";
12
- export default class VersionInfo {
13
- static #installed;
14
- static #cache = { service: undefined, client: undefined, at: 0 };
15
- static #inflight = false;
16
- // `discover` rides this. Returns immediately with whatever is cached; a stale/cold
17
- // cache triggers a background refresh (never awaited), so the call never blocks on the
18
- // network. `installed` is the daemon's honest self-report; `latest` is best-effort.
19
- static async get() {
20
- const installed = await VersionInfo.#installedVersion();
21
- VersionInfo.#maybeRefresh();
22
- const { service, client } = VersionInfo.#cache;
23
- return {
24
- service: service === undefined ? { installed } : { installed, latest: service },
25
- client: client === undefined ? {} : { latest: client },
26
- };
27
- }
28
- static async #installedVersion() {
29
- if (VersionInfo.#installed === undefined) {
30
- const raw = await readFile(join(PACKAGE_ROOT, "package.json"), "utf8");
31
- VersionInfo.#installed = JSON.parse(raw).version;
32
- }
33
- return VersionInfo.#installed;
34
- }
35
- static #maybeRefresh() {
36
- const ttl = VersionInfo.#envMs("PLURNK_SERVICE_VERSION_POLL_TTL", 0);
37
- const timeout = VersionInfo.#envMs("PLURNK_PROVIDERS_FETCH_TIMEOUT", 1);
38
- if (VersionInfo.#inflight || Date.now() - VersionInfo.#cache.at < ttl)
39
- return;
40
- VersionInfo.#inflight = true;
41
- void VersionInfo.#refresh(timeout).finally(() => { VersionInfo.#inflight = false; });
42
- }
43
- // No code fallback hides a magic number — the law-file (.env.defaults) carries it.
44
- static #envMs(name, min) {
45
- const raw = process.env[name];
46
- const n = raw === undefined ? Number.NaN : Number.parseInt(raw, 10);
47
- if (!Number.isFinite(n) || n < min)
48
- throw new Error(`${name} must be an integer >= ${min} (ms), got ${JSON.stringify(raw)}`);
49
- return n;
50
- }
51
- static async #refresh(timeout) {
52
- const [service, client] = await Promise.all([VersionInfo.#poll(SERVICE_PKG, timeout), VersionInfo.#poll(CLIENT_PKG, timeout)]);
53
- // Keep the prior cached value on a failed poll (don't clobber a good `latest` with undefined).
54
- VersionInfo.#cache = { service: service ?? VersionInfo.#cache.service, client: client ?? VersionInfo.#cache.client, at: Date.now() };
55
- }
56
- static async #poll(pkg, timeout) {
57
- try {
58
- const res = await fetch(`https://registry.npmjs.org/${pkg.replace("/", "%2F")}/latest`, { signal: AbortSignal.timeout(timeout) });
59
- if (!res.ok)
60
- return undefined;
61
- const body = (await res.json());
62
- return typeof body.version === "string" ? body.version : undefined;
63
- }
64
- catch {
65
- return undefined; // best-effort: offline / registry-down / abort → omit `latest`
66
- }
67
- }
68
- }
69
- //# sourceMappingURL=version-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-info.js","sourceRoot":"","sources":["../../src/server/version-info.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,wFAAwF;AACxF,0FAA0F;AAC1F,wFAAwF;AACxF,2FAA2F;AAE3F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClF,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAIpC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,UAAU,CAAqB;IACtC,MAAM,CAAC,MAAM,GAAsD,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACpH,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAEzB,mFAAmF;IACnF,uFAAuF;IACvF,oFAAoF;IACpF,MAAM,CAAC,KAAK,CAAC,GAAG;QACZ,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACxD,WAAW,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/C,OAAO;YACH,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;YAC/E,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;SACzD,CAAC;IACN,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC1B,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;YACvE,WAAW,CAAC,UAAU,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC,OAAO,CAAC;QAC9E,CAAC;QACD,OAAO,WAAW,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,aAAa;QAChB,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG;YAAE,OAAO;QAC9E,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,KAAK,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,mFAAmF;IACnF,MAAM,CAAC,MAAM,CAAC,IAAY,EAAE,GAAW;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,0BAA0B,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7H,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAe;QACjC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/H,+FAA+F;QAC/F,WAAW,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACzI,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,OAAe;QAC3C,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClI,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;YACzD,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC,CAAC,+DAA+D;QACrF,CAAC;IACL,CAAC;CACJ"}