@plurnk/plurnk-service 1.17.0 → 1.18.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 (206) hide show
  1. package/.env.defaults +19 -1
  2. package/README.md +1 -1
  3. package/SPEC.md +1025 -946
  4. package/dist/build-info.json +1 -1
  5. package/dist/content/read-projector.js +2 -2
  6. package/dist/content/read-projector.js.map +1 -1
  7. package/dist/content/read-resolve.d.ts +1 -0
  8. package/dist/content/read-resolve.d.ts.map +1 -1
  9. package/dist/content/read-resolve.js +13 -10
  10. package/dist/content/read-resolve.js.map +1 -1
  11. package/dist/core/AdmittedTurnExecutor.d.ts +1 -2
  12. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  13. package/dist/core/AdmittedTurnExecutor.js +12 -12
  14. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  15. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  16. package/dist/core/CapabilityResolver.js +40 -33
  17. package/dist/core/CapabilityResolver.js.map +1 -1
  18. package/dist/core/ChannelWrite.d.ts +1 -0
  19. package/dist/core/ChannelWrite.d.ts.map +1 -1
  20. package/dist/core/ChannelWrite.js +1 -1
  21. package/dist/core/ChannelWrite.js.map +1 -1
  22. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  23. package/dist/core/DataStatementRunner.js +194 -144
  24. package/dist/core/DataStatementRunner.js.map +1 -1
  25. package/dist/core/Dispatcher.d.ts +6 -1
  26. package/dist/core/Dispatcher.d.ts.map +1 -1
  27. package/dist/core/Dispatcher.js +25 -26
  28. package/dist/core/Dispatcher.js.map +1 -1
  29. package/dist/core/Engine.js +1 -1
  30. package/dist/core/Engine.js.map +1 -1
  31. package/dist/core/ExecutionOutputs.sql +8 -0
  32. package/dist/core/ExecutorRegistry.d.ts +4 -0
  33. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  34. package/dist/core/ExecutorRegistry.js +1 -0
  35. package/dist/core/ExecutorRegistry.js.map +1 -1
  36. package/dist/core/LogBody.d.ts.map +1 -1
  37. package/dist/core/LogBody.js +2 -1
  38. package/dist/core/LogBody.js.map +1 -1
  39. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  40. package/dist/core/LogEntryProjection.js +4 -10
  41. package/dist/core/LogEntryProjection.js.map +1 -1
  42. package/dist/core/LogWriter.d.ts.map +1 -1
  43. package/dist/core/LogWriter.js +9 -7
  44. package/dist/core/LogWriter.js.map +1 -1
  45. package/dist/core/LoopDriver.d.ts.map +1 -1
  46. package/dist/core/LoopDriver.js +1 -3
  47. package/dist/core/LoopDriver.js.map +1 -1
  48. package/dist/core/ModelCall.d.ts.map +1 -1
  49. package/dist/core/ModelCall.js +2 -6
  50. package/dist/core/ModelCall.js.map +1 -1
  51. package/dist/core/ModelCall.sql +7 -36
  52. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  53. package/dist/core/ProposalLifecycle.js +8 -6
  54. package/dist/core/ProposalLifecycle.js.map +1 -1
  55. package/dist/core/RuntimeWorker.d.ts.map +1 -1
  56. package/dist/core/RuntimeWorker.js +6 -1
  57. package/dist/core/RuntimeWorker.js.map +1 -1
  58. package/dist/core/RuntimeWorker.sql +7 -1
  59. package/dist/core/SchemeRegistry.js +1 -1
  60. package/dist/core/SchemeRegistry.js.map +1 -1
  61. package/dist/core/StrikeRail.d.ts +2 -2
  62. package/dist/core/StrikeRail.d.ts.map +1 -1
  63. package/dist/core/StrikeRail.js +7 -5
  64. package/dist/core/StrikeRail.js.map +1 -1
  65. package/dist/core/ToolResources.d.ts.map +1 -1
  66. package/dist/core/ToolResources.js +5 -3
  67. package/dist/core/ToolResources.js.map +1 -1
  68. package/dist/core/TurnDispositionHandler.d.ts +4 -6
  69. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  70. package/dist/core/TurnDispositionHandler.js +88 -80
  71. package/dist/core/TurnDispositionHandler.js.map +1 -1
  72. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  73. package/dist/core/TurnMaterialization.js +7 -9
  74. package/dist/core/TurnMaterialization.js.map +1 -1
  75. package/dist/core/TurnOps.d.ts.map +1 -1
  76. package/dist/core/TurnOps.js +1 -1
  77. package/dist/core/TurnOps.js.map +1 -1
  78. package/dist/core/TurnRunner.d.ts +1 -5
  79. package/dist/core/TurnRunner.d.ts.map +1 -1
  80. package/dist/core/TurnRunner.js +1096 -1062
  81. package/dist/core/TurnRunner.js.map +1 -1
  82. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  83. package/dist/core/WorkerControlHandler.js +23 -0
  84. package/dist/core/WorkerControlHandler.js.map +1 -1
  85. package/dist/core/WorkerName.d.ts +3 -6
  86. package/dist/core/WorkerName.d.ts.map +1 -1
  87. package/dist/core/WorkerName.js +9 -25
  88. package/dist/core/WorkerName.js.map +1 -1
  89. package/dist/core/WorkspaceGate.js +4 -4
  90. package/dist/core/WorkspaceGate.js.map +1 -1
  91. package/dist/core/env-catalog.d.ts +28 -0
  92. package/dist/core/env-catalog.d.ts.map +1 -0
  93. package/dist/core/env-catalog.js +99 -0
  94. package/dist/core/env-catalog.js.map +1 -0
  95. package/dist/core/file-materialization.js +1 -1
  96. package/dist/core/file-materialization.js.map +1 -1
  97. package/dist/core/git-state.js +1 -1
  98. package/dist/core/git-state.js.map +1 -1
  99. package/dist/core/operation-target-groups.d.ts.map +1 -1
  100. package/dist/core/operation-target-groups.js +2 -1
  101. package/dist/core/operation-target-groups.js.map +1 -1
  102. package/dist/core/packet-wire.d.ts.map +1 -1
  103. package/dist/core/packet-wire.js +320 -295
  104. package/dist/core/packet-wire.js.map +1 -1
  105. package/dist/digest/Digest.d.ts.map +1 -1
  106. package/dist/digest/Digest.js +3 -1
  107. package/dist/digest/Digest.js.map +1 -1
  108. package/dist/digest/DigestRender.d.ts +1 -0
  109. package/dist/digest/DigestRender.d.ts.map +1 -1
  110. package/dist/digest/DigestRender.js +44 -8
  111. package/dist/digest/DigestRender.js.map +1 -1
  112. package/dist/digest/digest-rows.d.ts +6 -0
  113. package/dist/digest/digest-rows.d.ts.map +1 -1
  114. package/dist/digest/digest.sql +11 -2
  115. package/dist/schemes/Exec.d.ts.map +1 -1
  116. package/dist/schemes/Exec.js +68 -33
  117. package/dist/schemes/Exec.js.map +1 -1
  118. package/dist/schemes/ExecScheduler.js +2 -2
  119. package/dist/schemes/ExecScheduler.js.map +1 -1
  120. package/dist/schemes/File.d.ts.map +1 -1
  121. package/dist/schemes/File.js +2 -1
  122. package/dist/schemes/File.js.map +1 -1
  123. package/dist/schemes/Log.js +1 -1
  124. package/dist/schemes/Log.js.map +1 -1
  125. package/dist/schemes/QuestionTool.js +1 -1
  126. package/dist/schemes/QuestionTool.js.map +1 -1
  127. package/dist/schemes/TurnSource.d.ts.map +1 -1
  128. package/dist/schemes/TurnSource.js +7 -6
  129. package/dist/schemes/TurnSource.js.map +1 -1
  130. package/dist/schemes/_entry-crud.sql +18 -0
  131. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  132. package/dist/schemes/_entry-manifest.js +5 -14
  133. package/dist/schemes/_entry-manifest.js.map +1 -1
  134. package/dist/schemes/_entry-manifest.sql +1 -1
  135. package/dist/schemes/_search-index.d.ts +5 -1
  136. package/dist/schemes/_search-index.d.ts.map +1 -1
  137. package/dist/schemes/_search-index.js +96 -56
  138. package/dist/schemes/_search-index.js.map +1 -1
  139. package/dist/schemes/_search-index.sql +17 -0
  140. package/dist/schemes/exec-abort.js +1 -1
  141. package/dist/schemes/exec-abort.js.map +1 -1
  142. package/dist/schemes/exec-env.d.ts +3 -0
  143. package/dist/schemes/exec-env.d.ts.map +1 -1
  144. package/dist/schemes/exec-env.js +66 -15
  145. package/dist/schemes/exec-env.js.map +1 -1
  146. package/dist/schemes/exec-runtime.d.ts +1 -1
  147. package/dist/schemes/exec-runtime.d.ts.map +1 -1
  148. package/dist/schemes/exec-runtime.js +1 -1
  149. package/dist/schemes/exec-runtime.js.map +1 -1
  150. package/dist/server/ClientReads.d.ts.map +1 -1
  151. package/dist/server/ClientReads.js +2 -1
  152. package/dist/server/ClientReads.js.map +1 -1
  153. package/dist/server/Daemon.d.ts +1 -0
  154. package/dist/server/Daemon.d.ts.map +1 -1
  155. package/dist/server/Daemon.js +32 -14
  156. package/dist/server/Daemon.js.map +1 -1
  157. package/dist/server/DaemonModule.d.ts +7 -2
  158. package/dist/server/DaemonModule.d.ts.map +1 -1
  159. package/dist/server/EnvFunctionality.d.ts +43 -0
  160. package/dist/server/EnvFunctionality.d.ts.map +1 -0
  161. package/dist/server/EnvFunctionality.js +194 -0
  162. package/dist/server/EnvFunctionality.js.map +1 -0
  163. package/dist/server/Functionality.d.ts +4 -2
  164. package/dist/server/Functionality.d.ts.map +1 -1
  165. package/dist/server/Functionality.js +188 -79
  166. package/dist/server/Functionality.js.map +1 -1
  167. package/dist/server/FunctionalityManager.d.ts +2 -0
  168. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  169. package/dist/server/FunctionalityManager.js +13 -3
  170. package/dist/server/FunctionalityManager.js.map +1 -1
  171. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  172. package/dist/server/MembersFunctionality.js +0 -1
  173. package/dist/server/MembersFunctionality.js.map +1 -1
  174. package/dist/server/Retention.d.ts +3 -0
  175. package/dist/server/Retention.d.ts.map +1 -1
  176. package/dist/server/Retention.js +7 -4
  177. package/dist/server/Retention.js.map +1 -1
  178. package/dist/server/Retention.sql +23 -0
  179. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  180. package/dist/server/SkillsFunctionality.js +5 -2
  181. package/dist/server/SkillsFunctionality.js.map +1 -1
  182. package/dist/server/WorkspaceResidency.d.ts +2 -0
  183. package/dist/server/WorkspaceResidency.d.ts.map +1 -1
  184. package/dist/server/WorkspaceResidency.js +27 -0
  185. package/dist/server/WorkspaceResidency.js.map +1 -1
  186. package/dist/server/client-input.js +1 -1
  187. package/dist/server/client-input.js.map +1 -1
  188. package/dist/server/drain.sql +1 -1
  189. package/dist/server/envelope.d.ts +0 -1
  190. package/dist/server/envelope.d.ts.map +1 -1
  191. package/dist/server/envelope.js +0 -12
  192. package/dist/server/envelope.js.map +1 -1
  193. package/dist/server/lifecycle-recovery.sql +4 -3
  194. package/dist/server/workspace-capabilities.sql +45 -0
  195. package/dist/service.d.ts.map +1 -1
  196. package/dist/service.js +16 -1
  197. package/dist/service.js.map +1 -1
  198. package/docs/env.md +55 -0
  199. package/docs/members.md +4 -4
  200. package/docs/skills.md +1 -1
  201. package/migrations/002_workers.sql +15 -0
  202. package/migrations/004_inference.sql +53 -12
  203. package/migrations/005_entries.sql +8 -0
  204. package/migrations/006_log.sql +18 -15
  205. package/migrations/007_subscriptions.sql +2 -2
  206. package/package.json +42 -32
package/.env.defaults CHANGED
@@ -23,6 +23,9 @@ PLURNK_PORT=1066
23
23
  # PLURNK_SERVICE_SQLITE_MMAP_SIZE=268435456
24
24
  # Database size ceiling, pages; writes beyond it fail. Unset = SQLite default.
25
25
  # PLURNK_SERVICE_SQLITE_MAX_PAGE_COUNT=524288
26
+ # Read-only database Workers beside the one writer Worker (database Workers = 1 + readers);
27
+ # 0 = every read shares the writer. Non-negative integer. Blank = sqlrite's own default.
28
+ PLURNK_SERVICE_SQLITE_READERS=0
26
29
 
27
30
  # --- Permissions and membership ---
28
31
  # CapabilityPolicy JSON: deny removes matching demands; only admits only matches.
@@ -32,7 +35,7 @@ PLURNK_SERVICE_CAPABILITIES={}
32
35
  PLURNK_SERVICE_FILE_CREATE_SCOPE=root
33
36
  # Model-added membership: none | root | namespace. Workspaces may narrow it.
34
37
  # Operator definitions use PLURNK_MEMBERS_<alias>=<glob> and PLURNK_MEMBERS_ENABLED=["alias"].
35
- PLURNK_SERVICE_MEMBERS_MODEL_SCOPE=none
38
+ PLURNK_SERVICE_MEMBERS_MODEL_SCOPE=namespace
36
39
  # Git membership, status, and branch integration: 1 = permitted; 0 = denied service-wide.
37
40
  PLURNK_SERVICE_GIT_ALLOWED=1
38
41
  # Include the repository containing project_root as members: 1 = yes; 0 = explicit members only.
@@ -96,6 +99,16 @@ PLURNK_SERVICE_OPTIMISTIC_WAIT_MS=5000
96
99
  PLURNK_SERVICE_EXEC_POLL_SEC=60
97
100
  # Backoff steps: delay doubles to BASE * 2^(TURNS-1), then stays capped.
98
101
  PLURNK_SERVICE_EXEC_POLL_TURNS=8
102
+ # Ambient environment an EXEC subprocess may inherit from the host: exact names, or one
103
+ # trailing-* prefix glob. This is a CEILING — a worker or a heading modifier narrows it,
104
+ # nothing widens it. plurnk's own secrets (PLURNK_* and every provider credential name) are
105
+ # stripped beneath it unconditionally and are not governed by this knob.
106
+ # The shipped list is what a shell, git, node and python need to run at all. An operator
107
+ # who wants a tool's credential reachable by model-written commands adds it by name.
108
+ PLURNK_SERVICE_EXEC_ENV_INHERIT=PATH,HOME,USER,LOGNAME,SHELL,PWD,TMPDIR,TERM,TZ,LANG,LC_*,PAGER,GIT_PAGER,NO_COLOR,CI
109
+ # Names removed after INHERIT, same shapes; narrows without rewriting the list above.
110
+ PLURNK_SERVICE_EXEC_ENV_EXCLUDE=
111
+
99
112
  # Grace after a termination signal, ms; then SIGKILL the surviving process group.
100
113
  PLURNK_SERVICE_EXEC_KILL_GRACE_MS=2000
101
114
 
@@ -154,6 +167,11 @@ PLURNK_SERVICE_REQUIEM_RETRY_MAX_TOKENS=32768
154
167
  PLURNK_SERVICE_RETAIN_PACKET_TURNS=-1
155
168
  # Packet compositions kept by age, ms since the turn completed; -1 = no age limit.
156
169
  PLURNK_SERVICE_RETAIN_PACKET_MS=-1
170
+ # Model response bodies kept per loop, newest first; -1 = every body, forever. The call's
171
+ # evidence, admission and accounting always stay.
172
+ PLURNK_SERVICE_RETAIN_RESPONSE_TURNS=-1
173
+ # Model response bodies kept by age, ms since the turn completed; -1 = no age limit.
174
+ PLURNK_SERVICE_RETAIN_RESPONSE_MS=-1
157
175
  # Collect packet items no turn's composition references (1), or keep them (0).
158
176
  PLURNK_SERVICE_COLLECT_PACKET_ITEMS=1
159
177
  # Collect derivations no channel, turn source, or log row cites (1), or keep them (0).
package/README.md CHANGED
@@ -73,7 +73,7 @@ The daemon can emit OpenTelemetry traces and low-cardinality metrics through the
73
73
 
74
74
  ## The file sandbox
75
75
 
76
- Plurnk sees what Git tracks or a `members` definition includes. The AGENTS.md policy path is injected separately as privileged policy, not as a file entry. A path admitted by neither source does not exist to the model and cannot be overwritten. Accepted creation is exclusive and never orphaned: it is Git-added or receives an inspectable exact pick. Creation defaults to `project_root`, can be disabled or expanded to the canonical namespace by operator policy, and only an explicit pick overrides Git ignore. Member edits remain proposal-gated; an outside-root member is read-only unless a pick grants it. `EXEC` deliberately reaches beyond this file sandbox, so its proposal policy is the machine perimeter. Details: SPEC {§scheme-address} ({§fs-namespace} through {§fs-world-state}).
76
+ Plurnk sees what Git tracks or a `members` definition includes. The AGENTS.md policy path is injected separately as privileged policy, not as a file entry. A path admitted by neither source does not exist to the model and cannot be overwritten. Accepted creation is exclusive and never orphaned: it is Git-added or receives an inspectable exact pick. Creation defaults to `project_root`, can be disabled or expanded to the canonical namespace by operator policy, and only an explicit pick overrides Git ignore. Member edits remain proposal-gated; an outside-root member is read-only unless a pick grants it. An execution deliberately reaches beyond this file sandbox, so its proposal policy is the machine perimeter. Details: SPEC {§scheme-address} ({§fs-namespace} through {§fs-world-state}).
77
77
 
78
78
  ## Tests
79
79