@plurnk/plurnk-service 1.0.4 → 1.0.6

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 (215) hide show
  1. package/.env.defaults +55 -31
  2. package/INSTALL.md +3 -3
  3. package/README.md +4 -4
  4. package/SPEC.md +205 -193
  5. package/dist/Paths.js +1 -1
  6. package/dist/Paths.js.map +1 -1
  7. package/dist/core/ChannelWrite.d.ts +18 -18
  8. package/dist/core/ChannelWrite.d.ts.map +1 -1
  9. package/dist/core/ChannelWrite.js +17 -17
  10. package/dist/core/ChannelWrite.js.map +1 -1
  11. package/dist/core/ChannelWrite.sql +11 -11
  12. package/dist/core/Dispatcher.d.ts +11 -16
  13. package/dist/core/Dispatcher.d.ts.map +1 -1
  14. package/dist/core/Dispatcher.js +122 -125
  15. package/dist/core/Dispatcher.js.map +1 -1
  16. package/dist/core/Engine.d.ts +20 -23
  17. package/dist/core/Engine.d.ts.map +1 -1
  18. package/dist/core/Engine.js +213 -210
  19. package/dist/core/Engine.js.map +1 -1
  20. package/dist/core/Engine.sql +108 -130
  21. package/dist/core/PacketBuilder.d.ts +10 -11
  22. package/dist/core/PacketBuilder.d.ts.map +1 -1
  23. package/dist/core/PacketBuilder.js +204 -128
  24. package/dist/core/PacketBuilder.js.map +1 -1
  25. package/dist/core/ProposalLifecycle.d.ts +8 -8
  26. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  27. package/dist/core/ProposalLifecycle.js +10 -10
  28. package/dist/core/ProposalLifecycle.js.map +1 -1
  29. package/dist/core/ProviderInstantiate.d.ts +1 -0
  30. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  31. package/dist/core/ProviderInstantiate.js +9 -3
  32. package/dist/core/ProviderInstantiate.js.map +1 -1
  33. package/dist/core/SchemeRegistry.d.ts +4 -1
  34. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  35. package/dist/core/SchemeRegistry.js +18 -9
  36. package/dist/core/SchemeRegistry.js.map +1 -1
  37. package/dist/core/TelemetryChannel.d.ts +5 -5
  38. package/dist/core/TelemetryChannel.d.ts.map +1 -1
  39. package/dist/core/TelemetryChannel.js +9 -9
  40. package/dist/core/TelemetryChannel.js.map +1 -1
  41. package/dist/core/caps/CapsResolve.js +2 -2
  42. package/dist/core/caps/CapsResolve.js.map +1 -1
  43. package/dist/core/caps/DbNotifyCaps.js +2 -2
  44. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  45. package/dist/core/caps/DbSubscriptionCaps.js +7 -7
  46. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  47. package/dist/core/caps/SchemeCtxImpl.d.ts +2 -2
  48. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  49. package/dist/core/caps/SchemeCtxImpl.js +4 -4
  50. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  51. package/dist/core/content-hash.d.ts +2 -0
  52. package/dist/core/content-hash.d.ts.map +1 -0
  53. package/dist/core/content-hash.js +6 -0
  54. package/dist/core/content-hash.js.map +1 -0
  55. package/dist/core/fork.d.ts +1 -1
  56. package/dist/core/fork.d.ts.map +1 -1
  57. package/dist/core/fork.js +31 -26
  58. package/dist/core/fork.js.map +1 -1
  59. package/dist/core/fork.sql +41 -32
  60. package/dist/core/git-env.d.ts.map +1 -1
  61. package/dist/core/git-env.js +23 -7
  62. package/dist/core/git-env.js.map +1 -1
  63. package/dist/core/git-iso.d.ts +9 -0
  64. package/dist/core/git-iso.d.ts.map +1 -0
  65. package/dist/core/git-iso.js +227 -0
  66. package/dist/core/git-iso.js.map +1 -0
  67. package/dist/core/git-membership.d.ts +2 -2
  68. package/dist/core/git-membership.d.ts.map +1 -1
  69. package/dist/core/git-membership.js +70 -50
  70. package/dist/core/git-membership.js.map +1 -1
  71. package/dist/core/git-state.d.ts +1 -1
  72. package/dist/core/git-state.d.ts.map +1 -1
  73. package/dist/core/git-state.js +21 -11
  74. package/dist/core/git-state.js.map +1 -1
  75. package/dist/core/packet-wire.d.ts.map +1 -1
  76. package/dist/core/packet-wire.js +81 -22
  77. package/dist/core/packet-wire.js.map +1 -1
  78. package/dist/core/plurnk-uri.d.ts +2 -2
  79. package/dist/core/plurnk-uri.d.ts.map +1 -1
  80. package/dist/core/plurnk-uri.js +19 -12
  81. package/dist/core/plurnk-uri.js.map +1 -1
  82. package/dist/core/run-ops.sql +26 -26
  83. package/dist/core/scheme-types.d.ts +6 -11
  84. package/dist/core/scheme-types.d.ts.map +1 -1
  85. package/dist/core/search-gate.js +0 -0
  86. package/dist/core/search-gate.js.map +1 -1
  87. package/dist/core/token-ruler.d.ts +2 -0
  88. package/dist/core/token-ruler.d.ts.map +1 -0
  89. package/dist/core/token-ruler.js +18 -0
  90. package/dist/core/token-ruler.js.map +1 -0
  91. package/dist/core/worker-cap.d.ts +8 -0
  92. package/dist/core/worker-cap.d.ts.map +1 -0
  93. package/dist/core/worker-cap.js +20 -0
  94. package/dist/core/worker-cap.js.map +1 -0
  95. package/dist/core/{session-settings.d.ts → workspace-settings.d.ts} +5 -5
  96. package/dist/core/workspace-settings.d.ts.map +1 -0
  97. package/dist/core/{session-settings.js → workspace-settings.js} +13 -13
  98. package/dist/core/workspace-settings.js.map +1 -0
  99. package/dist/digest/Digest.d.ts +3 -3
  100. package/dist/digest/Digest.d.ts.map +1 -1
  101. package/dist/digest/Digest.js +79 -73
  102. package/dist/digest/Digest.js.map +1 -1
  103. package/dist/digest/digest.sql +18 -18
  104. package/dist/schemes/Exec.d.ts +9 -2
  105. package/dist/schemes/Exec.d.ts.map +1 -1
  106. package/dist/schemes/Exec.js +121 -68
  107. package/dist/schemes/Exec.js.map +1 -1
  108. package/dist/schemes/ExecOutputScheme.js +3 -3
  109. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  110. package/dist/schemes/File.js +23 -23
  111. package/dist/schemes/File.js.map +1 -1
  112. package/dist/schemes/Known.js +5 -5
  113. package/dist/schemes/Known.js.map +1 -1
  114. package/dist/schemes/Log.d.ts.map +1 -1
  115. package/dist/schemes/Log.js +63 -14
  116. package/dist/schemes/Log.js.map +1 -1
  117. package/dist/schemes/Log.sql +49 -8
  118. package/dist/schemes/Plurnk.js +5 -5
  119. package/dist/schemes/Plurnk.js.map +1 -1
  120. package/dist/schemes/Skill.js +5 -5
  121. package/dist/schemes/Skill.js.map +1 -1
  122. package/dist/schemes/Unknown.js +5 -5
  123. package/dist/schemes/Unknown.js.map +1 -1
  124. package/dist/schemes/{Run.d.ts → Worker.d.ts} +2 -2
  125. package/dist/schemes/Worker.d.ts.map +1 -0
  126. package/dist/schemes/{Run.js → Worker.js} +67 -67
  127. package/dist/schemes/Worker.js.map +1 -0
  128. package/dist/schemes/_entry-crud.js +11 -11
  129. package/dist/schemes/_entry-crud.js.map +1 -1
  130. package/dist/schemes/_entry-crud.sql +29 -29
  131. package/dist/schemes/_entry-find.d.ts +2 -1
  132. package/dist/schemes/_entry-find.d.ts.map +1 -1
  133. package/dist/schemes/_entry-find.js +31 -19
  134. package/dist/schemes/_entry-find.js.map +1 -1
  135. package/dist/schemes/_entry-find.sql +9 -9
  136. package/dist/schemes/_entry-graph.d.ts +2 -2
  137. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  138. package/dist/schemes/_entry-graph.js +18 -18
  139. package/dist/schemes/_entry-graph.js.map +1 -1
  140. package/dist/schemes/_entry-graph.sql +8 -8
  141. package/dist/schemes/_entry-manifest.d.ts +1 -1
  142. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  143. package/dist/schemes/_entry-manifest.js +74 -50
  144. package/dist/schemes/_entry-manifest.js.map +1 -1
  145. package/dist/schemes/_entry-ops.d.ts +4 -4
  146. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  147. package/dist/schemes/_entry-ops.js +25 -25
  148. package/dist/schemes/_entry-ops.js.map +1 -1
  149. package/dist/schemes/_entry-ops.sql +9 -9
  150. package/dist/schemes/_entry-semantic.d.ts +2 -1
  151. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  152. package/dist/schemes/_entry-semantic.js +23 -4
  153. package/dist/schemes/_entry-semantic.js.map +1 -1
  154. package/dist/schemes/_entry-semantic.sql +18 -4
  155. package/dist/schemes/_entry-send.d.ts +1 -1
  156. package/dist/schemes/_entry-send.d.ts.map +1 -1
  157. package/dist/schemes/_entry-send.js +6 -6
  158. package/dist/schemes/_entry-send.js.map +1 -1
  159. package/dist/schemes/exec-abort.js +1 -1
  160. package/dist/schemes/exec-abort.js.map +1 -1
  161. package/dist/server/Daemon.d.ts +50 -48
  162. package/dist/server/Daemon.d.ts.map +1 -1
  163. package/dist/server/Daemon.js +307 -297
  164. package/dist/server/Daemon.js.map +1 -1
  165. package/dist/server/client-input.js +20 -20
  166. package/dist/server/client-input.js.map +1 -1
  167. package/dist/server/dispatch-as-plurnk.d.ts +1 -1
  168. package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
  169. package/dist/server/dispatch-as-plurnk.js +7 -7
  170. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  171. package/dist/server/drain.sql +27 -27
  172. package/dist/server/envelope.d.ts +20 -20
  173. package/dist/server/envelope.d.ts.map +1 -1
  174. package/dist/server/envelope.js +86 -86
  175. package/dist/server/envelope.js.map +1 -1
  176. package/dist/server/envelope.sql +39 -39
  177. package/dist/server/logEntry.d.ts +1 -1
  178. package/dist/server/logEntry.d.ts.map +1 -1
  179. package/dist/server/logEntry.js +1 -1
  180. package/dist/server/logEntry.js.map +1 -1
  181. package/dist/server/loop-model.d.ts +3 -0
  182. package/dist/server/loop-model.d.ts.map +1 -0
  183. package/dist/server/loop-model.js +26 -0
  184. package/dist/server/loop-model.js.map +1 -0
  185. package/dist/server/loopDocs.d.ts +1 -1
  186. package/dist/server/loopDocs.d.ts.map +1 -1
  187. package/dist/server/loopDocs.js +6 -6
  188. package/dist/server/loopDocs.js.map +1 -1
  189. package/dist/server/seam-entry-read.sql +2 -2
  190. package/dist/server/seam-log-read.sql +3 -3
  191. package/dist/server/seam-loop.sql +3 -3
  192. package/dist/server/seam-proposal-list.sql +4 -4
  193. package/dist/server/yolo.js +2 -2
  194. package/dist/server/yolo.js.map +1 -1
  195. package/dist/service.d.ts.map +1 -1
  196. package/dist/service.js +21 -6
  197. package/dist/service.js.map +1 -1
  198. package/migrations/0000-00-00.01_schema.sql +84 -85
  199. package/package.json +17 -14
  200. package/dist/core/TokenGauge.d.ts +0 -16
  201. package/dist/core/TokenGauge.d.ts.map +0 -1
  202. package/dist/core/TokenGauge.js +0 -58
  203. package/dist/core/TokenGauge.js.map +0 -1
  204. package/dist/core/run-cap.d.ts +0 -8
  205. package/dist/core/run-cap.d.ts.map +0 -1
  206. package/dist/core/run-cap.js +0 -20
  207. package/dist/core/run-cap.js.map +0 -1
  208. package/dist/core/search-prefetch.d.ts +0 -17
  209. package/dist/core/search-prefetch.d.ts.map +0 -1
  210. package/dist/core/search-prefetch.js +0 -164
  211. package/dist/core/search-prefetch.js.map +0 -1
  212. package/dist/core/session-settings.d.ts.map +0 -1
  213. package/dist/core/session-settings.js.map +0 -1
  214. package/dist/schemes/Run.d.ts.map +0 -1
  215. package/dist/schemes/Run.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  -- PREP: proposal_list_pending
2
- -- §proposal-list — every stopped-world proposal in the session (state='proposed'): file edits,
2
+ -- §proposal-list — every stopped-world proposal in the workspace (state='proposed'): file edits,
3
3
  -- MCP auths, [300] questions. The ruling's mandatory companion ({§proposal-timeout-cancels}
4
4
  -- ships indefinite): a world that can stay stopped for days MUST be discoverable by a
5
5
  -- reconnecting client, or granted patience reads as a mystery hang.
6
- SELECT le.id AS logEntryId, le.run_id AS runId, le.loop_id AS loopId, le.turn_id AS turnId,
6
+ SELECT le.id AS logEntryId, le.worker_id AS workerId, le.loop_id AS loopId, le.turn_id AS turnId,
7
7
  le.op, le.suffix, le.scheme, le.pathname, le.tx, le.attrs, le.at,
8
8
  l.flags AS loop_flags
9
9
  FROM log_entries le
10
- JOIN runs r ON r.id = le.run_id
10
+ JOIN workers r ON r.id = le.worker_id
11
11
  JOIN loops l ON l.id = le.loop_id
12
- WHERE r.session_id = $session_id AND le.state = 'proposed'
12
+ WHERE r.workspace_id = $workspace_id AND le.state = 'proposed'
13
13
  ORDER BY le.id;
@@ -24,7 +24,7 @@
24
24
  // - The wire roundtrip still happens; the daemon stays unaware that
25
25
  // no human reviewed.
26
26
  // - Use cases: real users who want "stop bothering me" ergonomics
27
- // across an interactive session. Documented in client SPEC §open-fold.
27
+ // across an interactive workspace. Documented in client SPEC §open-fold.
28
28
  //
29
29
  // Listener fires BEFORE ProposalLifecycle.awaitResolution awaits the waiter, so a
30
30
  // synchronous resolveProposal here is delivered to the awaiting dispatch
@@ -39,7 +39,7 @@ export default class Yolo {
39
39
  if (!event.flags.yolo)
40
40
  return;
41
41
  // A [300] question is NOT yolo-able (#346): it exists precisely to stop the world
42
- // for a human — auto-accepting answers nothing. The session opted into questions
42
+ // for a human — auto-accepting answers nothing. The workspace opted into questions
43
43
  // (settings.questions), so the stop is wanted even under yolo.
44
44
  if (event.op === "SEND" && event.attrs.question !== undefined)
45
45
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"yolo.js","sourceRoot":"","sources":["../../src/server/yolo.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,8DAA8D;AAC9D,EAAE;AACF,0CAA0C;AAC1C,EAAE;AACF,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,iCAAiC;AACjC,yDAAyD;AACzD,qDAAqD;AACrD,0EAA0E;AAC1E,2EAA2E;AAC3E,oEAAoE;AACpE,yEAAyE;AACzE,wBAAwB;AACxB,2EAA2E;AAC3E,qEAAqE;AACrE,EAAE;AACF,2DAA2D;AAC3D,uEAAuE;AACvE,wEAAwE;AACxE,wEAAwE;AACxE,2BAA2B;AAC3B,sEAAsE;AACtE,6EAA6E;AAC7E,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,yEAAyE;AACzE,+DAA+D;AAM/D,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,GAAO;QACrC,qCAAqC;QACrC,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAA2B,EAAE,EAAE;YACrD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBAAE,OAAO;YAC9B,kFAAkF;YAClF,iFAAiF;YACjF,+DAA+D;YAC/D,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,IAAK,KAAK,CAAC,KAA+B,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO;YACjG,IAAI,CAAC;gBACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACzB,uEAAuE;oBACvE,yEAAyE;oBACzE,wEAAwE;oBACxE,iEAAiE;oBACjE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAChG,OAAO;gBACX,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"yolo.js","sourceRoot":"","sources":["../../src/server/yolo.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,6EAA6E;AAC7E,8DAA8D;AAC9D,EAAE;AACF,0CAA0C;AAC1C,EAAE;AACF,uEAAuE;AACvE,sBAAsB;AACtB,EAAE;AACF,iCAAiC;AACjC,yDAAyD;AACzD,qDAAqD;AACrD,0EAA0E;AAC1E,2EAA2E;AAC3E,oEAAoE;AACpE,yEAAyE;AACzE,wBAAwB;AACxB,2EAA2E;AAC3E,qEAAqE;AACrE,EAAE;AACF,2DAA2D;AAC3D,uEAAuE;AACvE,wEAAwE;AACxE,wEAAwE;AACxE,2BAA2B;AAC3B,sEAAsE;AACtE,+EAA+E;AAC/E,EAAE;AACF,kFAAkF;AAClF,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,yEAAyE;AACzE,+DAA+D;AAM/D,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,GAAO;QACrC,qCAAqC;QACrC,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAA2B,EAAE,EAAE;YACrD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBAAE,OAAO;YAC9B,kFAAkF;YAClF,mFAAmF;YACnF,+DAA+D;YAC/D,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,IAAK,KAAK,CAAC,KAA+B,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO;YACjG,IAAI,CAAC;gBACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACzB,uEAAuE;oBACvE,yEAAyE;oBACzE,wEAAwE;oBACxE,iEAAiE;oBACjE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBAChG,OAAO;gBACX,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACL,wDAAwD;gBACxD,uDAAuD;YAC3D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAoBA,MAAM,CAAC,OAAO,OAAO,OAAO;;IA4MxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEjC;CACJ"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":";AAoBA,MAAM,CAAC,OAAO,OAAO,OAAO;;IA6NxB,OAAa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEjC;CACJ"}
package/dist/service.js CHANGED
@@ -11,7 +11,7 @@ import EnvFlags from "./core/EnvFlags.js";
11
11
  import EnvDefaults from "./core/env-defaults.js";
12
12
  import ProviderInstantiate from "./core/ProviderInstantiate.js";
13
13
  import Meta from "@plurnk/plurnk-meta";
14
- import { resolveActiveAlias } from "@plurnk/plurnk-providers";
14
+ import { parseAliasesFromEnv, resolveActiveAlias } from "@plurnk/plurnk-providers";
15
15
  import { Module as AguiModule } from "@plurnk/plurnk-agui";
16
16
  // The `plurnk-service` executable: launches the daemon (start) or runs migrations.
17
17
  // Not the user-facing client — that is the separate `plurnk` project.
@@ -110,6 +110,9 @@ export default class Service {
110
110
  // node-style env-file flags: --env-file=<path> (required) / --env-file-if-exists=<path>
111
111
  // (skip if missing), repeatable, in command-line order. node only loads pre-script files;
112
112
  // a published `plurnk-service --env-file=…` needs this post-script loader.
113
+ // PRECEDENCE CAUTION (#501): this post-script cascade is FIRST-wins (highest-priority file
114
+ // first); node's own pre-script parsing of the same flags is LAST-wins. The same flag
115
+ // obeys opposite precedence depending on argv position relative to the script path.
113
116
  static #envFileArgs() {
114
117
  return process.argv.flatMap((a) => {
115
118
  if (a.startsWith("--env-file-if-exists="))
@@ -185,6 +188,17 @@ export default class Service {
185
188
  const port = Number(Service.#requireEnv("PLURNK_PORT"));
186
189
  const db = await Service.#openDb(dbPath);
187
190
  const alias = resolveActiveAlias();
191
+ // #501 (owner ruling, gates 1.0.6) — SET-but-unresolvable is the silent-absence class, never
192
+ // a modelless boot: PLURNK_MODEL=plurnk/jennifer (a provider/model PATH where an ALIAS name
193
+ // belongs) resolved to null and the daemon booted modelless behind a warning claiming the
194
+ // knob was unset. Fail hard naming the violated contract; UNSET stays the legal modelless
195
+ // boot (clients may supply per-request models).
196
+ const selectedModel = process.env.PLURNK_MODEL ?? "";
197
+ if (alias === null && selectedModel !== "") {
198
+ const declared = parseAliasesFromEnv(process.env).map((a) => a.alias).join(", ");
199
+ throw new Error(`PLURNK_MODEL=${selectedModel} names no declared alias (declared: ${declared.length > 0 ? declared : "none"}). `
200
+ + `The knob takes an ALIAS name; for an inline model, declare PLURNK_MODEL_<alias>=${selectedModel} and set PLURNK_MODEL=<alias>.`);
201
+ }
188
202
  const provider = alias === null ? null : await ProviderInstantiate.loadActiveProvider();
189
203
  const daemon = new Daemon({ db, provider, nodeModulesPath: Service.#pluginsNodeModules() });
190
204
  // AG-UI daughter module (#355) — THE client surface, always on: its init runs at boot with the
@@ -210,12 +224,13 @@ export default class Service {
210
224
  process.stderr.write("plurnk-service: remote embedder active but reports no token window — set PLURNK_MIMETYPES_EMBED_MAX_TOKENS to the endpoint's limit or embedding derivations will refuse\n");
211
225
  }
212
226
  // §tokenomics-window-partition coupling (F7): per-request numeric reasoning budgets are
213
- // IGNORED by llama-server — when thinking is on, only the box's --reasoning-budget launch
227
+ // IGNORED by llama-server — when reasoning is on, only the box's --reasoning-budget launch
214
228
  // flag clamps it, and it must equal PLURNK_SERVICE_REASONING. Unverifiable from here, so
215
- // say it loudly rather than let the reserve be fiction.
216
- const thinking = process.env.PLURNK_PROVIDERS_THINKING ?? "off";
217
- if (thinking !== "off") {
218
- process.stderr.write(`plurnk-service: native thinking is ${thinking} — llama-server ignores per-request numeric budgets; ensure the serving box launches with --reasoning-budget ${process.env.PLURNK_PROVIDERS_THINKING_CAPACITY ?? "?"} or the capacity is not enforced.\n`);
229
+ // say it loudly rather than let the reserve be fiction. (#472 — reads the post-#399 knob
230
+ // names; the shed THINKING names made this advisory dead code that could never fire.)
231
+ const reasoning = process.env.PLURNK_PROVIDERS_REASONING ?? "off";
232
+ if (reasoning !== "off") {
233
+ process.stderr.write(`plurnk-service: reasoning is ${reasoning} — llama-server ignores per-request numeric budgets; ensure the serving box launches with --reasoning-budget ${process.env.PLURNK_PROVIDERS_REASONING_BUDGET ?? "?"} or the budget is not enforced.\n`);
219
234
  }
220
235
  if (alias === null) {
221
236
  process.stderr.write(`plurnk-service: no model configured — uncomment one of the three options (local / cloud / plurnk.ai) in ${resolve(Service.#homeDir, ".env")}. Loops fail legibly until then.\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- -- INIT: sessions
1
+ -- INIT: workspaces
2
2
  -- project_root: workspace pointer. NULL = headless (no disk side-effects);
3
3
  -- non-null = absolute path to the client's source tree, supplied at
4
- -- session.create or session.set_root.
5
- CREATE TABLE IF NOT EXISTS sessions (
4
+ -- workspace.create or workspace.set_root.
5
+ CREATE TABLE IF NOT EXISTS workspaces (
6
6
  id INTEGER NOT NULL PRIMARY KEY,
7
7
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
8
8
  name TEXT NOT NULL UNIQUE CHECK (length(name) > 0),
@@ -10,35 +10,35 @@ CREATE TABLE IF NOT EXISTS sessions (
10
10
  cost_pico INTEGER NOT NULL DEFAULT 0 CHECK (cost_pico >= 0),
11
11
  scheme_registry_additions TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(scheme_registry_additions)),
12
12
  project_root TEXT,
13
- -- #231 client-chosen session-open context: { manifestItems?, mdDocs? }, read at turn-0
13
+ -- #231 client-chosen workspace-open context: { manifestItems?, mdDocs? }, read at turn-0
14
14
  -- with precedence over env (manifestItems replaces PLURNK_MANIFEST_ITEMS; mdDocs unions PLURNK_MD_*).
15
15
  settings TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(settings))
16
16
  ) STRICT;
17
17
 
18
- CREATE INDEX IF NOT EXISTS sessions_created_at ON sessions (created_at);
18
+ CREATE INDEX IF NOT EXISTS sessions_created_at ON workspaces (created_at);
19
19
 
20
20
  -- INIT: runs
21
- CREATE TABLE IF NOT EXISTS runs (
21
+ CREATE TABLE IF NOT EXISTS workers (
22
22
  id INTEGER NOT NULL PRIMARY KEY,
23
23
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
24
- session_id INTEGER NOT NULL,
24
+ workspace_id INTEGER NOT NULL,
25
25
  name TEXT NOT NULL CHECK (length(name) > 0),
26
26
  created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
27
- -- runs fork via parent_run_id; sessions carry no parent — §machine-processes-no-fork-session
28
- parent_run_id INTEGER CHECK (parent_run_id IS NULL OR parent_run_id != id),
27
+ -- runs fork via parent_worker_id; workspaces carry no parent — §machine-processes-no-fork-workspace
28
+ parent_worker_id INTEGER CHECK (parent_worker_id IS NULL OR parent_worker_id != id),
29
29
  cost_pico INTEGER NOT NULL DEFAULT 0 CHECK (cost_pico >= 0),
30
30
  origin TEXT NOT NULL DEFAULT 'client' CHECK (origin IN ('model', 'client', 'plurnk')),
31
- FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
32
- FOREIGN KEY (parent_run_id) REFERENCES runs(id) ON DELETE CASCADE
31
+ FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
32
+ FOREIGN KEY (parent_worker_id) REFERENCES workers(id) ON DELETE CASCADE
33
33
  ) STRICT;
34
34
 
35
- CREATE INDEX IF NOT EXISTS runs_session_id_created_at ON runs (session_id, created_at);
36
- CREATE INDEX IF NOT EXISTS runs_parent_run_id ON runs (parent_run_id);
37
- -- NOT unique: a name is frozen per run (§machine-processes-run-origin) but RECLAIMABLE across
35
+ CREATE INDEX IF NOT EXISTS workers_workspace_id_created_at ON workers (workspace_id, created_at);
36
+ CREATE INDEX IF NOT EXISTS workers_parent_worker_id ON workers (parent_worker_id);
37
+ -- NOT unique: a name is frozen per worker (§machine-processes-worker-origin) but RECLAIMABLE across
38
38
  -- time — a terminated run keeps its name in permanent history while a fresh spawn reuses it;
39
- -- run_resolve_by_name picks the newest. A LIVE collision is refused at the spawn gate (Run.edit
40
- -- → run_live_by_name → 409), never by this index. Indexed for the by-name resolve/spawn lookup.
41
- CREATE INDEX IF NOT EXISTS runs_session_name ON runs (session_id, name);
39
+ -- worker_resolve_by_name picks the newest. A LIVE collision is refused at the spawn gate (Run.edit
40
+ -- → worker_live_by_name → 409), never by this index. Indexed for the by-name resolve/spawn lookup.
41
+ CREATE INDEX IF NOT EXISTS workers_workspace_name ON workers (workspace_id, name);
42
42
 
43
43
  -- INIT: loops
44
44
  -- flags: per-loop runtime flags (yolo, noProposals, noWeb, noInteraction,
@@ -48,7 +48,7 @@ CREATE INDEX IF NOT EXISTS runs_session_name ON runs (session_id
48
48
  CREATE TABLE IF NOT EXISTS loops (
49
49
  id INTEGER NOT NULL PRIMARY KEY,
50
50
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
51
- run_id INTEGER NOT NULL,
51
+ worker_id INTEGER NOT NULL,
52
52
  sequence INTEGER NOT NULL CHECK (sequence >= 1),
53
53
  status INTEGER NOT NULL DEFAULT 102 CHECK (status IN (100, 102, 200, 202, 413, 429, 499, 500, 504, 508)),
54
54
  prompt TEXT NOT NULL,
@@ -59,7 +59,7 @@ CREATE TABLE IF NOT EXISTS loops (
59
59
  -- #260 — client-passed @file paths foisted as turn-0 READs (string[] JSON). The daemon owns the
60
60
  -- workspace, so it READs them in instead of the client inlining bytes (co-location law).
61
61
  open_paths TEXT NOT NULL DEFAULT '[]' CHECK (json_valid(open_paths)),
62
- -- §run-scheme loop-termination delta: terminated_at is stamped by the trigger
62
+ -- §worker-scheme loop-termination delta: terminated_at is stamped by the trigger
63
63
  -- below when status crosses into terminal (every death-path, uniformly);
64
64
  -- terminal_message is the deliverable — the SEND[200] body or the abandonment
65
65
  -- reason — set by the terminating PREP (engine_loop_set_status).
@@ -71,12 +71,12 @@ CREATE TABLE IF NOT EXISTS loops (
71
71
  -- COLLECT and the termination delta render it as a marker ALONGSIDE terminal_message — the
72
72
  -- model's words are never rewritten; the engine's act is named.
73
73
  terminated_by TEXT CHECK (terminated_by IS NULL OR terminated_by IN ('collapse', 'cancel')),
74
- FOREIGN KEY (run_id) REFERENCES runs(id) ON DELETE CASCADE
74
+ FOREIGN KEY (worker_id) REFERENCES workers(id) ON DELETE CASCADE
75
75
  ) STRICT;
76
76
 
77
- CREATE UNIQUE INDEX IF NOT EXISTS loops_run_id_sequence ON loops (run_id, sequence);
77
+ CREATE UNIQUE INDEX IF NOT EXISTS loops_worker_id_sequence ON loops (worker_id, sequence);
78
78
 
79
- -- §run-scheme: a loop crossing into a terminal status stamps terminated_at, so sibling
79
+ -- §worker-scheme: a loop crossing into a terminal status stamps terminated_at, so sibling
80
80
  -- runs pull the termination as a folded ambient delta — caught uniformly across every
81
81
  -- death-path (SEND, grinder, max-turns, strike, KILL). The stamp updates terminated_at,
82
82
  -- never status, so it cannot re-fire this trigger. Terminals: 200 done · 413 budget ·
@@ -107,7 +107,7 @@ CREATE TABLE IF NOT EXISTS turns (
107
107
  -- #274 — the context window of the model that RAN this turn (provider.contextSize), so the
108
108
  -- gauge denominator matches the loop's actual model under any /model switch. NULL = the
109
109
  -- provider can't report a window (the client omits the gauge).
110
- usage_context_size INTEGER CHECK (usage_context_size IS NULL OR usage_context_size >= 1),
110
+ usage_prompt_budget INTEGER CHECK (usage_prompt_budget IS NULL OR usage_prompt_budget >= 1),
111
111
  packet TEXT NOT NULL CHECK (json_valid(packet)),
112
112
  finish_reason TEXT,
113
113
  model TEXT NOT NULL DEFAULT 'unknown' CHECK (length(model) >= 1),
@@ -128,8 +128,8 @@ CREATE INDEX IF NOT EXISTS turns_timestamp ON turns (timestamp);
128
128
  CREATE TABLE IF NOT EXISTS entries (
129
129
  id INTEGER NOT NULL PRIMARY KEY,
130
130
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
131
- scope TEXT NOT NULL CHECK (scope IN ('session', 'run')),
132
- session_id INTEGER,
131
+ scope TEXT NOT NULL CHECK (scope IN ('workspace', 'worker')),
132
+ workspace_id INTEGER,
133
133
  scheme TEXT CHECK (scheme IS NULL OR length(scheme) > 0),
134
134
  username TEXT,
135
135
  password TEXT,
@@ -155,16 +155,16 @@ CREATE TABLE IF NOT EXISTS entries (
155
155
  -- signature changed; an unchanged member is a no-op. NULL = never synced.
156
156
  synced_sig TEXT,
157
157
  -- User Note 5 — manifest cache-friendliness. Last-modified stamp, bumped on every
158
- -- channel write by entries_touch_on_channel_write; engine_list_session_entries orders
158
+ -- channel write by entries_touch_on_channel_write; engine_list_workspace_entries orders
159
159
  -- the catalog by it ASC so dormant entries hold the stable prompt-cache prefix.
160
160
  updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
161
- CHECK (session_id IS NOT NULL),
162
- FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
161
+ CHECK (workspace_id IS NOT NULL),
162
+ FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE
163
163
  ) STRICT;
164
164
 
165
- CREATE UNIQUE INDEX IF NOT EXISTS entries_session_identity ON entries (session_id, scheme, pathname) WHERE scope = 'session';
166
- -- §run-scheme — run-scope entries key (session, scheme='run', pathname='/<owner>/<path>'); the owner rides the pathname (no run_id).
167
- CREATE UNIQUE INDEX IF NOT EXISTS entries_run_identity ON entries (session_id, scheme, pathname) WHERE scope = 'run';
165
+ CREATE UNIQUE INDEX IF NOT EXISTS entries_workspace_identity ON entries (workspace_id, scheme, pathname) WHERE scope = 'workspace';
166
+ -- §worker-scheme — worker-scope entries key (workspace, scheme='run', pathname='/<owner>/<path>'); the owner rides the pathname (no worker_id).
167
+ CREATE UNIQUE INDEX IF NOT EXISTS entries_worker_identity ON entries (workspace_id, scheme, pathname) WHERE scope = 'worker';
168
168
 
169
169
  -- The ONE engine-imposed constraint (SPEC §stream-constraints, §stream-constraints-engine-one-cap): 100 MiB char-length cap
170
170
  -- per channel content body. All other limits are extrinsic.
@@ -174,8 +174,8 @@ CREATE TABLE IF NOT EXISTS entry_channels (
174
174
  content TEXT NOT NULL CHECK (length(content) <= 104857600),
175
175
  mimetype TEXT NOT NULL CHECK (length(mimetype) > 0),
176
176
  tokens INTEGER NOT NULL DEFAULT 0 CHECK (tokens >= 0),
177
- -- #312 — sha256 of content, stamped at static writes (streamed appends leave it NULL and
178
- -- readers fall back to the write-time `tokens`). The join key into token_counts.
177
+ -- content identity: sha256 of content, stamped at static writes (streamed appends leave it
178
+ -- NULL). The per-tokenizer token cache it once keyed was retired — §tokenomics-agnostic-ruler.
179
179
  content_hash TEXT,
180
180
  state TEXT NOT NULL DEFAULT 'static' CHECK (state IN ('static', 'active', 'closed', 'errored')),
181
181
  PRIMARY KEY (entry_id, name),
@@ -206,7 +206,7 @@ CREATE INDEX IF NOT EXISTS entry_tags_tag ON entry_tags (tag);
206
206
  -- `symbols` channel. Qualified path = container ? container || '.' || name : name.
207
207
  CREATE TABLE IF NOT EXISTS symbol_defs (
208
208
  id INTEGER NOT NULL PRIMARY KEY,
209
- session_id INTEGER NOT NULL,
209
+ workspace_id INTEGER NOT NULL,
210
210
  entry_id INTEGER NOT NULL,
211
211
  name TEXT NOT NULL CHECK (length(name) > 0),
212
212
  kind TEXT NOT NULL,
@@ -216,7 +216,7 @@ CREATE TABLE IF NOT EXISTS symbol_defs (
216
216
  FOREIGN KEY (entry_id) REFERENCES entries(id) ON DELETE CASCADE
217
217
  ) STRICT;
218
218
 
219
- CREATE INDEX IF NOT EXISTS symbol_defs_name ON symbol_defs (session_id, name);
219
+ CREATE INDEX IF NOT EXISTS symbol_defs_name ON symbol_defs (workspace_id, name);
220
220
 
221
221
  -- INIT: symbol_refs
222
222
  -- @graph EDGES (plurnk-service#186), from mimetypes' `references` channel.
@@ -225,7 +225,7 @@ CREATE INDEX IF NOT EXISTS symbol_defs_name ON symbol_defs (session_id, name);
225
225
  -- type|use (frozen, edge metadata only — traversal is kind-agnostic).
226
226
  CREATE TABLE IF NOT EXISTS symbol_refs (
227
227
  id INTEGER NOT NULL PRIMARY KEY,
228
- session_id INTEGER NOT NULL,
228
+ workspace_id INTEGER NOT NULL,
229
229
  entry_id INTEGER NOT NULL,
230
230
  name TEXT NOT NULL CHECK (length(name) > 0),
231
231
  kind TEXT NOT NULL,
@@ -235,8 +235,8 @@ CREATE TABLE IF NOT EXISTS symbol_refs (
235
235
  FOREIGN KEY (entry_id) REFERENCES entries(id) ON DELETE CASCADE
236
236
  ) STRICT;
237
237
 
238
- CREATE INDEX IF NOT EXISTS symbol_refs_name ON symbol_refs (session_id, name);
239
- CREATE INDEX IF NOT EXISTS symbol_refs_source ON symbol_refs (session_id, entry_id, container);
238
+ CREATE INDEX IF NOT EXISTS symbol_refs_name ON symbol_refs (workspace_id, name);
239
+ CREATE INDEX IF NOT EXISTS symbol_refs_source ON symbol_refs (workspace_id, entry_id, container);
240
240
 
241
241
  -- INIT: entry_fts (~semantic FTS half — plurnk-service#186)
242
242
  -- Keyword/content index over entry body content; the FTS5 rowid IS entries.id.
@@ -246,19 +246,6 @@ CREATE INDEX IF NOT EXISTS symbol_refs_source ON symbol_refs (session_id, entry_
246
246
  -- hook alongside symbol_defs/refs: re-indexed only when body content changes.
247
247
  CREATE VIRTUAL TABLE IF NOT EXISTS entry_fts USING fts5(content);
248
248
 
249
- -- INIT: token_counts (#312 — derived token counts keyed on (content_hash, tokenizer_id), the
250
- -- deep_hash discipline applied to the token gauge: content change → new hash → recount that
251
- -- entry; the run's MODEL change recounts iff the tokenizer identity changed (deepseek pro↔flash
252
- -- share a vocab → zero recounts; gemma↔deepseek → all). tokenizer_id is the tokenizer.json sha
253
- -- from the mimetypes seam (mimetypes#44), NEVER the model id. Rows are written only by the
254
- -- ASYNC paths (the pump warm + build-time stragglers) using the seam's exact counter.
255
- CREATE TABLE IF NOT EXISTS token_counts (
256
- content_hash TEXT NOT NULL,
257
- tokenizer_id TEXT NOT NULL,
258
- tokens INTEGER NOT NULL CHECK (tokens >= 0),
259
- PRIMARY KEY (content_hash, tokenizer_id)
260
- ) STRICT, WITHOUT ROWID;
261
-
262
249
  -- INIT: entry_embeddings (~semantic vector half — plurnk-service#186; Project
263
250
  -- Semantics chunking). One Float32 vector per CHUNK: an entry tiles into N chunks,
264
251
  -- each addressed by its <L> line range (line_start..line_end) and embedded
@@ -293,14 +280,14 @@ CREATE TABLE IF NOT EXISTS log_entries (
293
280
  id INTEGER NOT NULL PRIMARY KEY,
294
281
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
295
282
 
296
- run_id INTEGER NOT NULL,
283
+ worker_id INTEGER NOT NULL,
297
284
  loop_id INTEGER NOT NULL,
298
285
  turn_id INTEGER NOT NULL,
299
286
  sequence INTEGER NOT NULL CHECK (sequence >= 1),
300
287
  at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
301
288
  origin TEXT NOT NULL CHECK (origin IN ('model', 'client', 'plurnk', 'plugin')),
302
289
  -- §env-delta environment-delta cause: a sibling run-id or a scheme ('file');
303
- -- NULL = the owning run itself (self), rendered without a run= label.
290
+ -- NULL = the owning run itself (self), rendered without a worker= label.
304
291
  source TEXT,
305
292
 
306
293
  -- 'error' is an ACTIONLESS row (§telemetry — errors are log items): a parse failure that
@@ -344,22 +331,34 @@ CREATE TABLE IF NOT EXISTS log_entries (
344
331
 
345
332
  expanded INTEGER NOT NULL DEFAULT 1 CHECK (expanded IN (0, 1)),
346
333
 
347
- FOREIGN KEY (run_id) REFERENCES runs(id) ON DELETE CASCADE,
334
+ FOREIGN KEY (worker_id) REFERENCES workers(id) ON DELETE CASCADE,
348
335
  FOREIGN KEY (loop_id) REFERENCES loops(id) ON DELETE CASCADE,
349
336
  FOREIGN KEY (turn_id) REFERENCES turns(id) ON DELETE CASCADE
350
337
  ) STRICT;
351
338
 
352
339
  CREATE UNIQUE INDEX IF NOT EXISTS log_entries_turn_id_sequence ON log_entries (turn_id, sequence);
353
- CREATE INDEX IF NOT EXISTS log_entries_run_id ON log_entries (run_id);
340
+ CREATE INDEX IF NOT EXISTS log_entries_worker_id ON log_entries (worker_id);
354
341
  CREATE INDEX IF NOT EXISTS log_entries_loop_id ON log_entries (loop_id);
355
342
  CREATE INDEX IF NOT EXISTS log_entries_at ON log_entries (at);
356
343
 
344
+ -- §log-region-tagging — named log-region curation. FOLD is the log's write-op (EDIT can't
345
+ -- reach engine-written rows): FOLD[tag] stamps a tag on a region; OPEN[tag]/FIND[tag] filter
346
+ -- by it. Mirrors entry_tags (apply additive / filter ALL-tags AND); CASCADE with the row on KILL.
347
+ CREATE TABLE IF NOT EXISTS log_tags (
348
+ log_entry_id INTEGER NOT NULL,
349
+ tag TEXT NOT NULL CHECK (length(tag) > 0),
350
+ PRIMARY KEY (log_entry_id, tag),
351
+ FOREIGN KEY (log_entry_id) REFERENCES log_entries(id) ON DELETE CASCADE
352
+ ) STRICT, WITHOUT ROWID;
353
+
354
+ CREATE INDEX IF NOT EXISTS log_tags_tag ON log_tags (tag);
355
+
357
356
  -- Column-scoped immutability: the original action's identity and target
358
357
  -- never change; the proposal lifecycle is allowed to mutate state,
359
358
  -- outcome, status_rx, rx, expanded.
360
359
  CREATE TRIGGER IF NOT EXISTS log_entries_immutable_core
361
360
  BEFORE UPDATE OF
362
- run_id, loop_id, turn_id, sequence, at, origin, source,
361
+ worker_id, loop_id, turn_id, sequence, at, origin, source,
363
362
  op, suffix, signal,
364
363
  scheme, username, password, hostname,
365
364
  port, pathname, params, fragment,
@@ -376,7 +375,7 @@ CREATE TABLE IF NOT EXISTS schemes (
376
375
  name TEXT NOT NULL PRIMARY KEY CHECK (length(name) > 0),
377
376
  model_visible INTEGER NOT NULL CHECK (model_visible IN (0, 1)),
378
377
  category TEXT NOT NULL CHECK (length(category) > 0),
379
- default_scope TEXT NOT NULL CHECK (default_scope IN ('session')),
378
+ default_scope TEXT NOT NULL CHECK (default_scope IN ('workspace')),
380
379
  default_channel TEXT NOT NULL CHECK (length(default_channel) > 0),
381
380
  channel_orientations TEXT CHECK (channel_orientations IS NULL OR json_valid(channel_orientations)),
382
381
  writable_by TEXT NOT NULL CHECK (json_valid(writable_by)),
@@ -398,49 +397,49 @@ CREATE TABLE IF NOT EXISTS providers (
398
397
  CREATE INDEX IF NOT EXISTS providers_created_at ON providers (created_at);
399
398
 
400
399
  -- INIT: cost_rollups
401
- -- Triggers maintaining denormalized cost_pico totals on runs and sessions
400
+ -- Triggers maintaining denormalized cost_pico totals on runs and workspaces
402
401
  -- as turns insert/update. Pure denormalization (textbook trigger use);
403
402
  -- no branching state-machine logic lives here.
404
- CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_insert_run
403
+ CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_insert_worker
405
404
  AFTER INSERT ON turns
406
405
  BEGIN
407
- UPDATE runs
406
+ UPDATE workers
408
407
  SET cost_pico = cost_pico + NEW.usage_cost_pico
409
- WHERE id = (SELECT run_id FROM loops WHERE id = NEW.loop_id);
408
+ WHERE id = (SELECT worker_id FROM loops WHERE id = NEW.loop_id);
410
409
  END;
411
410
 
412
- CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_insert_session
411
+ CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_insert_workspace
413
412
  AFTER INSERT ON turns
414
413
  BEGIN
415
- UPDATE sessions
414
+ UPDATE workspaces
416
415
  SET cost_pico = cost_pico + NEW.usage_cost_pico
417
416
  WHERE id = (
418
- SELECT r.session_id
419
- FROM runs r
420
- JOIN loops l ON l.run_id = r.id
417
+ SELECT r.workspace_id
418
+ FROM workers r
419
+ JOIN loops l ON l.worker_id = r.id
421
420
  WHERE l.id = NEW.loop_id
422
421
  );
423
422
  END;
424
423
 
425
- CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_update_run
424
+ CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_update_worker
426
425
  AFTER UPDATE OF usage_cost_pico ON turns
427
426
  WHEN NEW.usage_cost_pico != OLD.usage_cost_pico
428
427
  BEGIN
429
- UPDATE runs
428
+ UPDATE workers
430
429
  SET cost_pico = cost_pico + NEW.usage_cost_pico - OLD.usage_cost_pico
431
- WHERE id = (SELECT run_id FROM loops WHERE id = NEW.loop_id);
430
+ WHERE id = (SELECT worker_id FROM loops WHERE id = NEW.loop_id);
432
431
  END;
433
432
 
434
- CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_update_session
433
+ CREATE TRIGGER IF NOT EXISTS turns_cost_rollup_update_workspace
435
434
  AFTER UPDATE OF usage_cost_pico ON turns
436
435
  WHEN NEW.usage_cost_pico != OLD.usage_cost_pico
437
436
  BEGIN
438
- UPDATE sessions
437
+ UPDATE workspaces
439
438
  SET cost_pico = cost_pico + NEW.usage_cost_pico - OLD.usage_cost_pico
440
439
  WHERE id = (
441
- SELECT r.session_id
442
- FROM runs r
443
- JOIN loops l ON l.run_id = r.id
440
+ SELECT r.workspace_id
441
+ FROM workers r
442
+ JOIN loops l ON l.worker_id = r.id
444
443
  WHERE l.id = NEW.loop_id
445
444
  );
446
445
  END;
@@ -453,7 +452,7 @@ END;
453
452
  CREATE TABLE IF NOT EXISTS subscriptions (
454
453
  id INTEGER NOT NULL PRIMARY KEY,
455
454
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
456
- run_id INTEGER NOT NULL,
455
+ worker_id INTEGER NOT NULL,
457
456
  entry_id INTEGER NOT NULL,
458
457
  scheme TEXT NOT NULL CHECK (length(scheme) > 0),
459
458
  handle TEXT NOT NULL CHECK (length(handle) > 0),
@@ -461,19 +460,19 @@ CREATE TABLE IF NOT EXISTS subscriptions (
461
460
  -- grammar 0.74.20 EXEC `<T,P>` poll cadence (seconds). NULL = not polled. While the owning
462
461
  -- loop hibernates (202), the daemon wakes it every poll_seconds to inspect this stream (§exec-poll).
463
462
  poll_seconds INTEGER CHECK (poll_seconds IS NULL OR poll_seconds > 0),
464
- -- EXEC `<0>` — turn-scoped: the stream is reaped at the run's next pre-turn so it never survives
463
+ -- EXEC `<0>` — turn-scoped: the stream is reaped at the worker's next pre-turn so it never survives
465
464
  -- into the subsequent turn; its terminal output surfaces born-OPEN like any conclusion. §exec-poll
466
465
  turn_scoped INTEGER NOT NULL DEFAULT 0 CHECK (turn_scoped IN (0, 1)),
467
466
  closed_at TEXT,
468
467
  close_status INTEGER CHECK (close_status IS NULL OR (close_status BETWEEN 100 AND 599)),
469
468
  CHECK ((closed_at IS NULL AND close_status IS NULL)
470
469
  OR (closed_at IS NOT NULL AND close_status IS NOT NULL)),
471
- FOREIGN KEY (run_id) REFERENCES runs(id) ON DELETE CASCADE,
470
+ FOREIGN KEY (worker_id) REFERENCES workers(id) ON DELETE CASCADE,
472
471
  FOREIGN KEY (entry_id) REFERENCES entries(id) ON DELETE CASCADE
473
472
  ) STRICT;
474
473
 
475
474
  CREATE UNIQUE INDEX IF NOT EXISTS subscriptions_active_one_per_entry
476
- ON subscriptions (run_id, entry_id)
475
+ ON subscriptions (worker_id, entry_id)
477
476
  WHERE closed_at IS NULL;
478
477
 
479
478
  CREATE INDEX IF NOT EXISTS subscriptions_scheme_active
@@ -482,19 +481,19 @@ CREATE INDEX IF NOT EXISTS subscriptions_scheme_active
482
481
 
483
482
  CREATE INDEX IF NOT EXISTS subscriptions_opened_at ON subscriptions (opened_at);
484
483
 
485
- -- (run_watermarks removed — §env-delta is now pull-from-log, no per-run snapshot.)
484
+ -- (worker_watermarks removed — §env-delta is now pull-from-log, no per-worker snapshot.)
486
485
 
487
- -- INIT: session_constraints
486
+ -- INIT: workspace_constraints
488
487
  -- SPEC §membership constraint overlay — the client's supersede over git membership.
489
- -- Per (session, effect, glob/target): `pick` (members git misses, resolved by a
488
+ -- Per (workspace, effect, glob/target): `pick` (members git misses, resolved by a
490
489
  -- targeted client-dictated scan), `hide` (drop git-tracked matches), `view` (member
491
490
  -- for read; File.edit rejects the write), `repo` (declare a git repo whose ls-files
492
491
  -- join membership, path-prefixed). git-absent, `pick` rows are the sole substrate
493
492
  -- source. Composed at membership resolution; node:path.matchesGlob.
494
- CREATE TABLE IF NOT EXISTS session_constraints (
495
- session_id INTEGER NOT NULL,
493
+ CREATE TABLE IF NOT EXISTS workspace_constraints (
494
+ workspace_id INTEGER NOT NULL,
496
495
  effect TEXT NOT NULL CHECK (effect IN ('pick', 'hide', 'view', 'repo')),
497
496
  glob TEXT NOT NULL,
498
- PRIMARY KEY (session_id, effect, glob),
499
- FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
497
+ PRIMARY KEY (workspace_id, effect, glob),
498
+ FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE
500
499
  ) STRICT, WITHOUT ROWID;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-service",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-grammar contract.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -43,6 +43,7 @@
43
43
  "test:demo": "PLURNK_SERVICE_EMBED_DISABLE=0 PLURNK_SERVICE_POLICY=../plurnk-meta/PLURNK_PERSONALITY.md node --conditions=plurnk-dev --import=./test/floor.ts --env-file-if-exists=.env.defaults --env-file-if-exists=.env --env-file-if-exists=.env.test --test --test-concurrency=1 test/demo/*.test.ts",
44
44
  "test:all": "npm run test:lint && npm run test:unit && npm run test:intg && npm run test:demo",
45
45
  "test:digest": "node --conditions=plurnk-dev bin/digest.ts",
46
+ "test:digest-failures": "node --conditions=plurnk-dev bin/digest-failures.ts",
46
47
  "test:clean-tmp": "rm -rf test/intg/.tmp",
47
48
  "dev:digest": "node --conditions=plurnk-dev bin/digest.ts",
48
49
  "build:clean": "rm -rf dist",
@@ -59,21 +60,23 @@
59
60
  "prepack": "npm run build"
60
61
  },
61
62
  "dependencies": {
62
- "@plurnk/plurnk-agui": "1.0.4",
63
- "@plurnk/plurnk-execs": "1.0.4",
64
- "@plurnk/plurnk-execs-common": "1.0.4",
65
- "@plurnk/plurnk-execs-mcp": "1.0.4",
66
- "@plurnk/plurnk-execs-search": "1.0.4",
67
- "@plurnk/plurnk-grammar": "1.0.4",
68
- "@plurnk/plurnk-mimetypes": "1.0.4",
69
- "@plurnk/plurnk-mimetypes-text-html": "1.0.4",
70
- "@plurnk/plurnk-providers": "1.0.4",
71
- "@plurnk/plurnk-schemes": "1.0.4",
72
- "@plurnk/plurnk-schemes-http": "1.0.4",
63
+ "@plurnk/plurnk-agui": "1.0.6",
64
+ "@plurnk/plurnk-execs": "1.0.6",
65
+ "@plurnk/plurnk-execs-common": "1.0.6",
66
+ "@plurnk/plurnk-execs-mcp": "1.0.6",
67
+ "@plurnk/plurnk-execs-search": "1.0.6",
68
+ "@plurnk/plurnk-grammar": "1.0.6",
69
+ "@plurnk/plurnk-mimetypes": "1.0.6",
70
+ "@plurnk/plurnk-mimetypes-text-html": "1.0.6",
71
+ "@plurnk/plurnk-providers": "1.0.6",
72
+ "@plurnk/plurnk-schemes": "1.0.6",
73
+ "@plurnk/plurnk-schemes-http": "1.0.6",
73
74
  "@possumtech/sqlrite": "5.2.0",
74
75
  "diff": "^9.0.0",
75
- "@plurnk/plurnk-mimetypes-embeddings": "1.0.4",
76
- "@plurnk/plurnk-meta": "1.0.4"
76
+ "ignore": "7.0.6",
77
+ "isomorphic-git": "1.38.7",
78
+ "@plurnk/plurnk-mimetypes-embeddings": "1.0.6",
79
+ "@plurnk/plurnk-meta": "1.0.6"
77
80
  },
78
81
  "devDependencies": {
79
82
  "@types/diff": "^7.0.2"