@plurnk/plurnk-service 3.2.0 → 4.0.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 (328) hide show
  1. package/.env.defaults +3 -3
  2. package/INSTALL.md +6 -0
  3. package/README.md +2 -2
  4. package/SPEC.md +489 -186
  5. package/dist/build-info.json +1 -1
  6. package/dist/completions/_plurnk-service +1 -1
  7. package/dist/completions/plurnk-service.bash +1 -1
  8. package/dist/completions/plurnk-service.fish +2 -0
  9. package/dist/content/read-projector.js +1 -1
  10. package/dist/content/read-projector.js.map +1 -1
  11. package/dist/core/AdministrativeLoop.d.ts +1 -1
  12. package/dist/core/AdministrativeLoop.d.ts.map +1 -1
  13. package/dist/core/AdministrativeLoop.js +4 -1
  14. package/dist/core/AdministrativeLoop.js.map +1 -1
  15. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  16. package/dist/core/AdmittedTurnExecutor.js +8 -0
  17. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  18. package/dist/core/BareBatchRunner.js +2 -1
  19. package/dist/core/BareBatchRunner.js.map +1 -1
  20. package/dist/core/BudgetReadout.d.ts +1 -3
  21. package/dist/core/BudgetReadout.d.ts.map +1 -1
  22. package/dist/core/BudgetReadout.js +43 -46
  23. package/dist/core/BudgetReadout.js.map +1 -1
  24. package/dist/core/ChannelWrite.d.ts +10 -0
  25. package/dist/core/ChannelWrite.d.ts.map +1 -1
  26. package/dist/core/ChannelWrite.js +10 -0
  27. package/dist/core/ChannelWrite.js.map +1 -1
  28. package/dist/core/ChannelWrite.sql +14 -2
  29. package/dist/core/ClientInteractions.d.ts.map +1 -1
  30. package/dist/core/ClientInteractions.js +2 -1
  31. package/dist/core/ClientInteractions.js.map +1 -1
  32. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  33. package/dist/core/CoreSchemeServices.js +6 -0
  34. package/dist/core/CoreSchemeServices.js.map +1 -1
  35. package/dist/core/DataStatementRunner.js +4 -6
  36. package/dist/core/DataStatementRunner.js.map +1 -1
  37. package/dist/core/Dispatcher.d.ts +3 -7
  38. package/dist/core/Dispatcher.d.ts.map +1 -1
  39. package/dist/core/Dispatcher.js +53 -73
  40. package/dist/core/Dispatcher.js.map +1 -1
  41. package/dist/core/Dispatcher.sql +2 -2
  42. package/dist/core/EditMutations.js +1 -0
  43. package/dist/core/EditMutations.js.map +1 -1
  44. package/dist/core/Engine.d.ts +8 -14
  45. package/dist/core/Engine.d.ts.map +1 -1
  46. package/dist/core/Engine.js +22 -24
  47. package/dist/core/Engine.js.map +1 -1
  48. package/dist/core/Engine.sql +6 -6
  49. package/dist/core/ExecutorRegistry.d.ts +0 -5
  50. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  51. package/dist/core/ExecutorRegistry.js +10 -18
  52. package/dist/core/ExecutorRegistry.js.map +1 -1
  53. package/dist/core/FileAddress.js +1 -1
  54. package/dist/core/FileAddress.js.map +1 -1
  55. package/dist/core/FilePublication.js +10 -74
  56. package/dist/core/FilePublication.js.map +1 -1
  57. package/dist/core/FileSnapshot.js +36 -100
  58. package/dist/core/FileSnapshot.js.map +1 -1
  59. package/dist/core/HostPaths.d.ts +1 -0
  60. package/dist/core/HostPaths.d.ts.map +1 -1
  61. package/dist/core/HostPaths.js +11 -1
  62. package/dist/core/HostPaths.js.map +1 -1
  63. package/dist/core/KillHandler.js +3 -1
  64. package/dist/core/KillHandler.js.map +1 -1
  65. package/dist/core/LiveSubscription.js +1 -1
  66. package/dist/core/LiveSubscription.js.map +1 -1
  67. package/dist/core/LogBody.js +1 -1
  68. package/dist/core/LogBody.js.map +1 -1
  69. package/dist/core/LogWriter.js +1 -1
  70. package/dist/core/LogWriter.js.map +1 -1
  71. package/dist/core/LoopDriver.d.ts +3 -3
  72. package/dist/core/LoopDriver.d.ts.map +1 -1
  73. package/dist/core/LoopDriver.js +15 -13
  74. package/dist/core/LoopDriver.js.map +1 -1
  75. package/dist/core/LoopLifecycle.d.ts +5 -0
  76. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  77. package/dist/core/LoopLifecycle.js +14 -1
  78. package/dist/core/LoopLifecycle.js.map +1 -1
  79. package/dist/core/LoopLifecycle.sql +11 -2
  80. package/dist/core/MembershipMaterialization.js +2 -2
  81. package/dist/core/MembershipMaterialization.js.map +1 -1
  82. package/dist/core/MessageResources.d.ts +3 -0
  83. package/dist/core/MessageResources.d.ts.map +1 -1
  84. package/dist/core/MessageResources.js +15 -1
  85. package/dist/core/MessageResources.js.map +1 -1
  86. package/dist/core/OperatorConfig.d.ts +1 -2
  87. package/dist/core/OperatorConfig.d.ts.map +1 -1
  88. package/dist/core/OperatorConfig.js +26 -92
  89. package/dist/core/OperatorConfig.js.map +1 -1
  90. package/dist/core/PacketBuilder.d.ts.map +1 -1
  91. package/dist/core/PacketBuilder.js +21 -18
  92. package/dist/core/PacketBuilder.js.map +1 -1
  93. package/dist/core/PacketBuilder.sql +18 -5
  94. package/dist/core/ProblemLog.d.ts +1 -0
  95. package/dist/core/ProblemLog.d.ts.map +1 -1
  96. package/dist/core/ProblemLog.js +2 -2
  97. package/dist/core/ProblemLog.js.map +1 -1
  98. package/dist/core/ProposalLifecycle.d.ts +1 -0
  99. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  100. package/dist/core/ProposalLifecycle.js +14 -8
  101. package/dist/core/ProposalLifecycle.js.map +1 -1
  102. package/dist/core/ProposalPolicies.d.ts +4 -1
  103. package/dist/core/ProposalPolicies.d.ts.map +1 -1
  104. package/dist/core/ProposalPolicies.js +5 -2
  105. package/dist/core/ProposalPolicies.js.map +1 -1
  106. package/dist/core/ResourceMutations.js +2 -0
  107. package/dist/core/ResourceMutations.js.map +1 -1
  108. package/dist/core/ResourceSelector.js +1 -1
  109. package/dist/core/ResourceSelector.js.map +1 -1
  110. package/dist/core/SchemeRegistry.js +1 -1
  111. package/dist/core/SchemeRegistry.js.map +1 -1
  112. package/dist/core/ServiceHelp.js +1 -1
  113. package/dist/core/ServiceHelp.js.map +1 -1
  114. package/dist/core/ServiceTeardown.js +9 -12
  115. package/dist/core/ServiceTeardown.js.map +1 -1
  116. package/dist/core/StrikeRail.d.ts +2 -1
  117. package/dist/core/StrikeRail.d.ts.map +1 -1
  118. package/dist/core/StrikeRail.js +11 -6
  119. package/dist/core/StrikeRail.js.map +1 -1
  120. package/dist/core/TerminalResult.js +1 -1
  121. package/dist/core/TerminalResult.js.map +1 -1
  122. package/dist/core/TurnDispositionHandler.d.ts +1 -1
  123. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  124. package/dist/core/TurnDispositionHandler.js +8 -5
  125. package/dist/core/TurnDispositionHandler.js.map +1 -1
  126. package/dist/core/TurnMaterialization.js +6 -4
  127. package/dist/core/TurnMaterialization.js.map +1 -1
  128. package/dist/core/TurnMaterialization.sql +1 -1
  129. package/dist/core/TurnOps.js +1 -0
  130. package/dist/core/TurnOps.js.map +1 -1
  131. package/dist/core/TurnRunner.d.ts +4 -2
  132. package/dist/core/TurnRunner.d.ts.map +1 -1
  133. package/dist/core/TurnRunner.js +63 -51
  134. package/dist/core/TurnRunner.js.map +1 -1
  135. package/dist/core/WorkerControlHandler.d.ts +2 -0
  136. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  137. package/dist/core/WorkerControlHandler.js +84 -16
  138. package/dist/core/WorkerControlHandler.js.map +1 -1
  139. package/dist/core/WorkerName.d.ts +0 -4
  140. package/dist/core/WorkerName.d.ts.map +1 -1
  141. package/dist/core/WorkerName.js +5 -30
  142. package/dist/core/WorkerName.js.map +1 -1
  143. package/dist/core/WorkerName.sql +4 -20
  144. package/dist/core/WorkerOwners.d.ts +1 -0
  145. package/dist/core/WorkerOwners.d.ts.map +1 -1
  146. package/dist/core/WorkerOwners.js +6 -0
  147. package/dist/core/WorkerOwners.js.map +1 -1
  148. package/dist/core/WorkerOwners.sql +7 -0
  149. package/dist/core/WorkspaceGate.d.ts +3 -1
  150. package/dist/core/WorkspaceGate.d.ts.map +1 -1
  151. package/dist/core/WorkspaceGate.js +59 -10
  152. package/dist/core/WorkspaceGate.js.map +1 -1
  153. package/dist/core/caps/SchemeCtxImpl.d.ts +3 -0
  154. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  155. package/dist/core/caps/SchemeCtxImpl.js +14 -0
  156. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  157. package/dist/core/env-catalog.js +1 -1
  158. package/dist/core/env-catalog.js.map +1 -1
  159. package/dist/core/fork.js +1 -1
  160. package/dist/core/fork.js.map +1 -1
  161. package/dist/core/fork.sql +7 -6
  162. package/dist/core/mutation-types.d.ts +1 -0
  163. package/dist/core/mutation-types.d.ts.map +1 -1
  164. package/dist/core/mutation-types.js +4 -1
  165. package/dist/core/mutation-types.js.map +1 -1
  166. package/dist/core/namespace.js +1 -1
  167. package/dist/core/namespace.js.map +1 -1
  168. package/dist/core/packet-wire.d.ts +1 -1
  169. package/dist/core/packet-wire.d.ts.map +1 -1
  170. package/dist/core/packet-wire.js +24 -15
  171. package/dist/core/packet-wire.js.map +1 -1
  172. package/dist/core/plurnk-uri.d.ts +1 -1
  173. package/dist/core/plurnk-uri.d.ts.map +1 -1
  174. package/dist/core/plurnk-uri.js +1 -1
  175. package/dist/core/plurnk-uri.js.map +1 -1
  176. package/dist/core/scheme-types.d.ts +5 -0
  177. package/dist/core/scheme-types.d.ts.map +1 -1
  178. package/dist/core/turn-signals.d.ts +4 -0
  179. package/dist/core/turn-signals.d.ts.map +1 -1
  180. package/dist/core/turn-signals.js +1 -0
  181. package/dist/core/turn-signals.js.map +1 -1
  182. package/dist/core/workspace-settings.js +1 -1
  183. package/dist/core/workspace-settings.js.map +1 -1
  184. package/dist/evidence/EvidenceReader.js +5 -5
  185. package/dist/evidence/EvidenceReader.js.map +1 -1
  186. package/dist/man/plurnk-service.1 +27 -6
  187. package/dist/schemes/Env.d.ts +7 -3
  188. package/dist/schemes/Env.d.ts.map +1 -1
  189. package/dist/schemes/Env.js +12 -6
  190. package/dist/schemes/Env.js.map +1 -1
  191. package/dist/schemes/Exec.d.ts.map +1 -1
  192. package/dist/schemes/Exec.js +37 -25
  193. package/dist/schemes/Exec.js.map +1 -1
  194. package/dist/schemes/ExecOutputScheme.js +3 -3
  195. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  196. package/dist/schemes/ExecutionInput.d.ts +2 -1
  197. package/dist/schemes/ExecutionInput.d.ts.map +1 -1
  198. package/dist/schemes/ExecutionInput.js +45 -7
  199. package/dist/schemes/ExecutionInput.js.map +1 -1
  200. package/dist/schemes/File.d.ts.map +1 -1
  201. package/dist/schemes/File.js +32 -23
  202. package/dist/schemes/File.js.map +1 -1
  203. package/dist/schemes/Log.d.ts.map +1 -1
  204. package/dist/schemes/Log.js +23 -5
  205. package/dist/schemes/Log.js.map +1 -1
  206. package/dist/schemes/Log.sql +24 -1
  207. package/dist/schemes/ResourceTreeScheme.js +2 -5
  208. package/dist/schemes/ResourceTreeScheme.js.map +1 -1
  209. package/dist/schemes/TurnSource.js +1 -1
  210. package/dist/schemes/TurnSource.js.map +1 -1
  211. package/dist/schemes/Worker.d.ts.map +1 -1
  212. package/dist/schemes/Worker.js +10 -3
  213. package/dist/schemes/Worker.js.map +1 -1
  214. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  215. package/dist/schemes/_entry-crud.js +2 -4
  216. package/dist/schemes/_entry-crud.js.map +1 -1
  217. package/dist/schemes/_entry-crud.sql +5 -3
  218. package/dist/schemes/_entry-find.js +3 -3
  219. package/dist/schemes/_entry-find.js.map +1 -1
  220. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  221. package/dist/schemes/_entry-manifest.js +3 -3
  222. package/dist/schemes/_entry-manifest.js.map +1 -1
  223. package/dist/schemes/_entry-manifest.sql +2 -0
  224. package/dist/schemes/_entry-ops.js +1 -1
  225. package/dist/schemes/_entry-ops.js.map +1 -1
  226. package/dist/schemes/_entry-send.js +1 -1
  227. package/dist/schemes/_entry-send.js.map +1 -1
  228. package/dist/server/ClientReads.d.ts +1 -0
  229. package/dist/server/ClientReads.d.ts.map +1 -1
  230. package/dist/server/ClientReads.js +7 -2
  231. package/dist/server/ClientReads.js.map +1 -1
  232. package/dist/server/Credentials.d.ts +48 -0
  233. package/dist/server/Credentials.d.ts.map +1 -0
  234. package/dist/server/Credentials.js +203 -0
  235. package/dist/server/Credentials.js.map +1 -0
  236. package/dist/server/Daemon.d.ts +44 -39
  237. package/dist/server/Daemon.d.ts.map +1 -1
  238. package/dist/server/Daemon.js +287 -172
  239. package/dist/server/Daemon.js.map +1 -1
  240. package/dist/server/DrainSupervisor.d.ts +8 -3
  241. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  242. package/dist/server/DrainSupervisor.js +44 -32
  243. package/dist/server/DrainSupervisor.js.map +1 -1
  244. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  245. package/dist/server/EnvFunctionality.js +2 -1
  246. package/dist/server/EnvFunctionality.js.map +1 -1
  247. package/dist/server/Functionality.d.ts +4 -2
  248. package/dist/server/Functionality.d.ts.map +1 -1
  249. package/dist/server/Functionality.js +192 -96
  250. package/dist/server/Functionality.js.map +1 -1
  251. package/dist/server/FunctionalityManager.d.ts +1 -4
  252. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  253. package/dist/server/FunctionalityManager.js +6 -6
  254. package/dist/server/FunctionalityManager.js.map +1 -1
  255. package/dist/server/HttpListener.d.ts +1 -1
  256. package/dist/server/HttpListener.d.ts.map +1 -1
  257. package/dist/server/HttpListener.js.map +1 -1
  258. package/dist/server/MembersFunctionality.d.ts +7 -8
  259. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  260. package/dist/server/MembersFunctionality.js +90 -56
  261. package/dist/server/MembersFunctionality.js.map +1 -1
  262. package/dist/server/MessageAbandonment.d.ts +7 -0
  263. package/dist/server/MessageAbandonment.d.ts.map +1 -0
  264. package/dist/server/MessageAbandonment.js +57 -0
  265. package/dist/server/MessageAbandonment.js.map +1 -0
  266. package/dist/server/ModuleHost.d.ts +2 -1
  267. package/dist/server/ModuleHost.d.ts.map +1 -1
  268. package/dist/server/PlurnkSkill.js +4 -7
  269. package/dist/server/PlurnkSkill.js.map +1 -1
  270. package/dist/server/Rollback.d.ts +29 -0
  271. package/dist/server/Rollback.d.ts.map +1 -0
  272. package/dist/server/Rollback.js +111 -0
  273. package/dist/server/Rollback.js.map +1 -0
  274. package/dist/server/WorkerModelResolver.js +1 -0
  275. package/dist/server/WorkerModelResolver.js.map +1 -1
  276. package/dist/server/WorkerReferences.d.ts +14 -0
  277. package/dist/server/WorkerReferences.d.ts.map +1 -0
  278. package/dist/server/WorkerReferences.js +24 -0
  279. package/dist/server/WorkerReferences.js.map +1 -0
  280. package/dist/server/WorkerReferences.sql +31 -0
  281. package/dist/server/WorkspaceCapabilities.d.ts +2 -0
  282. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -1
  283. package/dist/server/WorkspaceCapabilities.js +35 -18
  284. package/dist/server/WorkspaceCapabilities.js.map +1 -1
  285. package/dist/server/WorkspacePlugins.js +1 -0
  286. package/dist/server/WorkspacePlugins.js.map +1 -1
  287. package/dist/server/WorkspaceResidency.d.ts +3 -1
  288. package/dist/server/WorkspaceResidency.d.ts.map +1 -1
  289. package/dist/server/WorkspaceResidency.js +12 -5
  290. package/dist/server/WorkspaceResidency.js.map +1 -1
  291. package/dist/server/client-input.d.ts +2 -0
  292. package/dist/server/client-input.d.ts.map +1 -1
  293. package/dist/server/client-input.js +28 -0
  294. package/dist/server/client-input.js.map +1 -1
  295. package/dist/server/drain.sql +46 -40
  296. package/dist/server/envelope.d.ts +5 -9
  297. package/dist/server/envelope.d.ts.map +1 -1
  298. package/dist/server/envelope.js +21 -84
  299. package/dist/server/envelope.js.map +1 -1
  300. package/dist/server/envelope.sql +17 -17
  301. package/dist/server/lifecycle-recovery.sql +5 -15
  302. package/dist/server/logEntry.d.ts.map +1 -1
  303. package/dist/server/logEntry.js +6 -0
  304. package/dist/server/logEntry.js.map +1 -1
  305. package/dist/server/logEntry.sql +94 -6
  306. package/dist/server/module-discovery.d.ts +1 -1
  307. package/dist/server/module-discovery.d.ts.map +1 -1
  308. package/dist/server/module-discovery.js +1 -0
  309. package/dist/server/module-discovery.js.map +1 -1
  310. package/dist/server/seam-loop.sql +15 -7
  311. package/dist/server/seam-proposal-list.sql +10 -4
  312. package/dist/service.d.ts.map +1 -1
  313. package/dist/service.js +7 -1
  314. package/dist/service.js.map +1 -1
  315. package/docs/members.md +20 -13
  316. package/migrations/002_workers.sql +2 -2
  317. package/migrations/006_log.sql +1 -1
  318. package/migrations/018_worker_owners.sql +1 -1
  319. package/migrations/026_message_obligations.sql +32 -0
  320. package/migrations/027_members_identity.sql +20 -0
  321. package/migrations/028_mutation_patch.sql +20 -0
  322. package/migrations/029_default_worker.sql +9 -0
  323. package/migrations/030_client_workers.sql +105 -0
  324. package/migrations/031_message_openers.sql +83 -0
  325. package/migrations/032_worker_references.sql +29 -0
  326. package/package.json +24 -24
  327. package/plurnk.nginx.conf +71 -0
  328. package/plurnk.service +2 -0
@@ -1,4 +1,3 @@
1
- var _a;
2
1
  import { parsePath } from "@plurnk/plurnk-parser";
3
2
  import { ConfigurationError, Knob } from "@plurnk/plurnk-meta";
4
3
  import { TurnDisposition, UNKNOWN_POSITION } from "@plurnk/plurnk-contracts";
@@ -10,6 +9,7 @@ import Namespace from "./namespace.js";
10
9
  import FileAddress from "./FileAddress.js";
11
10
  import CapabilityResolver from "./CapabilityResolver.js";
12
11
  import SchemeCtxImpl from "./caps/SchemeCtxImpl.js";
12
+ import LoopLifecycle from "./LoopLifecycle.js";
13
13
  import Results from "./results.js";
14
14
  import { OperationFailureError } from "./results.js";
15
15
  import EffectPolicy from "../schemes/EffectPolicy.js";
@@ -22,14 +22,14 @@ import LogBody from "./LogBody.js";
22
22
  import BodyPreview from "../content/body-preview.js";
23
23
  import ReadResolve from "../content/read-resolve.js";
24
24
  import LogVisibility from "./LogVisibility.js";
25
- import PacketWire from "./packet-wire.js";
25
+ import PacketWire, {} from "./packet-wire.js";
26
26
  import { isContextReceipt, reserved, resultPrefix, resultSize, unfitResult } from "./ContextFit.js";
27
27
  import { TextCoordinates } from "@plurnk/plurnk-mimetypes";
28
- import EntryAddressBinding from "./EntryAddressBinding.js";
28
+ import EntryAddressBinding, {} from "./EntryAddressBinding.js";
29
29
  import WorkerControlHandler from "./WorkerControlHandler.js";
30
30
  import WorkerControlAddress from "./WorkerControlAddress.js";
31
31
  import KillHandler from "./KillHandler.js";
32
- import TurnDispositionHandler from "./TurnDispositionHandler.js";
32
+ import TurnDispositionHandler, {} from "./TurnDispositionHandler.js";
33
33
  import ReplyMetadata from "./ReplyMetadata.js";
34
34
  import LogWriter from "./LogWriter.js";
35
35
  import LogEntryProjection from "./LogEntryProjection.js";
@@ -42,7 +42,7 @@ import { isExecution } from "@plurnk/plurnk-contracts";
42
42
  const MUTATING_OPS = new Set(["EDIT", "SEND", "COPY", "MOVE", "KILL", "FORK", "WORK"]);
43
43
  // Op dispatch ({§op-methods-op-dispatch}): admission, operation-owner routing,
44
44
  // durable log writing, and proposal lifecycle.
45
- class Dispatcher {
45
+ export default class Dispatcher {
46
46
  static #failure(code, status, detail, fields = {}, extensions = {}) {
47
47
  return Results.failure("engine:dispatcher", code, status, detail, fields, extensions);
48
48
  }
@@ -110,11 +110,11 @@ class Dispatcher {
110
110
  deleteChannel: (scheme, address, channel, ctx) => this.#deleteChannel(scheme, address, channel, ctx),
111
111
  applyProposal: (statement, result, resolution, ids) => this.#proposals.workerApply(statement, result, resolution, ids),
112
112
  });
113
- this.#workerControl = new WorkerControlHandler({ db: this.#db, failure: _a.#failure });
114
- this.#kill = new KillHandler({ db: this.#db, schemes: this.#schemes, liveSubscriptions: this.#liveSubscriptions, cancelWorker: this.#notify.cancelWorker, resolveDataEntryAddress: this.#resolveDataEntryAddress.bind(this), boundEntryContext: this.#boundEntryContext.bind(this), handlerContext: this.#handlerContext.bind(this), deleteEntry: this.#deleteEntry.bind(this), failure: _a.#failure });
113
+ this.#workerControl = new WorkerControlHandler({ db: this.#db, failure: Dispatcher.#failure });
114
+ this.#kill = new KillHandler({ db: this.#db, schemes: this.#schemes, liveSubscriptions: this.#liveSubscriptions, cancelWorker: this.#notify.cancelWorker, resolveDataEntryAddress: this.#resolveDataEntryAddress.bind(this), boundEntryContext: this.#boundEntryContext.bind(this), handlerContext: this.#handlerContext.bind(this), deleteEntry: this.#deleteEntry.bind(this), failure: Dispatcher.#failure });
115
115
  this.#disposition = new TurnDispositionHandler({ db: this.#db, lifecycle: this.#lifecycle, unobservedFailureCount: this.#unobservedFailureCount.bind(this), pendingSet: this.#pendingSet.bind(this), hasLiveWork: this.hasLiveWork.bind(this) });
116
- this.#logWriter = new LogWriter({ db: this.#db, weighContent: this.#weighContent, extractTarget: this.#extractTarget.bind(this), canonColumns: this.#canonColumns.bind(this), signalToJson: this.#signalToJson.bind(this), isProposal: _a.#isProposal });
117
- this.#dataRun = new DataStatementRunner({ schemes: this.#schemes, liveSubscriptions: this.#liveSubscriptions, resolveDataEntryAddress: this.#resolveDataEntryAddress.bind(this), prepareDataRepresentation: this.#prepareDataRepresentation.bind(this), failure: _a.#failure });
116
+ this.#logWriter = new LogWriter({ db: this.#db, weighContent: this.#weighContent, extractTarget: this.#extractTarget.bind(this), canonColumns: this.#canonColumns.bind(this), signalToJson: this.#signalToJson.bind(this), isProposal: Dispatcher.#isProposal });
117
+ this.#dataRun = new DataStatementRunner({ schemes: this.#schemes, liveSubscriptions: this.#liveSubscriptions, resolveDataEntryAddress: this.#resolveDataEntryAddress.bind(this), prepareDataRepresentation: this.#prepareDataRepresentation.bind(this), failure: Dispatcher.#failure });
118
118
  }
119
119
  // workspace → project_root, memoized: {§fs-namespace} fixes the root immutably at
120
120
  // workspace creation, so a process-lifetime cache can never go stale.
@@ -153,7 +153,7 @@ class Dispatcher {
153
153
  }
154
154
  const caps = handlerCtx?.entries;
155
155
  if (caps === undefined) {
156
- return _a.#failure("entry-read-not-implemented", 501, `The '${scheme}' scheme does not provide entry reads.`, { entry: null }, {
156
+ return Dispatcher.#failure("entry-read-not-implemented", 501, `The '${scheme}' scheme does not provide entry reads.`, { entry: null }, {
157
157
  stage: "entry-read",
158
158
  scheme,
159
159
  target: renderAddress(address),
@@ -183,7 +183,7 @@ class Dispatcher {
183
183
  }
184
184
  const caps = handlerCtx?.entries;
185
185
  if (caps === undefined) {
186
- return _a.#failure("entry-write-not-implemented", 501, `The '${scheme}' scheme does not provide entry writes.`, { created: false, entryId: null }, {
186
+ return Dispatcher.#failure("entry-write-not-implemented", 501, `The '${scheme}' scheme does not provide entry writes.`, { created: false, entryId: null }, {
187
187
  stage: "entry-write",
188
188
  scheme,
189
189
  target: renderAddress(address),
@@ -201,7 +201,7 @@ class Dispatcher {
201
201
  }
202
202
  const caps = handlerCtx?.entries;
203
203
  if (caps === undefined) {
204
- return _a.#failure("entry-delete-not-implemented", 501, `The '${scheme}' scheme does not provide entry deletion.`, {}, {
204
+ return Dispatcher.#failure("entry-delete-not-implemented", 501, `The '${scheme}' scheme does not provide entry deletion.`, {}, {
205
205
  stage: "entry-delete",
206
206
  scheme,
207
207
  target: renderAddress(address),
@@ -219,7 +219,7 @@ class Dispatcher {
219
219
  }
220
220
  const caps = handlerCtx?.entries;
221
221
  if (caps === undefined) {
222
- return _a.#failure("channel-delete-not-implemented", 501, `The '${scheme}' scheme does not provide channel deletion.`, {}, {
222
+ return Dispatcher.#failure("channel-delete-not-implemented", 501, `The '${scheme}' scheme does not provide channel deletion.`, {}, {
223
223
  stage: "channel-delete",
224
224
  scheme,
225
225
  target: renderAddress(address),
@@ -341,6 +341,8 @@ class Dispatcher {
341
341
  });
342
342
  }
343
343
  async #dispatch(context, targetsResolved = false) {
344
+ // {§op-execution-order}: resolved glob targets cross the same cancellation boundary.
345
+ this.#loopSignal(context.loopId)?.throwIfAborted();
344
346
  const execution = await ResourceBindings.using(this.#schemes, this.#buildSchemeCtx(context), (ctx) => this.#dispatchOne(context, ctx, targetsResolved));
345
347
  let { result } = execution;
346
348
  const edit = context.statement.op === "EDIT" ? context.statement : this.#scopedEntryEdits.get(context.statement);
@@ -354,7 +356,7 @@ class Dispatcher {
354
356
  // outcome: written after the kill's receipt at the next sequence, so it never falls inside the
355
357
  // kill's own selection, and kept when the kill misses, because what the model wrote about its
356
358
  // environment is the model's to retire, never the daemon's to drop.
357
- const distillation = _a.#distillationOf(context.statement);
359
+ const distillation = Dispatcher.#distillationOf(context.statement);
358
360
  if (distillation !== null) {
359
361
  const note = { op: "NOTE", aside: null, metadata: null, target: null, lineMarker: null, body: distillation, position: context.statement.position };
360
362
  this.#distillations.set(note, context.statement.target.raw);
@@ -414,12 +416,12 @@ class Dispatcher {
414
416
  }
415
417
  async #selectTargets(statement, ctx) {
416
418
  if (statement.op === "COPY" || statement.op === "MOVE") {
417
- if (![statement.source, statement.destination].some(({ target }) => _a.#globTarget(target)))
419
+ if (![statement.source, statement.destination].some(({ target }) => Dispatcher.#globTarget(target)))
418
420
  return null;
419
421
  let resolved = statement;
420
422
  for (const operand of ["source", "destination"]) {
421
423
  const selection = statement[operand];
422
- if (!_a.#globTarget(selection.target))
424
+ if (!Dispatcher.#globTarget(selection.target))
423
425
  continue;
424
426
  const found = await this.#findTargets({
425
427
  ...selection, op: "FIND", matcher: null, lineMarker: { marks: [1, -1] },
@@ -428,14 +430,14 @@ class Dispatcher {
428
430
  if ("result" in found)
429
431
  return found;
430
432
  if (found.targets.length !== 1)
431
- return { result: _a.#failure("target-cardinality", 400, `${statement.op} ${operand} matched ${found.matched} resources; expected one.`, {}, { operand, matchingPathCount: found.matched, recovery: "Name one source and one destination per pair.", retryable: false }) };
433
+ return { result: Dispatcher.#failure("target-cardinality", 400, `${statement.op} ${operand} matched ${found.matched} resources; expected one.`, {}, { operand, matchingPathCount: found.matched, recovery: "Name one source and one destination per pair.", retryable: false }) };
432
434
  resolved = { ...resolved, [operand]: { ...selection, target: found.targets[0] } };
433
435
  }
434
436
  return { statements: [resolved] };
435
437
  }
436
438
  if (!(statement.op === "READ" || statement.op === "EDIT" || statement.op === "KILL"))
437
439
  return null;
438
- if (!_a.#globTarget(statement.target) || (statement.op === "KILL" && schemeNameOf(statement.target) === "log"))
440
+ if (!Dispatcher.#globTarget(statement.target) || (statement.op === "KILL" && schemeNameOf(statement.target) === "log"))
439
441
  return null;
440
442
  const found = await this.#findTargets({
441
443
  op: "FIND", aside: statement.aside, target: statement.target, metadata: statement.metadata,
@@ -488,7 +490,7 @@ class Dispatcher {
488
490
  let curationPlan = null;
489
491
  const denial = this.#checkWritable(statement, origin, workspaceId)
490
492
  ?? await this.#checkCapabilities(statement, schemeCtx)
491
- ?? _a.#unreadableMatcher(statement);
493
+ ?? Dispatcher.#unreadableMatcher(statement);
492
494
  if (denial !== null) {
493
495
  result = denial;
494
496
  }
@@ -569,7 +571,7 @@ class Dispatcher {
569
571
  else {
570
572
  const scheme = schemeNameOf(primaryTargetOf(statement));
571
573
  console.error(`Scheme '${scheme ?? "unknown"}' ${statement.op} threw outside its operation result contract:`, err);
572
- result = _a.#failure("scheme-handler-threw", 500, `The '${scheme ?? "unknown"}' scheme did not produce a result for ${statement.op}.`, {}, {
574
+ result = Dispatcher.#failure("scheme-handler-threw", 500, `The '${scheme ?? "unknown"}' scheme did not produce a result for ${statement.op}.`, {}, {
573
575
  stage: "scheme-dispatch",
574
576
  scheme,
575
577
  operation: statement.op,
@@ -586,7 +588,7 @@ class Dispatcher {
586
588
  result = await this.#fitResult(context, statement, result);
587
589
  // {§configuration-repair-path}: decide admission before persisting a proposed row.
588
590
  let autoAccept = false;
589
- if (_a.#isProposal(statement, result)) {
591
+ if (Dispatcher.#isProposal(statement, result)) {
590
592
  const effect = result.attrs?.effect;
591
593
  const mustDeclareEffect = isExecution(statement) || (statement.op === "SEND"
592
594
  && this.#schemes.isRuntimeScheme(schemeNameOf(statement.target) ?? "", workspaceId));
@@ -634,20 +636,20 @@ class Dispatcher {
634
636
  // resolution arrives via Engine.resolveProposal (from a client-interface resume,
635
637
  // core-owned disposition, or timeout). The post-resolution status replaces 202 in the
636
638
  // result the caller sees, so runTurn never branches on a pending state.
637
- if (_a.#isProposal(statement, result)) {
639
+ if (Dispatcher.#isProposal(statement, result)) {
638
640
  if (autoAccept) {
639
641
  await this.#proposals.recordDecision(logEntryId, { decision: "accept" });
640
- const initialSettlement = await this.#proposals.workerApply(statement, result, { decision: "accept" }, { workspaceId, workerId, loopId, turnId, resources: schemeCtx.resources });
642
+ const initialSettlement = await this.#proposals.workerApply(statement, result, { decision: "accept" }, { workspaceId, workerId, loopId, turnId, logEntryId, resources: schemeCtx.resources });
641
643
  const effective = await this.#resourceMutations.settleProposal({
642
644
  statement,
643
645
  result,
644
646
  settlement: initialSettlement,
645
647
  ctx: schemeCtx,
646
- ids: { workspaceId, workerId, loopId, turnId },
648
+ ids: { workspaceId, workerId, loopId, turnId, logEntryId },
647
649
  });
648
650
  const post = await this.#proposals.applyResolution(logEntryId, effective);
649
651
  await this.#notifySettled(context, logEntryId);
650
- return _a.#singleExecution(post);
652
+ return Dispatcher.#singleExecution(post);
651
653
  }
652
654
  // Register the resolution waiter SYNCHRONOUSLY before any await
653
655
  // yields. A same-tick resolveProposal() (e.g. from a test that
@@ -677,20 +679,20 @@ class Dispatcher {
677
679
  // file, spawns the process, etc.). Its operation result is
678
680
  // preserved: an apply failure keeps its original status and
679
681
  // Problem Details instead of masquerading as a client rejection.
680
- const initialSettlement = await this.#proposals.workerApply(statement, result, resolution, { workspaceId, workerId, loopId, turnId, resources: schemeCtx.resources });
682
+ const initialSettlement = await this.#proposals.workerApply(statement, result, resolution, { workspaceId, workerId, loopId, turnId, logEntryId, resources: schemeCtx.resources });
681
683
  const effective = await this.#resourceMutations.settleProposal({
682
684
  statement,
683
685
  result,
684
686
  settlement: initialSettlement,
685
687
  ctx: schemeCtx,
686
- ids: { workspaceId, workerId, loopId, turnId },
688
+ ids: { workspaceId, workerId, loopId, turnId, logEntryId },
687
689
  });
688
690
  const post = await this.#proposals.applyResolution(logEntryId, effective);
689
691
  await this.#notifySettled(context, logEntryId);
690
- return _a.#singleExecution(post);
692
+ return Dispatcher.#singleExecution(post);
691
693
  }
692
694
  await this.#notifySettled(context, logEntryId);
693
- return _a.#singleExecution(result);
695
+ return Dispatcher.#singleExecution(result);
694
696
  }
695
697
  // {§context-fit} — a result the model asked for arrives whole when it fits the remaining budget;
696
698
  // otherwise the row is its size and address — a READ of lines above the longest prefix of them that
@@ -749,29 +751,6 @@ class Dispatcher {
749
751
  await context.onSettled?.(logEntryId);
750
752
  await this.#notify.operationSettledNotify?.(context.workspaceId, logEntryId);
751
753
  }
752
- // {§op-look}: resolve a READ and return its content without writing a
753
- // log_entries row: the client's out-of-band inspection primitive (LOOK → READ,
754
- // invisible to the model). READ never mutates and never proposes, so this is
755
- // dispatch's resolve path minus #writeLog. Runs on the client loop, so the
756
- // human's inspection is never constrained by a model loop's flags. {§op-look}
757
- async look(context) {
758
- const { statement, workspaceId, workerId, loopId, origin = "client" } = context;
759
- if (statement.op !== "READ")
760
- throw new Error(`look resolves READ only; got ${statement.op}`);
761
- // turnId is a write-time FK only — a look writes no row, so 0 (no turn) is inert.
762
- const schemeCtx = this.#buildSchemeCtx({ workspaceId, workerId, loopId, turnId: 0, origin });
763
- return ResourceBindings.using(this.#schemes, schemeCtx, async (ctx) => {
764
- try {
765
- const denial = await this.#checkCapabilities(statement, ctx) ?? _a.#unreadableMatcher(statement);
766
- return denial ?? await this.#dataRun.run(schemeNameOf(statement.target), statement, ctx);
767
- }
768
- catch (error) {
769
- if (error instanceof OperationFailureError)
770
- return error.result;
771
- throw error;
772
- }
773
- });
774
- }
775
754
  capabilityProjection(workspaceId) {
776
755
  return this.#capabilities.projection(workspaceId);
777
756
  }
@@ -831,7 +810,7 @@ class Dispatcher {
831
810
  if (metadata !== null && manifest.metadataModifier !== true) {
832
811
  return {
833
812
  address: null,
834
- result: _a.#failure("scheme-metadata-unsupported", 400, `Resource acquisition from '${routedScheme}' does not accept the [metadata] modifier.`, {}, { scheme: routedScheme, retryable: false }),
813
+ result: Dispatcher.#failure("scheme-metadata-unsupported", 400, `Resource acquisition from '${routedScheme}' does not accept the [metadata] modifier.`, {}, { scheme: routedScheme, retryable: false }),
835
814
  };
836
815
  }
837
816
  const resolved = priorResolution ?? await this.#resolveDataEntryAddress({
@@ -875,7 +854,7 @@ class Dispatcher {
875
854
  const binding = await ResourceBindings.resolve(statement.target, ctx);
876
855
  const manifest = binding?.manifest;
877
856
  if (manifest !== undefined && manifest.category !== "data") {
878
- return { nativePath: null, result: _a.#failure("exec-source-not-data", 501, `Scheme '${schemeName}' is not a data source for an execution.`, {}, {
857
+ return { nativePath: null, result: Dispatcher.#failure("exec-source-not-data", 501, `Scheme '${schemeName}' is not a data source for an execution.`, {}, {
879
858
  scheme: schemeName,
880
859
  category: manifest.category,
881
860
  retryable: false,
@@ -897,19 +876,20 @@ class Dispatcher {
897
876
  return { result, nativePath: null };
898
877
  const nativePath = await source.nativePath();
899
878
  if (nativePath === null)
900
- return { nativePath: null, result: _a.#failure("entry-not-found", 404, "The execution's source file no longer exists.", {}, { target: target.raw }) };
879
+ return { nativePath: null, result: Dispatcher.#failure("entry-not-found", 404, "The execution's source file no longer exists.", {}, { target: target.raw }) };
901
880
  return { result, nativePath };
902
881
  }
903
- // The one place per-dispatch coordinates are built; a caller that carries no
904
- // explicit Functionality coordinate acts in its own Worker's
905
- // ({§actor-boundary-attached-functionality}). Consumers read the built
906
- // PlurnkSchemeContext and never re-derive.
882
+ // The one place per-dispatch coordinates are built. Functionality resolves by workspace
883
+ // ({§actor-boundary-attached-functionality}); consumers read the built PlurnkSchemeContext
884
+ // and never re-derive.
907
885
  #buildSchemeCtx(ids) {
908
- const { workspaceId, workerId, loopId, turnId, origin } = ids;
886
+ const { workspaceId, workerId, loopId, turnId, sequence, origin, client } = ids;
909
887
  const context = {
910
888
  db: this.#db,
911
889
  workspaceId, workerId, loopId, turnId,
890
+ ...(sequence === undefined ? {} : { sequence }),
912
891
  writer: origin,
892
+ ...(client === undefined ? {} : { client }),
913
893
  resources: { capture: (targets) => ResourceBindings.using(this.#schemes, context, (bound) => this.#resourceSelector.capture(targets, bound)) },
914
894
  replyToMessage: (statement) => this.#respond(statement, context, loopId),
915
895
  signal: this.#loopSignal(loopId),
@@ -978,7 +958,7 @@ class Dispatcher {
978
958
  // read-only resources. State that boundary without guessing whether the
979
959
  // model intended a reply, deletion, or directed message.
980
960
  if (denial !== null && statement.op === "SEND" && origin === "model") {
981
- return _a.#failure("send-target-not-a-recipient", 400, "The addressed scheme is not a SEND recipient.", {}, {
961
+ return Dispatcher.#failure("send-target-not-a-recipient", 400, "The addressed scheme is not a SEND recipient.", {}, {
982
962
  target: statement.target?.raw ?? String(target),
983
963
  stage: "dispatch",
984
964
  recovery: "Name a message address or a recipient that implements SEND.",
@@ -1000,7 +980,7 @@ class Dispatcher {
1000
980
  throw new Error(`registered scheme '${schemeName}' has no manifest`);
1001
981
  if (manifest.writableBy.includes(origin))
1002
982
  return null;
1003
- return _a.#failure("writer-forbidden", 403, `Writer '${origin}' cannot modify scheme '${schemeName}'.`, {}, {
983
+ return Dispatcher.#failure("writer-forbidden", 403, `Writer '${origin}' cannot modify scheme '${schemeName}'.`, {}, {
1004
984
  writer: origin,
1005
985
  scheme: schemeName,
1006
986
  allowedWriters: [...manifest.writableBy],
@@ -1021,7 +1001,7 @@ class Dispatcher {
1021
1001
  descriptor.runtime,
1022
1002
  descriptor.tool,
1023
1003
  ].filter((part) => part !== undefined).join("/");
1024
- return _a.#failure("capability-denied", 403, `Capability '${route}' is denied by ${scope} policy.`, {}, {
1004
+ return Dispatcher.#failure("capability-denied", 403, `Capability '${route}' is denied by ${scope} policy.`, {}, {
1025
1005
  ...descriptor,
1026
1006
  policyScope: scope,
1027
1007
  // {§owner-interaction-ring} Every other ring is operator configuration and speaks for itself.
@@ -1186,7 +1166,7 @@ class Dispatcher {
1186
1166
  }
1187
1167
  const prompt = [result.content ?? "", statement.body ?? ""].filter((part) => part !== "").join("\n\n");
1188
1168
  if (prompt.trim() === "") {
1189
- return { result: _a.#failure("spawn-prompt-empty", 422, `${statement.op} has no prompt text: the resource is empty and there is no body.`, {}, { recovery: `Write the prompt on the lines beneath the ${statement.op} fence line, or name a resource that holds it.`, retryable: false }) };
1169
+ return { result: Dispatcher.#failure("spawn-prompt-empty", 422, `${statement.op} has no prompt text: the resource is empty and there is no body.`, {}, { recovery: `Write the prompt on the lines beneath the ${statement.op} fence line, or name a resource that holds it.`, retryable: false }) };
1190
1170
  }
1191
1171
  return { statement: { ...statement, target: null, body: prompt } };
1192
1172
  }
@@ -1230,7 +1210,7 @@ class Dispatcher {
1230
1210
  const prompt = [resource, statement.body].filter((part) => part !== "").join("\n\n");
1231
1211
  // {§bare-inference} — empty combined text is a refusal that creates no model call.
1232
1212
  if (prompt.trim() === "") {
1233
- return { result: _a.#failure("bare-prompt-empty", 422, `BARE has no prompt text: the prompt is the fence body, a resource path, or both.${statement.aside === null || statement.aside === "" ? "" : " Its aside was not read as the prompt."}`, {}, { retryable: false }) };
1213
+ return { result: Dispatcher.#failure("bare-prompt-empty", 422, `BARE has no prompt text: the prompt is the fence body, a resource path, or both.${statement.aside === null || statement.aside === "" ? "" : " Its aside was not read as the prompt."}`, {}, { retryable: false }) };
1234
1214
  }
1235
1215
  return { prompt };
1236
1216
  }
@@ -1262,7 +1242,7 @@ class Dispatcher {
1262
1242
  // delivered to its originating client, its outcome unchanged.
1263
1243
  const message = open ?? await this.#db.message_latest_published.get({ loop_id: loopId });
1264
1244
  if (message === undefined)
1265
- return _a.#failure("send-target-required", 400, "SEND has no recipient and its loop has no published message.", {}, { recovery: "Name a recipient address.", retryable: false });
1245
+ return Dispatcher.#failure("send-target-required", 400, "SEND has no recipient and its loop has no published message.", {}, { recovery: "Name a recipient address.", retryable: false });
1266
1246
  answers = [message.path];
1267
1247
  speechOnly = open === undefined;
1268
1248
  }
@@ -1271,7 +1251,7 @@ class Dispatcher {
1271
1251
  workspace_id: schemeCtx.workspaceId, path: target.raw,
1272
1252
  });
1273
1253
  if (message === undefined)
1274
- return _a.#failure("message-not-found", 404, `No accepted message exists at ${target.raw}.`, {}, { retryable: false });
1254
+ return Dispatcher.#failure("message-not-found", 404, `No accepted message exists at ${target.raw}.`, {}, { retryable: false });
1275
1255
  answers = [message.path];
1276
1256
  }
1277
1257
  const captured = await MessageAttachments.capture(options.metadata, schemeCtx.resources, "message:reply");
@@ -1300,6 +1280,8 @@ class Dispatcher {
1300
1280
  pending.push("streams");
1301
1281
  if (held.workers === 1)
1302
1282
  pending.push("workers");
1283
+ if (held.messages === 1)
1284
+ pending.push("messages");
1303
1285
  const boundaries = await this.#nextPacketBoundaries(workerId, turnId);
1304
1286
  const receipts = [...new Set(boundaries.operations
1305
1287
  .filter(({ op }) => op !== "KILL")
@@ -1332,19 +1314,19 @@ class Dispatcher {
1332
1314
  }
1333
1315
  // {§wait-obligation-matrix}: fresh failures precede automatic parking and completion.
1334
1316
  async #unobservedFailureCount(turnId) {
1335
- const failedRows = await this.#db.engine_turn_failures.all({ turn_id: turnId });
1336
- return failedRows.length;
1317
+ const row = await this.#db.engine_turn_failure_count.get({ turn_id: turnId });
1318
+ return row.count;
1337
1319
  }
1338
1320
  // {§wait-obligation-matrix}: retrievals land next turn; only held work permits parking.
1339
1321
  async hasLiveWork(loopId) {
1340
1322
  const held = await this.#db.loop_live_obligations.get({ loop_id: loopId });
1341
- return held !== undefined && (held.streams === 1 || held.workers === 1);
1323
+ return held !== undefined && (held.streams === 1 || held.workers === 1 || held.messages === 1);
1342
1324
  }
1343
1325
  async #runLogCuration(statement, ctx, admittedMaxId) {
1344
1326
  const addressedScheme = schemeNameOf(statement.target);
1345
1327
  if (addressedScheme !== null && addressedScheme !== "log") {
1346
1328
  return {
1347
- result: _a.#failure("operation-not-implemented", 501, `Scheme '${addressedScheme}' does not implement ${statement.op}.`, {}, {
1329
+ result: Dispatcher.#failure("operation-not-implemented", 501, `Scheme '${addressedScheme}' does not implement ${statement.op}.`, {}, {
1348
1330
  scheme: addressedScheme,
1349
1331
  operation: statement.op,
1350
1332
  retryable: false,
@@ -1414,6 +1396,4 @@ class Dispatcher {
1414
1396
  return JSON.stringify(signal);
1415
1397
  }
1416
1398
  }
1417
- _a = Dispatcher;
1418
- export default Dispatcher;
1419
1399
  //# sourceMappingURL=Dispatcher.js.map