@plurnk/plurnk-service 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/.env.defaults +24 -19
  2. package/INSTALL.md +20 -1
  3. package/SPEC.md +448 -121
  4. package/dist/build-info.json +1 -1
  5. package/dist/completions/_plurnk-service +1 -1
  6. package/dist/completions/plurnk-service.bash +1 -1
  7. package/dist/completions/plurnk-service.fish +1 -0
  8. package/dist/content/path-mimetype.d.ts.map +1 -1
  9. package/dist/content/path-mimetype.js +2 -8
  10. package/dist/content/path-mimetype.js.map +1 -1
  11. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  12. package/dist/core/AdmittedTurnExecutor.js +22 -10
  13. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  14. package/dist/core/BudgetReadout.d.ts +1 -3
  15. package/dist/core/BudgetReadout.d.ts.map +1 -1
  16. package/dist/core/BudgetReadout.js +43 -46
  17. package/dist/core/BudgetReadout.js.map +1 -1
  18. package/dist/{schemes/_derivation-use.d.ts → core/ContentUse.d.ts} +3 -3
  19. package/dist/core/ContentUse.d.ts.map +1 -0
  20. package/dist/{schemes/_derivation-use.js → core/ContentUse.js} +8 -7
  21. package/dist/core/ContentUse.js.map +1 -0
  22. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  23. package/dist/core/CoreSchemeServices.js +1 -0
  24. package/dist/core/CoreSchemeServices.js.map +1 -1
  25. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  26. package/dist/core/DataStatementRunner.js +8 -20
  27. package/dist/core/DataStatementRunner.js.map +1 -1
  28. package/dist/core/Dispatcher.d.ts +9 -1
  29. package/dist/core/Dispatcher.d.ts.map +1 -1
  30. package/dist/core/Dispatcher.js +151 -76
  31. package/dist/core/Dispatcher.js.map +1 -1
  32. package/dist/core/EditMutations.js +1 -1
  33. package/dist/core/EditMutations.js.map +1 -1
  34. package/dist/core/Engine.d.ts +1 -1
  35. package/dist/core/Engine.d.ts.map +1 -1
  36. package/dist/core/Engine.js +3 -3
  37. package/dist/core/Engine.js.map +1 -1
  38. package/dist/core/FileAddress.d.ts +12 -0
  39. package/dist/core/FileAddress.d.ts.map +1 -0
  40. package/dist/core/FileAddress.js +73 -0
  41. package/dist/core/FileAddress.js.map +1 -0
  42. package/dist/core/FilePublication.d.ts +15 -0
  43. package/dist/core/FilePublication.d.ts.map +1 -0
  44. package/dist/core/FilePublication.js +143 -0
  45. package/dist/core/FilePublication.js.map +1 -0
  46. package/dist/core/FileSnapshot.d.ts +26 -0
  47. package/dist/core/FileSnapshot.d.ts.map +1 -0
  48. package/dist/core/FileSnapshot.js +179 -0
  49. package/dist/core/FileSnapshot.js.map +1 -0
  50. package/dist/core/KillHandler.d.ts.map +1 -1
  51. package/dist/core/KillHandler.js +2 -1
  52. package/dist/core/KillHandler.js.map +1 -1
  53. package/dist/core/LoopLifecycle.sql +3 -2
  54. package/dist/core/MembershipMaterialization.d.ts.map +1 -1
  55. package/dist/core/MembershipMaterialization.js +87 -143
  56. package/dist/core/MembershipMaterialization.js.map +1 -1
  57. package/dist/core/MutationEffects.d.ts +2 -1
  58. package/dist/core/MutationEffects.d.ts.map +1 -1
  59. package/dist/core/MutationEffects.js +14 -1
  60. package/dist/core/MutationEffects.js.map +1 -1
  61. package/dist/core/PacketBuilder.d.ts.map +1 -1
  62. package/dist/core/PacketBuilder.js +16 -13
  63. package/dist/core/PacketBuilder.js.map +1 -1
  64. package/dist/core/PacketBuilder.sql +22 -0
  65. package/dist/core/PathGlob.d.ts +6 -0
  66. package/dist/core/PathGlob.d.ts.map +1 -0
  67. package/dist/core/PathGlob.js +24 -0
  68. package/dist/core/PathGlob.js.map +1 -0
  69. package/dist/core/ProposalLifecycle.d.ts +3 -1
  70. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  71. package/dist/core/ProposalLifecycle.js +46 -33
  72. package/dist/core/ProposalLifecycle.js.map +1 -1
  73. package/dist/core/ProposalLifecycle.sql +4 -0
  74. package/dist/core/ResourceBindings.d.ts.map +1 -1
  75. package/dist/core/ResourceBindings.js +4 -3
  76. package/dist/core/ResourceBindings.js.map +1 -1
  77. package/dist/core/ResourceSelector.d.ts +1 -2
  78. package/dist/core/ResourceSelector.d.ts.map +1 -1
  79. package/dist/core/ResourceSelector.js +30 -9
  80. package/dist/core/ResourceSelector.js.map +1 -1
  81. package/dist/core/ResourceTransfers.d.ts +1 -1
  82. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  83. package/dist/core/ResourceTransfers.js +26 -11
  84. package/dist/core/ResourceTransfers.js.map +1 -1
  85. package/dist/core/TurnDispositionHandler.d.ts +1 -1
  86. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  87. package/dist/core/TurnDispositionHandler.js +5 -3
  88. package/dist/core/TurnDispositionHandler.js.map +1 -1
  89. package/dist/core/TurnRunner.d.ts.map +1 -1
  90. package/dist/core/TurnRunner.js +6 -4
  91. package/dist/core/TurnRunner.js.map +1 -1
  92. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  93. package/dist/core/WorkerControlHandler.js +38 -2
  94. package/dist/core/WorkerControlHandler.js.map +1 -1
  95. package/dist/core/caps/SchemeCtxImpl.d.ts +2 -0
  96. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  97. package/dist/core/caps/SchemeCtxImpl.js +7 -0
  98. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  99. package/dist/core/fork.sql +2 -2
  100. package/dist/core/git-membership.d.ts +1 -0
  101. package/dist/core/git-membership.d.ts.map +1 -1
  102. package/dist/core/git-membership.js +9 -11
  103. package/dist/core/git-membership.js.map +1 -1
  104. package/dist/core/glob_match.js +3 -3
  105. package/dist/core/glob_match.js.map +1 -1
  106. package/dist/core/mutation-types.d.ts +4 -0
  107. package/dist/core/mutation-types.d.ts.map +1 -1
  108. package/dist/core/namespace.d.ts +4 -1
  109. package/dist/core/namespace.d.ts.map +1 -1
  110. package/dist/core/namespace.js +14 -3
  111. package/dist/core/namespace.js.map +1 -1
  112. package/dist/core/packet-wire.d.ts +1 -1
  113. package/dist/core/packet-wire.d.ts.map +1 -1
  114. package/dist/core/packet-wire.js +17 -11
  115. package/dist/core/packet-wire.js.map +1 -1
  116. package/dist/core/plurnk-uri.d.ts +4 -3
  117. package/dist/core/plurnk-uri.d.ts.map +1 -1
  118. package/dist/core/plurnk-uri.js +24 -12
  119. package/dist/core/plurnk-uri.js.map +1 -1
  120. package/dist/core/scheme-types.d.ts +2 -0
  121. package/dist/core/scheme-types.d.ts.map +1 -1
  122. package/dist/core/sqlite-synchronous.d.ts +2 -0
  123. package/dist/core/sqlite-synchronous.d.ts.map +1 -0
  124. package/dist/core/sqlite-synchronous.js +4 -0
  125. package/dist/core/sqlite-synchronous.js.map +1 -0
  126. package/dist/evidence/EvidenceReader.d.ts.map +1 -1
  127. package/dist/evidence/EvidenceReader.js +8 -1
  128. package/dist/evidence/EvidenceReader.js.map +1 -1
  129. package/dist/evidence/digest.sql +6 -1
  130. package/dist/man/plurnk-service.1 +35 -24
  131. package/dist/schemes/Env.d.ts +1 -1
  132. package/dist/schemes/Env.d.ts.map +1 -1
  133. package/dist/schemes/Env.js +2 -2
  134. package/dist/schemes/Env.js.map +1 -1
  135. package/dist/schemes/Exec.d.ts.map +1 -1
  136. package/dist/schemes/Exec.js +5 -1
  137. package/dist/schemes/Exec.js.map +1 -1
  138. package/dist/schemes/ExecutionInput.d.ts +2 -1
  139. package/dist/schemes/ExecutionInput.d.ts.map +1 -1
  140. package/dist/schemes/ExecutionInput.js +44 -6
  141. package/dist/schemes/ExecutionInput.js.map +1 -1
  142. package/dist/schemes/File.d.ts +1 -0
  143. package/dist/schemes/File.d.ts.map +1 -1
  144. package/dist/schemes/File.js +246 -269
  145. package/dist/schemes/File.js.map +1 -1
  146. package/dist/schemes/Log.d.ts.map +1 -1
  147. package/dist/schemes/Log.js +68 -8
  148. package/dist/schemes/Log.js.map +1 -1
  149. package/dist/schemes/Log.sql +24 -1
  150. package/dist/schemes/Worker.js +1 -1
  151. package/dist/schemes/Worker.js.map +1 -1
  152. package/dist/schemes/_entry-crud.d.ts +2 -0
  153. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  154. package/dist/schemes/_entry-crud.js +8 -5
  155. package/dist/schemes/_entry-crud.js.map +1 -1
  156. package/dist/schemes/_entry-crud.sql +15 -15
  157. package/dist/schemes/_entry-find.d.ts +1 -0
  158. package/dist/schemes/_entry-find.d.ts.map +1 -1
  159. package/dist/schemes/_entry-find.js +15 -10
  160. package/dist/schemes/_entry-find.js.map +1 -1
  161. package/dist/schemes/_entry-manifest.d.ts +2 -2
  162. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  163. package/dist/schemes/_entry-manifest.js +7 -5
  164. package/dist/schemes/_entry-manifest.js.map +1 -1
  165. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  166. package/dist/schemes/_entry-ops.js +9 -7
  167. package/dist/schemes/_entry-ops.js.map +1 -1
  168. package/dist/schemes/_path-scope.d.ts.map +1 -1
  169. package/dist/schemes/_path-scope.js +12 -4
  170. package/dist/schemes/_path-scope.js.map +1 -1
  171. package/dist/schemes/_search-index.js +3 -3
  172. package/dist/schemes/_search-index.js.map +1 -1
  173. package/dist/schemes/exec-env.d.ts.map +1 -1
  174. package/dist/schemes/exec-env.js +7 -22
  175. package/dist/schemes/exec-env.js.map +1 -1
  176. package/dist/server/Daemon.d.ts +7 -1
  177. package/dist/server/Daemon.d.ts.map +1 -1
  178. package/dist/server/Daemon.js +90 -69
  179. package/dist/server/Daemon.js.map +1 -1
  180. package/dist/server/DrainSupervisor.d.ts +3 -3
  181. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  182. package/dist/server/DrainSupervisor.js +46 -5
  183. package/dist/server/DrainSupervisor.js.map +1 -1
  184. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  185. package/dist/server/EnvFunctionality.js +19 -11
  186. package/dist/server/EnvFunctionality.js.map +1 -1
  187. package/dist/server/Functionality.d.ts.map +1 -1
  188. package/dist/server/Functionality.js +89 -45
  189. package/dist/server/Functionality.js.map +1 -1
  190. package/dist/server/FunctionalityManager.d.ts +2 -5
  191. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  192. package/dist/server/FunctionalityManager.js +10 -6
  193. package/dist/server/FunctionalityManager.js.map +1 -1
  194. package/dist/server/MembersFunctionality.d.ts +7 -8
  195. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  196. package/dist/server/MembersFunctionality.js +94 -62
  197. package/dist/server/MembersFunctionality.js.map +1 -1
  198. package/dist/server/MessageAbandonment.d.ts +7 -0
  199. package/dist/server/MessageAbandonment.d.ts.map +1 -0
  200. package/dist/server/MessageAbandonment.js +57 -0
  201. package/dist/server/MessageAbandonment.js.map +1 -0
  202. package/dist/server/Retention.d.ts.map +1 -1
  203. package/dist/server/Retention.js +5 -5
  204. package/dist/server/Retention.js.map +1 -1
  205. package/dist/server/Retention.sql +49 -23
  206. package/dist/server/Rollback.d.ts +29 -0
  207. package/dist/server/Rollback.d.ts.map +1 -0
  208. package/dist/server/Rollback.js +111 -0
  209. package/dist/server/Rollback.js.map +1 -0
  210. package/dist/server/drain.sql +9 -0
  211. package/dist/server/lifecycle-recovery.sql +4 -1
  212. package/dist/service.d.ts.map +1 -1
  213. package/dist/service.js +4 -0
  214. package/dist/service.js.map +1 -1
  215. package/docs/copy-move.md +3 -0
  216. package/docs/env.md +12 -6
  217. package/docs/members.md +30 -10
  218. package/migrations/023_file_revisions.sql +54 -0
  219. package/migrations/024_proposal_decisions.sql +34 -0
  220. package/migrations/025_response_retention.sql +30 -0
  221. package/migrations/026_message_obligations.sql +32 -0
  222. package/migrations/027_members_identity.sql +20 -0
  223. package/migrations/028_mutation_patch.sql +20 -0
  224. package/package.json +35 -34
  225. package/dist/schemes/_derivation-use.d.ts.map +0 -1
  226. package/dist/schemes/_derivation-use.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ import type { PlurnkStatement, RollbackReport } from "@plurnk/plurnk-contracts";
2
+ import type { Db } from "../core/Db.ts";
3
+ type Coordinate = {
4
+ loopSeq: number;
5
+ turnSeq: number;
6
+ sequence: number;
7
+ };
8
+ export interface RollbackSeam {
9
+ readonly db: Db;
10
+ projectRoot(workspaceId: number): Promise<string | null>;
11
+ executorTags(workspaceId: number): readonly string[];
12
+ apply(statement: PlurnkStatement): Promise<{
13
+ status: number;
14
+ problem?: {
15
+ detail?: string;
16
+ };
17
+ }>;
18
+ }
19
+ export default class Rollback {
20
+ #private;
21
+ static coordinate(to: string): Coordinate | null;
22
+ static run(seam: RollbackSeam, args: {
23
+ workspaceId: number;
24
+ workerId: number;
25
+ to: string;
26
+ }): Promise<RollbackReport>;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=Rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rollback.d.ts","sourceRoot":"","sources":["../../src/server/Rollback.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAQxC,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAIzE,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAErD,KAAK,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACjG;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;;IAEzB,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAK/C;IAED,OAAa,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAuCzH;CA6CJ"}
@@ -0,0 +1,111 @@
1
+ // {§rollback} — undo a worker's settled file mutations after one of its log coordinates. Each row's
2
+ // patch ({§log-mutation-patch}) is reversed against the file as it is now and written back as an
3
+ // ordinary operation of the acting client, so every step is a proposal, a row and a patch of its
4
+ // own; the first file that no longer holds what its mutation wrote stops the rollback where it is.
5
+ import { readFile } from "node:fs/promises";
6
+ import { join } from "node:path";
7
+ import { applyPatch, parsePatch, reversePatch } from "diff";
8
+ import { PlurnkParser } from "@plurnk/plurnk-parser";
9
+ import { entryAddress } from "../core/plurnk-uri.js";
10
+ import { daemonFailure } from "./daemon-results.js";
11
+ export default class Rollback {
12
+ // `<loop>/<turn>/<item>`, with or without the `log:///` prefix and a trailing `/<OP>`.
13
+ static coordinate(to) {
14
+ const match = /^(?:log:\/\/\/)?(\d+)\/(\d+)\/(\d+)(?:\/[A-Za-z]+)?$/u.exec(to.trim());
15
+ if (match === null)
16
+ return null;
17
+ const [loopSeq, turnSeq, sequence] = match.slice(1).map(Number);
18
+ return loopSeq > 0 && turnSeq > 0 && sequence > 0 ? { loopSeq: loopSeq, turnSeq: turnSeq, sequence: sequence } : null;
19
+ }
20
+ static async run(seam, args) {
21
+ const coordinate = Rollback.coordinate(args.to);
22
+ if (coordinate === null) {
23
+ throw daemonFailure("daemon:rollback", "coordinate-invalid", 400, `'${args.to}' is not a log coordinate.`, {
24
+ to: args.to, recovery: "Name the coordinate as <loop>/<turn>/<item>, as the log shows it.",
25
+ });
26
+ }
27
+ const at = `${coordinate.loopSeq}/${coordinate.turnSeq}/${coordinate.sequence}`;
28
+ const anchor = await seam.db.log_id_by_coordinate.get({
29
+ worker_id: args.workerId, loop_seq: coordinate.loopSeq, turn_seq: coordinate.turnSeq, sequence: coordinate.sequence,
30
+ });
31
+ if (anchor === undefined) {
32
+ throw daemonFailure("daemon:rollback", "coordinate-not-found", 404, `No log entry exists at log:///${at}.`, { to: at });
33
+ }
34
+ const root = await seam.projectRoot(args.workspaceId);
35
+ if (root === null) {
36
+ throw daemonFailure("daemon:rollback", "project-root-required", 400, "Rollback restores files, and this workspace has no project root.", {});
37
+ }
38
+ const rows = await seam.db.log_file_mutations_after.all({
39
+ worker_id: args.workerId, loop_seq: coordinate.loopSeq, turn_seq: coordinate.turnSeq, sequence: coordinate.sequence,
40
+ });
41
+ const restored = [];
42
+ const skipped = [];
43
+ const executors = seam.executorTags(args.workspaceId);
44
+ for (const row of rows) {
45
+ const rowCoordinate = `${row.loop_seq}/${row.turn_seq}/${row.sequence}`;
46
+ if (row.patch === null) {
47
+ // A file mutation that kept no patch: nothing is invented for it ({§log-mutation-patch}).
48
+ if (row.scheme === null || row.scheme === "file")
49
+ skipped.push({ coordinate: rowCoordinate, reason: "no-patch" });
50
+ continue;
51
+ }
52
+ // A row that wrote several files is reversed last file first.
53
+ for (const file of parsePatch(row.patch).toReversed()) {
54
+ const outcome = await Rollback.#reverse(seam, { root, executors, file, coordinate: rowCoordinate }, restored);
55
+ if (outcome === "already-reversed") {
56
+ skipped.push({ coordinate: rowCoordinate, reason: "already-reversed" });
57
+ continue;
58
+ }
59
+ if (outcome !== null)
60
+ return { to: at, restored, skipped, stopped: outcome };
61
+ }
62
+ }
63
+ return { to: at, restored, skipped, stopped: null };
64
+ }
65
+ static async #reverse(seam, { root, executors, file, coordinate }, restored) {
66
+ const path = file.oldFileName;
67
+ if (typeof path !== "string" || path.length === 0)
68
+ throw new Error(`log:///${coordinate} keeps a patch that names no file.`);
69
+ let current;
70
+ try {
71
+ current = await readFile(join(root, path), "utf8");
72
+ }
73
+ catch (cause) {
74
+ if (cause.code !== "ENOENT")
75
+ throw cause;
76
+ current = null;
77
+ }
78
+ const created = file.hunks.every((hunk) => hunk.oldLines === 0);
79
+ const removed = !created && file.hunks.every((hunk) => hunk.newLines === 0);
80
+ // A row whose forward patch still applies was reversed already, by an earlier rollback whose
81
+ // own rows live in the client's log: nothing to do for it, and nothing invented.
82
+ const alreadyReversed = () => applyPatch(current ?? "", file) !== false;
83
+ if (removed ? current !== null : current === null) {
84
+ if (alreadyReversed())
85
+ return "already-reversed";
86
+ return { coordinate, path, reason: "drift", detail: `'${path}' ${current === null ? "no longer exists" : "exists again"}; log:///${coordinate} ${removed ? "removed" : "wrote"} it.` };
87
+ }
88
+ const previous = applyPatch(current ?? "", reversePatch(file));
89
+ if (previous === false) {
90
+ if (alreadyReversed())
91
+ return "already-reversed";
92
+ return { coordinate, path, reason: "drift", detail: `'${path}' no longer holds what log:///${coordinate} wrote.` };
93
+ }
94
+ const action = created ? "delete" : removed ? "create" : "update";
95
+ const target = entryAddress("file", "", path, root);
96
+ const source = action === "delete"
97
+ ? `\`\`\`\`KILL (${target})\`\`\`\``
98
+ : `\`\`\`\`EDIT (${target})${action === "update" ? " <1,-1>" : ""}\n${previous}\n\`\`\`\``;
99
+ const { items } = PlurnkParser.parseClient(source, { executors: [...executors] });
100
+ const item = items[0];
101
+ if (items.length !== 1 || item?.kind !== "statement")
102
+ throw new Error(`rollback of log:///${coordinate} built an operation the parser refused: ${source.slice(0, 120)}`);
103
+ const result = await seam.apply(item.statement);
104
+ if (result.status >= 300) {
105
+ return { coordinate, path, reason: "refused", detail: result.problem?.detail ?? `The reversing operation answered ${result.status}.` };
106
+ }
107
+ restored.push({ coordinate, path, action });
108
+ return null;
109
+ }
110
+ }
111
+ //# sourceMappingURL=Rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rollback.js","sourceRoot":"","sources":["../../src/server/Rollback.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,15 @@ WHERE worker_id = $worker_id
52
52
  ORDER BY (status = 102) DESC, sequence ASC
53
53
  LIMIT 1;
54
54
 
55
+ -- PREP: drain_abandoned_messages
56
+ -- {§message-abandonment}: the messages other workers sent that this ended loop still holds without a completion.
57
+ SELECT m.path
58
+ FROM message_sources m
59
+ WHERE m.loop_id = $loop_id
60
+ AND m.source LIKE 'worker://%'
61
+ AND NOT EXISTS (SELECT 1 FROM message_completions c WHERE c.message_id = m.id)
62
+ ORDER BY m.ordinal ASC;
63
+
55
64
  -- PREP: drain_message_source
56
65
  SELECT l.worker_id, w.workspace_id, l.status
57
66
  FROM loops l JOIN workers w ON w.id = l.worker_id
@@ -72,7 +72,10 @@ SET state = 'failed',
72
72
  'type', 'https://problems.plurnk.xyz/lifecycle/recovery/owner-vanished',
73
73
  'title', 'Owner vanished',
74
74
  'status', 500,
75
- 'detail', 'The daemon restarted while this proposal was pending; its process-local owner no longer exists.',
75
+ 'detail', CASE WHEN EXISTS (
76
+ SELECT 1 FROM proposal_decisions pd WHERE pd.log_entry_id = log_entries.id AND pd.decision = 'accept'
77
+ ) THEN 'The daemon restarted after approval and before the operation result was saved; whether the effect completed is unknown. The operation was not replayed.'
78
+ ELSE 'The daemon restarted while this proposal was pending; its process-local owner no longer exists.' END,
76
79
  'instance', printf(
77
80
  'log:///%d/%d/%d/%s',
78
81
  (SELECT sequence FROM loops WHERE id = log_entries.loop_id),
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAsCA,MAAM,CAAC,OAAO,OAAO,OAAO;;IAmUxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqHjC;CACJ"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAuCA,MAAM,CAAC,OAAO,OAAO,OAAO;;IAsUxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqHjC;CACJ"}
package/dist/service.js CHANGED
@@ -8,6 +8,7 @@ import { fileURLToPath } from "node:url";
8
8
  import { dirname, resolve } from "node:path";
9
9
  import SqlRite from "@possumtech/sqlrite";
10
10
  import { sqlFunctionPaths } from "./core/sql-functions.js";
11
+ import { sqliteSynchronous } from "./core/sqlite-synchronous.js";
11
12
  import Daemon from "./server/Daemon.js";
12
13
  import HttpListener from "./server/HttpListener.js";
13
14
  import DaemonLock from "./server/DaemonLock.js";
@@ -106,6 +107,7 @@ export default class Service {
106
107
  return route.alias === undefined ? exact : `${route.alias}=${exact}`;
107
108
  }
108
109
  static async #validateConfiguration() {
110
+ sqliteSynchronous();
109
111
  Daemon.validateConfiguration();
110
112
  Daemon.validateWorkspaceConfiguration();
111
113
  await ServiceModules.validateConfiguration(workspacePaths(Service.#hostPaths, process.cwd()).configurationRoots.map(({ directory }) => directory));
@@ -141,6 +143,7 @@ export default class Service {
141
143
  return n;
142
144
  }
143
145
  static async #openDb(dbPath, exclusive = false) {
146
+ const synchronous = sqliteSynchronous();
144
147
  const tuning = {};
145
148
  for (const [env, opt] of [
146
149
  ["PLURNK_SERVICE_SQLITE_TIMEOUT", "timeout"],
@@ -165,6 +168,7 @@ export default class Service {
165
168
  try {
166
169
  const db = await SqlRite.open({
167
170
  path: dbPath,
171
+ synchronous,
168
172
  dir: [resolve(Service.#projectRoot, "migrations"), Service.#codeDir],
169
173
  functions: sqlFunctionPaths,
170
174
  ...tuning,
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/docs/copy-move.md CHANGED
@@ -25,6 +25,9 @@ Move the whole resulting channel to a new address:
25
25
 
26
26
  COPY leaves its source unchanged. MOVE removes the selected source region or
27
27
  channel after the destination succeeds; a failed destination leaves it intact.
28
+ A changed file source is preserved. If removal fails after the destination was
29
+ written, the result reports that destination; MOVE is not a transaction across
30
+ both resources ({§file-delete-revision}, {§move-cross-scheme-move}).
28
31
  Paths can address files, workspace entries, or readable streams. Stream content
29
32
  can be copied; MOVE cannot remove a stream's output. A log source contributes
30
33
  only its untrimmed content, and MOVE curates that source as KILL would.
package/docs/env.md CHANGED
@@ -19,12 +19,15 @@ existing environment.
19
19
 
20
20
  ## Your entries
21
21
 
22
- `add` sets one variable for every command you run from now on. The name is the
22
+ `add` declares and enables one variable for every command you run from now on. The name is the
23
23
  alias, `{ "value": "…" }` the definition, used verbatim: no interpolation, no
24
24
  escapes. It persists until you `remove` it. This is a registry, not a prefix —
25
25
  `CARGO_TARGET_DIR=/tmp/x cargo build` sets a value for one command; `add` sets
26
26
  it for all of them.
27
27
 
28
+ `replace` takes the same `{alias, definition}` to change a value, retaining its
29
+ enabledness. A new name is created enabled. Both verbs accept workspace scope.
30
+
28
31
  `disable` withdraws a name from your commands while keeping the entry listed;
29
32
  `enable` restores it. For an ambient name that is how `CI=1` goes away for you
30
33
  alone, without the operator changing anything. `remove` forgets your own entry;
@@ -66,10 +69,13 @@ outlives the loop: it runs until it exits or is KILLed. `turn` keeps the command
66
69
  only through the current turn. WAIT's duration bounds the wait for inspection,
67
70
  not the command's lifetime.
68
71
 
69
- ## Names you cannot set
72
+ ## Names managed elsewhere
70
73
 
71
- `PLURNK_*` and provider credential names are plurnk's own and never reach a
72
- command, so `add` refuses them and tells you why.
74
+ `PLURNK_*` and provider credential names are reserved in `env` entries and
75
+ invocation overrides. Plurnk configuration belongs in the environment cascade;
76
+ READ `skill://plurnk/.env.defaults` for its reference. An MCP definition can
77
+ explicitly bind an operator credential without adding it to every command's
78
+ environment; READ `worker:///_plurnk/plurnk/mcp.md` for that setup.
73
79
 
74
80
  ## Finding a name
75
81
 
@@ -95,8 +101,8 @@ value, verbatim. The ordinary verbs reach it:
95
101
  ```
96
102
 
97
103
  A write is your own layer, never the workspace's or the operator's. `EDIT` sets the value
98
- (the body, whole: a value has no lines to scope) as `add` does for your worker; `KILL`
104
+ (the body, whole: a value has no lines to scope) as `replace` does for your worker; `KILL`
99
105
  retires the name from your commands as `remove` does for an entry you own and as
100
106
  `disable` does for one you inherited, so the inherited definition is kept and can be
101
107
  enabled again. Names plurnk reserves — its own configuration and provider credentials —
102
- are not resources and are refused as they are at `add`.
108
+ are not resources and are refused as they are at `add` and `replace`.
package/docs/members.md CHANGED
@@ -12,7 +12,7 @@ that set.
12
12
  | A file is a member because | How it got there |
13
13
  | --- | --- |
14
14
  | git tracks it | it was committed or staged (`git ls-files`), refreshed every turn |
15
- | a definition includes it | an enabled `members` definition — a gitignore-style glob such as `docs/**` |
15
+ | a definition includes it | an enabled `members` definition — a shell-path glob such as `docs/**` |
16
16
  | plurnk created it | a file your accepted `EDIT`, `COPY`, or `MOVE` wrote gets an exact creation record; it is a member without any `git add` |
17
17
 
18
18
  An exclusion (`!glob`) wins over every inclusion. A model definition never
@@ -50,8 +50,8 @@ candidate: its `provenance.kind` is the verdict and its `summary` the reason.
50
50
  - **Untracked, scope `root` or `namespace`**: a definition makes it a member
51
51
  from the next turn.
52
52
 
53
- ```members (add) <!-- include the generated reports -->
54
- {"alias": "reports", "definition": {"glob": "build/*.json"}}
53
+ ```members (add) <!-- include the generated reports; each glob is one definition -->
54
+ {"files": ["build/*.json"]}
55
55
  ```
56
56
 
57
57
  - **Untracked, scope `none`** (an operator narrowed it): the refusal names the
@@ -71,6 +71,14 @@ candidate: its `provenance.kind` is the verdict and its `summary` the reason.
71
71
  - **Excluded by `!glob`**: an exclusion outranks every inclusion, and a model
72
72
  definition cannot lift it; only the user can.
73
73
 
74
+ - **Outside the project root** (`../notes.md`, or an absolute path beyond the
75
+ root): no model definition reaches it; only a members definition under the
76
+ operator's namespace scope admits it. File operands beginning with `~/`
77
+ resolve from the daemon user's home; `./~/` names a literal project
78
+ directory. Members globs remain project-relative, not home shorthand.
79
+ A command runs on the host from the project root, and its output is a stream
80
+ the worker reads.
81
+
74
82
  ## Files you create
75
83
 
76
84
  An `EDIT` to a path that does not exist creates it when the file-creation
@@ -78,12 +86,24 @@ scope admits it (`PLURNK_SERVICE_FILE_CREATE_SCOPE`). The new file is a member i
78
86
  creation record — you never need `git add` for your own creations. Deleting
79
87
  it (`KILL`) retires the record.
80
88
 
89
+ ## Changes while you work
90
+
91
+ File mutations check their selected revision again at acceptance. If the file
92
+ changed, `409 edit-collision` preserves it: inspect the current file and rebuild
93
+ the operation. A MOVE may already have written its destination before source
94
+ cleanup conflicts; its receipt identifies that completed effect.
95
+
81
96
  ## Definitions belong to the workspace
82
97
 
83
- `list` shows every definition with its origin (`service` from the operator's
84
- environment, `workspace` from an `add`) and whether it is enabled. `enable` and
85
- `disable` flip one shared alias; `remove` forgets a workspace override and
86
- restores inheritance. Inherited definitions cannot be removed here. Changes
87
- apply to every worker.
88
- Each enabled definition is projected as
89
- `worker:///_plurnk/members/<alias>.md` showing what its glob resolved to.
98
+ A definition is its glob: `list` shows every definition with its origin (`service` from the
99
+ operator's environment, `workspace` from an `add`) and whether it is enabled. `enable` and
100
+ `disable` flip one definition, and `remove` forgets a workspace definition and restores
101
+ inheritance, each named by the glob as `list` shows it:
102
+
103
+ ```members (disable)
104
+ {"file": "build/*.json"}
105
+ ```
106
+
107
+ Inherited definitions cannot be removed here. Changes apply to every worker. Each enabled
108
+ definition is projected as `worker:///_plurnk/members/<glob>.md`, the glob percent-encoded,
109
+ showing what it resolved to.
@@ -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;
@@ -0,0 +1,32 @@
1
+ -- MIGRATE: 26 message obligations
2
+ -- Released in 3.3.0 and frozen ({§db-migrations}): a shape change is the next MIGRATE version, never an edit here.
3
+ -- {§worker-obligations}: a message a worker sent to another worker holds the sender, beside its live children
4
+ -- and open streams, until the recipient completes it ({§message-completion}) or the recipient's loop ends
5
+ -- ({§message-abandonment}). The two liveness views are recreated with that third column; no row changes.
6
+ DROP VIEW IF EXISTS loop_obligations;
7
+ DROP VIEW IF EXISTS worker_obligations;
8
+
9
+ CREATE VIEW worker_obligations AS
10
+ SELECT w.id AS worker_id,
11
+ EXISTS (
12
+ SELECT 1 FROM subscriptions s
13
+ WHERE s.worker_id = w.id AND s.closed_at IS NULL AND s.detached = 0
14
+ ) AS streams,
15
+ EXISTS (
16
+ SELECT 1 FROM workers c JOIN loops l ON l.worker_id = c.id
17
+ WHERE c.parent_worker_id = w.id AND l.status IN (100, 102, 202)
18
+ ) AS workers,
19
+ EXISTS (
20
+ SELECT 1 FROM loop_messages m
21
+ JOIN loops l ON l.id = m.loop_id
22
+ JOIN workers r ON r.id = l.worker_id
23
+ WHERE r.workspace_id = w.workspace_id
24
+ AND m.source = 'worker://' || w.name
25
+ AND l.status IN (100, 102, 202)
26
+ AND NOT EXISTS (SELECT 1 FROM message_completions c WHERE c.message_id = m.id)
27
+ ) AS messages
28
+ FROM workers w;
29
+
30
+ CREATE VIEW loop_obligations AS
31
+ SELECT l.id AS loop_id, held.streams, held.workers, held.messages
32
+ FROM loops l JOIN worker_obligations held ON held.worker_id = l.worker_id;
@@ -0,0 +1,20 @@
1
+ -- MIGRATE: 27 members identity
2
+ -- Released in 3.3.0 and frozen ({§db-migrations}): a shape change is the next MIGRATE version, never an edit here.
3
+ -- {§members-functionality} {§functionality-addressing}: a members definition is its glob. Workspace
4
+ -- definitions are re-keyed by their glob. A service-origin row held only an enabledness override
5
+ -- keyed by the operator's environment alias, which no longer names a definition, so it is dropped;
6
+ -- a state left with no definition is removed, as the coordinator persists none.
7
+ UPDATE workspace_module_state
8
+ SET state = (
9
+ SELECT json_object(
10
+ 'version', 1,
11
+ 'definitions', COALESCE(json_group_object(json_extract(value, '$.definition.glob'), json(value)), json('{}'))
12
+ )
13
+ FROM json_each(workspace_module_state.state, '$.definitions')
14
+ WHERE json_extract(value, '$.origin') = 'workspace'
15
+ )
16
+ WHERE namespace_owner = '@plurnk/plurnk-core/members';
17
+
18
+ DELETE FROM workspace_module_state
19
+ WHERE namespace_owner = '@plurnk/plurnk-core/members'
20
+ AND (SELECT COUNT(*) FROM json_each(workspace_module_state.state, '$.definitions')) = 0;