@plurnk/plurnk-service 1.7.0 → 1.9.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 (381) hide show
  1. package/.env.defaults +49 -42
  2. package/INSTALL.md +48 -11
  3. package/README.md +12 -2
  4. package/SPEC.md +1166 -475
  5. package/digest-sql/channel-dispositions/dispositions.sql +15 -0
  6. package/digest-sql/channel-state/state.sql +6 -0
  7. package/digest-sql/curation/curation.sql +5 -0
  8. package/digest-sql/derivations/derivations.sql +4 -0
  9. package/digest-sql/embeddings/embeddings.sql +4 -0
  10. package/digest-sql/entry-dispositions/dispositions.sql +15 -0
  11. package/digest-sql/entry-state/state.sql +6 -0
  12. package/digest-sql/token-counts/token-counts.sql +2 -0
  13. package/dist/Paths.d.ts +0 -4
  14. package/dist/Paths.d.ts.map +1 -1
  15. package/dist/Paths.js +1 -21
  16. package/dist/Paths.js.map +1 -1
  17. package/dist/build-info.json +1 -1
  18. package/dist/content/read-projector.d.ts.map +1 -1
  19. package/dist/content/read-projector.js +4 -3
  20. package/dist/content/read-projector.js.map +1 -1
  21. package/dist/core/BudgetReadout.d.ts.map +1 -1
  22. package/dist/core/BudgetReadout.js +12 -22
  23. package/dist/core/BudgetReadout.js.map +1 -1
  24. package/dist/core/ChannelWrite.d.ts +8 -3
  25. package/dist/core/ChannelWrite.d.ts.map +1 -1
  26. package/dist/core/ChannelWrite.js +40 -8
  27. package/dist/core/ChannelWrite.js.map +1 -1
  28. package/dist/core/ChannelWrite.sql +19 -5
  29. package/dist/core/CoreSchemeServices.d.ts +7 -3
  30. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  31. package/dist/core/CoreSchemeServices.js +8 -1
  32. package/dist/core/CoreSchemeServices.js.map +1 -1
  33. package/dist/core/Dispatcher.d.ts +15 -6
  34. package/dist/core/Dispatcher.d.ts.map +1 -1
  35. package/dist/core/Dispatcher.js +352 -306
  36. package/dist/core/Dispatcher.js.map +1 -1
  37. package/dist/core/Engine.d.ts +22 -10
  38. package/dist/core/Engine.d.ts.map +1 -1
  39. package/dist/core/Engine.js +86 -46
  40. package/dist/core/Engine.js.map +1 -1
  41. package/dist/core/Engine.sql +202 -177
  42. package/dist/core/EntryAddressBinding.d.ts +32 -0
  43. package/dist/core/EntryAddressBinding.d.ts.map +1 -0
  44. package/dist/core/EntryAddressBinding.js +93 -0
  45. package/dist/core/EntryAddressBinding.js.map +1 -0
  46. package/dist/core/ExecutorRegistry.d.ts +12 -6
  47. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  48. package/dist/core/ExecutorRegistry.js +34 -31
  49. package/dist/core/ExecutorRegistry.js.map +1 -1
  50. package/dist/core/HostPaths.d.ts +29 -0
  51. package/dist/core/HostPaths.d.ts.map +1 -0
  52. package/dist/core/HostPaths.js +74 -0
  53. package/dist/core/HostPaths.js.map +1 -0
  54. package/dist/core/LegacyHome.d.ts +10 -0
  55. package/dist/core/LegacyHome.d.ts.map +1 -0
  56. package/dist/core/LegacyHome.js +170 -0
  57. package/dist/core/LegacyHome.js.map +1 -0
  58. package/dist/core/LogBody.d.ts +1 -1
  59. package/dist/core/LogBody.d.ts.map +1 -1
  60. package/dist/core/LogBody.js +21 -3
  61. package/dist/core/LogBody.js.map +1 -1
  62. package/dist/core/LogEntryProjection.js +1 -1
  63. package/dist/core/LogEntryProjection.js.map +1 -1
  64. package/dist/core/LogVisibility.d.ts +28 -0
  65. package/dist/core/LogVisibility.d.ts.map +1 -0
  66. package/dist/core/LogVisibility.js +215 -0
  67. package/dist/core/LogVisibility.js.map +1 -0
  68. package/dist/core/LoopLifecycle.d.ts +1 -0
  69. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  70. package/dist/core/LoopLifecycle.js +8 -0
  71. package/dist/core/LoopLifecycle.js.map +1 -1
  72. package/dist/core/LoopLifecycle.sql +10 -0
  73. package/dist/core/OperatorConfig.d.ts +6 -0
  74. package/dist/core/OperatorConfig.d.ts.map +1 -0
  75. package/dist/core/OperatorConfig.js +95 -0
  76. package/dist/core/OperatorConfig.js.map +1 -0
  77. package/dist/core/OverflowTurn.d.ts +11 -0
  78. package/dist/core/OverflowTurn.d.ts.map +1 -0
  79. package/dist/core/OverflowTurn.js +81 -0
  80. package/dist/core/OverflowTurn.js.map +1 -0
  81. package/dist/core/Owner.js +3 -3
  82. package/dist/core/Owner.js.map +1 -1
  83. package/dist/core/PacketBuilder.d.ts +7 -15
  84. package/dist/core/PacketBuilder.d.ts.map +1 -1
  85. package/dist/core/PacketBuilder.js +64 -127
  86. package/dist/core/PacketBuilder.js.map +1 -1
  87. package/dist/core/ProblemLog.js +1 -1
  88. package/dist/core/ProblemLog.js.map +1 -1
  89. package/dist/core/ProposalLifecycle.d.ts +4 -1
  90. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  91. package/dist/core/ProposalLifecycle.js +86 -47
  92. package/dist/core/ProposalLifecycle.js.map +1 -1
  93. package/dist/core/ProviderInstantiate.d.ts +9 -5
  94. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  95. package/dist/core/ProviderInstantiate.js +99 -104
  96. package/dist/core/ProviderInstantiate.js.map +1 -1
  97. package/dist/core/ReasoningEvent.d.ts +13 -0
  98. package/dist/core/ReasoningEvent.d.ts.map +1 -0
  99. package/dist/core/ReasoningEvent.js +6 -0
  100. package/dist/core/ReasoningEvent.js.map +1 -0
  101. package/dist/core/ResourceMutations.d.ts +15 -19
  102. package/dist/core/ResourceMutations.d.ts.map +1 -1
  103. package/dist/core/ResourceMutations.js +118 -41
  104. package/dist/core/ResourceMutations.js.map +1 -1
  105. package/dist/core/SchemeRegistry.d.ts +12 -12
  106. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  107. package/dist/core/SchemeRegistry.js +58 -57
  108. package/dist/core/SchemeRegistry.js.map +1 -1
  109. package/dist/core/ToolResources.d.ts +19 -0
  110. package/dist/core/ToolResources.d.ts.map +1 -0
  111. package/dist/core/ToolResources.js +123 -0
  112. package/dist/core/ToolResources.js.map +1 -0
  113. package/dist/core/Turn.d.ts +27 -0
  114. package/dist/core/Turn.d.ts.map +1 -0
  115. package/dist/core/Turn.js +43 -0
  116. package/dist/core/Turn.js.map +1 -0
  117. package/dist/core/Turn.sql +72 -0
  118. package/dist/core/TurnOps.d.ts +7 -0
  119. package/dist/core/TurnOps.d.ts.map +1 -0
  120. package/dist/core/TurnOps.js +73 -0
  121. package/dist/core/TurnOps.js.map +1 -0
  122. package/dist/core/TurnRunner.d.ts +56 -5
  123. package/dist/core/TurnRunner.d.ts.map +1 -1
  124. package/dist/core/TurnRunner.js +1163 -929
  125. package/dist/core/TurnRunner.js.map +1 -1
  126. package/dist/core/WorkerName.d.ts +2 -1
  127. package/dist/core/WorkerName.d.ts.map +1 -1
  128. package/dist/core/WorkerName.js +2 -1
  129. package/dist/core/WorkerName.js.map +1 -1
  130. package/dist/core/WorkerName.sql +17 -2
  131. package/dist/core/WorkspaceGate.js +1 -1
  132. package/dist/core/WorkspaceGate.js.map +1 -1
  133. package/dist/core/caps/CapsResolve.d.ts +2 -2
  134. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  135. package/dist/core/caps/CapsResolve.js +5 -7
  136. package/dist/core/caps/CapsResolve.js.map +1 -1
  137. package/dist/core/caps/DbChannelCaps.d.ts +1 -1
  138. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  139. package/dist/core/caps/DbChannelCaps.js +13 -11
  140. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  141. package/dist/core/caps/DbEntryCaps.d.ts +5 -5
  142. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  143. package/dist/core/caps/DbEntryCaps.js +27 -30
  144. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  145. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  146. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  147. package/dist/core/caps/DbNotifyCaps.js +5 -3
  148. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  149. package/dist/core/caps/DbSubscriptionCaps.d.ts +3 -3
  150. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  151. package/dist/core/caps/DbSubscriptionCaps.js +16 -26
  152. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  153. package/dist/core/caps/SchemeCtxImpl.d.ts +6 -4
  154. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  155. package/dist/core/caps/SchemeCtxImpl.js +37 -5
  156. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  157. package/dist/core/env-defaults.d.ts.map +1 -1
  158. package/dist/core/env-defaults.js +7 -5
  159. package/dist/core/env-defaults.js.map +1 -1
  160. package/dist/core/file-creation-policy.d.ts +9 -0
  161. package/dist/core/file-creation-policy.d.ts.map +1 -0
  162. package/dist/core/file-creation-policy.js +25 -0
  163. package/dist/core/file-creation-policy.js.map +1 -0
  164. package/dist/core/fork.d.ts +4 -1
  165. package/dist/core/fork.d.ts.map +1 -1
  166. package/dist/core/fork.js +39 -16
  167. package/dist/core/fork.js.map +1 -1
  168. package/dist/core/fork.sql +83 -40
  169. package/dist/core/git-env.d.ts +0 -1
  170. package/dist/core/git-env.d.ts.map +1 -1
  171. package/dist/core/git-env.js +0 -3
  172. package/dist/core/git-env.js.map +1 -1
  173. package/dist/core/git-membership.d.ts +19 -1
  174. package/dist/core/git-membership.d.ts.map +1 -1
  175. package/dist/core/git-membership.js +233 -74
  176. package/dist/core/git-membership.js.map +1 -1
  177. package/dist/core/git-state.d.ts.map +1 -1
  178. package/dist/core/git-state.js +13 -14
  179. package/dist/core/git-state.js.map +1 -1
  180. package/dist/core/operation-target-groups.d.ts +3 -0
  181. package/dist/core/operation-target-groups.d.ts.map +1 -0
  182. package/dist/core/operation-target-groups.js +53 -0
  183. package/dist/core/operation-target-groups.js.map +1 -0
  184. package/dist/core/packet-inject.d.ts +0 -1
  185. package/dist/core/packet-inject.d.ts.map +1 -1
  186. package/dist/core/packet-inject.js +6 -13
  187. package/dist/core/packet-inject.js.map +1 -1
  188. package/dist/core/packet-wire.d.ts +4 -0
  189. package/dist/core/packet-wire.d.ts.map +1 -1
  190. package/dist/core/packet-wire.js +226 -53
  191. package/dist/core/packet-wire.js.map +1 -1
  192. package/dist/core/plurnk-uri.d.ts +14 -3
  193. package/dist/core/plurnk-uri.d.ts.map +1 -1
  194. package/dist/core/plurnk-uri.js +62 -24
  195. package/dist/core/plurnk-uri.js.map +1 -1
  196. package/dist/core/scheme-types.d.ts +1 -0
  197. package/dist/core/scheme-types.d.ts.map +1 -1
  198. package/dist/core/teaching.d.ts.map +1 -1
  199. package/dist/core/teaching.js +4 -5
  200. package/dist/core/teaching.js.map +1 -1
  201. package/dist/core/worker-ops.sql +10 -6
  202. package/dist/core/worker-settings.d.ts +10 -0
  203. package/dist/core/worker-settings.d.ts.map +1 -0
  204. package/dist/core/worker-settings.js +32 -0
  205. package/dist/core/worker-settings.js.map +1 -0
  206. package/dist/core/workspace-settings.d.ts +2 -11
  207. package/dist/core/workspace-settings.d.ts.map +1 -1
  208. package/dist/core/workspace-settings.js +7 -47
  209. package/dist/core/workspace-settings.js.map +1 -1
  210. package/dist/digest/Digest.d.ts.map +1 -1
  211. package/dist/digest/Digest.js +164 -92
  212. package/dist/digest/Digest.js.map +1 -1
  213. package/dist/digest/digest.sql +9 -3
  214. package/dist/observe/genai.d.ts +9 -0
  215. package/dist/observe/genai.d.ts.map +1 -0
  216. package/dist/observe/genai.js +31 -0
  217. package/dist/observe/genai.js.map +1 -0
  218. package/dist/observe/spans.d.ts +3 -3
  219. package/dist/observe/spans.d.ts.map +1 -1
  220. package/dist/observe/spans.js +20 -5
  221. package/dist/observe/spans.js.map +1 -1
  222. package/dist/schemes/EffectPolicy.d.ts +3 -0
  223. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  224. package/dist/schemes/EffectPolicy.js +38 -6
  225. package/dist/schemes/EffectPolicy.js.map +1 -1
  226. package/dist/schemes/Exec.d.ts +3 -2
  227. package/dist/schemes/Exec.d.ts.map +1 -1
  228. package/dist/schemes/Exec.js +109 -34
  229. package/dist/schemes/Exec.js.map +1 -1
  230. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  231. package/dist/schemes/ExecOutputScheme.js +5 -4
  232. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  233. package/dist/schemes/File.d.ts.map +1 -1
  234. package/dist/schemes/File.js +170 -80
  235. package/dist/schemes/File.js.map +1 -1
  236. package/dist/schemes/Log.d.ts +6 -2
  237. package/dist/schemes/Log.d.ts.map +1 -1
  238. package/dist/schemes/Log.js +73 -22
  239. package/dist/schemes/Log.js.map +1 -1
  240. package/dist/schemes/Log.sql +25 -7
  241. package/dist/schemes/Prompt.d.ts +2 -3
  242. package/dist/schemes/Prompt.d.ts.map +1 -1
  243. package/dist/schemes/Prompt.js +5 -9
  244. package/dist/schemes/Prompt.js.map +1 -1
  245. package/dist/schemes/QuestionTool.d.ts +10 -0
  246. package/dist/schemes/QuestionTool.d.ts.map +1 -0
  247. package/dist/schemes/QuestionTool.js +81 -0
  248. package/dist/schemes/QuestionTool.js.map +1 -0
  249. package/dist/schemes/Skill.d.ts.map +1 -1
  250. package/dist/schemes/Skill.js +6 -1
  251. package/dist/schemes/Skill.js.map +1 -1
  252. package/dist/schemes/Worker.d.ts.map +1 -1
  253. package/dist/schemes/Worker.js +97 -34
  254. package/dist/schemes/Worker.js.map +1 -1
  255. package/dist/schemes/_entry-crud.d.ts +5 -5
  256. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  257. package/dist/schemes/_entry-crud.js +22 -17
  258. package/dist/schemes/_entry-crud.js.map +1 -1
  259. package/dist/schemes/_entry-crud.sql +77 -24
  260. package/dist/schemes/_entry-find.d.ts +8 -5
  261. package/dist/schemes/_entry-find.d.ts.map +1 -1
  262. package/dist/schemes/_entry-find.js +121 -40
  263. package/dist/schemes/_entry-find.js.map +1 -1
  264. package/dist/schemes/_entry-find.sql +16 -11
  265. package/dist/schemes/_entry-graph.sql +2 -6
  266. package/dist/schemes/_entry-manifest.d.ts +2 -2
  267. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  268. package/dist/schemes/_entry-manifest.js +18 -6
  269. package/dist/schemes/_entry-manifest.js.map +1 -1
  270. package/dist/schemes/_entry-ops.d.ts +6 -5
  271. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  272. package/dist/schemes/_entry-ops.js +39 -46
  273. package/dist/schemes/_entry-ops.js.map +1 -1
  274. package/dist/schemes/_entry-ops.sql +9 -6
  275. package/dist/schemes/_entry-send.d.ts +2 -2
  276. package/dist/schemes/_entry-send.d.ts.map +1 -1
  277. package/dist/schemes/_entry-send.js +16 -14
  278. package/dist/schemes/_entry-send.js.map +1 -1
  279. package/dist/schemes/_search-index.d.ts.map +1 -1
  280. package/dist/schemes/_search-index.js +39 -25
  281. package/dist/schemes/_search-index.js.map +1 -1
  282. package/dist/server/Daemon.d.ts +98 -15
  283. package/dist/server/Daemon.d.ts.map +1 -1
  284. package/dist/server/Daemon.js +864 -348
  285. package/dist/server/Daemon.js.map +1 -1
  286. package/dist/server/DaemonModule.d.ts +84 -19
  287. package/dist/server/DaemonModule.d.ts.map +1 -1
  288. package/dist/server/DrainSupervisor.d.ts +15 -10
  289. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  290. package/dist/server/DrainSupervisor.js +70 -19
  291. package/dist/server/DrainSupervisor.js.map +1 -1
  292. package/dist/server/Functionality.d.ts +44 -0
  293. package/dist/server/Functionality.d.ts.map +1 -0
  294. package/dist/server/Functionality.js +422 -0
  295. package/dist/server/Functionality.js.map +1 -0
  296. package/dist/server/FunctionalityManager.d.ts +22 -0
  297. package/dist/server/FunctionalityManager.d.ts.map +1 -0
  298. package/dist/server/FunctionalityManager.js +121 -0
  299. package/dist/server/FunctionalityManager.js.map +1 -0
  300. package/dist/server/SkillsFunctionality.d.ts +61 -0
  301. package/dist/server/SkillsFunctionality.d.ts.map +1 -0
  302. package/dist/server/SkillsFunctionality.js +449 -0
  303. package/dist/server/SkillsFunctionality.js.map +1 -0
  304. package/dist/server/WorkerCapabilities.d.ts +21 -0
  305. package/dist/server/WorkerCapabilities.d.ts.map +1 -0
  306. package/dist/server/WorkerCapabilities.js +214 -0
  307. package/dist/server/WorkerCapabilities.js.map +1 -0
  308. package/dist/server/WorkerResidency.d.ts +40 -0
  309. package/dist/server/WorkerResidency.d.ts.map +1 -0
  310. package/dist/server/WorkerResidency.js +283 -0
  311. package/dist/server/WorkerResidency.js.map +1 -0
  312. package/dist/server/client-input.d.ts +6 -2
  313. package/dist/server/client-input.d.ts.map +1 -1
  314. package/dist/server/client-input.js +72 -32
  315. package/dist/server/client-input.js.map +1 -1
  316. package/dist/server/dispatch-as-plurnk.d.ts +2 -2
  317. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  318. package/dist/server/dispatch-as-plurnk.js +109 -23
  319. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  320. package/dist/server/drain.sql +33 -13
  321. package/dist/server/envelope.d.ts +7 -2
  322. package/dist/server/envelope.d.ts.map +1 -1
  323. package/dist/server/envelope.js +12 -6
  324. package/dist/server/envelope.js.map +1 -1
  325. package/dist/server/envelope.sql +36 -4
  326. package/dist/server/lifecycle-recovery.sql +24 -17
  327. package/dist/server/logEntry.d.ts +2 -1
  328. package/dist/server/logEntry.d.ts.map +1 -1
  329. package/dist/server/logEntry.js +3 -2
  330. package/dist/server/logEntry.js.map +1 -1
  331. package/dist/server/logEntry.sql +7 -0
  332. package/dist/server/loop-model.d.ts +2 -2
  333. package/dist/server/loop-model.d.ts.map +1 -1
  334. package/dist/server/loop-model.js +23 -33
  335. package/dist/server/loop-model.js.map +1 -1
  336. package/dist/server/loopDocs.d.ts +2 -1
  337. package/dist/server/loopDocs.d.ts.map +1 -1
  338. package/dist/server/loopDocs.js +88 -21
  339. package/dist/server/loopDocs.js.map +1 -1
  340. package/dist/server/loopDocs.sql +14 -8
  341. package/dist/server/model-catalog.d.ts +3 -0
  342. package/dist/server/model-catalog.d.ts.map +1 -0
  343. package/dist/server/model-catalog.js +83 -0
  344. package/dist/server/model-catalog.js.map +1 -0
  345. package/dist/server/model-route.d.ts +7 -0
  346. package/dist/server/model-route.d.ts.map +1 -0
  347. package/dist/server/model-route.js +47 -0
  348. package/dist/server/model-route.js.map +1 -0
  349. package/dist/server/module-discovery.d.ts +13 -0
  350. package/dist/server/module-discovery.d.ts.map +1 -0
  351. package/dist/server/module-discovery.js +103 -0
  352. package/dist/server/module-discovery.js.map +1 -0
  353. package/dist/server/seam-entry-read.sql +9 -7
  354. package/dist/server/seam-log-read.sql +1 -1
  355. package/dist/server/seam-loop.sql +10 -1
  356. package/dist/server/seam-proposal-list.sql +4 -2
  357. package/dist/server/worker-capabilities.sql +19 -0
  358. package/dist/service.d.ts.map +1 -1
  359. package/dist/service.js +193 -124
  360. package/dist/service.js.map +1 -1
  361. package/migrations/001_schema.sql +905 -196
  362. package/package.json +40 -38
  363. package/dist/core/ExecutableTools.d.ts +0 -11
  364. package/dist/core/ExecutableTools.d.ts.map +0 -1
  365. package/dist/core/ExecutableTools.js +0 -49
  366. package/dist/core/ExecutableTools.js.map +0 -1
  367. package/dist/core/JournalTurn.d.ts +0 -9
  368. package/dist/core/JournalTurn.d.ts.map +0 -1
  369. package/dist/core/JournalTurn.js +0 -14
  370. package/dist/core/JournalTurn.js.map +0 -1
  371. package/dist/core/JournalTurn.sql +0 -10
  372. package/dist/core/git-iso.d.ts +0 -13
  373. package/dist/core/git-iso.d.ts.map +0 -1
  374. package/dist/core/git-iso.js +0 -267
  375. package/dist/core/git-iso.js.map +0 -1
  376. package/dist/core/search-gate.d.ts +0 -17
  377. package/dist/core/search-gate.d.ts.map +0 -1
  378. package/dist/core/search-gate.js +0 -77
  379. package/dist/core/search-gate.js.map +0 -1
  380. package/dist/digest/Digest.sql +0 -1
  381. package/dist/server/workspace-capabilities.sql +0 -19
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // A client-interface module receives this value from an explicit workspace create
4
4
  // or attach call. Core creates or selects the client worker but retains no transport
5
- // binding; each dispatched client action allocates and settles its own journal segment.
5
+ // binding; each dispatched client action allocates and settles its own administrative loop.
6
6
  import GitMembership from "../core/git-membership.js";
7
7
  import Results, { OperationFailureError } from "../core/results.js";
8
8
  import LoopLifecycle from "../core/LoopLifecycle.js";
@@ -103,8 +103,8 @@ export default class Envelope {
103
103
  workerId: worker.id, workerName: worker.name,
104
104
  };
105
105
  }
106
- // Client action journal allocator. One action allocates one segment; its
107
- // statements become ordered turns and settlement closes the segment.
106
+ // Client action loop allocator. One action allocates one administrative
107
+ // loop; its statements become ordered turns and settlement closes the loop.
108
108
  static async ensureClientLoop(db, workerId) {
109
109
  const loop = await db.envelope_insert_client_loop.get({ worker_id: workerId });
110
110
  if (loop === undefined)
@@ -151,13 +151,19 @@ export default class Envelope {
151
151
  const existing = await db.envelope_get_worker_by_name.get({ workspace_id: workspaceId, name: "plurnk" });
152
152
  if (existing !== undefined)
153
153
  return existing.id;
154
- const worker = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: "plurnk", origin: "plurnk" });
154
+ const worker = await db.envelope_insert_worker.get({ workspace_id: workspaceId, name: "plurnk", origin: "_plurnk" });
155
155
  if (worker === undefined)
156
156
  throw new Error("ensurePlurnkWorker: worker insert returned no row");
157
157
  return worker.id;
158
158
  }
159
- static async listWorkersForWorkspace(db, workspaceId) {
160
- return await db.envelope_list_workers_for_workspace.all({ workspace_id: workspaceId });
159
+ static async listWorkersForWorkspace(db, workspaceId, query = {}) {
160
+ const filterParent = Object.hasOwn(query, "parentWorkerId");
161
+ return await db.envelope_list_workers_for_workspace.all({
162
+ workspace_id: workspaceId,
163
+ origin: query.origin ?? null,
164
+ filter_parent: filterParent ? 1 : 0,
165
+ parent_worker_id: query.parentWorkerId ?? null,
166
+ });
161
167
  }
162
168
  // {§methods-workspace-prompts}: expose root-conversation loop seeds directly,
163
169
  // without forcing clients to reconstruct prompt history from log rows.
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/server/envelope.ts"],"names":[],"mappings":"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"}
@@ -28,23 +28,55 @@ RETURNING id, name;
28
28
 
29
29
  -- PREP: envelope_insert_worker
30
30
  -- origin is the worker's actor ({§machine-processes}): 'model' (the conversation),
31
- -- 'client' (a connection's own worker), or 'plurnk' (the runtime self-hosting worker).
31
+ -- 'client' (a connection's own worker), or '_plurnk' (the runtime self-hosting worker).
32
32
  INSERT INTO workers (workspace_id, name, origin)
33
33
  VALUES ($workspace_id, $name, $origin)
34
34
  RETURNING id, name, origin;
35
35
 
36
36
  -- PREP: envelope_get_worker_by_id
37
- SELECT id, name, workspace_id, origin FROM workers WHERE id = $id;
37
+ SELECT id, name, workspace_id, created_at, origin,
38
+ parent_worker_id AS parentWorkerId
39
+ FROM workers
40
+ WHERE id = $id;
38
41
 
39
42
  -- PREP: envelope_get_worker_by_name
40
- SELECT id, name FROM workers WHERE workspace_id = $workspace_id AND name = $name;
43
+ SELECT id, name, workspace_id, created_at, origin,
44
+ parent_worker_id AS parentWorkerId
45
+ FROM workers
46
+ WHERE workspace_id = $workspace_id AND name = $name;
41
47
 
42
48
  -- PREP: envelope_list_workers_for_workspace
43
- SELECT id, name, created_at, origin
49
+ SELECT id, name, created_at, origin, parent_worker_id AS parentWorkerId
44
50
  FROM workers
45
51
  WHERE workspace_id = $workspace_id
52
+ AND ($origin IS NULL OR origin = $origin)
53
+ AND ($filter_parent = 0 OR parent_worker_id IS $parent_worker_id)
46
54
  ORDER BY created_at DESC;
47
55
 
56
+ -- PREP: worker_settings_read
57
+ -- {§worker-settings} — the worker's own behavioral-rules bag.
58
+ SELECT settings FROM workers WHERE id = $id;
59
+
60
+ -- PREP: worker_settings_update
61
+ UPDATE workers
62
+ SET settings = $settings,
63
+ version = version + 1
64
+ WHERE id = $id
65
+ RETURNING id;
66
+
67
+ -- PREP: worker_generation_policy_read
68
+ -- {§worker-model-selection}/{§worker-reasoning-policy} — one durable generation policy.
69
+ SELECT model_route_id, spawn_model_route_id, reasoning_policy FROM workers WHERE id = $id;
70
+
71
+ -- PREP: worker_generation_policy_update
72
+ UPDATE workers
73
+ SET model_route_id = $model_route_id,
74
+ spawn_model_route_id = $spawn_model_route_id,
75
+ reasoning_policy = $reasoning_policy,
76
+ version = version + 1
77
+ WHERE id = $id
78
+ RETURNING id;
79
+
48
80
  -- PREP: envelope_list_workspace_prompts
49
81
  -- {§methods-workspace-prompts}: nonempty model-root loop seeds, newest-first;
50
82
  -- spawned and forked children are not workspace-level user prompt history.
@@ -10,7 +10,7 @@ SET status = 500,
10
10
  terminal_result = json_object(
11
11
  'status', 500,
12
12
  'problem', json_object(
13
- 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
13
+ 'type', 'https://problems.plurnk.xyz/lifecycle/recovery/owner-vanished',
14
14
  'title', 'Owner vanished',
15
15
  'status', 500,
16
16
  'detail', 'The daemon restarted while this loop was active; its process-local owner no longer exists.',
@@ -47,7 +47,7 @@ SET state = 'error',
47
47
  failure = json_object(
48
48
  'status', 500,
49
49
  'problem', json_object(
50
- 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
50
+ 'type', 'https://problems.plurnk.xyz/lifecycle/recovery/owner-vanished',
51
51
  'title', 'Owner vanished',
52
52
  'status', 500,
53
53
  'detail', 'The daemon restarted before this provider response was durably observed; whether the provider completed the call is unknown.'
@@ -63,6 +63,16 @@ WHERE state = 'pending'
63
63
  AND l.terminated_at IS NOT NULL
64
64
  );
65
65
 
66
+ -- PREP: recovery_fail_open_turns
67
+ -- Every open turn has lost its process-local producer, including a narrow crash
68
+ -- window after its loop parked or queued. Provider evidence settles first; then
69
+ -- the producer-neutral lifecycle closes every unfinished container without
70
+ -- fabricating packet evidence.
71
+ UPDATE turns
72
+ SET status = 500,
73
+ completed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
74
+ WHERE completed_at IS NULL;
75
+
66
76
  -- PREP: recovery_fail_ownerless_proposals
67
77
  -- {§worker-lifecycle-restart-recovery} Every proposed row depended on a
68
78
  -- process-local resolution waiter. At boot that owner is necessarily gone, so
@@ -74,7 +84,7 @@ SET state = 'failed',
74
84
  rx = json_object(
75
85
  'status', 500,
76
86
  'problem', json_object(
77
- 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
87
+ 'type', 'https://problems.plurnk.xyz/lifecycle/recovery/owner-vanished',
78
88
  'title', 'Owner vanished',
79
89
  'status', 500,
80
90
  'detail', 'The daemon restarted while this proposal was pending; its process-local owner no longer exists.',
@@ -117,17 +127,18 @@ SET closed_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now'),
117
127
  close_result = json_object(
118
128
  'status', 500,
119
129
  'problem', json_object(
120
- 'type', 'https://problems.plurnk.dev/lifecycle/recovery/owner-vanished',
130
+ 'type', 'https://problems.plurnk.xyz/lifecycle/recovery/owner-vanished',
121
131
  'title', 'Owner vanished',
122
132
  'status', 500,
123
133
  'detail', 'The daemon restarted while this stream was active; its process-local owner no longer exists.'
124
134
  )
125
- )
135
+ ),
136
+ channel_results = '{}'
126
137
  WHERE closed_at IS NULL;
127
138
 
128
139
  -- PREP: recovery_resume_unblocked_parks
129
140
  -- A 202 continuation is valid only while its worker still holds an open stream
130
- -- or a child whose latest loop is live. Requeue every now-satisfied park in one
141
+ -- or a child with any unresolved loop. Requeue every now-satisfied park in one
131
142
  -- pass; child completion propagates the same transition to ancestors later.
132
143
  UPDATE loops
133
144
  SET status = 100
@@ -140,13 +151,7 @@ WHERE status = 202
140
151
  AND NOT EXISTS (
141
152
  SELECT 1
142
153
  FROM workers child
143
- JOIN loops child_loop ON child_loop.id = (
144
- SELECT id
145
- FROM loops latest
146
- WHERE latest.worker_id = child.id
147
- ORDER BY latest.sequence DESC, latest.id DESC
148
- LIMIT 1
149
- )
154
+ JOIN loops child_loop ON child_loop.worker_id = child.id
150
155
  WHERE child.parent_worker_id = loops.worker_id
151
156
  AND child_loop.status IN (100, 102, 202)
152
157
  );
@@ -155,8 +160,9 @@ WHERE status = 202
155
160
  -- {§prompt-loop-containment}: finish an absent or partially staged orphan
156
161
  -- recovery before queued drains become visible at boot. A non-queued recovery
157
162
  -- already crossed its delivery boundary and must never be replayed.
158
- SELECT source.id AS loop_id, source.worker_id AS worker_id
163
+ SELECT source.id AS loop_id, source.worker_id AS worker_id, w.origin
159
164
  FROM loops source
165
+ JOIN workers w ON w.id = source.worker_id
160
166
  LEFT JOIN loops recovery ON recovery.orphan_source_loop_id = source.id
161
167
  WHERE source.status IN (200, 413, 429, 499, 500, 504, 508)
162
168
  AND (recovery.id IS NULL OR recovery.status = 100)
@@ -165,18 +171,19 @@ WHERE source.status IN (200, 413, 429, 499, 500, 504, 508)
165
171
  FROM entries e
166
172
  JOIN entry_channels c ON c.entry_id = e.id AND c.name = 'body'
167
173
  WHERE e.scheme = 'prompt'
174
+ AND e.authority = ''
168
175
  AND e.owner_id = source.worker_id
169
176
  AND e.pathname LIKE '/' || source.sequence || '/%'
170
177
  AND NOT EXISTS (
171
178
  SELECT 1 FROM log_entries le
172
- WHERE le.loop_id = source.id AND le.origin = 'plurnk' AND le.op = 'prompt'
179
+ WHERE le.loop_id = source.id AND le.origin = '_plurnk' AND le.op = 'prompt'
173
180
  AND le.scheme = 'prompt' AND le.pathname = e.pathname
174
181
  )
175
182
  )
176
183
  ORDER BY source.worker_id, source.sequence;
177
184
 
178
185
  -- PREP: recovery_queued_workers
179
- SELECT DISTINCT w.id AS worker_id, w.workspace_id
186
+ SELECT DISTINCT w.id AS worker_id, w.workspace_id, w.origin
180
187
  FROM workers w
181
188
  JOIN loops l ON l.worker_id = w.id
182
189
  WHERE l.status = 100
@@ -190,7 +197,7 @@ WHERE l.status = 100
190
197
  ORDER BY w.id;
191
198
 
192
199
  -- PREP: recovery_parked_workers
193
- SELECT DISTINCT w.id AS worker_id, w.workspace_id
200
+ SELECT DISTINCT w.id AS worker_id, w.workspace_id, w.origin
194
201
  FROM workers w
195
202
  JOIN loops l ON l.worker_id = w.id
196
203
  WHERE l.status = 202
@@ -11,7 +11,7 @@ export type LogEntryWire = {
11
11
  origin: string;
12
12
  source: string | null;
13
13
  op: string | null;
14
- suffix: string;
14
+ delimiter: string;
15
15
  signal: unknown;
16
16
  scheme: string | null;
17
17
  username: string | null;
@@ -30,6 +30,7 @@ export type LogEntryWire = {
30
30
  weight: number;
31
31
  attrs: unknown;
32
32
  tags: string[];
33
+ reasoning?: string;
33
34
  };
34
35
  export default class LogEntry {
35
36
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"logEntry.d.ts","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAMxC,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAsBzB,OAAa,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAmCpE;CACJ"}
1
+ {"version":3,"file":"logEntry.d.ts","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAMxC,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAsBzB,OAAa,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoCpE;CACJ"}
@@ -4,7 +4,7 @@
4
4
  export default class LogEntry {
5
5
  static #parseJsonOrNull(v) {
6
6
  // "" is the actionless-row sentinel for "no statement" (error and
7
- // model-emission rows store tx="");
7
+ // actionless source rows store tx="");
8
8
  // JSON.parse("") throws, so an empty string is no-value → null, like NULL itself.
9
9
  if (v === null || v === undefined || v === "")
10
10
  return null;
@@ -39,7 +39,7 @@ export default class LogEntry {
39
39
  origin: row.origin,
40
40
  source: row.source,
41
41
  op: row.op,
42
- suffix: row.suffix,
42
+ delimiter: row.delimiter,
43
43
  signal: LogEntry.#parseJsonOrNull(row.signal),
44
44
  scheme: row.scheme,
45
45
  username: row.username,
@@ -58,6 +58,7 @@ export default class LogEntry {
58
58
  weight: row.weight,
59
59
  attrs: LogEntry.#parseJsonOrNull(row.attrs),
60
60
  tags: LogEntry.#parseTags(row.tags),
61
+ ...(typeof row.reasoning === "string" ? { reasoning: row.reasoning } : {}),
61
62
  };
62
63
  }
63
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logEntry.js","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logEntry.js","sourceRoot":"","sources":["../../src/server/logEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,mEAAmE;AACnE,yCAAyC;AA0CzC,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,gBAAgB,CAAC,CAAU;QAC9B,kEAAkE;QAClE,uCAAuC;QACvC,kFAAkF;QAClF,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAc;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAM,EAAE,EAAU;QACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,GAAG,CAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QAC1E,OAAO;YACH,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,EAAE,EAAE,GAAG,CAAC,EAAmB;YAC3B,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7C,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,IAAI,EAAE,GAAG,CAAC,IAAqB;YAC/B,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,KAAK,EAAE,GAAG,CAAC,KAAsB;YACjC,QAAQ,EAAE,GAAG,CAAC,QAAyB;YACvC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;YACrD,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,WAAqB;YACtC,EAAE,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,WAAqB;YACtC,SAAS,EAAE,GAAG,CAAC,SAAmB;YAClC,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,GAAG,CAAC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E,CAAC;IACN,CAAC;CACJ"}
@@ -4,6 +4,13 @@
4
4
  -- loop_seq / turn_seq are the loop+turn ordinals (the logical coordinate clients
5
5
  -- render, e.g. 01/02/03) — distinct from the loop_id/turn_id DB keys ({§methods-log-coordinate}).
6
6
  SELECT le.*, l.sequence AS loop_seq, t.sequence AS turn_seq,
7
+ CASE
8
+ WHEN le.origin = 'model'
9
+ AND le.op = 'SEND'
10
+ AND json_type(t.packet, '$.assistant.reasoning') = 'text'
11
+ AND length(json_extract(t.packet, '$.assistant.reasoning')) > 0
12
+ THEN json_extract(t.packet, '$.assistant.reasoning')
13
+ END AS reasoning,
7
14
  COALESCE((
8
15
  SELECT json_group_array(tag)
9
16
  FROM (SELECT tag FROM log_tags WHERE log_entry_id = le.id ORDER BY tag)
@@ -1,3 +1,3 @@
1
- import type { ProviderAlias } from "@plurnk/plurnk-providers";
2
- export declare const resolveLoopAlias: (alias: string | undefined, model: string | undefined, declared: readonly ProviderAlias[]) => ProviderAlias | null;
1
+ import type { ProviderAlias, ProviderSpec } from "@plurnk/plurnk-providers";
2
+ export declare const resolveLoopRoute: (selector: string | undefined, declared: readonly ProviderAlias[]) => ProviderSpec | null;
3
3
  //# sourceMappingURL=loop-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-model.d.ts","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAW9D,eAAO,MAAM,gBAAgB,UAClB,MAAM,GAAG,SAAS,SAClB,MAAM,GAAG,SAAS,YACf,SAAS,aAAa,EAAE,KACnC,aAAa,GAAG,IA0ClB,CAAC"}
1
+ {"version":3,"file":"loop-model.d.ts","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAW5E,eAAO,MAAM,gBAAgB,aACf,MAAM,GAAG,SAAS,YAClB,SAAS,aAAa,EAAE,KACnC,YAAY,GAAG,IAsBjB,CAAC"}
@@ -1,39 +1,29 @@
1
+ import { resolveModelSelector } from "@plurnk/plurnk-providers";
1
2
  import Results, { OperationFailureError } from "../core/results.js";
2
- // {§methods-loop-run-model}: resolve a runLoop call's optional (alias, model) to the
3
- // ProviderAlias to instantiate, or null for "use the boot default". PURE (no env read, no
3
+ // {§methods-loop-run-model}: resolve a runLoop call's optional selector to the
4
+ // ProviderSpec to instantiate, or null for "use the boot default". PURE (no env read, no
4
5
  // construction) so the precedence + parse contract is hermetically testable; the Daemon wraps it
5
6
  // with ProviderInstantiate + the #provider fallback.
6
7
  //
7
- // Precedence: `model` (client-resolved `<provider>/<model>`) wins over a named `alias`.
8
- // A malformed model spec or an undeclared alias throws legibly — the daemon must never silently
9
- // run the wrong model.
10
- export const resolveLoopAlias = (alias, model, declared) => {
11
- if (typeof model === "string" && model.length > 0) {
12
- const slash = model.indexOf("/");
13
- if (slash <= 0 || slash === model.length - 1) {
14
- throw new OperationFailureError(Results.failure("daemon:provider", "model-spec-invalid", 400, `Model '${model}' is not a provider/model specification.`, {}, {
15
- model,
16
- stage: "provider-selection",
17
- recovery: "Use a provider/model specification.",
18
- retryable: false,
19
- }));
20
- }
21
- // A client-resolved spec is alias-independent: the provider's own env carries the
22
- // base URL, so the synthetic alias name is cosmetic (reuse the given alias if present).
23
- return { alias: alias ?? model, provider: model.slice(0, slash), model: model.slice(slash + 1) };
24
- }
25
- if (typeof alias === "string" && alias.length > 0) {
26
- const resolved = declared.find((a) => a.alias === alias.toLowerCase());
27
- if (resolved === undefined) {
28
- throw new OperationFailureError(Results.failure("daemon:provider", "alias-not-found", 404, `Provider alias '${alias}' is not declared.`, {}, {
29
- alias,
30
- stage: "provider-selection",
31
- recovery: "Select a declared provider alias.",
32
- retryable: false,
33
- }));
34
- }
35
- return resolved;
36
- }
37
- return null; // neither → the daemon's boot default
8
+ // One selector accepts either a declared alias or an exact provider/model route.
9
+ // A malformed route or undeclared alias throws legibly — the daemon must never
10
+ // silently run the wrong model.
11
+ export const resolveLoopRoute = (selector, declared) => {
12
+ if (selector === undefined)
13
+ return null;
14
+ const route = resolveModelSelector(selector, declared);
15
+ if (route !== null)
16
+ return route;
17
+ const exact = selector.includes("/");
18
+ throw new OperationFailureError(Results.failure("daemon:provider", exact ? "model-spec-invalid" : "alias-not-found", exact ? 400 : 404, exact
19
+ ? `Model selector '${selector}' is not a provider/model specification.`
20
+ : `Provider alias '${selector}' is not declared.`, {}, {
21
+ selector,
22
+ stage: "provider-selection",
23
+ recovery: exact
24
+ ? "Use a provider/model specification."
25
+ : "Select a declared alias or use a provider/model specification.",
26
+ retryable: false,
27
+ }));
38
28
  };
39
29
  //# sourceMappingURL=loop-model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-model.js","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,qFAAqF;AACrF,0FAA0F;AAC1F,iGAAiG;AACjG,qDAAqD;AACrD,EAAE;AACF,wFAAwF;AACxF,gGAAgG;AAChG,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,KAAyB,EACzB,KAAyB,EACzB,QAAkC,EACd,EAAE;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAC3C,iBAAiB,EACjB,oBAAoB,EACpB,GAAG,EACH,UAAU,KAAK,0CAA0C,EACzD,EAAE,EACF;gBACI,KAAK;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,qCAAqC;gBAC/C,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,kFAAkF;QAClF,wFAAwF;QACxF,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAC3C,iBAAiB,EACjB,iBAAiB,EACjB,GAAG,EACH,mBAAmB,KAAK,oBAAoB,EAC5C,EAAE,EACF;gBACI,KAAK;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,mCAAmC;gBAC7C,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,CAAE,sCAAsC;AACxD,CAAC,CAAC"}
1
+ {"version":3,"file":"loop-model.js","sourceRoot":"","sources":["../../src/server/loop-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,+EAA+E;AAC/E,yFAAyF;AACzF,iGAAiG;AACjG,qDAAqD;AACrD,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,QAA4B,EAC5B,QAAkC,EACf,EAAE;IACrB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAC3C,iBAAiB,EACjB,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,EAChD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EACjB,KAAK;QACD,CAAC,CAAC,mBAAmB,QAAQ,0CAA0C;QACvE,CAAC,CAAC,mBAAmB,QAAQ,oBAAoB,EACrD,EAAE,EACF;QACI,QAAQ;QACR,KAAK,EAAE,oBAAoB;QAC3B,QAAQ,EAAE,KAAK;YACX,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,gEAAgE;QACtE,SAAS,EAAE,KAAK;KACnB,CACJ,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import type Engine from "../core/Engine.ts";
2
2
  import type { Db } from "../core/Db.ts";
3
3
  export default class LoopDocs {
4
4
  #private;
5
- static materialize(engine: Engine, db: Db, workspaceId: number): Promise<void>;
5
+ static evict(db: Db, workerId: number): void;
6
+ static materialize(engine: Engine, db: Db, workspaceId: number, workerId: number): Promise<void>;
6
7
  }
7
8
  //# sourceMappingURL=loopDocs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loopDocs.d.ts","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAYxC,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAgBzB,OAAa,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCnF;CACJ"}
1
+ {"version":3,"file":"loopDocs.d.ts","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AASxC,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAOzB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE3C;IAsCD,OAAa,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DrG;CACJ"}
@@ -1,52 +1,119 @@
1
+ // Worker documentation reconciliation. It runs when that worker's Functionality
2
+ // becomes resident and after its snapshot changes. Two private sets run through
3
+ // an ordinary `_plurnk` turn in the addressed worker ({§actor-boundary-doc-injection}):
4
+ // 1. the project AGENTS.md at worker://~/_plurnk/agents.md — Engine.runTurn foists
5
+ // its READ at turn 0 ({§turn0-agents-stunt});
6
+ // 2. the exact current scheme and executable-tool reference set under
7
+ // worker://~/_plurnk/skills/plurnk/ and worker://~/_plurnk/tools/ — discovered by the
8
+ // turn-0 FIND surveys ({§schemes-self-doc-materialization},
9
+ // {§tools-resource-materialization}).
10
+ import { createHash } from "node:crypto";
11
+ import { readdir, readFile } from "node:fs/promises";
12
+ import { join } from "node:path";
13
+ import { generatedPathname } from "../core/plurnk-uri.js";
1
14
  import { UNKNOWN_POSITION, } from "@plurnk/plurnk-contracts";
2
- import WorkspaceSettings from "../core/workspace-settings.js";
3
- import Owner from "../core/Owner.js";
4
15
  import DispatchAsPlurnk from "./dispatch-as-plurnk.js";
5
16
  export default class LoopDocs {
17
+ // {§schemes-self-doc-materialization} {§tools-resource-materialization} —
18
+ // the generated-skill surface tracks a content signature so repeated
19
+ // boot/module-publish materializations dispatch nothing when nothing
20
+ // changed (the entry layer's 304 no-op never even runs).
21
+ static #signatures = new WeakMap();
22
+ static evict(db, workerId) {
23
+ LoopDocs.#signatures.get(db)?.delete(workerId);
24
+ }
25
+ // Nested AGENTS.md files below the project root (the root file has its own
26
+ // slot), skipping dot-directories and node_modules. Deterministic order.
27
+ static async #nestedInstructions(root) {
28
+ const out = [];
29
+ const walk = async (relative) => {
30
+ const entries = await readdir(join(root, relative), { withFileTypes: true }).catch(() => []);
31
+ for (const entry of entries) {
32
+ const childRelative = relative.length === 0 ? entry.name : `${relative}/${entry.name}`;
33
+ if (entry.isDirectory()) {
34
+ if (entry.name.startsWith(".") || entry.name === "node_modules")
35
+ continue;
36
+ await walk(childRelative);
37
+ }
38
+ else if (entry.name === "AGENTS.md" && relative.length > 0) {
39
+ const content = await readFile(join(root, childRelative), "utf8").catch(() => null);
40
+ if (content !== null)
41
+ out.push([childRelative, content]);
42
+ }
43
+ }
44
+ };
45
+ await walk("");
46
+ return out.toSorted((left, right) => left[0].localeCompare(right[0]));
47
+ }
6
48
  static #target(pathname) {
7
49
  return {
8
50
  kind: "url",
9
- raw: `worker://plurnk${pathname}`,
51
+ raw: `worker://~${pathname}`,
10
52
  scheme: "worker",
11
53
  username: null,
12
54
  password: null,
13
- hostname: "plurnk",
55
+ hostname: "~",
14
56
  port: null,
15
57
  pathname,
16
58
  query: null,
17
59
  fragment: null,
18
60
  };
19
61
  }
20
- static async materialize(engine, db, workspaceId) {
21
- const { mdDocs } = await WorkspaceSettings.read(db, workspaceId);
22
- const statements = (await WorkspaceSettings.resolveDocs(mdDocs)).map((doc) => ({
23
- op: "EDIT", suffix: "", signal: null,
24
- target: LoopDocs.#target(`/${doc.entryName}`),
25
- lineMarker: { marks: [1, -1] }, body: doc.content, position: UNKNOWN_POSITION,
26
- }));
27
- const desiredDocs = new Map((await engine.docEntries(workspaceId)).map(({ name, content }) => [`/docs/${name}.md`, content]));
28
- const ownerId = await Owner.kernelId(db, workspaceId);
29
- const materializedDocs = await db.loop_docs_materialized.all({
62
+ static async materialize(engine, db, workspaceId, workerId) {
63
+ // {§turn0-agents-stunt} — the project's AGENTS.md becomes one
64
+ // worker-private worker://~/_plurnk/agents.md entry, foisted at turn 0.
65
+ const workspace = await db.envelope_get_workspace.get({
66
+ id: workspaceId,
67
+ });
68
+ const agentsContent = workspace?.project_root === null || workspace?.project_root === undefined
69
+ ? null
70
+ : await readFile(join(workspace.project_root, "AGENTS.md"), "utf8").catch(() => null);
71
+ const desired = new Map((await engine.referenceEntries(workspaceId, workerId)).map(({ pathname, content }) => [pathname, content]));
72
+ if (agentsContent !== null)
73
+ desired.set(generatedPathname("/agents.md"), agentsContent);
74
+ // #346 — nested AGENTS.md honor the standard's closest-file scope:
75
+ // each materializes at _plurnk/instructions/<subtree>/AGENTS.md with its
76
+ // path preserved. No foisted READ and no teaching (operator-ruled):
77
+ // the path convention is in the models' prior, and the files are
78
+ // ordinary members in the file survey.
79
+ if (workspace?.project_root !== null && workspace?.project_root !== undefined) {
80
+ for (const [relative, content] of await LoopDocs.#nestedInstructions(workspace.project_root)) {
81
+ desired.set(generatedPathname(`/instructions/${relative}`), content);
82
+ }
83
+ }
84
+ const signature = createHash("sha256")
85
+ .update([...desired].map(([pathname, content]) => `${pathname}\u0000${content}`).join("\u0001"))
86
+ .digest("hex");
87
+ const byWorker = LoopDocs.#signatures.get(db) ?? new Map();
88
+ if (byWorker.get(workerId) === signature)
89
+ return;
90
+ const materialized = await db.loop_docs_materialized.all({
30
91
  workspace_id: workspaceId,
31
- owner_id: ownerId,
92
+ owner_id: workerId,
32
93
  });
33
- for (const { pathname } of materializedDocs) {
34
- if (desiredDocs.has(pathname))
94
+ const current = new Map(materialized.map(({ pathname, content }) => [pathname, content]));
95
+ const statements = [];
96
+ for (const pathname of current.keys()) {
97
+ if (desired.has(pathname))
35
98
  continue;
36
99
  statements.push({
37
- op: "SEND", suffix: "", signal: 410,
100
+ op: "KILL", delimiter: "", annotation: null, signal: null,
38
101
  target: LoopDocs.#target(pathname),
39
102
  lineMarker: null, body: null, position: UNKNOWN_POSITION,
40
103
  });
41
104
  }
42
- for (const [pathname, content] of desiredDocs) {
105
+ for (const [pathname, content] of desired) {
106
+ if (current.get(pathname) === content)
107
+ continue;
43
108
  statements.push({
44
- op: "EDIT", suffix: "", signal: null,
109
+ op: "EDIT", delimiter: "", annotation: null, signal: null,
45
110
  target: LoopDocs.#target(pathname),
46
111
  lineMarker: { marks: [1, -1] }, body: content, position: UNKNOWN_POSITION,
47
112
  });
48
113
  }
49
- await DispatchAsPlurnk.dispatch(engine, db, workspaceId, statements);
114
+ await DispatchAsPlurnk.dispatch(engine, db, workspaceId, workerId, statements);
115
+ byWorker.set(workerId, signature);
116
+ LoopDocs.#signatures.set(db, byWorker);
50
117
  }
51
118
  }
52
119
  //# sourceMappingURL=loopDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loopDocs.js","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loopDocs.js","sourceRoot":"","sources":["../../src/server/loopDocs.ts"],"names":[],"mappings":"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"}