@plurnk/plurnk-service 1.8.0 → 1.9.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 (263) hide show
  1. package/.env.defaults +20 -0
  2. package/INSTALL.md +14 -16
  3. package/README.md +1 -1
  4. package/SPEC.md +635 -296
  5. package/digest-sql/channel-dispositions/dispositions.sql +2 -2
  6. package/digest-sql/entry-dispositions/dispositions.sql +2 -2
  7. package/dist/Paths.d.ts +1 -2
  8. package/dist/Paths.d.ts.map +1 -1
  9. package/dist/Paths.js +1 -9
  10. package/dist/Paths.js.map +1 -1
  11. package/dist/build-info.json +1 -1
  12. package/dist/core/ChannelWrite.d.ts +8 -3
  13. package/dist/core/ChannelWrite.d.ts.map +1 -1
  14. package/dist/core/ChannelWrite.js +40 -8
  15. package/dist/core/ChannelWrite.js.map +1 -1
  16. package/dist/core/ChannelWrite.sql +17 -4
  17. package/dist/core/CoreSchemeServices.d.ts +7 -3
  18. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  19. package/dist/core/CoreSchemeServices.js +8 -1
  20. package/dist/core/CoreSchemeServices.js.map +1 -1
  21. package/dist/core/Dispatcher.d.ts +9 -1
  22. package/dist/core/Dispatcher.d.ts.map +1 -1
  23. package/dist/core/Dispatcher.js +321 -221
  24. package/dist/core/Dispatcher.js.map +1 -1
  25. package/dist/core/Engine.d.ts +13 -4
  26. package/dist/core/Engine.d.ts.map +1 -1
  27. package/dist/core/Engine.js +44 -22
  28. package/dist/core/Engine.js.map +1 -1
  29. package/dist/core/Engine.sql +101 -81
  30. package/dist/core/EntryAddressBinding.d.ts +32 -0
  31. package/dist/core/EntryAddressBinding.d.ts.map +1 -0
  32. package/dist/core/EntryAddressBinding.js +93 -0
  33. package/dist/core/EntryAddressBinding.js.map +1 -0
  34. package/dist/core/ExecutorRegistry.d.ts +4 -4
  35. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  36. package/dist/core/ExecutorRegistry.js +28 -28
  37. package/dist/core/ExecutorRegistry.js.map +1 -1
  38. package/dist/core/LogBody.d.ts.map +1 -1
  39. package/dist/core/LogBody.js +19 -1
  40. package/dist/core/LogBody.js.map +1 -1
  41. package/dist/core/OperatorConfig.d.ts.map +1 -1
  42. package/dist/core/OperatorConfig.js +5 -2
  43. package/dist/core/OperatorConfig.js.map +1 -1
  44. package/dist/core/OverflowTurn.d.ts.map +1 -1
  45. package/dist/core/OverflowTurn.js +5 -1
  46. package/dist/core/OverflowTurn.js.map +1 -1
  47. package/dist/core/Owner.js +1 -1
  48. package/dist/core/Owner.js.map +1 -1
  49. package/dist/core/PacketBuilder.d.ts +5 -1
  50. package/dist/core/PacketBuilder.d.ts.map +1 -1
  51. package/dist/core/PacketBuilder.js +21 -11
  52. package/dist/core/PacketBuilder.js.map +1 -1
  53. package/dist/core/ProposalLifecycle.d.ts +4 -1
  54. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  55. package/dist/core/ProposalLifecycle.js +85 -26
  56. package/dist/core/ProposalLifecycle.js.map +1 -1
  57. package/dist/core/ReasoningEvent.d.ts +13 -0
  58. package/dist/core/ReasoningEvent.d.ts.map +1 -0
  59. package/dist/core/ReasoningEvent.js +6 -0
  60. package/dist/core/ReasoningEvent.js.map +1 -0
  61. package/dist/core/ResourceMutations.d.ts +15 -19
  62. package/dist/core/ResourceMutations.d.ts.map +1 -1
  63. package/dist/core/ResourceMutations.js +113 -38
  64. package/dist/core/ResourceMutations.js.map +1 -1
  65. package/dist/core/SchemeRegistry.d.ts +12 -11
  66. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  67. package/dist/core/SchemeRegistry.js +52 -47
  68. package/dist/core/SchemeRegistry.js.map +1 -1
  69. package/dist/core/ToolResources.d.ts.map +1 -1
  70. package/dist/core/ToolResources.js +20 -19
  71. package/dist/core/ToolResources.js.map +1 -1
  72. package/dist/core/Turn.d.ts +1 -1
  73. package/dist/core/Turn.d.ts.map +1 -1
  74. package/dist/core/TurnOps.d.ts +2 -2
  75. package/dist/core/TurnOps.d.ts.map +1 -1
  76. package/dist/core/TurnOps.js +14 -4
  77. package/dist/core/TurnOps.js.map +1 -1
  78. package/dist/core/TurnRunner.d.ts +46 -3
  79. package/dist/core/TurnRunner.d.ts.map +1 -1
  80. package/dist/core/TurnRunner.js +165 -78
  81. package/dist/core/TurnRunner.js.map +1 -1
  82. package/dist/core/WorkerName.d.ts +1 -0
  83. package/dist/core/WorkerName.d.ts.map +1 -1
  84. package/dist/core/WorkerName.js +2 -1
  85. package/dist/core/WorkerName.js.map +1 -1
  86. package/dist/core/WorkerName.sql +17 -2
  87. package/dist/core/WorkspaceGate.js +1 -1
  88. package/dist/core/WorkspaceGate.js.map +1 -1
  89. package/dist/core/caps/CapsResolve.d.ts +2 -2
  90. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  91. package/dist/core/caps/CapsResolve.js +5 -7
  92. package/dist/core/caps/CapsResolve.js.map +1 -1
  93. package/dist/core/caps/DbChannelCaps.d.ts +1 -1
  94. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  95. package/dist/core/caps/DbChannelCaps.js +13 -11
  96. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  97. package/dist/core/caps/DbEntryCaps.d.ts +5 -5
  98. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  99. package/dist/core/caps/DbEntryCaps.js +27 -30
  100. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  101. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  102. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  103. package/dist/core/caps/DbNotifyCaps.js +5 -3
  104. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  105. package/dist/core/caps/DbSubscriptionCaps.d.ts +3 -3
  106. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  107. package/dist/core/caps/DbSubscriptionCaps.js +16 -26
  108. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  109. package/dist/core/caps/SchemeCtxImpl.d.ts +6 -4
  110. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  111. package/dist/core/caps/SchemeCtxImpl.js +37 -5
  112. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  113. package/dist/core/file-creation-policy.d.ts +9 -0
  114. package/dist/core/file-creation-policy.d.ts.map +1 -0
  115. package/dist/core/file-creation-policy.js +25 -0
  116. package/dist/core/file-creation-policy.js.map +1 -0
  117. package/dist/core/fork.d.ts +4 -1
  118. package/dist/core/fork.d.ts.map +1 -1
  119. package/dist/core/fork.js +27 -15
  120. package/dist/core/fork.js.map +1 -1
  121. package/dist/core/fork.sql +35 -22
  122. package/dist/core/git-membership.d.ts +19 -1
  123. package/dist/core/git-membership.d.ts.map +1 -1
  124. package/dist/core/git-membership.js +225 -50
  125. package/dist/core/git-membership.js.map +1 -1
  126. package/dist/core/packet-wire.d.ts.map +1 -1
  127. package/dist/core/packet-wire.js +28 -19
  128. package/dist/core/packet-wire.js.map +1 -1
  129. package/dist/core/plurnk-uri.d.ts +13 -2
  130. package/dist/core/plurnk-uri.d.ts.map +1 -1
  131. package/dist/core/plurnk-uri.js +59 -21
  132. package/dist/core/plurnk-uri.js.map +1 -1
  133. package/dist/core/scheme-types.d.ts +1 -0
  134. package/dist/core/scheme-types.d.ts.map +1 -1
  135. package/dist/core/worker-ops.sql +10 -6
  136. package/dist/core/worker-settings.d.ts +1 -0
  137. package/dist/core/worker-settings.d.ts.map +1 -1
  138. package/dist/core/worker-settings.js +7 -0
  139. package/dist/core/worker-settings.js.map +1 -1
  140. package/dist/core/workspace-settings.d.ts +2 -0
  141. package/dist/core/workspace-settings.d.ts.map +1 -1
  142. package/dist/core/workspace-settings.js +5 -1
  143. package/dist/core/workspace-settings.js.map +1 -1
  144. package/dist/digest/Digest.d.ts.map +1 -1
  145. package/dist/digest/Digest.js +1 -1
  146. package/dist/digest/Digest.js.map +1 -1
  147. package/dist/digest/digest.sql +1 -1
  148. package/dist/schemes/Exec.d.ts +3 -2
  149. package/dist/schemes/Exec.d.ts.map +1 -1
  150. package/dist/schemes/Exec.js +55 -22
  151. package/dist/schemes/Exec.js.map +1 -1
  152. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  153. package/dist/schemes/ExecOutputScheme.js +5 -4
  154. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  155. package/dist/schemes/File.d.ts.map +1 -1
  156. package/dist/schemes/File.js +170 -80
  157. package/dist/schemes/File.js.map +1 -1
  158. package/dist/schemes/Prompt.d.ts +2 -3
  159. package/dist/schemes/Prompt.d.ts.map +1 -1
  160. package/dist/schemes/Prompt.js +4 -7
  161. package/dist/schemes/Prompt.js.map +1 -1
  162. package/dist/schemes/Skill.d.ts.map +1 -1
  163. package/dist/schemes/Skill.js +3 -1
  164. package/dist/schemes/Skill.js.map +1 -1
  165. package/dist/schemes/Worker.d.ts.map +1 -1
  166. package/dist/schemes/Worker.js +95 -49
  167. package/dist/schemes/Worker.js.map +1 -1
  168. package/dist/schemes/_entry-crud.d.ts +5 -5
  169. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  170. package/dist/schemes/_entry-crud.js +22 -17
  171. package/dist/schemes/_entry-crud.js.map +1 -1
  172. package/dist/schemes/_entry-crud.sql +58 -23
  173. package/dist/schemes/_entry-find.d.ts +3 -2
  174. package/dist/schemes/_entry-find.d.ts.map +1 -1
  175. package/dist/schemes/_entry-find.js +26 -25
  176. package/dist/schemes/_entry-find.js.map +1 -1
  177. package/dist/schemes/_entry-find.sql +10 -7
  178. package/dist/schemes/_entry-manifest.d.ts +2 -2
  179. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  180. package/dist/schemes/_entry-manifest.js +6 -5
  181. package/dist/schemes/_entry-manifest.js.map +1 -1
  182. package/dist/schemes/_entry-ops.d.ts +6 -5
  183. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  184. package/dist/schemes/_entry-ops.js +39 -46
  185. package/dist/schemes/_entry-ops.js.map +1 -1
  186. package/dist/schemes/_entry-ops.sql +9 -6
  187. package/dist/schemes/_entry-send.d.ts +2 -2
  188. package/dist/schemes/_entry-send.d.ts.map +1 -1
  189. package/dist/schemes/_entry-send.js +16 -14
  190. package/dist/schemes/_entry-send.js.map +1 -1
  191. package/dist/schemes/_search-index.d.ts.map +1 -1
  192. package/dist/schemes/_search-index.js +2 -0
  193. package/dist/schemes/_search-index.js.map +1 -1
  194. package/dist/server/Daemon.d.ts +42 -10
  195. package/dist/server/Daemon.d.ts.map +1 -1
  196. package/dist/server/Daemon.js +326 -248
  197. package/dist/server/Daemon.js.map +1 -1
  198. package/dist/server/DaemonModule.d.ts +84 -19
  199. package/dist/server/DaemonModule.d.ts.map +1 -1
  200. package/dist/server/DrainSupervisor.d.ts +3 -1
  201. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  202. package/dist/server/DrainSupervisor.js +11 -9
  203. package/dist/server/DrainSupervisor.js.map +1 -1
  204. package/dist/server/Functionality.d.ts +44 -0
  205. package/dist/server/Functionality.d.ts.map +1 -0
  206. package/dist/server/Functionality.js +422 -0
  207. package/dist/server/Functionality.js.map +1 -0
  208. package/dist/server/FunctionalityManager.d.ts +22 -0
  209. package/dist/server/FunctionalityManager.d.ts.map +1 -0
  210. package/dist/server/FunctionalityManager.js +121 -0
  211. package/dist/server/FunctionalityManager.js.map +1 -0
  212. package/dist/server/SkillsFunctionality.d.ts +61 -0
  213. package/dist/server/SkillsFunctionality.d.ts.map +1 -0
  214. package/dist/server/SkillsFunctionality.js +449 -0
  215. package/dist/server/SkillsFunctionality.js.map +1 -0
  216. package/dist/server/WorkerCapabilities.d.ts +21 -0
  217. package/dist/server/WorkerCapabilities.d.ts.map +1 -0
  218. package/dist/server/WorkerCapabilities.js +214 -0
  219. package/dist/server/WorkerCapabilities.js.map +1 -0
  220. package/dist/server/WorkerResidency.d.ts +40 -0
  221. package/dist/server/WorkerResidency.d.ts.map +1 -0
  222. package/dist/server/WorkerResidency.js +283 -0
  223. package/dist/server/WorkerResidency.js.map +1 -0
  224. package/dist/server/client-input.d.ts +1 -0
  225. package/dist/server/client-input.d.ts.map +1 -1
  226. package/dist/server/client-input.js +22 -1
  227. package/dist/server/client-input.js.map +1 -1
  228. package/dist/server/dispatch-as-plurnk.d.ts +2 -2
  229. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  230. package/dist/server/dispatch-as-plurnk.js +89 -25
  231. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  232. package/dist/server/drain.sql +11 -6
  233. package/dist/server/envelope.d.ts +6 -1
  234. package/dist/server/envelope.d.ts.map +1 -1
  235. package/dist/server/envelope.js +8 -2
  236. package/dist/server/envelope.js.map +1 -1
  237. package/dist/server/envelope.sql +11 -3
  238. package/dist/server/lifecycle-recovery.sql +13 -16
  239. package/dist/server/loopDocs.d.ts +2 -1
  240. package/dist/server/loopDocs.d.ts.map +1 -1
  241. package/dist/server/loopDocs.js +67 -51
  242. package/dist/server/loopDocs.js.map +1 -1
  243. package/dist/server/loopDocs.sql +14 -10
  244. package/dist/server/module-discovery.d.ts +2 -2
  245. package/dist/server/module-discovery.d.ts.map +1 -1
  246. package/dist/server/module-discovery.js +27 -2
  247. package/dist/server/module-discovery.js.map +1 -1
  248. package/dist/server/seam-entry-read.sql +9 -7
  249. package/dist/server/seam-log-read.sql +1 -1
  250. package/dist/server/seam-loop.sql +10 -1
  251. package/dist/server/seam-proposal-list.sql +4 -2
  252. package/dist/server/worker-capabilities.sql +19 -0
  253. package/dist/service.d.ts.map +1 -1
  254. package/dist/service.js +11 -1
  255. package/dist/service.js.map +1 -1
  256. package/migrations/001_schema.sql +486 -136
  257. package/package.json +34 -32
  258. package/dist/server/skillDocs.d.ts +0 -9
  259. package/dist/server/skillDocs.d.ts.map +0 -1
  260. package/dist/server/skillDocs.js +0 -212
  261. package/dist/server/skillDocs.js.map +0 -1
  262. package/dist/server/skillDocs.sql +0 -14
  263. package/dist/server/workspace-capabilities.sql +0 -19
package/dist/core/fork.js CHANGED
@@ -4,15 +4,16 @@
4
4
  // holding a deep copy of the parent's log: loops → turns → entries, with their
5
5
  // folded body intervals and attribution (`origin`/`source`) intact. It copies
6
6
  // nothing of the shared WORLD — commons-owned entries and the overlay are shared, never
7
- // copied, because the worker never owned them. It DOES inherit the parent's private
8
- // entries ({§worker-scheme}, owner-remapped parent → branch):
9
- // "fork = everything-in-common-but-name, then diverges". Its ambient observation
10
- // cursor is copied with that inherited history, then diverges independently.
7
+ // copied, because the worker never owned them. Worker-owned entries follow the
8
+ // registered scheme's explicit inheritance disposition; only quiescent snapshots
9
+ // are owner-remapped parent → branch. Its ambient observation cursor is copied
10
+ // with inherited history, then diverges independently.
11
11
  import WorkerName from "./WorkerName.js";
12
+ import { isGeneratedPathname } from "./plurnk-uri.js";
12
13
  export default class Fork {
13
14
  // Terminal loop statuses ({§lifecycle-terms}) — inherited loops outside this set are clamped to 200.
14
15
  static #TERMINAL_LOOP = new Set([200, 413, 429, 499, 500, 504, 508]);
15
- static async fork(db, parentWorkerId, name) {
16
+ static async fork(db, parentWorkerId, name, entryInheritance) {
16
17
  const parent = await db.fork_get_worker.get({ id: parentWorkerId });
17
18
  if (parent === undefined)
18
19
  throw new Error(`fork: worker ${parentWorkerId} not found`);
@@ -26,20 +27,18 @@ export default class Fork {
26
27
  qualifier: "fork",
27
28
  parentWorkerId,
28
29
  origin: parent.origin,
30
+ forkSnapshot: true,
29
31
  })
30
32
  : await db.fork_insert_worker.get({
31
33
  workspace_id: parent.workspace_id,
32
34
  name: WorkerName.assert(name),
33
35
  parent_worker_id: parentWorkerId,
34
36
  origin: parent.origin,
37
+ fork_snapshot: 1,
35
38
  });
36
39
  if (branch === undefined)
37
40
  throw new Error("fork: explicit branch worker insert returned no row");
38
41
  const branchWorkerId = branch.id;
39
- await db.fork_set_ambient_cursor.run({
40
- worker_id: branchWorkerId,
41
- ambient_event_cursor: parent.ambient_event_cursor,
42
- });
43
42
  await db.fork_set_generation_policy.run({
44
43
  worker_id: branchWorkerId,
45
44
  model_route_id: parent.model_route_id,
@@ -123,12 +122,25 @@ export default class Fork {
123
122
  tags_removed: effect.tags_removed,
124
123
  });
125
124
  }
126
- // {§worker-scheme} — inherit the parent's private scratch: same pathnames, the BRANCH as owner
127
- // ({§entry-owner} — ownership is the column, never the pathname), so the branch's private
128
- // workspace is independent and diverges on its own edits.
129
- const scratch = await db.fork_get_private_entries.all({ workspace_id: parent.workspace_id, owner_id: parentWorkerId });
130
- for (const s of scratch) {
131
- const ne = await db.fork_insert_private_entry.get({ workspace_id: parent.workspace_id, owner_id: branchWorkerId, scheme: s.scheme, pathname: s.pathname, attributes: s.attributes });
125
+ // {§machine-processes-entry-inheritance} — only a scheme-declared,
126
+ // quiescent snapshot crosses the fork. Live resources retain no phantom
127
+ // callback, and rederived/omitted entries carry no accidental bytes.
128
+ const ownedEntries = await db.fork_get_private_entries.all({ owner_id: parentWorkerId });
129
+ for (const s of ownedEntries) {
130
+ if (s.active === 1 || entryInheritance(s.scheme) !== "snapshot")
131
+ continue;
132
+ // {§worker-generated-subtree} — the child rederives Plurnk-generated
133
+ // documents from its inherited Functionality instead of inheriting bytes.
134
+ if (s.scheme === "worker" && isGeneratedPathname(s.pathname))
135
+ continue;
136
+ const ne = await db.fork_insert_private_entry.get({
137
+ workspace_id: parent.workspace_id,
138
+ owner_id: branchWorkerId,
139
+ scheme: s.scheme,
140
+ authority: s.authority,
141
+ pathname: s.pathname,
142
+ attributes: s.attributes,
143
+ });
132
144
  if (ne === undefined)
133
145
  throw new Error("fork: private entry copy returned no row");
134
146
  await db.fork_copy_entry_channels.run({ old_entry_id: s.id, new_entry_id: ne.id });
@@ -1 +1 @@
1
- {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/core/fork.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/core/fork.ts"],"names":[],"mappings":"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"}
@@ -7,22 +7,28 @@
7
7
  -- cursor from the same initial fork snapshot as its copied log.
8
8
 
9
9
  -- PREP: fork_get_worker
10
- SELECT workspace_id, name, origin, ambient_event_cursor,
10
+ SELECT workspace_id, name, origin,
11
11
  model_route_id, spawn_model_route_id, reasoning_policy
12
12
  FROM workers WHERE id = $id;
13
13
 
14
14
  -- PREP: fork_insert_worker
15
- -- A new worker in the parent's workspace; lineage recorded via parent_worker_id ({§lifecycle-terms}).
16
- INSERT INTO workers (workspace_id, name, parent_worker_id, origin)
17
- VALUES ($workspace_id, $name, $parent_worker_id, $origin)
15
+ -- A new child in the parent's workspace. A FORK captures the parent's cursor
16
+ -- and the occurrence high-water in this one INSERT; a fresh WORK passes 0 and
17
+ -- receives the ordinary creation baseline trigger instead.
18
+ INSERT INTO workers (
19
+ workspace_id, name, parent_worker_id, origin,
20
+ ambient_event_cursor, fork_event_boundary
21
+ )
22
+ SELECT $workspace_id, $name, $parent_worker_id, $origin,
23
+ CASE WHEN $fork_snapshot = 1 THEN parent.ambient_event_cursor ELSE NULL END,
24
+ CASE WHEN $fork_snapshot = 1 THEN COALESCE((
25
+ SELECT MAX(ae.id) FROM ambient_events ae WHERE ae.workspace_id = $workspace_id
26
+ ), 0) ELSE NULL END
27
+ FROM workers parent
28
+ WHERE parent.id = $parent_worker_id
29
+ AND parent.workspace_id = $workspace_id
18
30
  RETURNING id;
19
31
 
20
- -- PREP: fork_set_ambient_cursor
21
- -- Use the cursor captured before log copying. If the parent observes more while
22
- -- the fork is in flight, the branch stays conservatively behind and replays the
23
- -- copied event ids idempotently rather than skipping unseen history.
24
- UPDATE workers SET ambient_event_cursor = $ambient_event_cursor WHERE id = $worker_id;
25
-
26
32
  -- PREP: fork_set_generation_policy
27
33
  -- A branch copies durable worker policy by value, then diverges independently.
28
34
  UPDATE workers
@@ -94,8 +100,8 @@ FROM log_entries WHERE worker_id = $worker_id ORDER BY id;
94
100
 
95
101
  -- PREP: fork_insert_log_entry
96
102
  -- RETURNING the new id so the caller can copy the row's classifications onto it ({§log-item-tags}).
97
- INSERT INTO log_entries (worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id, op, delimiter, signal, scheme, username, password, hostname, port, pathname, query, fragment, lineMarker, tx, mimetype_tx, rx, mimetype_rx, status_rx, weight, state, outcome, attrs, folded)
98
- VALUES ($worker_id, $loop_id, $turn_id, $sequence, $at, $origin, $source, $ambient_event_id, $op, $delimiter, $signal, $scheme, $username, $password, $hostname, $port, $pathname, $query, $fragment, $lineMarker, $tx, $mimetype_tx, $rx, $mimetype_rx, $status_rx, $weight, $state, $outcome, $attrs, $folded)
103
+ INSERT INTO log_entries (worker_id, loop_id, turn_id, sequence, at, origin, source, ambient_event_id, inherited_history, op, delimiter, signal, scheme, username, password, hostname, port, pathname, query, fragment, lineMarker, tx, mimetype_tx, rx, mimetype_rx, status_rx, weight, state, outcome, attrs, folded)
104
+ VALUES ($worker_id, $loop_id, $turn_id, $sequence, $at, $origin, $source, $ambient_event_id, 1, $op, $delimiter, $signal, $scheme, $username, $password, $hostname, $port, $pathname, $query, $fragment, $lineMarker, $tx, $mimetype_tx, $rx, $mimetype_rx, $status_rx, $weight, $state, $outcome, $attrs, $folded)
99
105
  RETURNING id;
100
106
 
101
107
  -- PREP: fork_copy_log_tags
@@ -133,22 +139,29 @@ VALUES (
133
139
  $tags_removed
134
140
  );
135
141
 
136
- -- {§worker-scheme} — a fork inherits the parent's private entries, distinct
137
- -- from the shared workspace world above: "fork = everything-in-common-but-name, then diverges". The
138
- -- entries are deep-copied (new ids) with the owner remapped (parent → branch), so
139
- -- the branch's scratch is independent — it edits its own without touching the parent's.
142
+ -- {§machine-processes-entry-inheritance} — core enumerates the parent's
143
+ -- Worker-owned entries; the registered scheme decides whether each is copied,
144
+ -- rederived, or omitted. A copied snapshot gets a new id and remapped owner.
140
145
 
141
146
  -- PREP: fork_get_private_entries
142
- -- The parent's private entries. Attributes ride along; channel copying below
143
- -- retains each content-addressed derivation pointer with its exact content.
144
- SELECT id, scheme, pathname, attributes
145
- FROM entries WHERE workspace_id = $workspace_id AND owner_id = $owner_id ORDER BY id;
147
+ -- The parent's Worker-owned entries. The caller applies each registered
148
+ -- scheme's {§manifest-entry-inheritance}; active entries are never eligible for
149
+ -- a snapshot because their process-local producer cannot be cloned.
150
+ SELECT e.id, e.scheme, e.authority, e.pathname, e.attributes,
151
+ EXISTS (
152
+ SELECT 1 FROM entry_channels c
153
+ WHERE c.entry_id = e.id AND c.state = 'active'
154
+ ) AS active
155
+ FROM entries e
156
+ WHERE e.owner_id = $owner_id
157
+ ORDER BY e.id;
146
158
 
147
159
  -- PREP: fork_insert_private_entry
148
160
  -- A private entry copy with the branch as owner. synced_sig/membership_origin are NULL
149
161
  -- (scratch is never disk-synced nor a file member); version defaults 0.
150
- INSERT INTO entries (workspace_id, owner_id, scheme, pathname, attributes)
151
- VALUES ($workspace_id, $owner_id, $scheme, $pathname, $attributes)
162
+ INSERT INTO entries (owner_id, scheme, authority, pathname, attributes)
163
+ SELECT $owner_id, $scheme, $authority, $pathname, $attributes
164
+ FROM workers WHERE id = $owner_id AND workspace_id = $workspace_id
152
165
  RETURNING id;
153
166
 
154
167
  -- PREP: fork_copy_entry_channels
@@ -7,11 +7,29 @@ export interface FsDivergence {
7
7
  before: string;
8
8
  after: string;
9
9
  }
10
+ export type FileCreationAdmission = {
11
+ ok: true;
12
+ incorporation: "git" | "explicit-pick" | "create-pick";
13
+ } | {
14
+ ok: false;
15
+ code: string;
16
+ status: 403;
17
+ detail: string;
18
+ extensions: Readonly<Record<string, unknown>>;
19
+ };
20
+ export type FileCreationIncorporation = {
21
+ origin: "git" | "constraint";
22
+ generatedPick: boolean;
23
+ };
10
24
  export default class GitMembership {
11
25
  #private;
12
- static wouldGitAdmit(root: string, key: string, signal?: AbortSignal): Promise<boolean>;
13
26
  static stageFile(root: string, key: string, signal?: AbortSignal): Promise<void>;
14
27
  static projectRepository(db: Db, workspaceId: number, signal?: AbortSignal): Promise<string | null>;
28
+ static planCreation(db: Db, workspaceId: number, key: string, signal?: AbortSignal): Promise<FileCreationAdmission>;
29
+ static incorporateCreation(db: Db, workspaceId: number, entryId: number, root: string, key: string, admission: Extract<FileCreationAdmission, {
30
+ ok: true;
31
+ }>, signal?: AbortSignal): Promise<FileCreationIncorporation>;
32
+ static removeGeneratedPick(db: Db, workspaceId: number, key: string): Promise<unknown>;
15
33
  static resolveGitMembership(db: Db, workspaceId: number, signal: AbortSignal | undefined): Promise<string[]>;
16
34
  static resolveMembershipEffects(db: Db, workspaceId: number, signal: AbortSignal | undefined): Promise<{
17
35
  members: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"git-membership.d.ts","sourceRoot":"","sources":["../../src/core/git-membership.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAuDD,MAAM,CAAC,OAAO,OAAO,aAAa;;IAc9B,OAAa,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5F;IAED,OAAa,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrF;IA8CD,OAAa,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKxG;IAmJD,OAAa,oBAAoB,CAC7B,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;IASD,OAAa,wBAAwB,CACjC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAChC,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB5F;IAoOD,OAAa,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAcjF;CAcJ"}
1
+ {"version":3,"file":"git-membership.d.ts","sourceRoot":"","sources":["../../src/core/git-membership.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AA6BD,MAAM,MAAM,qBAAqB,GAC3B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,aAAa,EAAE,KAAK,GAAG,eAAe,GAAG,aAAa,CAAC;CAC1D,GACC;IACE,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACjD,CAAC;AAEN,MAAM,MAAM,yBAAyB,GAAG;IACpC,MAAM,EAAE,KAAK,GAAG,YAAY,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;CAC1B,CAAC;AAkCF,MAAM,CAAC,OAAO,OAAO,aAAa;;IAU9B,OAAa,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;IA+CD,OAAa,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKxG;IAwCD,OAAa,YAAY,CACrB,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAwEhC;IAKD,OAAa,mBAAmB,CAC5B,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,OAAO,CAAC,qBAAqB,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC,EACvD,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC,CAiCpC;IAED,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAErF;IAyLD,OAAa,oBAAoB,CAC7B,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnB;IASD,OAAa,wBAAwB,CACjC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAChC,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB5F;IA4PD,OAAa,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAcjF;CAcJ"}