@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 +1 @@
1
- {"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,KAAK;;IAKtB,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAmF;IAE/G,MAAM,CAAC,UAAU,SAA8C;IAC/D,MAAM,CAAC,kBAAkB,SAA+C;IAExE,MAAM,CAAC,WAAW,SAAqD;IAGvE,MAAM,CAAC,mBAAmB,SAAoC;IAC9D,MAAM,CAAC,iCAAiC,8BAAsC;IAE9E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE1D;IAqBD,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAUxD;CACJ"}
1
+ {"version":3,"file":"Paths.d.ts","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"AAYA,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,KAAK;;IAKtB,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAmF;IAE/G,MAAM,CAAC,UAAU,SAA8C;IAC/D,MAAM,CAAC,kBAAkB,SAA+C;IAExE,MAAM,CAAC,WAAW,SAAqD;IAGvE,MAAM,CAAC,mBAAmB,SAAoC;IAC9D,MAAM,CAAC,iCAAiC,8BAAsC;IAE9E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE1D;IAoBD,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAUxD;CACJ"}
package/dist/Paths.js CHANGED
@@ -20,15 +20,14 @@ export default class Paths {
20
20
  static instructionsSystem = resolve(Paths.#CONTRACTS_ROOT, "plurnk.md");
21
21
  // The first-run policy seed and built-in/conditional pull-doc sources.
22
22
  static personality = Paths.teachingSource(TEACHING_CORPUS.personality);
23
- // {§requirements} — static recap appended at the end of the user slot.
23
+ // {§requirements} — meta-owned default Recap and its operator override.
24
24
  static #DEFAULT_REQUIREMENTS = Paths.#resolveDefaultRequirements();
25
25
  static defaultRequirements = Paths.#DEFAULT_REQUIREMENTS.path;
26
26
  static defaultRequirementsTeachingSource = Paths.#DEFAULT_REQUIREMENTS.source;
27
27
  static teachingSource(source) {
28
28
  return resolve(Paths.teachingRoot, source);
29
29
  }
30
- // Resolve the default requirements file: `PLURNK_SERVICE_REQUIREMENTS` env (absolute
31
- // or relative-to-package-root) overrides the docs package's `requirements.md`.
30
+ // Absolute overrides stay absolute; relative paths resolve from the package root.
32
31
  static #resolveDefaultRequirements() {
33
32
  const env = process.env.PLURNK_SERVICE_REQUIREMENTS;
34
33
  if (typeof env === "string" && env.length > 0) {
package/dist/Paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Paths.js","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Paths.js","sourceRoot":"","sources":["../src/Paths.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"package":"@plurnk/plurnk-service","version":"1.4.0","revision":"36be3503f6eed553ace1f7990d1e42625c31b989","dirty":false}
1
+ {"package":"@plurnk/plurnk-service","version":"1.6.0","revision":"e2fcbda41d19c353fe327c8034fe1a5b0ed51758","dirty":false}
@@ -0,0 +1,5 @@
1
+ import type { SchemeResult } from "@plurnk/plurnk-schemes";
2
+ export default class EditCollision {
3
+ static result(target: string, fields?: Readonly<Record<string, unknown>>): SchemeResult;
4
+ }
5
+ //# sourceMappingURL=edit-collision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-collision.d.ts","sourceRoot":"","sources":["../../src/content/edit-collision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,MAAM,CACT,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC/C,YAAY,CAad;CACJ"}
@@ -0,0 +1,14 @@
1
+ import Results from "../core/results.js";
2
+ // One neutral public outcome for an otherwise-valid EDIT that loses a resource
3
+ // claim or whose observed representation changes before landing. The detection
4
+ // layer is absent from the diagnosis: concurrent correct workers are ordinary.
5
+ export default class EditCollision {
6
+ static result(target, fields = {}) {
7
+ return Results.failure("engine:edit", "edit-collision", 409, `EDIT collided with another change at ${target}.`, fields, {
8
+ target,
9
+ recovery: `READ ${target} again and retry the intended edit against its current coordinates.`,
10
+ retryable: true,
11
+ });
12
+ }
13
+ }
14
+ //# sourceMappingURL=edit-collision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-collision.js","sourceRoot":"","sources":["../../src/content/edit-collision.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAEzC,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,MAAM,CACT,MAAc,EACd,MAAM,GAAsC,EAAE;QAE9C,OAAO,OAAO,CAAC,OAAO,CAClB,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,wCAAwC,MAAM,GAAG,EACjD,MAAM,EACN;YACI,MAAM;YACN,QAAQ,EAAE,QAAQ,MAAM,qEAAqE;YAC7F,SAAS,EAAE,IAAI;SAClB,CACJ,CAAC;IACN,CAAC;CACJ"}
@@ -15,6 +15,7 @@ export declare const assertEditReceipt: (value: unknown) => EditReceipt;
15
15
  export declare const assertEditBatchReceipt: (value: unknown) => EditBatchReceipt;
16
16
  export declare const assertResourceEffects: (value: unknown) => readonly ResourceEffect[];
17
17
  export declare const projectEditReceipt: (receipt: EditBatchReceipt, index: number) => EditReceipt;
18
- export declare const editReceipt: (original: string, updated: string, edits: readonly ReceiptEdit[]) => AppliedEditBatchReceipt;
19
- export declare const reviewerReplacementReceipt: (original: string, updated: string, authored: EditBatchReceipt) => ReviewerReplacementEditBatchReceipt;
18
+ export declare const editReceipt: (original: string, updated: string, edits: readonly ReceiptEdit[], parseIssues?: number) => AppliedEditBatchReceipt;
19
+ export declare const withEditReceiptParseIssues: (receipt: EditBatchReceipt, parseIssues: number | undefined) => EditBatchReceipt;
20
+ export declare const reviewerReplacementReceipt: (original: string, updated: string, authored: EditBatchReceipt, parseIssues?: number) => ReviewerReplacementEditBatchReceipt;
20
21
  //# sourceMappingURL=edit-receipt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit-receipt.d.ts","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACR,uBAAuB,EACvB,gBAAgB,EAEhB,WAAW,EAEX,mCAAmC,EACtC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,GACtC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAClC;AA2ED,eAAO,MAAM,iBAAiB,UAAW,OAAO,KAAG,WAuBlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAAW,OAAO,KAAG,gBA4BvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAAW,OAAO,KAAG,SAAS,cAAc,EAqC7E,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,gBAAgB,SAAS,MAAM,KAAG,WAwB7E,CAAC;AAiMF,eAAO,MAAM,WAAW,aACV,MAAM,WACP,MAAM,SACR,SAAS,WAAW,EAAE,KAC9B,uBAkBF,CAAC;AAEF,eAAO,MAAM,0BAA0B,aACzB,MAAM,WACP,MAAM,YACL,gBAAgB,KAC3B,mCAyBF,CAAC"}
1
+ {"version":3,"file":"edit-receipt.d.ts","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACR,uBAAuB,EACvB,gBAAgB,EAEhB,WAAW,EAEX,mCAAmC,EACtC,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,GACtC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAClC;AAgGD,eAAO,MAAM,iBAAiB,UAAW,OAAO,KAAG,WAuBlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAAW,OAAO,KAAG,gBA4BvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAAW,OAAO,KAAG,SAAS,cAAc,EAqC7E,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,gBAAgB,SAAS,MAAM,KAAG,WA0B7E,CAAC;AA+MF,eAAO,MAAM,WAAW,aACV,MAAM,WACP,MAAM,SACR,SAAS,WAAW,EAAE,gBACf,MAAM,KACrB,uBAoBF,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAC1B,gBAAgB,eACZ,MAAM,GAAG,SAAS,KAChC,gBAQF,CAAC;AAEF,eAAO,MAAM,0BAA0B,aACzB,MAAM,WACP,MAAM,YACL,gBAAgB,gBACZ,MAAM,KACrB,mCA2BF,CAAC"}
@@ -23,6 +23,19 @@ const assertExtent = (value, field) => {
23
23
  throw new InvalidOperationResultError(`EDIT receipt ${field} must be a non-negative safe integer.`);
24
24
  }
25
25
  };
26
+ const assertParseIssues = (value) => {
27
+ if (!Number.isSafeInteger(value) || value <= 0) {
28
+ throw new InvalidOperationResultError("EDIT receipt parseIssues must be a positive safe integer.");
29
+ }
30
+ };
31
+ const receiptFields = (receipt, tail) => [
32
+ "revision",
33
+ "unit",
34
+ "before",
35
+ "after",
36
+ ...(Object.hasOwn(receipt, "parseIssues") ? ["parseIssues"] : []),
37
+ ...tail,
38
+ ];
26
39
  const assertEffectReceipt = (value) => {
27
40
  const effect = receiptRecord(value, "EDIT effect receipt");
28
41
  exactFields(effect, ["requested", "source", "result", "removed", "inserted", "context"], "EDIT effect receipt");
@@ -44,13 +57,15 @@ const assertReceiptHead = (receipt, label) => {
44
57
  }
45
58
  assertExtent(receipt.before, "before");
46
59
  assertExtent(receipt.after, "after");
60
+ if (Object.hasOwn(receipt, "parseIssues"))
61
+ assertParseIssues(receipt.parseIssues);
47
62
  };
48
63
  export const assertEditReceipt = (value) => {
49
64
  const receipt = receiptRecord(value, "EDIT receipt");
50
65
  if (receipt.disposition === "superseded") {
51
66
  exactFields(receipt, Object.hasOwn(receipt, "replacement")
52
- ? ["revision", "unit", "before", "after", "disposition", "requested", "replacement"]
53
- : ["revision", "unit", "before", "after", "disposition", "requested"], "EDIT receipt");
67
+ ? receiptFields(receipt, ["disposition", "requested", "replacement"])
68
+ : receiptFields(receipt, ["disposition", "requested"]), "EDIT receipt");
54
69
  assertReceiptHead(receipt, "EDIT receipt");
55
70
  if (typeof receipt.requested !== "string" || receipt.requested.length === 0) {
56
71
  throw new InvalidOperationResultError("A superseded EDIT receipt requested marker must be a non-empty string.");
@@ -59,7 +74,7 @@ export const assertEditReceipt = (value) => {
59
74
  assertEffectReceipt(receipt.replacement);
60
75
  return value;
61
76
  }
62
- exactFields(receipt, ["revision", "unit", "before", "after", "effect"], "EDIT receipt");
77
+ exactFields(receipt, receiptFields(receipt, ["effect"]), "EDIT receipt");
63
78
  assertReceiptHead(receipt, "EDIT receipt");
64
79
  assertEffectReceipt(receipt.effect);
65
80
  return value;
@@ -67,7 +82,7 @@ export const assertEditReceipt = (value) => {
67
82
  export const assertEditBatchReceipt = (value) => {
68
83
  const receipt = receiptRecord(value, "EDIT batch receipt");
69
84
  if (receipt.disposition === "reviewer-replaced") {
70
- exactFields(receipt, ["revision", "unit", "before", "after", "disposition", "superseded", "replacement"], "EDIT batch receipt");
85
+ exactFields(receipt, receiptFields(receipt, ["disposition", "superseded", "replacement"]), "EDIT batch receipt");
71
86
  assertReceiptHead(receipt, "EDIT batch receipt");
72
87
  if (!Array.isArray(receipt.superseded)
73
88
  || receipt.superseded.length === 0
@@ -77,7 +92,7 @@ export const assertEditBatchReceipt = (value) => {
77
92
  assertEffectReceipt(receipt.replacement);
78
93
  return value;
79
94
  }
80
- exactFields(receipt, ["revision", "unit", "before", "after", "effects"], "EDIT batch receipt");
95
+ exactFields(receipt, receiptFields(receipt, ["effects"]), "EDIT batch receipt");
81
96
  assertReceiptHead(receipt, "EDIT batch receipt");
82
97
  if (!Array.isArray(receipt.effects) || receipt.effects.length === 0) {
83
98
  throw new InvalidOperationResultError("EDIT batch receipt effects must be a non-empty array.");
@@ -127,6 +142,7 @@ export const projectEditReceipt = (receipt, index) => {
127
142
  unit: exact.unit,
128
143
  before: exact.before,
129
144
  after: exact.after,
145
+ ...(exact.parseIssues === undefined ? {} : { parseIssues: exact.parseIssues }),
130
146
  disposition: "superseded",
131
147
  requested,
132
148
  ...(index === 0 ? { replacement: exact.replacement } : {}),
@@ -140,6 +156,7 @@ export const projectEditReceipt = (receipt, index) => {
140
156
  unit: exact.unit,
141
157
  before: exact.before,
142
158
  after: exact.after,
159
+ ...(exact.parseIssues === undefined ? {} : { parseIssues: exact.parseIssues }),
143
160
  effect,
144
161
  };
145
162
  };
@@ -284,12 +301,26 @@ const addContext = (effects, updated) => {
284
301
  const lines = splitLines(updated);
285
302
  const radius = contextRadius();
286
303
  return effects.map((effect) => {
287
- const first = Math.max(1, effect.resultStartLine - radius);
288
- const last = Math.min(lines.length, Math.max(effect.resultStartLine, effect.resultEndLine) + radius);
289
- const context = [];
290
- for (let line = first; line <= last; line += 1) {
291
- context.push(`${line}:${lines[line - 1]}`);
304
+ const selected = new Set();
305
+ const addRange = (first, last) => {
306
+ for (let line = Math.max(1, first); line <= Math.min(lines.length, last); line += 1) {
307
+ selected.add(line);
308
+ }
309
+ };
310
+ const firstChanged = effect.resultStartLine;
311
+ const lastChanged = Math.max(firstChanged, effect.resultEndLine);
312
+ addRange(firstChanged - radius, firstChanged - 1);
313
+ if (effect.inserted > 0) {
314
+ addRange(firstChanged, firstChanged + radius - 1);
315
+ addRange(lastChanged - radius + 1, lastChanged);
316
+ addRange(lastChanged + 1, lastChanged + radius);
292
317
  }
318
+ else {
319
+ addRange(firstChanged, firstChanged + radius - 1);
320
+ }
321
+ const context = [...selected]
322
+ .sort((left, right) => left - right)
323
+ .map((line) => `${line}:${lines[line - 1]}`);
293
324
  const { resultStartLine: _resultStartLine, resultEndLine: _resultEndLine, ...receipt } = effect;
294
325
  return {
295
326
  ...receipt,
@@ -297,7 +328,9 @@ const addContext = (effects, updated) => {
297
328
  };
298
329
  });
299
330
  };
300
- export const editReceipt = (original, updated, edits) => {
331
+ export const editReceipt = (original, updated, edits, parseIssues) => {
332
+ if (parseIssues !== undefined)
333
+ assertParseIssues(parseIssues);
301
334
  const unit = edits.some(({ marker }) => marker.marks.length === 4)
302
335
  ? "codePoints"
303
336
  : "lines";
@@ -313,15 +346,26 @@ export const editReceipt = (original, updated, edits) => {
313
346
  after: unit === "codePoints"
314
347
  ? codePointCount(updated)
315
348
  : splitLines(updated).length,
349
+ ...(parseIssues === undefined ? {} : { parseIssues }),
316
350
  effects: addContext(effects, updated),
317
351
  };
318
352
  };
319
- export const reviewerReplacementReceipt = (original, updated, authored) => {
353
+ export const withEditReceiptParseIssues = (receipt, parseIssues) => {
354
+ if (parseIssues !== undefined)
355
+ assertParseIssues(parseIssues);
356
+ const exact = assertEditBatchReceipt(receipt);
357
+ const { parseIssues: _prior, ...withoutPrior } = exact;
358
+ return assertEditBatchReceipt({
359
+ ...withoutPrior,
360
+ ...(parseIssues === undefined ? {} : { parseIssues }),
361
+ });
362
+ };
363
+ export const reviewerReplacementReceipt = (original, updated, authored, parseIssues) => {
320
364
  const exact = assertEditBatchReceipt(authored);
321
365
  if ("disposition" in exact) {
322
366
  throw new InvalidOperationResultError("A reviewer replacement cannot supersede an already replaced EDIT batch receipt.");
323
367
  }
324
- const landed = editReceipt(original, updated, [{ marker: { marks: [1, -1] }, body: updated }]);
368
+ const landed = editReceipt(original, updated, [{ marker: { marks: [1, -1] }, body: updated }], parseIssues);
325
369
  const replacement = landed.effects[0];
326
370
  if (replacement === undefined) {
327
371
  throw new Error("Reviewer replacement receipt omitted its landed effect.");
@@ -331,6 +375,7 @@ export const reviewerReplacementReceipt = (original, updated, authored) => {
331
375
  unit: landed.unit,
332
376
  before: landed.before,
333
377
  after: landed.after,
378
+ ...(landed.parseIssues === undefined ? {} : { parseIssues: landed.parseIssues }),
334
379
  disposition: "reviewer-replaced",
335
380
  superseded: exact.effects.map(({ requested }) => requested),
336
381
  replacement,
@@ -1 +1 @@
1
- {"version":3,"file":"edit-receipt.js","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit-receipt.js","sourceRoot":"","sources":["../../src/content/edit-receipt.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  export { default as MimetypeBinary } from "./mimetype-binary.ts";
2
2
  export { default as LineMarkerOps } from "./line-marker.ts";
3
3
  export type { EditResult as LineEditResult, SliceResult } from "./line-marker.ts";
4
+ export { default as LineAnchors } from "./line-anchors.ts";
5
+ export { default as EditCollision } from "./edit-collision.ts";
6
+ export type { LineAnchorCheck, LineAnchorFailure, LineAnchorPrecondition, LineAnchorResolution, } from "./line-anchors.ts";
4
7
  export { default as PathMimetype } from "./path-mimetype.ts";
5
8
  export { default as Matcher } from "./matcher.ts";
6
9
  export type { MatchResult } from "./matcher.ts";
7
10
  export { default as ReadResolve } from "./read-resolve.ts";
8
11
  export type { ReadSliceResult } from "./read-resolve.ts";
12
+ export { default as ReadProjector } from "./read-projector.ts";
9
13
  export { editedSpan } from "./edited-span.ts";
10
- export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, } from "./edit-receipt.ts";
14
+ export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, withEditReceiptParseIssues, } from "./edit-receipt.ts";
11
15
  export type { AppliedEditBatchReceipt, EditBatchReceipt, EditEffectReceipt, EditReceipt, EditReceiptUnit, ReviewerReplacementEditBatchReceipt, ReceiptEdit, ResourceEffect, ResourceEffectAction, } from "./edit-receipt.ts";
12
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,EACnC,WAAW,EACX,cAAc,EACd,oBAAoB,GACvB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mCAAmC,EACnC,WAAW,EACX,cAAc,EACd,oBAAoB,GACvB,MAAM,mBAAmB,CAAC"}
@@ -4,9 +4,12 @@
4
4
  // misnamed: this is service-level content logic, not protocol-specific.
5
5
  export { default as MimetypeBinary } from "./mimetype-binary.js";
6
6
  export { default as LineMarkerOps } from "./line-marker.js";
7
+ export { default as LineAnchors } from "./line-anchors.js";
8
+ export { default as EditCollision } from "./edit-collision.js";
7
9
  export { default as PathMimetype } from "./path-mimetype.js";
8
10
  export { default as Matcher } from "./matcher.js";
9
11
  export { default as ReadResolve } from "./read-resolve.js";
12
+ export { default as ReadProjector } from "./read-projector.js";
10
13
  export { editedSpan } from "./edited-span.js";
11
- export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, } from "./edit-receipt.js";
14
+ export { assertEditBatchReceipt, assertEditReceipt, assertResourceEffects, editReceipt, projectEditReceipt, reviewerReplacementReceipt, withEditReceiptParseIssues, } from "./edit-receipt.js";
12
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,qEAAqE;AACrE,wEAAwE;AAExE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,qEAAqE;AACrE,wEAAwE;AAExE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { LineMarker, TextLineMarker } from "@plurnk/plurnk-contracts";
2
+ import type { EditStatement } from "@plurnk/plurnk-contracts";
3
+ import type { ResolvedEditStatement } from "@plurnk/plurnk-schemes";
4
+ export type LineAnchorFailure = {
5
+ readonly kind: "invalid" | "stale" | "ambiguous";
6
+ readonly anchor: string;
7
+ readonly matches?: readonly number[];
8
+ };
9
+ export type LineAnchorResolution = {
10
+ readonly ok: true;
11
+ readonly marker: LineMarker;
12
+ } | {
13
+ readonly ok: false;
14
+ readonly failure: LineAnchorFailure;
15
+ };
16
+ export interface LineAnchorCheck {
17
+ readonly anchor: string;
18
+ readonly line: number;
19
+ }
20
+ export interface LineAnchorPrecondition {
21
+ readonly identity: string;
22
+ readonly checks: readonly LineAnchorCheck[];
23
+ }
24
+ export default class LineAnchors {
25
+ #private;
26
+ static isAnchor(value: unknown): value is string;
27
+ static isAnchoredLine(value: string): boolean;
28
+ static isLineNumberWidth(value: unknown): value is number;
29
+ static hasAnchor(marker: TextLineMarker | null): marker is TextLineMarker;
30
+ static assertResolved(statements: readonly EditStatement[]): asserts statements is readonly ResolvedEditStatement[];
31
+ static satisfies(precondition: LineAnchorPrecondition, content: string): boolean;
32
+ static tokens(identity: string, content: string): readonly string[];
33
+ static token(identity: string, lineNumber: number, content: string): string;
34
+ static lineNumberWidth(content: string): number;
35
+ static project(identity: string, completeContent: string, projectedContent: string, startLine: number): readonly string[];
36
+ static assertProjection(content: string, anchors: unknown): asserts anchors is readonly string[];
37
+ static render(content: string, startLine: number, anchors: readonly string[], lineNumberWidth: number): string;
38
+ static resolve(anchors: readonly string[], marker: TextLineMarker): LineAnchorResolution;
39
+ static checks(authored: TextLineMarker, resolved: LineMarker): readonly LineAnchorCheck[];
40
+ }
41
+ //# sourceMappingURL=line-anchors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-anchors.d.ts","sourceRoot":"","sources":["../../src/content/line-anchors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,191 @@
1
+ import { createHash } from "node:crypto";
2
+ import { TextCoordinates } from "@plurnk/plurnk-mimetypes";
3
+ // A rendered anchor is a short, copyable validation handle, never resource
4
+ // identity by itself. The universal READ projector supplies snapshot anchors;
5
+ // current resolution fails closed on zero or multiple matches.
6
+ export default class LineAnchors {
7
+ static #ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
8
+ static #LENGTH = 5;
9
+ static #MODULUS = BigInt(LineAnchors.#ALPHABET.length) ** BigInt(LineAnchors.#LENGTH);
10
+ static #MAX_LINE_NUMBER_WIDTH = String(Number.MAX_SAFE_INTEGER).length;
11
+ static #TOKEN = /^@[0-9A-Za-z]{5}$/;
12
+ static #PREFIXED_LINE = /^@[0-9A-Za-z]{5} +[1-9]\d*:/;
13
+ static isAnchor(value) {
14
+ return typeof value === "string" && LineAnchors.#TOKEN.test(value);
15
+ }
16
+ static isAnchoredLine(value) {
17
+ return LineAnchors.#PREFIXED_LINE.test(value);
18
+ }
19
+ static isLineNumberWidth(value) {
20
+ return Number.isSafeInteger(value)
21
+ && value >= 1
22
+ && value <= LineAnchors.#MAX_LINE_NUMBER_WIDTH;
23
+ }
24
+ static hasAnchor(marker) {
25
+ return marker?.marks.some((mark) => typeof mark === "string") ?? false;
26
+ }
27
+ static assertResolved(statements) {
28
+ if (statements.some(({ lineMarker }) => LineAnchors.hasAnchor(lineMarker))) {
29
+ throw new TypeError("An unresolved line anchor crossed the core-to-scheme boundary.");
30
+ }
31
+ }
32
+ static satisfies(precondition, content) {
33
+ if (precondition.identity.length === 0 || precondition.checks.length === 0) {
34
+ throw new TypeError("A line-anchor precondition requires an identity and at least one check.");
35
+ }
36
+ const current = LineAnchors.tokens(precondition.identity, content);
37
+ return precondition.checks.every(({ anchor, line }) => {
38
+ if (!LineAnchors.isAnchor(anchor) || !Number.isSafeInteger(line) || line < 1) {
39
+ throw new TypeError("A line-anchor precondition contains an invalid check.");
40
+ }
41
+ return current[line - 1] === anchor;
42
+ });
43
+ }
44
+ static #contextLines() {
45
+ const raw = process.env.PLURNK_SERVICE_LINE_ANCHOR_CONTEXT_LINES;
46
+ const value = Number(raw);
47
+ if (!Number.isSafeInteger(value) || value < 0) {
48
+ throw new RangeError(`PLURNK_SERVICE_LINE_ANCHOR_CONTEXT_LINES must be a non-negative safe integer, got ${JSON.stringify(raw)}`);
49
+ }
50
+ return value;
51
+ }
52
+ static #encode(identity, lineNumber, contextLines, context) {
53
+ if (identity.length === 0)
54
+ throw new TypeError("A line anchor requires a non-empty resource identity.");
55
+ if (!Number.isSafeInteger(lineNumber) || lineNumber < 1) {
56
+ throw new RangeError(`A line anchor requires a positive safe line number, got ${lineNumber}.`);
57
+ }
58
+ const digest = createHash("sha256")
59
+ .update(JSON.stringify(["plurnk-line-anchor-v1", identity, lineNumber, contextLines, context]))
60
+ .digest("hex");
61
+ let value = BigInt(`0x${digest}`) % LineAnchors.#MODULUS;
62
+ let encoded = "";
63
+ for (let index = 0; index < LineAnchors.#LENGTH; index += 1) {
64
+ encoded = LineAnchors.#ALPHABET[Number(value % BigInt(LineAnchors.#ALPHABET.length))] + encoded;
65
+ value /= BigInt(LineAnchors.#ALPHABET.length);
66
+ }
67
+ return `@${encoded}`;
68
+ }
69
+ static tokens(identity, content) {
70
+ const contextLines = LineAnchors.#contextLines();
71
+ const lines = TextCoordinates.logicalLines(content);
72
+ const bodies = lines.map((line) => content.slice(line.start, line.contentEnd));
73
+ return bodies.map((_, index) => LineAnchors.#encode(identity, index + 1, contextLines, bodies.slice(Math.max(0, index - contextLines), index + contextLines + 1)));
74
+ }
75
+ static token(identity, lineNumber, content) {
76
+ const token = LineAnchors.tokens(identity, content)[lineNumber - 1];
77
+ if (token === undefined) {
78
+ throw new RangeError(`Line ${lineNumber} is outside the available line range.`);
79
+ }
80
+ return token;
81
+ }
82
+ static lineNumberWidth(content) {
83
+ return String(Math.max(TextCoordinates.logicalLines(content).length, 1)).length;
84
+ }
85
+ static project(identity, completeContent, projectedContent, startLine) {
86
+ if (projectedContent.length === 0)
87
+ return [];
88
+ if (!Number.isSafeInteger(startLine) || startLine < 1) {
89
+ throw new RangeError(`Anchored projection requires a positive safe start line, got ${startLine}.`);
90
+ }
91
+ const count = TextCoordinates.logicalLines(projectedContent).length;
92
+ const projected = LineAnchors.tokens(identity, completeContent).slice(startLine - 1, startLine - 1 + count);
93
+ if (projected.length !== count) {
94
+ throw new RangeError("The projected READ content extends beyond the complete canonical representation.");
95
+ }
96
+ return projected;
97
+ }
98
+ static assertProjection(content, anchors) {
99
+ const lineCount = TextCoordinates.logicalLines(content).length;
100
+ if (!Array.isArray(anchors)
101
+ || anchors.length !== lineCount
102
+ || anchors.some((anchor) => !LineAnchors.isAnchor(anchor))) {
103
+ throw new TypeError("READ line anchors must align one-for-one with its projected physical lines.");
104
+ }
105
+ }
106
+ static render(content, startLine, anchors, lineNumberWidth) {
107
+ if (content.length === 0) {
108
+ if (anchors.length !== 0)
109
+ throw new TypeError("An empty READ projection cannot carry line anchors.");
110
+ return "";
111
+ }
112
+ if (!Number.isSafeInteger(startLine) || startLine < 1) {
113
+ throw new RangeError(`Anchored rendering requires a positive safe start line, got ${startLine}.`);
114
+ }
115
+ LineAnchors.assertProjection(content, anchors);
116
+ const lines = TextCoordinates.logicalLines(content);
117
+ const finalLine = startLine + lines.length - 1;
118
+ if (!LineAnchors.isLineNumberWidth(lineNumberWidth)
119
+ || lineNumberWidth < String(finalLine).length) {
120
+ throw new RangeError(`Anchored rendering requires a line-number width covering line ${finalLine}, got ${lineNumberWidth}.`);
121
+ }
122
+ return lines.map((line, index) => {
123
+ const lineNumber = startLine + index;
124
+ const body = content.slice(line.start, line.contentEnd);
125
+ const separator = " ".repeat(lineNumberWidth - String(lineNumber).length + 1);
126
+ return `${anchors[index]}${separator}${lineNumber}:${body}${line.separator}`;
127
+ }).join("");
128
+ }
129
+ static resolve(anchors, marker) {
130
+ const anchorIndexes = marker.marks.flatMap((mark, index) => typeof mark === "string" ? [index] : []);
131
+ if (anchorIndexes.length === 0) {
132
+ return { ok: true, marker: { marks: [...marker.marks] } };
133
+ }
134
+ const permitted = marker.marks.length === 1
135
+ ? new Set([0])
136
+ : marker.marks.length === 2
137
+ ? new Set([0, 1])
138
+ : marker.marks.length === 3 || marker.marks.length === 4
139
+ ? new Set([0, 2])
140
+ : new Set();
141
+ for (const index of anchorIndexes) {
142
+ const anchor = marker.marks[index];
143
+ if (!LineAnchors.isAnchor(anchor) || !permitted.has(index)) {
144
+ return { ok: false, failure: { kind: "invalid", anchor } };
145
+ }
146
+ }
147
+ const matches = new Map();
148
+ for (const [index, anchor] of anchors.entries()) {
149
+ const lineNumber = index + 1;
150
+ if (!LineAnchors.isAnchor(anchor)) {
151
+ throw new TypeError(`READ supplied an invalid line anchor at line ${lineNumber}.`);
152
+ }
153
+ const found = matches.get(anchor);
154
+ if (found === undefined)
155
+ matches.set(anchor, [lineNumber]);
156
+ else
157
+ found.push(lineNumber);
158
+ }
159
+ const resolved = [...marker.marks];
160
+ for (const index of anchorIndexes) {
161
+ const anchor = marker.marks[index];
162
+ const found = matches.get(anchor) ?? [];
163
+ if (found.length === 0) {
164
+ return { ok: false, failure: { kind: "stale", anchor } };
165
+ }
166
+ if (found.length > 1) {
167
+ return { ok: false, failure: { kind: "ambiguous", anchor, matches: found } };
168
+ }
169
+ resolved[index] = found[0];
170
+ }
171
+ return {
172
+ ok: true,
173
+ marker: { marks: resolved },
174
+ };
175
+ }
176
+ static checks(authored, resolved) {
177
+ if (authored.marks.length !== resolved.marks.length) {
178
+ throw new TypeError("A resolved line marker must preserve its authored arity.");
179
+ }
180
+ return authored.marks.flatMap((mark, index) => {
181
+ if (typeof mark !== "string")
182
+ return [];
183
+ const line = resolved.marks[index];
184
+ if (!LineAnchors.isAnchor(mark) || typeof line !== "number") {
185
+ throw new TypeError("A line anchor did not lower to a numeric line.");
186
+ }
187
+ return [{ anchor: mark, line }];
188
+ });
189
+ }
190
+ }
191
+ //# sourceMappingURL=line-anchors.js.map