@plurnk/plurnk-service 1.17.0 → 1.19.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 (501) hide show
  1. package/.env.defaults +95 -14
  2. package/README.md +5 -3
  3. package/SPEC.md +1756 -1442
  4. package/dist/Paths.js +3 -3
  5. package/dist/build-info.json +1 -1
  6. package/dist/content/body-preview.d.ts +1 -0
  7. package/dist/content/body-preview.d.ts.map +1 -1
  8. package/dist/content/body-preview.js +8 -10
  9. package/dist/content/body-preview.js.map +1 -1
  10. package/dist/content/edit-receipt.d.ts.map +1 -1
  11. package/dist/content/edit-receipt.js +30 -29
  12. package/dist/content/edit-receipt.js.map +1 -1
  13. package/dist/content/line-anchors.d.ts.map +1 -1
  14. package/dist/content/line-anchors.js +17 -5
  15. package/dist/content/line-anchors.js.map +1 -1
  16. package/dist/content/read-projector.d.ts +2 -2
  17. package/dist/content/read-projector.d.ts.map +1 -1
  18. package/dist/content/read-projector.js +81 -39
  19. package/dist/content/read-projector.js.map +1 -1
  20. package/dist/content/read-resolve.d.ts +1 -0
  21. package/dist/content/read-resolve.d.ts.map +1 -1
  22. package/dist/content/read-resolve.js +13 -10
  23. package/dist/content/read-resolve.js.map +1 -1
  24. package/dist/content/scope-format.d.ts +9 -0
  25. package/dist/content/scope-format.d.ts.map +1 -0
  26. package/dist/content/scope-format.js +28 -0
  27. package/dist/content/scope-format.js.map +1 -0
  28. package/dist/core/AdministrativeLoop.d.ts +8 -0
  29. package/dist/core/AdministrativeLoop.d.ts.map +1 -0
  30. package/dist/core/AdministrativeLoop.js +16 -0
  31. package/dist/core/AdministrativeLoop.js.map +1 -0
  32. package/dist/core/AdmittedTurnExecutor.d.ts +2 -2
  33. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  34. package/dist/core/AdmittedTurnExecutor.js +26 -26
  35. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  36. package/dist/core/BareBatchRunner.d.ts +1 -2
  37. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  38. package/dist/core/BareBatchRunner.js +7 -12
  39. package/dist/core/BareBatchRunner.js.map +1 -1
  40. package/dist/core/BudgetReadout.d.ts.map +1 -1
  41. package/dist/core/BudgetReadout.js +3 -4
  42. package/dist/core/BudgetReadout.js.map +1 -1
  43. package/dist/core/CapabilityPolicies.d.ts +4 -2
  44. package/dist/core/CapabilityPolicies.d.ts.map +1 -1
  45. package/dist/core/CapabilityPolicies.js +23 -2
  46. package/dist/core/CapabilityPolicies.js.map +1 -1
  47. package/dist/core/CapabilityResolver.d.ts +2 -2
  48. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  49. package/dist/core/CapabilityResolver.js +46 -36
  50. package/dist/core/CapabilityResolver.js.map +1 -1
  51. package/dist/core/ChannelWrite.d.ts +4 -6
  52. package/dist/core/ChannelWrite.d.ts.map +1 -1
  53. package/dist/core/ChannelWrite.js +8 -8
  54. package/dist/core/ChannelWrite.js.map +1 -1
  55. package/dist/core/ChannelWrite.sql +17 -11
  56. package/dist/core/ClientInteractions.d.ts +11 -1
  57. package/dist/core/ClientInteractions.d.ts.map +1 -1
  58. package/dist/core/ClientInteractions.js +26 -2
  59. package/dist/core/ClientInteractions.js.map +1 -1
  60. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  61. package/dist/core/CoreSchemeServices.js +1 -0
  62. package/dist/core/CoreSchemeServices.js.map +1 -1
  63. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  64. package/dist/core/DataStatementRunner.js +198 -148
  65. package/dist/core/DataStatementRunner.js.map +1 -1
  66. package/dist/core/Dispatcher.d.ts +18 -5
  67. package/dist/core/Dispatcher.d.ts.map +1 -1
  68. package/dist/core/Dispatcher.js +135 -114
  69. package/dist/core/Dispatcher.js.map +1 -1
  70. package/dist/core/Dispatcher.sql +11 -26
  71. package/dist/core/DurableStatement.d.ts +4 -1
  72. package/dist/core/DurableStatement.d.ts.map +1 -1
  73. package/dist/core/DurableStatement.js +4 -4
  74. package/dist/core/DurableStatement.js.map +1 -1
  75. package/dist/core/EditMutations.d.ts.map +1 -1
  76. package/dist/core/EditMutations.js +5 -2
  77. package/dist/core/EditMutations.js.map +1 -1
  78. package/dist/core/Engine.d.ts +11 -9
  79. package/dist/core/Engine.d.ts.map +1 -1
  80. package/dist/core/Engine.js +27 -65
  81. package/dist/core/Engine.js.map +1 -1
  82. package/dist/core/Engine.sql +2 -22
  83. package/dist/core/EnvFlags.d.ts.map +1 -1
  84. package/dist/core/EnvFlags.js +4 -2
  85. package/dist/core/EnvFlags.js.map +1 -1
  86. package/dist/core/ExecutionOutputs.sql +8 -0
  87. package/dist/core/ExecutorRegistry.d.ts +4 -0
  88. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  89. package/dist/core/ExecutorRegistry.js +3 -1
  90. package/dist/core/ExecutorRegistry.js.map +1 -1
  91. package/dist/core/KillHandler.d.ts.map +1 -1
  92. package/dist/core/KillHandler.js +7 -12
  93. package/dist/core/KillHandler.js.map +1 -1
  94. package/dist/core/Knob.d.ts +9 -0
  95. package/dist/core/Knob.d.ts.map +1 -0
  96. package/dist/core/Knob.js +50 -0
  97. package/dist/core/Knob.js.map +1 -0
  98. package/dist/core/LogBody.d.ts.map +1 -1
  99. package/dist/core/LogBody.js +8 -36
  100. package/dist/core/LogBody.js.map +1 -1
  101. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  102. package/dist/core/LogEntryProjection.js +8 -10
  103. package/dist/core/LogEntryProjection.js.map +1 -1
  104. package/dist/core/LogVisibility.d.ts.map +1 -1
  105. package/dist/core/LogVisibility.js +2 -1
  106. package/dist/core/LogVisibility.js.map +1 -1
  107. package/dist/core/LogWriter.d.ts.map +1 -1
  108. package/dist/core/LogWriter.js +11 -9
  109. package/dist/core/LogWriter.js.map +1 -1
  110. package/dist/core/LoopDriver.d.ts +1 -1
  111. package/dist/core/LoopDriver.d.ts.map +1 -1
  112. package/dist/core/LoopDriver.js +24 -32
  113. package/dist/core/LoopDriver.js.map +1 -1
  114. package/dist/core/LoopLifecycle.d.ts +4 -17
  115. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  116. package/dist/core/LoopLifecycle.js +20 -22
  117. package/dist/core/LoopLifecycle.js.map +1 -1
  118. package/dist/core/LoopLifecycle.sql +36 -49
  119. package/dist/core/LoopOutcome.d.ts +10 -0
  120. package/dist/core/LoopOutcome.d.ts.map +1 -0
  121. package/dist/core/LoopOutcome.js +28 -0
  122. package/dist/core/LoopOutcome.js.map +1 -0
  123. package/dist/core/LoopPolicies.d.ts +7 -0
  124. package/dist/core/LoopPolicies.d.ts.map +1 -0
  125. package/dist/core/LoopPolicies.js +37 -0
  126. package/dist/core/LoopPolicies.js.map +1 -0
  127. package/dist/core/MessageResources.d.ts +15 -0
  128. package/dist/core/MessageResources.d.ts.map +1 -0
  129. package/dist/core/MessageResources.js +46 -0
  130. package/dist/core/MessageResources.js.map +1 -0
  131. package/dist/core/MessageResources.sql +36 -0
  132. package/dist/core/ModelCall.d.ts.map +1 -1
  133. package/dist/core/ModelCall.js +2 -6
  134. package/dist/core/ModelCall.js.map +1 -1
  135. package/dist/core/ModelCall.sql +7 -36
  136. package/dist/core/OperatorConfig.d.ts +2 -1
  137. package/dist/core/OperatorConfig.d.ts.map +1 -1
  138. package/dist/core/OperatorConfig.js +14 -6
  139. package/dist/core/OperatorConfig.js.map +1 -1
  140. package/dist/core/PacketBuilder.d.ts.map +1 -1
  141. package/dist/core/PacketBuilder.js +20 -35
  142. package/dist/core/PacketBuilder.js.map +1 -1
  143. package/dist/core/PacketBuilder.sql +24 -6
  144. package/dist/core/PatternSelection.d.ts +1 -1
  145. package/dist/core/PatternSelection.d.ts.map +1 -1
  146. package/dist/core/ProposalLifecycle.d.ts +3 -1
  147. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  148. package/dist/core/ProposalLifecycle.js +93 -28
  149. package/dist/core/ProposalLifecycle.js.map +1 -1
  150. package/dist/core/ProviderInstantiate.d.ts +1 -0
  151. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  152. package/dist/core/ProviderInstantiate.js +12 -7
  153. package/dist/core/ProviderInstantiate.js.map +1 -1
  154. package/dist/core/ReasoningView.d.ts +1 -2
  155. package/dist/core/ReasoningView.d.ts.map +1 -1
  156. package/dist/core/ReasoningView.js +9 -20
  157. package/dist/core/ReasoningView.js.map +1 -1
  158. package/dist/core/ResourceBindings.d.ts.map +1 -1
  159. package/dist/core/ResourceBindings.js +5 -4
  160. package/dist/core/ResourceBindings.js.map +1 -1
  161. package/dist/core/ResourceMutations.d.ts +4 -4
  162. package/dist/core/ResourceMutations.d.ts.map +1 -1
  163. package/dist/core/ResourceMutations.js +2 -3
  164. package/dist/core/ResourceMutations.js.map +1 -1
  165. package/dist/core/ResourceSelector.d.ts +10 -3
  166. package/dist/core/ResourceSelector.d.ts.map +1 -1
  167. package/dist/core/ResourceSelector.js +52 -13
  168. package/dist/core/ResourceSelector.js.map +1 -1
  169. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  170. package/dist/core/ResourceTransfers.js +4 -2
  171. package/dist/core/ResourceTransfers.js.map +1 -1
  172. package/dist/core/RuntimeWorker.d.ts.map +1 -1
  173. package/dist/core/RuntimeWorker.js +6 -1
  174. package/dist/core/RuntimeWorker.js.map +1 -1
  175. package/dist/core/RuntimeWorker.sql +7 -1
  176. package/dist/core/SchemeRegistry.d.ts +2 -0
  177. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  178. package/dist/core/SchemeRegistry.js +12 -6
  179. package/dist/core/SchemeRegistry.js.map +1 -1
  180. package/dist/core/StoredPacket.d.ts +3 -1
  181. package/dist/core/StoredPacket.d.ts.map +1 -1
  182. package/dist/core/StoredPacket.js +7 -3
  183. package/dist/core/StoredPacket.js.map +1 -1
  184. package/dist/core/StrikeRail.d.ts +2 -2
  185. package/dist/core/StrikeRail.d.ts.map +1 -1
  186. package/dist/core/StrikeRail.js +15 -7
  187. package/dist/core/StrikeRail.js.map +1 -1
  188. package/dist/core/TerminalResult.d.ts +2 -2
  189. package/dist/core/TerminalResult.d.ts.map +1 -1
  190. package/dist/core/TerminalResult.js +15 -8
  191. package/dist/core/TerminalResult.js.map +1 -1
  192. package/dist/core/ToolInputSchema.d.ts.map +1 -1
  193. package/dist/core/ToolInputSchema.js +24 -8
  194. package/dist/core/ToolInputSchema.js.map +1 -1
  195. package/dist/core/ToolResources.d.ts +1 -0
  196. package/dist/core/ToolResources.d.ts.map +1 -1
  197. package/dist/core/ToolResources.js +50 -26
  198. package/dist/core/ToolResources.js.map +1 -1
  199. package/dist/core/Turn.d.ts +3 -1
  200. package/dist/core/Turn.d.ts.map +1 -1
  201. package/dist/core/Turn.js +4 -1
  202. package/dist/core/Turn.js.map +1 -1
  203. package/dist/core/Turn.sql +14 -2
  204. package/dist/core/TurnDispositionHandler.d.ts +13 -23
  205. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  206. package/dist/core/TurnDispositionHandler.js +30 -180
  207. package/dist/core/TurnDispositionHandler.js.map +1 -1
  208. package/dist/core/TurnMaterialization.d.ts +9 -7
  209. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  210. package/dist/core/TurnMaterialization.js +66 -46
  211. package/dist/core/TurnMaterialization.js.map +1 -1
  212. package/dist/core/TurnMaterialization.sql +23 -6
  213. package/dist/core/TurnOps.d.ts.map +1 -1
  214. package/dist/core/TurnOps.js +2 -2
  215. package/dist/core/TurnOps.js.map +1 -1
  216. package/dist/core/TurnRunner.d.ts +2 -8
  217. package/dist/core/TurnRunner.d.ts.map +1 -1
  218. package/dist/core/TurnRunner.js +1116 -1123
  219. package/dist/core/TurnRunner.js.map +1 -1
  220. package/dist/core/TurnRunner.sql +1 -24
  221. package/dist/core/TurnSources.sql +42 -11
  222. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  223. package/dist/core/WorkerControlHandler.js +23 -0
  224. package/dist/core/WorkerControlHandler.js.map +1 -1
  225. package/dist/core/WorkerName.d.ts +3 -6
  226. package/dist/core/WorkerName.d.ts.map +1 -1
  227. package/dist/core/WorkerName.js +10 -26
  228. package/dist/core/WorkerName.js.map +1 -1
  229. package/dist/core/WorkspaceGate.js +4 -4
  230. package/dist/core/WorkspaceGate.js.map +1 -1
  231. package/dist/core/ambient.sql +45 -19
  232. package/dist/core/attachments.d.ts +3 -1
  233. package/dist/core/attachments.d.ts.map +1 -1
  234. package/dist/core/attachments.js +4 -0
  235. package/dist/core/attachments.js.map +1 -1
  236. package/dist/core/caps/CoreInteractionCaps.d.ts +1 -1
  237. package/dist/core/caps/CoreInteractionCaps.d.ts.map +1 -1
  238. package/dist/core/caps/CoreInteractionCaps.js +4 -2
  239. package/dist/core/caps/CoreInteractionCaps.js.map +1 -1
  240. package/dist/core/caps/DbChannelCaps.js +6 -6
  241. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  242. package/dist/core/caps/DbEntryCaps.js +1 -1
  243. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  244. package/dist/core/caps/DbMessageCaps.d.ts +10 -0
  245. package/dist/core/caps/DbMessageCaps.d.ts.map +1 -0
  246. package/dist/core/caps/DbMessageCaps.js +39 -0
  247. package/dist/core/caps/DbMessageCaps.js.map +1 -0
  248. package/dist/core/caps/DbProjectionCaps.d.ts +2 -2
  249. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  250. package/dist/core/caps/DbProjectionCaps.js +10 -4
  251. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  252. package/dist/core/caps/SchemeCtxImpl.d.ts +3 -1
  253. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  254. package/dist/core/caps/SchemeCtxImpl.js +11 -0
  255. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  256. package/dist/core/env-catalog.d.ts +28 -0
  257. package/dist/core/env-catalog.d.ts.map +1 -0
  258. package/dist/core/env-catalog.js +99 -0
  259. package/dist/core/env-catalog.js.map +1 -0
  260. package/dist/core/file-materialization.js +1 -1
  261. package/dist/core/file-materialization.js.map +1 -1
  262. package/dist/core/fork.sql +7 -6
  263. package/dist/core/git-state.d.ts +3 -2
  264. package/dist/core/git-state.d.ts.map +1 -1
  265. package/dist/core/git-state.js +38 -21
  266. package/dist/core/git-state.js.map +1 -1
  267. package/dist/core/operation-target-groups.d.ts.map +1 -1
  268. package/dist/core/operation-target-groups.js +2 -1
  269. package/dist/core/operation-target-groups.js.map +1 -1
  270. package/dist/core/packet-inject.js +1 -1
  271. package/dist/core/packet-wire.d.ts +11 -0
  272. package/dist/core/packet-wire.d.ts.map +1 -1
  273. package/dist/core/packet-wire.js +382 -333
  274. package/dist/core/packet-wire.js.map +1 -1
  275. package/dist/core/plurnk-uri.d.ts +4 -5
  276. package/dist/core/plurnk-uri.d.ts.map +1 -1
  277. package/dist/core/plurnk-uri.js +10 -31
  278. package/dist/core/plurnk-uri.js.map +1 -1
  279. package/dist/core/scheme-types.d.ts +3 -1
  280. package/dist/core/scheme-types.d.ts.map +1 -1
  281. package/dist/core/scheme-types.js +1 -1
  282. package/dist/core/scheme-types.js.map +1 -1
  283. package/dist/core/teaching.d.ts.map +1 -1
  284. package/dist/core/teaching.js +2 -1
  285. package/dist/core/teaching.js.map +1 -1
  286. package/dist/core/types.d.ts +1 -2
  287. package/dist/core/types.d.ts.map +1 -1
  288. package/dist/core/types.js +1 -1
  289. package/dist/core/types.js.map +1 -1
  290. package/dist/core/worker-ops.sql +3 -8
  291. package/dist/digest/Digest.d.ts.map +1 -1
  292. package/dist/digest/Digest.js +37 -30
  293. package/dist/digest/Digest.js.map +1 -1
  294. package/dist/digest/DigestRender.d.ts +2 -0
  295. package/dist/digest/DigestRender.d.ts.map +1 -1
  296. package/dist/digest/DigestRender.js +97 -9
  297. package/dist/digest/DigestRender.js.map +1 -1
  298. package/dist/digest/DigestRequiem.d.ts.map +1 -1
  299. package/dist/digest/DigestRequiem.js +13 -15
  300. package/dist/digest/DigestRequiem.js.map +1 -1
  301. package/dist/digest/digest-db.d.ts +3 -0
  302. package/dist/digest/digest-db.d.ts.map +1 -0
  303. package/dist/digest/digest-db.js +68 -0
  304. package/dist/digest/digest-db.js.map +1 -0
  305. package/dist/digest/digest-paths.d.ts +6 -0
  306. package/dist/digest/digest-paths.d.ts.map +1 -0
  307. package/dist/digest/digest-paths.js +23 -0
  308. package/dist/digest/digest-paths.js.map +1 -0
  309. package/dist/digest/digest-rows.d.ts +21 -0
  310. package/dist/digest/digest-rows.d.ts.map +1 -1
  311. package/dist/digest/digest.sql +24 -5
  312. package/dist/index.d.ts +0 -1
  313. package/dist/index.d.ts.map +1 -1
  314. package/dist/index.js +0 -1
  315. package/dist/index.js.map +1 -1
  316. package/dist/observe/genai.d.ts +2 -2
  317. package/dist/observe/genai.d.ts.map +1 -1
  318. package/dist/observe/genai.js +15 -5
  319. package/dist/observe/genai.js.map +1 -1
  320. package/dist/schemes/EffectPolicy.d.ts +0 -2
  321. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  322. package/dist/schemes/EffectPolicy.js +25 -36
  323. package/dist/schemes/EffectPolicy.js.map +1 -1
  324. package/dist/schemes/Exec.d.ts +4 -5
  325. package/dist/schemes/Exec.d.ts.map +1 -1
  326. package/dist/schemes/Exec.js +129 -82
  327. package/dist/schemes/Exec.js.map +1 -1
  328. package/dist/schemes/ExecOutputScheme.d.ts +6 -5
  329. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  330. package/dist/schemes/ExecOutputScheme.js +49 -16
  331. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  332. package/dist/schemes/ExecScheduler.js +2 -2
  333. package/dist/schemes/ExecScheduler.js.map +1 -1
  334. package/dist/schemes/File.d.ts.map +1 -1
  335. package/dist/schemes/File.js +30 -21
  336. package/dist/schemes/File.js.map +1 -1
  337. package/dist/schemes/Log.d.ts +4 -4
  338. package/dist/schemes/Log.d.ts.map +1 -1
  339. package/dist/schemes/Log.js +30 -10
  340. package/dist/schemes/Log.js.map +1 -1
  341. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  342. package/dist/schemes/QuestionTool.js +15 -2
  343. package/dist/schemes/QuestionTool.js.map +1 -1
  344. package/dist/schemes/TurnSource.d.ts +3 -2
  345. package/dist/schemes/TurnSource.d.ts.map +1 -1
  346. package/dist/schemes/TurnSource.js +87 -41
  347. package/dist/schemes/TurnSource.js.map +1 -1
  348. package/dist/schemes/Worker.d.ts.map +1 -1
  349. package/dist/schemes/Worker.js +22 -56
  350. package/dist/schemes/Worker.js.map +1 -1
  351. package/dist/schemes/_entry-crud.js +6 -6
  352. package/dist/schemes/_entry-crud.js.map +1 -1
  353. package/dist/schemes/_entry-crud.sql +37 -17
  354. package/dist/schemes/_entry-find.d.ts.map +1 -1
  355. package/dist/schemes/_entry-find.js +6 -5
  356. package/dist/schemes/_entry-find.js.map +1 -1
  357. package/dist/schemes/_entry-fts.d.ts.map +1 -1
  358. package/dist/schemes/_entry-fts.js +6 -3
  359. package/dist/schemes/_entry-fts.js.map +1 -1
  360. package/dist/schemes/_entry-fts.sql +25 -6
  361. package/dist/schemes/_entry-manifest.d.ts +1 -1
  362. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  363. package/dist/schemes/_entry-manifest.js +10 -17
  364. package/dist/schemes/_entry-manifest.js.map +1 -1
  365. package/dist/schemes/_entry-manifest.sql +1 -1
  366. package/dist/schemes/_entry-ops.js +4 -4
  367. package/dist/schemes/_entry-ops.js.map +1 -1
  368. package/dist/schemes/_entry-ops.sql +2 -2
  369. package/dist/schemes/_entry-readable.d.ts.map +1 -1
  370. package/dist/schemes/_entry-readable.js +5 -4
  371. package/dist/schemes/_entry-readable.js.map +1 -1
  372. package/dist/schemes/_entry-send.js +2 -2
  373. package/dist/schemes/_entry-send.js.map +1 -1
  374. package/dist/schemes/_search-exclusion.d.ts +1 -0
  375. package/dist/schemes/_search-exclusion.d.ts.map +1 -1
  376. package/dist/schemes/_search-exclusion.js +12 -0
  377. package/dist/schemes/_search-exclusion.js.map +1 -1
  378. package/dist/schemes/_search-index.d.ts +5 -1
  379. package/dist/schemes/_search-index.d.ts.map +1 -1
  380. package/dist/schemes/_search-index.js +99 -59
  381. package/dist/schemes/_search-index.js.map +1 -1
  382. package/dist/schemes/_search-index.sql +17 -0
  383. package/dist/schemes/exec-abort.d.ts.map +1 -1
  384. package/dist/schemes/exec-abort.js +5 -4
  385. package/dist/schemes/exec-abort.js.map +1 -1
  386. package/dist/schemes/exec-env.d.ts +3 -0
  387. package/dist/schemes/exec-env.d.ts.map +1 -1
  388. package/dist/schemes/exec-env.js +66 -15
  389. package/dist/schemes/exec-env.js.map +1 -1
  390. package/dist/schemes/exec-lifetime.d.ts +11 -0
  391. package/dist/schemes/exec-lifetime.d.ts.map +1 -0
  392. package/dist/schemes/exec-lifetime.js +29 -0
  393. package/dist/schemes/exec-lifetime.js.map +1 -0
  394. package/dist/schemes/exec-runtime.d.ts +1 -1
  395. package/dist/schemes/exec-runtime.d.ts.map +1 -1
  396. package/dist/schemes/exec-runtime.js +1 -1
  397. package/dist/schemes/exec-runtime.js.map +1 -1
  398. package/dist/server/ClientReads.d.ts.map +1 -1
  399. package/dist/server/ClientReads.js +5 -2
  400. package/dist/server/ClientReads.js.map +1 -1
  401. package/dist/server/Daemon.d.ts +31 -7
  402. package/dist/server/Daemon.d.ts.map +1 -1
  403. package/dist/server/Daemon.js +137 -60
  404. package/dist/server/Daemon.js.map +1 -1
  405. package/dist/server/DaemonModule.d.ts +25 -6
  406. package/dist/server/DaemonModule.d.ts.map +1 -1
  407. package/dist/server/DrainSupervisor.d.ts +13 -11
  408. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  409. package/dist/server/DrainSupervisor.js +87 -98
  410. package/dist/server/DrainSupervisor.js.map +1 -1
  411. package/dist/server/EnvFunctionality.d.ts +52 -0
  412. package/dist/server/EnvFunctionality.d.ts.map +1 -0
  413. package/dist/server/EnvFunctionality.js +199 -0
  414. package/dist/server/EnvFunctionality.js.map +1 -0
  415. package/dist/server/Functionality.d.ts +4 -2
  416. package/dist/server/Functionality.d.ts.map +1 -1
  417. package/dist/server/Functionality.js +250 -106
  418. package/dist/server/Functionality.js.map +1 -1
  419. package/dist/server/FunctionalityManager.d.ts +5 -1
  420. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  421. package/dist/server/FunctionalityManager.js +24 -8
  422. package/dist/server/FunctionalityManager.js.map +1 -1
  423. package/dist/server/HttpListener.d.ts +16 -0
  424. package/dist/server/HttpListener.d.ts.map +1 -0
  425. package/dist/server/HttpListener.js +81 -0
  426. package/dist/server/HttpListener.js.map +1 -0
  427. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  428. package/dist/server/MembersFunctionality.js +12 -17
  429. package/dist/server/MembersFunctionality.js.map +1 -1
  430. package/dist/server/PlurnkSkill.d.ts.map +1 -1
  431. package/dist/server/PlurnkSkill.js +1 -0
  432. package/dist/server/PlurnkSkill.js.map +1 -1
  433. package/dist/server/Retention.d.ts +14 -0
  434. package/dist/server/Retention.d.ts.map +1 -1
  435. package/dist/server/Retention.js +52 -4
  436. package/dist/server/Retention.js.map +1 -1
  437. package/dist/server/Retention.sql +55 -1
  438. package/dist/server/ServiceModules.d.ts.map +1 -1
  439. package/dist/server/ServiceModules.js +2 -0
  440. package/dist/server/ServiceModules.js.map +1 -1
  441. package/dist/server/SkillsFunctionality.d.ts +2 -0
  442. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  443. package/dist/server/SkillsFunctionality.js +27 -17
  444. package/dist/server/SkillsFunctionality.js.map +1 -1
  445. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -1
  446. package/dist/server/WorkspaceCapabilities.js +1 -0
  447. package/dist/server/WorkspaceCapabilities.js.map +1 -1
  448. package/dist/server/WorkspaceResidency.d.ts +2 -0
  449. package/dist/server/WorkspaceResidency.d.ts.map +1 -1
  450. package/dist/server/WorkspaceResidency.js +27 -0
  451. package/dist/server/WorkspaceResidency.js.map +1 -1
  452. package/dist/server/WorkspaceStorage.d.ts +8 -0
  453. package/dist/server/WorkspaceStorage.d.ts.map +1 -0
  454. package/dist/server/WorkspaceStorage.js +26 -0
  455. package/dist/server/WorkspaceStorage.js.map +1 -0
  456. package/dist/server/client-input.d.ts +4 -3
  457. package/dist/server/client-input.d.ts.map +1 -1
  458. package/dist/server/client-input.js +25 -27
  459. package/dist/server/client-input.js.map +1 -1
  460. package/dist/server/dispatch-as-plurnk.js +2 -2
  461. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  462. package/dist/server/drain.sql +69 -132
  463. package/dist/server/envelope.d.ts +2 -3
  464. package/dist/server/envelope.d.ts.map +1 -1
  465. package/dist/server/envelope.js +7 -21
  466. package/dist/server/envelope.js.map +1 -1
  467. package/dist/server/envelope.sql +10 -6
  468. package/dist/server/exec-poll-backoff.js +3 -3
  469. package/dist/server/exec-poll-backoff.js.map +1 -1
  470. package/dist/server/lifecycle-recovery.sql +12 -38
  471. package/dist/server/logEntry.sql +2 -2
  472. package/dist/server/loopDocs.js +3 -3
  473. package/dist/server/loopDocs.sql +4 -2
  474. package/dist/server/model-catalog.d.ts.map +1 -1
  475. package/dist/server/model-catalog.js +2 -2
  476. package/dist/server/model-catalog.js.map +1 -1
  477. package/dist/server/seam-loop.sql +0 -1
  478. package/dist/server/workspace-capabilities.sql +45 -0
  479. package/dist/server/workspace-storage.sql +8 -0
  480. package/dist/service.d.ts.map +1 -1
  481. package/dist/service.js +37 -11
  482. package/dist/service.js.map +1 -1
  483. package/docs/copy-move.md +31 -0
  484. package/docs/env.md +67 -0
  485. package/docs/members.md +4 -4
  486. package/docs/skills.md +2 -2
  487. package/migrations/002_workers.sql +41 -17
  488. package/migrations/003_loops.sql +82 -28
  489. package/migrations/004_inference.sql +53 -12
  490. package/migrations/005_entries.sql +135 -14
  491. package/migrations/006_log.sql +79 -24
  492. package/migrations/007_subscriptions.sql +10 -15
  493. package/package.json +45 -36
  494. package/dist/core/PromptFrames.d.ts +0 -12
  495. package/dist/core/PromptFrames.d.ts.map +0 -1
  496. package/dist/core/PromptFrames.js +0 -28
  497. package/dist/core/PromptFrames.js.map +0 -1
  498. package/dist/schemes/Prompt.d.ts +0 -8
  499. package/dist/schemes/Prompt.d.ts.map +0 -1
  500. package/dist/schemes/Prompt.js +0 -25
  501. package/dist/schemes/Prompt.js.map +0 -1
@@ -3,6 +3,23 @@
3
3
  -- Version numbers order the chapters on a fresh database; they are not history. A shape
4
4
  -- change edits the chapter in place; existing development databases are recreated.
5
5
 
6
+ -- {§content-store} Every settled body is stored once, addressed by its sha256, however many
7
+ -- channels, workspaces, forks or full-text rows carry it. Rows are immutable; retention collects
8
+ -- what nothing references.
9
+ -- The ONE engine-imposed constraint (SPEC {§stream-constraints}, {§stream-constraints-engine-one-cap}): 100 MiB char-length cap
10
+ -- per content body. All other limits are extrinsic.
11
+ CREATE TABLE IF NOT EXISTS contents (
12
+ id INTEGER NOT NULL PRIMARY KEY,
13
+ hash TEXT NOT NULL UNIQUE CHECK (length(hash) = 64),
14
+ content TEXT NOT NULL CHECK (length(content) <= 104857600)
15
+ ) STRICT;
16
+
17
+ CREATE TRIGGER IF NOT EXISTS contents_immutable
18
+ BEFORE UPDATE ON contents
19
+ BEGIN
20
+ SELECT RAISE(ABORT, 'content is immutable');
21
+ END;
22
+
6
23
  -- derivations
7
24
  -- Content-addressed deep projections. Entry channels and log projections point
8
25
  -- at a COMPLETE artifact by deep_hash; graph and FTS are stored once
@@ -15,6 +32,8 @@ CREATE TABLE IF NOT EXISTS derivations (
15
32
  disposition TEXT CHECK (disposition IN ('indexed', 'excluded', 'unsearchable', 'failed')),
16
33
  reason TEXT,
17
34
  parse_issues INTEGER CHECK (parse_issues IS NULL OR parse_issues > 0),
35
+ -- {§content-store} The text this artifact full-text indexes; NULL = nothing indexed.
36
+ content_id INTEGER REFERENCES contents(id),
18
37
  summary TEXT CHECK (
19
38
  summary IS NULL OR (
20
39
  length(summary) > 0
@@ -37,9 +56,7 @@ CREATE TABLE IF NOT EXISTS entries (
37
56
  authority TEXT NOT NULL DEFAULT '',
38
57
  pathname TEXT NOT NULL,
39
58
  workspace_id INTEGER NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
40
- -- Entry-private metadata. Prompt frames use `openPaths` to carry selected
41
- -- workspace paths into the exact turn that publishes the frame
42
- -- ({§methods-loop-run-open-paths}).
59
+ -- Scheme-owned entry metadata.
43
60
  attributes TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(attributes)),
44
61
  default_channel TEXT NOT NULL DEFAULT 'body' CHECK (length(default_channel) > 0),
45
62
  output INTEGER NOT NULL DEFAULT 0 CHECK (output IN (0, 1)),
@@ -65,17 +82,20 @@ CREATE TABLE IF NOT EXISTS entries (
65
82
  -- {§entry-owner}, {§execution-output-identity}: one canonical resource key.
66
83
  CREATE UNIQUE INDEX IF NOT EXISTS entries_identity ON entries (workspace_id, scheme, authority, pathname);
67
84
 
68
- -- The ONE engine-imposed constraint (SPEC {§stream-constraints}, {§stream-constraints-engine-one-cap}): 100 MiB char-length cap
69
- -- per channel content body. All other limits are extrinsic.
70
- CREATE TABLE IF NOT EXISTS entry_channels (
85
+ -- entry_channel_rows: the stored shape of a channel. A settled channel points at its body in
86
+ -- `contents`; an active stream's body is a private buffer that is interned when it settles.
87
+ -- Everything reads and writes channels through the `entry_channels` view below.
88
+ CREATE TABLE IF NOT EXISTS entry_channel_rows (
71
89
  entry_id INTEGER NOT NULL,
72
90
  name TEXT NOT NULL CHECK (length(name) > 0),
73
- content TEXT NOT NULL CHECK (length(content) <= 104857600),
91
+ content_id INTEGER REFERENCES contents(id),
92
+ buffer TEXT CHECK (buffer IS NULL OR length(buffer) <= 104857600),
74
93
  mimetype TEXT NOT NULL CHECK (length(mimetype) > 0),
75
94
  weight INTEGER NOT NULL DEFAULT 0 CHECK (weight >= 0),
76
- -- Content identity: sha256 of content, stamped at static writes; streamed
77
- -- appends leave it NULL. Curation weight remains model-independent.
78
- content_hash TEXT,
95
+ -- Line count of the body, kept at every write so a catalog lists extent without reading
96
+ -- bodies: a trailing newline terminates the last line; empty content has none
97
+ -- ({§tokenomics-weight-stored-at-write}).
98
+ lines INTEGER NOT NULL CHECK (lines >= 0),
79
99
  -- Search derivation for this exact addressable channel representation.
80
100
  -- Content or mimetype changes invalidate it at the owning channel row.
81
101
  deep_hash TEXT,
@@ -110,13 +130,92 @@ CREATE TABLE IF NOT EXISTS entry_channels (
110
130
  END
111
131
  END
112
132
  ),
133
+ CHECK ((content_id IS NULL) <> (buffer IS NULL)),
113
134
  PRIMARY KEY (entry_id, name),
114
135
  FOREIGN KEY (entry_id) REFERENCES entries(id) ON DELETE CASCADE,
115
136
  FOREIGN KEY (deep_hash) REFERENCES derivations(deep_hash)
116
137
  ) STRICT, WITHOUT ROWID;
117
138
 
118
139
  -- {§db-fk-indexes} Derivation replacement checks channels by hash; catalog joins drive on it too.
119
- CREATE INDEX IF NOT EXISTS entry_channels_deep_hash ON entry_channels (deep_hash) WHERE deep_hash IS NOT NULL;
140
+ CREATE INDEX IF NOT EXISTS entry_channel_rows_deep_hash ON entry_channel_rows (deep_hash) WHERE deep_hash IS NOT NULL;
141
+ -- {§db-fk-indexes} Content collection asks whether any channel still points at a body.
142
+ CREATE INDEX IF NOT EXISTS entry_channel_rows_content ON entry_channel_rows (content_id) WHERE content_id IS NOT NULL;
143
+
144
+ -- {§content-store} The channel as every reader and writer sees it. content_hash is the stored
145
+ -- body's identity (NULL while a stream is active); a writer may bind it, and a bound hash must
146
+ -- be the content's.
147
+ CREATE VIEW IF NOT EXISTS entry_channels AS
148
+ SELECT entry_channel_rows.entry_id, entry_channel_rows.name,
149
+ COALESCE(entry_channel_rows.buffer, contents.content) AS content,
150
+ entry_channel_rows.mimetype, entry_channel_rows.weight, entry_channel_rows.lines,
151
+ contents.hash AS content_hash, entry_channel_rows.deep_hash, entry_channel_rows.state,
152
+ entry_channel_rows.producer_result
153
+ FROM entry_channel_rows
154
+ LEFT JOIN contents ON contents.id = entry_channel_rows.content_id;
155
+
156
+ CREATE TRIGGER IF NOT EXISTS entry_channels_insert
157
+ INSTEAD OF INSERT ON entry_channels
158
+ BEGIN
159
+ SELECT RAISE(ABORT, 'a channel requires content') WHERE NEW.content IS NULL;
160
+ SELECT RAISE(ABORT, 'content_hash does not match content')
161
+ WHERE NEW.content_hash IS NOT NULL AND NEW.content_hash IS NOT sha256(NEW.content);
162
+ INSERT INTO contents (hash, content)
163
+ SELECT COALESCE(NEW.content_hash, sha256(NEW.content)), NEW.content
164
+ WHERE COALESCE(NEW.state, 'static') <> 'active'
165
+ ON CONFLICT (hash) DO NOTHING;
166
+ INSERT INTO entry_channel_rows (entry_id, name, content_id, buffer, mimetype, weight, lines, deep_hash, state, producer_result)
167
+ VALUES (
168
+ NEW.entry_id, NEW.name,
169
+ CASE WHEN COALESCE(NEW.state, 'static') <> 'active'
170
+ THEN (SELECT id FROM contents WHERE hash = COALESCE(NEW.content_hash, sha256(NEW.content))) END,
171
+ CASE WHEN COALESCE(NEW.state, 'static') = 'active' THEN NEW.content END,
172
+ NEW.mimetype, COALESCE(NEW.weight, 0),
173
+ CASE WHEN length(NEW.content) = 0 THEN 0
174
+ WHEN substr(NEW.content, -1) = char(10) THEN length(NEW.content) - length(replace(NEW.content, char(10), ''))
175
+ ELSE length(NEW.content) - length(replace(NEW.content, char(10), '')) + 1 END,
176
+ NEW.deep_hash, COALESCE(NEW.state, 'static'), NEW.producer_result
177
+ );
178
+ END;
179
+
180
+ -- Each column group is written only when it changed, so a search attachment never reads as a
181
+ -- representation write and a lifecycle write never re-stores a body.
182
+ CREATE TRIGGER IF NOT EXISTS entry_channels_update
183
+ INSTEAD OF UPDATE ON entry_channels
184
+ BEGIN
185
+ SELECT RAISE(ABORT, 'a channel is addressed by (entry_id, name)')
186
+ WHERE NEW.entry_id IS NOT OLD.entry_id OR NEW.name IS NOT OLD.name;
187
+ SELECT RAISE(ABORT, 'a channel requires content') WHERE NEW.content IS NULL;
188
+ SELECT RAISE(ABORT, 'content_hash does not match content')
189
+ WHERE NEW.content_hash IS NOT NULL AND NEW.content_hash IS NOT OLD.content_hash
190
+ AND NEW.content_hash IS NOT sha256(NEW.content);
191
+ INSERT INTO contents (hash, content)
192
+ SELECT sha256(NEW.content), NEW.content
193
+ WHERE NEW.state <> 'active' AND (NEW.content IS NOT OLD.content OR OLD.state = 'active')
194
+ ON CONFLICT (hash) DO NOTHING;
195
+ UPDATE entry_channel_rows
196
+ SET content_id = CASE WHEN NEW.state <> 'active'
197
+ THEN (SELECT id FROM contents WHERE hash = sha256(NEW.content)) END,
198
+ buffer = CASE WHEN NEW.state = 'active' THEN NEW.content END,
199
+ lines = CASE WHEN length(NEW.content) = 0 THEN 0
200
+ WHEN substr(NEW.content, -1) = char(10) THEN length(NEW.content) - length(replace(NEW.content, char(10), ''))
201
+ ELSE length(NEW.content) - length(replace(NEW.content, char(10), '')) + 1 END
202
+ WHERE entry_id = OLD.entry_id AND name = OLD.name
203
+ AND (NEW.content IS NOT OLD.content OR (NEW.state = 'active') IS NOT (OLD.state = 'active'));
204
+ UPDATE entry_channel_rows
205
+ SET mimetype = NEW.mimetype, weight = NEW.weight, state = NEW.state, producer_result = NEW.producer_result
206
+ WHERE entry_id = OLD.entry_id AND name = OLD.name
207
+ AND (NEW.mimetype IS NOT OLD.mimetype OR NEW.weight IS NOT OLD.weight
208
+ OR NEW.state IS NOT OLD.state OR NEW.producer_result IS NOT OLD.producer_result);
209
+ UPDATE entry_channel_rows
210
+ SET deep_hash = NEW.deep_hash
211
+ WHERE entry_id = OLD.entry_id AND name = OLD.name AND NEW.deep_hash IS NOT OLD.deep_hash;
212
+ END;
213
+
214
+ CREATE TRIGGER IF NOT EXISTS entry_channels_delete
215
+ INSTEAD OF DELETE ON entry_channels
216
+ BEGIN
217
+ DELETE FROM entry_channel_rows WHERE entry_id = OLD.entry_id AND name = OLD.name;
218
+ END;
120
219
 
121
220
  -- {§crud} A publication is one SQL statement: failure rolls back metadata and
122
221
  -- every channel. The view is an input boundary, not a second persisted copy.
@@ -141,14 +240,28 @@ BEGIN
141
240
  DELETE FROM entry_channels WHERE entry_id = (
142
241
  SELECT id FROM entries WHERE workspace_id = NEW.workspace_id
143
242
  AND scheme = NEW.scheme AND authority = NEW.authority AND pathname = NEW.pathname
144
- );
243
+ ) AND name NOT IN (SELECT key FROM json_each(NEW.channels));
244
+ UPDATE entry_channels
245
+ SET content = json_extract(c.value, '$.content'),
246
+ mimetype = json_extract(c.value, '$.mimetype'),
247
+ weight = json_extract(c.value, '$.weight'),
248
+ content_hash = json_extract(c.value, '$.content_hash'),
249
+ state = json_extract(c.value, '$.state'),
250
+ producer_result = json_extract(c.value, '$.producer_result')
251
+ FROM (SELECT key, value FROM json_each(NEW.channels)) AS c
252
+ WHERE entry_channels.name = c.key
253
+ AND entry_channels.entry_id = (
254
+ SELECT id FROM entries WHERE workspace_id = NEW.workspace_id
255
+ AND scheme = NEW.scheme AND authority = NEW.authority AND pathname = NEW.pathname
256
+ );
145
257
  INSERT INTO entry_channels (entry_id, name, content, mimetype, weight, content_hash, state, producer_result)
146
258
  SELECT e.id, c.key, json_extract(c.value, '$.content'), json_extract(c.value, '$.mimetype'),
147
259
  json_extract(c.value, '$.weight'), json_extract(c.value, '$.content_hash'),
148
260
  json_extract(c.value, '$.state'), json_extract(c.value, '$.producer_result')
149
261
  FROM entries e, json_each(NEW.channels) c
150
262
  WHERE e.workspace_id = NEW.workspace_id AND e.scheme = NEW.scheme
151
- AND e.authority = NEW.authority AND e.pathname = NEW.pathname;
263
+ AND e.authority = NEW.authority AND e.pathname = NEW.pathname
264
+ AND NOT EXISTS (SELECT 1 FROM entry_channel_rows r WHERE r.entry_id = e.id AND r.name = c.key);
152
265
  END;
153
266
 
154
267
  -- symbol_defs
@@ -192,7 +305,15 @@ CREATE INDEX IF NOT EXISTS symbol_refs_source ON symbol_refs (derivation_id, con
192
305
 
193
306
  -- {§find-fulltext-selection} Native full-text index of the addressed READ body.
194
307
  -- rowid is the content-addressed derivation id.
195
- CREATE VIRTUAL TABLE IF NOT EXISTS derivation_fts USING fts5(content);
308
+ -- {§content-store} The index reads its text from the content store instead of keeping a copy:
309
+ -- external content, kept in step by the derivation triggers in _entry-fts.sql.
310
+ CREATE VIEW IF NOT EXISTS derivation_texts AS
311
+ SELECT derivations.id AS id, contents.content AS content
312
+ FROM derivations
313
+ JOIN contents ON contents.id = derivations.content_id;
314
+ CREATE VIRTUAL TABLE IF NOT EXISTS derivation_fts USING fts5(content, content='derivation_texts', content_rowid='id');
315
+ -- {§db-fk-indexes} Content collection asks whether any derivation still indexes a body.
316
+ CREATE INDEX IF NOT EXISTS derivations_content ON derivations (content_id) WHERE content_id IS NOT NULL;
196
317
 
197
318
  -- {§packet-attachment-parts}: READ snapshots survive source changes and log curation.
198
319
  CREATE TABLE IF NOT EXISTS native_contents (
@@ -112,22 +112,73 @@ CREATE INDEX IF NOT EXISTS log_entries_loop_id ON log_entries (l
112
112
  -- {§db-fk-indexes} Derivation replacement checks the rows that cite the hash.
113
113
  CREATE INDEX IF NOT EXISTS log_entries_deep_hash ON log_entries (deep_hash) WHERE deep_hash IS NOT NULL;
114
114
 
115
- -- {§loop-response-messages}: executed messages survive curation. This projection
116
- -- is also used inside atomic cancellation; no second response accumulator exists.
117
- CREATE VIEW IF NOT EXISTS loop_responses AS
118
- SELECT le.loop_id,
119
- group_concat(json_extract(le.tx, '$.body.raw'), char(10) || char(10)
120
- ORDER BY t.sequence, le.sequence) AS content
121
- FROM log_entries le JOIN turns t ON t.id = le.turn_id
122
- WHERE le.op = 'SEND' AND le.state = 'resolved' AND le.status_rx BETWEEN 200 AND 299
123
- AND le.source IS NULL AND le.inherited_history = 0
124
- AND json_valid(le.tx)
125
- -- {§send-prompt-acceptance}: a SEND to one of this loop's own prompts is the response too;
126
- -- the dispatcher admits only own-loop prompt addresses, so the scheme alone identifies them.
127
- AND (json_type(le.tx, '$.target') = 'null' OR json_extract(le.tx, '$.target.scheme') = 'prompt')
128
- AND json_type(le.tx, '$.body.raw') = 'text'
129
- AND length(json_extract(le.tx, '$.body.raw')) > 0
130
- GROUP BY le.loop_id;
115
+ -- {§loop-response-messages}: delivered messages remain executed evidence;
116
+ -- curation and loop termination cannot retract or replace them.
117
+ CREATE VIEW IF NOT EXISTS log_responses AS
118
+ SELECT le.id, le.loop_id, le.turn_id, le.worker_id, le.sequence, le.source, le.origin,
119
+ CASE WHEN json_valid(le.rx) THEN le.rx END AS rx,
120
+ CASE WHEN json_valid(le.tx) THEN COALESCE(json_extract(le.tx, '$.body.raw'), '') END AS content
121
+ FROM log_entries le
122
+ WHERE le.state = 'resolved'
123
+ AND le.op = 'SEND' AND le.status_rx BETWEEN 200 AND 299
124
+ AND le.source IS NULL AND le.inherited_history = 0
125
+ AND json_valid(le.tx)
126
+ AND json_type(CASE WHEN json_valid(le.rx) THEN le.rx END, '$.answers') = 'array'
127
+ AND typeof(content) = 'text';
128
+
129
+ CREATE VIEW IF NOT EXISTS message_responses AS
130
+ SELECT DISTINCT r.id, m.loop_id, m.worker_id, r.source, r.content, r.rx
131
+ FROM log_responses r
132
+ JOIN workers producer ON producer.id = r.worker_id
133
+ JOIN json_each(r.rx, '$.answers') answer
134
+ JOIN message_sources m ON m.path = answer.value AND m.workspace_id = producer.workspace_id
135
+ UNION ALL
136
+ SELECT r.id, r.loop_id, r.worker_id, r.source, r.content, r.rx
137
+ FROM log_responses r WHERE json_array_length(r.rx, '$.answers') = 0;
138
+
139
+ CREATE VIEW IF NOT EXISTS unanswered_messages AS
140
+ SELECT m.* FROM message_sources m
141
+ WHERE NOT EXISTS (
142
+ SELECT 1 FROM log_responses r
143
+ JOIN workers w ON w.id = r.worker_id, json_each(r.rx, '$.answers') answer
144
+ WHERE w.workspace_id = m.workspace_id AND answer.value = m.path
145
+ );
146
+
147
+ -- {§message-reply-delivery}: notify the sender and the assigned conversation.
148
+ -- UNION prevents duplicate delivery when both roles belong to the same worker.
149
+ -- {§loop-answer}: a child's answer to the very task its parent delegated is NOT delivered here;
150
+ -- the parent receives it once, as the child's termination row, which carries that answer at
151
+ -- ops://<child>/<loop> (operator, 2026-09-19). Replies to any other message still deliver.
152
+ CREATE VIEW IF NOT EXISTS delegated_task_answers AS
153
+ SELECT r.id AS source_record_id, parent.id AS recipient_worker_id
154
+ FROM log_responses r
155
+ JOIN workers producer ON producer.id = r.worker_id
156
+ JOIN workers parent ON parent.id = producer.parent_worker_id
157
+ JOIN json_each(r.rx, '$.answers') answer
158
+ JOIN message_sources m ON m.path = answer.value AND m.workspace_id = producer.workspace_id
159
+ WHERE m.loop_id = r.loop_id AND m.ordinal = 1 AND m.source = 'worker://' || parent.name;
160
+
161
+ CREATE VIEW IF NOT EXISTS message_reply_deliveries AS
162
+ SELECT DISTINCT r.id AS source_record_id, r.loop_id, m.workspace_id,
163
+ r.worker_id AS producer_worker_id, m.worker_id AS recipient_worker_id
164
+ FROM log_responses r
165
+ JOIN workers producer ON producer.id = r.worker_id
166
+ JOIN json_each(r.rx, '$.answers') answer
167
+ JOIN message_sources m ON m.path = answer.value AND m.workspace_id = producer.workspace_id
168
+ UNION
169
+ SELECT r.id, r.loop_id, m.workspace_id, r.worker_id, sender.id
170
+ FROM log_responses r
171
+ JOIN workers producer ON producer.id = r.worker_id
172
+ JOIN json_each(r.rx, '$.answers') answer
173
+ JOIN message_sources m ON m.path = answer.value AND m.workspace_id = producer.workspace_id
174
+ JOIN workers sender ON sender.workspace_id = m.workspace_id AND m.source = 'worker://' || sender.name;
175
+
176
+ CREATE VIEW IF NOT EXISTS delivered_message_replies AS
177
+ SELECT d.* FROM message_reply_deliveries d
178
+ WHERE NOT EXISTS (
179
+ SELECT 1 FROM delegated_task_answers t
180
+ WHERE t.source_record_id = d.source_record_id AND t.recipient_worker_id = d.recipient_worker_id
181
+ );
131
182
 
132
183
  CREATE UNIQUE INDEX IF NOT EXISTS log_entries_model_call_id
133
184
  ON log_entries (model_call_id)
@@ -514,8 +565,12 @@ FROM (
514
565
  -- private to the worker it serves and never crosses to the parent.
515
566
  CASE
516
567
  WHEN t.producer = '_plurnk' AND t.kind IN ('operation', 'initialization', 'maintenance') THEN NULL
568
+ WHEN EXISTS (
569
+ SELECT 1 FROM message_reply_deliveries d
570
+ WHERE d.source_record_id = le.id AND d.recipient_worker_id = w.parent_worker_id
571
+ ) THEN NULL
517
572
  ELSE w.parent_worker_id
518
- END AS target_parent_worker_id,
573
+ END AS recipient_worker_id,
519
574
  CASE
520
575
  WHEN le.state = 'resolved'
521
576
  AND NOT (t.producer = '_plurnk' AND t.kind = 'maintenance')
@@ -564,15 +619,15 @@ FROM (
564
619
  json_remove(le.attrs, '$.__plurnk_curation') AS attrs
565
620
  FROM log_entries le
566
621
  JOIN workers w ON w.id = le.worker_id
567
- JOIN loops l ON l.id = le.loop_id
568
622
  JOIN turns t ON t.id = le.turn_id
569
623
  WHERE le.ambient_event_id IS NULL
570
624
  AND le.inherited_history = 0
571
- AND le.op IS NOT NULL
572
- AND le.state != 'proposed'
573
- AND NOT (
574
- le.op IN ('NEXT', 'WAIT', 'DONE', 'FAIL')
575
- AND l.status IN (200, 413, 429, 499, 500, 504, 508)
625
+ AND COALESCE(json_extract(le.attrs, '$.kind'), '') != 'message'
626
+ AND (
627
+ le.op IN ('EDIT', 'COPY', 'MOVE', 'SEND', 'WORK', 'FORK')
628
+ OR CASE WHEN json_valid(le.tx) THEN json_type(le.tx, '$.runtime') END = 'text'
629
+ OR (le.op = 'KILL' AND COALESCE(le.scheme, 'file') != 'log')
576
630
  )
631
+ AND le.state != 'proposed'
577
632
  ) candidate
578
- WHERE target_parent_worker_id IS NOT NULL OR workspace_broadcast = 1;
633
+ WHERE recipient_worker_id IS NOT NULL OR workspace_broadcast = 1;
@@ -1,5 +1,5 @@
1
1
  -- MIGRATE: 7 subscriptions
2
- -- Chapter 7 of the schema baseline ({§db-schema-baseline}): Subscriptions to streams and their publication cursors.
2
+ -- Chapter 7 of the schema baseline ({§db-schema-baseline}): held streams, events and their observation cursors.
3
3
  -- Version numbers order the chapters on a fresh database; they are not history. A shape
4
4
  -- change edits the chapter in place; existing development databases are recreated.
5
5
 
@@ -19,13 +19,10 @@ CREATE TABLE IF NOT EXISTS subscriptions (
19
19
  published_channel TEXT CHECK (published_channel IS NULL OR length(published_channel) > 0),
20
20
  source TEXT CHECK (source IS NULL OR length(source) > 0),
21
21
  opened_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
22
- -- EXEC `<T,P>` poll policy: NULL = default backoff, 0 = disabled, positive = fixed cadence.
23
- -- While the owning loop hibernates (202), an armed policy wakes it to inspect the stream ({§exec-poll}).
24
- poll_seconds INTEGER CHECK (poll_seconds IS NULL OR poll_seconds >= 0),
25
- -- EXEC `<0>` — turn-scoped: the stream is reaped at the worker's next pre-turn so it never survives
26
- -- into the subsequent turn; its terminal output surfaces initially visible like any conclusion. {§exec-poll}
22
+ -- `[{"lifetime":"turn"}]`: the stream is reaped at the worker's next pre-turn so it never survives
23
+ -- into the subsequent turn; its terminal output surfaces initially visible like any conclusion. {§exec-lifetime}
27
24
  turn_scoped INTEGER NOT NULL DEFAULT 0 CHECK (turn_scoped IN (0, 1)),
28
- -- {§worker-obligations}: a `<-1>` spawn outlives its loop and is nobody's obligation ({§exec-timeout}).
25
+ -- {§worker-obligations}: a `[{"lifetime":"detached"}]` spawn outlives its loop and is nobody's obligation.
29
26
  detached INTEGER NOT NULL DEFAULT 0 CHECK (detached IN (0, 1)),
30
27
  closed_at TEXT,
31
28
  close_status INTEGER CHECK (close_status IS NULL OR (close_status BETWEEN 100 AND 599)),
@@ -140,14 +137,7 @@ BEGIN
140
137
  SELECT RAISE(ABORT, 'subscription channel result violates the channel producer contract');
141
138
  END;
142
139
 
143
- -- One durable publication cursor per selected subscription channel. Log rows
144
- -- are curated model context and therefore cannot own this lifecycle fact.
145
- -- The row survives KILLing any generated observation and disappears only with
146
- -- its subscription. {§exec-stream}
147
- -- {§worker-obligations}: what a worker still holds — an open stream that is not detached, or a
148
- -- child with an unresolved loop (the same liveness the Delegation section shows, so the 409 gate
149
- -- and the section the model reads never disagree, {§child-orientation}). The one definition the
150
- -- completion gate, the wait matrix, and the drain's wake settlement all read.
140
+ -- {§worker-obligations}: the shared worker work a loop is held on.
151
141
  CREATE VIEW IF NOT EXISTS worker_obligations AS
152
142
  SELECT w.id AS worker_id,
153
143
  EXISTS (
@@ -160,6 +150,11 @@ SELECT w.id AS worker_id,
160
150
  ) AS workers
161
151
  FROM workers w;
162
152
 
153
+ CREATE VIEW IF NOT EXISTS loop_obligations AS
154
+ SELECT l.id AS loop_id, held.streams, held.workers
155
+ FROM loops l JOIN worker_obligations held ON held.worker_id = l.worker_id;
156
+
157
+ -- {§exec-stream}: publication cursors survive curation of generated observations.
163
158
  CREATE TABLE IF NOT EXISTS subscription_publications (
164
159
  id INTEGER NOT NULL PRIMARY KEY,
165
160
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-service",
3
- "version": "1.17.0",
3
+ "version": "1.19.0",
4
4
  "description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-contracts contract.",
5
+ "keywords": [
6
+ "plurnk",
7
+ "agent",
8
+ "llm",
9
+ "daemon",
10
+ "agui",
11
+ "sqlite",
12
+ "harness"
13
+ ],
5
14
  "type": "module",
6
15
  "license": "MIT",
7
16
  "engines": {
@@ -39,12 +48,11 @@
39
48
  "start": "node --conditions=plurnk-dev src/service.ts",
40
49
  "types:sqlrite": "node scripts/sqlrite-types.mjs --write",
41
50
  "types:sqlrite:check": "node scripts/sqlrite-types.mjs",
42
- "artifacts:begin": "node ../scripts/test-artifacts.mjs begin",
43
- "pretest:intg": "npm run artifacts:begin",
44
51
  "test:lint": "npm run types:sqlrite:check && tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
45
52
  "test:unit": "node --conditions=plurnk-dev --import=./test/setup.ts --env-file-if-exists=.env.defaults --test --test-timeout=30000 scripts/*.test.mjs src/**/*.test.ts",
46
- "test:intg": "PLURNK_SERVICE_FILES_ITEMS=0 node --conditions=plurnk-dev --import=./test/setup.ts --env-file-if-exists=.env.defaults --test --test-concurrency=8 --test-timeout=30000 test/intg/*.test.ts",
53
+ "test:intg": "PLURNK_TEST_RUN=$(date -u +%Y%m%dT%H%M%SZ) PLURNK_SERVICE_FILES_ITEMS=0 node --conditions=plurnk-dev --import=./test/setup.ts --env-file-if-exists=.env.defaults --test --test-concurrency=8 --test-timeout=30000 test/intg/*.test.ts",
47
54
  "test:mcp:dogfood": "PLURNK_MCP_DOGFOOD=1 node --conditions=plurnk-dev --import=./test/setup.ts --env-file-if-exists=.env.defaults --test --test-concurrency=1 --test-timeout=120000 test/intg/mcp-agui-composition.test.ts",
55
+ "test:a2a:tck": "node scripts/a2a-tck.mjs",
48
56
  "test:live": "bash ../scripts/operator-environment.sh node --conditions=plurnk-dev scripts/live.mjs",
49
57
  "test:live:specimen": "bash ../scripts/operator-environment.sh node --conditions=plurnk-dev scripts/live.mjs --specimen",
50
58
  "test:live:zeropin": "PLURNK_ZERO_PIN=1 npm run test:live",
@@ -55,7 +63,6 @@
55
63
  "fixture:demo": "node --conditions=plurnk-dev test/demo/_fixture.ts",
56
64
  "test": "npm run test:lint && npm run test:unit && npm run test:intg",
57
65
  "digest:missing": "node --conditions=plurnk-dev bin/digest-missing.ts",
58
- "artifacts:clean": "node ../scripts/test-artifacts.mjs clean",
59
66
  "dev:digest": "node --conditions=plurnk-dev bin/digest.ts",
60
67
  "build:clean": "rm -rf dist",
61
68
  "build:dist": "tsc -p tsconfig.build.json",
@@ -81,22 +88,24 @@
81
88
  "@opentelemetry/resources": "^2.11.0",
82
89
  "@opentelemetry/sdk-metrics": "^2.11.0",
83
90
  "@opentelemetry/sdk-trace-base": "^2.11.0",
84
- "@plurnk/plurnk-a2a": "1.17.0",
85
- "@plurnk/plurnk-agui": "1.17.0",
86
- "@plurnk/plurnk-contracts": "1.17.0",
87
- "@plurnk/plurnk-execs": "1.17.0",
88
- "@plurnk/plurnk-execs-common": "1.17.0",
89
- "@plurnk/plurnk-execs-jq": "1.17.0",
90
- "@plurnk/plurnk-execs-sqlite": "1.17.0",
91
- "@plurnk/plurnk-hooks": "1.17.0",
92
- "@plurnk/plurnk-mcp": "1.17.0",
93
- "@plurnk/plurnk-meta": "1.17.0",
94
- "@plurnk/plurnk-agent-skills": "1.17.0",
95
- "@plurnk/plurnk-mimetypes": "1.17.0",
96
- "@plurnk/plurnk-mimetypes-application-ipynb": "1.17.0",
97
- "@plurnk/plurnk-mimetypes-application-json": "1.17.0",
98
- "@plurnk/plurnk-mimetypes-application-jsonl": "1.17.0",
99
- "@plurnk/plurnk-mimetypes-application-xml": "1.17.0",
91
+ "@plurnk/plurnk-a2a": "1.19.0",
92
+ "@plurnk/plurnk-agui": "1.19.0",
93
+ "@plurnk/plurnk-contracts": "1.19.0",
94
+ "@plurnk/plurnk-parser": "1.19.0",
95
+ "@plurnk/plurnk-schedule": "1.19.0",
96
+ "@plurnk/plurnk-execs": "1.19.0",
97
+ "@plurnk/plurnk-execs-common": "1.19.0",
98
+ "@plurnk/plurnk-execs-jq": "1.19.0",
99
+ "@plurnk/plurnk-execs-sqlite": "1.19.0",
100
+ "@plurnk/plurnk-hooks": "1.19.0",
101
+ "@plurnk/plurnk-mcp": "1.19.0",
102
+ "@plurnk/plurnk-meta": "1.19.0",
103
+ "@plurnk/plurnk-agent-skills": "1.19.0",
104
+ "@plurnk/plurnk-mimetypes": "1.19.0",
105
+ "@plurnk/plurnk-mimetypes-application-ipynb": "1.19.0",
106
+ "@plurnk/plurnk-mimetypes-application-json": "1.19.0",
107
+ "@plurnk/plurnk-mimetypes-application-jsonl": "1.19.0",
108
+ "@plurnk/plurnk-mimetypes-application-xml": "1.19.0",
100
109
  "@plurnk/plurnk-mimetypes-grammar-bash": "1.16.1",
101
110
  "@plurnk/plurnk-mimetypes-grammar-c": "1.16.1",
102
111
  "@plurnk/plurnk-mimetypes-grammar-cpp": "1.16.1",
@@ -123,27 +132,27 @@
123
132
  "@plurnk/plurnk-mimetypes-grammar-typescript": "1.16.1",
124
133
  "@plurnk/plurnk-mimetypes-grammar-yaml": "1.16.1",
125
134
  "@plurnk/plurnk-mimetypes-grammar-zig": "1.16.1",
126
- "@plurnk/plurnk-mimetypes-application-pdf": "1.17.0",
127
- "@plurnk/plurnk-mimetypes-image": "1.17.0",
128
- "@plurnk/plurnk-mimetypes-text-csv": "1.17.0",
129
- "@plurnk/plurnk-mimetypes-text-diff": "1.17.0",
130
- "@plurnk/plurnk-mimetypes-text-dotenv": "1.17.0",
131
- "@plurnk/plurnk-mimetypes-text-html": "1.17.0",
132
- "@plurnk/plurnk-mimetypes-text-ini": "1.17.0",
133
- "@plurnk/plurnk-mimetypes-text-markdown": "1.17.0",
134
- "@plurnk/plurnk-mimetypes-text-plain": "1.17.0",
135
- "@plurnk/plurnk-models": "1.17.0",
136
- "@plurnk/plurnk-providers": "1.17.0",
137
- "@plurnk/plurnk-schemes": "1.17.0",
138
- "@plurnk/plurnk-schemes-http": "1.17.0",
135
+ "@plurnk/plurnk-mimetypes-application-pdf": "1.19.0",
136
+ "@plurnk/plurnk-mimetypes-image": "1.19.0",
137
+ "@plurnk/plurnk-mimetypes-audio": "1.19.0",
138
+ "@plurnk/plurnk-mimetypes-text-csv": "1.19.0",
139
+ "@plurnk/plurnk-mimetypes-text-diff": "1.19.0",
140
+ "@plurnk/plurnk-mimetypes-text-dotenv": "1.19.0",
141
+ "@plurnk/plurnk-mimetypes-text-html": "1.19.0",
142
+ "@plurnk/plurnk-mimetypes-text-ini": "1.19.0",
143
+ "@plurnk/plurnk-mimetypes-text-markdown": "1.19.0",
144
+ "@plurnk/plurnk-mimetypes-text-plain": "1.19.0",
145
+ "@plurnk/plurnk-models": "1.19.0",
146
+ "@plurnk/plurnk-providers": "1.19.0",
147
+ "@plurnk/plurnk-schemes": "1.19.0",
148
+ "@plurnk/plurnk-schemes-http": "1.19.0",
139
149
  "@plurnk/plurnk-schemes-http-tavily": "^1.8.0",
140
- "@possumtech/sqlrite": "^6.5.2",
150
+ "@possumtech/sqlrite": "^6.5.3",
141
151
  "diff": "^9.0.0",
142
152
  "yaml": "^2.9.0"
143
153
  },
144
154
  "devDependencies": {
145
155
  "@opentelemetry/core": "^2.11.0",
146
- "@plurnk/plurnk-mimetypes-tokenizers": "1.17.0",
147
156
  "@types/diff": "^7.0.2"
148
157
  },
149
158
  "homepage": "https://github.com/plurnk/plurnk-service/tree/main/plurnk-core#readme",
@@ -1,12 +0,0 @@
1
- import type { PlurnkSchemeContext } from "./scheme-types.ts";
2
- export default class PromptFrames {
3
- static write(ctx: PlurnkSchemeContext, frame: {
4
- loopSequence: number;
5
- ordinal: number;
6
- content: string;
7
- openPaths: readonly string[];
8
- source?: string | null;
9
- pathname?: string | null;
10
- }): Promise<string>;
11
- }
12
- //# sourceMappingURL=PromptFrames.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromptFrames.d.ts","sourceRoot":"","sources":["../../src/core/PromptFrames.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM7D,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,OAAa,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE;QAChD,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;CACJ"}
@@ -1,28 +0,0 @@
1
- import EntryCrud from "../schemes/_entry-crud.js";
2
- import WorkerName from "./WorkerName.js";
3
- import { promptPathname } from "./plurnk-uri.js";
4
- import { OperationFailureError } from "./results.js";
5
- // {§prompt-address}: claim new identities atomically; reuse already-published identities.
6
- export default class PromptFrames {
7
- static async write(ctx, frame) {
8
- const authority = await WorkerName.forId(ctx.db, ctx.workerId);
9
- const createOnly = frame.pathname == null;
10
- while (true) {
11
- const pathname = frame.pathname ?? promptPathname(frame.loopSequence);
12
- const result = await EntryCrud.writeEntry({ authority, pathname }, {
13
- channels: { body: { content: frame.content, mimetype: "text/markdown" } },
14
- attributes: {
15
- ordinal: frame.ordinal,
16
- openPaths: frame.openPaths,
17
- ...(frame.source == null ? {} : { source: frame.source }),
18
- },
19
- }, ctx, "prompt", { createOnly });
20
- if (createOnly && result.status === 409)
21
- continue;
22
- if (result.status >= 400)
23
- throw new OperationFailureError(result);
24
- return pathname;
25
- }
26
- }
27
- }
28
- //# sourceMappingURL=PromptFrames.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromptFrames.js","sourceRoot":"","sources":["../../src/core/PromptFrames.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAElD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,0FAA0F;AAC1F,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAwB,EAAE,KAO5C;QACG,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC1C,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;gBAC/D,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE;gBACzE,UAAU,EAAE;oBACR,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;iBAC5D;aACJ,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAClC,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG;gBAAE,SAAS;YAClD,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;gBAAE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAClE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;CACJ"}
@@ -1,8 +0,0 @@
1
- import type { EntryEditResult, EntryFindResult, ResolvedEditStatement, SchemeCtx, SchemeHandler, SchemeManifest } from "@plurnk/plurnk-schemes";
2
- import type { FindStatement } from "@plurnk/plurnk-contracts";
3
- export default class Prompt implements SchemeHandler {
4
- static manifest: SchemeManifest;
5
- editBatch(statements: readonly ResolvedEditStatement[], ctx: SchemeCtx): Promise<EntryEditResult>;
6
- find(statement: FindStatement, ctx: SchemeCtx): Promise<EntryFindResult>;
7
- }
8
- //# sourceMappingURL=Prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../src/schemes/Prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChJ,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,aAAa;IAChD,MAAM,CAAC,QAAQ,EAAE,cAAc,CAW7B;IAGI,SAAS,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAGtG;IAEK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAE7E;CACJ"}
@@ -1,25 +0,0 @@
1
- import LineAnchors from "../content/line-anchors.js";
2
- // {§prompt-address}: immutable-to-model task frames at literal workspace addresses.
3
- export default class Prompt {
4
- static manifest = {
5
- name: "prompt",
6
- authority: "resource",
7
- channels: { body: "text/markdown" },
8
- defaultChannel: "body",
9
- category: "data",
10
- writableBy: ["client", "_plurnk"],
11
- volatile: false,
12
- modelVisible: true,
13
- folderScopes: true,
14
- textEditScopes: true,
15
- };
16
- // The actionless prompt log row is written separately from its source entry.
17
- async editBatch(statements, ctx) {
18
- LineAnchors.assertResolved(statements);
19
- return ctx.entries.operations.editBatch(statements);
20
- }
21
- async find(statement, ctx) {
22
- return ctx.entries.operations.find(statement);
23
- }
24
- }
25
- //# sourceMappingURL=Prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../src/schemes/Prompt.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAErD,oFAAoF;AACpF,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,MAAM,CAAC,QAAQ,GAAmB;QAC9B,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,UAAU;QACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;QACnC,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QACjC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,IAAI;KACvB,CAAC;IAEF,6EAA6E;IAC7E,KAAK,CAAC,SAAS,CAAC,UAA4C,EAAE,GAAc;QACxE,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE,GAAc;QAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;CACJ"}