@plurnk/plurnk-service 1.14.2 → 1.15.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 (292) hide show
  1. package/SPEC.md +177 -135
  2. package/dist/build-info.json +1 -1
  3. package/dist/content/byte-view.d.ts +14 -0
  4. package/dist/content/byte-view.d.ts.map +1 -0
  5. package/dist/content/byte-view.js +33 -0
  6. package/dist/content/byte-view.js.map +1 -0
  7. package/dist/content/edit-receipt.d.ts.map +1 -1
  8. package/dist/content/edit-receipt.js +12 -1
  9. package/dist/content/edit-receipt.js.map +1 -1
  10. package/dist/content/line-marker.d.ts +2 -1
  11. package/dist/content/line-marker.d.ts.map +1 -1
  12. package/dist/content/line-marker.js +1 -0
  13. package/dist/content/line-marker.js.map +1 -1
  14. package/dist/content/matcher.d.ts +1 -0
  15. package/dist/content/matcher.d.ts.map +1 -1
  16. package/dist/content/matcher.js +1 -0
  17. package/dist/content/matcher.js.map +1 -1
  18. package/dist/content/read-projector.d.ts +4 -1
  19. package/dist/content/read-projector.d.ts.map +1 -1
  20. package/dist/content/read-projector.js +80 -3
  21. package/dist/content/read-projector.js.map +1 -1
  22. package/dist/core/AdmittedTurnExecutor.d.ts +43 -0
  23. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -0
  24. package/dist/core/AdmittedTurnExecutor.js +245 -0
  25. package/dist/core/AdmittedTurnExecutor.js.map +1 -0
  26. package/dist/core/BareBatchRunner.d.ts +26 -0
  27. package/dist/core/BareBatchRunner.d.ts.map +1 -0
  28. package/dist/core/BareBatchRunner.js +104 -0
  29. package/dist/core/BareBatchRunner.js.map +1 -0
  30. package/dist/core/BudgetReadout.d.ts +1 -1
  31. package/dist/core/BudgetReadout.d.ts.map +1 -1
  32. package/dist/core/BudgetReadout.js +19 -10
  33. package/dist/core/BudgetReadout.js.map +1 -1
  34. package/dist/core/CapabilityResolver.d.ts +2 -1
  35. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  36. package/dist/core/CapabilityResolver.js +8 -9
  37. package/dist/core/CapabilityResolver.js.map +1 -1
  38. package/dist/core/ChannelWrite.d.ts +1 -1
  39. package/dist/core/ChannelWrite.d.ts.map +1 -1
  40. package/dist/core/DataStatementRunner.d.ts +35 -0
  41. package/dist/core/DataStatementRunner.d.ts.map +1 -0
  42. package/dist/core/DataStatementRunner.js +252 -0
  43. package/dist/core/DataStatementRunner.js.map +1 -0
  44. package/dist/core/Dispatcher.d.ts +8 -3
  45. package/dist/core/Dispatcher.d.ts.map +1 -1
  46. package/dist/core/Dispatcher.js +88 -738
  47. package/dist/core/Dispatcher.js.map +1 -1
  48. package/dist/core/EditMutations.d.ts +39 -0
  49. package/dist/core/EditMutations.d.ts.map +1 -0
  50. package/dist/core/EditMutations.js +418 -0
  51. package/dist/core/EditMutations.js.map +1 -0
  52. package/dist/core/Engine.d.ts +2 -23
  53. package/dist/core/Engine.d.ts.map +1 -1
  54. package/dist/core/Engine.js +18 -240
  55. package/dist/core/Engine.js.map +1 -1
  56. package/dist/core/Engine.sql +22 -15
  57. package/dist/core/KillHandler.d.ts +32 -0
  58. package/dist/core/KillHandler.d.ts.map +1 -0
  59. package/dist/core/KillHandler.js +179 -0
  60. package/dist/core/KillHandler.js.map +1 -0
  61. package/dist/core/LogVisibility.d.ts +1 -1
  62. package/dist/core/LogVisibility.d.ts.map +1 -1
  63. package/dist/core/LogVisibility.js +3 -4
  64. package/dist/core/LogVisibility.js.map +1 -1
  65. package/dist/core/LogWriter.d.ts +42 -0
  66. package/dist/core/LogWriter.d.ts.map +1 -0
  67. package/dist/core/LogWriter.js +136 -0
  68. package/dist/core/LogWriter.js.map +1 -0
  69. package/dist/core/LoopDriver.d.ts +46 -0
  70. package/dist/core/LoopDriver.d.ts.map +1 -0
  71. package/dist/core/LoopDriver.js +263 -0
  72. package/dist/core/LoopDriver.js.map +1 -0
  73. package/dist/core/LoopLifecycle.d.ts +2 -1
  74. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  75. package/dist/core/MembershipMaterialization.d.ts +7 -0
  76. package/dist/core/MembershipMaterialization.d.ts.map +1 -0
  77. package/dist/core/MembershipMaterialization.js +283 -0
  78. package/dist/core/MembershipMaterialization.js.map +1 -0
  79. package/dist/core/MutationEffects.d.ts +29 -0
  80. package/dist/core/MutationEffects.d.ts.map +1 -0
  81. package/dist/core/MutationEffects.js +318 -0
  82. package/dist/core/MutationEffects.js.map +1 -0
  83. package/dist/core/OverflowTurn.d.ts +4 -4
  84. package/dist/core/OverflowTurn.d.ts.map +1 -1
  85. package/dist/core/OverflowTurn.js +6 -7
  86. package/dist/core/OverflowTurn.js.map +1 -1
  87. package/dist/core/PacketBuilder.d.ts.map +1 -1
  88. package/dist/core/PacketBuilder.js +28 -5
  89. package/dist/core/PacketBuilder.js.map +1 -1
  90. package/dist/core/ResourceMutations.d.ts +12 -36
  91. package/dist/core/ResourceMutations.d.ts.map +1 -1
  92. package/dist/core/ResourceMutations.js +27 -1351
  93. package/dist/core/ResourceMutations.js.map +1 -1
  94. package/dist/core/ResourceSelector.d.ts +21 -0
  95. package/dist/core/ResourceSelector.d.ts.map +1 -0
  96. package/dist/core/ResourceSelector.js +204 -0
  97. package/dist/core/ResourceSelector.js.map +1 -0
  98. package/dist/core/ResourceTransfers.d.ts +55 -0
  99. package/dist/core/ResourceTransfers.d.ts.map +1 -0
  100. package/dist/core/ResourceTransfers.js +460 -0
  101. package/dist/core/ResourceTransfers.js.map +1 -0
  102. package/dist/core/SchemeRegistry.js +2 -2
  103. package/dist/core/SchemeRegistry.js.map +1 -1
  104. package/dist/core/SendBroadcastHandler.d.ts +40 -0
  105. package/dist/core/SendBroadcastHandler.d.ts.map +1 -0
  106. package/dist/core/SendBroadcastHandler.js +159 -0
  107. package/dist/core/SendBroadcastHandler.js.map +1 -0
  108. package/dist/core/StoredPacket.d.ts +11 -0
  109. package/dist/core/StoredPacket.d.ts.map +1 -1
  110. package/dist/core/StoredPacket.js +22 -1
  111. package/dist/core/StoredPacket.js.map +1 -1
  112. package/dist/core/StrikeRail.d.ts.map +1 -1
  113. package/dist/core/StrikeRail.js +19 -9
  114. package/dist/core/StrikeRail.js.map +1 -1
  115. package/dist/core/TokenCalibration.d.ts +16 -0
  116. package/dist/core/TokenCalibration.d.ts.map +1 -0
  117. package/dist/core/TokenCalibration.js +35 -0
  118. package/dist/core/TokenCalibration.js.map +1 -0
  119. package/dist/core/ToolResources.d.ts.map +1 -1
  120. package/dist/core/ToolResources.js +15 -12
  121. package/dist/core/ToolResources.js.map +1 -1
  122. package/dist/core/TurnMaterialization.d.ts +37 -0
  123. package/dist/core/TurnMaterialization.d.ts.map +1 -0
  124. package/dist/core/TurnMaterialization.js +307 -0
  125. package/dist/core/TurnMaterialization.js.map +1 -0
  126. package/dist/core/TurnOps.d.ts.map +1 -1
  127. package/dist/core/TurnOps.js +4 -6
  128. package/dist/core/TurnOps.js.map +1 -1
  129. package/dist/core/TurnRunner.d.ts +15 -27
  130. package/dist/core/TurnRunner.d.ts.map +1 -1
  131. package/dist/core/TurnRunner.js +73 -667
  132. package/dist/core/TurnRunner.js.map +1 -1
  133. package/dist/core/WorkerControlHandler.d.ts +15 -0
  134. package/dist/core/WorkerControlHandler.d.ts.map +1 -0
  135. package/dist/core/WorkerControlHandler.js +89 -0
  136. package/dist/core/WorkerControlHandler.js.map +1 -0
  137. package/dist/core/attachments.d.ts +14 -0
  138. package/dist/core/attachments.d.ts.map +1 -0
  139. package/dist/core/attachments.js +18 -0
  140. package/dist/core/attachments.js.map +1 -0
  141. package/dist/core/git-membership.d.ts +15 -0
  142. package/dist/core/git-membership.d.ts.map +1 -1
  143. package/dist/core/git-membership.js +4 -273
  144. package/dist/core/git-membership.js.map +1 -1
  145. package/dist/core/git-state.d.ts +2 -1
  146. package/dist/core/git-state.d.ts.map +1 -1
  147. package/dist/core/mutation-types.d.ts +101 -0
  148. package/dist/core/mutation-types.d.ts.map +1 -0
  149. package/dist/core/mutation-types.js +2 -0
  150. package/dist/core/mutation-types.js.map +1 -0
  151. package/dist/core/operation-target-groups.js +1 -1
  152. package/dist/core/operation-target-groups.js.map +1 -1
  153. package/dist/core/packet-wire.d.ts +7 -6
  154. package/dist/core/packet-wire.d.ts.map +1 -1
  155. package/dist/core/packet-wire.js +57 -6
  156. package/dist/core/packet-wire.js.map +1 -1
  157. package/dist/core/plurnk-uri.d.ts +0 -1
  158. package/dist/core/plurnk-uri.d.ts.map +1 -1
  159. package/dist/core/plurnk-uri.js +1 -1
  160. package/dist/core/plurnk-uri.js.map +1 -1
  161. package/dist/core/statement-primary.d.ts +4 -0
  162. package/dist/core/statement-primary.d.ts.map +1 -0
  163. package/dist/core/statement-primary.js +3 -0
  164. package/dist/core/statement-primary.js.map +1 -0
  165. package/dist/core/teaching-corpus.d.ts +0 -1
  166. package/dist/core/teaching-corpus.d.ts.map +1 -1
  167. package/dist/core/teaching-corpus.js +0 -9
  168. package/dist/core/teaching-corpus.js.map +1 -1
  169. package/dist/core/turn-scheduler.js +3 -3
  170. package/dist/core/turn-scheduler.js.map +1 -1
  171. package/dist/core/turn-signals.d.ts +15 -0
  172. package/dist/core/turn-signals.d.ts.map +1 -0
  173. package/dist/core/turn-signals.js +19 -0
  174. package/dist/core/turn-signals.js.map +1 -0
  175. package/dist/core/worker-settings.d.ts +0 -1
  176. package/dist/core/worker-settings.d.ts.map +1 -1
  177. package/dist/core/worker-settings.js +1 -1
  178. package/dist/core/worker-settings.js.map +1 -1
  179. package/dist/digest/Digest.d.ts +3 -16
  180. package/dist/digest/Digest.d.ts.map +1 -1
  181. package/dist/digest/Digest.js +10 -958
  182. package/dist/digest/Digest.js.map +1 -1
  183. package/dist/digest/DigestRender.d.ts +12 -0
  184. package/dist/digest/DigestRender.d.ts.map +1 -0
  185. package/dist/digest/DigestRender.js +644 -0
  186. package/dist/digest/DigestRender.js.map +1 -0
  187. package/dist/digest/DigestRequiem.d.ts +13 -0
  188. package/dist/digest/DigestRequiem.d.ts.map +1 -0
  189. package/dist/digest/DigestRequiem.js +332 -0
  190. package/dist/digest/DigestRequiem.js.map +1 -0
  191. package/dist/digest/digest-rows.d.ts +306 -0
  192. package/dist/digest/digest-rows.d.ts.map +1 -0
  193. package/dist/digest/digest-rows.js +2 -0
  194. package/dist/digest/digest-rows.js.map +1 -0
  195. package/dist/observe/api.d.ts +0 -2
  196. package/dist/observe/api.d.ts.map +1 -1
  197. package/dist/observe/api.js +2 -2
  198. package/dist/observe/api.js.map +1 -1
  199. package/dist/observe/metrics.d.ts +0 -1
  200. package/dist/observe/metrics.d.ts.map +1 -1
  201. package/dist/observe/metrics.js +0 -1
  202. package/dist/observe/metrics.js.map +1 -1
  203. package/dist/schemes/Exec.d.ts +4 -1
  204. package/dist/schemes/Exec.d.ts.map +1 -1
  205. package/dist/schemes/Exec.js +90 -45
  206. package/dist/schemes/Exec.js.map +1 -1
  207. package/dist/schemes/ExecOutputScheme.d.ts +2 -1
  208. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  209. package/dist/schemes/ExecOutputScheme.js +3 -3
  210. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  211. package/dist/schemes/File.d.ts +4 -1
  212. package/dist/schemes/File.d.ts.map +1 -1
  213. package/dist/schemes/File.js +70 -4
  214. package/dist/schemes/File.js.map +1 -1
  215. package/dist/schemes/Log.d.ts +4 -5
  216. package/dist/schemes/Log.d.ts.map +1 -1
  217. package/dist/schemes/Log.js +20 -98
  218. package/dist/schemes/Log.js.map +1 -1
  219. package/dist/schemes/Worker.d.ts.map +1 -1
  220. package/dist/schemes/Worker.js +0 -12
  221. package/dist/schemes/Worker.js.map +1 -1
  222. package/dist/schemes/_entry-crud.d.ts +0 -1
  223. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  224. package/dist/schemes/_entry-crud.js.map +1 -1
  225. package/dist/schemes/_entry-find.d.ts +4 -2
  226. package/dist/schemes/_entry-find.d.ts.map +1 -1
  227. package/dist/schemes/_entry-find.js +68 -10
  228. package/dist/schemes/_entry-find.js.map +1 -1
  229. package/dist/schemes/_entry-manifest.d.ts +1 -2
  230. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  231. package/dist/schemes/_entry-ops.d.ts +2 -1
  232. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  233. package/dist/schemes/_entry-ops.js +12 -2
  234. package/dist/schemes/_entry-ops.js.map +1 -1
  235. package/dist/schemes/_entry-semantic.d.ts +1 -0
  236. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  237. package/dist/schemes/_entry-semantic.js +3 -0
  238. package/dist/schemes/_entry-semantic.js.map +1 -1
  239. package/dist/schemes/_entry-semantic.sql +2 -2
  240. package/dist/schemes/_entry-send.d.ts +0 -1
  241. package/dist/schemes/_entry-send.d.ts.map +1 -1
  242. package/dist/schemes/_entry-send.js +5 -80
  243. package/dist/schemes/_entry-send.js.map +1 -1
  244. package/dist/schemes/exec-runtime.d.ts +7 -0
  245. package/dist/schemes/exec-runtime.d.ts.map +1 -0
  246. package/dist/schemes/exec-runtime.js +2 -0
  247. package/dist/schemes/exec-runtime.js.map +1 -0
  248. package/dist/server/ClientReads.d.ts +34 -0
  249. package/dist/server/ClientReads.d.ts.map +1 -0
  250. package/dist/server/ClientReads.js +210 -0
  251. package/dist/server/ClientReads.js.map +1 -0
  252. package/dist/server/Daemon.d.ts +12 -22
  253. package/dist/server/Daemon.d.ts.map +1 -1
  254. package/dist/server/Daemon.js +31 -362
  255. package/dist/server/Daemon.js.map +1 -1
  256. package/dist/server/DaemonModule.d.ts +6 -5
  257. package/dist/server/DaemonModule.d.ts.map +1 -1
  258. package/dist/server/DrainSupervisor.d.ts +3 -2
  259. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  260. package/dist/server/DrainSupervisor.js +7 -3
  261. package/dist/server/DrainSupervisor.js.map +1 -1
  262. package/dist/server/Functionality.d.ts +0 -12
  263. package/dist/server/Functionality.d.ts.map +1 -1
  264. package/dist/server/Functionality.js.map +1 -1
  265. package/dist/server/FunctionalityManager.d.ts +0 -1
  266. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  267. package/dist/server/FunctionalityManager.js +2 -2
  268. package/dist/server/FunctionalityManager.js.map +1 -1
  269. package/dist/server/MembersFunctionality.d.ts +2 -13
  270. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  271. package/dist/server/MembersFunctionality.js +4 -4
  272. package/dist/server/MembersFunctionality.js.map +1 -1
  273. package/dist/server/SkillsFunctionality.d.ts +1 -7
  274. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  275. package/dist/server/SkillsFunctionality.js +3 -3
  276. package/dist/server/SkillsFunctionality.js.map +1 -1
  277. package/dist/server/WorkerModelResolver.d.ts +17 -0
  278. package/dist/server/WorkerModelResolver.d.ts.map +1 -0
  279. package/dist/server/WorkerModelResolver.js +166 -0
  280. package/dist/server/WorkerModelResolver.js.map +1 -0
  281. package/dist/server/daemon-results.d.ts +5 -0
  282. package/dist/server/daemon-results.d.ts.map +1 -0
  283. package/dist/server/daemon-results.js +7 -0
  284. package/dist/server/daemon-results.js.map +1 -0
  285. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  286. package/dist/server/dispatch-as-plurnk.js +4 -6
  287. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  288. package/dist/server/loopDocs.d.ts.map +1 -1
  289. package/dist/server/loopDocs.js +11 -2
  290. package/dist/server/loopDocs.js.map +1 -1
  291. package/migrations/001_schema.sql +21 -92
  292. package/package.json +30 -30
@@ -1473,62 +1473,6 @@ END;
1473
1473
 
1474
1474
  CREATE INDEX IF NOT EXISTS log_tags_tag ON log_tags (tag);
1475
1475
 
1476
- -- Signal-derived classification is part of the log-row insert, not a later JS
1477
- -- write. This keeps the operation, its ambient occurrence, and its complete
1478
- -- initial folksonomy inside one SQLite commit.
1479
- CREATE TRIGGER IF NOT EXISTS log_entries_classify_signal
1480
- AFTER INSERT ON log_entries
1481
- WHEN NEW.op IN ('FIND', 'READ', 'EDIT', 'COPY', 'MOVE', 'BARE')
1482
- AND NEW.signal IS NOT NULL
1483
- BEGIN
1484
- SELECT CASE
1485
- WHEN json_type(NEW.signal) != 'array'
1486
- OR EXISTS (
1487
- SELECT 1 FROM json_each(NEW.signal)
1488
- WHERE type != 'text'
1489
- OR length(value) = 0
1490
- OR substr(value, 1, 1) = '-'
1491
- OR (
1492
- substr(value, 1, 1) = '+'
1493
- AND (length(value) < 2 OR substr(value, 2, 1) IN ('+', '-'))
1494
- )
1495
- OR instr(value, '[') > 0
1496
- OR instr(value, ']') > 0
1497
- OR instr(value, ',') > 0
1498
- OR instr(value, char(0)) > 0
1499
- OR EXISTS (
1500
- WITH RECURSIVE offsets(position) AS (
1501
- SELECT 1
1502
- UNION ALL
1503
- SELECT position + 1 FROM offsets WHERE position < length(value)
1504
- )
1505
- SELECT 1
1506
- FROM offsets
1507
- WHERE unicode(substr(value, position, 1)) BETWEEN 0 AND 32
1508
- OR unicode(substr(value, position, 1)) BETWEEN 127 AND 159
1509
- OR unicode(substr(value, position, 1)) IN (160, 5760, 8232, 8233, 8239, 8287, 12288, 65279)
1510
- OR unicode(substr(value, position, 1)) BETWEEN 8192 AND 8202
1511
- )
1512
- )
1513
- THEN RAISE(ABORT, 'classifying log operation signal accepts only tag or +tag additions')
1514
- END;
1515
- INSERT OR IGNORE INTO log_tags (log_entry_id, tag)
1516
- SELECT NEW.id, CASE WHEN substr(value, 1, 1) = '+' THEN substr(value, 2) ELSE value END
1517
- FROM json_each(NEW.signal);
1518
-
1519
- -- The ambient-event and classification AFTER INSERT triggers may run in
1520
- -- either order. If the event already exists, finish its initial
1521
- -- snapshot here; otherwise its own trigger aggregates these rows later.
1522
- UPDATE ambient_events
1523
- SET tags = COALESCE((
1524
- SELECT json_group_array(tag)
1525
- FROM (SELECT tag FROM log_tags WHERE log_entry_id = NEW.id ORDER BY tag)
1526
- ), '[]')
1527
- WHERE kind = 'activity'
1528
- AND producer_worker_id = NEW.worker_id
1529
- AND source_record_id = NEW.id;
1530
- END;
1531
-
1532
1476
  -- {§worker-initialization-entry} {§overflow-turn-script} — the turn identity
1533
1477
  -- classifies every row in a kernel-authored recovery/orientation turn. No
1534
1478
  -- caller can omit provenance from either its exact turnOps or its operation
@@ -1659,25 +1603,23 @@ BEGIN
1659
1603
  FROM log_entries operation
1660
1604
  JOIN log_entries target ON target.id = NEW.target_log_entry_id
1661
1605
  WHERE operation.id = NEW.operation_log_entry_id
1662
- AND operation.op IN ('OPEN', 'FOLD', 'KILL')
1606
+ AND operation.op = 'KILL'
1663
1607
  AND operation.status_rx < 400
1664
1608
  AND operation.worker_id = target.worker_id
1665
1609
  )
1666
1610
  OR NOT EXISTS (
1611
+ -- {§log-kill-scope} — a scoped KILL keeps the row active and changes its visibility;
1612
+ -- a whole KILL retires it with its visibility untouched.
1667
1613
  SELECT 1
1668
1614
  FROM log_entries operation
1669
1615
  WHERE operation.id = NEW.operation_log_entry_id
1616
+ AND operation.op = 'KILL'
1617
+ AND operation.scheme = 'log'
1618
+ AND NEW.active_before = 1
1670
1619
  AND (
1671
- (
1672
- operation.op IN ('OPEN', 'FOLD')
1673
- AND NEW.active_before = 1
1674
- AND NEW.active_after = 1
1675
- )
1620
+ NEW.active_after = 1
1676
1621
  OR (
1677
- operation.op = 'KILL'
1678
- AND operation.scheme = 'log'
1679
- AND NEW.active_before = 1
1680
- AND NEW.active_after = 0
1622
+ NEW.active_after = 0
1681
1623
  AND json(NEW.folded_before) = json(NEW.folded_after)
1682
1624
  AND json_array_length(NEW.tags_added) = 0
1683
1625
  AND json_array_length(NEW.tags_removed) = 0
@@ -1758,14 +1700,14 @@ BEGIN
1758
1700
  END;
1759
1701
 
1760
1702
  -- The dispatcher binds an exact, transient curation plan into attrs on the
1761
- -- successful OPEN/FOLD/log-KILL row. No other row may carry that payload.
1703
+ -- successful log-KILL row. No other row may carry that payload.
1762
1704
  CREATE TRIGGER IF NOT EXISTS log_entries_curation_payload_valid
1763
1705
  BEFORE INSERT ON log_entries
1764
1706
  WHEN json_type(NEW.attrs, '$.__plurnk_curation') IS NOT NULL
1765
1707
  AND NOT (
1766
- NEW.op IN ('OPEN', 'FOLD', 'KILL')
1708
+ NEW.op = 'KILL'
1767
1709
  AND NEW.status_rx < 400
1768
- AND (NEW.op != 'KILL' OR NEW.scheme = 'log')
1710
+ AND NEW.scheme = 'log'
1769
1711
  AND json_type(NEW.attrs, '$.__plurnk_curation') = 'object'
1770
1712
  )
1771
1713
  BEGIN
@@ -1776,11 +1718,13 @@ END;
1776
1718
  -- their before/after projection and tag deltas, and the resulting current
1777
1719
  -- state. Trigger failure rolls the operation row and all effects back together.
1778
1720
  -- The private plan is erased before INSERT returns.
1721
+ -- {§log-kill-scope} — a log KILL either retires a row whole (active 1→0, visibility untouched)
1722
+ -- or folds a span of its body (active stays 1, visibility changes).
1779
1723
  CREATE TRIGGER IF NOT EXISTS log_entries_apply_curation
1780
1724
  AFTER INSERT ON log_entries
1781
- WHEN NEW.op IN ('OPEN', 'FOLD', 'KILL')
1725
+ WHEN NEW.op = 'KILL'
1782
1726
  AND NEW.status_rx < 400
1783
- AND (NEW.op != 'KILL' OR NEW.scheme = 'log')
1727
+ AND NEW.scheme = 'log'
1784
1728
  AND json_type(NEW.attrs, '$.__plurnk_curation') = 'object'
1785
1729
  BEGIN
1786
1730
  SELECT CASE WHEN
@@ -1855,19 +1799,11 @@ BEGIN
1855
1799
  OR target.id = NEW.id
1856
1800
  OR projection.active != json_extract(selected.value, '$.activeBefore')
1857
1801
  OR json(projection.folded) != json(json_extract(selected.value, '$.foldedBefore'))
1858
- OR (
1859
- NEW.op IN ('OPEN', 'FOLD')
1860
- AND NOT (
1861
- json_extract(selected.value, '$.activeBefore') = 1
1862
- AND json_extract(selected.value, '$.activeAfter') = 1
1863
- )
1864
- )
1865
- OR (
1866
- NEW.op = 'KILL'
1867
- AND NOT (
1868
- json_extract(selected.value, '$.activeBefore') = 1
1869
- AND json_extract(selected.value, '$.activeAfter') = 0
1870
- AND json(json_extract(selected.value, '$.foldedBefore')) = json(json_extract(selected.value, '$.foldedAfter'))
1802
+ OR NOT (
1803
+ json_extract(selected.value, '$.activeBefore') = 1
1804
+ AND (
1805
+ json_extract(selected.value, '$.activeAfter') = 1
1806
+ OR json(json_extract(selected.value, '$.foldedBefore')) = json(json_extract(selected.value, '$.foldedAfter'))
1871
1807
  )
1872
1808
  )
1873
1809
  )
@@ -2051,14 +1987,7 @@ FROM (
2051
1987
  AND le.status_rx != 304
2052
1988
  AND (
2053
1989
  (
2054
- (
2055
- le.op IN ('EDIT', 'KILL')
2056
- OR (
2057
- le.op = 'SEND'
2058
- AND json_valid(le.signal)
2059
- AND json_extract(le.signal, '$') = 410
2060
- )
2061
- )
1990
+ le.op IN ('EDIT', 'KILL')
2062
1991
  AND le.scheme = 'worker'
2063
1992
  AND le.hostname IS NULL
2064
1993
  AND le.pathname IS NOT NULL
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-service",
3
- "version": "1.14.2",
3
+ "version": "1.15.0",
4
4
  "description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-contracts contract.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -87,41 +87,41 @@
87
87
  "@opentelemetry/resources": "^2.11.0",
88
88
  "@opentelemetry/sdk-metrics": "^2.11.0",
89
89
  "@opentelemetry/sdk-trace-base": "^2.11.0",
90
- "@plurnk/gbnf": "1.14.2",
91
- "@plurnk/plurnk-a2a": "1.14.2",
92
- "@plurnk/plurnk-agui": "1.14.2",
93
- "@plurnk/plurnk-contracts": "1.14.2",
94
- "@plurnk/plurnk-execs": "1.14.2",
95
- "@plurnk/plurnk-execs-common": "1.14.2",
96
- "@plurnk/plurnk-execs-jq": "1.14.2",
97
- "@plurnk/plurnk-execs-sqlite": "1.14.2",
98
- "@plurnk/plurnk-hooks": "1.14.2",
99
- "@plurnk/plurnk-mcp": "1.14.2",
100
- "@plurnk/plurnk-meta": "1.14.2",
101
- "@plurnk/plurnk-mimetypes": "1.14.2",
102
- "@plurnk/plurnk-mimetypes-application-ipynb": "1.14.2",
103
- "@plurnk/plurnk-mimetypes-application-json": "1.14.2",
104
- "@plurnk/plurnk-mimetypes-application-jsonl": "1.14.2",
105
- "@plurnk/plurnk-mimetypes-application-xml": "1.14.2",
106
- "@plurnk/plurnk-mimetypes-embeddings": "1.14.2",
107
- "@plurnk/plurnk-mimetypes-text-csv": "1.14.2",
108
- "@plurnk/plurnk-mimetypes-text-diff": "1.14.2",
109
- "@plurnk/plurnk-mimetypes-text-dotenv": "1.14.2",
110
- "@plurnk/plurnk-mimetypes-text-html": "1.14.2",
111
- "@plurnk/plurnk-mimetypes-text-ini": "1.14.2",
112
- "@plurnk/plurnk-mimetypes-text-markdown": "1.14.2",
113
- "@plurnk/plurnk-mimetypes-text-plain": "1.14.2",
114
- "@plurnk/plurnk-models": "1.14.2",
115
- "@plurnk/plurnk-providers": "1.14.2",
116
- "@plurnk/plurnk-schemes": "1.14.2",
117
- "@plurnk/plurnk-schemes-http": "1.14.2",
90
+ "@plurnk/gbnf": "1.15.0",
91
+ "@plurnk/plurnk-a2a": "1.15.0",
92
+ "@plurnk/plurnk-agui": "1.15.0",
93
+ "@plurnk/plurnk-contracts": "1.15.0",
94
+ "@plurnk/plurnk-execs": "1.15.0",
95
+ "@plurnk/plurnk-execs-common": "1.15.0",
96
+ "@plurnk/plurnk-execs-jq": "1.15.0",
97
+ "@plurnk/plurnk-execs-sqlite": "1.15.0",
98
+ "@plurnk/plurnk-hooks": "1.15.0",
99
+ "@plurnk/plurnk-mcp": "1.15.0",
100
+ "@plurnk/plurnk-meta": "1.15.0",
101
+ "@plurnk/plurnk-mimetypes": "1.15.0",
102
+ "@plurnk/plurnk-mimetypes-application-ipynb": "1.15.0",
103
+ "@plurnk/plurnk-mimetypes-application-json": "1.15.0",
104
+ "@plurnk/plurnk-mimetypes-application-jsonl": "1.15.0",
105
+ "@plurnk/plurnk-mimetypes-application-xml": "1.15.0",
106
+ "@plurnk/plurnk-mimetypes-embeddings": "1.15.0",
107
+ "@plurnk/plurnk-mimetypes-text-csv": "1.15.0",
108
+ "@plurnk/plurnk-mimetypes-text-diff": "1.15.0",
109
+ "@plurnk/plurnk-mimetypes-text-dotenv": "1.15.0",
110
+ "@plurnk/plurnk-mimetypes-text-html": "1.15.0",
111
+ "@plurnk/plurnk-mimetypes-text-ini": "1.15.0",
112
+ "@plurnk/plurnk-mimetypes-text-markdown": "1.15.0",
113
+ "@plurnk/plurnk-mimetypes-text-plain": "1.15.0",
114
+ "@plurnk/plurnk-models": "1.15.0",
115
+ "@plurnk/plurnk-providers": "1.15.0",
116
+ "@plurnk/plurnk-schemes": "1.15.0",
117
+ "@plurnk/plurnk-schemes-http": "1.15.0",
118
118
  "@possumtech/sqlrite": "^6.5.2",
119
119
  "diff": "^9.0.0",
120
120
  "yaml": "^2.9.0"
121
121
  },
122
122
  "devDependencies": {
123
123
  "@opentelemetry/core": "^2.11.0",
124
- "@plurnk/plurnk-mimetypes-tokenizers": "1.14.2",
124
+ "@plurnk/plurnk-mimetypes-tokenizers": "1.15.0",
125
125
  "@types/diff": "^7.0.2"
126
126
  },
127
127
  "homepage": "https://github.com/plurnk/plurnk-service/tree/main/plurnk-core#readme",