@plurnk/plurnk-service 1.4.0 → 1.6.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 (302) hide show
  1. package/.env.defaults +37 -31
  2. package/INSTALL.md +16 -11
  3. package/README.md +1 -0
  4. package/SPEC.md +631 -397
  5. package/dist/Paths.d.ts.map +1 -1
  6. package/dist/Paths.js +2 -3
  7. package/dist/Paths.js.map +1 -1
  8. package/dist/build-info.json +1 -1
  9. package/dist/content/edit-collision.d.ts +5 -0
  10. package/dist/content/edit-collision.d.ts.map +1 -0
  11. package/dist/content/edit-collision.js +14 -0
  12. package/dist/content/edit-collision.js.map +1 -0
  13. package/dist/content/edit-receipt.d.ts +3 -2
  14. package/dist/content/edit-receipt.d.ts.map +1 -1
  15. package/dist/content/edit-receipt.js +58 -13
  16. package/dist/content/edit-receipt.js.map +1 -1
  17. package/dist/content/index.d.ts +5 -1
  18. package/dist/content/index.d.ts.map +1 -1
  19. package/dist/content/index.js +4 -1
  20. package/dist/content/index.js.map +1 -1
  21. package/dist/content/line-anchors.d.ts +41 -0
  22. package/dist/content/line-anchors.d.ts.map +1 -0
  23. package/dist/content/line-anchors.js +191 -0
  24. package/dist/content/line-anchors.js.map +1 -0
  25. package/dist/content/line-marker.d.ts +7 -3
  26. package/dist/content/line-marker.d.ts.map +1 -1
  27. package/dist/content/line-marker.js +2 -1
  28. package/dist/content/line-marker.js.map +1 -1
  29. package/dist/content/matcher.d.ts +1 -1
  30. package/dist/content/matcher.d.ts.map +1 -1
  31. package/dist/content/matcher.js +2 -2
  32. package/dist/content/matcher.js.map +1 -1
  33. package/dist/content/read-projector.d.ts +20 -0
  34. package/dist/content/read-projector.d.ts.map +1 -0
  35. package/dist/content/read-projector.js +122 -0
  36. package/dist/content/read-projector.js.map +1 -0
  37. package/dist/content/read-resolve.d.ts +2 -7
  38. package/dist/content/read-resolve.d.ts.map +1 -1
  39. package/dist/content/read-resolve.js +32 -107
  40. package/dist/content/read-resolve.js.map +1 -1
  41. package/dist/core/BranchReceipt.d.ts +0 -1
  42. package/dist/core/BranchReceipt.d.ts.map +1 -1
  43. package/dist/core/BranchReceipt.js +0 -3
  44. package/dist/core/BranchReceipt.js.map +1 -1
  45. package/dist/core/BudgetReadout.d.ts.map +1 -1
  46. package/dist/core/BudgetReadout.js +9 -2
  47. package/dist/core/BudgetReadout.js.map +1 -1
  48. package/dist/core/ChannelWrite.d.ts +3 -0
  49. package/dist/core/ChannelWrite.d.ts.map +1 -1
  50. package/dist/core/ChannelWrite.js +3 -3
  51. package/dist/core/ChannelWrite.js.map +1 -1
  52. package/dist/core/ChannelWrite.sql +4 -3
  53. package/dist/core/CoreSchemeServices.d.ts +10 -2
  54. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  55. package/dist/core/CoreSchemeServices.js.map +1 -1
  56. package/dist/core/Dispatcher.d.ts +14 -8
  57. package/dist/core/Dispatcher.d.ts.map +1 -1
  58. package/dist/core/Dispatcher.js +656 -312
  59. package/dist/core/Dispatcher.js.map +1 -1
  60. package/dist/core/DurableStatement.d.ts.map +1 -1
  61. package/dist/core/DurableStatement.js +2 -0
  62. package/dist/core/DurableStatement.js.map +1 -1
  63. package/dist/core/Engine.d.ts +24 -18
  64. package/dist/core/Engine.d.ts.map +1 -1
  65. package/dist/core/Engine.js +620 -392
  66. package/dist/core/Engine.js.map +1 -1
  67. package/dist/core/Engine.sql +188 -119
  68. package/dist/core/ExecutableTools.d.ts +10 -0
  69. package/dist/core/ExecutableTools.d.ts.map +1 -0
  70. package/dist/core/ExecutableTools.js +41 -0
  71. package/dist/core/ExecutableTools.js.map +1 -0
  72. package/dist/core/ExecutorRegistry.d.ts +3 -3
  73. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  74. package/dist/core/ExecutorRegistry.js +2 -2
  75. package/dist/core/ExecutorRegistry.js.map +1 -1
  76. package/dist/core/LogBody.d.ts +4 -1
  77. package/dist/core/LogBody.d.ts.map +1 -1
  78. package/dist/core/LogBody.js +46 -2
  79. package/dist/core/LogBody.js.map +1 -1
  80. package/dist/core/LogEntryProjection.d.ts +14 -0
  81. package/dist/core/LogEntryProjection.d.ts.map +1 -0
  82. package/dist/core/LogEntryProjection.js +38 -0
  83. package/dist/core/LogEntryProjection.js.map +1 -0
  84. package/dist/core/LoopLifecycle.d.ts +1 -2
  85. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  86. package/dist/core/LoopLifecycle.js +1 -4
  87. package/dist/core/LoopLifecycle.js.map +1 -1
  88. package/dist/core/LoopLifecycle.sql +1 -4
  89. package/dist/core/ModelCall.d.ts +27 -0
  90. package/dist/core/ModelCall.d.ts.map +1 -0
  91. package/dist/core/ModelCall.js +125 -0
  92. package/dist/core/ModelCall.js.map +1 -0
  93. package/dist/core/PacketBuilder.d.ts +13 -12
  94. package/dist/core/PacketBuilder.d.ts.map +1 -1
  95. package/dist/core/PacketBuilder.js +146 -118
  96. package/dist/core/PacketBuilder.js.map +1 -1
  97. package/dist/core/ProblemLog.d.ts.map +1 -1
  98. package/dist/core/ProblemLog.js +1 -0
  99. package/dist/core/ProblemLog.js.map +1 -1
  100. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  101. package/dist/core/ProposalLifecycle.js +3 -4
  102. package/dist/core/ProposalLifecycle.js.map +1 -1
  103. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  104. package/dist/core/ProviderInstantiate.js +23 -6
  105. package/dist/core/ProviderInstantiate.js.map +1 -1
  106. package/dist/core/SchemeRegistry.js +7 -7
  107. package/dist/core/SchemeRegistry.js.map +1 -1
  108. package/dist/core/StrikeRail.d.ts +5 -2
  109. package/dist/core/StrikeRail.d.ts.map +1 -1
  110. package/dist/core/StrikeRail.js +10 -7
  111. package/dist/core/StrikeRail.js.map +1 -1
  112. package/dist/core/TerminalResult.d.ts +16 -0
  113. package/dist/core/TerminalResult.d.ts.map +1 -0
  114. package/dist/core/TerminalResult.js +49 -0
  115. package/dist/core/TerminalResult.js.map +1 -0
  116. package/dist/core/caps/CapsResolve.d.ts +5 -1
  117. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  118. package/dist/core/caps/CapsResolve.js +9 -5
  119. package/dist/core/caps/CapsResolve.js.map +1 -1
  120. package/dist/core/caps/DbChannelCaps.d.ts +1 -1
  121. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  122. package/dist/core/caps/DbChannelCaps.js +6 -4
  123. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  124. package/dist/core/caps/DbEntryCaps.d.ts +2 -1
  125. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  126. package/dist/core/caps/DbEntryCaps.js +21 -8
  127. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  128. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  129. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  130. package/dist/core/caps/DbNotifyCaps.js +6 -4
  131. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  132. package/dist/core/caps/DbProjectionCaps.d.ts +1 -0
  133. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  134. package/dist/core/caps/DbProjectionCaps.js +29 -0
  135. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  136. package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -6
  137. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  138. package/dist/core/caps/DbSubscriptionCaps.js +27 -13
  139. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  140. package/dist/core/caps/SchemeCtxImpl.d.ts +11 -3
  141. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  142. package/dist/core/caps/SchemeCtxImpl.js +10 -8
  143. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  144. package/dist/core/fork.d.ts.map +1 -1
  145. package/dist/core/fork.js +23 -7
  146. package/dist/core/fork.js.map +1 -1
  147. package/dist/core/fork.sql +35 -14
  148. package/dist/core/git-iso.d.ts +3 -2
  149. package/dist/core/git-iso.d.ts.map +1 -1
  150. package/dist/core/git-iso.js +27 -12
  151. package/dist/core/git-iso.js.map +1 -1
  152. package/dist/core/git-membership.d.ts +1 -0
  153. package/dist/core/git-membership.d.ts.map +1 -1
  154. package/dist/core/git-membership.js +87 -26
  155. package/dist/core/git-membership.js.map +1 -1
  156. package/dist/core/git-state.d.ts +8 -1
  157. package/dist/core/git-state.d.ts.map +1 -1
  158. package/dist/core/git-state.js +36 -17
  159. package/dist/core/git-state.js.map +1 -1
  160. package/dist/core/namespace.d.ts +1 -0
  161. package/dist/core/namespace.d.ts.map +1 -1
  162. package/dist/core/namespace.js +20 -0
  163. package/dist/core/namespace.js.map +1 -1
  164. package/dist/core/optimistic-settlement.d.ts +2 -0
  165. package/dist/core/optimistic-settlement.d.ts.map +1 -0
  166. package/dist/core/optimistic-settlement.js +14 -0
  167. package/dist/core/optimistic-settlement.js.map +1 -0
  168. package/dist/core/packet-wire.d.ts +5 -2
  169. package/dist/core/packet-wire.d.ts.map +1 -1
  170. package/dist/core/packet-wire.js +318 -114
  171. package/dist/core/packet-wire.js.map +1 -1
  172. package/dist/core/provider-accounting.d.ts +24 -0
  173. package/dist/core/provider-accounting.d.ts.map +1 -0
  174. package/dist/core/provider-accounting.js +76 -0
  175. package/dist/core/provider-accounting.js.map +1 -0
  176. package/dist/core/results.d.ts +4 -2
  177. package/dist/core/results.d.ts.map +1 -1
  178. package/dist/core/results.js +6 -0
  179. package/dist/core/results.js.map +1 -1
  180. package/dist/core/scheme-types.d.ts +0 -12
  181. package/dist/core/scheme-types.d.ts.map +1 -1
  182. package/dist/core/scheme-types.js.map +1 -1
  183. package/dist/core/search-gate.d.ts +2 -2
  184. package/dist/core/search-gate.d.ts.map +1 -1
  185. package/dist/core/search-gate.js +8 -8
  186. package/dist/core/search-gate.js.map +1 -1
  187. package/dist/core/token-ruler.js +1 -1
  188. package/dist/core/token-ruler.js.map +1 -1
  189. package/dist/core/turn-scheduler.js +1 -1
  190. package/dist/core/turn-scheduler.js.map +1 -1
  191. package/dist/core/worker-ops.sql +4 -4
  192. package/dist/core/workspace-settings.js +1 -1
  193. package/dist/core/workspace-settings.js.map +1 -1
  194. package/dist/digest/Digest.d.ts.map +1 -1
  195. package/dist/digest/Digest.js +349 -76
  196. package/dist/digest/Digest.js.map +1 -1
  197. package/dist/digest/digest.sql +42 -16
  198. package/dist/schemes/Exec.d.ts +4 -4
  199. package/dist/schemes/Exec.d.ts.map +1 -1
  200. package/dist/schemes/Exec.js +167 -134
  201. package/dist/schemes/Exec.js.map +1 -1
  202. package/dist/schemes/ExecOutputScheme.d.ts +4 -5
  203. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  204. package/dist/schemes/ExecOutputScheme.js +12 -20
  205. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  206. package/dist/schemes/File.d.ts +5 -6
  207. package/dist/schemes/File.d.ts.map +1 -1
  208. package/dist/schemes/File.js +35 -41
  209. package/dist/schemes/File.js.map +1 -1
  210. package/dist/schemes/Log.d.ts +16 -5
  211. package/dist/schemes/Log.d.ts.map +1 -1
  212. package/dist/schemes/Log.js +229 -262
  213. package/dist/schemes/Log.js.map +1 -1
  214. package/dist/schemes/Log.sql +50 -27
  215. package/dist/schemes/Prompt.d.ts +3 -4
  216. package/dist/schemes/Prompt.d.ts.map +1 -1
  217. package/dist/schemes/Prompt.js +5 -5
  218. package/dist/schemes/Prompt.js.map +1 -1
  219. package/dist/schemes/Skill.d.ts +4 -5
  220. package/dist/schemes/Skill.d.ts.map +1 -1
  221. package/dist/schemes/Skill.js +3 -3
  222. package/dist/schemes/Skill.js.map +1 -1
  223. package/dist/schemes/Worker.d.ts +7 -7
  224. package/dist/schemes/Worker.d.ts.map +1 -1
  225. package/dist/schemes/Worker.js +99 -84
  226. package/dist/schemes/Worker.js.map +1 -1
  227. package/dist/schemes/_entry-crud.d.ts +2 -2
  228. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  229. package/dist/schemes/_entry-crud.js +29 -10
  230. package/dist/schemes/_entry-crud.js.map +1 -1
  231. package/dist/schemes/_entry-crud.sql +11 -17
  232. package/dist/schemes/_entry-find.d.ts +41 -14
  233. package/dist/schemes/_entry-find.d.ts.map +1 -1
  234. package/dist/schemes/_entry-find.js +159 -166
  235. package/dist/schemes/_entry-find.js.map +1 -1
  236. package/dist/schemes/_entry-find.sql +2 -21
  237. package/dist/schemes/_entry-graph.sql +1 -1
  238. package/dist/schemes/_entry-manifest.d.ts +5 -17
  239. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  240. package/dist/schemes/_entry-manifest.js +28 -24
  241. package/dist/schemes/_entry-manifest.js.map +1 -1
  242. package/dist/schemes/_entry-ops.d.ts +13 -8
  243. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  244. package/dist/schemes/_entry-ops.js +98 -119
  245. package/dist/schemes/_entry-ops.js.map +1 -1
  246. package/dist/schemes/_entry-ops.sql +31 -6
  247. package/dist/schemes/_entry-semantic.d.ts +5 -7
  248. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  249. package/dist/schemes/_entry-semantic.js +10 -31
  250. package/dist/schemes/_entry-semantic.js.map +1 -1
  251. package/dist/schemes/_entry-semantic.sql +2 -2
  252. package/dist/schemes/_entry-send.js +4 -4
  253. package/dist/schemes/_entry-send.js.map +1 -1
  254. package/dist/schemes/_search-index.d.ts.map +1 -1
  255. package/dist/schemes/_search-index.js +16 -6
  256. package/dist/schemes/_search-index.js.map +1 -1
  257. package/dist/schemes/exec-abort.js +2 -2
  258. package/dist/schemes/exec-abort.js.map +1 -1
  259. package/dist/server/BranchBatches.d.ts +1 -0
  260. package/dist/server/BranchBatches.d.ts.map +1 -1
  261. package/dist/server/BranchBatches.js +1 -0
  262. package/dist/server/BranchBatches.js.map +1 -1
  263. package/dist/server/Daemon.d.ts +6 -8
  264. package/dist/server/Daemon.d.ts.map +1 -1
  265. package/dist/server/Daemon.js +238 -68
  266. package/dist/server/Daemon.js.map +1 -1
  267. package/dist/server/DaemonModule.d.ts +3 -3
  268. package/dist/server/DaemonModule.d.ts.map +1 -1
  269. package/dist/server/branch-batch.sql +3 -1
  270. package/dist/server/client-input.d.ts +2 -1
  271. package/dist/server/client-input.d.ts.map +1 -1
  272. package/dist/server/client-input.js +7 -1
  273. package/dist/server/client-input.js.map +1 -1
  274. package/dist/server/drain.sql +8 -7
  275. package/dist/server/envelope.d.ts +0 -2
  276. package/dist/server/envelope.d.ts.map +1 -1
  277. package/dist/server/envelope.js +0 -1
  278. package/dist/server/envelope.js.map +1 -1
  279. package/dist/server/envelope.sql +3 -4
  280. package/dist/server/lifecycle-recovery.sql +44 -1
  281. package/dist/server/logEntry.d.ts +2 -1
  282. package/dist/server/logEntry.d.ts.map +1 -1
  283. package/dist/server/logEntry.js +15 -2
  284. package/dist/server/logEntry.js.map +1 -1
  285. package/dist/server/logEntry.sql +5 -1
  286. package/dist/service.d.ts.map +1 -1
  287. package/dist/service.js +13 -1
  288. package/dist/service.js.map +1 -1
  289. package/migrations/001_schema.sql +730 -221
  290. package/package.json +53 -46
  291. package/dist/core/BudgetOverflow.d.ts +0 -23
  292. package/dist/core/BudgetOverflow.d.ts.map +0 -1
  293. package/dist/core/BudgetOverflow.js +0 -61
  294. package/dist/core/BudgetOverflow.js.map +0 -1
  295. package/dist/core/caps/DbTagCaps.d.ts +0 -10
  296. package/dist/core/caps/DbTagCaps.d.ts.map +0 -1
  297. package/dist/core/caps/DbTagCaps.js +0 -44
  298. package/dist/core/caps/DbTagCaps.js.map +0 -1
  299. package/dist/matrix/live-specimen.d.ts +0 -9
  300. package/dist/matrix/live-specimen.d.ts.map +0 -1
  301. package/dist/matrix/live-specimen.js +0 -37
  302. package/dist/matrix/live-specimen.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  // The entry catalog ({§packet-catalog}) — the complete, unranked directory for
2
- // one addressed owner. FIND(**) serves it recursively; FIND(*) projects it as
2
+ // one addressed owner. Recursive FIND serves it recursively; shallow FIND projects it as
3
3
  // a one-level map in _entry-find. An omitted owner selects the shared commons.
4
- // Each item carries its address, optional stream lifecycle and tags, and addressable
5
- // channels. Search indexing is owned separately by SearchIndex.
4
+ // Each item is a non-empty, default-first array of addressable channels.
5
+ // Search indexing is owned separately by SearchIndex.
6
6
  import { PathSyntax } from "@plurnk/plurnk-contracts";
7
7
  import { renderAddress } from "../core/plurnk-uri.js";
8
8
  import Owner from "../core/Owner.js";
@@ -24,27 +24,16 @@ export default class EntryManifest {
24
24
  owner_id: resolvedOwnerId,
25
25
  });
26
26
  const rows = schemeFilter === undefined ? all : all.filter((row) => row.scheme === schemeFilter);
27
- const tagsById = new Map();
28
- const tagRows = await db.engine_list_owner_entry_tags.all({
29
- workspace_id: workspaceId,
30
- owner_id: resolvedOwnerId,
31
- });
32
- for (const { entry_id, tag } of tagRows) {
33
- const tags = tagsById.get(entry_id);
34
- if (tags === undefined)
35
- tagsById.set(entry_id, [tag]);
36
- else
37
- tags.push(tag);
38
- }
39
27
  const byEntry = new Map();
40
28
  for (const row of rows) {
41
29
  const path = EntryManifest.toPath(row.scheme, row.pathname);
42
30
  let entry = byEntry.get(path);
43
31
  if (entry === undefined) {
44
- entry = { path, channels: {} };
45
- const tags = tagsById.get(row.entry_id);
46
- if (tags !== undefined && tags.length > 0)
47
- entry.tags = tags;
32
+ entry = {
33
+ path,
34
+ defaultChannel: ctx.defaultChannelFor?.(row.scheme) ?? "body",
35
+ channels: [],
36
+ };
48
37
  byEntry.set(path, entry);
49
38
  }
50
39
  if (row.subscription_id !== null && entry.stream === undefined) {
@@ -69,17 +58,32 @@ export default class EntryManifest {
69
58
  catch {
70
59
  totalLines = row.content.length === 0 ? 0 : row.content.split("\n").length;
71
60
  }
72
- const defaultChannel = ctx.defaultChannelFor?.(row.scheme) ?? "body";
73
- const channelKey = row.channel === defaultChannel
61
+ const channelPath = row.channel === entry.defaultChannel
74
62
  ? entry.path
75
63
  : `${entry.path}#${PathSyntax.escapeTarget(row.channel)}`;
76
- entry.channels[channelKey] = {
64
+ entry.channels.push({
65
+ path: channelPath,
77
66
  mimetype: row.mimetype,
78
67
  tokens: tokenize(row.content),
79
68
  lines: totalLines,
80
- };
69
+ ...(row.channel === "body" && row.parse_issues !== null
70
+ ? { parseIssues: row.parse_issues }
71
+ : {}),
72
+ });
81
73
  }
82
- return [...byEntry.values()];
74
+ return [...byEntry.values()].map(({ path, defaultChannel, stream, channels }) => {
75
+ const defaultIndex = channels.findIndex((channel) => channel.path === path);
76
+ if (defaultIndex === -1) {
77
+ throw new Error(`catalog entry ${JSON.stringify(path)} has no ${JSON.stringify(defaultChannel)} default channel`);
78
+ }
79
+ const defaultItem = channels[defaultIndex];
80
+ const primary = stream === undefined ? defaultItem : { ...defaultItem, stream };
81
+ return [
82
+ primary,
83
+ ...channels.slice(0, defaultIndex),
84
+ ...channels.slice(defaultIndex + 1),
85
+ ];
86
+ });
83
87
  }
84
88
  }
85
89
  //# sourceMappingURL=_entry-manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-manifest.js","sourceRoot":"","sources":["../../src/schemes/_entry-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_entry-manifest.js","sourceRoot":"","sources":["../../src/schemes/_entry-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import type { EditStatement, ReadStatement } from "@plurnk/plurnk-contracts";
1
+ import type { RangeExtent, ReadStatement, TextRegion } from "@plurnk/plurnk-contracts";
2
2
  import type { PlurnkSchemeContext, SchemeManifest } from "../core/scheme-types.ts";
3
- import type { EditBatchReceipt } from "../content/index.ts";
4
- import type { TextRegion } from "@plurnk/plurnk-contracts";
5
- import { type MatchEvidence, type SchemeResultBase } from "../core/results.ts";
3
+ import type { EditBatchReceipt, LineAnchorPrecondition } from "../content/index.ts";
4
+ import { type SchemeResultBase } from "../core/results.ts";
5
+ import type { ResolvedEditStatement } from "@plurnk/plurnk-schemes";
6
6
  export type EditResult = SchemeResultBase & {
7
7
  entryId: number | null;
8
8
  channel: string | null;
@@ -14,17 +14,22 @@ export type ReadResult = SchemeResultBase & {
14
14
  channel: string | null;
15
15
  startLine?: number | null;
16
16
  region?: TextRegion;
17
- matches?: ReadonlyArray<MatchEvidence>;
17
+ range?: RangeExtent;
18
18
  reason?: string;
19
19
  awaitWorker?: string;
20
20
  };
21
21
  export type OpenFoldResult = SchemeResultBase;
22
+ interface ReadAddress {
23
+ readonly ownerId?: number;
24
+ readonly pathname?: string;
25
+ }
22
26
  export default class EntryOps {
23
27
  #private;
24
- static editWorkspaceEntryBatch(statements: readonly EditStatement[], ctx: PlurnkSchemeContext, manifest: SchemeManifest, explicitOwnerId?: number): Promise<EditResult>;
28
+ static editWorkspaceEntryBatch(statements: readonly ResolvedEditStatement[], ctx: PlurnkSchemeContext, manifest: SchemeManifest, explicitOwnerId?: number, precondition?: LineAnchorPrecondition | null): Promise<EditResult>;
25
29
  static deleteWorkspaceEntry(statement: {
26
- target: EditStatement["target"];
30
+ target: ResolvedEditStatement["target"];
27
31
  }, ctx: PlurnkSchemeContext, manifest: SchemeManifest, explicitOwnerId?: number): Promise<SchemeResultBase>;
28
- static readWorkspaceEntry(statement: ReadStatement, ctx: PlurnkSchemeContext, manifest: SchemeManifest, explicitOwnerId?: number): Promise<ReadResult>;
32
+ static readWorkspaceEntry(statement: ReadStatement, ctx: PlurnkSchemeContext, manifest: SchemeManifest, address?: ReadAddress): Promise<ReadResult>;
29
33
  }
34
+ export {};
30
35
  //# sourceMappingURL=_entry-ops.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-ops.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAWxF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,CAAC;AAStI,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG;IACxC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,QAAQ;;IA2DzB,OAAa,uBAAuB,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA0M5K;IAID,OAAa,oBAAoB,CAAC,SAAS,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8BzL;IAED,OAAa,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA2G3J;CACJ"}
1
+ {"version":3,"file":"_entry-ops.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAsB,MAAM,wBAAwB,CAAC;AAYxF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,CAAC;AAKtI,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG;IACxC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE9C,UAAU,WAAW;IACjB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;;IA2DzB,OAAa,uBAAuB,CAChC,UAAU,EAAE,SAAS,qBAAqB,EAAE,EAC5C,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,cAAc,EACxB,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,GAAE,sBAAsB,GAAG,IAAW,GACnD,OAAO,CAAC,UAAU,CAAC,CA0OrB;IAID,OAAa,oBAAoB,CAAC,SAAS,EAAE;QAAE,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAA;KAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8BjM;IAED,OAAa,kBAAkB,CAC3B,SAAS,EAAE,aAAa,EACxB,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,UAAU,CAAC,CA0DrB;CACJ"}
@@ -1,9 +1,11 @@
1
1
  import EntryCrud from "./_entry-crud.js";
2
- import { entryPathnameOf } from "../core/plurnk-uri.js";
2
+ import { entryPathnameOf, renderTarget } from "../core/plurnk-uri.js";
3
3
  import Owner from "../core/Owner.js";
4
4
  import EntryManifest from "./_entry-manifest.js";
5
- import { LineMarkerOps, MimetypeBinary, PathMimetype, ReadResolve, editReceipt } from "../content/index.js";
5
+ import { EditCollision, LineAnchors, LineMarkerOps, MimetypeBinary, PathMimetype, ReadProjector, editReceipt } from "../content/index.js";
6
6
  import Results from "../core/results.js";
7
+ import { contentHash } from "../core/content-hash.js";
8
+ import DbProjectionCaps from "../core/caps/DbProjectionCaps.js";
7
9
  export default class EntryOps {
8
10
  static #pathnameOf(statement) {
9
11
  const t = statement.target;
@@ -57,7 +59,8 @@ export default class EntryOps {
57
59
  return explicit;
58
60
  return Owner.commonsId(ctx.db, ctx.workspaceId);
59
61
  }
60
- static async editWorkspaceEntryBatch(statements, ctx, manifest, explicitOwnerId) {
62
+ static async editWorkspaceEntryBatch(statements, ctx, manifest, explicitOwnerId, precondition = null) {
63
+ LineAnchors.assertResolved(statements);
61
64
  const failure = (code, status, detail, fields, extensions = {}) => Results.failure(`scheme:${manifest.name}`, code, status, detail, fields, extensions);
62
65
  const statement = statements[0];
63
66
  if (statement === undefined) {
@@ -103,9 +106,17 @@ export default class EntryOps {
103
106
  // `worker:///users` → text/markdown (scheme manifest default).
104
107
  const channelManifestDefault = channels[targetChannel];
105
108
  const effectiveMimetype = await PathMimetype.resolveEntryMimetype(pathname, channelManifestDefault, ctx.mimetypes);
109
+ const channel = existing === undefined
110
+ ? undefined
111
+ : await db.ops_read_channel.get({
112
+ workspace_id: workspaceId,
113
+ scheme,
114
+ pathname,
115
+ channel: targetChannel,
116
+ owner_id: ownerId,
117
+ });
106
118
  // 415 on binary entries (SPEC.md {§op-invariants}).
107
119
  if (existing !== undefined) {
108
- const channel = await db.ops_read_channel.get({ ...{ workspace_id: workspaceId, scheme, pathname, channel: targetChannel }, owner_id: ownerId });
109
120
  if (channel !== undefined && await MimetypeBinary.isBinaryMimetype(channel.mimetype, ctx.mimetypes)) {
110
121
  return failure("binary-edit-unsupported", 415, `The #${targetChannel} channel is binary and cannot be edited.`, { entryId: existing.id, channel: targetChannel });
111
122
  }
@@ -115,26 +126,33 @@ export default class EntryOps {
115
126
  }
116
127
  // Read current content unconditionally for diff generation (M.12 —
117
128
  // surface diff in EDIT response so wrong-marker mistakes are visible).
118
- let originalContent = "";
119
- if (existing !== undefined) {
120
- const channel = await db.ops_read_channel.get({ ...{ workspace_id: workspaceId, scheme, pathname, channel: targetChannel }, owner_id: ownerId });
121
- originalContent = channel?.content ?? "";
129
+ const originalContent = channel?.content ?? "";
130
+ if (precondition !== null && !LineAnchors.satisfies(precondition, originalContent)) {
131
+ return EditCollision.result(precondition.identity, {
132
+ entryId: existing?.id ?? null,
133
+ channel: targetChannel,
134
+ });
122
135
  }
123
136
  // `<scope>` always addresses the selected channel's textual representation.
124
137
  // Structured query dialects locate content but never redefine mutation coordinates.
125
- // A CREATE (no existing entry) has nothing to scope into, so a markerless body
126
- // becomes the new entry's content. {§edit-marker-required-on-existing}: an
127
- // EXISTING entry has no easy-clobber path: a marker is REQUIRED, even for a
128
- // deliberate full rewrite (`<1,-1>` states that intent explicitly).
138
+ // A missing selected channel has nothing to scope into, so a markerless body
139
+ // becomes that channel's content. {§edit-marker-required-on-existing}: an
140
+ // existing selected channel has no easy-clobber path: a marker is REQUIRED,
141
+ // even for a deliberate full rewrite (`<1,-1>` states that intent explicitly).
129
142
  let newContent;
130
143
  let scopeNormalizations;
131
- if (existing !== undefined && statements.some(({ lineMarker }) => lineMarker === null)) {
132
- return failure("line-marker-required", 400, "EDIT of an existing entry requires a line marker.", { entryId: existing.id, channel: targetChannel }, {
144
+ const channelExists = channel !== undefined;
145
+ if (channelExists && existing === undefined) {
146
+ throw new Error("An entry channel cannot exist without its owning entry.");
147
+ }
148
+ const existingEntryId = existing?.id ?? null;
149
+ if (channelExists && statements.some(({ lineMarker }) => lineMarker === null)) {
150
+ return failure("line-marker-required", 400, "EDIT of an existing entry requires a line marker.", { entryId: existingEntryId, channel: targetChannel }, {
133
151
  recovery: "Use <1,-1> to replace the whole entry or select a narrower range.",
134
152
  retryable: false,
135
153
  });
136
154
  }
137
- if (existing !== undefined) {
155
+ if (channelExists) {
138
156
  const edits = statements.map((candidate) => ({
139
157
  marker: candidate.lineMarker,
140
158
  body: candidate.body ?? "",
@@ -143,7 +161,7 @@ export default class EntryOps {
143
161
  if (result.status !== 200) {
144
162
  return Results.assert({
145
163
  ...result,
146
- entryId: existing.id,
164
+ entryId: existingEntryId,
147
165
  channel: targetChannel,
148
166
  });
149
167
  }
@@ -159,31 +177,30 @@ export default class EntryOps {
159
177
  }
160
178
  newContent = statement.body ?? "";
161
179
  }
162
- // 304 no-op (SPEC {§edit}): an existing entry whose write would change nothing —
163
- // identical content and no new tag. Mirrors OPEN/FOLD's idempotence; hands the
180
+ // 304 no-op (SPEC {§edit}): an existing entry whose write would change nothing.
181
+ // Mirrors OPEN/FOLD's idempotence; hands the
164
182
  // model a "you already did this" signal instead of a phantom 200 it can't
165
183
  // distinguish from a real update.
166
- if (existing !== undefined && newContent === originalContent) {
167
- const signalTags = statements.flatMap(({ signal }) => Array.isArray(signal) ? signal : []);
168
- let addsTag = false;
169
- if (signalTags.length > 0) {
170
- const have = new Set((await db.crud_read_tags.all({ entry_id: existing.id })).map((r) => r.tag));
171
- addsTag = signalTags.some((t) => !have.has(t));
172
- }
173
- if (!addsTag)
174
- return {
175
- status: 304,
176
- entryId: existing.id,
177
- channel: targetChannel,
178
- ...(scopeNormalizations === undefined ? {} : { scopeNormalizations }),
179
- }; // {§edit-noop-304}
184
+ if (channelExists && newContent === originalContent) {
185
+ return {
186
+ status: 304,
187
+ entryId: existingEntryId,
188
+ channel: targetChannel,
189
+ ...(scopeNormalizations === undefined ? {} : { scopeNormalizations }),
190
+ }; // {§edit-noop-304}
180
191
  }
181
192
  let entryId;
182
193
  let createdNow;
183
194
  if (existing === undefined) {
184
- const row = await db.crud_insert_workspace_entry.get({ workspace_id: workspaceId, owner_id: ownerId, scheme, pathname });
185
- if (row === undefined)
186
- throw new Error("editWorkspaceEntry: insert returned no row");
195
+ const row = await db.ops_insert_workspace_entry_if_absent.get({
196
+ workspace_id: workspaceId,
197
+ owner_id: ownerId,
198
+ scheme,
199
+ pathname,
200
+ });
201
+ if (row === undefined) {
202
+ return EditCollision.result(precondition?.identity ?? EntryManifest.toPath(scheme, pathname), { entryId: null, channel: targetChannel });
203
+ }
187
204
  entryId = row.id;
188
205
  createdNow = true;
189
206
  }
@@ -193,30 +210,40 @@ export default class EntryOps {
193
210
  }
194
211
  if (ctx.tokenize === undefined)
195
212
  throw new Error("editWorkspaceEntry: ctx.tokenize is required for token accounting");
196
- await db.ops_upsert_channel.run({ entry_id: entryId, name: targetChannel, content: newContent, mimetype: effectiveMimetype, tokens: ctx.tokenize(newContent) }); // EDIT writes exactly the one resolved channel — {§per-entry-channels-edit-writes-only-body}
213
+ const write = {
214
+ entry_id: entryId,
215
+ name: targetChannel,
216
+ content: newContent,
217
+ mimetype: effectiveMimetype,
218
+ tokens: ctx.tokenize(newContent),
219
+ content_hash: contentHash(newContent),
220
+ };
221
+ const landed = channel === undefined
222
+ ? await db.ops_insert_channel_if_absent.get(write)
223
+ : await db.ops_update_channel_if_content.get({
224
+ ...write,
225
+ expected_content: originalContent,
226
+ });
227
+ if (landed === undefined) {
228
+ return EditCollision.result(precondition?.identity ?? EntryManifest.toPath(scheme, pathname), { entryId, channel: targetChannel });
229
+ }
230
+ // EDIT writes exactly the one resolved channel — {§per-entry-channels-edit-writes-only-body}.
197
231
  // Search derivation is not a write concern. SearchIndex attaches the
198
232
  // updated readable projection before the next model execution.
199
- // Tags apply additively — each signal tag is written, never replacing existing ones. {§edit-tags-additive}
200
- for (const candidate of statements) {
201
- if (!Array.isArray(candidate.signal))
202
- continue;
203
- for (const tag of candidate.signal) {
204
- await db.crud_write_tag.run({ entry_id: entryId, tag });
205
- }
206
- }
207
- const receiptEdits = existing === undefined
233
+ const receiptEdits = !channelExists
208
234
  ? [{ marker: { marks: [1, -1] }, body: newContent }]
209
235
  : statements.map((candidate) => ({ marker: candidate.lineMarker, body: candidate.body ?? "" }));
236
+ const parseIssues = await new DbProjectionCaps(ctx).parseIssues(newContent, effectiveMimetype);
210
237
  return {
211
238
  status: createdNow ? 201 : 200,
212
239
  entryId,
213
240
  channel: targetChannel,
214
- editReceipt: editReceipt(originalContent, newContent, receiptEdits),
241
+ editReceipt: editReceipt(originalContent, newContent, receiptEdits, parseIssues),
215
242
  ...(scopeNormalizations === undefined ? {} : { scopeNormalizations }),
216
243
  }; // {§edit-status-201-200}
217
244
  }
218
245
  // Owner-aware entry delete — the KILL counterpart of editWorkspaceEntry. Resolves
219
- // the exact owner-held row, then deletes by id (channels/tags CASCADE). 404 when absent.
246
+ // the exact owner-held row, then deletes it (including channels by CASCADE). 404 when absent.
220
247
  static async deleteWorkspaceEntry(statement, ctx, manifest, explicitOwnerId) {
221
248
  if (statement.target === null) {
222
249
  return Results.failure(`scheme:${manifest.name}`, "delete-target-required", 400, "KILL requires a target path.", {}, {
@@ -234,7 +261,7 @@ export default class EntryOps {
234
261
  await db.crud_delete_entry.run({ entry_id: existing.id });
235
262
  return { status: 200 };
236
263
  }
237
- static async readWorkspaceEntry(statement, ctx, manifest, explicitOwnerId) {
264
+ static async readWorkspaceEntry(statement, ctx, manifest, address = {}) {
238
265
  const failure = (code, status, detail, fields, extensions = {}) => Results.failure(`scheme:${manifest.name}`, code, status, detail, fields, extensions);
239
266
  if (statement.target === null) {
240
267
  return failure("read-target-required", 400, "READ requires a target path.", { content: null, mimetype: null, channel: null }, {
@@ -242,85 +269,37 @@ export default class EntryOps {
242
269
  retryable: false,
243
270
  });
244
271
  }
245
- const { db, workspaceId } = ctx;
246
- const { channels, defaultChannel } = manifest;
247
272
  // Scope by the manifest's persisted entries.scheme (storedScheme; absent →
248
273
  // name). File persists under the reserved 'file' scheme ({§entry-identity-no-null}).
249
274
  const scheme = EntryCrud.identityScheme(manifest);
250
- const fragment = EntryOps.#fragmentOf(statement);
251
- const pathname = EntryOps.#pathnameOf(statement);
252
- const targetChannel = EntryOps.#resolveChannel(fragment, channels, defaultChannel);
253
- if (targetChannel === null) {
254
- const miss = EntryOps.#channelMiss(fragment, scheme, pathname, channels, defaultChannel);
255
- return failure("channel-not-found", 400, miss.detail, { content: null, mimetype: null, channel: null }, miss.extensions);
256
- }
257
- const ownerId = await EntryOps.#ownerOf(explicitOwnerId, ctx);
258
- // An xpath is a question about the DOM — a fragmentless xpath READ routes to the raw `html`
259
- // channel (the archive the decisive markdown body was projected from). A fragment still wins.
260
- let readChannel = targetChannel;
261
- if (fragment === null && statement.body !== null && statement.body.dialect === "xpath") {
262
- const html = await db.ops_read_channel.get({ ...{ workspace_id: workspaceId, scheme, pathname, channel: "html" }, owner_id: ownerId });
263
- if (html !== undefined)
264
- readChannel = "html";
265
- }
266
- const row = await db.ops_read_channel.get({ ...{ workspace_id: workspaceId, scheme, pathname, channel: readChannel }, owner_id: ownerId });
275
+ const pathname = address.pathname ?? EntryOps.#pathnameOf(statement);
276
+ const selectedChannel = statement.target.kind === "url"
277
+ ? statement.target.fragment ?? manifest.defaultChannel
278
+ : manifest.defaultChannel;
279
+ const identity = statement.target.kind === "url"
280
+ ? renderTarget({
281
+ ...statement.target,
282
+ pathname,
283
+ fragment: selectedChannel === manifest.defaultChannel ? null : selectedChannel,
284
+ })
285
+ : renderTarget({ scheme: null, pathname });
286
+ if (identity === null)
287
+ throw new TypeError("READ resolved an unrenderable resource identity.");
288
+ const ownerId = await EntryOps.#ownerOf(address.ownerId, ctx);
289
+ const stored = await EntryCrud.readEntry(pathname, ctx, scheme, ownerId);
267
290
  // {§read-read-404} + {§fs-errno} — ENOENT carries its fact, the RESOLVED name in wire
268
291
  // canon: the model distinguishes wrong-address from wrong-range by the strings alone.
269
- if (row === undefined)
270
- return failure("entry-not-found", 404, `No entry exists at ${EntryManifest.toPath(scheme, pathname)}.`, { content: null, mimetype: null, channel: targetChannel });
271
- if (await MimetypeBinary.isBinaryMimetype(row.mimetype, ctx.mimetypes)) {
272
- return failure("binary-read-unsupported", 415, `The #${targetChannel} channel is binary and cannot be rendered.`, { content: null, mimetype: row.mimetype, channel: targetChannel });
273
- }
274
- // `[tag]` filter: entry must have ALL requested tags. Mismatch = 404
275
- // (entry doesn't match the tag-scoped READ).
276
- if (Array.isArray(statement.signal) && statement.signal.length > 0) {
277
- const entry = await db.crud_find_workspace_entry.get({ workspace_id: workspaceId, owner_id: ownerId, scheme, pathname });
278
- if (entry === undefined)
279
- return failure("entry-not-found", 404, `No entry exists at ${EntryManifest.toPath(scheme, pathname)}.`, { content: null, mimetype: null, channel: targetChannel });
280
- const tagRows = await db.crud_read_tags.all({ entry_id: entry.id });
281
- const have = new Set(tagRows.map((r) => r.tag));
282
- for (const want of statement.signal) {
283
- if (!have.has(want))
284
- return failure("tag-not-found", 404, `The entry does not carry the required '${want}' tag.`, { content: null, mimetype: null, channel: targetChannel });
285
- }
292
+ if (stored.entry === null) {
293
+ return failure("entry-not-found", 404, `No entry exists at ${EntryManifest.toPath(scheme, pathname)}.`, { content: null, mimetype: null, channel: null }, { target: EntryManifest.toPath(scheme, pathname) });
286
294
  }
287
- const r = await ReadResolve.resolve({
288
- content: row.content,
289
- mimetype: row.mimetype,
290
- lineMarker: statement.lineMarker,
291
- body: statement.body,
295
+ return ReadProjector.project({
296
+ statement,
297
+ manifest: { ...manifest, name: scheme },
298
+ target: EntryManifest.toPath(scheme, pathname),
299
+ identity,
300
+ representation: stored.entry,
292
301
  mimetypes: ctx.mimetypes,
293
302
  });
294
- if (r.status >= 400) {
295
- if (r.problem !== undefined) {
296
- return Results.assert({
297
- ...r,
298
- content: null,
299
- channel: readChannel,
300
- });
301
- }
302
- if (r.reason === undefined) {
303
- throw new Error(`EntryOps.readWorkspaceEntry: ReadResolve returned status ${r.status} without Problem Details or a diagnostic`);
304
- }
305
- return failure(r.status === 416
306
- ? "range-not-satisfiable"
307
- : r.status === 501
308
- ? "matcher-unavailable"
309
- : "read-resolution-failed", r.status, r.reason, { content: null, mimetype: r.mimetype, channel: readChannel }, {
310
- ...(r.range === undefined ? {} : { range: r.range, stage: "projection" }),
311
- ...(statement.body === null || r.status === 416
312
- ? {}
313
- : {
314
- stage: "matcher",
315
- dialect: statement.body.dialect,
316
- recovery: r.status === 501
317
- ? "Retry the READ without a content matcher."
318
- : "Correct or remove the matcher.",
319
- retryable: false,
320
- }),
321
- });
322
- }
323
- return { ...r, channel: readChannel }; // READ returns the resolved channel's content + mimetype — {§read-read-content}
324
303
  }
325
304
  }
326
305
  //# sourceMappingURL=_entry-ops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-ops.js","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,MAAM,kBAAkB,CAAC;AACrC,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG5G,OAAO,OAAsD,MAAM,oBAAoB,CAAC;AAgCxF,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,MAAM,CAAC,WAAW,CAAC,SAA8C;QAC7D,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/C,wEAAwE;QACxE,oEAAoE;QACpE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,SAA8C;QAC7D,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAChD,OAAO,CAAC,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,QAAuB,EAAE,QAAgC,EAAE,cAAsB;QACpG,MAAM,MAAM,GAAG,QAAQ,IAAI,cAAc,CAAC,CAAC,uKAAuK;QAClN,uEAAuE;QACvE,uEAAuE;QACvE,2EAA2E;QAC3E,IAAI,MAAM,KAAK,cAAc;YAAE,OAAO,MAAM,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,6FAA6F;QACrI,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,8FAA8F;IAC9F,6FAA6F;IAC7F,mGAAmG;IACnG,6CAA6C;IAC7C,MAAM,CAAC,YAAY,CACf,QAAuB,EACvB,MAAc,EACd,QAAgB,EAChB,QAAgC,EAChC,cAAsB;QAEtB,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3H,MAAM,gBAAgB,GAAG,QAAQ,IAAI,cAAc,CAAC;QACpD,OAAO;YACH,MAAM,EAAE,YAAY,gBAAgB,sBAAsB,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG;YACnG,UAAU,EAAE;gBACR,gBAAgB;gBAChB,iBAAiB;gBACjB,GAAG,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;oBAC9B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,sCAAsC,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1H,SAAS,EAAE,KAAK;aACnB;SACJ,CAAC;IACN,CAAC;IAED,yFAAyF;IACzF,8FAA8F;IAC9F,mEAAmE;IACnE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAA4B,EAAE,GAAwB;QACxE,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,UAAoC,EAAE,GAAwB,EAAE,QAAwB,EAAE,eAAwB;QACnJ,MAAM,OAAO,GAAG,CACZ,IAAY,EACZ,MAAc,EACd,MAAc,EACd,MAAyC,EACzC,UAAU,GAAsC,EAAE,EACxC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAe,CAAC;QACpH,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,OAAO,CACV,YAAY,EACZ,GAAG,EACH,uCAAuC,EACvC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAChC;gBACI,QAAQ,EAAE,4BAA4B;gBACtC,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;QACN,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,OAAO,CACV,sBAAsB,EACtB,GAAG,EACH,8BAA8B,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAChC;gBACI,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;QACN,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;QAChC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;QAE5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACzF,OAAO,OAAO,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7G,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI;mBACtB,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,QAAQ;mBAC5C,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,OAAO,CACV,qBAAqB,EACrB,GAAG,EACH,sDAAsD,EACtD,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,EACzC;oBACI,QAAQ,EAAE,6DAA6D;oBACvE,SAAS,EAAE,KAAK;iBACnB,CACJ,CAAC;YACN,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE5I,4GAA4G;QAC5G,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,sBAAsB,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACvJ,CAAC;QAED,+DAA+D;QAC/D,2EAA2E;QAC3E,8DAA8D;QAC9D,oEAAoE;QACpE,MAAM,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnH,oDAAoD;QACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAuB,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACvK,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClG,OAAO,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,QAAQ,aAAa,0CAA0C,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YACtK,CAAC;QACL,CAAC;QACD,IAAI,MAAM,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1E,OAAO,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,QAAQ,aAAa,0CAA0C,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/K,CAAC;QAED,mEAAmE;QACnE,uEAAuE;QACvE,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAsB,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACtK,eAAe,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,4EAA4E;QAC5E,oFAAoF;QACpF,+EAA+E;QAC/E,2EAA2E;QAC3E,4EAA4E;QAC5E,oEAAoE;QACpE,IAAI,UAAkB,CAAC;QACvB,IAAI,mBAAkE,CAAC;QACvE,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;YACrF,OAAO,OAAO,CACV,sBAAsB,EACtB,GAAG,EACH,mDAAmD,EACnD,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAChD;gBACI,QAAQ,EAAE,mEAAmE;gBAC7E,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;QACN,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACzC,MAAM,EAAE,SAAS,CAAC,UAAW;gBAC7B,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;aAC7B,CAAC,CAAC,CAAC;YACJ,MAAM,MAAM,GAAG,aAAa,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC;oBAClB,GAAG,MAAM;oBACT,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,OAAO,EAAE,aAAa;iBACzB,CAAe,CAAC;YACrB,CAAC;YACD,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACjC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CACV,yBAAyB,EACzB,GAAG,EACH,8DAA8D,EAC9D,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,EACzC;oBACI,QAAQ,EAAE,kEAAkE;oBAC5E,SAAS,EAAE,KAAK;iBACnB,CACJ,CAAC;YACN,CAAC;YACD,UAAU,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,iFAAiF;QACjF,+EAA+E;QAC/E,0EAA0E;QAC1E,kCAAkC;QAClC,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAChB,CAAC,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAC9F,CAAC;gBACF,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,OAAO;gBAAE,OAAO;oBACjB,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,OAAO,EAAE,aAAa;oBACtB,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC;iBACxE,CAAC,CAAE,mBAAmB;QAC3B,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,UAAmB,CAAC;QACxB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,2BAA2B,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzI,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YACrF,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YACjB,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;YACtB,UAAU,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACrH,MAAM,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,6FAA6F;QAC9P,qEAAqE;QACrE,+DAA+D;QAE/D,2GAA2G;QAC3G,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC/C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS;YACvC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACxE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,UAAW,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACrG,OAAO;YACH,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAC9B,OAAO;YACP,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC;YACnE,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC;SACxE,CAAC,CAAE,yBAAyB;IACjC,CAAC;IAED,kFAAkF;IAClF,yFAAyF;IACzF,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,SAA8C,EAAE,GAAwB,EAAE,QAAwB,EAAE,eAAwB;QAC1J,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,OAAO,CAClB,UAAU,QAAQ,CAAC,IAAI,EAAE,EACzB,wBAAwB,EACxB,GAAG,EACH,8BAA8B,EAC9B,EAAE,EACF;gBACI,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;QACN,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;QAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3J,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,OAAO,CAClB,UAAU,QAAQ,CAAC,IAAI,EAAE,EACzB,iBAAiB,EACjB,GAAG,EACH,sBAAsB,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EACtE,EAAE,EACF,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAC5D,CAAC;QACN,CAAC;QACD,MAAM,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAwB,EAAE,GAAwB,EAAE,QAAwB,EAAE,eAAwB;QAClI,MAAM,OAAO,GAAG,CACZ,IAAY,EACZ,MAAc,EACd,MAAc,EACd,MAAyC,EACzC,UAAU,GAAsC,EAAE,EACxC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAe,CAAC;QACpH,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,OAAO,CACV,sBAAsB,EACtB,GAAG,EACH,8BAA8B,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAChD;gBACI,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;QACN,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;QAChC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;QAC9C,2EAA2E;QAC3E,qFAAqF;QACrF,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACzF,OAAO,OAAO,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7H,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC9D,4FAA4F;QAC5F,8FAA8F;QAC9F,IAAI,WAAW,GAAG,aAAa,CAAC;QAChC,IAAI,QAAQ,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAsB,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5J,IAAI,IAAI,KAAK,SAAS;gBAAE,WAAW,GAAG,MAAM,CAAC;QACjD,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAwC,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAClL,sFAAsF;QACtF,sFAAsF;QACtF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,sBAAsB,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAE1L,IAAI,MAAM,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACrE,OAAO,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,QAAQ,aAAa,4CAA4C,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACzL,CAAC;QAED,qEAAqE;QACrE,6CAA6C;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzI,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,sBAAsB,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5L,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAkB,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,0CAA0C,IAAI,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YACjL,CAAC;QACL,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS,EAAE,GAAG,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC;oBAClB,GAAG,CAAC;oBACJ,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,WAAW;iBACvB,CAAe,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,MAAM,0CAA0C,CAAC,CAAC;YACpI,CAAC;YACD,OAAO,OAAO,CACV,CAAC,CAAC,MAAM,KAAK,GAAG;gBACZ,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG;oBACd,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,wBAAwB,EAClC,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,MAAM,EACR,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAC7D;gBACI,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBACzE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;oBAC3C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO;wBAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,GAAG;4BACtB,CAAC,CAAC,2CAA2C;4BAC7C,CAAC,CAAC,gCAAgC;wBACtC,SAAS,EAAE,KAAK;qBACnB,CAAC;aACT,CACJ,CAAC;QACN,CAAC;QACD,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,gFAAgF;IAC3H,CAAC;CACJ"}
1
+ {"version":3,"file":"_entry-ops.js","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,40 @@
2
2
  -- Some queries reuse PREPs declared in _entry-crud.sql:
3
3
  -- crud_find_workspace_entry, crud_write_tag
4
4
 
5
- -- PREP: ops_upsert_channel
6
- -- EDIT semantics: replace channel content if it exists.
7
- INSERT OR REPLACE INTO entry_channels (entry_id, name, content, mimetype, tokens, state)
8
- VALUES ($entry_id, $name, $content, $mimetype, $tokens, 'static');
5
+ -- PREP: ops_insert_workspace_entry_if_absent
6
+ -- EDIT creation claims identity without surfacing a uniqueness exception when
7
+ -- another correct writer wins the same resource concurrently.
8
+ INSERT INTO entries (workspace_id, owner_id, scheme, pathname)
9
+ VALUES ($workspace_id, $owner_id, $scheme, $pathname)
10
+ ON CONFLICT (workspace_id, owner_id, scheme, pathname) DO NOTHING
11
+ RETURNING id;
12
+
13
+ -- PREP: ops_insert_channel_if_absent
14
+ -- The creation half of EDIT's atomic landing. A concurrent creator wins cleanly;
15
+ -- the caller translates an empty RETURNING set to the shared edit-collision.
16
+ INSERT INTO entry_channels (entry_id, name, content, mimetype, tokens, content_hash, state, producer_result)
17
+ VALUES ($entry_id, $name, $content, $mimetype, $tokens, $content_hash, 'static', NULL)
18
+ ON CONFLICT (entry_id, name) DO NOTHING
19
+ RETURNING name;
20
+
21
+ -- PREP: ops_update_channel_if_content
22
+ -- The replacement half of EDIT's atomic landing. The exact representation used
23
+ -- to calculate line edits remains the compare-and-swap precondition at mutation.
24
+ UPDATE entry_channels
25
+ SET content = $content,
26
+ mimetype = $mimetype,
27
+ tokens = $tokens,
28
+ content_hash = $content_hash,
29
+ state = 'static',
30
+ producer_result = NULL
31
+ WHERE entry_id = $entry_id
32
+ AND name = $name
33
+ AND content = $expected_content
34
+ RETURNING name;
9
35
 
10
36
  -- PREP: ops_read_channel
11
37
  -- READ targeting a specific channel of an entry — identity is (workspace, owner, scheme, pathname).
12
- SELECT ec.content, ec.mimetype
38
+ SELECT ec.content, ec.mimetype, ec.producer_result
13
39
  FROM entries e
14
40
  JOIN entry_channels ec ON ec.entry_id = e.id
15
41
  WHERE e.workspace_id = $workspace_id
@@ -17,4 +43,3 @@ WHERE e.workspace_id = $workspace_id
17
43
  AND e.scheme = $scheme
18
44
  AND e.pathname = $pathname
19
45
  AND ec.name = $channel;
20
-
@@ -1,23 +1,21 @@
1
1
  import type { Db } from "../core/Db.ts";
2
- import type { LineMarker, Notice } from "@plurnk/plurnk-contracts";
3
- import { type Mimetypes, type TokenizerResolution } from "@plurnk/plurnk-mimetypes";
2
+ import { type LineMarker, type Notice } from "@plurnk/plurnk-contracts";
3
+ import { type Mimetypes, type TokenCountOptions, type TokenizerResolution } from "@plurnk/plurnk-mimetypes";
4
4
  type EmbedderInfo = NonNullable<Awaited<ReturnType<Mimetypes["embedderInfo"]>>>;
5
5
  import type { SearchCandidate } from "./_search-candidate.ts";
6
6
  export interface SemanticPlan {
7
7
  readonly mimetypes: Mimetypes;
8
8
  readonly info: EmbedderInfo | null;
9
- readonly countTokens: ((text: string) => Promise<number>) | null;
9
+ readonly countTokens: ((text: string, options?: TokenCountOptions) => Promise<number>) | null;
10
10
  readonly tokenizer: TokenizerResolution | null;
11
11
  readonly signature: string;
12
12
  }
13
13
  type SemanticResultSelection = {
14
14
  threshold: number | null;
15
- page: LineMarker | null;
16
- limit: number;
15
+ page: LineMarker;
17
16
  };
18
17
  export default class EntrySemantic {
19
18
  #private;
20
- static defaultTopK(): number;
21
19
  static resultSelection(marker: LineMarker | null): SemanticResultSelection;
22
20
  static maxEmbedSize(): number;
23
21
  static embedSizeRejection(content: string): {
@@ -49,7 +47,7 @@ export default class EntrySemantic {
49
47
  static assertExactChunking(plan: SemanticPlan, pushNotice?: (notice: Notice) => void): void;
50
48
  static prepareEmbeddings(mimetypes: Mimetypes): Promise<SemanticPlan>;
51
49
  static ftsQueryFor(text: string): string;
52
- static rankCandidates(db: Db, candidates: readonly SearchCandidate[], mimetypes: Mimetypes, queryText: string, selection: Pick<SemanticResultSelection, "threshold" | "limit">): Promise<{
50
+ static rankCandidates(db: Db, candidates: readonly SearchCandidate[], mimetypes: Mimetypes, queryText: string, selection: Pick<SemanticResultSelection, "threshold">): Promise<{
53
51
  status: number;
54
52
  results: Array<{
55
53
  key: string;