@plurnk/plurnk-service 4.2.1 → 4.3.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 (438) hide show
  1. package/INSTALL.md +7 -2
  2. package/README.md +3 -1
  3. package/SPEC.md +1977 -1397
  4. package/dist/build-info.d.ts.map +1 -1
  5. package/dist/build-info.js +25 -3
  6. package/dist/build-info.js.map +1 -1
  7. package/dist/build-info.json +1 -1
  8. package/dist/completions/_plurnk-service +1 -1
  9. package/dist/completions/plurnk-service.bash +1 -1
  10. package/dist/completions/plurnk-service.fish +1 -0
  11. package/dist/content/body-preview.js.map +1 -1
  12. package/dist/content/byte-view.d.ts.map +1 -1
  13. package/dist/content/byte-view.js +3 -2
  14. package/dist/content/byte-view.js.map +1 -1
  15. package/dist/content/edit-collision.d.ts +2 -1
  16. package/dist/content/edit-collision.d.ts.map +1 -1
  17. package/dist/content/edit-collision.js.map +1 -1
  18. package/dist/content/edit-receipt.d.ts.map +1 -1
  19. package/dist/content/edit-receipt.js +28 -23
  20. package/dist/content/edit-receipt.js.map +1 -1
  21. package/dist/content/edited-span.js +1 -1
  22. package/dist/content/edited-span.js.map +1 -1
  23. package/dist/content/line-anchors.d.ts +3 -2
  24. package/dist/content/line-anchors.d.ts.map +1 -1
  25. package/dist/content/line-anchors.js +33 -19
  26. package/dist/content/line-anchors.js.map +1 -1
  27. package/dist/content/line-selection.js.map +1 -1
  28. package/dist/content/pattern-edits.js +1 -1
  29. package/dist/content/pattern-edits.js.map +1 -1
  30. package/dist/content/read-projector.d.ts +1 -1
  31. package/dist/content/read-projector.d.ts.map +1 -1
  32. package/dist/content/read-projector.js +10 -8
  33. package/dist/content/read-projector.js.map +1 -1
  34. package/dist/content/read-resolve.d.ts.map +1 -1
  35. package/dist/content/read-resolve.js +6 -5
  36. package/dist/content/read-resolve.js.map +1 -1
  37. package/dist/core/AdmittedTurnExecutor.d.ts +4 -4
  38. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  39. package/dist/core/AdmittedTurnExecutor.js +20 -18
  40. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  41. package/dist/core/AmbientMembers.d.ts +1 -1
  42. package/dist/core/AmbientMembers.d.ts.map +1 -1
  43. package/dist/core/AmbientMembers.js +5 -2
  44. package/dist/core/AmbientMembers.js.map +1 -1
  45. package/dist/core/BareBatchRunner.d.ts +1 -1
  46. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  47. package/dist/core/BareBatchRunner.js +2 -2
  48. package/dist/core/BareBatchRunner.js.map +1 -1
  49. package/dist/core/CapabilityPolicies.js.map +1 -1
  50. package/dist/core/CapabilityResolver.d.ts +1 -2
  51. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  52. package/dist/core/CapabilityResolver.js +11 -7
  53. package/dist/core/CapabilityResolver.js.map +1 -1
  54. package/dist/core/ChannelWrite.d.ts +2 -2
  55. package/dist/core/ChannelWrite.d.ts.map +1 -1
  56. package/dist/core/ChannelWrite.js.map +1 -1
  57. package/dist/core/ChannelWrite.sql +27 -0
  58. package/dist/core/ClientInteractions.js.map +1 -1
  59. package/dist/core/ContextFit.js +1 -1
  60. package/dist/core/ContextFit.js.map +1 -1
  61. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  62. package/dist/core/CoreSchemeServices.js +4 -4
  63. package/dist/core/CoreSchemeServices.js.map +1 -1
  64. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  65. package/dist/core/DataStatementRunner.js +15 -15
  66. package/dist/core/DataStatementRunner.js.map +1 -1
  67. package/dist/core/Dispatcher.d.ts +29 -5
  68. package/dist/core/Dispatcher.d.ts.map +1 -1
  69. package/dist/core/Dispatcher.js +210 -130
  70. package/dist/core/Dispatcher.js.map +1 -1
  71. package/dist/core/EditMutations.d.ts.map +1 -1
  72. package/dist/core/EditMutations.js +12 -6
  73. package/dist/core/EditMutations.js.map +1 -1
  74. package/dist/core/EditSequence.js.map +1 -1
  75. package/dist/core/Engine.d.ts +12 -6
  76. package/dist/core/Engine.d.ts.map +1 -1
  77. package/dist/core/Engine.js +29 -7
  78. package/dist/core/Engine.js.map +1 -1
  79. package/dist/core/ExecutionOutputs.js.map +1 -1
  80. package/dist/core/ExecutorRegistry.d.ts +1 -2
  81. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  82. package/dist/core/ExecutorRegistry.js +2 -2
  83. package/dist/core/ExecutorRegistry.js.map +1 -1
  84. package/dist/core/FileAddress.js.map +1 -1
  85. package/dist/core/FilePublication.d.ts.map +1 -1
  86. package/dist/core/FilePublication.js +6 -3
  87. package/dist/core/FilePublication.js.map +1 -1
  88. package/dist/core/FileSnapshot.d.ts.map +1 -1
  89. package/dist/core/FileSnapshot.js +8 -5
  90. package/dist/core/FileSnapshot.js.map +1 -1
  91. package/dist/core/KillHandler.d.ts.map +1 -1
  92. package/dist/core/KillHandler.js +7 -0
  93. package/dist/core/KillHandler.js.map +1 -1
  94. package/dist/core/LiveSubscription.d.ts +1 -0
  95. package/dist/core/LiveSubscription.d.ts.map +1 -1
  96. package/dist/core/LiveSubscription.js +3 -2
  97. package/dist/core/LiveSubscription.js.map +1 -1
  98. package/dist/core/LiveSubscriptions.d.ts +4 -1
  99. package/dist/core/LiveSubscriptions.d.ts.map +1 -1
  100. package/dist/core/LiveSubscriptions.js +42 -1
  101. package/dist/core/LiveSubscriptions.js.map +1 -1
  102. package/dist/core/LogBody.d.ts.map +1 -1
  103. package/dist/core/LogBody.js +22 -19
  104. package/dist/core/LogBody.js.map +1 -1
  105. package/dist/core/LogVisibility.d.ts +1 -1
  106. package/dist/core/LogVisibility.d.ts.map +1 -1
  107. package/dist/core/LogVisibility.js +4 -6
  108. package/dist/core/LogVisibility.js.map +1 -1
  109. package/dist/core/LogWriter.d.ts.map +1 -1
  110. package/dist/core/LogWriter.js +6 -9
  111. package/dist/core/LogWriter.js.map +1 -1
  112. package/dist/core/LoopDriver.d.ts +4 -4
  113. package/dist/core/LoopDriver.d.ts.map +1 -1
  114. package/dist/core/LoopDriver.js +4 -5
  115. package/dist/core/LoopDriver.js.map +1 -1
  116. package/dist/core/LoopLifecycle.d.ts +2 -0
  117. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  118. package/dist/core/LoopLifecycle.js +13 -3
  119. package/dist/core/LoopLifecycle.js.map +1 -1
  120. package/dist/core/LoopLifecycle.sql +4 -4
  121. package/dist/core/LoopOutcome.d.ts.map +1 -1
  122. package/dist/core/LoopOutcome.js +2 -2
  123. package/dist/core/LoopOutcome.js.map +1 -1
  124. package/dist/core/MembershipMaterialization.d.ts.map +1 -1
  125. package/dist/core/MembershipMaterialization.js +29 -29
  126. package/dist/core/MembershipMaterialization.js.map +1 -1
  127. package/dist/core/MessageResources.d.ts +5 -1
  128. package/dist/core/MessageResources.d.ts.map +1 -1
  129. package/dist/core/MessageResources.js +12 -0
  130. package/dist/core/MessageResources.js.map +1 -1
  131. package/dist/core/MessageResources.sql +8 -0
  132. package/dist/core/MutationEffects.d.ts +1 -0
  133. package/dist/core/MutationEffects.d.ts.map +1 -1
  134. package/dist/core/MutationEffects.js +14 -10
  135. package/dist/core/MutationEffects.js.map +1 -1
  136. package/dist/core/OperationHistory.d.ts.map +1 -1
  137. package/dist/core/OperationHistory.js +4 -3
  138. package/dist/core/OperationHistory.js.map +1 -1
  139. package/dist/core/OperatorConfig.d.ts.map +1 -1
  140. package/dist/core/OperatorConfig.js +3 -2
  141. package/dist/core/OperatorConfig.js.map +1 -1
  142. package/dist/core/PacketBuilder.d.ts +1 -1
  143. package/dist/core/PacketBuilder.d.ts.map +1 -1
  144. package/dist/core/PacketBuilder.js +7 -5
  145. package/dist/core/PacketBuilder.js.map +1 -1
  146. package/dist/core/ProblemLog.d.ts +2 -5
  147. package/dist/core/ProblemLog.d.ts.map +1 -1
  148. package/dist/core/ProblemLog.js +2 -3
  149. package/dist/core/ProblemLog.js.map +1 -1
  150. package/dist/core/ProposalLifecycle.d.ts +12 -11
  151. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  152. package/dist/core/ProposalLifecycle.js +92 -84
  153. package/dist/core/ProposalLifecycle.js.map +1 -1
  154. package/dist/core/ReasoningEvent.d.ts +2 -0
  155. package/dist/core/ReasoningEvent.d.ts.map +1 -1
  156. package/dist/core/ReplyMetadata.d.ts.map +1 -1
  157. package/dist/core/ReplyMetadata.js +4 -3
  158. package/dist/core/ReplyMetadata.js.map +1 -1
  159. package/dist/core/ResourceBindings.d.ts +2 -2
  160. package/dist/core/ResourceBindings.d.ts.map +1 -1
  161. package/dist/core/ResourceBindings.js.map +1 -1
  162. package/dist/core/ResourceMutations.d.ts +1 -1
  163. package/dist/core/ResourceMutations.d.ts.map +1 -1
  164. package/dist/core/ResourceMutations.js +1 -2
  165. package/dist/core/ResourceMutations.js.map +1 -1
  166. package/dist/core/ResourceSelector.js +2 -2
  167. package/dist/core/ResourceSelector.js.map +1 -1
  168. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  169. package/dist/core/ResourceTransfers.js +162 -120
  170. package/dist/core/ResourceTransfers.js.map +1 -1
  171. package/dist/core/SchemeRegistry.d.ts +6 -5
  172. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  173. package/dist/core/SchemeRegistry.js +32 -26
  174. package/dist/core/SchemeRegistry.js.map +1 -1
  175. package/dist/core/ServiceHelp.d.ts.map +1 -1
  176. package/dist/core/ServiceHelp.js +2 -1
  177. package/dist/core/ServiceHelp.js.map +1 -1
  178. package/dist/core/StoredPacket.d.ts.map +1 -1
  179. package/dist/core/StoredPacket.js +26 -19
  180. package/dist/core/StoredPacket.js.map +1 -1
  181. package/dist/core/StrikeRail.d.ts +1 -2
  182. package/dist/core/StrikeRail.d.ts.map +1 -1
  183. package/dist/core/StrikeRail.js +4 -4
  184. package/dist/core/StrikeRail.js.map +1 -1
  185. package/dist/core/TerminalResult.d.ts +0 -2
  186. package/dist/core/TerminalResult.d.ts.map +1 -1
  187. package/dist/core/TerminalResult.js +0 -18
  188. package/dist/core/TerminalResult.js.map +1 -1
  189. package/dist/core/ToolInputSchema.d.ts.map +1 -1
  190. package/dist/core/ToolInputSchema.js +2 -2
  191. package/dist/core/ToolInputSchema.js.map +1 -1
  192. package/dist/core/ToolResources.d.ts +1 -0
  193. package/dist/core/ToolResources.d.ts.map +1 -1
  194. package/dist/core/ToolResources.js +7 -6
  195. package/dist/core/ToolResources.js.map +1 -1
  196. package/dist/core/TurnDispositionHandler.d.ts +1 -1
  197. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  198. package/dist/core/TurnDispositionHandler.js +0 -1
  199. package/dist/core/TurnDispositionHandler.js.map +1 -1
  200. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  201. package/dist/core/TurnMaterialization.js +3 -2
  202. package/dist/core/TurnMaterialization.js.map +1 -1
  203. package/dist/core/TurnRunner.d.ts +13 -12
  204. package/dist/core/TurnRunner.d.ts.map +1 -1
  205. package/dist/core/TurnRunner.js +174 -164
  206. package/dist/core/TurnRunner.js.map +1 -1
  207. package/dist/core/TurnRunner.sql +3 -3
  208. package/dist/core/WorkerOwners.js.map +1 -1
  209. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  210. package/dist/core/caps/DbMessageCaps.d.ts +3 -3
  211. package/dist/core/caps/DbMessageCaps.d.ts.map +1 -1
  212. package/dist/core/caps/DbProjectionCaps.js +1 -1
  213. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  214. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  215. package/dist/core/caps/DbSubscriptionCaps.js +1 -0
  216. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  217. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  218. package/dist/core/caps/SchemeCtxImpl.js +4 -1
  219. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  220. package/dist/core/env-catalog.js.map +1 -1
  221. package/dist/core/env-defaults.d.ts.map +1 -1
  222. package/dist/core/env-defaults.js +5 -3
  223. package/dist/core/env-defaults.js.map +1 -1
  224. package/dist/core/file-creation-policy.d.ts.map +1 -1
  225. package/dist/core/file-creation-policy.js +2 -1
  226. package/dist/core/file-creation-policy.js.map +1 -1
  227. package/dist/core/file-materialization.d.ts.map +1 -1
  228. package/dist/core/file-materialization.js +9 -11
  229. package/dist/core/file-materialization.js.map +1 -1
  230. package/dist/core/git-env.d.ts +1 -0
  231. package/dist/core/git-env.d.ts.map +1 -1
  232. package/dist/core/git-env.js +34 -3
  233. package/dist/core/git-env.js.map +1 -1
  234. package/dist/core/git-membership.d.ts +5 -0
  235. package/dist/core/git-membership.d.ts.map +1 -1
  236. package/dist/core/git-membership.js +55 -21
  237. package/dist/core/git-membership.js.map +1 -1
  238. package/dist/core/git-state.d.ts.map +1 -1
  239. package/dist/core/git-state.js +1 -0
  240. package/dist/core/git-state.js.map +1 -1
  241. package/dist/core/packet-wire.d.ts +26 -21
  242. package/dist/core/packet-wire.d.ts.map +1 -1
  243. package/dist/core/packet-wire.js +150 -112
  244. package/dist/core/packet-wire.js.map +1 -1
  245. package/dist/core/results.d.ts +9 -4
  246. package/dist/core/results.d.ts.map +1 -1
  247. package/dist/core/results.js +14 -1
  248. package/dist/core/results.js.map +1 -1
  249. package/dist/core/runtime-floor.d.ts +8 -0
  250. package/dist/core/runtime-floor.d.ts.map +1 -0
  251. package/dist/core/runtime-floor.js +40 -0
  252. package/dist/core/runtime-floor.js.map +1 -0
  253. package/dist/core/runtime-guard.d.ts +2 -0
  254. package/dist/core/runtime-guard.d.ts.map +1 -0
  255. package/dist/core/runtime-guard.js +5 -0
  256. package/dist/core/runtime-guard.js.map +1 -0
  257. package/dist/core/sqlite-synchronous.d.ts +1 -1
  258. package/dist/core/sqlite-synchronous.d.ts.map +1 -1
  259. package/dist/core/sqlite-synchronous.js.map +1 -1
  260. package/dist/core/statement-primary.d.ts +2 -2
  261. package/dist/core/statement-primary.d.ts.map +1 -1
  262. package/dist/core/statement-primary.js.map +1 -1
  263. package/dist/core/workspace-settings.js +1 -1
  264. package/dist/core/workspace-settings.js.map +1 -1
  265. package/dist/evidence/EvidenceReader.d.ts.map +1 -1
  266. package/dist/evidence/EvidenceReader.js +20 -6
  267. package/dist/evidence/EvidenceReader.js.map +1 -1
  268. package/dist/launch/Launch.d.ts +1 -0
  269. package/dist/launch/Launch.d.ts.map +1 -1
  270. package/dist/launch/Launch.js +28 -12
  271. package/dist/launch/Launch.js.map +1 -1
  272. package/dist/man/plurnk-service.1 +6 -2
  273. package/dist/schemes/EffectPolicy.js +1 -1
  274. package/dist/schemes/EffectPolicy.js.map +1 -1
  275. package/dist/schemes/Env.d.ts +1 -1
  276. package/dist/schemes/Env.d.ts.map +1 -1
  277. package/dist/schemes/Env.js +7 -1
  278. package/dist/schemes/Env.js.map +1 -1
  279. package/dist/schemes/Exec.d.ts +10 -12
  280. package/dist/schemes/Exec.d.ts.map +1 -1
  281. package/dist/schemes/Exec.js +337 -437
  282. package/dist/schemes/Exec.js.map +1 -1
  283. package/dist/schemes/ExecOutputScheme.d.ts +4 -6
  284. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  285. package/dist/schemes/ExecOutputScheme.js +17 -17
  286. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  287. package/dist/schemes/ExecScheduler.d.ts.map +1 -1
  288. package/dist/schemes/ExecScheduler.js +1 -2
  289. package/dist/schemes/ExecScheduler.js.map +1 -1
  290. package/dist/schemes/ExecutionInput.js +3 -3
  291. package/dist/schemes/ExecutionInput.js.map +1 -1
  292. package/dist/schemes/File.d.ts +3 -18
  293. package/dist/schemes/File.d.ts.map +1 -1
  294. package/dist/schemes/File.js +136 -79
  295. package/dist/schemes/File.js.map +1 -1
  296. package/dist/schemes/Log.d.ts.map +1 -1
  297. package/dist/schemes/Log.js +193 -161
  298. package/dist/schemes/Log.js.map +1 -1
  299. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  300. package/dist/schemes/QuestionTool.js +6 -8
  301. package/dist/schemes/QuestionTool.js.map +1 -1
  302. package/dist/schemes/ResourceTreeScheme.d.ts.map +1 -1
  303. package/dist/schemes/ResourceTreeScheme.js +2 -2
  304. package/dist/schemes/ResourceTreeScheme.js.map +1 -1
  305. package/dist/schemes/TurnSource.js +3 -3
  306. package/dist/schemes/TurnSource.js.map +1 -1
  307. package/dist/schemes/Worker.js.map +1 -1
  308. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  309. package/dist/schemes/_entry-crud.js +4 -2
  310. package/dist/schemes/_entry-crud.js.map +1 -1
  311. package/dist/schemes/_entry-find.d.ts.map +1 -1
  312. package/dist/schemes/_entry-find.js +187 -139
  313. package/dist/schemes/_entry-find.js.map +1 -1
  314. package/dist/schemes/_entry-manifest.js +1 -1
  315. package/dist/schemes/_entry-manifest.js.map +1 -1
  316. package/dist/schemes/_entry-ops.js.map +1 -1
  317. package/dist/schemes/_search-index.js.map +1 -1
  318. package/dist/schemes/exec-entry-sink.d.ts +30 -0
  319. package/dist/schemes/exec-entry-sink.d.ts.map +1 -0
  320. package/dist/schemes/exec-entry-sink.js +238 -0
  321. package/dist/schemes/exec-entry-sink.js.map +1 -0
  322. package/dist/schemes/exec-lifetime.d.ts.map +1 -1
  323. package/dist/schemes/exec-lifetime.js +5 -2
  324. package/dist/schemes/exec-lifetime.js.map +1 -1
  325. package/dist/server/ClientOperations.d.ts +45 -0
  326. package/dist/server/ClientOperations.d.ts.map +1 -0
  327. package/dist/server/ClientOperations.js +192 -0
  328. package/dist/server/ClientOperations.js.map +1 -0
  329. package/dist/server/ClientReads.d.ts +13 -5
  330. package/dist/server/ClientReads.d.ts.map +1 -1
  331. package/dist/server/ClientReads.js +108 -21
  332. package/dist/server/ClientReads.js.map +1 -1
  333. package/dist/server/Credentials.js +2 -2
  334. package/dist/server/Credentials.js.map +1 -1
  335. package/dist/server/Daemon.d.ts +40 -28
  336. package/dist/server/Daemon.d.ts.map +1 -1
  337. package/dist/server/Daemon.js +250 -839
  338. package/dist/server/Daemon.js.map +1 -1
  339. package/dist/server/DaemonLock.d.ts +2 -0
  340. package/dist/server/DaemonLock.d.ts.map +1 -1
  341. package/dist/server/DaemonLock.js +10 -1
  342. package/dist/server/DaemonLock.js.map +1 -1
  343. package/dist/server/DaemonModules.d.ts +39 -0
  344. package/dist/server/DaemonModules.d.ts.map +1 -0
  345. package/dist/server/DaemonModules.js +219 -0
  346. package/dist/server/DaemonModules.js.map +1 -0
  347. package/dist/server/DrainSupervisor.d.ts +4 -2
  348. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  349. package/dist/server/DrainSupervisor.js +318 -290
  350. package/dist/server/DrainSupervisor.js.map +1 -1
  351. package/dist/server/EnvFunctionality.d.ts +10 -7
  352. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  353. package/dist/server/EnvFunctionality.js +6 -5
  354. package/dist/server/EnvFunctionality.js.map +1 -1
  355. package/dist/server/Functionality.d.ts +4 -5
  356. package/dist/server/Functionality.d.ts.map +1 -1
  357. package/dist/server/Functionality.js +19 -15
  358. package/dist/server/Functionality.js.map +1 -1
  359. package/dist/server/HttpListener.d.ts.map +1 -1
  360. package/dist/server/HttpListener.js +28 -8
  361. package/dist/server/HttpListener.js.map +1 -1
  362. package/dist/server/MembersFunctionality.d.ts +19 -7
  363. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  364. package/dist/server/MembersFunctionality.js +30 -16
  365. package/dist/server/MembersFunctionality.js.map +1 -1
  366. package/dist/server/MessageDelivery.d.ts +43 -0
  367. package/dist/server/MessageDelivery.d.ts.map +1 -0
  368. package/dist/server/MessageDelivery.js +186 -0
  369. package/dist/server/MessageDelivery.js.map +1 -0
  370. package/dist/server/ModuleHost.d.ts +3 -3
  371. package/dist/server/ModuleHost.d.ts.map +1 -1
  372. package/dist/server/Places.d.ts +19 -0
  373. package/dist/server/Places.d.ts.map +1 -0
  374. package/dist/server/Places.js +76 -0
  375. package/dist/server/Places.js.map +1 -0
  376. package/dist/server/PluginSources.d.ts.map +1 -1
  377. package/dist/server/PluginSources.js +2 -1
  378. package/dist/server/PluginSources.js.map +1 -1
  379. package/dist/server/PlurnkSkill.d.ts.map +1 -1
  380. package/dist/server/PlurnkSkill.js +5 -4
  381. package/dist/server/PlurnkSkill.js.map +1 -1
  382. package/dist/server/Rollback.d.ts.map +1 -1
  383. package/dist/server/Rollback.js +2 -1
  384. package/dist/server/Rollback.js.map +1 -1
  385. package/dist/server/WorkerModels.d.ts +83 -0
  386. package/dist/server/WorkerModels.d.ts.map +1 -0
  387. package/dist/server/WorkerModels.js +500 -0
  388. package/dist/server/WorkerModels.js.map +1 -0
  389. package/dist/server/WorkerOverview.d.ts +22 -0
  390. package/dist/server/WorkerOverview.d.ts.map +1 -0
  391. package/dist/server/WorkerOverview.js +42 -0
  392. package/dist/server/WorkerOverview.js.map +1 -0
  393. package/dist/server/WorkspacePlugins.d.ts +1 -1
  394. package/dist/server/WorkspacePlugins.d.ts.map +1 -1
  395. package/dist/server/WorkspacePlugins.js +0 -1
  396. package/dist/server/WorkspacePlugins.js.map +1 -1
  397. package/dist/server/WorkspaceResidency.d.ts +3 -3
  398. package/dist/server/WorkspaceResidency.d.ts.map +1 -1
  399. package/dist/server/WorkspaceResidency.js.map +1 -1
  400. package/dist/server/client-input.d.ts +2 -2
  401. package/dist/server/client-input.d.ts.map +1 -1
  402. package/dist/server/client-input.js +19 -12
  403. package/dist/server/client-input.js.map +1 -1
  404. package/dist/server/envelope.d.ts +4 -1
  405. package/dist/server/envelope.d.ts.map +1 -1
  406. package/dist/server/envelope.js +7 -3
  407. package/dist/server/envelope.js.map +1 -1
  408. package/dist/server/envelope.sql +10 -6
  409. package/dist/server/logEntry.d.ts +38 -1
  410. package/dist/server/logEntry.d.ts.map +1 -1
  411. package/dist/server/logEntry.js +9 -9
  412. package/dist/server/logEntry.js.map +1 -1
  413. package/dist/server/logEntry.sql +4 -2
  414. package/dist/server/loopDocs.d.ts.map +1 -1
  415. package/dist/server/loopDocs.js +11 -2
  416. package/dist/server/loopDocs.js.map +1 -1
  417. package/dist/server/module-discovery.d.ts +2 -3
  418. package/dist/server/module-discovery.d.ts.map +1 -1
  419. package/dist/server/module-discovery.js +6 -6
  420. package/dist/server/module-discovery.js.map +1 -1
  421. package/dist/server/places.sql +83 -0
  422. package/dist/server/seam-loop.sql +8 -0
  423. package/dist/server/worker-overview.sql +50 -0
  424. package/dist/service.d.ts +1 -0
  425. package/dist/service.d.ts.map +1 -1
  426. package/dist/service.js +35 -9
  427. package/dist/service.js.map +1 -1
  428. package/docs/members.md +11 -21
  429. package/migrations/033_hidden_places.sql +10 -0
  430. package/package.json +48 -57
  431. package/dist/observe/init.d.ts +0 -8
  432. package/dist/observe/init.d.ts.map +0 -1
  433. package/dist/observe/init.js +0 -163
  434. package/dist/observe/init.js.map +0 -1
  435. package/dist/server/WorkerModelResolver.d.ts +0 -20
  436. package/dist/server/WorkerModelResolver.d.ts.map +0 -1
  437. package/dist/server/WorkerModelResolver.js +0 -200
  438. package/dist/server/WorkerModelResolver.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TurnRunner.d.ts","sourceRoot":"","sources":["../../src/core/TurnRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TurnRunner.d.ts","sourceRoot":"","sources":["../../src/core/TurnRunner.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
+ import StoredPacket, {} from "./StoredPacket.js";
1
2
  import NativeContent from "./NativeContent.js";
2
3
  import { PlurnkParser, parsePath } from "@plurnk/plurnk-parser";
3
- import { PathSyntax, PlurnkParseError, UNKNOWN_POSITION } from "@plurnk/plurnk-contracts";
4
+ import { PathSyntax, PlurnkParseError, UNKNOWN_POSITION, Validator } from "@plurnk/plurnk-contracts";
4
5
  import WorkerOwners from "./WorkerOwners.js";
5
6
  import { setTimeout as delay } from "node:timers/promises";
6
- import { aggregateProviderAccounting } from "@plurnk/plurnk-providers";
7
+ import { aggregateProviderAccounting, ProviderError, scopeEnvToAlias, } from "@plurnk/plurnk-providers";
7
8
  const comparePosition = (a, b) => a.line - b.line || a.column - b.column;
8
- import { Mimetypes } from "@plurnk/plurnk-mimetypes";
9
9
  import FabricatedLog from "./FabricatedLog.js";
10
10
  import Meta, { Knob } from "@plurnk/plurnk-meta";
11
11
  import GitMembership from "./git-membership.js";
@@ -14,7 +14,6 @@ import GitState, {} from "./git-state.js";
14
14
  import WorkspaceSettings from "./workspace-settings.js";
15
15
  import { generatedPathname } from "./plurnk-uri.js";
16
16
  import { contentWeight } from "./content-weight.js";
17
- import LiveSubscriptions from "./LiveSubscriptions.js";
18
17
  import { readFile } from "node:fs/promises";
19
18
  import { resolve as resolvePath } from "node:path";
20
19
  import { homedir } from "node:os";
@@ -31,16 +30,9 @@ import PacketWire from "./packet-wire.js";
31
30
  import { RECEIPT_RESERVE, reserved } from "./ContextFit.js";
32
31
  import Results, { OperationFailureError } from "./results.js";
33
32
  import Turn, {} from "./Turn.js";
34
- // TurnRunner owns one inference cycle and any initialization turn
35
- // that precedes provider admission; Engine retains the surrounding loop
36
- // lifecycle and public facade.
37
- import NoticeChannel from "./NoticeChannel.js";
38
33
  import ProviderRecovery from "./ProviderRecovery.js";
39
- import ProblemLog from "./ProblemLog.js";
40
- import StrikeRail, {} from "./StrikeRail.js";
41
- import PacketBuilder, {} from "./PacketBuilder.js";
42
- import StoredPacket, {} from "./StoredPacket.js";
43
- import Dispatcher from "./Dispatcher.js";
34
+ import {} from "./StrikeRail.js";
35
+ import {} from "./PacketBuilder.js";
44
36
  import { observed, observedSync } from "../observe/spans.js";
45
37
  import { genAiRequestName, genAiRequestOptions, settleGenAiResponse } from "../observe/genai.js";
46
38
  import { PROVIDER_CALLS, recordCounter } from "../observe/metrics.js";
@@ -65,7 +57,7 @@ const workerCatalogTarget = (namespace) => {
65
57
  };
66
58
  };
67
59
  const assertOpenPaths = (value, source) => {
68
- if (!Array.isArray(value) || value.some((path) => typeof path !== "string" || path.length === 0)) {
60
+ if (!Array.isArray(value) || !value.every((path) => typeof path === "string" && path.length > 0)) {
69
61
  throw new TypeError(`${source}: expected an array of non-empty strings`);
70
62
  }
71
63
  return value;
@@ -93,11 +85,11 @@ const readFilesItems = () => {
93
85
  return null;
94
86
  return normalizeFilesItems(Number.parseInt(raw, 10));
95
87
  };
96
- import { ProviderError, scopeEnvToAlias } from "@plurnk/plurnk-providers";
88
+ // Provider contract owned by @plurnk/plurnk-providers; engine is the consumer.
97
89
  import ProviderInstantiate from "./ProviderInstantiate.js";
98
90
  import TurnMaterialization from "./TurnMaterialization.js";
99
91
  import BareBatchRunner from "./BareBatchRunner.js";
100
- import { ENGINE_PROBLEMS, TURN_STATUS_IMPLICIT_CONTINUE, outputAllowance } from "./turn-signals.js";
92
+ import { TURN_STATUS_IMPLICIT_CONTINUE, outputAllowance } from "./turn-signals.js";
101
93
  import AdmittedTurnExecutor from "./AdmittedTurnExecutor.js";
102
94
  // {§context-wall} — the window's one terminal: the packet cannot fit the model's window even as receipts.
103
95
  const WINDOW_OVERFLOW_DETAIL = "Context window overflow: the packet cannot fit the model's window even as receipts.";
@@ -110,16 +102,12 @@ const OVER_BUDGET_DETAIL = "Context exceeds budget. YOU MUST ONLY KILL, MOVE or
110
102
  // labelled as the card's own plan example is: the worker's plan in steps, then its next step.
111
103
  const INITIALIZATION_NOTE = {
112
104
  op: "NOTE", aside: "plan", metadata: null, target: null, lineMarker: null,
113
- body: [
114
- "1. Survey the tooling, documentation, extended context, and project root: what exists decides what can be done.",
115
- "2. Read the Open Message and restate what it asks for and what will show it is done.",
116
- "3. Do the work, saving all new facts, ideas, and plans in NOTEs for later turns.",
117
- ].join("\n"),
105
+ body: ["1. Survey the environment.", "2. Evaluate and react to the Open Message."].join("\n"),
118
106
  position: UNKNOWN_POSITION,
119
107
  };
120
108
  const INITIALIZATION_CLOSING_NOTE = {
121
109
  op: "NOTE", aside: "plan", metadata: null, target: null, lineMarker: null,
122
- body: "Read and resolve the Open Message.", position: UNKNOWN_POSITION,
110
+ body: "Evaluate and react to the Open Message.", position: UNKNOWN_POSITION,
123
111
  };
124
112
  // {§continued-without-note} — said once, in the next packet, of a continuing turn that carried no NOTE.
125
113
  const CONTINUED_WITHOUT_NOTE = "The turn continued without a NOTE.";
@@ -168,7 +156,6 @@ export default class TurnRunner {
168
156
  #weighContent;
169
157
  #notices;
170
158
  #problems;
171
- #strikes;
172
159
  #packets;
173
160
  #dispatcher;
174
161
  #liveSubscriptions;
@@ -180,19 +167,19 @@ export default class TurnRunner {
180
167
  #warmWorkspace;
181
168
  #dispatch;
182
169
  #resolveWorkerProviderIdentity;
170
+ #loopGauge;
183
171
  // {§operator-grammar} — one read per path per daemon; the file is the operator's and static.
184
172
  #grammarCache = new Map();
185
173
  #materialization;
186
174
  #bareBatch;
187
175
  #admitted;
188
- constructor({ db, schemes, mimetypes, weigh, notices, problems, strikes, packets, dispatcher, liveSubscriptions, notify, executors, loopSignal, interactions, warmWorkspace, dispatch, resolveWorkerProviderIdentity, }) {
176
+ constructor({ db, schemes, mimetypes, weigh, notices, problems, packets, dispatcher, liveSubscriptions, notify, executors, loopSignal, interactions, warmWorkspace, dispatch, resolveWorkerProviderIdentity, loopGauge, }) {
189
177
  this.#db = db;
190
178
  this.#schemes = schemes;
191
179
  this.#mimetypes = mimetypes;
192
180
  this.#weighContent = weigh;
193
181
  this.#notices = notices;
194
182
  this.#problems = problems;
195
- this.#strikes = strikes;
196
183
  this.#packets = packets;
197
184
  this.#dispatcher = dispatcher;
198
185
  this.#liveSubscriptions = liveSubscriptions;
@@ -204,6 +191,7 @@ export default class TurnRunner {
204
191
  this.#warmWorkspace = warmWorkspace;
205
192
  this.#dispatch = dispatch;
206
193
  this.#resolveWorkerProviderIdentity = resolveWorkerProviderIdentity;
194
+ this.#loopGauge = loopGauge;
207
195
  this.#materialization = new TurnMaterialization({ db: this.#db, weighContent: this.#weighContent, mimetypes: this.#mimetypes });
208
196
  this.#bareBatch = new BareBatchRunner({ db: this.#db, providerAttributions: this.#providerAttributions.bind(this), providerFailure: TurnRunner.#providerFailure });
209
197
  this.#admitted = new AdmittedTurnExecutor({ db: this.#db, schemes: this.#schemes, notices: this.#notices, problems: this.#problems, dispatcher: this.#dispatcher, bareBatch: this.#bareBatch });
@@ -215,10 +203,14 @@ export default class TurnRunner {
215
203
  const packetCount = await this.#db.engine_loop_packet_count.get({ loop_id: args.loopId });
216
204
  if (packetCount === undefined)
217
205
  throw new Error(`loop ${args.loopId}: packet count row missing`);
206
+ // {§tokenomics-client-gauge} The turn's inference is recorded: its packet and its call are the gauge now.
207
+ const gauge = await this.#loopGauge(args.loopId);
218
208
  this.#notify.loopPacketNotify(args.workspaceId, {
219
209
  workerId: args.workerId,
220
210
  loopId: args.loopId,
211
+ loopSeq: packetCount.sequence,
221
212
  packetCount: packetCount.count,
213
+ gauge,
222
214
  });
223
215
  }
224
216
  // {§operator-grammar} — the operator's grammar text for this provider, or undefined when
@@ -417,28 +409,26 @@ export default class TurnRunner {
417
409
  const initializationStatements = [];
418
410
  // {§worker-initialization-entry} — the worker's first turn is the worked
419
411
  // example itself: the actual orienting operations.
420
- // {§turn0-agents-stunt} — the project AGENTS.md (materialized by LoopDocs as
421
- // worker:///_plurnk/AGENTS.md) gets one foisted READ on the worker's first
422
- // loop, so local repo guidance is visible turn-0 content. Global policy
423
- // stays in the system prompt; nothing else is force-read.
412
+ // {§turn0-agents-stunt} {§turn0-local-instructions} — the project AGENTS.md, then its AGENTS.local.md (materialized
413
+ // by LoopDocs under worker:///_plurnk/), each get one foisted READ on the worker's first loop, so local repo
414
+ // guidance is visible turn-0 content. Global policy stays in the system prompt; nothing else is force-read.
424
415
  if (initializationTurn !== null) {
425
- const agentsEntry = await this.#db.crud_find_workspace_entry.get({
426
- workspace_id: workspaceId,
427
- scheme: "worker",
428
- authority: "",
429
- pathname: generatedPathname("/AGENTS.md"),
430
- });
431
- if (agentsEntry !== undefined) {
432
- const agentsTarget = {
433
- kind: "url", raw: "worker:///_plurnk/AGENTS.md", scheme: "worker",
416
+ for (const name of ["/AGENTS.md", "/AGENTS.local.md"]) {
417
+ const pathname = generatedPathname(name);
418
+ const entry = await this.#db.crud_find_workspace_entry.get({
419
+ workspace_id: workspaceId, scheme: "worker", authority: "", pathname,
420
+ });
421
+ if (entry === undefined)
422
+ continue;
423
+ const target = {
424
+ kind: "url", raw: `worker://${pathname}`, scheme: "worker",
434
425
  username: null, password: null, hostname: null, port: null,
435
- pathname: generatedPathname("/AGENTS.md"), query: null, fragment: null,
426
+ pathname, query: null, fragment: null,
436
427
  };
437
- const agentsRead = {
438
- op: "READ", aside: null, target: agentsTarget,
428
+ initializationStatements.push({
429
+ op: "READ", aside: null, target,
439
430
  metadata: null, lineMarker: null, matcher: null, body: null, position: UNKNOWN_POSITION,
440
- };
441
- initializationStatements.push(agentsRead);
431
+ });
442
432
  }
443
433
  }
444
434
  return {
@@ -513,7 +503,17 @@ export default class TurnRunner {
513
503
  // {§emission-row} — a `_plurnk` turn has receipts, never a fabricated assistant emission.
514
504
  // {§message-arrival} — the message reaches the model as an inbound SEND in the first
515
505
  // model turn; initialization does not READ it a second time.
516
- const admittedInitializationStatements = initializationStatements.filter((statement) => this.#capabilities.allowsAcross(statement, workspaceId, initializationPolicies));
506
+ const admittedInitializationStatements = [];
507
+ for (const statement of initializationStatements) {
508
+ if (!this.#capabilities.allowsAcross(statement, workspaceId, initializationPolicies))
509
+ continue;
510
+ // {§actor-boundary-catalog-preview} — a survey that would select nothing is left out of the program.
511
+ if (statement.op === "FIND" && !await this.#dispatcher.selects(statement, {
512
+ workspaceId, workerId, loopId, turnId: initializationTurn.id, origin: "_plurnk",
513
+ }))
514
+ continue;
515
+ admittedInitializationStatements.push(statement);
516
+ }
517
517
  if (admittedInitializationStatements.length === 0) {
518
518
  // Nothing to survey (the preview off, no project guidance): the turn opens and completes empty.
519
519
  await Turn.complete(this.#db, initializationTurn.id, 200);
@@ -553,18 +553,11 @@ export default class TurnRunner {
553
553
  // {§actor-boundary-catalog-preview} — the opening surveys, each admitted only when
554
554
  // its scheme is registered for the workspace. A positive filesItems caps the
555
555
  // project rows.
556
- async #catalogSurveys({ workspaceId }, { workerName, initializationPolicies, loopSequence }, filesItems) {
556
+ async #catalogSurveys({ workspaceId }, { workerName, initializationPolicies }, filesItems) {
557
557
  const catalogSchemes = await this.#db.engine_scheme_catalog_summary.all({ workspace_id: workspaceId });
558
558
  const fileItems = catalogSchemes.find(({ scheme }) => scheme === "file")?.shallow_items ?? 0;
559
559
  const fileCap = filesItems > 0 && fileItems > 0 ? Math.min(filesItems, fileItems) : null;
560
560
  const surveys = [
561
- {
562
- // Trial (#1073): the survey reads its own program, so the log carries one program verbatim
563
- // and shows that every ops:// turn is readable.
564
- op: "READ", aside: "this program",
565
- target: { kind: "url", raw: `ops://${workerName}/${loopSequence}/1`, scheme: "ops", username: null, password: null, hostname: workerName, port: null, pathname: `/${loopSequence}/1`, query: null, fragment: null },
566
- metadata: null, lineMarker: null, matcher: null, body: null, position: UNKNOWN_POSITION,
567
- },
568
561
  {
569
562
  op: "FIND", aside: null,
570
563
  target: { kind: "url", raw: "skill://*/SKILL.md", scheme: "skill", username: null, password: null, hostname: "*", port: null, pathname: "/SKILL.md", query: null, fragment: null },
@@ -913,9 +906,8 @@ export default class TurnRunner {
913
906
  attempts.railGrammar = await this.#operatorGrammar(provider);
914
907
  attempts.wellFormed = await this.#bodyChecks(workspaceId);
915
908
  const attemptLimit = readEmissionAttempts();
916
- const strikeStreak = await this.#strikes.streak(loopId);
917
909
  for (let attempt = 1; attempt <= attemptLimit;) {
918
- const verdict = await this.#issueProviderCall(args, request, attempts, attempt, strikeStreak);
910
+ const verdict = await this.#issueProviderCall(args, request, attempts, attempt);
919
911
  if (verdict === "admitted")
920
912
  break;
921
913
  if (verdict === "rejected")
@@ -966,7 +958,7 @@ export default class TurnRunner {
966
958
  // under the reasoning observer, and its classification. {§provider-recovery}
967
959
  // re-issues the same emission attempt; the parser's admission is the one verdict
968
960
  // on a completed exchange.
969
- async #issueProviderCall(args, request, attempts, attempt, strikeStreak) {
961
+ async #issueProviderCall(args, request, attempts, attempt) {
970
962
  const { provider, workspaceId, workerId, loopId } = args;
971
963
  // A recovery re-issue does not consume a grammar-emission attempt. Every
972
964
  // logical provider call still receives its own durable sequence and accounting.
@@ -996,10 +988,10 @@ export default class TurnRunner {
996
988
  }
997
989
  attempts.attemptId = attemptRow.id;
998
990
  attempts.callInFlight = true;
999
- const reasoning = this.#reasoningObserver(args, request.turnId, modelCall);
991
+ const reasoning = this.#reasoningObserver(args, request, modelCall);
1000
992
  let completedResponse;
1001
993
  try {
1002
- completedResponse = await this.#generate(args, request, attempts, modelCall, reasoning, strikeStreak);
994
+ completedResponse = await this.#generate(args, request, attempts, modelCall, reasoning);
1003
995
  }
1004
996
  catch (error) {
1005
997
  if (error instanceof ProviderError
@@ -1037,7 +1029,7 @@ export default class TurnRunner {
1037
1029
  // {§notifications-reasoning-event} — only the parent emission is observed;
1038
1030
  // BARE has no observer on its isolated calls. Reasoning deltas cite the physical
1039
1031
  // request they stream in; a new request or the call's end closes the open span.
1040
- #reasoningObserver({ workspaceId, workerId, loopId }, turnId, modelCall) {
1032
+ #reasoningObserver({ workspaceId, workerId, loopId }, { turnId, loopSeq, seq: turnSeq }, modelCall) {
1041
1033
  let reasoningStarted = false;
1042
1034
  let reasoningRequestSequence = 0;
1043
1035
  const end = () => {
@@ -1047,6 +1039,8 @@ export default class TurnRunner {
1047
1039
  workerId,
1048
1040
  loopId,
1049
1041
  turnId,
1042
+ loopSeq,
1043
+ turnSeq,
1050
1044
  modelCallId: modelCall.id,
1051
1045
  requestSequence: reasoningRequestSequence,
1052
1046
  phase: "end",
@@ -1071,6 +1065,8 @@ export default class TurnRunner {
1071
1065
  workerId,
1072
1066
  loopId,
1073
1067
  turnId,
1068
+ loopSeq,
1069
+ turnSeq,
1074
1070
  modelCallId: modelCall.id,
1075
1071
  requestSequence: reasoningRequestSequence,
1076
1072
  phase: "start",
@@ -1080,6 +1076,8 @@ export default class TurnRunner {
1080
1076
  workerId,
1081
1077
  loopId,
1082
1078
  turnId,
1079
+ loopSeq,
1080
+ turnSeq,
1083
1081
  modelCallId: modelCall.id,
1084
1082
  requestSequence: reasoningRequestSequence,
1085
1083
  phase: "content",
@@ -1091,7 +1089,7 @@ export default class TurnRunner {
1091
1089
  // The exchange under its GenAI span: the packet's observations are recorded, the
1092
1090
  // provider generates against the wire request, and the call's accounting is
1093
1091
  // asserted whether it resolved or failed.
1094
- async #generate({ provider, workspaceId }, request, attempts, modelCall, reasoning, strikeStreak) {
1092
+ async #generate({ provider, workspaceId }, request, attempts, modelCall, reasoning) {
1095
1093
  return await observed(// {§observability-boundary}
1096
1094
  genAiRequestName(provider.model), { model: provider.model, attempt: attempts.modelCallSequence }, async (span) => {
1097
1095
  try {
@@ -1413,7 +1411,7 @@ export default class TurnRunner {
1413
1411
  model: callMetadata.model,
1414
1412
  // Opaque provider metadata plus the grammar transport key.
1415
1413
  // {§meta-passthrough}, {§operator-grammar}
1416
- meta: JSON.stringify({ ...(response.meta ?? {}), ...(railKeys ?? {}) }),
1414
+ meta: JSON.stringify({ ...response.meta, ...railKeys }),
1417
1415
  },
1418
1416
  });
1419
1417
  }
@@ -1526,111 +1524,14 @@ export default class TurnRunner {
1526
1524
  }
1527
1525
  #splitResponse(response, executors = [], wellFormed) {
1528
1526
  const { assistant } = response;
1529
- const preParsedOps = assistant.ops;
1530
- const ops = [];
1531
- const parseErrors = [];
1532
- let contentStatementCount = 0;
1533
- let hasUnparsedTail = false;
1534
- let operationOmitted = false;
1535
- const parseNotices = [];
1536
- const fabrications = [];
1537
- const outside = [];
1538
- if (preParsedOps !== undefined) {
1539
- ops.push(...preParsedOps);
1540
- contentStatementCount = preParsedOps.length;
1541
- }
1542
- else {
1543
- // {§observability-boundary} — the parse is observed without its input;
1544
- // only the resulting statement count is attributable.
1545
- const parsed = observedSync("contracts.parse", {}, (span) => {
1546
- // {§executor-heading}: explicit invocations parse without registration; available names
1547
- // also admit slotless headings. Dispatch resolves the then-current workspace registry.
1548
- const result = PlurnkParser.parse(assistant.content, { executors, ...(wellFormed === undefined ? {} : { wellFormed }) });
1549
- span.setAttribute("statements", result.items.filter((item) => item.kind === "statement").length);
1550
- return result;
1551
- });
1552
- // {§outside-text}: beside a fenced operation, the text between two operations is one NOTE at its
1553
- // position, annotation the model wrote without its fence; a turn that fenced no operation keeps
1554
- // its text as its outside source and stays an empty turn ({§empty-turn}). Echoed emission
1555
- // headings are announcements, not annotation, and are dropped ({§fabricated-log-entry}).
1556
- const fenced = parsed.items.filter((item) => item.kind === "statement").length;
1557
- let span = null;
1558
- const flushSpan = () => {
1559
- if (span === null)
1560
- return;
1561
- const body = span.body.join("\n\n");
1562
- if (body.length > 0) {
1563
- if (fenced > 0) {
1564
- ops.push({ op: "NOTE", aside: null, metadata: null, target: null, lineMarker: null, body, position: span.position });
1565
- contentStatementCount += 1;
1566
- }
1567
- else
1568
- outside.push(body);
1569
- }
1570
- span = null;
1527
+ // A scripted provider's pre-parsed statements, each proven against the statement schema.
1528
+ const preParsedOps = "ops" in assistant && Array.isArray(assistant.ops) ? assistant.ops.map((op) => Validator.assertPlurnkStatement(op)) : undefined;
1529
+ const { ops, contentStatementCount, parseErrors, parseNotices, fabrications, outside, hasUnparsedTail, operationOmitted } = preParsedOps === undefined
1530
+ ? TurnRunner.#parseContent(assistant.content, executors, wellFormed)
1531
+ : {
1532
+ ops: [...preParsedOps], contentStatementCount: preParsedOps.length, parseErrors: [], parseNotices: [], fabrications: [],
1533
+ outside: [], hasUnparsedTail: false, operationOmitted: false,
1571
1534
  };
1572
- for (const item of parsed.items) {
1573
- if (item.kind !== "text")
1574
- flushSpan();
1575
- if (item.kind === "statement") {
1576
- ops.push(item.statement);
1577
- contentStatementCount += 1;
1578
- }
1579
- else if (item.kind === "text") {
1580
- // {§fabricated-log-entry}: a log-entry heading in outside text rejects the attempt.
1581
- const fabricated = FabricatedLog.find(item.content);
1582
- if (fabricated !== null) {
1583
- fabrications.push({ message: FabricatedLog.message(fabricated.heading), line: item.position.line + fabricated.line, column: 1, source: "harness" });
1584
- continue;
1585
- }
1586
- const body = FabricatedLog.stripEchoes(item.content);
1587
- if (body.length === 0)
1588
- continue;
1589
- span ??= { body: [], position: item.position };
1590
- span.body.push(body);
1591
- }
1592
- else if (item.kind === "error") {
1593
- const err = item.error;
1594
- if (err instanceof PlurnkParseError) {
1595
- operationOmitted ||= err.operationOmitted;
1596
- if (err.severity === "warning") {
1597
- parseNotices.push({
1598
- source: "grammar",
1599
- kind: "parse_advisory",
1600
- level: "warn",
1601
- directive: DIRECTIVE.advisory,
1602
- message: err.message,
1603
- position: {
1604
- type: "content-offset",
1605
- line: err.line,
1606
- column: err.column,
1607
- },
1608
- parserSource: err.source,
1609
- });
1610
- }
1611
- else {
1612
- parseErrors.push({ message: err.message, line: err.line, column: err.column, source: err.source,
1613
- ...(err.recovery === undefined ? {} : { recovery: err.recovery }),
1614
- ...(item.attempt === undefined ? {} : { attempt: item.attempt }) });
1615
- }
1616
- }
1617
- else {
1618
- const msg = err?.message ?? "parse error";
1619
- parseErrors.push({ message: msg, line: 0, column: 0, source: "parser" });
1620
- }
1621
- }
1622
- }
1623
- flushSpan();
1624
- // {§unparsed-tail-boundary} — the lexer's one boundary fact: from `unparsedTail.from` on,
1625
- // nothing was read. The statements that closed before it are ordinary facts and run; the
1626
- // loss itself is one more hard diagnostic, a failed row the model sees. An emission that
1627
- // lost its boundary before any statement closed has nothing admissible and is resampled.
1628
- const tail = parsed.unparsedTail;
1629
- if (tail !== undefined) {
1630
- hasUnparsedTail = true;
1631
- parseErrors.push({ message: tail.reason, line: tail.from.line, column: tail.from.column, source: "grammar" });
1632
- }
1633
- }
1634
1535
  const reasoning = assistant.reasoning ?? null;
1635
1536
  const reasoningOps = reasoning === null ? [] : PlurnkParser.parseReasoningOperations(reasoning, (warning) => {
1636
1537
  parseNotices.push({
@@ -1679,6 +1580,115 @@ export default class TurnRunner {
1679
1580
  emissionStatements,
1680
1581
  };
1681
1582
  }
1583
+ // {§outside-text} {§fabricated-log-entry} {§unparsed-tail-boundary} An emission's content parsed into its
1584
+ // statements and what sat beside them: outside text as NOTEs or the empty turn's source, a fabricated log
1585
+ // heading as the rejection it is, each parse error by its severity, and the lexer's one boundary fact.
1586
+ static #parseContent(content, executors, wellFormed) {
1587
+ const ops = [];
1588
+ const parseErrors = [];
1589
+ let contentStatementCount = 0;
1590
+ let hasUnparsedTail = false;
1591
+ let operationOmitted = false;
1592
+ const parseNotices = [];
1593
+ const fabrications = [];
1594
+ const outside = [];
1595
+ // {§observability-boundary} — the parse is observed without its input;
1596
+ // only the resulting statement count is attributable.
1597
+ const parsed = observedSync("contracts.parse", {}, (span) => {
1598
+ // {§executor-heading}: explicit invocations parse without registration; available names
1599
+ // also admit slotless headings. Dispatch resolves the then-current workspace registry.
1600
+ const result = PlurnkParser.parse(content, { executors, ...(wellFormed === undefined ? {} : { wellFormed }) });
1601
+ span.setAttribute("statements", result.items.filter((item) => item.kind === "statement").length);
1602
+ return result;
1603
+ });
1604
+ // {§outside-text}: beside a fenced operation, the text between two operations is one NOTE at its
1605
+ // position, annotation the model wrote without its fence; a turn that fenced no operation keeps
1606
+ // its text as its outside source and stays an empty turn ({§empty-turn}). Echoed emission
1607
+ // headings are announcements, not annotation, and are dropped ({§fabricated-log-entry}).
1608
+ const fenced = parsed.items.filter((item) => item.kind === "statement").length;
1609
+ let span = null;
1610
+ const flushSpan = () => {
1611
+ if (span === null)
1612
+ return;
1613
+ const body = span.body.join("\n\n");
1614
+ if (body.length > 0) {
1615
+ if (fenced > 0) {
1616
+ ops.push({ op: "NOTE", aside: null, metadata: null, target: null, lineMarker: null, body, position: span.position });
1617
+ contentStatementCount += 1;
1618
+ }
1619
+ else
1620
+ outside.push(body);
1621
+ }
1622
+ span = null;
1623
+ };
1624
+ for (const item of parsed.items) {
1625
+ if (item.kind !== "text")
1626
+ flushSpan();
1627
+ if (item.kind === "statement") {
1628
+ ops.push(item.statement);
1629
+ contentStatementCount += 1;
1630
+ }
1631
+ else if (item.kind === "text") {
1632
+ // {§fabricated-log-entry}: a log-entry heading in outside text rejects the attempt.
1633
+ const fabricated = FabricatedLog.find(item.content);
1634
+ if (fabricated !== null) {
1635
+ fabrications.push({ message: FabricatedLog.message(fabricated.heading), line: item.position.line + fabricated.line, column: 1, source: "harness" });
1636
+ continue;
1637
+ }
1638
+ const body = FabricatedLog.stripEchoes(item.content);
1639
+ if (body.length === 0)
1640
+ continue;
1641
+ span ??= { body: [], position: item.position };
1642
+ span.body.push(body);
1643
+ }
1644
+ else if (item.kind === "error") {
1645
+ operationOmitted ||= TurnRunner.#admitParseError(item, parseErrors, parseNotices);
1646
+ }
1647
+ }
1648
+ flushSpan();
1649
+ // {§unparsed-tail-boundary} — the lexer's one boundary fact: from `unparsedTail.from` on,
1650
+ // nothing was read. The statements that closed before it are ordinary facts and run; the
1651
+ // loss itself is one more hard diagnostic, a failed row the model sees. An emission that
1652
+ // lost its boundary before any statement closed has nothing admissible and is resampled.
1653
+ const tail = parsed.unparsedTail;
1654
+ if (tail !== undefined) {
1655
+ hasUnparsedTail = true;
1656
+ parseErrors.push({ message: tail.reason, line: tail.from.line, column: tail.from.column, source: "grammar" });
1657
+ }
1658
+ return { ops, contentStatementCount, parseErrors, parseNotices, fabrications, outside, hasUnparsedTail, operationOmitted };
1659
+ }
1660
+ // One parse error by its severity: an advisory is a grammar Notice beside the turn; an error is a diagnostic
1661
+ // the model sees, with its recovery and the attempt it came from. Returns whether an operation was omitted.
1662
+ static #admitParseError(item, parseErrors, parseNotices) {
1663
+ const err = item.error;
1664
+ if (err instanceof PlurnkParseError) {
1665
+ if (err.severity === "warning") {
1666
+ parseNotices.push({
1667
+ source: "grammar",
1668
+ kind: "parse_advisory",
1669
+ level: "warn",
1670
+ directive: DIRECTIVE.advisory,
1671
+ message: err.message,
1672
+ position: {
1673
+ type: "content-offset",
1674
+ line: err.line,
1675
+ column: err.column,
1676
+ },
1677
+ parserSource: err.source,
1678
+ });
1679
+ }
1680
+ else {
1681
+ parseErrors.push({ message: err.message, line: err.line, column: err.column, source: err.source,
1682
+ ...(err.recovery === undefined ? {} : { recovery: err.recovery }),
1683
+ ...(item.attempt === undefined ? {} : { attempt: item.attempt }) });
1684
+ }
1685
+ }
1686
+ else {
1687
+ const msg = err?.message ?? "parse error";
1688
+ parseErrors.push({ message: msg, line: 0, column: 0, source: "parser" });
1689
+ }
1690
+ return err instanceof PlurnkParseError && err.operationOmitted;
1691
+ }
1682
1692
  // #note12 — extension reference docs are materialized beneath
1683
1693
  // worker:///_plurnk/plurnk/ by LoopDocs.
1684
1694
  // {§exec-lifetime} — a `"turn"` lifetime: abort the worker's open turn-scoped streams via their