@plurnk/plurnk-service 3.0.0 → 3.2.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 (280) hide show
  1. package/.env.defaults +38 -21
  2. package/INSTALL.md +38 -1
  3. package/README.md +3 -0
  4. package/SPEC.md +681 -268
  5. package/dist/build-info.json +1 -1
  6. package/dist/completions/_plurnk-service +13 -0
  7. package/dist/completions/plurnk-service.bash +19 -0
  8. package/dist/completions/plurnk-service.fish +94 -0
  9. package/dist/content/path-mimetype.d.ts.map +1 -1
  10. package/dist/content/path-mimetype.js +2 -8
  11. package/dist/content/path-mimetype.js.map +1 -1
  12. package/dist/core/AdmittedTurnExecutor.d.ts +2 -2
  13. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  14. package/dist/core/AdmittedTurnExecutor.js +36 -32
  15. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  16. package/dist/core/BudgetReadout.d.ts +7 -2
  17. package/dist/core/BudgetReadout.d.ts.map +1 -1
  18. package/dist/core/BudgetReadout.js +36 -5
  19. package/dist/core/BudgetReadout.js.map +1 -1
  20. package/dist/{schemes/_derivation-use.d.ts → core/ContentUse.d.ts} +3 -3
  21. package/dist/core/ContentUse.d.ts.map +1 -0
  22. package/dist/{schemes/_derivation-use.js → core/ContentUse.js} +8 -7
  23. package/dist/core/ContentUse.js.map +1 -0
  24. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  25. package/dist/core/DataStatementRunner.js +8 -20
  26. package/dist/core/DataStatementRunner.js.map +1 -1
  27. package/dist/core/Dispatcher.d.ts +11 -3
  28. package/dist/core/Dispatcher.d.ts.map +1 -1
  29. package/dist/core/Dispatcher.js +186 -109
  30. package/dist/core/Dispatcher.js.map +1 -1
  31. package/dist/core/EditMutations.js +1 -1
  32. package/dist/core/EditMutations.js.map +1 -1
  33. package/dist/core/Engine.d.ts +1 -1
  34. package/dist/core/Engine.d.ts.map +1 -1
  35. package/dist/core/Engine.js +4 -7
  36. package/dist/core/Engine.js.map +1 -1
  37. package/dist/core/EnvFlags.js +1 -1
  38. package/dist/core/EnvFlags.js.map +1 -1
  39. package/dist/core/FabricatedLog.d.ts +1 -0
  40. package/dist/core/FabricatedLog.d.ts.map +1 -1
  41. package/dist/core/FabricatedLog.js +8 -0
  42. package/dist/core/FabricatedLog.js.map +1 -1
  43. package/dist/core/FileAddress.d.ts +12 -0
  44. package/dist/core/FileAddress.d.ts.map +1 -0
  45. package/dist/core/FileAddress.js +73 -0
  46. package/dist/core/FileAddress.js.map +1 -0
  47. package/dist/core/FilePublication.d.ts +15 -0
  48. package/dist/core/FilePublication.d.ts.map +1 -0
  49. package/dist/core/FilePublication.js +143 -0
  50. package/dist/core/FilePublication.js.map +1 -0
  51. package/dist/core/FileSnapshot.d.ts +26 -0
  52. package/dist/core/FileSnapshot.d.ts.map +1 -0
  53. package/dist/core/FileSnapshot.js +179 -0
  54. package/dist/core/FileSnapshot.js.map +1 -0
  55. package/dist/core/KillHandler.d.ts.map +1 -1
  56. package/dist/core/KillHandler.js +4 -1
  57. package/dist/core/KillHandler.js.map +1 -1
  58. package/dist/core/LiveSubscription.d.ts.map +1 -1
  59. package/dist/core/LiveSubscription.js +14 -2
  60. package/dist/core/LiveSubscription.js.map +1 -1
  61. package/dist/core/LiveSubscriptions.d.ts +3 -1
  62. package/dist/core/LiveSubscriptions.d.ts.map +1 -1
  63. package/dist/core/LiveSubscriptions.js +16 -1
  64. package/dist/core/LiveSubscriptions.js.map +1 -1
  65. package/dist/core/LogBody.d.ts.map +1 -1
  66. package/dist/core/LogBody.js +3 -1
  67. package/dist/core/LogBody.js.map +1 -1
  68. package/dist/core/LoopDriver.d.ts.map +1 -1
  69. package/dist/core/LoopDriver.js +3 -0
  70. package/dist/core/LoopDriver.js.map +1 -1
  71. package/dist/core/LoopLifecycle.sql +1 -0
  72. package/dist/core/MembershipMaterialization.d.ts.map +1 -1
  73. package/dist/core/MembershipMaterialization.js +87 -143
  74. package/dist/core/MembershipMaterialization.js.map +1 -1
  75. package/dist/core/MessageResources.sql +31 -0
  76. package/dist/core/MutationEffects.d.ts +2 -1
  77. package/dist/core/MutationEffects.d.ts.map +1 -1
  78. package/dist/core/MutationEffects.js +14 -1
  79. package/dist/core/MutationEffects.js.map +1 -1
  80. package/dist/core/PacketBuilder.d.ts +2 -2
  81. package/dist/core/PacketBuilder.d.ts.map +1 -1
  82. package/dist/core/PacketBuilder.js +123 -51
  83. package/dist/core/PacketBuilder.js.map +1 -1
  84. package/dist/core/PacketBuilder.sql +21 -14
  85. package/dist/core/PathGlob.d.ts +6 -0
  86. package/dist/core/PathGlob.d.ts.map +1 -0
  87. package/dist/core/PathGlob.js +24 -0
  88. package/dist/core/PathGlob.js.map +1 -0
  89. package/dist/core/ProposalLifecycle.d.ts +2 -1
  90. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  91. package/dist/core/ProposalLifecycle.js +45 -33
  92. package/dist/core/ProposalLifecycle.js.map +1 -1
  93. package/dist/core/ProposalLifecycle.sql +4 -0
  94. package/dist/core/ReplyMetadata.d.ts +10 -0
  95. package/dist/core/ReplyMetadata.d.ts.map +1 -0
  96. package/dist/core/ReplyMetadata.js +20 -0
  97. package/dist/core/ReplyMetadata.js.map +1 -0
  98. package/dist/core/ResourceBindings.d.ts.map +1 -1
  99. package/dist/core/ResourceBindings.js +4 -3
  100. package/dist/core/ResourceBindings.js.map +1 -1
  101. package/dist/core/ResourceSelector.d.ts +1 -2
  102. package/dist/core/ResourceSelector.d.ts.map +1 -1
  103. package/dist/core/ResourceSelector.js +30 -9
  104. package/dist/core/ResourceSelector.js.map +1 -1
  105. package/dist/core/ResourceTransfers.d.ts +1 -1
  106. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  107. package/dist/core/ResourceTransfers.js +26 -11
  108. package/dist/core/ResourceTransfers.js.map +1 -1
  109. package/dist/core/ServiceHelp.d.ts +6 -0
  110. package/dist/core/ServiceHelp.d.ts.map +1 -0
  111. package/dist/core/ServiceHelp.js +35 -0
  112. package/dist/core/ServiceHelp.js.map +1 -0
  113. package/dist/core/StoredPacket.d.ts +1 -0
  114. package/dist/core/StoredPacket.d.ts.map +1 -1
  115. package/dist/core/StoredPacket.js +4 -1
  116. package/dist/core/StoredPacket.js.map +1 -1
  117. package/dist/core/StrikeRail.d.ts.map +1 -1
  118. package/dist/core/StrikeRail.js +2 -2
  119. package/dist/core/StrikeRail.js.map +1 -1
  120. package/dist/core/TokenCalibration.d.ts +2 -2
  121. package/dist/core/TokenCalibration.d.ts.map +1 -1
  122. package/dist/core/TokenCalibration.js +12 -16
  123. package/dist/core/TokenCalibration.js.map +1 -1
  124. package/dist/core/TokenCalibration.sql +29 -6
  125. package/dist/core/TurnDispositionHandler.d.ts +1 -2
  126. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  127. package/dist/core/TurnDispositionHandler.js +30 -26
  128. package/dist/core/TurnDispositionHandler.js.map +1 -1
  129. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  130. package/dist/core/TurnMaterialization.js +11 -1
  131. package/dist/core/TurnMaterialization.js.map +1 -1
  132. package/dist/core/TurnOps.d.ts +5 -1
  133. package/dist/core/TurnOps.d.ts.map +1 -1
  134. package/dist/core/TurnOps.js +29 -2
  135. package/dist/core/TurnOps.js.map +1 -1
  136. package/dist/core/TurnRunner.d.ts.map +1 -1
  137. package/dist/core/TurnRunner.js +122 -56
  138. package/dist/core/TurnRunner.js.map +1 -1
  139. package/dist/core/TurnSources.sql +2 -2
  140. package/dist/core/caps/SchemeCtxImpl.d.ts +1 -0
  141. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  142. package/dist/core/caps/SchemeCtxImpl.js +5 -0
  143. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  144. package/dist/core/git-membership.d.ts +1 -0
  145. package/dist/core/git-membership.d.ts.map +1 -1
  146. package/dist/core/git-membership.js +9 -11
  147. package/dist/core/git-membership.js.map +1 -1
  148. package/dist/core/glob_match.js +3 -3
  149. package/dist/core/glob_match.js.map +1 -1
  150. package/dist/core/mutation-types.d.ts +3 -0
  151. package/dist/core/mutation-types.d.ts.map +1 -1
  152. package/dist/core/namespace.d.ts +4 -1
  153. package/dist/core/namespace.d.ts.map +1 -1
  154. package/dist/core/namespace.js +14 -3
  155. package/dist/core/namespace.js.map +1 -1
  156. package/dist/core/packet-wire.d.ts +7 -1
  157. package/dist/core/packet-wire.d.ts.map +1 -1
  158. package/dist/core/packet-wire.js +98 -36
  159. package/dist/core/packet-wire.js.map +1 -1
  160. package/dist/core/plurnk-uri.d.ts +3 -2
  161. package/dist/core/plurnk-uri.d.ts.map +1 -1
  162. package/dist/core/plurnk-uri.js +23 -11
  163. package/dist/core/plurnk-uri.js.map +1 -1
  164. package/dist/core/recap-lines.d.ts +4 -0
  165. package/dist/core/recap-lines.d.ts.map +1 -0
  166. package/dist/core/recap-lines.js +11 -0
  167. package/dist/core/recap-lines.js.map +1 -0
  168. package/dist/core/scheme-types.d.ts +1 -0
  169. package/dist/core/scheme-types.d.ts.map +1 -1
  170. package/dist/core/sql-functions.d.ts +2 -0
  171. package/dist/core/sql-functions.d.ts.map +1 -0
  172. package/dist/core/sql-functions.js +5 -0
  173. package/dist/core/sql-functions.js.map +1 -0
  174. package/dist/core/sqlite-synchronous.d.ts +2 -0
  175. package/dist/core/sqlite-synchronous.d.ts.map +1 -0
  176. package/dist/core/sqlite-synchronous.js +4 -0
  177. package/dist/core/sqlite-synchronous.js.map +1 -0
  178. package/dist/core/turn-scheduler.d.ts.map +1 -1
  179. package/dist/core/turn-scheduler.js +1 -1
  180. package/dist/core/turn-scheduler.js.map +1 -1
  181. package/dist/evidence/EvidenceReader.d.ts.map +1 -1
  182. package/dist/evidence/EvidenceReader.js +23 -3
  183. package/dist/evidence/EvidenceReader.js.map +1 -1
  184. package/dist/evidence/digest.sql +7 -1
  185. package/dist/man/plurnk-service.1 +499 -0
  186. package/dist/schemes/Env.d.ts +26 -0
  187. package/dist/schemes/Env.d.ts.map +1 -0
  188. package/dist/schemes/Env.js +133 -0
  189. package/dist/schemes/Env.js.map +1 -0
  190. package/dist/schemes/Exec.d.ts.map +1 -1
  191. package/dist/schemes/Exec.js +15 -15
  192. package/dist/schemes/Exec.js.map +1 -1
  193. package/dist/schemes/ExecOutputScheme.d.ts +3 -2
  194. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  195. package/dist/schemes/ExecOutputScheme.js +9 -0
  196. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  197. package/dist/schemes/File.d.ts +1 -0
  198. package/dist/schemes/File.d.ts.map +1 -1
  199. package/dist/schemes/File.js +233 -268
  200. package/dist/schemes/File.js.map +1 -1
  201. package/dist/schemes/Log.d.ts.map +1 -1
  202. package/dist/schemes/Log.js +97 -17
  203. package/dist/schemes/Log.js.map +1 -1
  204. package/dist/schemes/Log.sql +9 -0
  205. package/dist/schemes/Worker.js +1 -1
  206. package/dist/schemes/Worker.js.map +1 -1
  207. package/dist/schemes/_entry-crud.d.ts +2 -0
  208. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  209. package/dist/schemes/_entry-crud.js +8 -5
  210. package/dist/schemes/_entry-crud.js.map +1 -1
  211. package/dist/schemes/_entry-crud.sql +15 -15
  212. package/dist/schemes/_entry-find.d.ts +2 -1
  213. package/dist/schemes/_entry-find.d.ts.map +1 -1
  214. package/dist/schemes/_entry-find.js +31 -19
  215. package/dist/schemes/_entry-find.js.map +1 -1
  216. package/dist/schemes/_entry-manifest.d.ts +2 -2
  217. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  218. package/dist/schemes/_entry-manifest.js +10 -8
  219. package/dist/schemes/_entry-manifest.js.map +1 -1
  220. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  221. package/dist/schemes/_entry-ops.js +9 -7
  222. package/dist/schemes/_entry-ops.js.map +1 -1
  223. package/dist/schemes/_path-scope.d.ts.map +1 -1
  224. package/dist/schemes/_path-scope.js +12 -4
  225. package/dist/schemes/_path-scope.js.map +1 -1
  226. package/dist/schemes/_search-index.js +3 -3
  227. package/dist/schemes/_search-index.js.map +1 -1
  228. package/dist/schemes/exec-abort.js +2 -2
  229. package/dist/schemes/exec-abort.js.map +1 -1
  230. package/dist/schemes/exec-env.d.ts.map +1 -1
  231. package/dist/schemes/exec-env.js +7 -22
  232. package/dist/schemes/exec-env.js.map +1 -1
  233. package/dist/server/Daemon.d.ts +1 -0
  234. package/dist/server/Daemon.d.ts.map +1 -1
  235. package/dist/server/Daemon.js +45 -68
  236. package/dist/server/Daemon.js.map +1 -1
  237. package/dist/server/DrainSupervisor.d.ts +2 -3
  238. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  239. package/dist/server/DrainSupervisor.js +34 -6
  240. package/dist/server/DrainSupervisor.js.map +1 -1
  241. package/dist/server/EnvFunctionality.d.ts +4 -2
  242. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  243. package/dist/server/EnvFunctionality.js +23 -12
  244. package/dist/server/EnvFunctionality.js.map +1 -1
  245. package/dist/server/Functionality.d.ts.map +1 -1
  246. package/dist/server/Functionality.js +15 -8
  247. package/dist/server/Functionality.js.map +1 -1
  248. package/dist/server/FunctionalityManager.d.ts +1 -1
  249. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  250. package/dist/server/FunctionalityManager.js +5 -1
  251. package/dist/server/FunctionalityManager.js.map +1 -1
  252. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  253. package/dist/server/MembersFunctionality.js +12 -12
  254. package/dist/server/MembersFunctionality.js.map +1 -1
  255. package/dist/server/Retention.d.ts.map +1 -1
  256. package/dist/server/Retention.js +5 -5
  257. package/dist/server/Retention.js.map +1 -1
  258. package/dist/server/Retention.sql +49 -23
  259. package/dist/server/client-input.d.ts.map +1 -1
  260. package/dist/server/client-input.js +12 -3
  261. package/dist/server/client-input.js.map +1 -1
  262. package/dist/server/drain.sql +10 -9
  263. package/dist/server/lifecycle-recovery.sql +4 -1
  264. package/dist/service.d.ts.map +1 -1
  265. package/dist/service.js +9 -31
  266. package/dist/service.js.map +1 -1
  267. package/docs/copy-move.md +3 -0
  268. package/docs/env.md +32 -4
  269. package/docs/members.md +16 -1
  270. package/migrations/018_worker_owners.sql +1 -0
  271. package/migrations/019_interactive_owners.sql +1 -0
  272. package/migrations/020_log_projection.sql +1 -0
  273. package/migrations/021_packet_roles.sql +86 -0
  274. package/migrations/022_message_completion.sql +24 -0
  275. package/migrations/023_file_revisions.sql +54 -0
  276. package/migrations/024_proposal_decisions.sql +34 -0
  277. package/migrations/025_response_retention.sql +30 -0
  278. package/package.json +38 -34
  279. package/dist/schemes/_derivation-use.d.ts.map +0 -1
  280. package/dist/schemes/_derivation-use.js.map +0 -1
@@ -0,0 +1,54 @@
1
+ -- MIGRATE: 23 file revisions
2
+ -- Released in 3.2.0 and frozen ({§db-migrations}): a shape change is the next MIGRATE version, never an edit here.
3
+ -- {§file-snapshot-revision}: stat-only baselines cannot authorize content replacement.
4
+ -- Retain every projection; ordinary materialization supplies its complete revision.
5
+ UPDATE entries SET synced_sig = NULL WHERE scheme = 'file';
6
+
7
+ DROP TRIGGER entry_publication_insert;
8
+ DROP VIEW entry_publication;
9
+
10
+ CREATE VIEW entry_publication AS
11
+ SELECT NULL AS workspace_id, NULL AS scheme, NULL AS authority, NULL AS pathname,
12
+ NULL AS attributes, NULL AS default_channel, NULL AS output,
13
+ NULL AS channels, NULL AS created, NULL AS synced_sig
14
+ WHERE 0;
15
+
16
+ CREATE TRIGGER entry_publication_insert
17
+ INSTEAD OF INSERT ON entry_publication
18
+ BEGIN
19
+ SELECT CASE WHEN json_type(NEW.channels) IS NOT 'object'
20
+ THEN RAISE(ABORT, 'entry publication requires a channel object') END;
21
+ INSERT INTO entries (workspace_id, scheme, authority, pathname, attributes, default_channel, output, synced_sig)
22
+ VALUES (NEW.workspace_id, NEW.scheme, NEW.authority, NEW.pathname,
23
+ COALESCE(NEW.attributes, '{}'), NEW.default_channel, NEW.output, NEW.synced_sig)
24
+ ON CONFLICT (workspace_id, scheme, authority, pathname) DO UPDATE SET
25
+ attributes = COALESCE(NEW.attributes, entries.attributes),
26
+ default_channel = excluded.default_channel,
27
+ output = MAX(entries.output, excluded.output),
28
+ synced_sig = excluded.synced_sig;
29
+ DELETE FROM entry_channels WHERE entry_id = (
30
+ SELECT id FROM entries WHERE workspace_id = NEW.workspace_id
31
+ AND scheme = NEW.scheme AND authority = NEW.authority AND pathname = NEW.pathname
32
+ ) AND name NOT IN (SELECT key FROM json_each(NEW.channels));
33
+ UPDATE entry_channels
34
+ SET content = json_extract(c.value, '$.content'),
35
+ mimetype = json_extract(c.value, '$.mimetype'),
36
+ weight = json_extract(c.value, '$.weight'),
37
+ content_hash = json_extract(c.value, '$.content_hash'),
38
+ state = json_extract(c.value, '$.state'),
39
+ producer_result = json_extract(c.value, '$.producer_result')
40
+ FROM (SELECT key, value FROM json_each(NEW.channels)) AS c
41
+ WHERE entry_channels.name = c.key
42
+ AND entry_channels.entry_id = (
43
+ SELECT id FROM entries WHERE workspace_id = NEW.workspace_id
44
+ AND scheme = NEW.scheme AND authority = NEW.authority AND pathname = NEW.pathname
45
+ );
46
+ INSERT INTO entry_channels (entry_id, name, content, mimetype, weight, content_hash, state, producer_result)
47
+ SELECT e.id, c.key, json_extract(c.value, '$.content'), json_extract(c.value, '$.mimetype'),
48
+ json_extract(c.value, '$.weight'), json_extract(c.value, '$.content_hash'),
49
+ json_extract(c.value, '$.state'), json_extract(c.value, '$.producer_result')
50
+ FROM entries e, json_each(NEW.channels) c
51
+ WHERE e.workspace_id = NEW.workspace_id AND e.scheme = NEW.scheme
52
+ AND e.authority = NEW.authority AND e.pathname = NEW.pathname
53
+ AND NOT EXISTS (SELECT 1 FROM entry_channel_rows r WHERE r.entry_id = e.id AND r.name = c.key);
54
+ END;
@@ -0,0 +1,34 @@
1
+ -- MIGRATE: 24 proposal decisions
2
+ -- Released in 3.2.0 and frozen ({§db-migrations}): a shape change is the next MIGRATE version, never an edit here.
3
+ -- {§proposal-decision-evidence}: authority precedes effects; results cannot replace decisions.
4
+ CREATE TABLE proposal_decisions (
5
+ log_entry_id INTEGER PRIMARY KEY REFERENCES log_entries(id) ON DELETE CASCADE,
6
+ decision TEXT NOT NULL CHECK (decision IN ('accept', 'reject', 'cancel')),
7
+ resolver TEXT NOT NULL CHECK (length(resolver) > 0),
8
+ body TEXT,
9
+ outcome TEXT,
10
+ decided_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
11
+ ) STRICT;
12
+
13
+ CREATE TRIGGER proposal_decision_insert
14
+ BEFORE INSERT ON proposal_decisions
15
+ BEGIN
16
+ SELECT CASE WHEN NOT EXISTS (
17
+ SELECT 1 FROM log_entries le JOIN workers w ON w.id = le.worker_id
18
+ WHERE le.id = NEW.log_entry_id AND le.state = 'proposed'
19
+ AND (NEW.resolver = '_plurnk' OR NEW.resolver = w.owner)
20
+ ) THEN RAISE(ABORT, 'proposal decision requires a pending operation and its resolving authority') END;
21
+ END;
22
+
23
+ CREATE TRIGGER proposal_decision_immutable
24
+ BEFORE UPDATE ON proposal_decisions
25
+ BEGIN
26
+ SELECT RAISE(ABORT, 'proposal decisions are immutable');
27
+ END;
28
+
29
+ CREATE TRIGGER proposal_decision_history_lifetime
30
+ BEFORE DELETE ON proposal_decisions
31
+ WHEN EXISTS (SELECT 1 FROM log_entries WHERE id = OLD.log_entry_id)
32
+ BEGIN
33
+ SELECT RAISE(ABORT, 'proposal decisions belong to operation history');
34
+ END;
@@ -0,0 +1,30 @@
1
+ -- MIGRATE: 25 response retention
2
+ -- Released in 3.2.0 and frozen ({§db-migrations}): a shape change is the next MIGRATE version, never an edit here.
3
+ -- {§retention-policy}: one logical call owns retirement of all its captured payloads.
4
+ ALTER TABLE inference_calls ADD COLUMN payloads_retired_at TEXT;
5
+
6
+ CREATE TRIGGER inference_payload_retirement_insert
7
+ BEFORE INSERT ON inference_calls WHEN NEW.payloads_retired_at IS NOT NULL
8
+ BEGIN
9
+ SELECT RAISE(ABORT, 'inference payloads cannot open retired');
10
+ END;
11
+
12
+ CREATE TRIGGER inference_payload_retirement_once
13
+ BEFORE UPDATE OF payloads_retired_at ON inference_calls
14
+ WHEN OLD.payloads_retired_at IS NOT NULL OR NEW.payloads_retired_at IS NULL
15
+ OR NEW.state = 'pending'
16
+ OR NOT EXISTS (SELECT 1 FROM turns WHERE id = NEW.turn_id AND completed_at IS NOT NULL)
17
+ OR EXISTS (SELECT 1 FROM provider_requests WHERE inference_call_id = NEW.id AND state = 'pending')
18
+ BEGIN
19
+ SELECT RAISE(ABORT, 'inference payload retirement requires completed work and occurs once');
20
+ END;
21
+
22
+ CREATE TRIGGER provider_request_payload_immutable
23
+ BEFORE UPDATE OF evidence ON provider_requests
24
+ WHEN OLD.state <> 'pending' AND NOT (
25
+ OLD.evidence IS NOT NULL AND NEW.evidence IS NULL
26
+ AND EXISTS (SELECT 1 FROM inference_calls WHERE id = OLD.inference_call_id AND payloads_retired_at IS NOT NULL)
27
+ )
28
+ BEGIN
29
+ SELECT RAISE(ABORT, 'provider request payload is immutable except through retention');
30
+ END;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-service",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-contracts contract.",
5
5
  "keywords": [
6
6
  "plurnk",
@@ -67,7 +67,8 @@
67
67
  "build:dist": "tsc -p tsconfig.build.json",
68
68
  "build:sql": "node --conditions=plurnk-dev scripts/copy-sql.mjs",
69
69
  "build:info": "node scripts/write-build-info.mjs",
70
- "build": "npm run build:clean && npm run build:dist && npm run build:sql && npm run build:info",
70
+ "build:posix": "node --conditions=plurnk-dev scripts/generate-posix.mjs",
71
+ "build": "npm run build:clean && npm run build:dist && npm run build:sql && npm run build:info && npm run build:posix",
71
72
  "build:global:install": "npm run build && npm install -g .",
72
73
  "build:global:uninstall": "npm uninstall -g @plurnk/plurnk-service",
73
74
  "build:local:install": "node --conditions=plurnk-dev scripts/install-sandbox.mjs install",
@@ -77,36 +78,37 @@
77
78
  "release:check": "npm run deps:audit && npm run test:installation",
78
79
  "prepublishOnly": "npm run deps:audit && npm run test:installation",
79
80
  "prepack": "npm run build",
80
- "report:floor": "node --conditions=plurnk-dev --import=./test/setup.ts --env-file-if-exists=.env.defaults scripts/floor-report.mjs"
81
+ "report:floor": "node --conditions=plurnk-dev --import=./test/setup.ts --env-file-if-exists=.env.defaults scripts/floor-report.mjs",
82
+ "report:sql": "node --conditions=plurnk-dev scripts/sql-report.mjs"
81
83
  },
82
84
  "dependencies": {
83
85
  "@opentelemetry/api": "^1.9.1",
84
- "@opentelemetry/context-async-hooks": "^2.11.0",
85
- "@opentelemetry/exporter-metrics-otlp-http": "^0.222.0",
86
- "@opentelemetry/exporter-trace-otlp-http": "^0.222.0",
87
- "@opentelemetry/resources": "^2.11.0",
88
- "@opentelemetry/sdk-metrics": "^2.11.0",
89
- "@opentelemetry/sdk-trace-base": "^2.11.0",
90
- "@plurnk/plurnk-a2a": "3.0.0",
86
+ "@opentelemetry/context-async-hooks": "^2.12.0",
87
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.223.0",
88
+ "@opentelemetry/exporter-trace-otlp-http": "^0.223.0",
89
+ "@opentelemetry/resources": "^2.12.0",
90
+ "@opentelemetry/sdk-metrics": "^2.12.0",
91
+ "@opentelemetry/sdk-trace-base": "^2.12.0",
92
+ "@plurnk/plurnk-a2a": "3.1.1",
91
93
  "@plurnk/plurnk-agui": "3.0.0",
92
- "@plurnk/plurnk-contracts": "3.0.1",
93
- "@plurnk/plurnk-parser": "3.0.1",
94
- "@plurnk/plurnk-schedule": "3.0.0",
95
- "@plurnk/plurnk-skills": "3.0.0",
96
- "@plurnk/plurnk-execs": "3.0.0",
97
- "@plurnk/plurnk-execs-common": "2.0.1",
98
- "@plurnk/plurnk-execs-jq": "2.0.1",
99
- "@plurnk/plurnk-execs-sqlite": "2.0.1",
94
+ "@plurnk/plurnk-contracts": "3.2.0",
95
+ "@plurnk/plurnk-parser": "3.0.3",
96
+ "@plurnk/plurnk-schedule": "3.0.1",
97
+ "@plurnk/plurnk-skills": "3.0.1",
98
+ "@plurnk/plurnk-execs": "3.1.1",
99
+ "@plurnk/plurnk-execs-common": "2.0.2",
100
+ "@plurnk/plurnk-execs-jq": "2.0.2",
101
+ "@plurnk/plurnk-execs-sqlite": "2.0.2",
100
102
  "@plurnk/plurnk-hooks": "2.0.1",
101
- "@plurnk/plurnk-mcp": "3.0.0",
102
- "@plurnk/plurnk-meta": "2.0.2",
103
+ "@plurnk/plurnk-mcp": "3.0.1",
104
+ "@plurnk/plurnk-meta": "2.1.1",
103
105
  "@plurnk/plurnk-agent-plugins": "2.0.0",
104
106
  "@plurnk/plurnk-agent-skills": "2.0.1",
105
- "@plurnk/plurnk-mimetypes": "3.0.0",
107
+ "@plurnk/plurnk-mimetypes": "3.0.2",
106
108
  "@plurnk/plurnk-mimetypes-application-ipynb": "2.0.1",
107
109
  "@plurnk/plurnk-mimetypes-application-json": "2.0.1",
108
110
  "@plurnk/plurnk-mimetypes-application-jsonl": "2.0.1",
109
- "@plurnk/plurnk-mimetypes-application-xml": "2.0.1",
111
+ "@plurnk/plurnk-mimetypes-application-xml": "2.0.2",
110
112
  "@plurnk/plurnk-mimetypes-grammar-bash": "2.0.0",
111
113
  "@plurnk/plurnk-mimetypes-grammar-c": "2.0.0",
112
114
  "@plurnk/plurnk-mimetypes-grammar-cpp": "2.0.0",
@@ -135,29 +137,31 @@
135
137
  "@plurnk/plurnk-mimetypes-grammar-zig": "2.0.0",
136
138
  "@plurnk/plurnk-mimetypes-application-pdf": "2.0.1",
137
139
  "@plurnk/plurnk-mimetypes-image": "2.0.1",
138
- "@plurnk/plurnk-mimetypes-audio": "2.0.1",
140
+ "@plurnk/plurnk-mimetypes-audio": "2.0.2",
139
141
  "@plurnk/plurnk-mimetypes-text-csv": "2.0.1",
140
142
  "@plurnk/plurnk-mimetypes-text-diff": "2.0.1",
141
143
  "@plurnk/plurnk-mimetypes-text-dotenv": "2.0.1",
142
- "@plurnk/plurnk-mimetypes-text-html": "2.0.1",
144
+ "@plurnk/plurnk-mimetypes-text-html": "2.0.2",
143
145
  "@plurnk/plurnk-mimetypes-text-ini": "2.0.1",
144
146
  "@plurnk/plurnk-mimetypes-text-markdown": "2.0.1",
145
147
  "@plurnk/plurnk-mimetypes-text-plain": "2.0.1",
146
- "@plurnk/plurnk-models": "3.0.0",
147
- "@plurnk/plurnk-modules": "3.0.0",
148
- "@plurnk/plurnk-providers": "3.0.0",
149
- "@plurnk/plurnk-schemes": "3.0.0",
148
+ "@plurnk/plurnk-models": "3.0.1",
149
+ "@plurnk/plurnk-modules": "3.1.0",
150
+ "@plurnk/plurnk-providers": "3.0.2",
151
+ "@plurnk/plurnk-schemes": "3.1.1",
150
152
  "@plurnk/plurnk-schemes-http": "2.0.1",
151
- "@possumtech/sqlrite": "^6.5.3",
153
+ "@possumtech/sqlrite": "^6.6.1",
152
154
  "diff": "^9.0.0",
153
- "@plurnk/plurnk-digest": "3.0.0"
155
+ "glob": "^13.0.6",
156
+ "minimatch": "^10.2.6",
157
+ "@plurnk/plurnk-digest": "3.2.0"
154
158
  },
155
159
  "devDependencies": {
156
160
  "@a2a-js/sdk": "1.3.0",
157
- "@modelcontextprotocol/server": "2.0.0",
158
- "@opentelemetry/core": "^2.11.0",
161
+ "@modelcontextprotocol/server": "2.3.1",
162
+ "@opentelemetry/core": "^2.12.0",
159
163
  "marked": "^18.0.14",
160
- "zod": "4.6.5"
164
+ "zod": "4.6.6"
161
165
  },
162
166
  "homepage": "https://github.com/plurnk/plurnk-service/tree/main/plurnk-core#readme",
163
167
  "bugs": {
@@ -168,5 +172,5 @@
168
172
  "url": "git+https://github.com/plurnk/plurnk-service.git",
169
173
  "directory": "plurnk-core"
170
174
  },
171
- "gitHead": "9a63339d5a4db00f767a55407e0117190fa55f39"
175
+ "gitHead": "f96502a26d62a6f87b22950a9e2006348ac8a6bc"
172
176
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"_derivation-use.d.ts","sourceRoot":"","sources":["../../src/schemes/_derivation-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAMxC,MAAM,CAAC,OAAO,OAAO,aAAa;;IAY9B,OAAa,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMjE;IAED,OAAa,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAU3E;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_derivation-use.js","sourceRoot":"","sources":["../../src/schemes/_derivation-use.ts"],"names":[],"mappings":"AAIA,+FAA+F;AAC/F,kGAAkG;AAClG,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAU,UAAU,GAAG,IAAI,OAAO,EAAa,CAAC;IAEtD,MAAM,CAAC,MAAM,CAAC,EAAM;QAChB,IAAI,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACzC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAI,EAAM,EAAE,MAAwB;QACjD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,UAAU,KAAK,IAAI;YAAE,MAAM,KAAK,CAAC,UAAU,CAAC;QACzD,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC;YAAC,OAAO,MAAM,MAAM,EAAE,CAAC;QAAC,CAAC;gBACtB,CAAC;YAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,EAAM,EAAE,MAAwB;QACpD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAC9C,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC;YAAC,OAAO,MAAM,MAAM,EAAE,CAAC;QAAC,CAAC;gBACtB,CAAC;YACL,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;CACJ"}