@plurnk/plurnk-service 1.16.4 → 1.17.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 (636) hide show
  1. package/.env.defaults +122 -246
  2. package/INSTALL.md +84 -138
  3. package/README.md +9 -5
  4. package/SPEC.md +1710 -1015
  5. package/dist/Paths.d.ts +2 -0
  6. package/dist/Paths.d.ts.map +1 -1
  7. package/dist/Paths.js +2 -0
  8. package/dist/Paths.js.map +1 -1
  9. package/dist/build-info.d.ts.map +1 -1
  10. package/dist/build-info.js +7 -1
  11. package/dist/build-info.js.map +1 -1
  12. package/dist/build-info.json +1 -1
  13. package/dist/content/body-preview.d.ts +8 -0
  14. package/dist/content/body-preview.d.ts.map +1 -0
  15. package/dist/content/body-preview.js +39 -0
  16. package/dist/content/body-preview.js.map +1 -0
  17. package/dist/content/byte-view.d.ts +1 -4
  18. package/dist/content/byte-view.d.ts.map +1 -1
  19. package/dist/content/byte-view.js.map +1 -1
  20. package/dist/content/edit-collision.d.ts.map +1 -1
  21. package/dist/content/edit-collision.js +3 -4
  22. package/dist/content/edit-collision.js.map +1 -1
  23. package/dist/content/line-anchors.d.ts +2 -2
  24. package/dist/content/line-anchors.d.ts.map +1 -1
  25. package/dist/content/line-anchors.js +4 -3
  26. package/dist/content/line-anchors.js.map +1 -1
  27. package/dist/content/line-selection.d.ts +9 -0
  28. package/dist/content/line-selection.d.ts.map +1 -0
  29. package/dist/content/line-selection.js +29 -0
  30. package/dist/content/line-selection.js.map +1 -0
  31. package/dist/content/matcher.d.ts +0 -1
  32. package/dist/content/matcher.d.ts.map +1 -1
  33. package/dist/content/matcher.js +2 -3
  34. package/dist/content/matcher.js.map +1 -1
  35. package/dist/content/pattern-edits.d.ts +39 -0
  36. package/dist/content/pattern-edits.d.ts.map +1 -0
  37. package/dist/content/pattern-edits.js +121 -0
  38. package/dist/content/pattern-edits.js.map +1 -0
  39. package/dist/content/read-projector.d.ts +18 -9
  40. package/dist/content/read-projector.d.ts.map +1 -1
  41. package/dist/content/read-projector.js +132 -35
  42. package/dist/content/read-projector.js.map +1 -1
  43. package/dist/content/read-resolve.d.ts +3 -1
  44. package/dist/content/read-resolve.d.ts.map +1 -1
  45. package/dist/content/read-resolve.js +39 -7
  46. package/dist/content/read-resolve.js.map +1 -1
  47. package/dist/core/AdmittedTurnExecutor.d.ts +3 -5
  48. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  49. package/dist/core/AdmittedTurnExecutor.js +91 -83
  50. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  51. package/dist/core/BareBatchRunner.d.ts +6 -1
  52. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  53. package/dist/core/BareBatchRunner.js +20 -5
  54. package/dist/core/BareBatchRunner.js.map +1 -1
  55. package/dist/core/BudgetReadout.d.ts +2 -3
  56. package/dist/core/BudgetReadout.d.ts.map +1 -1
  57. package/dist/core/BudgetReadout.js +23 -32
  58. package/dist/core/BudgetReadout.js.map +1 -1
  59. package/dist/core/CapabilityPolicies.d.ts +3 -8
  60. package/dist/core/CapabilityPolicies.d.ts.map +1 -1
  61. package/dist/core/CapabilityPolicies.js +2 -28
  62. package/dist/core/CapabilityPolicies.js.map +1 -1
  63. package/dist/core/CapabilityResolver.d.ts +10 -10
  64. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  65. package/dist/core/CapabilityResolver.js +87 -65
  66. package/dist/core/CapabilityResolver.js.map +1 -1
  67. package/dist/core/ChannelWrite.d.ts +14 -11
  68. package/dist/core/ChannelWrite.d.ts.map +1 -1
  69. package/dist/core/ChannelWrite.js +11 -12
  70. package/dist/core/ChannelWrite.js.map +1 -1
  71. package/dist/core/ChannelWrite.sql +99 -9
  72. package/dist/core/ClientInteractions.d.ts.map +1 -1
  73. package/dist/core/ClientInteractions.js +7 -0
  74. package/dist/core/ClientInteractions.js.map +1 -1
  75. package/dist/core/CoreSchemeServices.d.ts +13 -10
  76. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  77. package/dist/core/CoreSchemeServices.js +13 -5
  78. package/dist/core/CoreSchemeServices.js.map +1 -1
  79. package/dist/core/DataStatementRunner.d.ts +2 -2
  80. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  81. package/dist/core/DataStatementRunner.js +36 -39
  82. package/dist/core/DataStatementRunner.js.map +1 -1
  83. package/dist/core/Dispatcher.d.ts +19 -26
  84. package/dist/core/Dispatcher.d.ts.map +1 -1
  85. package/dist/core/Dispatcher.js +369 -219
  86. package/dist/core/Dispatcher.js.map +1 -1
  87. package/dist/core/Dispatcher.sql +66 -0
  88. package/dist/core/DurableStatement.d.ts.map +1 -1
  89. package/dist/core/DurableStatement.js +2 -1
  90. package/dist/core/DurableStatement.js.map +1 -1
  91. package/dist/core/EditMutations.d.ts +14 -18
  92. package/dist/core/EditMutations.d.ts.map +1 -1
  93. package/dist/core/EditMutations.js +211 -280
  94. package/dist/core/EditMutations.js.map +1 -1
  95. package/dist/core/EditMutations.sql +15 -0
  96. package/dist/core/EditSequence.d.ts +13 -0
  97. package/dist/core/EditSequence.d.ts.map +1 -0
  98. package/dist/core/EditSequence.js +73 -0
  99. package/dist/core/EditSequence.js.map +1 -0
  100. package/dist/core/Engine.d.ts +17 -23
  101. package/dist/core/Engine.d.ts.map +1 -1
  102. package/dist/core/Engine.js +73 -163
  103. package/dist/core/Engine.js.map +1 -1
  104. package/dist/core/Engine.sql +0 -724
  105. package/dist/core/EntryAddressBinding.d.ts +7 -17
  106. package/dist/core/EntryAddressBinding.d.ts.map +1 -1
  107. package/dist/core/EntryAddressBinding.js +12 -72
  108. package/dist/core/EntryAddressBinding.js.map +1 -1
  109. package/dist/core/ExecutionOutputs.d.ts +9 -0
  110. package/dist/core/ExecutionOutputs.d.ts.map +1 -0
  111. package/dist/core/ExecutionOutputs.js +36 -0
  112. package/dist/core/ExecutionOutputs.js.map +1 -0
  113. package/dist/core/ExecutionOutputs.sql +13 -0
  114. package/dist/core/ExecutorRegistry.d.ts +7 -5
  115. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  116. package/dist/core/ExecutorRegistry.js +36 -32
  117. package/dist/core/ExecutorRegistry.js.map +1 -1
  118. package/dist/core/HostPaths.d.ts +1 -0
  119. package/dist/core/HostPaths.d.ts.map +1 -1
  120. package/dist/core/HostPaths.js +4 -0
  121. package/dist/core/HostPaths.js.map +1 -1
  122. package/dist/core/InferenceCall.d.ts.map +1 -1
  123. package/dist/core/InferenceCall.js +1 -2
  124. package/dist/core/InferenceCall.js.map +1 -1
  125. package/dist/core/InferenceCall.sql +29 -0
  126. package/dist/core/KillHandler.d.ts +1 -0
  127. package/dist/core/KillHandler.d.ts.map +1 -1
  128. package/dist/core/KillHandler.js +24 -21
  129. package/dist/core/KillHandler.js.map +1 -1
  130. package/dist/core/LogBody.d.ts +8 -1
  131. package/dist/core/LogBody.d.ts.map +1 -1
  132. package/dist/core/LogBody.js +42 -11
  133. package/dist/core/LogBody.js.map +1 -1
  134. package/dist/core/LogEntryProjection.d.ts +1 -0
  135. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  136. package/dist/core/LogEntryProjection.js +18 -10
  137. package/dist/core/LogEntryProjection.js.map +1 -1
  138. package/dist/core/LogVisibility.d.ts +1 -0
  139. package/dist/core/LogVisibility.d.ts.map +1 -1
  140. package/dist/core/LogVisibility.js +3 -0
  141. package/dist/core/LogVisibility.js.map +1 -1
  142. package/dist/core/LogWriter.d.ts +2 -3
  143. package/dist/core/LogWriter.d.ts.map +1 -1
  144. package/dist/core/LogWriter.js +25 -32
  145. package/dist/core/LogWriter.js.map +1 -1
  146. package/dist/core/LogWriter.sql +23 -0
  147. package/dist/core/LoopDriver.d.ts +11 -8
  148. package/dist/core/LoopDriver.d.ts.map +1 -1
  149. package/dist/core/LoopDriver.js +163 -189
  150. package/dist/core/LoopDriver.js.map +1 -1
  151. package/dist/core/LoopDriver.sql +11 -0
  152. package/dist/core/LoopLifecycle.d.ts +32 -2
  153. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  154. package/dist/core/LoopLifecycle.js +88 -4
  155. package/dist/core/LoopLifecycle.js.map +1 -1
  156. package/dist/core/LoopLifecycle.sql +145 -28
  157. package/dist/core/LoopPolicyReader.sql +6 -0
  158. package/dist/core/MembershipMaterialization.d.ts.map +1 -1
  159. package/dist/core/MembershipMaterialization.js +6 -28
  160. package/dist/core/MembershipMaterialization.js.map +1 -1
  161. package/dist/core/ModelCall.sql +70 -0
  162. package/dist/core/MutationEffects.d.ts +5 -3
  163. package/dist/core/MutationEffects.d.ts.map +1 -1
  164. package/dist/core/MutationEffects.js +10 -28
  165. package/dist/core/MutationEffects.js.map +1 -1
  166. package/dist/core/NativeContent.d.ts +6 -0
  167. package/dist/core/NativeContent.d.ts.map +1 -0
  168. package/dist/core/NativeContent.js +16 -0
  169. package/dist/core/NativeContent.js.map +1 -0
  170. package/dist/core/NativeContent.sql +6 -0
  171. package/dist/core/NoticeChannel.js +1 -1
  172. package/dist/core/NoticeChannel.js.map +1 -1
  173. package/dist/core/OperatorConfig.js +5 -5
  174. package/dist/core/OperatorConfig.js.map +1 -1
  175. package/dist/core/PacketBuilder.d.ts +8 -5
  176. package/dist/core/PacketBuilder.d.ts.map +1 -1
  177. package/dist/core/PacketBuilder.js +117 -81
  178. package/dist/core/PacketBuilder.js.map +1 -1
  179. package/dist/core/PacketBuilder.sql +146 -0
  180. package/dist/core/PatternSelection.d.ts +28 -0
  181. package/dist/core/PatternSelection.d.ts.map +1 -0
  182. package/dist/core/PatternSelection.js +42 -0
  183. package/dist/core/PatternSelection.js.map +1 -0
  184. package/dist/core/ProblemLog.d.ts.map +1 -1
  185. package/dist/core/ProblemLog.js +0 -1
  186. package/dist/core/ProblemLog.js.map +1 -1
  187. package/dist/core/PromptFrames.d.ts +12 -0
  188. package/dist/core/PromptFrames.d.ts.map +1 -0
  189. package/dist/core/PromptFrames.js +28 -0
  190. package/dist/core/PromptFrames.js.map +1 -0
  191. package/dist/core/ProposalLifecycle.d.ts +0 -1
  192. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  193. package/dist/core/ProposalLifecycle.js +20 -19
  194. package/dist/core/ProposalLifecycle.js.map +1 -1
  195. package/dist/core/ProposalLifecycle.sql +33 -0
  196. package/dist/core/ProviderInstantiate.d.ts +1 -1
  197. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  198. package/dist/core/ProviderInstantiate.js +7 -14
  199. package/dist/core/ProviderInstantiate.js.map +1 -1
  200. package/dist/core/ReasoningView.d.ts +9 -0
  201. package/dist/core/ReasoningView.d.ts.map +1 -0
  202. package/dist/core/ReasoningView.js +47 -0
  203. package/dist/core/ReasoningView.js.map +1 -0
  204. package/dist/core/ResourceBindings.d.ts +16 -0
  205. package/dist/core/ResourceBindings.d.ts.map +1 -0
  206. package/dist/core/ResourceBindings.js +45 -0
  207. package/dist/core/ResourceBindings.js.map +1 -0
  208. package/dist/core/ResourceMutations.d.ts +5 -8
  209. package/dist/core/ResourceMutations.d.ts.map +1 -1
  210. package/dist/core/ResourceMutations.js +6 -7
  211. package/dist/core/ResourceMutations.js.map +1 -1
  212. package/dist/core/ResourceSelector.d.ts +2 -2
  213. package/dist/core/ResourceSelector.d.ts.map +1 -1
  214. package/dist/core/ResourceSelector.js +122 -62
  215. package/dist/core/ResourceSelector.js.map +1 -1
  216. package/dist/core/ResourceTransfers.d.ts +4 -2
  217. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  218. package/dist/core/ResourceTransfers.js +95 -26
  219. package/dist/core/ResourceTransfers.js.map +1 -1
  220. package/dist/core/RuntimeWorker.d.ts +5 -0
  221. package/dist/core/RuntimeWorker.d.ts.map +1 -0
  222. package/dist/core/RuntimeWorker.js +10 -0
  223. package/dist/core/RuntimeWorker.js.map +1 -0
  224. package/dist/core/RuntimeWorker.sql +5 -0
  225. package/dist/core/SchemeRegistry.d.ts +12 -16
  226. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  227. package/dist/core/SchemeRegistry.js +58 -84
  228. package/dist/core/SchemeRegistry.js.map +1 -1
  229. package/dist/core/StoredPacket.d.ts +6 -1
  230. package/dist/core/StoredPacket.d.ts.map +1 -1
  231. package/dist/core/StoredPacket.js +30 -10
  232. package/dist/core/StoredPacket.js.map +1 -1
  233. package/dist/core/StrikeRail.d.ts +9 -6
  234. package/dist/core/StrikeRail.d.ts.map +1 -1
  235. package/dist/core/StrikeRail.js +60 -113
  236. package/dist/core/StrikeRail.js.map +1 -1
  237. package/dist/core/StrikeRail.sql +12 -0
  238. package/dist/core/TerminalResult.d.ts +1 -1
  239. package/dist/core/TerminalResult.d.ts.map +1 -1
  240. package/dist/core/TerminalResult.js +2 -2
  241. package/dist/core/TerminalResult.js.map +1 -1
  242. package/dist/core/TokenCalibration.d.ts +1 -6
  243. package/dist/core/TokenCalibration.d.ts.map +1 -1
  244. package/dist/core/TokenCalibration.js +13 -9
  245. package/dist/core/TokenCalibration.js.map +1 -1
  246. package/dist/core/TokenCalibration.sql +15 -0
  247. package/dist/core/ToolInputSchema.d.ts +6 -0
  248. package/dist/core/ToolInputSchema.d.ts.map +1 -0
  249. package/dist/core/ToolInputSchema.js +43 -0
  250. package/dist/core/ToolInputSchema.js.map +1 -0
  251. package/dist/core/ToolResources.d.ts.map +1 -1
  252. package/dist/core/ToolResources.js +76 -52
  253. package/dist/core/ToolResources.js.map +1 -1
  254. package/dist/core/Turn.d.ts +5 -2
  255. package/dist/core/Turn.d.ts.map +1 -1
  256. package/dist/core/Turn.js +13 -11
  257. package/dist/core/Turn.js.map +1 -1
  258. package/dist/core/Turn.sql +25 -39
  259. package/dist/core/{SendBroadcastHandler.d.ts → TurnDispositionHandler.d.ts} +25 -17
  260. package/dist/core/TurnDispositionHandler.d.ts.map +1 -0
  261. package/dist/core/TurnDispositionHandler.js +198 -0
  262. package/dist/core/TurnDispositionHandler.js.map +1 -0
  263. package/dist/core/TurnMaterialization.d.ts +2 -3
  264. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  265. package/dist/core/TurnMaterialization.js +40 -15
  266. package/dist/core/TurnMaterialization.js.map +1 -1
  267. package/dist/core/TurnMaterialization.sql +44 -0
  268. package/dist/core/TurnOps.d.ts.map +1 -1
  269. package/dist/core/TurnOps.js +8 -64
  270. package/dist/core/TurnOps.js.map +1 -1
  271. package/dist/core/TurnRunner.d.ts +9 -12
  272. package/dist/core/TurnRunner.d.ts.map +1 -1
  273. package/dist/core/TurnRunner.js +232 -408
  274. package/dist/core/TurnRunner.js.map +1 -1
  275. package/dist/core/TurnRunner.sql +74 -0
  276. package/dist/core/TurnSources.sql +39 -0
  277. package/dist/core/WorkerControlAddress.d.ts +1 -0
  278. package/dist/core/WorkerControlAddress.d.ts.map +1 -1
  279. package/dist/core/WorkerControlAddress.js +5 -0
  280. package/dist/core/WorkerControlAddress.js.map +1 -1
  281. package/dist/core/WorkerControlHandler.d.ts +1 -3
  282. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  283. package/dist/core/WorkerControlHandler.js +41 -48
  284. package/dist/core/WorkerControlHandler.js.map +1 -1
  285. package/dist/core/WorkerName.d.ts +8 -6
  286. package/dist/core/WorkerName.d.ts.map +1 -1
  287. package/dist/core/WorkerName.js +33 -24
  288. package/dist/core/WorkerName.js.map +1 -1
  289. package/dist/core/WorkerName.sql +7 -10
  290. package/dist/core/WorkspaceGate.d.ts +1 -1
  291. package/dist/core/WorkspaceGate.d.ts.map +1 -1
  292. package/dist/core/WorkspaceGate.js +29 -6
  293. package/dist/core/WorkspaceGate.js.map +1 -1
  294. package/dist/core/ambient.sql +236 -0
  295. package/dist/core/attachments.d.ts +2 -1
  296. package/dist/core/attachments.d.ts.map +1 -1
  297. package/dist/core/attachments.js +5 -4
  298. package/dist/core/attachments.js.map +1 -1
  299. package/dist/core/caps/CapsResolve.d.ts +2 -3
  300. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  301. package/dist/core/caps/CapsResolve.js +5 -5
  302. package/dist/core/caps/CapsResolve.js.map +1 -1
  303. package/dist/core/caps/DbChannelCaps.d.ts +1 -1
  304. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  305. package/dist/core/caps/DbChannelCaps.js +4 -6
  306. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  307. package/dist/core/caps/DbEntryCaps.d.ts +2 -1
  308. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  309. package/dist/core/caps/DbEntryCaps.js +11 -17
  310. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  311. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  312. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  313. package/dist/core/caps/DbNotifyCaps.js +3 -5
  314. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  315. package/dist/core/caps/DbProjectionCaps.js +1 -1
  316. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  317. package/dist/core/caps/DbSubscriptionCaps.d.ts +1 -1
  318. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  319. package/dist/core/caps/DbSubscriptionCaps.js +5 -7
  320. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  321. package/dist/core/caps/SchemeCtxImpl.d.ts +0 -2
  322. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  323. package/dist/core/caps/SchemeCtxImpl.js +4 -20
  324. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  325. package/dist/core/env-defaults.d.ts.map +1 -1
  326. package/dist/core/env-defaults.js +4 -2
  327. package/dist/core/env-defaults.js.map +1 -1
  328. package/dist/core/file-materialization.d.ts +4 -1
  329. package/dist/core/file-materialization.d.ts.map +1 -1
  330. package/dist/core/file-materialization.js +14 -0
  331. package/dist/core/file-materialization.js.map +1 -1
  332. package/dist/core/fork.d.ts +1 -6
  333. package/dist/core/fork.d.ts.map +1 -1
  334. package/dist/core/fork.js +9 -153
  335. package/dist/core/fork.js.map +1 -1
  336. package/dist/core/fork.sql +162 -185
  337. package/dist/core/git-env.d.ts +1 -0
  338. package/dist/core/git-env.d.ts.map +1 -1
  339. package/dist/core/git-env.js +39 -2
  340. package/dist/core/git-env.js.map +1 -1
  341. package/dist/core/git-membership.d.ts.map +1 -1
  342. package/dist/core/git-membership.js +64 -48
  343. package/dist/core/git-membership.js.map +1 -1
  344. package/dist/core/git-state.d.ts.map +1 -1
  345. package/dist/core/git-state.js +25 -19
  346. package/dist/core/git-state.js.map +1 -1
  347. package/dist/core/glob_match.d.ts +4 -0
  348. package/dist/core/glob_match.d.ts.map +1 -0
  349. package/dist/core/glob_match.js +7 -0
  350. package/dist/core/glob_match.js.map +1 -0
  351. package/dist/core/maintenance.sql +6 -0
  352. package/dist/core/mutation-types.d.ts +7 -28
  353. package/dist/core/mutation-types.d.ts.map +1 -1
  354. package/dist/core/packet-inject.d.ts.map +1 -1
  355. package/dist/core/packet-inject.js +2 -3
  356. package/dist/core/packet-inject.js.map +1 -1
  357. package/dist/core/packet-wire.d.ts +8 -6
  358. package/dist/core/packet-wire.d.ts.map +1 -1
  359. package/dist/core/packet-wire.js +131 -163
  360. package/dist/core/packet-wire.js.map +1 -1
  361. package/dist/core/plurnk-uri.d.ts +1 -1
  362. package/dist/core/plurnk-uri.d.ts.map +1 -1
  363. package/dist/core/plurnk-uri.js +5 -12
  364. package/dist/core/plurnk-uri.js.map +1 -1
  365. package/dist/core/scheme-types.d.ts +3 -3
  366. package/dist/core/scheme-types.d.ts.map +1 -1
  367. package/dist/core/scheme-types.js.map +1 -1
  368. package/dist/core/sha256.d.ts +4 -0
  369. package/dist/core/sha256.d.ts.map +1 -0
  370. package/dist/core/sha256.js +6 -0
  371. package/dist/core/sha256.js.map +1 -0
  372. package/dist/core/teaching.js +1 -1
  373. package/dist/core/teaching.js.map +1 -1
  374. package/dist/core/turn-scheduler.d.ts.map +1 -1
  375. package/dist/core/turn-scheduler.js +5 -18
  376. package/dist/core/turn-scheduler.js.map +1 -1
  377. package/dist/core/turn-signals.d.ts +0 -6
  378. package/dist/core/turn-signals.d.ts.map +1 -1
  379. package/dist/core/turn-signals.js +1 -7
  380. package/dist/core/turn-signals.js.map +1 -1
  381. package/dist/core/worker-ops.sql +15 -22
  382. package/dist/core/workspace-settings.d.ts.map +1 -1
  383. package/dist/core/workspace-settings.js +18 -2
  384. package/dist/core/workspace-settings.js.map +1 -1
  385. package/dist/core/workspace-settings.sql +6 -0
  386. package/dist/digest/Digest.d.ts.map +1 -1
  387. package/dist/digest/Digest.js +27 -90
  388. package/dist/digest/Digest.js.map +1 -1
  389. package/dist/digest/DigestRender.d.ts.map +1 -1
  390. package/dist/digest/DigestRender.js +14 -54
  391. package/dist/digest/DigestRender.js.map +1 -1
  392. package/dist/digest/digest-rows.d.ts +10 -32
  393. package/dist/digest/digest-rows.d.ts.map +1 -1
  394. package/dist/digest/digest.sql +43 -18
  395. package/dist/schemes/Exec.d.ts +6 -12
  396. package/dist/schemes/Exec.d.ts.map +1 -1
  397. package/dist/schemes/Exec.js +256 -188
  398. package/dist/schemes/Exec.js.map +1 -1
  399. package/dist/schemes/ExecOutputScheme.d.ts +8 -6
  400. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  401. package/dist/schemes/ExecOutputScheme.js +33 -61
  402. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  403. package/dist/schemes/ExecutionInput.d.ts +12 -0
  404. package/dist/schemes/ExecutionInput.d.ts.map +1 -0
  405. package/dist/schemes/ExecutionInput.js +94 -0
  406. package/dist/schemes/ExecutionInput.js.map +1 -0
  407. package/dist/schemes/File.d.ts +5 -2
  408. package/dist/schemes/File.d.ts.map +1 -1
  409. package/dist/schemes/File.js +62 -92
  410. package/dist/schemes/File.js.map +1 -1
  411. package/dist/schemes/Log.d.ts.map +1 -1
  412. package/dist/schemes/Log.js +84 -79
  413. package/dist/schemes/Log.js.map +1 -1
  414. package/dist/schemes/Log.sql +183 -15
  415. package/dist/schemes/Prompt.d.ts.map +1 -1
  416. package/dist/schemes/Prompt.js +3 -12
  417. package/dist/schemes/Prompt.js.map +1 -1
  418. package/dist/schemes/QuestionTool.d.ts +5 -0
  419. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  420. package/dist/schemes/QuestionTool.js +6 -14
  421. package/dist/schemes/QuestionTool.js.map +1 -1
  422. package/dist/schemes/Skill.d.ts +12 -7
  423. package/dist/schemes/Skill.d.ts.map +1 -1
  424. package/dist/schemes/Skill.js +149 -21
  425. package/dist/schemes/Skill.js.map +1 -1
  426. package/dist/schemes/TurnSource.d.ts +12 -0
  427. package/dist/schemes/TurnSource.d.ts.map +1 -0
  428. package/dist/schemes/TurnSource.js +116 -0
  429. package/dist/schemes/TurnSource.js.map +1 -0
  430. package/dist/schemes/Worker.d.ts +3 -3
  431. package/dist/schemes/Worker.d.ts.map +1 -1
  432. package/dist/schemes/Worker.js +61 -208
  433. package/dist/schemes/Worker.js.map +1 -1
  434. package/dist/schemes/_entry-crud.d.ts +12 -15
  435. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  436. package/dist/schemes/_entry-crud.js +63 -63
  437. package/dist/schemes/_entry-crud.js.map +1 -1
  438. package/dist/schemes/_entry-crud.sql +142 -46
  439. package/dist/schemes/_entry-find.d.ts +1 -3
  440. package/dist/schemes/_entry-find.d.ts.map +1 -1
  441. package/dist/schemes/_entry-find.js +111 -112
  442. package/dist/schemes/_entry-find.js.map +1 -1
  443. package/dist/schemes/_entry-find.sql +22 -14
  444. package/dist/schemes/_entry-fts.d.ts +14 -0
  445. package/dist/schemes/_entry-fts.d.ts.map +1 -0
  446. package/dist/schemes/_entry-fts.js +82 -0
  447. package/dist/schemes/_entry-fts.js.map +1 -0
  448. package/dist/schemes/_entry-fts.sql +31 -0
  449. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  450. package/dist/schemes/_entry-graph.js +6 -14
  451. package/dist/schemes/_entry-graph.js.map +1 -1
  452. package/dist/schemes/_entry-graph.sql +29 -44
  453. package/dist/schemes/_entry-manifest.d.ts +2 -1
  454. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  455. package/dist/schemes/_entry-manifest.js +15 -12
  456. package/dist/schemes/_entry-manifest.js.map +1 -1
  457. package/dist/schemes/_entry-manifest.sql +26 -0
  458. package/dist/schemes/_entry-ops.d.ts +3 -5
  459. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  460. package/dist/schemes/_entry-ops.js +30 -43
  461. package/dist/schemes/_entry-ops.js.map +1 -1
  462. package/dist/schemes/_entry-ops.sql +5 -6
  463. package/dist/schemes/_entry-readable.d.ts +8 -0
  464. package/dist/schemes/_entry-readable.d.ts.map +1 -0
  465. package/dist/schemes/_entry-readable.js +38 -0
  466. package/dist/schemes/_entry-readable.js.map +1 -0
  467. package/dist/schemes/_entry-send.d.ts +1 -1
  468. package/dist/schemes/_entry-send.d.ts.map +1 -1
  469. package/dist/schemes/_entry-send.js +3 -3
  470. package/dist/schemes/_entry-send.js.map +1 -1
  471. package/dist/schemes/_search-index.d.ts +1 -3
  472. package/dist/schemes/_search-index.d.ts.map +1 -1
  473. package/dist/schemes/_search-index.js +79 -110
  474. package/dist/schemes/_search-index.js.map +1 -1
  475. package/dist/schemes/_search-index.sql +30 -0
  476. package/dist/schemes/exec-runtime.d.ts +1 -1
  477. package/dist/schemes/exec-runtime.d.ts.map +1 -1
  478. package/dist/schemes/exec-runtime.js.map +1 -1
  479. package/dist/server/ClientReads.d.ts +2 -2
  480. package/dist/server/ClientReads.d.ts.map +1 -1
  481. package/dist/server/ClientReads.js +5 -8
  482. package/dist/server/ClientReads.js.map +1 -1
  483. package/dist/server/Daemon.d.ts +14 -21
  484. package/dist/server/Daemon.d.ts.map +1 -1
  485. package/dist/server/Daemon.js +135 -156
  486. package/dist/server/Daemon.js.map +1 -1
  487. package/dist/server/DaemonModule.d.ts +23 -21
  488. package/dist/server/DaemonModule.d.ts.map +1 -1
  489. package/dist/server/DrainSupervisor.d.ts +8 -21
  490. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  491. package/dist/server/DrainSupervisor.js +278 -306
  492. package/dist/server/DrainSupervisor.js.map +1 -1
  493. package/dist/server/Functionality.d.ts +11 -12
  494. package/dist/server/Functionality.d.ts.map +1 -1
  495. package/dist/server/Functionality.js +129 -101
  496. package/dist/server/Functionality.js.map +1 -1
  497. package/dist/server/FunctionalityManager.d.ts +3 -5
  498. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  499. package/dist/server/FunctionalityManager.js +20 -58
  500. package/dist/server/FunctionalityManager.js.map +1 -1
  501. package/dist/server/MembersFunctionality.d.ts +5 -4
  502. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  503. package/dist/server/MembersFunctionality.js +24 -37
  504. package/dist/server/MembersFunctionality.js.map +1 -1
  505. package/dist/server/PlurnkSkill.d.ts +11 -0
  506. package/dist/server/PlurnkSkill.d.ts.map +1 -0
  507. package/dist/server/PlurnkSkill.js +41 -0
  508. package/dist/server/PlurnkSkill.js.map +1 -0
  509. package/dist/server/Retention.d.ts +22 -0
  510. package/dist/server/Retention.d.ts.map +1 -0
  511. package/dist/server/Retention.js +54 -0
  512. package/dist/server/Retention.js.map +1 -0
  513. package/dist/server/Retention.sql +36 -0
  514. package/dist/server/ServiceModules.d.ts +5 -0
  515. package/dist/server/ServiceModules.d.ts.map +1 -0
  516. package/dist/server/ServiceModules.js +10 -0
  517. package/dist/server/ServiceModules.js.map +1 -0
  518. package/dist/server/SkillsFunctionality.d.ts +14 -19
  519. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  520. package/dist/server/SkillsFunctionality.js +97 -104
  521. package/dist/server/SkillsFunctionality.js.map +1 -1
  522. package/dist/server/WorkerModelResolver.d.ts +4 -0
  523. package/dist/server/WorkerModelResolver.d.ts.map +1 -1
  524. package/dist/server/WorkerModelResolver.js +72 -39
  525. package/dist/server/WorkerModelResolver.js.map +1 -1
  526. package/dist/server/WorkspaceCapabilities.d.ts +21 -0
  527. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -0
  528. package/dist/server/{WorkerCapabilities.js → WorkspaceCapabilities.js} +40 -40
  529. package/dist/server/WorkspaceCapabilities.js.map +1 -0
  530. package/dist/server/WorkspaceResidency.d.ts +36 -0
  531. package/dist/server/WorkspaceResidency.d.ts.map +1 -0
  532. package/dist/server/WorkspaceResidency.js +199 -0
  533. package/dist/server/WorkspaceResidency.js.map +1 -0
  534. package/dist/server/client-input.d.ts +1 -4
  535. package/dist/server/client-input.d.ts.map +1 -1
  536. package/dist/server/client-input.js +4 -45
  537. package/dist/server/client-input.js.map +1 -1
  538. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  539. package/dist/server/dispatch-as-plurnk.js +4 -22
  540. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  541. package/dist/server/drain.sql +65 -42
  542. package/dist/server/envelope.d.ts +8 -0
  543. package/dist/server/envelope.d.ts.map +1 -1
  544. package/dist/server/envelope.js +9 -7
  545. package/dist/server/envelope.js.map +1 -1
  546. package/dist/server/envelope.sql +49 -13
  547. package/dist/server/lifecycle-recovery.sql +14 -17
  548. package/dist/server/logEntry.d.ts +1 -1
  549. package/dist/server/logEntry.d.ts.map +1 -1
  550. package/dist/server/logEntry.js +4 -1
  551. package/dist/server/logEntry.js.map +1 -1
  552. package/dist/server/logEntry.sql +25 -1
  553. package/dist/server/loopDocs.d.ts +2 -2
  554. package/dist/server/loopDocs.d.ts.map +1 -1
  555. package/dist/server/loopDocs.js +38 -31
  556. package/dist/server/loopDocs.js.map +1 -1
  557. package/dist/server/loopDocs.sql +1 -3
  558. package/dist/server/model-catalog.d.ts.map +1 -1
  559. package/dist/server/model-catalog.js +2 -1
  560. package/dist/server/model-catalog.js.map +1 -1
  561. package/dist/server/model-route.d.ts +1 -1
  562. package/dist/server/model-route.d.ts.map +1 -1
  563. package/dist/server/model-route.js +4 -2
  564. package/dist/server/model-route.js.map +1 -1
  565. package/dist/server/seam-entry-read.sql +3 -4
  566. package/dist/server/seam-loop.sql +2 -9
  567. package/dist/server/workspace-capabilities.sql +19 -0
  568. package/dist/service.d.ts.map +1 -1
  569. package/dist/service.js +5 -17
  570. package/dist/service.js.map +1 -1
  571. package/docs/members.md +83 -0
  572. package/docs/skills.md +50 -0
  573. package/migrations/001_workspaces.sql +53 -0
  574. package/migrations/002_workers.sql +183 -0
  575. package/migrations/003_loops.sql +326 -0
  576. package/migrations/004_inference.sql +360 -0
  577. package/migrations/005_entries.sql +207 -0
  578. package/migrations/006_log.sql +578 -0
  579. package/migrations/007_subscriptions.sql +175 -0
  580. package/migrations/008_interactions.sql +29 -0
  581. package/package.json +33 -40
  582. package/digest-sql/channel-dispositions/dispositions.sql +0 -15
  583. package/digest-sql/channel-state/state.sql +0 -6
  584. package/digest-sql/curation/curation.sql +0 -6
  585. package/digest-sql/derivations/derivations.sql +0 -4
  586. package/digest-sql/embeddings/embeddings.sql +0 -4
  587. package/digest-sql/entry-dispositions/dispositions.sql +0 -15
  588. package/digest-sql/entry-state/state.sql +0 -6
  589. package/digest-sql/token-counts/token-counts.sql +0 -2
  590. package/dist/core/EmbeddingCall.d.ts +0 -23
  591. package/dist/core/EmbeddingCall.d.ts.map +0 -1
  592. package/dist/core/EmbeddingCall.js +0 -149
  593. package/dist/core/EmbeddingCall.js.map +0 -1
  594. package/dist/core/OverflowTurn.d.ts +0 -11
  595. package/dist/core/OverflowTurn.d.ts.map +0 -1
  596. package/dist/core/OverflowTurn.js +0 -80
  597. package/dist/core/OverflowTurn.js.map +0 -1
  598. package/dist/core/Owner.d.ts +0 -8
  599. package/dist/core/Owner.d.ts.map +0 -1
  600. package/dist/core/Owner.js +0 -46
  601. package/dist/core/Owner.js.map +0 -1
  602. package/dist/core/SendBroadcastHandler.d.ts.map +0 -1
  603. package/dist/core/SendBroadcastHandler.js +0 -159
  604. package/dist/core/SendBroadcastHandler.js.map +0 -1
  605. package/dist/core/VectorPump.d.ts +0 -28
  606. package/dist/core/VectorPump.d.ts.map +0 -1
  607. package/dist/core/VectorPump.js +0 -130
  608. package/dist/core/VectorPump.js.map +0 -1
  609. package/dist/core/owner.sql +0 -11
  610. package/dist/core/worker-settings.d.ts +0 -10
  611. package/dist/core/worker-settings.d.ts.map +0 -1
  612. package/dist/core/worker-settings.js +0 -53
  613. package/dist/core/worker-settings.js.map +0 -1
  614. package/dist/schemes/_entry-chunk.d.ts +0 -14
  615. package/dist/schemes/_entry-chunk.d.ts.map +0 -1
  616. package/dist/schemes/_entry-chunk.js +0 -165
  617. package/dist/schemes/_entry-chunk.js.map +0 -1
  618. package/dist/schemes/_entry-semantic.d.ts +0 -63
  619. package/dist/schemes/_entry-semantic.d.ts.map +0 -1
  620. package/dist/schemes/_entry-semantic.js +0 -299
  621. package/dist/schemes/_entry-semantic.js.map +0 -1
  622. package/dist/schemes/_entry-semantic.sql +0 -99
  623. package/dist/schemes/cosine.d.ts +0 -4
  624. package/dist/schemes/cosine.d.ts.map +0 -1
  625. package/dist/schemes/cosine.js +0 -9
  626. package/dist/schemes/cosine.js.map +0 -1
  627. package/dist/server/WorkerCapabilities.d.ts +0 -21
  628. package/dist/server/WorkerCapabilities.d.ts.map +0 -1
  629. package/dist/server/WorkerCapabilities.js.map +0 -1
  630. package/dist/server/WorkerResidency.d.ts +0 -40
  631. package/dist/server/WorkerResidency.d.ts.map +0 -1
  632. package/dist/server/WorkerResidency.js +0 -283
  633. package/dist/server/WorkerResidency.js.map +0 -1
  634. package/dist/server/seam-log-read.sql +0 -21
  635. package/dist/server/worker-capabilities.sql +0 -28
  636. package/migrations/001_schema.sql +0 -2207
@@ -1,4 +1,3 @@
1
- import { type CapabilityPolicy } from "@plurnk/plurnk-contracts";
2
1
  import type { Db } from "./Db.ts";
3
2
  export type WorkerNameRejection = "invalid" | "reserved";
4
3
  export type WorkerOrigin = "model" | "client" | "_plurnk";
@@ -8,12 +7,13 @@ export interface WorkerNameClaim {
8
7
  }
9
8
  interface AutoWorkerOptions {
10
9
  workspaceId: number;
11
- prefix: string;
12
- qualifier?: string;
13
10
  parentWorkerId?: number;
14
11
  origin: WorkerOrigin;
15
12
  forkSnapshot?: boolean;
16
- capabilityBound?: CapabilityPolicy;
13
+ }
14
+ export declare class WorkerNameConflictError extends Error {
15
+ readonly workerName: string;
16
+ constructor(workerName: string);
17
17
  }
18
18
  export declare class WorkerNameError extends Error {
19
19
  readonly workerName: string;
@@ -24,11 +24,13 @@ export declare class WorkerNameError extends Error {
24
24
  }
25
25
  export default class WorkerName {
26
26
  #private;
27
+ static forId(db: Db, workerId: number): Promise<string>;
27
28
  static rejection(workerName: string): WorkerNameRejection | null;
28
29
  static assert(workerName: string): string;
29
- static ordinal(prefix: string, ordinal: number, qualifier?: string): string;
30
+ static short(): string;
30
31
  static claimAuto(db: Db, options: AutoWorkerOptions): Promise<WorkerNameClaim>;
31
- static ensureDefaultConversation(db: Db, options: Omit<AutoWorkerOptions, "parentWorkerId" | "qualifier" | "origin">): Promise<WorkerNameClaim>;
32
+ static claimNamed(db: Db, name: string, options: AutoWorkerOptions): Promise<WorkerNameClaim>;
33
+ static ensureDefaultConversation(db: Db, options: Pick<AutoWorkerOptions, "workspaceId">): Promise<WorkerNameClaim>;
32
34
  }
33
35
  export {};
34
36
  //# sourceMappingURL=WorkerName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerName.d.ts","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,gBAAgB,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,YAAY,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAY7D;CACJ;AAID,MAAM,CAAC,OAAO,OAAO,UAAU;;IAG3B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAG/D;IAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIxC;IAID,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAU1E;IAsDD,OAAa,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAEnF;IAID,OAAa,yBAAyB,CAClC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,QAAQ,CAAC,GAC5E,OAAO,CAAC,eAAe,CAAC,CAI1B;CACJ"}
1
+ {"version":3,"file":"WorkerName.d.ts","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,UAAU,EAAE,MAAM,EAI7B;CACJ;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,YAAY,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAY7D;CACJ;AAID,MAAM,CAAC,OAAO,OAAO,UAAU;;IAG3B,OAAa,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5D;IAED,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAG/D;IAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIxC;IAED,MAAM,CAAC,KAAK,IAAI,MAAM,CAErB;IA0CD,OAAa,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAEnF;IAED,OAAa,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAWlG;IAID,OAAa,yBAAyB,CAClC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAChD,OAAO,CAAC,eAAe,CAAC,CAI1B;CACJ"}
@@ -1,4 +1,13 @@
1
1
  import { RESERVED_AUTHORITIES, WORKER_NAME, } from "@plurnk/plurnk-contracts";
2
+ import { randomBytes } from "node:crypto";
3
+ export class WorkerNameConflictError extends Error {
4
+ workerName;
5
+ constructor(workerName) {
6
+ super(`Worker '${workerName}' already exists in this workspace.`);
7
+ this.name = "WorkerNameConflictError";
8
+ this.workerName = workerName;
9
+ }
10
+ }
2
11
  export class WorkerNameError extends Error {
3
12
  workerName;
4
13
  rejection;
@@ -21,7 +30,13 @@ export class WorkerNameError extends Error {
21
30
  // {§worker-name-minting} Model/client minting only; internal reserved actors and
22
31
  // generic URI ingestion have their own contracts.
23
32
  export default class WorkerName {
24
- static #RESERVED = new Set([...RESERVED_AUTHORITIES, "~"]);
33
+ static #RESERVED = new Set(RESERVED_AUTHORITIES);
34
+ static async forId(db, workerId) {
35
+ const row = await db.worker_name_by_id.get({ worker_id: workerId });
36
+ if (row === undefined)
37
+ throw new Error(`Worker ${workerId} does not exist.`);
38
+ return row.name;
39
+ }
25
40
  static rejection(workerName) {
26
41
  if (WorkerName.#RESERVED.has(workerName.toLowerCase()))
27
42
  return "reserved";
@@ -33,19 +48,8 @@ export default class WorkerName {
33
48
  throw new WorkerNameError(workerName, rejection);
34
49
  return workerName;
35
50
  }
36
- // Preserve the semantic suffix and shorten only the inherited prefix until
37
- // the contracts predicate admits the generated ordinal. {§worker-auto-name}
38
- static ordinal(prefix, ordinal, qualifier) {
39
- if (!Number.isSafeInteger(ordinal) || ordinal < 1) {
40
- throw new Error(`Worker ordinal must be a positive safe integer; received ${ordinal}.`);
41
- }
42
- const suffix = `${qualifier === undefined ? "" : `-${qualifier}`}-${ordinal}`;
43
- for (let length = prefix.length; length > 0; length--) {
44
- const candidate = `${prefix.slice(0, length)}${suffix}`;
45
- if (WorkerName.rejection(candidate) === null)
46
- return candidate;
47
- }
48
- throw new Error(`Worker ordinal suffix '${suffix}' leaves no mintable name prefix.`);
51
+ static short() {
52
+ return randomBytes(4).toString("hex");
49
53
  }
50
54
  static async #defaultConversation(db, workspaceId) {
51
55
  return await db.worker_name_get_default_conversation.get({
@@ -53,22 +57,15 @@ export default class WorkerName {
53
57
  });
54
58
  }
55
59
  static async #claimAuto(db, options, defaultConversation) {
56
- const { workspaceId, prefix, qualifier, parentWorkerId, origin, forkSnapshot = false, capabilityBound = {}, } = options;
57
- const namePrefix = `${prefix}${qualifier === undefined ? "" : `-${qualifier}`}-%`;
58
- const count = await db.worker_name_count.get({
59
- workspace_id: workspaceId,
60
- name_prefix: namePrefix,
61
- });
62
- let ordinal = (count?.n ?? 0) + 1;
60
+ const { workspaceId, parentWorkerId, origin, forkSnapshot = false, } = options;
63
61
  while (true) {
64
62
  const claimed = await db.worker_name_claim.get({
65
63
  workspace_id: workspaceId,
66
- name: WorkerName.ordinal(prefix, ordinal, qualifier),
64
+ name: WorkerName.short(),
67
65
  parent_worker_id: parentWorkerId ?? null,
68
66
  origin,
69
67
  default_conversation: defaultConversation ? 1 : 0,
70
68
  fork_snapshot: forkSnapshot ? 1 : 0,
71
- capability_bound: JSON.stringify(capabilityBound),
72
69
  });
73
70
  if (claimed !== undefined)
74
71
  return claimed;
@@ -77,7 +74,6 @@ export default class WorkerName {
77
74
  if (existing !== undefined)
78
75
  return existing;
79
76
  }
80
- ordinal++;
81
77
  }
82
78
  }
83
79
  // A generated name is not minted until this atomic claim creates its worker.
@@ -85,6 +81,19 @@ export default class WorkerName {
85
81
  static async claimAuto(db, options) {
86
82
  return await WorkerName.#claimAuto(db, options, false);
87
83
  }
84
+ static async claimNamed(db, name, options) {
85
+ const claimed = await db.worker_name_claim.get({
86
+ workspace_id: options.workspaceId,
87
+ name: WorkerName.assert(name),
88
+ parent_worker_id: options.parentWorkerId ?? null,
89
+ origin: options.origin,
90
+ default_conversation: 0,
91
+ fork_snapshot: options.forkSnapshot ? 1 : 0,
92
+ });
93
+ if (claimed === undefined)
94
+ throw new WorkerNameConflictError(name);
95
+ return claimed;
96
+ }
88
97
  // The stable default conversation is both an auto-name allocation and the
89
98
  // workspace's one durable default role; both predicates share one write.
90
99
  static async ensureDefaultConversation(db, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerName.js","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkerName.js","sourceRoot":"","sources":["../../src/core/WorkerName.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,5 @@
1
1
  -- Automatic worker allocation. SPEC {§worker-auto-name}.
2
2
 
3
- -- PREP: worker_name_count
4
- -- A starting hint only. The atomic claim below remains authoritative because
5
- -- explicit names and concurrent allocators can occupy any candidate.
6
- SELECT COUNT(*) AS n
7
- FROM workers
8
- WHERE workspace_id = $workspace_id AND name LIKE $name_prefix;
9
-
10
3
  -- PREP: worker_name_claim
11
4
  -- Claiming the literal and creating its worker are one SQLite write statement.
12
5
  -- The default-conversation predicate is enabled only by
@@ -14,16 +7,20 @@ WHERE workspace_id = $workspace_id AND name LIKE $name_prefix;
14
7
  -- on the generated literal.
15
8
  INSERT INTO workers (
16
9
  workspace_id, name, parent_worker_id, origin, default_conversation,
17
- capability_bound, ambient_event_cursor, fork_event_boundary
10
+ ambient_event_cursor, fork_event_boundary,
11
+ model_route_id, spawn_model_route_id, reasoning_policy
18
12
  )
19
13
  SELECT $workspace_id, $name, $parent_worker_id, $origin, $default_conversation,
20
- $capability_bound,
21
14
  CASE WHEN $fork_snapshot = 1 THEN (
22
15
  SELECT ambient_event_cursor FROM workers WHERE id = $parent_worker_id
23
16
  ) ELSE NULL END,
24
17
  CASE WHEN $fork_snapshot = 1 THEN COALESCE((
25
18
  SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id
26
- ), 0) ELSE NULL END
19
+ ), 0) ELSE NULL END,
20
+ -- {§worker-fork-trigger}: a branch copies durable generation policy by value, then diverges.
21
+ CASE WHEN $fork_snapshot = 1 THEN (SELECT model_route_id FROM workers WHERE id = $parent_worker_id) END,
22
+ CASE WHEN $fork_snapshot = 1 THEN (SELECT spawn_model_route_id FROM workers WHERE id = $parent_worker_id) END,
23
+ CASE WHEN $fork_snapshot = 1 THEN (SELECT reasoning_policy FROM workers WHERE id = $parent_worker_id) END
27
24
  WHERE NOT EXISTS (
28
25
  SELECT 1
29
26
  FROM workers
@@ -7,7 +7,7 @@ export interface WorkspaceExclusive {
7
7
  export default class WorkspaceGate {
8
8
  #private;
9
9
  constructor(isDescendant: (workerId: number, rootWorkerId: number) => Promise<boolean>);
10
- acquireTurn(workspaceId: number, workerId: number): Promise<Release>;
10
+ acquireTurn(workspaceId: number, workerId: number, signal?: AbortSignal): Promise<Release>;
11
11
  requestExclusive(workspaceId: number): WorkspaceExclusive;
12
12
  tryExclusive(workspaceId: number): WorkspaceExclusive | null;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceGate.d.ts","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAuB1B,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACnB;AAMD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAI9B,YAAY,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAErF;IAED,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMnE;IAED,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA8CxD;IAMD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAiC3D;CAqFJ"}
1
+ {"version":3,"file":"WorkspaceGate.d.ts","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAuB1B,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACnB;AAMD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAI9B,YAAY,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAErF;IAED,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBzF;IAED,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA8CxD;IAMD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAiC3D;CA2FJ"}
@@ -8,10 +8,27 @@ export default class WorkspaceGate {
8
8
  constructor(isDescendant) {
9
9
  this.#isDescendant = isDescendant;
10
10
  }
11
- acquireTurn(workspaceId, workerId) {
11
+ acquireTurn(workspaceId, workerId, signal) {
12
+ if (signal?.aborted === true)
13
+ return Promise.reject(signal.reason);
12
14
  const state = this.#state(workspaceId);
13
15
  return new Promise((resolve, reject) => {
14
- state.turns.push({ workerId, resolve, reject });
16
+ const clear = () => signal?.removeEventListener("abort", cancel);
17
+ const request = {
18
+ workerId,
19
+ resolve: (release) => { clear(); resolve(release); },
20
+ reject: (error) => { clear(); reject(error); },
21
+ };
22
+ const cancel = () => {
23
+ const index = state.turns.indexOf(request);
24
+ if (index < 0)
25
+ return;
26
+ state.turns.splice(index, 1);
27
+ request.reject(signal?.reason);
28
+ this.#requestPump(workspaceId, state);
29
+ };
30
+ signal?.addEventListener("abort", cancel, { once: true });
31
+ state.turns.push(request);
15
32
  this.#requestPump(workspaceId, state);
16
33
  });
17
34
  }
@@ -67,7 +84,7 @@ export default class WorkspaceGate {
67
84
  // Capability snapshots cannot wait behind a proposal that may require the
68
85
  // very client issuing the mutation. Acquire synchronously only at a fully
69
86
  // quiescent boundary; otherwise the caller returns 409 and retries after
70
- // settling current work. {§module-worker-quiescence}
87
+ // settling current work. {§module-workspace-quiescence}
71
88
  tryExclusive(workspaceId) {
72
89
  const state = this.#state(workspaceId);
73
90
  if (state.readers !== 0
@@ -111,9 +128,15 @@ export default class WorkspaceGate {
111
128
  if (state.exclusive) {
112
129
  if (state.exclusiveTurns !== 0 || state.exclusiveRoot === null)
113
130
  return;
114
- for (let index = 0; index < state.turns.length; index++) {
115
- const request = state.turns[index];
116
- if (!await this.#isDescendant(request.workerId, state.exclusiveRoot))
131
+ for (const request of [...state.turns]) {
132
+ const root = state.exclusiveRoot;
133
+ const allowed = await this.#isDescendant(request.workerId, root);
134
+ if (!state.exclusive || state.exclusiveRoot !== root) {
135
+ this.#requestPump(workspaceId, state);
136
+ return;
137
+ }
138
+ const index = state.turns.indexOf(request);
139
+ if (index < 0 || !allowed)
117
140
  continue;
118
141
  state.turns.splice(index, 1);
119
142
  state.exclusiveTurns = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceGate.js","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkspaceGate.js","sourceRoot":"","sources":["../../src/core/WorkspaceGate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,236 @@
1
+ -- The ambient activity feed: what a worker's siblings and parent observe of it. The process
2
+ -- triggers that publish it ({§db-process-triggers}) and the cursor statements TurnMaterialization
3
+ -- pulls it with.
4
+
5
+ -- INIT: ambient_child_wake_revision
6
+ DROP TRIGGER IF EXISTS ambient_child_wake_revision;
7
+ CREATE TRIGGER ambient_child_wake_revision
8
+ AFTER INSERT ON ambient_events
9
+ WHEN NEW.kind = 'loop_termination'
10
+ BEGIN
11
+ UPDATE workers SET wake_revision = wake_revision + 1
12
+ WHERE id = NEW.target_parent_worker_id;
13
+ END;
14
+
15
+ -- INIT: workers_capture_ambient_baseline
16
+ -- A worker begins after the history that predates its existence. This trigger
17
+ -- runs in the worker INSERT statement, so an occurrence is either in the
18
+ -- baseline or after it. Fork INSERTs supply their own cursor/boundary and skip
19
+ -- this ordinary-worker baseline. {§env-delta-log-pull}
20
+ DROP TRIGGER IF EXISTS workers_capture_ambient_baseline;
21
+ CREATE TRIGGER workers_capture_ambient_baseline
22
+ AFTER INSERT ON workers
23
+ WHEN NEW.ambient_event_cursor IS NULL
24
+ BEGIN
25
+ UPDATE workers
26
+ SET ambient_event_cursor = COALESCE((
27
+ SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = NEW.workspace_id
28
+ ), 0)
29
+ WHERE id = NEW.id;
30
+ END;
31
+
32
+ -- INIT: loops_append_ambient_event
33
+ -- A child terminal transition is an occurrence addressed only to its direct
34
+ -- parent. Directly inserted fork history never crosses this transition and
35
+ -- therefore cannot fabricate a new conclusion event. The occurrence carries no
36
+ -- target: it is a message from the child, and a commons-shaped
37
+ -- `worker:///name` would name an entry the child never wrote (#567).
38
+ DROP TRIGGER IF EXISTS loops_append_ambient_event;
39
+ CREATE TRIGGER loops_append_ambient_event
40
+ AFTER UPDATE OF status ON loops
41
+ WHEN NEW.status IN (200, 413, 429, 499, 500, 504, 508) AND OLD.status NOT IN (200, 413, 429, 499, 500, 504, 508)
42
+ BEGIN
43
+ INSERT INTO ambient_events (
44
+ workspace_id, producer_worker_id, target_parent_worker_id,
45
+ workspace_broadcast, kind, source_record_id, source,
46
+ op, scheme, pathname,
47
+ tx, mimetype_tx, rx, mimetype_rx, status_rx, state, terminated_by
48
+ )
49
+ SELECT w.workspace_id, NEW.worker_id, w.parent_worker_id,
50
+ 0, 'loop_termination', NEW.id, NULL,
51
+ 'SEND', NULL, NULL,
52
+ '', 'text/plain', NEW.terminal_result, 'application/json',
53
+ json_extract(NEW.terminal_result, '$.status'), 'resolved', NEW.terminated_by
54
+ FROM workers w
55
+ WHERE w.id = NEW.worker_id
56
+ AND w.parent_worker_id IS NOT NULL
57
+ -- {§env-delta-child-termination}: runtime administrative work is not a
58
+ -- delegated conclusion. A spawn failing before its first turn still is.
59
+ AND (
60
+ NOT EXISTS (SELECT 1 FROM turns t WHERE t.loop_id = NEW.id)
61
+ OR EXISTS (
62
+ SELECT 1
63
+ FROM turns t
64
+ WHERE t.loop_id = NEW.id
65
+ AND NOT (t.producer = '_plurnk' AND t.kind IN ('operation', 'maintenance'))
66
+ )
67
+ );
68
+ END;
69
+
70
+ -- INIT: log_entries_append_ambient_event_insert
71
+ -- Every final op-bearing child row is parent activity. A successful operation
72
+ -- whose landed effects touch worker:/// additionally acquires the workspace
73
+ -- audience. Observer rows and copied fork history cannot republish themselves.
74
+ DROP TRIGGER IF EXISTS log_entries_append_ambient_event_insert;
75
+ CREATE TRIGGER log_entries_append_ambient_event_insert
76
+ AFTER INSERT ON log_entries
77
+ WHEN NEW.state != 'proposed'
78
+ BEGIN
79
+ INSERT INTO ambient_events (
80
+ workspace_id, producer_worker_id, target_parent_worker_id,
81
+ workspace_broadcast, kind, source_record_id, at, source,
82
+ op, signal,
83
+ scheme, username, password, hostname, port, pathname, query, fragment,
84
+ line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
85
+ state, outcome, attrs
86
+ )
87
+ SELECT workspace_id, producer_worker_id, target_parent_worker_id,
88
+ workspace_broadcast, 'activity', source_record_id, at, source,
89
+ op, signal,
90
+ scheme, username, password, hostname, port, pathname, query, fragment,
91
+ line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
92
+ state, outcome, attrs
93
+ FROM ambient_activity_candidates
94
+ WHERE source_record_id = NEW.id;
95
+
96
+ UPDATE log_entries
97
+ SET ambient_event_id = (
98
+ SELECT id FROM ambient_events
99
+ WHERE producer_worker_id = NEW.worker_id
100
+ AND kind = 'activity'
101
+ AND source_record_id = NEW.id
102
+ )
103
+ WHERE id = NEW.id
104
+ AND EXISTS (
105
+ SELECT 1 FROM ambient_events
106
+ WHERE producer_worker_id = NEW.worker_id
107
+ AND kind = 'activity'
108
+ AND source_record_id = NEW.id
109
+ );
110
+ END;
111
+
112
+ -- INIT: log_entries_append_ambient_event_resolve
113
+ -- A proposed operation becomes activity only when its lifecycle settles.
114
+ DROP TRIGGER IF EXISTS log_entries_append_ambient_event_resolve;
115
+ CREATE TRIGGER log_entries_append_ambient_event_resolve
116
+ AFTER UPDATE OF state, status_rx, rx, outcome ON log_entries
117
+ WHEN OLD.state = 'proposed' AND NEW.state != 'proposed'
118
+ BEGIN
119
+ INSERT INTO ambient_events (
120
+ workspace_id, producer_worker_id, target_parent_worker_id,
121
+ workspace_broadcast, kind, source_record_id, at, source,
122
+ op, signal,
123
+ scheme, username, password, hostname, port, pathname, query, fragment,
124
+ line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
125
+ state, outcome, attrs
126
+ )
127
+ SELECT workspace_id, producer_worker_id, target_parent_worker_id,
128
+ workspace_broadcast, 'activity', source_record_id, at, source,
129
+ op, signal,
130
+ scheme, username, password, hostname, port, pathname, query, fragment,
131
+ line_marker, tx, mimetype_tx, rx, mimetype_rx, status_rx,
132
+ state, outcome, attrs
133
+ FROM ambient_activity_candidates
134
+ WHERE source_record_id = NEW.id;
135
+
136
+ UPDATE log_entries
137
+ SET ambient_event_id = (
138
+ SELECT id FROM ambient_events
139
+ WHERE producer_worker_id = NEW.worker_id
140
+ AND kind = 'activity'
141
+ AND source_record_id = NEW.id
142
+ )
143
+ WHERE id = NEW.id
144
+ AND EXISTS (
145
+ SELECT 1 FROM ambient_events
146
+ WHERE producer_worker_id = NEW.worker_id
147
+ AND kind = 'activity'
148
+ AND source_record_id = NEW.id
149
+ );
150
+ END;
151
+
152
+ -- PREP: engine_initialize_ambient_cursor
153
+ -- Worker creation owns the baseline, and fork creation owns its inherited
154
+ -- cursor/boundary. Packet assembly merely verifies that durable invariant.
155
+ SELECT ambient_event_cursor
156
+ FROM workers
157
+ WHERE id = $worker_id
158
+ AND workspace_id = $workspace_id;
159
+
160
+ -- PREP: engine_pull_ambient_events
161
+ -- One SQLite snapshot captures both ends of the closed observation window.
162
+ -- The LEFT JOIN returns the boundary even when the window contains no event.
163
+ WITH observation AS (
164
+ SELECT w.ambient_event_cursor AS cursor,
165
+ w.parent_worker_id,
166
+ w.fork_event_boundary,
167
+ COALESCE(
168
+ (SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id),
169
+ w.ambient_event_cursor,
170
+ 0
171
+ ) AS boundary
172
+ FROM workers w
173
+ WHERE w.id = $worker_id AND w.workspace_id = $workspace_id
174
+ )
175
+ SELECT o.cursor, o.boundary,
176
+ ae.id AS event_id, ae.producer_worker_id, producer.name AS producer_worker_name,
177
+ ae.kind, ae.source, ae.at,
178
+ ae.op, ae.signal,
179
+ ae.scheme, ae.username, ae.password, ae.hostname, ae.port,
180
+ ae.pathname, ae.query, ae.fragment, ae.line_marker,
181
+ ae.tx, ae.mimetype_tx, ae.rx, ae.mimetype_rx,
182
+ ae.state, ae.outcome, ae.attrs,
183
+ ae.status_rx, ae.terminated_by
184
+ FROM observation o
185
+ LEFT JOIN ambient_events ae
186
+ ON ae.workspace_id = $workspace_id
187
+ AND ae.id > o.cursor
188
+ AND ae.id <= o.boundary
189
+ AND ae.producer_worker_id != $worker_id
190
+ AND (
191
+ ae.target_parent_worker_id = $worker_id
192
+ OR ae.workspace_broadcast = 1
193
+ OR (
194
+ o.fork_event_boundary IS NOT NULL
195
+ AND ae.target_parent_worker_id = o.parent_worker_id
196
+ AND ae.id <= o.fork_event_boundary
197
+ )
198
+ )
199
+ LEFT JOIN workers producer ON producer.id = ae.producer_worker_id
200
+ ORDER BY ae.id;
201
+
202
+ -- PREP: engine_insert_ambient_delta
203
+ -- Materialize one occurrence into the observer's self-contained log. The
204
+ -- targeted conflict rule makes crash replay idempotent without swallowing any
205
+ -- unrelated sequence, FK, or shape violation.
206
+ INSERT INTO log_entries (
207
+ worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id,
208
+ op, signal,
209
+ scheme, username, password, hostname, port, pathname, query, fragment,
210
+ lineMarker, tx, mimetype_tx,
211
+ rx, mimetype_rx, status_rx, weight, state, outcome, initial_folded, attrs
212
+ ) VALUES (
213
+ $worker_id, $loop_id, $turn_id, $sequence, $at, '_plurnk', $source, $event_id,
214
+ $op, $signal,
215
+ $scheme, $username, $password, $hostname, $port, $pathname, $query, $fragment,
216
+ $line_marker, $tx, $mimetype_tx,
217
+ $rx, $mimetype_rx, $status, $weight, $state, $outcome, $folded, $attrs
218
+ )
219
+ ON CONFLICT(worker_id, ambient_event_id) WHERE ambient_event_id IS NOT NULL DO NOTHING
220
+ RETURNING id;
221
+
222
+ -- PREP: engine_ambient_delta_id
223
+ -- Crash replay may find the observation row already inserted but its copied
224
+ -- classifications incomplete. Resolve that row so idempotent tag writes can finish.
225
+ SELECT id FROM log_entries WHERE worker_id = $worker_id AND ambient_event_id = $event_id;
226
+
227
+ -- PREP: engine_advance_ambient_cursor
228
+ -- Advance only from the snapshot that was actually materialized. A concurrent
229
+ -- pull winning the CAS is safe; a loser replays idempotently on its next turn.
230
+ UPDATE workers
231
+ SET ambient_event_cursor = $boundary
232
+ WHERE id = $worker_id
233
+ AND workspace_id = $workspace_id
234
+ AND ambient_event_cursor IS $cursor
235
+ AND $boundary >= ambient_event_cursor
236
+ RETURNING ambient_event_cursor;
@@ -7,6 +7,7 @@ export interface AttachmentRow {
7
7
  export declare const ATTACHMENT_KINDS: readonly AttachmentRow[];
8
8
  export declare const imageWeight: (width: number, height: number) => number;
9
9
  export declare const PDF_TOKENS_PER_PAGE = 1500;
10
- export declare const pdfWeight: (pages: number) => number;
10
+ export declare const PDF_BYTES_PER_TOKEN = 4;
11
+ export declare const pdfWeight: (pages: number | null, bytes: number) => number;
11
12
  export declare const acceptedKinds: (modalities: ReadonlySet<InputModality>) => readonly AttachmentKind[];
12
13
  //# sourceMappingURL=attachments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CACpC;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAGnD,CAAC;AAGH,eAAO,MAAM,WAAW,UAAW,MAAM,UAAU,MAAM,KAAG,MAA2C,CAAC;AAIxG,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,MAAqC,CAAC;AAEhF,eAAO,MAAM,aAAa,eAAgB,WAAW,CAAC,aAAa,CAAC,KAAG,SAAS,cAAc,EACL,CAAC"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CACpC;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAGnD,CAAC;AAGH,eAAO,MAAM,WAAW,UAAW,MAAM,UAAU,MAAM,KAAG,MAA2C,CAAC;AAIxG,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,SAAS,UAAW,MAAM,GAAG,IAAI,SAAS,MAAM,KAAG,MACyB,CAAC;AAE1F,eAAO,MAAM,aAAa,eAAgB,WAAW,CAAC,aAAa,CAAC,KAAG,SAAS,cAAc,EACL,CAAC"}
@@ -2,11 +2,12 @@ export const ATTACHMENT_KINDS = Object.freeze([
2
2
  { kind: "image", modality: "image" },
3
3
  { kind: "pdf", modality: "pdf" },
4
4
  ]);
5
- // A picture's weight in the readout: an estimate by pixels.
5
+ // Stable curation weight by pixels, not a provider-token measurement.
6
6
  export const imageWeight = (width, height) => Math.ceil((width * height) / 750);
7
- // A document's weight in the readout: an estimate by pages, at the low end of what providers
8
- // bill per page, corrected by the provider's reported usage like every other weight.
7
+ // Stable curation weight by pages; calibration adjusts capacity, never this cost. A document whose
8
+ // page tree is unreadable (a compressed object stream) weighs by its bytes instead.
9
9
  export const PDF_TOKENS_PER_PAGE = 1500;
10
- export const pdfWeight = (pages) => pages * PDF_TOKENS_PER_PAGE;
10
+ export const PDF_BYTES_PER_TOKEN = 4;
11
+ export const pdfWeight = (pages, bytes) => pages === null ? Math.ceil(bytes / PDF_BYTES_PER_TOKEN) : pages * PDF_TOKENS_PER_PAGE;
11
12
  export const acceptedKinds = (modalities) => ATTACHMENT_KINDS.filter((row) => modalities.has(row.modality)).map((row) => row.kind);
12
13
  //# sourceMappingURL=attachments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,gBAAgB,GAA6B,MAAM,CAAC,MAAM,CAAC;IACpE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IACpC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;CACnC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AAExG,6FAA6F;AAC7F,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,GAAG,mBAAmB,CAAC;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAsC,EAA6B,EAAE,CAC/F,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/core/attachments.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,gBAAgB,GAA6B,MAAM,CAAC,MAAM,CAAC;IACpE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IACpC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;CACnC,CAAC,CAAC;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AAExG,mGAAmG;AACnG,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,KAAa,EAAU,EAAE,CACrE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,mBAAmB,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAsC,EAA6B,EAAE,CAC/F,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
@@ -1,9 +1,8 @@
1
1
  import type { PlurnkSchemeContext } from "../scheme-types.ts";
2
2
  export default class CapsResolve {
3
- static entry(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string, ownerId: number): Promise<{
3
+ static entry(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string): Promise<{
4
4
  entryId: number;
5
- workerId: number;
6
5
  } | null>;
7
- static entryId(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string, ownerId: number): Promise<number | null>;
6
+ static entryId(ctx: PlurnkSchemeContext, scheme: string, authority: string, pathname: string): Promise<number | null>;
8
7
  }
9
8
  //# sourceMappingURL=CapsResolve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CapsResolve.d.ts","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,OAAa,KAAK,CACd,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAKvD;IAED,OAAa,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE3I;CACJ"}
1
+ {"version":3,"file":"CapsResolve.d.ts","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,OAAa,KAAK,CACd,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAKrC;IAED,OAAa,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1H;CACJ"}
@@ -3,14 +3,14 @@
3
3
  // through EntryCrud (which resolves internally). Static delegation, not a base
4
4
  // class — the caps call it, they don't inherit it.
5
5
  export default class CapsResolve {
6
- static async entry(ctx, scheme, authority, pathname, ownerId) {
6
+ static async entry(ctx, scheme, authority, pathname) {
7
7
  const row = await ctx.db.crud_find_workspace_entry.get({
8
- workspace_id: ctx.workspaceId, owner_id: ownerId, scheme, authority, pathname,
8
+ workspace_id: ctx.workspaceId, scheme, authority, pathname,
9
9
  });
10
- return row === undefined ? null : { entryId: row.id, workerId: ownerId };
10
+ return row === undefined ? null : { entryId: row.id };
11
11
  }
12
- static async entryId(ctx, scheme, authority, pathname, ownerId) {
13
- return (await CapsResolve.entry(ctx, scheme, authority, pathname, ownerId))?.entryId ?? null;
12
+ static async entryId(ctx, scheme, authority, pathname) {
13
+ return (await CapsResolve.entry(ctx, scheme, authority, pathname))?.entryId ?? null;
14
14
  }
15
15
  }
16
16
  //# sourceMappingURL=CapsResolve.js.map