@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
package/dist/core/fork.js CHANGED
@@ -1,162 +1,18 @@
1
1
  // Fork a worker — branch the log, share the workspace (SPEC {§machine-processes}).
2
- //
3
- // A fork is a new worker in the same workspace (`parent_worker_id` records the lineage),
4
- // holding a deep copy of the parent's log: loops → turns → entries, with their
5
- // durable log evidence and current projection with attribution (`origin`/`source`) intact. It copies
6
- // nothing of the shared WORLD — commons-owned entries and the overlay are shared, never
7
- // copied, because the worker never owned them. Worker-owned entries follow the
8
- // registered scheme's explicit inheritance disposition; only quiescent snapshots
9
- // are owner-remapped parent → branch. Its ambient observation cursor is copied
10
- // with inherited history, then diverges independently.
2
+ // The branch's claimed row is the fork: workers_fork_copies_history copies the parent's
3
+ // history inside that INSERT ({§worker-fork-trigger}, fork.sql).
11
4
  import WorkerName from "./WorkerName.js";
12
- import { isGeneratedPathname } from "./plurnk-uri.js";
13
5
  export default class Fork {
14
- // Terminal loop statuses ({§lifecycle-terms}) — inherited loops outside this set are clamped to 200.
15
- static #TERMINAL_LOOP = new Set([200, 413, 429, 499, 500, 504, 508]);
16
- static async fork(db, parentWorkerId, name, capabilityBound, entryInheritance) {
17
- const parent = await db.fork_get_worker.get({ id: parentWorkerId });
6
+ static async fork(db, parentWorkerId, name) {
7
+ const parent = await db.worker_get.get({ id: parentWorkerId });
18
8
  if (parent === undefined)
19
9
  throw new Error(`fork: worker ${parentWorkerId} not found`);
20
- // {§worker-scheme-fork}, {§machine-processes-worker-origin} — name the branch at instantiation
21
- // (immutable after). An explicit name wins; the default
22
- // is the next free `<parent>-fork-<N>` admitted by {§worker-name-minting}.
10
+ // {§worker-auto-name} The same allocator serves addressless WORK and FORK.
11
+ const options = { workspaceId: parent.workspace_id, parentWorkerId, origin: parent.origin, forkSnapshot: true };
23
12
  const branch = name === undefined
24
- ? await WorkerName.claimAuto(db, {
25
- workspaceId: parent.workspace_id,
26
- prefix: parent.name,
27
- qualifier: "fork",
28
- parentWorkerId,
29
- origin: parent.origin,
30
- forkSnapshot: true,
31
- capabilityBound,
32
- })
33
- : await db.fork_insert_worker.get({
34
- workspace_id: parent.workspace_id,
35
- name: WorkerName.assert(name),
36
- parent_worker_id: parentWorkerId,
37
- origin: parent.origin,
38
- fork_snapshot: 1,
39
- capability_bound: JSON.stringify(capabilityBound),
40
- });
41
- if (branch === undefined)
42
- throw new Error("fork: explicit branch worker insert returned no row");
43
- const branchWorkerId = branch.id;
44
- await db.fork_set_generation_policy.run({
45
- worker_id: branchWorkerId,
46
- model_route_id: parent.model_route_id,
47
- spawn_model_route_id: parent.spawn_model_route_id,
48
- reasoning_policy: parent.reasoning_policy,
49
- });
50
- // loops → new loops, mapping old id → new id. A copied loop is INHERITED HISTORY, never the
51
- // branch's live work (its own loop is enqueued fresh by injectWorker) — so a non-terminal status
52
- // is clamped to terminal (200). Otherwise a fork taken while the parent's loop is mid-flight (102)
53
- // would carry a frozen-live loop no drain ever advances, falsely marking the branch forever-live
54
- // to any liveness check ({§worker-scheme-fork}, the premature-terminate gate {§send-premature-terminate}).
55
- const loops = await db.fork_get_loops.all({ worker_id: parentWorkerId });
56
- const loopMap = new Map();
57
- for (const l of loops) {
58
- const status = Fork.#TERMINAL_LOOP.has(l.status) ? l.status : 200;
59
- const terminalResult = Fork.#TERMINAL_LOOP.has(l.status)
60
- ? l.terminal_result
61
- : JSON.stringify({ status: 200 });
62
- if (terminalResult === null) {
63
- throw new Error(`fork: terminal source loop ${l.id} has no durable result`);
64
- }
65
- const nl = await db.fork_insert_loop.get({
66
- worker_id: branchWorkerId,
67
- sequence: l.sequence,
68
- status,
69
- prompt: l.prompt,
70
- policy: l.policy,
71
- model_route_id: l.model_route_id,
72
- spawn_model_route_id: l.spawn_model_route_id,
73
- reasoning_policy: l.reasoning_policy,
74
- max_turns: l.max_turns,
75
- terminal_result: terminalResult,
76
- });
77
- if (nl === undefined)
78
- throw new Error("fork: loop insert returned no row");
79
- await db.fork_reidentify_loop_result.run({ loop_id: nl.id });
80
- loopMap.set(l.id, nl.id);
81
- }
82
- // turns → new turns, loop_id remapped, mapping old id → new id.
83
- const turns = await db.fork_get_turns.all({ worker_id: parentWorkerId });
84
- const turnMap = new Map();
85
- for (const { id, loop_id, ...rest } of turns) {
86
- // {§machine-processes-fork-cost} — copied turns retain conversational
87
- // history, while model calls, admission rows, and physical requests
88
- // remain owned by the source worker. Branch accounting therefore
89
- // begins with only calls it actually issues.
90
- const nt = await db.fork_insert_turn.get({
91
- ...rest,
92
- loop_id: loopMap.get(loop_id),
93
- });
94
- if (nt === undefined)
95
- throw new Error("fork: turn insert returned no row");
96
- turnMap.set(id, nt.id);
97
- }
98
- // entries → new entries: worker/loop/turn ids remapped; visibility and
99
- // attribution and content all preserved.
100
- const entries = await db.fork_get_log_entries.all({ worker_id: parentWorkerId });
101
- const logMap = new Map();
102
- for (const e of entries) {
103
- const { id: oldLogId, projection_active, projection_folded, native_delivered_at, ...row } = e;
104
- const ne = await db.fork_insert_log_entry.get({ ...row, worker_id: branchWorkerId, loop_id: loopMap.get(e.loop_id), turn_id: turnMap.get(e.turn_id) });
105
- if (ne === undefined)
106
- throw new Error("fork: log entry copy returned no row");
107
- await db.fork_set_log_entry_projection.run({
108
- log_entry_id: ne.id,
109
- active: projection_active,
110
- folded: projection_folded,
111
- });
112
- if (native_delivered_at !== null) {
113
- await db.fork_insert_native_content_delivery.run({
114
- log_entry_id: ne.id,
115
- delivered_at: native_delivered_at,
116
- });
117
- }
118
- logMap.set(oldLogId, ne.id);
119
- }
120
- const curationEffects = await db.fork_get_log_curation_effects.all({ worker_id: parentWorkerId });
121
- for (const effect of curationEffects) {
122
- const operationLogEntryId = logMap.get(effect.operation_log_entry_id);
123
- const targetLogEntryId = logMap.get(effect.target_log_entry_id);
124
- if (operationLogEntryId === undefined || targetLogEntryId === undefined) {
125
- throw new Error("fork: curation effect references a log row outside copied history");
126
- }
127
- await db.fork_insert_log_curation_effect.run({
128
- operation_log_entry_id: operationLogEntryId,
129
- target_log_entry_id: targetLogEntryId,
130
- active_before: effect.active_before,
131
- active_after: effect.active_after,
132
- folded_before: effect.folded_before,
133
- folded_after: effect.folded_after,
134
- });
135
- }
136
- // {§machine-processes-entry-inheritance} — only a scheme-declared,
137
- // quiescent snapshot crosses the fork. Live resources retain no phantom
138
- // callback, and rederived/omitted entries carry no accidental bytes.
139
- const ownedEntries = await db.fork_get_private_entries.all({ owner_id: parentWorkerId });
140
- for (const s of ownedEntries) {
141
- if (s.active === 1 || entryInheritance(s.scheme) !== "snapshot")
142
- continue;
143
- // {§worker-generated-subtree} — the child rederives Plurnk-generated
144
- // documents from its inherited Functionality instead of inheriting bytes.
145
- if (s.scheme === "worker" && isGeneratedPathname(s.pathname))
146
- continue;
147
- const ne = await db.fork_insert_private_entry.get({
148
- workspace_id: parent.workspace_id,
149
- owner_id: branchWorkerId,
150
- scheme: s.scheme,
151
- authority: s.authority,
152
- pathname: s.pathname,
153
- attributes: s.attributes,
154
- });
155
- if (ne === undefined)
156
- throw new Error("fork: private entry copy returned no row");
157
- await db.fork_copy_entry_channels.run({ old_entry_id: s.id, new_entry_id: ne.id });
158
- }
159
- return branchWorkerId;
13
+ ? await WorkerName.claimAuto(db, options)
14
+ : await WorkerName.claimNamed(db, name, options);
15
+ return branch.id;
160
16
  }
161
17
  }
162
18
  //# sourceMappingURL=fork.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/core/fork.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/core/fork.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,wFAAwF;AACxF,iEAAiE;AAGjE,OAAO,UAAiC,MAAM,iBAAiB,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAM,EAAE,cAAsB,EAAE,IAAwB;QACtE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAiD,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/G,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,cAAc,YAAY,CAAC,CAAC;QACtF,2EAA2E;QAC3E,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAW,CAAC;QACzH,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS;YAC7B,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC;YACzC,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,EAAE,CAAC;IACrB,CAAC;CACJ"}
@@ -1,185 +1,162 @@
1
- -- Fork a worker: deep-copy its log into a new worker in the same workspace (SPEC {§machine-processes} —
2
- -- branch the log, share the world). loops → turns → entries are copied with their
3
- -- durable event evidence and current projection intact; only the worker/loop/
4
- -- turn ids are remapped. Nothing of the world is copied
5
- -- ({§machine-processes-fork-shares-the-world}); workspace entries and the
6
- -- overlay remain shared. The branch inherits the parent's ambient observation
7
- -- cursor from the same initial fork snapshot as its copied log.
8
-
9
- -- PREP: fork_get_worker
10
- SELECT workspace_id, name, origin,
11
- model_route_id, spawn_model_route_id, reasoning_policy
12
- FROM workers WHERE id = $id;
13
-
14
- -- PREP: fork_insert_worker
15
- -- A new child in the parent's workspace. A FORK captures the parent's cursor
16
- -- and the occurrence high-water in this one INSERT; a fresh WORK passes 0 and
17
- -- receives the ordinary creation baseline trigger instead.
18
- INSERT INTO workers (
19
- workspace_id, name, parent_worker_id, origin,
20
- capability_bound, ambient_event_cursor, fork_event_boundary
21
- )
22
- SELECT $workspace_id, $name, $parent_worker_id, $origin, $capability_bound,
23
- CASE WHEN $fork_snapshot = 1 THEN parent.ambient_event_cursor ELSE NULL END,
24
- CASE WHEN $fork_snapshot = 1 THEN COALESCE((
25
- SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id
26
- ), 0) ELSE NULL END
27
- FROM workers parent
28
- WHERE parent.id = $parent_worker_id
29
- AND parent.workspace_id = $workspace_id
30
- RETURNING id;
31
-
32
- -- PREP: fork_set_generation_policy
33
- -- A branch copies durable worker policy by value, then diverges independently.
34
- UPDATE workers
35
- SET model_route_id = $model_route_id,
36
- spawn_model_route_id = $spawn_model_route_id,
37
- reasoning_policy = $reasoning_policy,
38
- version = version + 1
39
- WHERE id = $worker_id;
40
-
41
- -- PREP: fork_get_loops
42
- SELECT id, sequence, status, prompt, policy, model_route_id, spawn_model_route_id,
43
- reasoning_policy, max_turns, terminal_result
44
- FROM loops WHERE worker_id = $worker_id ORDER BY id;
45
-
46
- -- PREP: fork_insert_loop
47
- INSERT INTO loops (
48
- worker_id, sequence, status, prompt, policy, model_route_id,
49
- spawn_model_route_id, reasoning_policy, max_turns, terminal_result
50
- )
51
- VALUES (
52
- $worker_id, $sequence, $status, $prompt, $policy, $model_route_id,
53
- $spawn_model_route_id, $reasoning_policy, $max_turns, $terminal_result
54
- )
55
- RETURNING id;
56
-
57
- -- PREP: fork_reidentify_loop_result
58
- -- A forked loop is a new durable resource. Success results need no instance;
59
- -- failure results identify the branch loop rather than the source row.
60
- UPDATE loops
61
- SET terminal_result = json_set(
62
- terminal_result,
63
- '$.problem.instance',
64
- 'loop:///' || id
65
- )
66
- WHERE id = $loop_id
67
- AND json_type(terminal_result, '$.problem') = 'object';
68
-
69
- -- PREP: fork_get_turns
70
- -- All turns across the worker's loops, in order — loop_id is remapped by the caller.
71
- SELECT t.id, t.loop_id, t.sequence, t.timestamp,
72
- t.producer, t.kind,
73
- t.status,
74
- COALESCE(t.completed_at, strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) AS completed_at,
75
- t.usage_curation_budget, t.packet, t.finish_reason, t.model, t.meta
76
- FROM turns t JOIN loops l ON l.id = t.loop_id
77
- WHERE l.worker_id = $worker_id ORDER BY t.id;
78
-
79
- -- PREP: fork_insert_turn
80
- INSERT INTO turns (
81
- loop_id, sequence, timestamp, producer, kind, status, completed_at,
82
- usage_curation_budget, packet, finish_reason, model, meta
83
- )
84
- VALUES (
85
- $loop_id, $sequence, $timestamp, $producer, $kind, $status, $completed_at,
86
- $usage_curation_budget, $packet, $finish_reason, $model, $meta
87
- )
88
- RETURNING id;
89
-
90
- -- PREP: fork_get_log_entries
91
- -- worker_id is the branch's; loop_id/turn_id are remapped by the caller. The source `id` rides along so
92
- -- the caller can remap old log ids to their copies (old id → new id); origin/source (attribution)
93
- -- and initial/current projection ride along too. {§machine-processes-fork-copies-the-log}
94
- SELECT id, loop_id, turn_id, sequence, at, origin, source, op, delimiter, signal,
95
- ambient_event_id,
96
- scheme, username, password, hostname, port, pathname, query, fragment,
97
- lineMarker, tx, mimetype_tx, rx, mimetype_rx, status_rx, weight,
98
- state, outcome, attrs, initial_folded,
99
- projection.active AS projection_active,
100
- projection.folded AS projection_folded,
101
- delivery.delivered_at AS native_delivered_at
102
- FROM log_entries
103
- JOIN log_entry_projections projection ON projection.log_entry_id = log_entries.id
104
- LEFT JOIN native_content_deliveries delivery ON delivery.log_entry_id = log_entries.id
105
- WHERE worker_id = $worker_id
106
- ORDER BY id;
107
-
108
- -- PREP: fork_insert_log_entry
109
- -- RETURNING the new id so the caller can remap old log ids to their copies.
110
- INSERT INTO log_entries (worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id, inherited_history, op, delimiter, signal, scheme, username, password, hostname, port, pathname, query, fragment, lineMarker, tx, mimetype_tx, rx, mimetype_rx, status_rx, weight, state, outcome, attrs, initial_folded)
111
- VALUES ($worker_id, $loop_id, $turn_id, $sequence, $at, $origin, $source, $ambient_event_id, 1, $op, $delimiter, $signal, $scheme, $username, $password, $hostname, $port, $pathname, $query, $fragment, $lineMarker, $tx, $mimetype_tx, $rx, $mimetype_rx, $status_rx, $weight, $state, $outcome, $attrs, $initial_folded)
112
- RETURNING id;
113
-
114
- -- PREP: fork_set_log_entry_projection
115
- UPDATE log_entry_projections
116
- SET active = $active,
117
- folded = $folded
118
- WHERE log_entry_id = $log_entry_id;
119
-
120
- -- PREP: fork_insert_native_content_delivery
121
- -- A FORK inherits whether copied history already crossed its one-shot native
122
- -- delivery boundary, without inventing provider-call evidence for the branch.
123
- INSERT INTO native_content_deliveries (log_entry_id, delivered_at)
124
- VALUES ($log_entry_id, $delivered_at);
125
-
126
- -- PREP: fork_get_log_curation_effects
127
- -- Exact log-curation effects are part of the copied log history, not
128
- -- process-local overflow recovery bookkeeping. Both row identities are remapped below.
129
- SELECT effect.operation_log_entry_id, effect.target_log_entry_id,
130
- effect.active_before, effect.active_after,
131
- effect.folded_before, effect.folded_after
132
- FROM log_curation_effects effect
133
- JOIN log_entries operation ON operation.id = effect.operation_log_entry_id
134
- WHERE operation.worker_id = $worker_id
135
- ORDER BY effect.operation_log_entry_id, effect.target_log_entry_id;
136
-
137
- -- PREP: fork_insert_log_curation_effect
138
- INSERT INTO log_curation_effects (
139
- operation_log_entry_id,
140
- target_log_entry_id,
141
- active_before,
142
- active_after,
143
- folded_before,
144
- folded_after
145
- )
146
- VALUES (
147
- $operation_log_entry_id,
148
- $target_log_entry_id,
149
- $active_before,
150
- $active_after,
151
- $folded_before,
152
- $folded_after
153
- );
154
-
155
- -- {§machine-processes-entry-inheritance} — core enumerates the parent's
156
- -- Worker-owned entries; the registered scheme decides whether each is copied,
157
- -- rederived, or omitted. A copied snapshot gets a new id and remapped owner.
158
-
159
- -- PREP: fork_get_private_entries
160
- -- The parent's Worker-owned entries. The caller applies each registered
161
- -- scheme's {§manifest-entry-inheritance}; active entries are never eligible for
162
- -- a snapshot because their process-local producer cannot be cloned.
163
- SELECT e.id, e.scheme, e.authority, e.pathname, e.attributes,
164
- EXISTS (
165
- SELECT 1 FROM entry_channels c
166
- WHERE c.entry_id = e.id AND c.state = 'active'
167
- ) AS active
168
- FROM entries e
169
- WHERE e.owner_id = $owner_id
170
- ORDER BY e.id;
171
-
172
- -- PREP: fork_insert_private_entry
173
- -- A private entry copy with the branch as owner. synced_sig/membership_origin are NULL
174
- -- (scratch is never disk-synced nor a file member); version defaults 0.
175
- INSERT INTO entries (owner_id, scheme, authority, pathname, attributes)
176
- SELECT $owner_id, $scheme, $authority, $pathname, $attributes
177
- FROM workers WHERE id = $owner_id AND workspace_id = $workspace_id
178
- RETURNING id;
179
-
180
- -- PREP: fork_copy_entry_channels
181
- -- Copy every source channel from the source entry to the copy. Deep projections
182
- -- live on the shared artifact, not on either entry.
183
- INSERT INTO entry_channels (entry_id, name, content, mimetype, weight, content_hash, deep_hash, state, producer_result)
184
- SELECT $new_entry_id, name, content, mimetype, weight, content_hash, deep_hash, state, producer_result
185
- FROM entry_channels WHERE entry_id = $old_entry_id;
1
+ -- Fork a worker: branch the log, share the world (SPEC {§machine-processes}). The branch's row
2
+ -- is claimed by worker_name_claim with fork_snapshot = 1, and that INSERT is the fork: the trigger
3
+ -- below copies the parent's history into the branch inside the same statement
4
+ -- ({§worker-fork-trigger}). Only worker, loop, turn and log ids are remapped, by natural key —
5
+ -- (worker, sequence) for a loop, (loop, sequence) for a turn, (turn, sequence) for a log row.
6
+ -- Nothing of the world is copied ({§machine-processes-fork-shares-the-world}).
7
+
8
+ -- INIT: workers_fork_copies_history
9
+ DROP TRIGGER IF EXISTS workers_fork_copies_history;
10
+ CREATE TRIGGER workers_fork_copies_history
11
+ AFTER INSERT ON workers
12
+ WHEN NEW.fork_event_boundary IS NOT NULL
13
+ BEGIN
14
+ -- Loops: inherited history, never live work — a non-terminal status is clamped to 200 and
15
+ -- given a plain success result ({§machine-processes-fork-copies-the-log}).
16
+ INSERT INTO loops (
17
+ worker_id, sequence, status, prompt, policy, model_route_id,
18
+ spawn_model_route_id, reasoning_policy, max_turns, terminal_result
19
+ )
20
+ SELECT NEW.id, l.sequence,
21
+ CASE WHEN l.status IN (200, 413, 429, 499, 500, 504, 508) THEN l.status ELSE 200 END,
22
+ l.prompt, l.policy, l.model_route_id, l.spawn_model_route_id, l.reasoning_policy, l.max_turns,
23
+ CASE WHEN l.status IN (200, 413, 429, 499, 500, 504, 508) THEN l.terminal_result ELSE '{"status":200}' END
24
+ FROM loops l
25
+ WHERE l.worker_id = NEW.parent_worker_id
26
+ ORDER BY l.id;
27
+
28
+ -- A forked loop is a new durable resource: a failure result identifies the branch loop.
29
+ UPDATE loops
30
+ SET terminal_result = json_set(terminal_result, '$.problem.instance', 'loop:///' || id)
31
+ WHERE worker_id = NEW.id
32
+ AND json_type(terminal_result, '$.problem') = 'object';
33
+
34
+ -- Turns, loop remapped. Model calls, admission rows and provider requests stay with the
35
+ -- source ({§machine-processes-fork-cost}).
36
+ INSERT INTO turns (
37
+ loop_id, sequence, timestamp, producer, kind, status, completed_at,
38
+ usage_curation_budget, packet, finish_reason, model, meta
39
+ )
40
+ SELECT nl.id, t.sequence, t.timestamp, t.producer, t.kind, t.status,
41
+ COALESCE(t.completed_at, strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
42
+ t.usage_curation_budget, t.packet, t.finish_reason, t.model, t.meta
43
+ FROM turns t
44
+ JOIN loops ol ON ol.id = t.loop_id
45
+ JOIN loops nl ON nl.worker_id = NEW.id AND nl.sequence = ol.sequence
46
+ WHERE ol.worker_id = NEW.parent_worker_id
47
+ ORDER BY t.id;
48
+
49
+ -- {§packet-items}: a turn's composition is copied; the items are shared by hash.
50
+ INSERT INTO turn_sections (turn_id, position, name, slot, header, weight)
51
+ SELECT nt.id, ts.position, ts.name, ts.slot, ts.header, ts.weight
52
+ FROM turn_sections ts
53
+ JOIN turns ot ON ot.id = ts.turn_id
54
+ JOIN loops ol ON ol.id = ot.loop_id
55
+ JOIN loops nl ON nl.worker_id = NEW.id AND nl.sequence = ol.sequence
56
+ JOIN turns nt ON nt.loop_id = nl.id AND nt.sequence = ot.sequence
57
+ WHERE ol.worker_id = NEW.parent_worker_id;
58
+
59
+ INSERT INTO turn_section_items (turn_id, section, position, item_hash)
60
+ SELECT nt.id, tsi.section, tsi.position, tsi.item_hash
61
+ FROM turn_section_items tsi
62
+ JOIN turns ot ON ot.id = tsi.turn_id
63
+ JOIN loops ol ON ol.id = ot.loop_id
64
+ JOIN loops nl ON nl.worker_id = NEW.id AND nl.sequence = ol.sequence
65
+ JOIN turns nt ON nt.loop_id = nl.id AND nt.sequence = ot.sequence
66
+ WHERE ol.worker_id = NEW.parent_worker_id;
67
+
68
+ INSERT INTO turn_sources (turn_id, kind, content, deep_hash)
69
+ SELECT nt.id, s.kind, s.content, s.deep_hash
70
+ FROM turn_sources s
71
+ JOIN turns ot ON ot.id = s.turn_id
72
+ JOIN loops ol ON ol.id = ot.loop_id
73
+ JOIN loops nl ON nl.worker_id = NEW.id AND nl.sequence = ol.sequence
74
+ JOIN turns nt ON nt.loop_id = nl.id AND nt.sequence = ot.sequence
75
+ WHERE ol.worker_id = NEW.parent_worker_id;
76
+
77
+ -- Log rows: durable events with their attribution, as inherited history. Each copied row
78
+ -- passes through the log's own triggers exactly as the original did.
79
+ INSERT INTO log_entries (
80
+ worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id, inherited_history,
81
+ op, signal, scheme, username, password, hostname, port, pathname, query, fragment,
82
+ lineMarker, tx, mimetype_tx, rx, mimetype_rx, status_rx, weight, state, outcome, attrs, initial_folded
83
+ )
84
+ SELECT NEW.id, nl.id, nt.id, e.sequence, e.at, e.origin, e.source, e.ambient_event_id, 1,
85
+ e.op, e.signal, e.scheme, e.username, e.password, e.hostname, e.port, e.pathname, e.query, e.fragment,
86
+ e.lineMarker, e.tx, e.mimetype_tx, e.rx, e.mimetype_rx, e.status_rx, e.weight, e.state, e.outcome, e.attrs, e.initial_folded
87
+ FROM log_entries e
88
+ JOIN turns ot ON ot.id = e.turn_id
89
+ JOIN loops ol ON ol.id = e.loop_id
90
+ JOIN loops nl ON nl.worker_id = NEW.id AND nl.sequence = ol.sequence
91
+ JOIN turns nt ON nt.loop_id = nl.id AND nt.sequence = ot.sequence
92
+ WHERE e.worker_id = NEW.parent_worker_id
93
+ ORDER BY e.id;
94
+
95
+ -- Current projection: membership, folded intervals, and the admission turn, remapped.
96
+ UPDATE log_entry_projections
97
+ SET active = source.active,
98
+ folded = source.folded,
99
+ output_admission_turn_id = source.admission_turn_id,
100
+ output_withheld = source.output_withheld
101
+ FROM (
102
+ SELECT ne.id AS log_entry_id, op.active, op.folded, op.output_withheld,
103
+ (SELECT at2.id FROM turns at1
104
+ JOIN loops al1 ON al1.id = at1.loop_id
105
+ JOIN loops al2 ON al2.worker_id = NEW.id AND al2.sequence = al1.sequence
106
+ JOIN turns at2 ON at2.loop_id = al2.id AND at2.sequence = at1.sequence
107
+ WHERE at1.id = op.output_admission_turn_id) AS admission_turn_id
108
+ FROM log_entries oe
109
+ JOIN log_entry_projections op ON op.log_entry_id = oe.id
110
+ JOIN turns ot ON ot.id = oe.turn_id
111
+ JOIN loops ol ON ol.id = oe.loop_id
112
+ JOIN loops nl ON nl.worker_id = NEW.id AND nl.sequence = ol.sequence
113
+ JOIN turns nt ON nt.loop_id = nl.id AND nt.sequence = ot.sequence
114
+ JOIN log_entries ne ON ne.turn_id = nt.id AND ne.sequence = oe.sequence
115
+ WHERE oe.worker_id = NEW.parent_worker_id
116
+ ) AS source
117
+ WHERE log_entry_projections.log_entry_id = source.log_entry_id;
118
+
119
+ -- Curation effects: both identities belong to the copied history, by construction of the join.
120
+ INSERT INTO log_curation_effects (
121
+ operation_log_entry_id, target_log_entry_id,
122
+ active_before, active_after, folded_before, folded_after
123
+ )
124
+ SELECT nop.id, ntg.id, ef.active_before, ef.active_after, ef.folded_before, ef.folded_after
125
+ FROM log_curation_effects ef
126
+ JOIN log_entries oop ON oop.id = ef.operation_log_entry_id
127
+ JOIN turns oopt ON oopt.id = oop.turn_id
128
+ JOIN loops oopl ON oopl.id = oop.loop_id
129
+ JOIN loops nopl ON nopl.worker_id = NEW.id AND nopl.sequence = oopl.sequence
130
+ JOIN turns nopt ON nopt.loop_id = nopl.id AND nopt.sequence = oopt.sequence
131
+ JOIN log_entries nop ON nop.turn_id = nopt.id AND nop.sequence = oop.sequence
132
+ JOIN log_entries otg ON otg.id = ef.target_log_entry_id
133
+ JOIN turns otgt ON otgt.id = otg.turn_id
134
+ JOIN loops otgl ON otgl.id = otg.loop_id
135
+ JOIN loops ntgl ON ntgl.worker_id = NEW.id AND ntgl.sequence = otgl.sequence
136
+ JOIN turns ntgt ON ntgt.loop_id = ntgl.id AND ntgt.sequence = otgt.sequence
137
+ JOIN log_entries ntg ON ntg.turn_id = ntgt.id AND ntg.sequence = otg.sequence
138
+ WHERE oop.worker_id = NEW.parent_worker_id
139
+ ORDER BY ef.operation_log_entry_id, ef.target_log_entry_id;
140
+
141
+ -- Named scratch under the source's authority becomes the branch's; a live producer cannot be
142
+ -- cloned ({§machine-processes-entry-inheritance}). Version defaults to 0.
143
+ INSERT INTO entries (workspace_id, scheme, authority, pathname, attributes)
144
+ SELECT NEW.workspace_id, e.scheme, NEW.name, e.pathname, e.attributes
145
+ FROM entries e
146
+ WHERE e.workspace_id = NEW.workspace_id
147
+ AND e.authority = (SELECT name FROM workers WHERE id = NEW.parent_worker_id)
148
+ AND e.scheme IN ('worker', 'prompt')
149
+ AND NOT EXISTS (SELECT 1 FROM entry_channels c WHERE c.entry_id = e.id AND c.state = 'active')
150
+ ORDER BY e.id;
151
+
152
+ INSERT INTO entry_channels (entry_id, name, content, mimetype, weight, content_hash, deep_hash, state, producer_result)
153
+ SELECT ne.id, c.name, c.content, c.mimetype, c.weight, c.content_hash, c.deep_hash, c.state, c.producer_result
154
+ FROM entry_channels c
155
+ JOIN entries oe ON oe.id = c.entry_id
156
+ JOIN entries ne ON ne.workspace_id = oe.workspace_id AND ne.scheme = oe.scheme
157
+ AND ne.pathname = oe.pathname AND ne.authority = NEW.name
158
+ WHERE oe.workspace_id = NEW.workspace_id
159
+ AND oe.authority = (SELECT name FROM workers WHERE id = NEW.parent_worker_id)
160
+ AND oe.scheme IN ('worker', 'prompt')
161
+ AND NOT EXISTS (SELECT 1 FROM entry_channels a WHERE a.entry_id = oe.id AND a.state = 'active');
162
+ END;
@@ -1,3 +1,4 @@
1
1
  export declare const hermeticGitEnv: () => NodeJS.ProcessEnv;
2
+ export declare const declaredFilterProgram: (repository: string, signal?: AbortSignal) => Promise<string | null>;
2
3
  export declare const gitOutputMaxBytes: () => number;
3
4
  //# sourceMappingURL=git-env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-env.d.ts","sourceRoot":"","sources":["../../src/core/git-env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,UAIvC,CAAC;AAEH,eAAO,MAAM,iBAAiB,QAAO,MAMpC,CAAC"}
1
+ {"version":3,"file":"git-env.d.ts","sourceRoot":"","sources":["../../src/core/git-env.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,UAUvC,CAAC;AAQH,eAAO,MAAM,qBAAqB,eAAsB,MAAM,WAAW,WAAW,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAW3G,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,MAMpC,CAAC"}
@@ -1,11 +1,48 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ const execFileP = promisify(execFile);
1
4
  // {§membership-git-hermetic} — native Git receives no ambient GIT_* or
2
- // global/system configuration. Repository identity follows the explicit cwd,
3
- // and user hooks/config cannot affect or escape a workspace operation.
5
+ // global/system configuration, and the repository's own program-running keys are
6
+ // pinned off at the highest precedence: `core.fsmonitor` (a helper a supplied
7
+ // repository can name in `.git/config`, executed by index refresh) and
8
+ // `core.hooksPath`. Repository identity follows the explicit cwd. Other
9
+ // repository-local configuration is still read; inspecting a supplied
10
+ // repository never runs its configured programs as the daemon (#568).
11
+ const PINNED_CONFIG = Object.freeze([
12
+ ["core.fsmonitor", "false"],
13
+ ["core.hooksPath", "/dev/null"],
14
+ ]);
4
15
  export const hermeticGitEnv = () => ({
5
16
  ...Object.fromEntries(Object.entries(process.env).filter(([k]) => !k.startsWith("GIT_"))),
6
17
  GIT_CONFIG_GLOBAL: "/dev/null",
7
18
  GIT_CONFIG_SYSTEM: "/dev/null",
19
+ // GIT_CONFIG_COUNT/KEY_n/VALUE_n rank with `-c`: above every configuration file.
20
+ GIT_CONFIG_COUNT: String(PINNED_CONFIG.length),
21
+ ...Object.fromEntries(PINNED_CONFIG.flatMap(([key, value], index) => [
22
+ [`GIT_CONFIG_KEY_${index}`, key],
23
+ [`GIT_CONFIG_VALUE_${index}`, value],
24
+ ])),
8
25
  });
26
+ // {§membership-git-hermetic} (#568): the pins above cannot cover a supplied
27
+ // repository's `filter.<name>.clean` / `filter.<name>.process` drivers — the
28
+ // name is arbitrary, and `git status` index refresh may run one as the daemon.
29
+ // Automatic inspection asks the repository's own config first and refuses when
30
+ // any such program is declared; user- and model-requested Git commands are on
31
+ // their explicit path and never consult this.
32
+ export const declaredFilterProgram = async (repository, signal) => {
33
+ try {
34
+ const { stdout } = await execFileP("git", ["config", "--get-regexp", "^filter\\..+\\.(clean|process)$"], {
35
+ cwd: repository, signal, maxBuffer: gitOutputMaxBytes(), env: hermeticGitEnv(),
36
+ });
37
+ const first = stdout.split("\n").find((line) => line.length > 0);
38
+ return first === undefined ? null : first.split(" ", 1)[0];
39
+ }
40
+ catch (cause) {
41
+ if (cause.code === 1)
42
+ return null; // no such key
43
+ throw new Error(`Git configuration inspection failed for '${repository}'.`, { cause });
44
+ }
45
+ };
9
46
  export const gitOutputMaxBytes = () => {
10
47
  const value = Number(process.env.PLURNK_SERVICE_GIT_OUTPUT_MAX_BYTES);
11
48
  if (!Number.isSafeInteger(value) || value < 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"git-env.js","sourceRoot":"","sources":["../../src/core/git-env.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,6EAA6E;AAC7E,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAsB,EAAE,CAAC,CAAC;IACpD,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,WAAW;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"git-env.js","sourceRoot":"","sources":["../../src/core/git-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC,uEAAuE;AACvE,iFAAiF;AACjF,8EAA8E;AAC9E,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,MAAM,aAAa,GAA6C,MAAM,CAAC,MAAM,CAAC;IAC1E,CAAC,gBAAgB,EAAE,OAAO,CAAC;IAC3B,CAAC,gBAAgB,EAAE,WAAW,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAsB,EAAE,CAAC,CAAC;IACpD,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,WAAW;IAC9B,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9C,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACjE,CAAC,kBAAkB,KAAK,EAAE,EAAE,GAAG,CAAC;QAChC,CAAC,oBAAoB,KAAK,EAAE,EAAE,KAAK,CAAC;KACvC,CAAC,CAAC;CACN,CAAC,CAAC;AAEH,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,UAAkB,EAAE,MAAoB,EAA0B,EAAE;IAC5G,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,iCAAiC,CAAC,EAAE;YACrG,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE;SACjF,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAK,KAA4B,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,cAAc;QACzE,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}