@plurnk/plurnk-service 1.4.0 → 1.5.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 (227) hide show
  1. package/.env.defaults +20 -23
  2. package/INSTALL.md +6 -5
  3. package/README.md +1 -0
  4. package/SPEC.md +250 -149
  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/index.d.ts +1 -0
  10. package/dist/content/index.d.ts.map +1 -1
  11. package/dist/content/index.js +1 -0
  12. package/dist/content/index.js.map +1 -1
  13. package/dist/content/line-marker.d.ts +7 -3
  14. package/dist/content/line-marker.d.ts.map +1 -1
  15. package/dist/content/line-marker.js +2 -1
  16. package/dist/content/line-marker.js.map +1 -1
  17. package/dist/content/matcher.d.ts +1 -1
  18. package/dist/content/matcher.d.ts.map +1 -1
  19. package/dist/content/matcher.js +2 -2
  20. package/dist/content/matcher.js.map +1 -1
  21. package/dist/content/read-projector.d.ts +14 -0
  22. package/dist/content/read-projector.d.ts.map +1 -0
  23. package/dist/content/read-projector.js +86 -0
  24. package/dist/content/read-projector.js.map +1 -0
  25. package/dist/content/read-resolve.d.ts +2 -7
  26. package/dist/content/read-resolve.d.ts.map +1 -1
  27. package/dist/content/read-resolve.js +32 -107
  28. package/dist/content/read-resolve.js.map +1 -1
  29. package/dist/core/BranchReceipt.d.ts +0 -1
  30. package/dist/core/BranchReceipt.d.ts.map +1 -1
  31. package/dist/core/BranchReceipt.js +0 -3
  32. package/dist/core/BranchReceipt.js.map +1 -1
  33. package/dist/core/BudgetOverflow.d.ts +0 -3
  34. package/dist/core/BudgetOverflow.d.ts.map +1 -1
  35. package/dist/core/BudgetOverflow.js +3 -15
  36. package/dist/core/BudgetOverflow.js.map +1 -1
  37. package/dist/core/ChannelWrite.d.ts +3 -0
  38. package/dist/core/ChannelWrite.d.ts.map +1 -1
  39. package/dist/core/ChannelWrite.js +2 -2
  40. package/dist/core/ChannelWrite.js.map +1 -1
  41. package/dist/core/ChannelWrite.sql +4 -3
  42. package/dist/core/CoreSchemeServices.d.ts +10 -2
  43. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  44. package/dist/core/CoreSchemeServices.js.map +1 -1
  45. package/dist/core/Dispatcher.d.ts +3 -7
  46. package/dist/core/Dispatcher.d.ts.map +1 -1
  47. package/dist/core/Dispatcher.js +283 -217
  48. package/dist/core/Dispatcher.js.map +1 -1
  49. package/dist/core/Engine.d.ts +19 -12
  50. package/dist/core/Engine.d.ts.map +1 -1
  51. package/dist/core/Engine.js +261 -167
  52. package/dist/core/Engine.js.map +1 -1
  53. package/dist/core/Engine.sql +66 -63
  54. package/dist/core/LogBody.d.ts +2 -1
  55. package/dist/core/LogBody.d.ts.map +1 -1
  56. package/dist/core/LogBody.js +33 -1
  57. package/dist/core/LogBody.js.map +1 -1
  58. package/dist/core/LoopLifecycle.d.ts +1 -2
  59. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  60. package/dist/core/LoopLifecycle.js +1 -4
  61. package/dist/core/LoopLifecycle.js.map +1 -1
  62. package/dist/core/LoopLifecycle.sql +1 -4
  63. package/dist/core/PacketBuilder.d.ts +3 -2
  64. package/dist/core/PacketBuilder.d.ts.map +1 -1
  65. package/dist/core/PacketBuilder.js +16 -16
  66. package/dist/core/PacketBuilder.js.map +1 -1
  67. package/dist/core/StrikeRail.d.ts +5 -1
  68. package/dist/core/StrikeRail.d.ts.map +1 -1
  69. package/dist/core/StrikeRail.js +4 -3
  70. package/dist/core/StrikeRail.js.map +1 -1
  71. package/dist/core/TerminalResult.d.ts +16 -0
  72. package/dist/core/TerminalResult.d.ts.map +1 -0
  73. package/dist/core/TerminalResult.js +49 -0
  74. package/dist/core/TerminalResult.js.map +1 -0
  75. package/dist/core/caps/CapsResolve.d.ts +5 -1
  76. package/dist/core/caps/CapsResolve.d.ts.map +1 -1
  77. package/dist/core/caps/CapsResolve.js +8 -4
  78. package/dist/core/caps/CapsResolve.js.map +1 -1
  79. package/dist/core/caps/DbChannelCaps.d.ts +1 -1
  80. package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
  81. package/dist/core/caps/DbChannelCaps.js +6 -4
  82. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  83. package/dist/core/caps/DbEntryCaps.d.ts +1 -1
  84. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  85. package/dist/core/caps/DbEntryCaps.js +14 -4
  86. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  87. package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
  88. package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
  89. package/dist/core/caps/DbNotifyCaps.js +6 -4
  90. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  91. package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -6
  92. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  93. package/dist/core/caps/DbSubscriptionCaps.js +27 -13
  94. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  95. package/dist/core/caps/DbTagCaps.d.ts +1 -1
  96. package/dist/core/caps/DbTagCaps.d.ts.map +1 -1
  97. package/dist/core/caps/DbTagCaps.js +6 -4
  98. package/dist/core/caps/DbTagCaps.js.map +1 -1
  99. package/dist/core/caps/SchemeCtxImpl.d.ts +6 -1
  100. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  101. package/dist/core/caps/SchemeCtxImpl.js +6 -6
  102. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  103. package/dist/core/fork.sql +2 -2
  104. package/dist/core/git-iso.d.ts +3 -2
  105. package/dist/core/git-iso.d.ts.map +1 -1
  106. package/dist/core/git-iso.js +27 -12
  107. package/dist/core/git-iso.js.map +1 -1
  108. package/dist/core/git-membership.d.ts +1 -0
  109. package/dist/core/git-membership.d.ts.map +1 -1
  110. package/dist/core/git-membership.js +86 -24
  111. package/dist/core/git-membership.js.map +1 -1
  112. package/dist/core/git-state.d.ts +8 -1
  113. package/dist/core/git-state.d.ts.map +1 -1
  114. package/dist/core/git-state.js +35 -16
  115. package/dist/core/git-state.js.map +1 -1
  116. package/dist/core/namespace.d.ts +1 -0
  117. package/dist/core/namespace.d.ts.map +1 -1
  118. package/dist/core/namespace.js +20 -0
  119. package/dist/core/namespace.js.map +1 -1
  120. package/dist/core/optimistic-settlement.d.ts +2 -0
  121. package/dist/core/optimistic-settlement.d.ts.map +1 -0
  122. package/dist/core/optimistic-settlement.js +14 -0
  123. package/dist/core/optimistic-settlement.js.map +1 -0
  124. package/dist/core/packet-wire.d.ts +1 -1
  125. package/dist/core/packet-wire.d.ts.map +1 -1
  126. package/dist/core/packet-wire.js +81 -35
  127. package/dist/core/packet-wire.js.map +1 -1
  128. package/dist/core/results.d.ts +4 -2
  129. package/dist/core/results.d.ts.map +1 -1
  130. package/dist/core/results.js +6 -0
  131. package/dist/core/results.js.map +1 -1
  132. package/dist/core/scheme-types.d.ts +0 -12
  133. package/dist/core/scheme-types.d.ts.map +1 -1
  134. package/dist/core/scheme-types.js.map +1 -1
  135. package/dist/core/worker-ops.sql +4 -4
  136. package/dist/core/workspace-settings.js +1 -1
  137. package/dist/core/workspace-settings.js.map +1 -1
  138. package/dist/digest/Digest.d.ts.map +1 -1
  139. package/dist/digest/Digest.js +236 -74
  140. package/dist/digest/Digest.js.map +1 -1
  141. package/dist/digest/digest.sql +9 -5
  142. package/dist/schemes/Exec.d.ts +4 -4
  143. package/dist/schemes/Exec.d.ts.map +1 -1
  144. package/dist/schemes/Exec.js +56 -33
  145. package/dist/schemes/Exec.js.map +1 -1
  146. package/dist/schemes/ExecOutputScheme.d.ts +4 -5
  147. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  148. package/dist/schemes/ExecOutputScheme.js +12 -20
  149. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  150. package/dist/schemes/File.d.ts +1 -3
  151. package/dist/schemes/File.d.ts.map +1 -1
  152. package/dist/schemes/File.js +11 -19
  153. package/dist/schemes/File.js.map +1 -1
  154. package/dist/schemes/Log.d.ts +5 -5
  155. package/dist/schemes/Log.d.ts.map +1 -1
  156. package/dist/schemes/Log.js +74 -172
  157. package/dist/schemes/Log.js.map +1 -1
  158. package/dist/schemes/Log.sql +20 -13
  159. package/dist/schemes/Prompt.d.ts +2 -3
  160. package/dist/schemes/Prompt.d.ts.map +1 -1
  161. package/dist/schemes/Prompt.js +1 -4
  162. package/dist/schemes/Prompt.js.map +1 -1
  163. package/dist/schemes/Skill.d.ts +2 -3
  164. package/dist/schemes/Skill.d.ts.map +1 -1
  165. package/dist/schemes/Skill.js +0 -3
  166. package/dist/schemes/Skill.js.map +1 -1
  167. package/dist/schemes/Worker.d.ts +5 -5
  168. package/dist/schemes/Worker.d.ts.map +1 -1
  169. package/dist/schemes/Worker.js +92 -81
  170. package/dist/schemes/Worker.js.map +1 -1
  171. package/dist/schemes/_entry-crud.d.ts +2 -1
  172. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  173. package/dist/schemes/_entry-crud.js +14 -1
  174. package/dist/schemes/_entry-crud.js.map +1 -1
  175. package/dist/schemes/_entry-crud.sql +9 -3
  176. package/dist/schemes/_entry-find.d.ts +37 -11
  177. package/dist/schemes/_entry-find.d.ts.map +1 -1
  178. package/dist/schemes/_entry-find.js +141 -153
  179. package/dist/schemes/_entry-find.js.map +1 -1
  180. package/dist/schemes/_entry-ops.d.ts +9 -5
  181. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  182. package/dist/schemes/_entry-ops.js +12 -73
  183. package/dist/schemes/_entry-ops.js.map +1 -1
  184. package/dist/schemes/_entry-ops.sql +1 -2
  185. package/dist/schemes/_entry-semantic.d.ts +5 -7
  186. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  187. package/dist/schemes/_entry-semantic.js +10 -31
  188. package/dist/schemes/_entry-semantic.js.map +1 -1
  189. package/dist/schemes/_entry-semantic.sql +2 -2
  190. package/dist/schemes/_search-index.d.ts.map +1 -1
  191. package/dist/schemes/_search-index.js +6 -4
  192. package/dist/schemes/_search-index.js.map +1 -1
  193. package/dist/server/BranchBatches.d.ts +1 -0
  194. package/dist/server/BranchBatches.d.ts.map +1 -1
  195. package/dist/server/BranchBatches.js +1 -0
  196. package/dist/server/BranchBatches.js.map +1 -1
  197. package/dist/server/Daemon.d.ts +5 -7
  198. package/dist/server/Daemon.d.ts.map +1 -1
  199. package/dist/server/Daemon.js +222 -54
  200. package/dist/server/Daemon.js.map +1 -1
  201. package/dist/server/DaemonModule.d.ts +3 -3
  202. package/dist/server/DaemonModule.d.ts.map +1 -1
  203. package/dist/server/branch-batch.sql +3 -1
  204. package/dist/server/client-input.d.ts +2 -1
  205. package/dist/server/client-input.d.ts.map +1 -1
  206. package/dist/server/client-input.js +7 -1
  207. package/dist/server/client-input.js.map +1 -1
  208. package/dist/server/drain.sql +6 -5
  209. package/dist/server/envelope.d.ts +2 -2
  210. package/dist/server/envelope.d.ts.map +1 -1
  211. package/dist/server/envelope.js +0 -1
  212. package/dist/server/envelope.js.map +1 -1
  213. package/dist/server/envelope.sql +1 -2
  214. package/dist/server/lifecycle-recovery.sql +34 -1
  215. package/dist/server/logEntry.d.ts +1 -1
  216. package/dist/server/logEntry.d.ts.map +1 -1
  217. package/dist/server/logEntry.js +2 -1
  218. package/dist/server/logEntry.js.map +1 -1
  219. package/dist/service.d.ts.map +1 -1
  220. package/dist/service.js +13 -1
  221. package/dist/service.js.map +1 -1
  222. package/migrations/001_schema.sql +238 -125
  223. package/package.json +48 -46
  224. package/dist/matrix/live-specimen.d.ts +0 -9
  225. package/dist/matrix/live-specimen.d.ts.map +0 -1
  226. package/dist/matrix/live-specimen.js +0 -37
  227. package/dist/matrix/live-specimen.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CapsResolve.js","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAC1E,+EAA+E;AAC/E,mDAAmD;AAGnD,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAwB,EAAE,MAAc,EAAE,QAAgB;QAC3E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAiB;YACnE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ;SAC5G,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"CapsResolve.js","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,+EAA+E;AAC/E,mDAAmD;AAGnD,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CACd,GAAwB,EACxB,MAAc,EACd,QAAgB,EAChB,OAAgB;QAEhB,MAAM,QAAQ,GAAG,OAAO,IAAI,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAiB;YACnE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;SACtE,CAAC,CAAC;QACH,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAwB,EAAE,MAAc,EAAE,QAAgB,EAAE,OAAgB;QAC7F,OAAO,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;IACtF,CAAC;CACJ"}
@@ -2,7 +2,7 @@ import { type ChannelCaps, type ChannelState, type SchemeResult } from "@plurnk/
2
2
  import type { PlurnkSchemeContext } from "../scheme-types.ts";
3
3
  export default class DbChannelCaps implements ChannelCaps {
4
4
  #private;
5
- constructor(ctx: PlurnkSchemeContext, scheme: string);
5
+ constructor(ctx: PlurnkSchemeContext, scheme: string, ownerId?: number);
6
6
  append(pathname: string, channel: string, content: string): Promise<SchemeResult>;
7
7
  replace(pathname: string, channel: string, content: string): Promise<SchemeResult>;
8
8
  setState(pathname: string, channel: string, state: ChannelState): Promise<SchemeResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"DbChannelCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,WAAW;;IAIrD,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAGnD;IAiBK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtF;IAEK,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAWvF;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAO5F;CACJ"}
1
+ {"version":3,"file":"DbChannelCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,WAAW;;IAKrD,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAIrE;IAiBK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtF;IAEK,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAWvF;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAO5F;CACJ"}
@@ -10,9 +10,11 @@ import { renderAddress } from "../plurnk-uri.js";
10
10
  export default class DbChannelCaps {
11
11
  #ctx;
12
12
  #scheme;
13
- constructor(ctx, scheme) {
13
+ #ownerId;
14
+ constructor(ctx, scheme, ownerId) {
14
15
  this.#ctx = ctx;
15
16
  this.#scheme = scheme;
17
+ this.#ownerId = ownerId;
16
18
  }
17
19
  #failure(code, detail, pathname, channel) {
18
20
  const target = renderAddress(this.#scheme, pathname);
@@ -22,7 +24,7 @@ export default class DbChannelCaps {
22
24
  });
23
25
  }
24
26
  async append(pathname, channel, content) {
25
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
27
+ const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
26
28
  if (entryId === null)
27
29
  return this.#failure("entry-not-found", `No entry exists at ${renderAddress(this.#scheme, pathname)}.`, pathname);
28
30
  const r = await this.#ctx.db.append_to_channel.run({ chunk: content, entry_id: entryId, channel });
@@ -34,7 +36,7 @@ export default class DbChannelCaps {
34
36
  const { tokenize } = this.#ctx;
35
37
  if (tokenize === undefined)
36
38
  throw new Error("DbChannelCaps.replace: ctx.tokenize is required for token accounting");
37
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
39
+ const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
38
40
  if (entryId === null)
39
41
  return this.#failure("entry-not-found", `No entry exists at ${renderAddress(this.#scheme, pathname)}.`, pathname);
40
42
  const r = await this.#ctx.db.replace_channel_content.run({
@@ -45,7 +47,7 @@ export default class DbChannelCaps {
45
47
  : this.#failure("channel-not-found", `Entry ${renderAddress(this.#scheme, pathname)} has no '${channel}' channel.`, pathname, channel);
46
48
  }
47
49
  async setState(pathname, channel, state) {
48
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
50
+ const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
49
51
  if (entryId === null)
50
52
  return this.#failure("entry-not-found", `No entry exists at ${renderAddress(this.#scheme, pathname)}.`, pathname);
51
53
  const r = await this.#ctx.db.set_channel_state.run({ state, entry_id: entryId, channel });
@@ -1 +1 @@
1
- {"version":3,"file":"DbChannelCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DbChannelCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { PlurnkSchemeContext } from "../scheme-types.ts";
3
3
  export default class DbEntryCaps implements EntryCaps {
4
4
  #private;
5
5
  readonly operations: EntryOperationCaps;
6
- constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest);
6
+ constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, defaultOwnerId?: number);
7
7
  read(pathname: string, owner?: EntryOwner): Promise<EntryStorageReadResult>;
8
8
  write(pathname: string, entry: EntryData, owner?: EntryOwner): Promise<EntryStorageWriteResult>;
9
9
  delete(pathname: string, owner?: EntryOwner, channel?: string): Promise<SchemeResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"DbEntryCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAER,SAAS,EACT,SAAS,EAGT,kBAAkB,EAClB,UAAU,EAEV,sBAAsB,EACtB,uBAAuB,EAGvB,cAAc,EACd,YAAY,EAEf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,SAAS;;IAIjD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAc7E;IA6BK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAEhF;IAEK,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAIpG;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAI1F;CACJ"}
1
+ {"version":3,"file":"DbEntryCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAER,SAAS,EACT,SAAS,EAGT,kBAAkB,EAClB,UAAU,EAEV,sBAAsB,EACtB,uBAAuB,EAGvB,cAAc,EACd,YAAY,EAEf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,SAAS;;IAKjD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,MAAM,EAetG;IAmCK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAEhF;IAEK,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAIpG;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAI1F;CACJ"}
@@ -9,8 +9,9 @@ export default class DbEntryCaps {
9
9
  #ctx;
10
10
  #scheme;
11
11
  #manifest;
12
+ #defaultOwnerId;
12
13
  operations;
13
- constructor(ctx, scheme, manifest) {
14
+ constructor(ctx, scheme, manifest, defaultOwnerId) {
14
15
  this.#ctx = ctx;
15
16
  this.#scheme = scheme;
16
17
  // One handler may own multiple addressed protocols (http/https, ws/wss).
@@ -18,6 +19,7 @@ export default class DbEntryCaps {
18
19
  // direct CRUD already uses #scheme; standard operations derive identity
19
20
  // from manifest.name, so give them the same addressed face.
20
21
  this.#manifest = manifest.name === scheme ? manifest : { ...manifest, name: scheme };
22
+ this.#defaultOwnerId = defaultOwnerId;
21
23
  this.operations = {
22
24
  editBatch: (statements, owner) => this.#editBatch(statements, owner),
23
25
  read: (statement, owner) => this.#read(statement, owner),
@@ -26,7 +28,11 @@ export default class DbEntryCaps {
26
28
  };
27
29
  }
28
30
  #ownerId(owner) {
29
- return owner === "worker" ? this.#ctx.workerId : undefined;
31
+ if (owner === "worker")
32
+ return this.#ctx.workerId;
33
+ if (owner === "commons")
34
+ return undefined;
35
+ return this.#defaultOwnerId;
30
36
  }
31
37
  #result(operation, result) {
32
38
  if (Results.isErrorStatus(result.status) && result.problem === undefined) {
@@ -38,10 +44,14 @@ export default class DbEntryCaps {
38
44
  return this.#result("edit", await EntryOps.editWorkspaceEntryBatch(statements, this.#ctx, this.#manifest, this.#ownerId(owner)));
39
45
  }
40
46
  async #read(statement, owner) {
41
- return this.#result("read", await EntryOps.readWorkspaceEntry(statement, this.#ctx, this.#manifest, this.#ownerId(owner)));
47
+ return this.#result("read", await EntryOps.readWorkspaceEntry(statement, this.#ctx, this.#manifest, {
48
+ ownerId: this.#ownerId(owner),
49
+ }));
42
50
  }
43
51
  async #find(statement, owner) {
44
- return this.#result("find", await EntryFind.findWorkspaceEntries(statement, this.#ctx, this.#manifest, this.#ownerId(owner)));
52
+ return this.#result("find", await EntryFind.findWorkspaceEntries(statement, this.#ctx, this.#manifest, {
53
+ ownerId: this.#ownerId(owner),
54
+ }));
45
55
  }
46
56
  async #send(statement, owner) {
47
57
  return this.#result("send", await EntrySend.sendToWorkspaceEntry(statement, this.#ctx, this.#scheme, this.#ownerId(owner)));
@@ -1 +1 @@
1
- {"version":3,"file":"DbEntryCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DbEntryCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { NotifyCaps, ChannelState } from "@plurnk/plurnk-schemes";
2
2
  import type { PlurnkSchemeContext } from "../scheme-types.ts";
3
3
  export default class DbNotifyCaps implements NotifyCaps {
4
4
  #private;
5
- constructor(ctx: PlurnkSchemeContext, scheme: string);
5
+ constructor(ctx: PlurnkSchemeContext, scheme: string, ownerId?: number);
6
6
  streamEvent(pathname: string, channel: string, state: ChannelState, contentLength: number): void;
7
7
  }
8
8
  //# sourceMappingURL=DbNotifyCaps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DbNotifyCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,UAAU;;IAInD,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAGnD;IAED,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAM/F;CAQJ"}
1
+ {"version":3,"file":"DbNotifyCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,UAAU;;IAKnD,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAIrE;IAED,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAM/F;CAQJ"}
@@ -13,9 +13,11 @@ import { renderAddress } from "../plurnk-uri.js";
13
13
  export default class DbNotifyCaps {
14
14
  #ctx;
15
15
  #scheme;
16
- constructor(ctx, scheme) {
16
+ #ownerId;
17
+ constructor(ctx, scheme, ownerId) {
17
18
  this.#ctx = ctx;
18
19
  this.#scheme = scheme;
20
+ this.#ownerId = ownerId;
19
21
  }
20
22
  streamEvent(pathname, channel, state, contentLength) {
21
23
  const notify = this.#ctx.streamEventNotify;
@@ -26,11 +28,11 @@ export default class DbNotifyCaps {
26
28
  });
27
29
  }
28
30
  async #emit(notify, pathname, channel, state, contentLength) {
29
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
30
- if (entryId === null)
31
+ const entry = await CapsResolve.entry(this.#ctx, this.#scheme, pathname, this.#ownerId);
32
+ if (entry === null)
31
33
  return;
32
34
  const target = renderAddress(this.#scheme, pathname);
33
- notify(this.#ctx.workspaceId, { entryId, target, channel, state, contentLength });
35
+ notify(this.#ctx.workspaceId, { entryId: entry.entryId, workerId: entry.workerId, target, channel, state, contentLength });
34
36
  }
35
37
  }
36
38
  //# sourceMappingURL=DbNotifyCaps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DbNotifyCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0FAA0F;AAC1F,6EAA6E;AAC7E,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,mDAAmD;AACnD,mDAAmD;AAKnD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,YAAY;IACpB,IAAI,CAAsB;IAC1B,OAAO,CAAS;IAEzB,YAAY,GAAwB,EAAE,MAAc;QAChD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAE,KAAmB,EAAE,aAAqB;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACtF,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAyB,EAAE,QAAgB,EAAE,OAAe,EAAE,KAAmB,EAAE,aAAqB;QAChH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IACtF,CAAC;CACJ"}
1
+ {"version":3,"file":"DbNotifyCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0FAA0F;AAC1F,6EAA6E;AAC7E,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,mDAAmD;AACnD,mDAAmD;AAKnD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,YAAY;IACpB,IAAI,CAAsB;IAC1B,OAAO,CAAS;IAChB,QAAQ,CAAqB;IAEtC,YAAY,GAAwB,EAAE,MAAc,EAAE,OAAgB;QAClE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAE,KAAmB,EAAE,aAAqB;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACtF,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAyB,EAAE,QAAgB,EAAE,OAAe,EAAE,KAAmB,EAAE,aAAqB;QAChH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAC/H,CAAC;CACJ"}
@@ -1,13 +1,11 @@
1
- import type { SubscriptionCaps, SubscriptionHandle, StreamSubscription, SchemeResult } from "@plurnk/plurnk-schemes";
1
+ import type { SubscriptionCaps, SubscriptionHandle, StreamSubscription, TerminalChannelState, SchemeResult } from "@plurnk/plurnk-schemes";
2
2
  import type { PlurnkSchemeContext } from "../scheme-types.ts";
3
3
  import type LiveSubscriptions from "../LiveSubscriptions.ts";
4
4
  export default class DbSubscriptionCaps implements SubscriptionCaps {
5
5
  #private;
6
- constructor(ctx: PlurnkSchemeContext, scheme: string, liveSubscriptions: LiveSubscriptions);
7
- open(pathname: string, handle: SubscriptionHandle, options?: {
8
- publishedChannel?: string;
9
- }): Promise<StreamSubscription>;
6
+ constructor(ctx: PlurnkSchemeContext, scheme: string, liveSubscriptions: LiveSubscriptions, publishedChannel: string | null, ownerId?: number);
7
+ open(pathname: string, handle: SubscriptionHandle): Promise<StreamSubscription>;
10
8
  notifyChunk(channel: string, chunk: string, mimetype?: string): Promise<void>;
11
- close(result: SchemeResult, summary?: string): Promise<void>;
9
+ close(result: SchemeResult, summary?: string, channelStates?: Readonly<Record<string, TerminalChannelState>>): Promise<void>;
12
10
  }
13
11
  //# sourceMappingURL=DbSubscriptionCaps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DbSubscriptionCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAElB,YAAY,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAG7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,gBAAgB;;IAM/D,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAIzF;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmE7H;IAEK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlF;IAEK,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE;CACJ"}
1
+ {"version":3,"file":"DbSubscriptionCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAElB,oBAAoB,EACpB,YAAY,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAG7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,gBAAgB;;IAQ/D,YACI,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,OAAO,CAAC,EAAE,MAAM,EAOnB;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgFpF;IAEK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlF;IAEK,KAAK,CACP,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAIf;CACJ"}
@@ -4,9 +4,9 @@
4
4
  // worker+teardown-composed StreamSubscription; a worker abort also
5
5
  // force-cancels the sibling's handle.
6
6
  // notifyChunk(channel, chunk) → FUSED append-to-channel + stream/event.
7
- // close(result, summary?) → composites every channel's terminal state, the
8
- // registry close, and the rich worker wake (the only place with the close
9
- // context to populate it; NotifyCaps therefore has no wakeWorker operation).
7
+ // close(result, summary?, channelStates?) → composites every channel's
8
+ // terminal state, registry close, and rich worker wake (the only place with
9
+ // the close context; NotifyCaps therefore has no wakeWorker operation).
10
10
  // The returned object owns the exact retained lifecycle. Namespace methods are
11
11
  // operation-scoped compatibility forwarders to that same object.
12
12
  import { Results } from "@plurnk/plurnk-schemes";
@@ -17,20 +17,25 @@ export default class DbSubscriptionCaps {
17
17
  #ctx;
18
18
  #scheme;
19
19
  #liveSubscriptions;
20
+ #publishedChannel;
21
+ #ownerId;
20
22
  #current = null;
21
- constructor(ctx, scheme, liveSubscriptions) {
23
+ constructor(ctx, scheme, liveSubscriptions, publishedChannel, ownerId) {
22
24
  this.#ctx = ctx;
23
25
  this.#scheme = scheme;
24
26
  this.#liveSubscriptions = liveSubscriptions;
27
+ this.#publishedChannel = publishedChannel;
28
+ this.#ownerId = ownerId;
25
29
  }
26
- async open(pathname, handle, options) {
27
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
28
- if (entryId === null)
30
+ async open(pathname, handle) {
31
+ const entry = await CapsResolve.entry(this.#ctx, this.#scheme, pathname, this.#ownerId);
32
+ if (entry === null)
29
33
  throw new Error(`subscriptions.open: no entry at ${pathname}`);
34
+ const { entryId, workerId: entryOwnerId } = entry;
30
35
  const { db, workerId, workspaceId, signal: parent, streamEventNotify, wakeWorkerNotify, } = this.#ctx;
31
36
  const scheme = this.#scheme;
32
37
  const liveSubscriptions = this.#liveSubscriptions;
33
- const publishedChannel = options?.publishedChannel ?? null;
38
+ const publishedChannel = this.#publishedChannel;
34
39
  const subscriptionId = await ChannelWrite.openSubscription(db, {
35
40
  workerId, entryId, scheme, handle: pathname, publishedChannel,
36
41
  });
@@ -43,11 +48,20 @@ export default class DbSubscriptionCaps {
43
48
  mimetype,
44
49
  });
45
50
  };
46
- const close = async (result, summary) => {
51
+ const close = async (result, summary, channelStates) => {
47
52
  Results.assert(result);
48
- const state = result.status >= 400 ? "errored" : "closed";
53
+ const defaultState = result.status >= 400 ? "errored" : "closed";
49
54
  const channels = await db.crud_read_channels.all({ entry_id: entryId });
55
+ const channelNames = new Set(channels.map(({ name }) => name));
56
+ for (const [name, state] of Object.entries(channelStates ?? {})) {
57
+ if (!channelNames.has(name))
58
+ throw new Error(`subscriptions.close: unknown channel state override ${name}`);
59
+ if (state !== "closed" && state !== "errored") {
60
+ throw new Error(`subscriptions.close: invalid state ${JSON.stringify(state)} for channel ${name}`);
61
+ }
62
+ }
50
63
  for (const { name } of channels) {
64
+ const state = channelStates?.[name] ?? defaultState;
51
65
  await ChannelWrite.setChannelState(db, {
52
66
  entryId, channel: name, state,
53
67
  ...(publishedChannel === null || publishedChannel === name ? { notify: streamEventNotify } : {}),
@@ -57,7 +71,7 @@ export default class DbSubscriptionCaps {
57
71
  liveSubscriptions.unregister(subscriptionId);
58
72
  unlink();
59
73
  wakeWorkerNotify?.({
60
- workspaceId, workerId, entryId,
74
+ workspaceId, workerId, entryOwnerId, entryId,
61
75
  target: renderAddress(scheme, pathname),
62
76
  subscriptionId, result, scheme, summary: summary ?? "",
63
77
  });
@@ -91,11 +105,11 @@ export default class DbSubscriptionCaps {
91
105
  throw new Error("subscriptions.notifyChunk: no open subscription");
92
106
  await current.notifyChunk(channel, chunk, mimetype);
93
107
  }
94
- async close(result, summary) {
108
+ async close(result, summary, channelStates) {
95
109
  const current = this.#current;
96
110
  if (current === null)
97
111
  throw new Error("subscriptions.close: no open subscription");
98
- await current.close(result, summary);
112
+ await current.close(result, summary, channelStates);
99
113
  }
100
114
  }
101
115
  //# sourceMappingURL=DbSubscriptionCaps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DbSubscriptionCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DbSubscriptionCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type SchemeResult, type TagCaps, type TagListResult } from "@plurnk/plu
2
2
  import type { PlurnkSchemeContext } from "../scheme-types.ts";
3
3
  export default class DbTagCaps implements TagCaps {
4
4
  #private;
5
- constructor(ctx: PlurnkSchemeContext, scheme: string);
5
+ constructor(ctx: PlurnkSchemeContext, scheme: string, ownerId?: number);
6
6
  add(pathname: string, tags: ReadonlyArray<string>): Promise<SchemeResult>;
7
7
  remove(pathname: string, tags: ReadonlyArray<string>): Promise<SchemeResult>;
8
8
  list(pathname: string): Promise<TagListResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"DbTagCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,SAAU,YAAW,OAAO;;IAI7C,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAGnD;IAcK,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAK9E;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAKjF;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnD;CACJ"}
1
+ {"version":3,"file":"DbTagCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,SAAU,YAAW,OAAO;;IAK7C,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAIrE;IAcK,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAK9E;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAKjF;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnD;CACJ"}
@@ -9,16 +9,18 @@ import { renderAddress } from "../plurnk-uri.js";
9
9
  export default class DbTagCaps {
10
10
  #ctx;
11
11
  #scheme;
12
- constructor(ctx, scheme) {
12
+ #ownerId;
13
+ constructor(ctx, scheme, ownerId) {
13
14
  this.#ctx = ctx;
14
15
  this.#scheme = scheme;
16
+ this.#ownerId = ownerId;
15
17
  }
16
18
  #missing(pathname, fields = {}) {
17
19
  const target = renderAddress(this.#scheme, pathname);
18
20
  return Results.failure(`scheme:${this.#scheme}`, "entry-not-found", 404, `No entry exists at ${target}.`, fields, { target });
19
21
  }
20
22
  async add(pathname, tags) {
21
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
23
+ const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
22
24
  if (entryId === null)
23
25
  return this.#missing(pathname);
24
26
  for (const tag of tags)
@@ -26,7 +28,7 @@ export default class DbTagCaps {
26
28
  return Results.assert({ status: 200 });
27
29
  }
28
30
  async remove(pathname, tags) {
29
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
31
+ const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
30
32
  if (entryId === null)
31
33
  return this.#missing(pathname);
32
34
  for (const tag of tags)
@@ -34,7 +36,7 @@ export default class DbTagCaps {
34
36
  return Results.assert({ status: 200 });
35
37
  }
36
38
  async list(pathname) {
37
- const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
39
+ const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
38
40
  if (entryId === null)
39
41
  return this.#missing(pathname, { tags: [] });
40
42
  const rows = await this.#ctx.db.crud_read_tags.all({ entry_id: entryId });
@@ -1 +1 @@
1
- {"version":3,"file":"DbTagCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,qBAAqB;AACrB,8EAA8E;AAC9E,gFAAgF;AAChF,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAuD,MAAM,wBAAwB,CAAC;AAEtG,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,SAAS;IACjB,IAAI,CAAsB;IAC1B,OAAO,CAAS;IAEzB,YAAY,GAAwB,EAAE,MAAc;QAChD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,QAAgB,EAAE,MAAM,GAAsC,EAAE;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,OAAO,CAClB,UAAU,IAAI,CAAC,OAAO,EAAE,EACxB,iBAAiB,EACjB,GAAG,EACH,sBAAsB,MAAM,GAAG,EAC/B,MAAM,EACN,EAAE,MAAM,EAAE,CACb,CAAC;IACN,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,IAA2B;QACnD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,IAA2B;QACtD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACvB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAkB,CAAC;QACpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3F,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;CACJ"}
1
+ {"version":3,"file":"DbTagCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import type { SchemeCtx, EntryCaps, ChannelCaps, TagCaps, NotifyCaps, ProjectionCaps, SubscriptionCaps, SchemeManifest, WriterTier } from "@plurnk/plurnk-schemes";
2
2
  import type { PlurnkSchemeContext } from "../scheme-types.ts";
3
3
  import type LiveSubscriptions from "../LiveSubscriptions.ts";
4
+ interface SchemeCtxOptions {
5
+ readonly ownerId?: number;
6
+ readonly publishedChannel?: string | null;
7
+ }
4
8
  export default class SchemeCtxImpl implements SchemeCtx {
5
9
  readonly workspaceId: number;
6
10
  readonly workerId: number;
@@ -14,6 +18,7 @@ export default class SchemeCtxImpl implements SchemeCtx {
14
18
  readonly notify: NotifyCaps;
15
19
  readonly projection: ProjectionCaps;
16
20
  readonly subscriptions: SubscriptionCaps;
17
- constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, liveSubscriptions: LiveSubscriptions);
21
+ constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, liveSubscriptions: LiveSubscriptions, options?: SchemeCtxOptions);
18
22
  }
23
+ export {};
19
24
  //# sourceMappingURL=SchemeCtxImpl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemeCtxImpl.d.ts","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EACvH,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAanH;CACJ"}
1
+ {"version":3,"file":"SchemeCtxImpl.d.ts","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EACvH,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,UAAU,gBAAgB;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,YACI,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,gBAAqB,EAoBjC;CACJ"}
@@ -19,19 +19,19 @@ export default class SchemeCtxImpl {
19
19
  notify;
20
20
  projection;
21
21
  subscriptions;
22
- constructor(ctx, scheme, manifest, liveSubscriptions) {
22
+ constructor(ctx, scheme, manifest, liveSubscriptions, options = {}) {
23
23
  this.workspaceId = ctx.workspaceId;
24
24
  this.workerId = ctx.workerId;
25
25
  this.loopId = ctx.loopId;
26
26
  this.turnId = ctx.turnId;
27
27
  this.writer = ctx.writer;
28
28
  this.signal = ctx.signal;
29
- this.entries = new DbEntryCaps(ctx, scheme, manifest);
30
- this.channels = new DbChannelCaps(ctx, scheme);
31
- this.tags = new DbTagCaps(ctx, scheme);
32
- this.notify = new DbNotifyCaps(ctx, scheme);
29
+ this.entries = new DbEntryCaps(ctx, scheme, manifest, options.ownerId);
30
+ this.channels = new DbChannelCaps(ctx, scheme, options.ownerId);
31
+ this.tags = new DbTagCaps(ctx, scheme, options.ownerId);
32
+ this.notify = new DbNotifyCaps(ctx, scheme, options.ownerId);
33
33
  this.projection = new DbProjectionCaps(ctx);
34
- this.subscriptions = new DbSubscriptionCaps(ctx, scheme, liveSubscriptions);
34
+ this.subscriptions = new DbSubscriptionCaps(ctx, scheme, liveSubscriptions, options.publishedChannel ?? null, options.ownerId);
35
35
  }
36
36
  }
37
37
  //# sourceMappingURL=SchemeCtxImpl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemeCtxImpl.js","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,2EAA2E;AAM3E,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,MAAM,CAAa;IACnB,MAAM,CAA0B;IAChC,OAAO,CAAY;IACnB,QAAQ,CAAc;IACtB,IAAI,CAAU;IACd,MAAM,CAAa;IACnB,UAAU,CAAiB;IAC3B,aAAa,CAAmB;IACzC,YAAY,GAAwB,EAAE,MAAc,EAAE,QAAwB,EAAE,iBAAoC;QAChH,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChF,CAAC;CACJ"}
1
+ {"version":3,"file":"SchemeCtxImpl.js","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,2EAA2E;AAM3E,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAQrD,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,MAAM,CAAa;IACnB,MAAM,CAA0B;IAChC,OAAO,CAAY;IACnB,QAAQ,CAAc;IACtB,IAAI,CAAU;IACd,MAAM,CAAa;IACnB,UAAU,CAAiB;IAC3B,aAAa,CAAmB;IACzC,YACI,GAAwB,EACxB,MAAc,EACd,QAAwB,EACxB,iBAAoC,EACpC,OAAO,GAAqB,EAAE;QAE9B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CACvC,GAAG,EACH,MAAM,EACN,iBAAiB,EACjB,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAChC,OAAO,CAAC,OAAO,CAClB,CAAC;IACN,CAAC;CACJ"}
@@ -100,8 +100,8 @@ RETURNING id;
100
100
  -- PREP: fork_copy_entry_channels
101
101
  -- Copy every source channel from the source entry to the copy. Deep projections
102
102
  -- live on the shared artifact, not on either entry.
103
- INSERT INTO entry_channels (entry_id, name, content, mimetype, tokens, state)
104
- SELECT $new_entry_id, name, content, mimetype, tokens, state FROM entry_channels WHERE entry_id = $old_entry_id;
103
+ INSERT INTO entry_channels (entry_id, name, content, mimetype, tokens, state, producer_result)
104
+ SELECT $new_entry_id, name, content, mimetype, tokens, state, producer_result FROM entry_channels WHERE entry_id = $old_entry_id;
105
105
 
106
106
  -- PREP: fork_copy_entry_tags
107
107
  INSERT INTO entry_tags (entry_id, tag)
@@ -1,4 +1,4 @@
1
- import type { GitStatus } from "./git-state.ts";
1
+ import type { GitStatusSnapshot } from "./git-state.ts";
2
2
  export declare class GitIsoError extends Error {
3
3
  constructor(root: string, operation: string, cause: unknown);
4
4
  }
@@ -7,6 +7,7 @@ export default class GitIso {
7
7
  static trackedFiles(root: string, cache: object): Promise<string[]>;
8
8
  static untrackedFiles(root: string, cache: object): Promise<string[]>;
9
9
  static repoToplevel(dir: string): Promise<string | null>;
10
- static status(root: string): Promise<GitStatus>;
10
+ static status(workspaceRoot: string, repositoryRoot?: string): Promise<GitStatusSnapshot>;
11
+ static add(root: string, filepath: string): Promise<void>;
11
12
  }
12
13
  //# sourceMappingURL=git-iso.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-iso.d.ts","sourceRoot":"","sources":["../../src/core/git-iso.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,WAAY,SAAQ,KAAK;IAClC,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAkB1D;CACJ;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;;IA0CvB,OAAa,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGxE;IAaD,OAAa,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1E;IAqED,OAAa,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAM7D;IAKD,OAAa,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAEpD;CAwDJ"}
1
+ {"version":3,"file":"git-iso.d.ts","sourceRoot":"","sources":["../../src/core/git-iso.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBAAa,WAAY,SAAQ,KAAK;IAClC,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAkB1D;CACJ;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;;IA0CvB,OAAa,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGxE;IAaD,OAAa,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1E;IAqED,OAAa,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAM7D;IAKD,OAAa,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,GAAE,MAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE7G;IAuED,OAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;CACJ"}
@@ -8,6 +8,7 @@ import ignore from "ignore";
8
8
  import { readdir, readFile } from "node:fs/promises";
9
9
  import { existsSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import Namespace from "./namespace.js";
11
12
  export class GitIsoError extends Error {
12
13
  constructor(root, operation, cause) {
13
14
  const detail = typeof cause === "object"
@@ -183,28 +184,39 @@ export default class GitIso {
183
184
  // Working-tree status — parity with `git status --porcelain --branch`: branch, ahead/behind
184
185
  // the configured upstream, and staged/unstaged/untracked counts. Repository incompatibilities
185
186
  // surface as GitIsoError; GitState distinguishes the ordinary non-repo case before this call.
186
- static async status(root) {
187
- return GitIso.#read(root, "reading working-tree status", () => GitIso.#status(root));
187
+ static async status(workspaceRoot, repositoryRoot = workspaceRoot) {
188
+ return GitIso.#read(repositoryRoot, "reading working-tree status", () => GitIso.#status(workspaceRoot, repositoryRoot));
188
189
  }
189
- static async #status(root) {
190
+ static async #status(workspaceRoot, repositoryRoot) {
190
191
  const cache = {};
191
- const branch = await git.currentBranch({ fs, dir: root, fullname: false }) ?? "HEAD"; // detached → HEAD, as porcelain renders it
192
- const matrix = await git.statusMatrix({ fs, dir: root, cache });
192
+ const branch = await git.currentBranch({ fs, dir: repositoryRoot, fullname: false }) ?? "HEAD"; // detached → HEAD, as porcelain renders it
193
+ const matrix = await git.statusMatrix({ fs, dir: repositoryRoot, cache });
193
194
  let staged = 0;
194
195
  let unstaged = 0;
195
196
  let untracked = 0;
196
- for (const [, head, workdir, stage] of matrix) {
197
+ const files = [];
198
+ for (const [filepath, head, workdir, stage] of matrix) {
199
+ const path = Namespace.fromRepositoryPath(filepath, workspaceRoot, repositoryRoot);
197
200
  if (head === 0 && stage === 0 && workdir === 2) {
198
201
  untracked++;
202
+ files.push({ path, status: "??" });
199
203
  continue;
200
204
  }
201
- if (head === 1 ? stage !== 1 : stage !== 0)
202
- staged++; // index differs from HEAD → X column
203
- if ((workdir === 2 && stage !== 2) || (workdir === 0 && stage !== 0))
204
- unstaged++; // workdir differs from index → Y column
205
+ const isStaged = head === 1 ? stage !== 1 : stage !== 0;
206
+ const isUnstaged = (workdir === 2 && stage !== 2) || (workdir === 0 && stage !== 0);
207
+ if (isStaged)
208
+ staged++;
209
+ if (isUnstaged)
210
+ unstaged++;
211
+ if (isStaged || isUnstaged) {
212
+ const index = isStaged ? (head === 0 ? "A" : stage === 0 ? "D" : "M") : " ";
213
+ const worktree = isUnstaged ? (workdir === 0 ? "D" : "M") : " ";
214
+ files.push({ path, status: `${index}${worktree}` });
215
+ }
205
216
  }
206
- const { ahead, behind } = await GitIso.#aheadBehind(root, branch, cache);
207
- return { branch, ahead, behind, staged, unstaged, untracked };
217
+ files.sort((a, b) => a.path.localeCompare(b.path));
218
+ const { ahead, behind } = await GitIso.#aheadBehind(repositoryRoot, branch, cache);
219
+ return { branch, ahead, behind, staged, unstaged, untracked, files };
208
220
  }
209
221
  // ahead/behind vs the branch's configured upstream (branch.<name>.remote + .merge →
210
222
  // refs/remotes/<remote>/<branch>). No upstream configured or never fetched → 0/0, the
@@ -248,5 +260,8 @@ export default class GitIso {
248
260
  }
249
261
  return count;
250
262
  }
263
+ static async add(root, filepath) {
264
+ await git.add({ fs, dir: root, filepath });
265
+ }
251
266
  }
252
267
  //# sourceMappingURL=git-iso.js.map