@plurnk/plurnk-service 1.18.0 → 1.19.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 (447) hide show
  1. package/.env.defaults +76 -13
  2. package/README.md +5 -3
  3. package/SPEC.md +924 -689
  4. package/dist/Paths.js +3 -3
  5. package/dist/build-info.json +1 -1
  6. package/dist/content/body-preview.d.ts +1 -0
  7. package/dist/content/body-preview.d.ts.map +1 -1
  8. package/dist/content/body-preview.js +8 -10
  9. package/dist/content/body-preview.js.map +1 -1
  10. package/dist/content/edit-receipt.d.ts.map +1 -1
  11. package/dist/content/edit-receipt.js +30 -29
  12. package/dist/content/edit-receipt.js.map +1 -1
  13. package/dist/content/line-anchors.d.ts.map +1 -1
  14. package/dist/content/line-anchors.js +17 -5
  15. package/dist/content/line-anchors.js.map +1 -1
  16. package/dist/content/read-projector.d.ts +2 -2
  17. package/dist/content/read-projector.d.ts.map +1 -1
  18. package/dist/content/read-projector.js +79 -37
  19. package/dist/content/read-projector.js.map +1 -1
  20. package/dist/content/scope-format.d.ts +9 -0
  21. package/dist/content/scope-format.d.ts.map +1 -0
  22. package/dist/content/scope-format.js +28 -0
  23. package/dist/content/scope-format.js.map +1 -0
  24. package/dist/core/AdministrativeLoop.d.ts +8 -0
  25. package/dist/core/AdministrativeLoop.d.ts.map +1 -0
  26. package/dist/core/AdministrativeLoop.js +16 -0
  27. package/dist/core/AdministrativeLoop.js.map +1 -0
  28. package/dist/core/AdmittedTurnExecutor.d.ts +2 -1
  29. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  30. package/dist/core/AdmittedTurnExecutor.js +19 -19
  31. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  32. package/dist/core/BareBatchRunner.d.ts +1 -2
  33. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  34. package/dist/core/BareBatchRunner.js +7 -12
  35. package/dist/core/BareBatchRunner.js.map +1 -1
  36. package/dist/core/BudgetReadout.d.ts.map +1 -1
  37. package/dist/core/BudgetReadout.js +3 -4
  38. package/dist/core/BudgetReadout.js.map +1 -1
  39. package/dist/core/CapabilityPolicies.d.ts +4 -2
  40. package/dist/core/CapabilityPolicies.d.ts.map +1 -1
  41. package/dist/core/CapabilityPolicies.js +23 -2
  42. package/dist/core/CapabilityPolicies.js.map +1 -1
  43. package/dist/core/CapabilityResolver.d.ts +2 -2
  44. package/dist/core/CapabilityResolver.d.ts.map +1 -1
  45. package/dist/core/CapabilityResolver.js +6 -3
  46. package/dist/core/CapabilityResolver.js.map +1 -1
  47. package/dist/core/ChannelWrite.d.ts +3 -6
  48. package/dist/core/ChannelWrite.d.ts.map +1 -1
  49. package/dist/core/ChannelWrite.js +8 -8
  50. package/dist/core/ChannelWrite.js.map +1 -1
  51. package/dist/core/ChannelWrite.sql +17 -11
  52. package/dist/core/ClientInteractions.d.ts +11 -1
  53. package/dist/core/ClientInteractions.d.ts.map +1 -1
  54. package/dist/core/ClientInteractions.js +26 -2
  55. package/dist/core/ClientInteractions.js.map +1 -1
  56. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  57. package/dist/core/CoreSchemeServices.js +1 -0
  58. package/dist/core/CoreSchemeServices.js.map +1 -1
  59. package/dist/core/DataStatementRunner.js +6 -6
  60. package/dist/core/DataStatementRunner.js.map +1 -1
  61. package/dist/core/Dispatcher.d.ts +12 -4
  62. package/dist/core/Dispatcher.d.ts.map +1 -1
  63. package/dist/core/Dispatcher.js +112 -90
  64. package/dist/core/Dispatcher.js.map +1 -1
  65. package/dist/core/Dispatcher.sql +11 -26
  66. package/dist/core/DurableStatement.d.ts +4 -1
  67. package/dist/core/DurableStatement.d.ts.map +1 -1
  68. package/dist/core/DurableStatement.js +4 -4
  69. package/dist/core/DurableStatement.js.map +1 -1
  70. package/dist/core/EditMutations.d.ts.map +1 -1
  71. package/dist/core/EditMutations.js +5 -2
  72. package/dist/core/EditMutations.js.map +1 -1
  73. package/dist/core/Engine.d.ts +11 -9
  74. package/dist/core/Engine.d.ts.map +1 -1
  75. package/dist/core/Engine.js +27 -65
  76. package/dist/core/Engine.js.map +1 -1
  77. package/dist/core/Engine.sql +2 -22
  78. package/dist/core/EnvFlags.d.ts.map +1 -1
  79. package/dist/core/EnvFlags.js +4 -2
  80. package/dist/core/EnvFlags.js.map +1 -1
  81. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  82. package/dist/core/ExecutorRegistry.js +2 -1
  83. package/dist/core/ExecutorRegistry.js.map +1 -1
  84. package/dist/core/KillHandler.d.ts.map +1 -1
  85. package/dist/core/KillHandler.js +7 -12
  86. package/dist/core/KillHandler.js.map +1 -1
  87. package/dist/core/Knob.d.ts +9 -0
  88. package/dist/core/Knob.d.ts.map +1 -0
  89. package/dist/core/Knob.js +50 -0
  90. package/dist/core/Knob.js.map +1 -0
  91. package/dist/core/LogBody.d.ts.map +1 -1
  92. package/dist/core/LogBody.js +6 -35
  93. package/dist/core/LogBody.js.map +1 -1
  94. package/dist/core/LogEntryProjection.d.ts.map +1 -1
  95. package/dist/core/LogEntryProjection.js +4 -0
  96. package/dist/core/LogEntryProjection.js.map +1 -1
  97. package/dist/core/LogVisibility.d.ts.map +1 -1
  98. package/dist/core/LogVisibility.js +2 -1
  99. package/dist/core/LogVisibility.js.map +1 -1
  100. package/dist/core/LogWriter.js +2 -2
  101. package/dist/core/LogWriter.js.map +1 -1
  102. package/dist/core/LoopDriver.d.ts +1 -1
  103. package/dist/core/LoopDriver.d.ts.map +1 -1
  104. package/dist/core/LoopDriver.js +23 -29
  105. package/dist/core/LoopDriver.js.map +1 -1
  106. package/dist/core/LoopLifecycle.d.ts +4 -17
  107. package/dist/core/LoopLifecycle.d.ts.map +1 -1
  108. package/dist/core/LoopLifecycle.js +20 -22
  109. package/dist/core/LoopLifecycle.js.map +1 -1
  110. package/dist/core/LoopLifecycle.sql +36 -49
  111. package/dist/core/LoopOutcome.d.ts +10 -0
  112. package/dist/core/LoopOutcome.d.ts.map +1 -0
  113. package/dist/core/LoopOutcome.js +28 -0
  114. package/dist/core/LoopOutcome.js.map +1 -0
  115. package/dist/core/LoopPolicies.d.ts +7 -0
  116. package/dist/core/LoopPolicies.d.ts.map +1 -0
  117. package/dist/core/LoopPolicies.js +37 -0
  118. package/dist/core/LoopPolicies.js.map +1 -0
  119. package/dist/core/MessageResources.d.ts +15 -0
  120. package/dist/core/MessageResources.d.ts.map +1 -0
  121. package/dist/core/MessageResources.js +46 -0
  122. package/dist/core/MessageResources.js.map +1 -0
  123. package/dist/core/MessageResources.sql +36 -0
  124. package/dist/core/OperatorConfig.d.ts +2 -1
  125. package/dist/core/OperatorConfig.d.ts.map +1 -1
  126. package/dist/core/OperatorConfig.js +14 -6
  127. package/dist/core/OperatorConfig.js.map +1 -1
  128. package/dist/core/PacketBuilder.d.ts.map +1 -1
  129. package/dist/core/PacketBuilder.js +20 -35
  130. package/dist/core/PacketBuilder.js.map +1 -1
  131. package/dist/core/PacketBuilder.sql +24 -6
  132. package/dist/core/PatternSelection.d.ts +1 -1
  133. package/dist/core/PatternSelection.d.ts.map +1 -1
  134. package/dist/core/ProposalLifecycle.d.ts +3 -1
  135. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  136. package/dist/core/ProposalLifecycle.js +85 -22
  137. package/dist/core/ProposalLifecycle.js.map +1 -1
  138. package/dist/core/ProviderInstantiate.d.ts +1 -0
  139. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  140. package/dist/core/ProviderInstantiate.js +12 -7
  141. package/dist/core/ProviderInstantiate.js.map +1 -1
  142. package/dist/core/ReasoningView.d.ts +1 -2
  143. package/dist/core/ReasoningView.d.ts.map +1 -1
  144. package/dist/core/ReasoningView.js +9 -20
  145. package/dist/core/ReasoningView.js.map +1 -1
  146. package/dist/core/ResourceBindings.d.ts.map +1 -1
  147. package/dist/core/ResourceBindings.js +5 -4
  148. package/dist/core/ResourceBindings.js.map +1 -1
  149. package/dist/core/ResourceMutations.d.ts +4 -4
  150. package/dist/core/ResourceMutations.d.ts.map +1 -1
  151. package/dist/core/ResourceMutations.js +2 -3
  152. package/dist/core/ResourceMutations.js.map +1 -1
  153. package/dist/core/ResourceSelector.d.ts +10 -3
  154. package/dist/core/ResourceSelector.d.ts.map +1 -1
  155. package/dist/core/ResourceSelector.js +52 -13
  156. package/dist/core/ResourceSelector.js.map +1 -1
  157. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  158. package/dist/core/ResourceTransfers.js +4 -2
  159. package/dist/core/ResourceTransfers.js.map +1 -1
  160. package/dist/core/SchemeRegistry.d.ts +2 -0
  161. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  162. package/dist/core/SchemeRegistry.js +11 -5
  163. package/dist/core/SchemeRegistry.js.map +1 -1
  164. package/dist/core/StoredPacket.d.ts +3 -1
  165. package/dist/core/StoredPacket.d.ts.map +1 -1
  166. package/dist/core/StoredPacket.js +7 -3
  167. package/dist/core/StoredPacket.js.map +1 -1
  168. package/dist/core/StrikeRail.d.ts.map +1 -1
  169. package/dist/core/StrikeRail.js +9 -3
  170. package/dist/core/StrikeRail.js.map +1 -1
  171. package/dist/core/TerminalResult.d.ts +2 -2
  172. package/dist/core/TerminalResult.d.ts.map +1 -1
  173. package/dist/core/TerminalResult.js +15 -8
  174. package/dist/core/TerminalResult.js.map +1 -1
  175. package/dist/core/ToolInputSchema.d.ts.map +1 -1
  176. package/dist/core/ToolInputSchema.js +24 -8
  177. package/dist/core/ToolInputSchema.js.map +1 -1
  178. package/dist/core/ToolResources.d.ts +1 -0
  179. package/dist/core/ToolResources.d.ts.map +1 -1
  180. package/dist/core/ToolResources.js +45 -23
  181. package/dist/core/ToolResources.js.map +1 -1
  182. package/dist/core/Turn.d.ts +3 -1
  183. package/dist/core/Turn.d.ts.map +1 -1
  184. package/dist/core/Turn.js +4 -1
  185. package/dist/core/Turn.js.map +1 -1
  186. package/dist/core/Turn.sql +14 -2
  187. package/dist/core/TurnDispositionHandler.d.ts +13 -21
  188. package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
  189. package/dist/core/TurnDispositionHandler.js +32 -190
  190. package/dist/core/TurnDispositionHandler.js.map +1 -1
  191. package/dist/core/TurnMaterialization.d.ts +9 -7
  192. package/dist/core/TurnMaterialization.d.ts.map +1 -1
  193. package/dist/core/TurnMaterialization.js +63 -41
  194. package/dist/core/TurnMaterialization.js.map +1 -1
  195. package/dist/core/TurnMaterialization.sql +23 -6
  196. package/dist/core/TurnOps.js +1 -1
  197. package/dist/core/TurnRunner.d.ts +1 -3
  198. package/dist/core/TurnRunner.d.ts.map +1 -1
  199. package/dist/core/TurnRunner.js +148 -189
  200. package/dist/core/TurnRunner.js.map +1 -1
  201. package/dist/core/TurnRunner.sql +1 -24
  202. package/dist/core/TurnSources.sql +42 -11
  203. package/dist/core/WorkerName.d.ts +1 -1
  204. package/dist/core/WorkerName.d.ts.map +1 -1
  205. package/dist/core/WorkerName.js +3 -3
  206. package/dist/core/WorkerName.js.map +1 -1
  207. package/dist/core/ambient.sql +45 -19
  208. package/dist/core/attachments.d.ts +3 -1
  209. package/dist/core/attachments.d.ts.map +1 -1
  210. package/dist/core/attachments.js +4 -0
  211. package/dist/core/attachments.js.map +1 -1
  212. package/dist/core/caps/CoreInteractionCaps.d.ts +1 -1
  213. package/dist/core/caps/CoreInteractionCaps.d.ts.map +1 -1
  214. package/dist/core/caps/CoreInteractionCaps.js +4 -2
  215. package/dist/core/caps/CoreInteractionCaps.js.map +1 -1
  216. package/dist/core/caps/DbChannelCaps.js +6 -6
  217. package/dist/core/caps/DbChannelCaps.js.map +1 -1
  218. package/dist/core/caps/DbEntryCaps.js +1 -1
  219. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  220. package/dist/core/caps/DbMessageCaps.d.ts +10 -0
  221. package/dist/core/caps/DbMessageCaps.d.ts.map +1 -0
  222. package/dist/core/caps/DbMessageCaps.js +39 -0
  223. package/dist/core/caps/DbMessageCaps.js.map +1 -0
  224. package/dist/core/caps/DbProjectionCaps.d.ts +2 -2
  225. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -1
  226. package/dist/core/caps/DbProjectionCaps.js +10 -4
  227. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  228. package/dist/core/caps/SchemeCtxImpl.d.ts +3 -1
  229. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  230. package/dist/core/caps/SchemeCtxImpl.js +11 -0
  231. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  232. package/dist/core/fork.sql +7 -6
  233. package/dist/core/git-state.d.ts +3 -2
  234. package/dist/core/git-state.d.ts.map +1 -1
  235. package/dist/core/git-state.js +37 -20
  236. package/dist/core/git-state.js.map +1 -1
  237. package/dist/core/packet-inject.js +1 -1
  238. package/dist/core/packet-wire.d.ts +11 -0
  239. package/dist/core/packet-wire.d.ts.map +1 -1
  240. package/dist/core/packet-wire.js +112 -88
  241. package/dist/core/packet-wire.js.map +1 -1
  242. package/dist/core/plurnk-uri.d.ts +4 -5
  243. package/dist/core/plurnk-uri.d.ts.map +1 -1
  244. package/dist/core/plurnk-uri.js +10 -31
  245. package/dist/core/plurnk-uri.js.map +1 -1
  246. package/dist/core/scheme-types.d.ts +3 -1
  247. package/dist/core/scheme-types.d.ts.map +1 -1
  248. package/dist/core/scheme-types.js +1 -1
  249. package/dist/core/scheme-types.js.map +1 -1
  250. package/dist/core/teaching.d.ts.map +1 -1
  251. package/dist/core/teaching.js +2 -1
  252. package/dist/core/teaching.js.map +1 -1
  253. package/dist/core/types.d.ts +1 -2
  254. package/dist/core/types.d.ts.map +1 -1
  255. package/dist/core/types.js +1 -1
  256. package/dist/core/types.js.map +1 -1
  257. package/dist/core/worker-ops.sql +3 -8
  258. package/dist/digest/Digest.d.ts.map +1 -1
  259. package/dist/digest/Digest.js +35 -30
  260. package/dist/digest/Digest.js.map +1 -1
  261. package/dist/digest/DigestRender.d.ts +1 -0
  262. package/dist/digest/DigestRender.d.ts.map +1 -1
  263. package/dist/digest/DigestRender.js +53 -1
  264. package/dist/digest/DigestRender.js.map +1 -1
  265. package/dist/digest/DigestRequiem.d.ts.map +1 -1
  266. package/dist/digest/DigestRequiem.js +13 -15
  267. package/dist/digest/DigestRequiem.js.map +1 -1
  268. package/dist/digest/digest-db.d.ts +3 -0
  269. package/dist/digest/digest-db.d.ts.map +1 -0
  270. package/dist/digest/digest-db.js +68 -0
  271. package/dist/digest/digest-db.js.map +1 -0
  272. package/dist/digest/digest-paths.d.ts +6 -0
  273. package/dist/digest/digest-paths.d.ts.map +1 -0
  274. package/dist/digest/digest-paths.js +23 -0
  275. package/dist/digest/digest-paths.js.map +1 -0
  276. package/dist/digest/digest-rows.d.ts +15 -0
  277. package/dist/digest/digest-rows.d.ts.map +1 -1
  278. package/dist/digest/digest.sql +13 -3
  279. package/dist/index.d.ts +0 -1
  280. package/dist/index.d.ts.map +1 -1
  281. package/dist/index.js +0 -1
  282. package/dist/index.js.map +1 -1
  283. package/dist/observe/genai.d.ts +2 -2
  284. package/dist/observe/genai.d.ts.map +1 -1
  285. package/dist/observe/genai.js +15 -5
  286. package/dist/observe/genai.js.map +1 -1
  287. package/dist/schemes/EffectPolicy.d.ts +0 -2
  288. package/dist/schemes/EffectPolicy.d.ts.map +1 -1
  289. package/dist/schemes/EffectPolicy.js +25 -36
  290. package/dist/schemes/EffectPolicy.js.map +1 -1
  291. package/dist/schemes/Exec.d.ts +4 -5
  292. package/dist/schemes/Exec.d.ts.map +1 -1
  293. package/dist/schemes/Exec.js +74 -62
  294. package/dist/schemes/Exec.js.map +1 -1
  295. package/dist/schemes/ExecOutputScheme.d.ts +6 -5
  296. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  297. package/dist/schemes/ExecOutputScheme.js +49 -16
  298. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  299. package/dist/schemes/File.d.ts.map +1 -1
  300. package/dist/schemes/File.js +28 -20
  301. package/dist/schemes/File.js.map +1 -1
  302. package/dist/schemes/Log.d.ts +4 -4
  303. package/dist/schemes/Log.d.ts.map +1 -1
  304. package/dist/schemes/Log.js +29 -9
  305. package/dist/schemes/Log.js.map +1 -1
  306. package/dist/schemes/QuestionTool.d.ts.map +1 -1
  307. package/dist/schemes/QuestionTool.js +14 -1
  308. package/dist/schemes/QuestionTool.js.map +1 -1
  309. package/dist/schemes/TurnSource.d.ts +3 -2
  310. package/dist/schemes/TurnSource.d.ts.map +1 -1
  311. package/dist/schemes/TurnSource.js +80 -35
  312. package/dist/schemes/TurnSource.js.map +1 -1
  313. package/dist/schemes/Worker.d.ts.map +1 -1
  314. package/dist/schemes/Worker.js +22 -56
  315. package/dist/schemes/Worker.js.map +1 -1
  316. package/dist/schemes/_entry-crud.js +6 -6
  317. package/dist/schemes/_entry-crud.js.map +1 -1
  318. package/dist/schemes/_entry-crud.sql +19 -17
  319. package/dist/schemes/_entry-find.d.ts.map +1 -1
  320. package/dist/schemes/_entry-find.js +6 -5
  321. package/dist/schemes/_entry-find.js.map +1 -1
  322. package/dist/schemes/_entry-fts.d.ts.map +1 -1
  323. package/dist/schemes/_entry-fts.js +6 -3
  324. package/dist/schemes/_entry-fts.js.map +1 -1
  325. package/dist/schemes/_entry-fts.sql +25 -6
  326. package/dist/schemes/_entry-manifest.d.ts +1 -1
  327. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  328. package/dist/schemes/_entry-manifest.js +5 -3
  329. package/dist/schemes/_entry-manifest.js.map +1 -1
  330. package/dist/schemes/_entry-ops.js +4 -4
  331. package/dist/schemes/_entry-ops.js.map +1 -1
  332. package/dist/schemes/_entry-ops.sql +2 -2
  333. package/dist/schemes/_entry-readable.d.ts.map +1 -1
  334. package/dist/schemes/_entry-readable.js +5 -4
  335. package/dist/schemes/_entry-readable.js.map +1 -1
  336. package/dist/schemes/_entry-send.js +2 -2
  337. package/dist/schemes/_entry-send.js.map +1 -1
  338. package/dist/schemes/_search-exclusion.d.ts +1 -0
  339. package/dist/schemes/_search-exclusion.d.ts.map +1 -1
  340. package/dist/schemes/_search-exclusion.js +12 -0
  341. package/dist/schemes/_search-exclusion.js.map +1 -1
  342. package/dist/schemes/_search-index.js +4 -4
  343. package/dist/schemes/_search-index.js.map +1 -1
  344. package/dist/schemes/exec-abort.d.ts.map +1 -1
  345. package/dist/schemes/exec-abort.js +4 -3
  346. package/dist/schemes/exec-abort.js.map +1 -1
  347. package/dist/schemes/exec-lifetime.d.ts +11 -0
  348. package/dist/schemes/exec-lifetime.d.ts.map +1 -0
  349. package/dist/schemes/exec-lifetime.js +29 -0
  350. package/dist/schemes/exec-lifetime.js.map +1 -0
  351. package/dist/server/ClientReads.d.ts.map +1 -1
  352. package/dist/server/ClientReads.js +3 -1
  353. package/dist/server/ClientReads.js.map +1 -1
  354. package/dist/server/Daemon.d.ts +30 -7
  355. package/dist/server/Daemon.d.ts.map +1 -1
  356. package/dist/server/Daemon.js +107 -48
  357. package/dist/server/Daemon.js.map +1 -1
  358. package/dist/server/DaemonModule.d.ts +19 -5
  359. package/dist/server/DaemonModule.d.ts.map +1 -1
  360. package/dist/server/DrainSupervisor.d.ts +13 -11
  361. package/dist/server/DrainSupervisor.d.ts.map +1 -1
  362. package/dist/server/DrainSupervisor.js +87 -98
  363. package/dist/server/DrainSupervisor.js.map +1 -1
  364. package/dist/server/EnvFunctionality.d.ts +12 -3
  365. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  366. package/dist/server/EnvFunctionality.js +19 -14
  367. package/dist/server/EnvFunctionality.js.map +1 -1
  368. package/dist/server/Functionality.d.ts +2 -2
  369. package/dist/server/Functionality.d.ts.map +1 -1
  370. package/dist/server/Functionality.js +97 -62
  371. package/dist/server/Functionality.js.map +1 -1
  372. package/dist/server/FunctionalityManager.d.ts +3 -1
  373. package/dist/server/FunctionalityManager.d.ts.map +1 -1
  374. package/dist/server/FunctionalityManager.js +11 -5
  375. package/dist/server/FunctionalityManager.js.map +1 -1
  376. package/dist/server/HttpListener.d.ts +16 -0
  377. package/dist/server/HttpListener.d.ts.map +1 -0
  378. package/dist/server/HttpListener.js +81 -0
  379. package/dist/server/HttpListener.js.map +1 -0
  380. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  381. package/dist/server/MembersFunctionality.js +12 -16
  382. package/dist/server/MembersFunctionality.js.map +1 -1
  383. package/dist/server/PlurnkSkill.d.ts.map +1 -1
  384. package/dist/server/PlurnkSkill.js +1 -0
  385. package/dist/server/PlurnkSkill.js.map +1 -1
  386. package/dist/server/Retention.d.ts +11 -0
  387. package/dist/server/Retention.d.ts.map +1 -1
  388. package/dist/server/Retention.js +47 -2
  389. package/dist/server/Retention.js.map +1 -1
  390. package/dist/server/Retention.sql +32 -1
  391. package/dist/server/ServiceModules.d.ts.map +1 -1
  392. package/dist/server/ServiceModules.js +2 -0
  393. package/dist/server/ServiceModules.js.map +1 -1
  394. package/dist/server/SkillsFunctionality.d.ts +2 -0
  395. package/dist/server/SkillsFunctionality.d.ts.map +1 -1
  396. package/dist/server/SkillsFunctionality.js +22 -15
  397. package/dist/server/SkillsFunctionality.js.map +1 -1
  398. package/dist/server/WorkspaceCapabilities.d.ts.map +1 -1
  399. package/dist/server/WorkspaceCapabilities.js +1 -0
  400. package/dist/server/WorkspaceCapabilities.js.map +1 -1
  401. package/dist/server/WorkspaceStorage.d.ts +8 -0
  402. package/dist/server/WorkspaceStorage.d.ts.map +1 -0
  403. package/dist/server/WorkspaceStorage.js +26 -0
  404. package/dist/server/WorkspaceStorage.js.map +1 -0
  405. package/dist/server/client-input.d.ts +4 -3
  406. package/dist/server/client-input.d.ts.map +1 -1
  407. package/dist/server/client-input.js +24 -26
  408. package/dist/server/client-input.js.map +1 -1
  409. package/dist/server/dispatch-as-plurnk.js +2 -2
  410. package/dist/server/dispatch-as-plurnk.js.map +1 -1
  411. package/dist/server/drain.sql +69 -132
  412. package/dist/server/envelope.d.ts +2 -2
  413. package/dist/server/envelope.d.ts.map +1 -1
  414. package/dist/server/envelope.js +7 -9
  415. package/dist/server/envelope.js.map +1 -1
  416. package/dist/server/envelope.sql +10 -6
  417. package/dist/server/exec-poll-backoff.js +3 -3
  418. package/dist/server/exec-poll-backoff.js.map +1 -1
  419. package/dist/server/lifecycle-recovery.sql +8 -35
  420. package/dist/server/logEntry.sql +2 -2
  421. package/dist/server/loopDocs.js +3 -3
  422. package/dist/server/loopDocs.sql +4 -2
  423. package/dist/server/model-catalog.d.ts.map +1 -1
  424. package/dist/server/model-catalog.js +2 -2
  425. package/dist/server/model-catalog.js.map +1 -1
  426. package/dist/server/seam-loop.sql +0 -1
  427. package/dist/server/workspace-storage.sql +8 -0
  428. package/dist/service.d.ts.map +1 -1
  429. package/dist/service.js +21 -10
  430. package/dist/service.js.map +1 -1
  431. package/docs/copy-move.md +31 -0
  432. package/docs/env.md +19 -7
  433. package/docs/skills.md +2 -2
  434. package/migrations/002_workers.sql +26 -17
  435. package/migrations/003_loops.sql +82 -28
  436. package/migrations/005_entries.sql +135 -22
  437. package/migrations/006_log.sql +77 -25
  438. package/migrations/007_subscriptions.sql +10 -15
  439. package/package.json +35 -36
  440. package/dist/core/PromptFrames.d.ts +0 -12
  441. package/dist/core/PromptFrames.d.ts.map +0 -1
  442. package/dist/core/PromptFrames.js +0 -28
  443. package/dist/core/PromptFrames.js.map +0 -1
  444. package/dist/schemes/Prompt.d.ts +0 -8
  445. package/dist/schemes/Prompt.d.ts.map +0 -1
  446. package/dist/schemes/Prompt.js +0 -25
  447. package/dist/schemes/Prompt.js.map +0 -1
@@ -28,7 +28,7 @@ export default class EnvFunctionality {
28
28
  namespaceOwner = ENV_OWNER;
29
29
  summary = "Read and shape the environment your commands run in";
30
30
  definitionSchema = DEFINITION;
31
- scope = "worker";
31
+ scopes = ["worker", "workspace"];
32
32
  aliasPattern = NAME;
33
33
  docsDir = Paths.packageRoot;
34
34
  example = { alias: "CARGO_TARGET_DIR", definition: { value: "/tmp/shared" } };
@@ -107,16 +107,8 @@ export default class EnvFunctionality {
107
107
  let cached;
108
108
  return async () => cached ??= await EnvDefaults.collect(projectRoot, pluginsNodeModules);
109
109
  }
110
- // {§exec-env-scoped} layer four, applied at the spawn: the Worker's own state over the ambient
111
- // ceiling. An enabled worker entry sets its value; a disabled entry of either origin withholds the
112
- // name. One rule with `list`, which projects the same state, so what a Worker sees listed is what
113
- // its command receives. The state is the coordinator's persisted shape ({§functionality-state});
114
- // anything else is a defect, not a fallback. The invariant runs last, as at every layer.
115
- //
116
- // Beside the environment comes its record: every name with its provenance, which the spawn
117
- // writes on its own log row and the digest renders — the host-versus-container confound closed
118
- // where it starts.
119
- static compose(ambient, state, modifier = {}) {
110
+ // {§workspace-env} Apply one persisted layer and record the provenance beside its values.
111
+ static compose(ambient, state, modifier = {}, scope = "worker") {
120
112
  if (!isRecord(state) || state.version !== 1 || !isRecord(state.definitions))
121
113
  throw new Error("env state is not a version 1 record");
122
114
  const env = { ...ambient };
@@ -131,9 +123,9 @@ export default class EnvFunctionality {
131
123
  record[name] = { source: "masked", ...from };
132
124
  continue;
133
125
  }
134
- if (entry.origin === "service")
126
+ if (entry.origin === "service" || (scope === "worker" && entry.origin === "workspace"))
135
127
  continue;
136
- if (entry.origin !== "worker")
128
+ if (entry.origin !== scope)
137
129
  throw new Error(`env state for '${name}' has origin '${String(entry.origin)}'`);
138
130
  if (!isRecord(entry.definition) || typeof entry.definition.value !== "string")
139
131
  throw new Error(`env state for '${name}' holds no string value`);
@@ -143,7 +135,7 @@ export default class EnvFunctionality {
143
135
  continue;
144
136
  }
145
137
  env[name] = entry.definition.value;
146
- record[name] = { source: "worker", ...from, value: entry.definition.value };
138
+ record[name] = { source: scope, ...from, value: entry.definition.value };
147
139
  }
148
140
  // {§env-option} — the op's own environment, nearest the spawn; admitted by name already.
149
141
  for (const [name, value] of Object.entries(modifier)) {
@@ -159,6 +151,19 @@ export default class EnvFunctionality {
159
151
  }
160
152
  return { env, record };
161
153
  }
154
+ // {§workspace-env} Both execution and capability startup read these same persisted layers.
155
+ static async workspace(db, workspaceId) {
156
+ const row = await db.workspace_module_state_get.get({ workspace_id: workspaceId, namespace_owner: ENV_OWNER });
157
+ const state = row === undefined ? { version: 1, definitions: {} } : JSON.parse(row.state);
158
+ return (ambient = ExecEnv.scoped()) => this.compose(ambient, state, {}, "workspace");
159
+ }
160
+ static async resolve(db, workspaceId, workerId, modifier = {}, ambient = ExecEnv.scoped()) {
161
+ const empty = { version: 1, definitions: {} };
162
+ const shared = (await this.workspace(db, workspaceId))(ambient);
163
+ const worker = workerId === undefined ? undefined : await db.worker_module_state_get.get({ worker_id: workerId, namespace_owner: ENV_OWNER });
164
+ const result = this.compose(shared.env, worker === undefined ? empty : JSON.parse(worker.state), modifier);
165
+ return { env: result.env, record: { ...shared.record, ...Object.fromEntries(Object.entries(result.record).filter(([, item]) => item.source !== "host")) } };
166
+ }
162
167
  // {§env-option} — the heading's `env` option, read through the one metadata reader and admitted
163
168
  // by the family's own rules: an object of string values under names a shell can export, never
164
169
  // plurnk's own. A refusal names the key and the reason, so the model learns why, exactly as `add`
@@ -1 +1 @@
1
- {"version":3,"file":"EnvFunctionality.js","sourceRoot":"","sources":["../../src/server/EnvFunctionality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvFunctionality.js","sourceRoot":"","sources":["../../src/server/EnvFunctionality.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { FunctionalityAdapter, FunctionalityCaller, FunctionalityFamilyHandle, FunctionalityIdentity, ModuleActionRegistration, WorkspaceCapabilityIdentity, WorkspaceCapabilityGate, WorkspaceCapabilityProvider, WorkspaceCapabilityReplacement, WorkspaceCapabilityPublication } from "./DaemonModule.ts";
1
+ import type { FunctionalityAdapter, FunctionalityCaller, FunctionalityFamilyHandle, FunctionalityIdentity, FunctionalityOptions, ModuleActionRegistration, WorkspaceCapabilityIdentity, WorkspaceCapabilityGate, WorkspaceCapabilityProvider, WorkspaceCapabilityReplacement, WorkspaceCapabilityPublication } from "./DaemonModule.ts";
2
2
  import { type FunctionalityVerb } from "./FunctionalityManager.ts";
3
3
  export interface FunctionalityHost {
4
4
  registerModuleAction(registration: ModuleActionRegistration): void;
@@ -28,6 +28,6 @@ export default class Functionality {
28
28
  pathname: string;
29
29
  content: string;
30
30
  }>;
31
- invoke(family: string, verb: FunctionalityVerb, params: unknown, identity: FunctionalityIdentity, caller: FunctionalityCaller): Promise<FunctionalityInvocation>;
31
+ invoke(family: string, verb: FunctionalityVerb, params: unknown, identity: FunctionalityIdentity, caller: FunctionalityCaller, options?: FunctionalityOptions): Promise<FunctionalityInvocation>;
32
32
  }
33
33
  //# sourceMappingURL=Functionality.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Functionality.d.ts","sourceRoot":"","sources":["../../src/server/Functionality.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACR,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EAGrB,wBAAwB,EAExB,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EACjC,MAAM,mBAAmB,CAAC;AAC3B,OAA6B,EAGzB,KAAK,iBAAiB,EACzB,MAAM,2BAA2B,CAAC;AAInC,MAAM,WAAW,iBAAiB;IAC9B,oBAAoB,CAAC,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACnE,mCAAmC,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACzG,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/F,4BAA4B,CACxB,WAAW,EAAE,8BAA8B,EAC3C,OAAO,CAAC,EAAE,8BAA8B,GACzC,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACzF,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzG,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CACpD;AAMD,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B;AAoED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAQ9B,YAAY,IAAI,EAAE,iBAAiB,EAElC;IAID,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,yBAAyB,CAgEjE;IAOK,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7I;IAED,QAAQ,IAAI,MAAM,EAAE,CAEnB;IAIK,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAmBD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAS3E;IAGK,MAAM,CACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,mBAAmB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA0BlC;CA8YJ"}
1
+ {"version":3,"file":"Functionality.d.ts","sourceRoot":"","sources":["../../src/server/Functionality.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACR,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EAGpB,wBAAwB,EAExB,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,8BAA8B,EACjC,MAAM,mBAAmB,CAAC;AAC3B,OAA6B,EAGzB,KAAK,iBAAiB,EACzB,MAAM,2BAA2B,CAAC;AAInC,MAAM,WAAW,iBAAiB;IAC9B,oBAAoB,CAAC,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACnE,mCAAmC,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACzG,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/F,4BAA4B,CACxB,WAAW,EAAE,8BAA8B,EAC3C,OAAO,CAAC,EAAE,8BAA8B,GACzC,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACzF,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzG,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CACpD;AAMD,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CAC1B;AAqED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAQ9B,YAAY,IAAI,EAAE,iBAAiB,EAElC;IAID,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,yBAAyB,CA6EjE;IAOK,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7I;IAED,QAAQ,IAAI,MAAM,EAAE,CAEnB;IAIK,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAmBD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAS3E;IAGK,MAAM,CACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,oBAAyB,GACnC,OAAO,CAAC,uBAAuB,CAAC,CAkClC;CA2ZJ"}
@@ -6,6 +6,7 @@ var _a;
6
6
  // generated executor family whose host verbs propose. An explicit
7
7
  // client mutation and an accepted model proposal converge on `invoke`.
8
8
  import { Validator } from "@plurnk/plurnk-contracts";
9
+ import discoverySchema from "@plurnk/plurnk-contracts/schema/FunctionalityDiscoverQuery.json" with { type: "json" };
9
10
  import { isDeepStrictEqual } from "node:util";
10
11
  import { DocFile } from "@plurnk/plurnk-execs";
11
12
  import FunctionalityManager, { FUNCTIONALITY_VERBS, functionalityRuntimeDecl, } from "./FunctionalityManager.js";
@@ -17,6 +18,7 @@ const ALIAS = /^[a-z][a-z0-9-]*$/u;
17
18
  // A family may declare its own alias grammar ({§functionality-adapter}); the coordinator enforces it
18
19
  // wherever an alias enters: admission, the service projection, and persisted state.
19
20
  const aliasPattern = (adapter) => adapter.aliasPattern ?? ALIAS;
21
+ const scopesOf = (adapter) => adapter.scopes ?? ["workspace"];
20
22
  const EMPTY_STATE = Object.freeze({ version: STATE_VERSION, definitions: Object.freeze({}) });
21
23
  const SCHEMA = (name) => ({ $ref: `https://schemas.plurnk.xyz/v0/${name}.json` });
22
24
  const ALIAS_INPUT = Object.freeze({
@@ -52,21 +54,37 @@ class Functionality {
52
54
  throw new Error(`Functionality namespace owner '${namespaceOwner}' is already registered.`);
53
55
  if (!isRecord(adapter.definitionSchema))
54
56
  throw new Error(`Functionality family '${family}' requires a definition schema.`);
57
+ const scopes = scopesOf(adapter);
58
+ if (scopes.length === 0 || new Set(scopes).size !== scopes.length || scopes.some((scope) => scope !== "workspace" && scope !== "worker")) {
59
+ throw new Error(`Functionality family '${family}' declares invalid scopes.`);
60
+ }
61
+ const scopeProperties = scopes.length > 1
62
+ ? { scope: { enum: [...scopes], description: `Definition scope; model calls default to ${scopes[0]}.` } }
63
+ : {};
64
+ const scopedInput = (schema) => {
65
+ if (scopes.length === 1)
66
+ return schema;
67
+ const { $id: _id, ...source } = schema;
68
+ if (!isRecord(source.properties))
69
+ throw new Error(`Functionality ${family} input has no property map.`);
70
+ return { ...source, properties: { ...source.properties, ...scopeProperties } };
71
+ };
55
72
  const schemas = Object.freeze({
56
- list: EMPTY_INPUT,
57
- discover: SCHEMA("FunctionalityDiscoverQuery"),
73
+ list: scopedInput(EMPTY_INPUT),
74
+ discover: scopes.length === 1 ? SCHEMA("FunctionalityDiscoverQuery") : scopedInput(discoverySchema),
58
75
  add: Object.freeze({
59
76
  type: "object",
60
77
  additionalProperties: false,
61
78
  required: ["definition"],
62
79
  properties: {
80
+ ...scopeProperties,
63
81
  alias: { type: "string", minLength: 1 },
64
82
  definition: adapter.definitionSchema,
65
83
  },
66
84
  }),
67
- enable: ALIAS_INPUT,
68
- disable: ALIAS_INPUT,
69
- remove: ALIAS_INPUT,
85
+ enable: scopedInput(ALIAS_INPUT),
86
+ disable: scopedInput(ALIAS_INPUT),
87
+ remove: scopedInput(ALIAS_INPUT),
70
88
  });
71
89
  // {§functionality-model-projection} — the taught `add` example must satisfy the schema it teaches.
72
90
  if (adapter.example !== undefined) {
@@ -82,29 +100,28 @@ class Functionality {
82
100
  activate: (context) => this.#activate(adapter, context),
83
101
  deactivate: (identity) => this.#deactivate(adapter, identity),
84
102
  });
85
- // {§functionality-scope} — a worker-scoped family projects `worker.<family>.<verb>`, whose
86
- // context names the Worker the verb acts for; every other family projects
87
- // `workspace.<family>.<verb>`. One implementation sits beneath both.
88
- const scope = adapter.scope ?? "workspace";
89
- for (const verb of FUNCTIONALITY_VERBS) {
90
- this.#host.registerModuleAction({
91
- name: `${scope}.${family}.${verb}`,
92
- scope,
93
- inputSchema: schemas[verb],
94
- outputSchema: SCHEMA(verb === "list"
95
- ? "FunctionalityListResult"
96
- : verb === "discover"
97
- ? "FunctionalityDiscoverResult"
98
- : "FunctionalityMutationResult"),
99
- handler: async (params, context) => {
100
- if (context.scope === "worldless" || context.scope !== scope)
101
- throw new Error(`${scope}.${family}.${verb} requires a ${scope}-scoped context.`);
102
- const identity = context.scope === "worker"
103
- ? { workspaceId: context.workspaceId, workerId: context.workerId }
104
- : { workspaceId: context.workspaceId };
105
- return (await this.invoke(family, verb, params, identity, "action")).body;
106
- },
107
- });
103
+ // {§functionality-scope} The action context binds one of the family's supported scopes.
104
+ for (const scope of scopes) {
105
+ for (const verb of FUNCTIONALITY_VERBS) {
106
+ this.#host.registerModuleAction({
107
+ name: `${scope}.${family}.${verb}`,
108
+ scope,
109
+ inputSchema: schemas[verb],
110
+ outputSchema: SCHEMA(verb === "list"
111
+ ? "FunctionalityListResult"
112
+ : verb === "discover"
113
+ ? "FunctionalityDiscoverResult"
114
+ : "FunctionalityMutationResult"),
115
+ handler: async (params, context) => {
116
+ if (context.scope === "worldless" || context.scope !== scope)
117
+ throw new Error(`${scope}.${family}.${verb} requires a ${scope}-scoped context.`);
118
+ const identity = context.scope === "worker"
119
+ ? { workspaceId: context.workspaceId, workerId: context.workerId, scope }
120
+ : { workspaceId: context.workspaceId, scope };
121
+ return (await this.invoke(family, verb, params, identity, "action")).body;
122
+ },
123
+ });
124
+ }
108
125
  }
109
126
  return {
110
127
  invoke: (verb, params, identity) => this.invoke(family, verb, params, identity, "action"),
@@ -167,7 +184,7 @@ class Functionality {
167
184
  return out;
168
185
  }
169
186
  // The one lifecycle entry for both projections ({§functionality-model-mutation}).
170
- async invoke(family, verb, params, identity, caller) {
187
+ async invoke(family, verb, params, identity, caller, options = {}) {
171
188
  const adapter = this.#adapter(family);
172
189
  const schema = this.#schemas.get(family)[verb];
173
190
  const validation = Validator.validateJsonSchemaInstance(schema, params);
@@ -179,19 +196,26 @@ class Functionality {
179
196
  });
180
197
  }
181
198
  const input = params;
182
- if (verb === "discover")
183
- return { status: 200, body: await this.#discover(adapter, input, identity) };
199
+ const scope = (input.scope ?? identity.scope ?? scopesOf(adapter)[0]);
200
+ if (!scopesOf(adapter).includes(scope) || (identity.scope !== undefined && identity.scope !== scope)) {
201
+ throw failure(family, "scope-mismatch", 400, `The ${family} operation's scope does not match its bound context.`, { retryable: false });
202
+ }
203
+ identity = { ...identity, scope };
204
+ if (verb === "discover") {
205
+ const { scope: _scope, ...query } = input;
206
+ return { status: 200, body: await this.#discover(adapter, query, identity, options) };
207
+ }
184
208
  // {§functionality-scope} — a worker-scoped family's list and mutations act for the invoking
185
209
  // Worker. The state is that Worker's and nothing resident changes, so they serialize on the
186
210
  // Worker's own lane and take no workspace exclusivity: a Worker shapes its environment while
187
211
  // its siblings run.
188
- if (adapter.scope === "worker") {
212
+ if (scope === "worker") {
189
213
  const workerId = _a.#workerOf(adapter, identity);
190
- return this.#serialize(`${this.#key(identity.workspaceId, family)}:${workerId}`, () => this.#invokeForWorker(adapter, verb, input, identity, workerId, caller));
214
+ return this.#serialize(`${this.#key(identity.workspaceId, family)}:${workerId}`, () => this.#invokeForWorker(adapter, verb, input, identity, workerId, caller, options));
191
215
  }
192
216
  if (verb === "list")
193
217
  return { status: 200, body: await this.#list(adapter, identity) };
194
- return this.#host.mutateWorkspace(identity.workspaceId, adapter.namespaceOwner, caller, () => this.#serialize(this.#key(identity.workspaceId, family), () => this.#mutate(adapter, verb, input, identity, caller)));
218
+ return this.#host.mutateWorkspace(identity.workspaceId, adapter.namespaceOwner, caller, () => this.#serialize(this.#key(identity.workspaceId, family), () => this.#mutate(adapter, verb, input, identity, caller, options)));
195
219
  }
196
220
  // A worker-scoped verb that names no Worker is a defect at the projection, never a client
197
221
  // failure: both projections name the Worker ({§functionality-model-projection}).
@@ -202,8 +226,8 @@ class Functionality {
202
226
  }
203
227
  // The origin a definition carries when this family owns it locally. Service definitions
204
228
  // always come from the adapter's own `available()`; everything else is the family's own.
205
- static #localOrigin(adapter) {
206
- return adapter.scope === "worker" ? "worker" : "workspace";
229
+ static #localOrigin(identity) {
230
+ return identity.scope ?? "workspace";
207
231
  }
208
232
  #adapter(family) {
209
233
  const adapter = this.#adapters.get(family);
@@ -238,12 +262,12 @@ class Functionality {
238
262
  });
239
263
  }
240
264
  async #loadState(adapter, workspaceId) {
241
- return _a.#parseState(adapter, await this.#host.readWorkspaceModuleState(workspaceId, adapter.namespaceOwner), `workspace ${workspaceId}`);
265
+ return _a.#parseState(adapter, await this.#host.readWorkspaceModuleState(workspaceId, adapter.namespaceOwner), `workspace ${workspaceId}`, "workspace");
242
266
  }
243
267
  async #loadWorkerState(adapter, workerId) {
244
- return _a.#parseState(adapter, await this.#host.readWorkerModuleState(workerId, adapter.namespaceOwner), `worker ${workerId}`);
268
+ return _a.#parseState(adapter, await this.#host.readWorkerModuleState(workerId, adapter.namespaceOwner), `worker ${workerId}`, "worker");
245
269
  }
246
- static #parseState(adapter, raw, where) {
270
+ static #parseState(adapter, raw, where, scope) {
247
271
  if (raw === null)
248
272
  return EMPTY_STATE;
249
273
  if (!isRecord(raw) || raw.version !== STATE_VERSION || !isRecord(raw.definitions)) {
@@ -257,11 +281,14 @@ class Functionality {
257
281
  if ((origin !== "service" && origin !== "workspace" && origin !== "worker") || typeof enabled !== "boolean") {
258
282
  throw new Error(`Functionality state for ${adapter.family} alias '${alias}' is malformed.`);
259
283
  }
260
- if (inherited !== undefined && (typeof inherited !== "string" || inherited.length === 0 || adapter.scope !== "worker")) {
284
+ if (origin !== "service" && origin !== scope && !(scope === "worker" && origin === "workspace" && scopesOf(adapter).includes("workspace"))) {
285
+ throw new Error(`Functionality state for ${adapter.family} alias '${alias}' has an invalid origin for ${scope} scope.`);
286
+ }
287
+ if (inherited !== undefined && (typeof inherited !== "string" || inherited.length === 0 || scope !== "worker")) {
261
288
  throw new Error(`Functionality state for ${adapter.family} alias '${alias}' carries an invalid inheritance.`);
262
289
  }
263
290
  const provenance = inherited === undefined ? {} : { inherited };
264
- if (origin === _a.#localOrigin(adapter)) {
291
+ if (origin === scope) {
265
292
  const result = Validator.validateJsonSchemaInstance(adapter.definitionSchema, definition);
266
293
  if (!result.valid)
267
294
  throw new Error(`Functionality state for ${adapter.family} alias '${alias}' holds an invalid definition.`);
@@ -269,7 +296,7 @@ class Functionality {
269
296
  }
270
297
  else {
271
298
  if (definition !== undefined)
272
- throw new Error(`Functionality state for ${adapter.family} alias '${alias}' persists a service definition.`);
299
+ throw new Error(`Functionality state for ${adapter.family} alias '${alias}' persists a lower-layer definition.`);
273
300
  definitions[alias] = { origin, enabled, ...provenance };
274
301
  }
275
302
  }
@@ -280,16 +307,21 @@ class Functionality {
280
307
  }
281
308
  async #effective(adapter, identity, state) {
282
309
  const effective = new Map();
283
- for (const service of await adapter.available(identity)) {
310
+ const local = _a.#localOrigin(identity);
311
+ const inheritsWorkspace = identity.scope === "worker" && scopesOf(adapter).includes("workspace");
312
+ const lower = inheritsWorkspace
313
+ ? [...(await this.#effective(adapter, { workspaceId: identity.workspaceId, scope: "workspace" }, await this.#loadState(adapter, identity.workspaceId))).values()]
314
+ : (await adapter.available(identity)).map((entry) => ({ ...entry, origin: "service" }));
315
+ for (const service of lower) {
284
316
  if (!aliasPattern(adapter).test(service.alias))
285
317
  throw new Error(`${adapter.family} service alias '${service.alias}' must match ${aliasPattern(adapter)}.`);
286
318
  const record = state.definitions[service.alias];
287
- const enabled = record?.origin === "service" ? record.enabled : service.enabled;
288
- const inherited = record?.origin === "service" && record.inherited !== undefined ? { inherited: record.inherited } : {};
289
- effective.set(service.alias, { alias: service.alias, origin: "service", definition: service.definition, enabled, ...inherited });
319
+ const overlay = record !== undefined && record.origin !== local ? record : undefined;
320
+ const enabled = overlay === undefined ? service.enabled : overlay.enabled && (!inheritsWorkspace || service.enabled);
321
+ const inherited = overlay?.inherited === undefined ? {} : { inherited: overlay.inherited };
322
+ effective.set(service.alias, { alias: service.alias, origin: service.origin, definition: service.definition, enabled, ...inherited });
290
323
  }
291
324
  for (const [alias, record] of Object.entries(state.definitions)) {
292
- const local = _a.#localOrigin(adapter);
293
325
  if (record.origin !== local)
294
326
  continue;
295
327
  const inherited = record.inherited === undefined ? {} : { inherited: record.inherited };
@@ -323,22 +355,22 @@ class Functionality {
323
355
  definitions: [...effective.values()].map((definition) => this.#projection(definition, outcomes.get(definition.alias))),
324
356
  });
325
357
  }
326
- async #discover(adapter, query, identity) {
327
- const candidates = await adapter.discover(query, identity);
358
+ async #discover(adapter, query, identity, options) {
359
+ const candidates = await adapter.discover(query, identity, options);
328
360
  return Validator.assertFunctionalityDiscoverResult({ family: adapter.family, candidates: [...candidates] });
329
361
  }
330
362
  // The verb semantics, one implementation for every family ({§functionality-scope}): the next
331
363
  // state, the alias it concerns, and how the mutation reports. Only publication differs by scope.
332
- async #transition(adapter, verb, input, identity, caller, state, effective) {
333
- const local = _a.#localOrigin(adapter);
334
- const here = adapter.scope === "worker" ? "this worker" : "this workspace";
364
+ async #transition(adapter, verb, input, identity, caller, state, effective, options) {
365
+ const local = _a.#localOrigin(identity);
366
+ const here = local === "worker" ? "this worker" : "this workspace";
335
367
  const definitions = { ...state.definitions };
336
368
  let alias;
337
369
  let status = 200;
338
370
  let removed = false;
339
371
  switch (verb) {
340
372
  case "add": {
341
- const admitted = await adapter.admit(input, identity, caller);
373
+ const admitted = await adapter.admit(input, identity, caller, options);
342
374
  alias = admitted.alias;
343
375
  if (!aliasPattern(adapter).test(alias))
344
376
  throw failure(adapter.family, "alias-invalid", 400, `Alias '${alias}' must match ${aliasPattern(adapter)}.`, { alias, retryable: false });
@@ -360,7 +392,7 @@ class Functionality {
360
392
  throw failure(adapter.family, "alias-unknown", 404, `'${alias}' is not available to ${here}.`, { alias, retryable: false });
361
393
  definitions[alias] = current.origin === local
362
394
  ? { origin: local, definition: current.definition, enabled: verb === "enable" }
363
- : { origin: "service", enabled: verb === "enable" };
395
+ : { origin: current.origin, enabled: verb === "enable" };
364
396
  break;
365
397
  }
366
398
  case "remove": {
@@ -370,11 +402,13 @@ class Functionality {
370
402
  throw failure(adapter.family, "alias-unknown", 404, `'${alias}' is not available to ${here}.`, { alias, retryable: false });
371
403
  if (current.origin === "service")
372
404
  throw failure(adapter.family, "alias-service-owned", 409, `'${alias}' is a service definition and cannot be removed here.`, { alias, recovery: `Disable it, or change the service configuration that contributes it.`, retryable: false });
405
+ if (current.origin !== local)
406
+ throw failure(adapter.family, "alias-workspace-owned", 409, `'${alias}' is a workspace definition; remove it in workspace scope or disable it here.`, { alias, retryable: false });
373
407
  await adapter.forget?.({ alias, definition: current.definition }, identity);
374
408
  delete definitions[alias];
375
- const revealed = (await adapter.available(identity)).some((service) => service.alias === alias);
409
+ const revealed = (await this.#effective(adapter, identity, EMPTY_STATE)).get(alias);
376
410
  if (revealed)
377
- definitions[alias] = { origin: "service", enabled: false };
411
+ definitions[alias] = { origin: revealed.origin, enabled: false };
378
412
  removed = true;
379
413
  break;
380
414
  }
@@ -394,13 +428,13 @@ class Functionality {
394
428
  });
395
429
  return { status: body.status, body };
396
430
  }
397
- async #mutate(adapter, verb, input, identity, caller) {
431
+ async #mutate(adapter, verb, input, identity, caller, options) {
398
432
  const key = this.#key(identity.workspaceId, adapter.family);
399
433
  const family = this.#families.get(key);
400
434
  if (family === undefined)
401
435
  throw failure(adapter.family, "workspace-not-resident", 409, `Workspace ${identity.workspaceId} has no resident ${adapter.family} Functionality.`, { recovery: "Retry through a workspace operation, then retry.", retryable: false });
402
436
  const effective = await this.#effective(adapter, identity, family.state);
403
- const transition = await this.#transition(adapter, verb, input, identity, caller, family.state, effective);
437
+ const transition = await this.#transition(adapter, verb, input, identity, caller, family.state, effective, options);
404
438
  const nextState = { version: STATE_VERSION, definitions: transition.definitions };
405
439
  // Re-enabling an alias that is not active retries its preparation; an
406
440
  // already-active alias keeps its live attachment.
@@ -417,7 +451,7 @@ class Functionality {
417
451
  // {§functionality-scope} — the Worker's own lane. State is read at each verb rather than held: the
418
452
  // spawn reads the same row, and a Worker's row is written at its creation, so nothing in memory
419
453
  // could be more current than the table.
420
- async #invokeForWorker(adapter, verb, input, identity, workerId, caller) {
454
+ async #invokeForWorker(adapter, verb, input, identity, workerId, caller, options) {
421
455
  if (!this.#families.has(this.#key(identity.workspaceId, adapter.family)))
422
456
  throw failure(adapter.family, "workspace-not-resident", 409, `Workspace ${identity.workspaceId} has no resident ${adapter.family} Functionality.`, { recovery: "Retry through a workspace operation, then retry.", retryable: false });
423
457
  const state = await this.#loadWorkerState(adapter, workerId);
@@ -430,7 +464,7 @@ class Functionality {
430
464
  definitions: [...effective.values()].map((definition) => this.#projection(definition, prepared.outcomes.get(definition.alias))),
431
465
  }) };
432
466
  }
433
- const transition = await this.#transition(adapter, verb, input, identity, caller, state, effective);
467
+ const transition = await this.#transition(adapter, verb, input, identity, caller, state, effective, options);
434
468
  const nextState = { version: STATE_VERSION, definitions: transition.definitions };
435
469
  const effectiveAfter = await this.#effective(adapter, identity, nextState);
436
470
  const prepared = await this.#prepareForWorker(adapter, identity, effectiveAfter, caller === "action" ? "reject" : "publish-unavailable");
@@ -486,7 +520,7 @@ class Functionality {
486
520
  const previous = this.#families.get(key)?.prepared ?? null;
487
521
  // A worker-scoped family's workspace publication carries only its manager: what is enabled
488
522
  // is decided per Worker, at each verb and each spawn ({§functionality-scope}).
489
- const effective = adapter.scope === "worker" ? new Map() : await this.#effective(adapter, identity, nextState);
523
+ const effective = !scopesOf(adapter).includes("workspace") ? new Map() : await this.#effective(adapter, { ...identity, scope: "workspace" }, nextState);
490
524
  const enabled = _a.#enabled(effective);
491
525
  const prepared = await adapter.prepare({
492
526
  workspaceId: identity.workspaceId,
@@ -509,9 +543,10 @@ class Functionality {
509
543
  decl: functionalityRuntimeDecl(adapter.family, adapter.summary, await this.#documentBody(adapter)),
510
544
  executor: new FunctionalityManager({
511
545
  family: adapter.family, workspaceId: identity.workspaceId, coordinator: this,
512
- inputSchemas: this.#schemas.get(adapter.family), example: adapter.example, discovery: adapter.discovery,
546
+ traits: adapter.traits, inputSchemas: this.#schemas.get(adapter.family), example: adapter.example, discovery: adapter.discovery,
513
547
  }),
514
548
  availability: { available: true, detail: "workspace Functionality manager" },
549
+ ...(adapter.scheme === undefined ? {} : { scheme: adapter.scheme }),
515
550
  };
516
551
  runtimes = [manager, ...(prepared.runtimes ?? [])];
517
552
  }