@procedures/client 0.1.0 → 0.2.1

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 (334) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +5 -5
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/adapters/http/server/transport.d.ts.map +1 -1
  5. package/dist/adapters/http/server/transport.js +1 -0
  6. package/dist/adapters/http/server/transport.js.map +1 -1
  7. package/dist/browser.d.ts +6 -3
  8. package/dist/browser.d.ts.map +1 -1
  9. package/dist/browser.js +4 -1
  10. package/dist/browser.js.map +1 -1
  11. package/dist/client/client.d.ts +9 -1
  12. package/dist/client/client.d.ts.map +1 -1
  13. package/dist/client/client.js +27 -6
  14. package/dist/client/client.js.map +1 -1
  15. package/dist/client/types.d.ts +9 -0
  16. package/dist/client/types.d.ts.map +1 -1
  17. package/dist/client/types.js.map +1 -1
  18. package/dist/procedures/capability.d.ts +111 -0
  19. package/dist/procedures/capability.d.ts.map +1 -0
  20. package/dist/procedures/capability.js +269 -0
  21. package/dist/procedures/capability.js.map +1 -0
  22. package/dist/procedures/cli/discover.d.ts +3 -3
  23. package/dist/procedures/cli/discover.js +3 -3
  24. package/dist/procedures/cli/index.js +5 -3
  25. package/dist/procedures/cli/index.js.map +1 -1
  26. package/dist/procedures/cli/init.js +1 -1
  27. package/dist/procedures/collection/procedures.d.ts.map +1 -1
  28. package/dist/procedures/collection/procedures.js +12 -0
  29. package/dist/procedures/collection/procedures.js.map +1 -1
  30. package/dist/procedures/core/array.d.ts.map +1 -1
  31. package/dist/procedures/core/array.js +3 -1
  32. package/dist/procedures/core/array.js.map +1 -1
  33. package/dist/procedures/core/comparison.d.ts.map +1 -1
  34. package/dist/procedures/core/comparison.js +3 -1
  35. package/dist/procedures/core/comparison.js.map +1 -1
  36. package/dist/procedures/core/index.d.ts.map +1 -1
  37. package/dist/procedures/core/index.js +5 -2
  38. package/dist/procedures/core/index.js.map +1 -1
  39. package/dist/procedures/core/math.d.ts.map +1 -1
  40. package/dist/procedures/core/math.js +3 -1
  41. package/dist/procedures/core/math.js.map +1 -1
  42. package/dist/procedures/core/meta.d.ts.map +1 -1
  43. package/dist/procedures/core/meta.js +11 -6
  44. package/dist/procedures/core/meta.js.map +1 -1
  45. package/dist/procedures/core/object.d.ts.map +1 -1
  46. package/dist/procedures/core/object.js +3 -1
  47. package/dist/procedures/core/object.js.map +1 -1
  48. package/dist/procedures/core/string.d.ts.map +1 -1
  49. package/dist/procedures/core/string.js +3 -1
  50. package/dist/procedures/core/string.js.map +1 -1
  51. package/dist/procedures/core/type.d.ts.map +1 -1
  52. package/dist/procedures/core/type.js +3 -1
  53. package/dist/procedures/core/type.js.map +1 -1
  54. package/dist/procedures/define-procedure.d.ts.map +1 -1
  55. package/dist/procedures/define-procedure.js +5 -4
  56. package/dist/procedures/define-procedure.js.map +1 -1
  57. package/dist/procedures/effects.d.ts +15 -0
  58. package/dist/procedures/effects.d.ts.map +1 -0
  59. package/dist/procedures/effects.js +18 -0
  60. package/dist/procedures/effects.js.map +1 -0
  61. package/dist/procedures/index.d.ts +5 -2
  62. package/dist/procedures/index.d.ts.map +1 -1
  63. package/dist/procedures/index.js +8 -23
  64. package/dist/procedures/index.js.map +1 -1
  65. package/dist/procedures/interceptors.d.ts.map +1 -1
  66. package/dist/procedures/interceptors.js +2 -1
  67. package/dist/procedures/interceptors.js.map +1 -1
  68. package/dist/procedures/invoke.d.ts +36 -3
  69. package/dist/procedures/invoke.d.ts.map +1 -1
  70. package/dist/procedures/invoke.js +78 -12
  71. package/dist/procedures/invoke.js.map +1 -1
  72. package/dist/procedures/module.d.ts +13 -8
  73. package/dist/procedures/module.d.ts.map +1 -1
  74. package/dist/procedures/module.js +19 -9
  75. package/dist/procedures/module.js.map +1 -1
  76. package/dist/procedures/types.d.ts +100 -2
  77. package/dist/procedures/types.d.ts.map +1 -1
  78. package/dist/procedures/types.js.map +1 -1
  79. package/dist/register.d.ts +8 -0
  80. package/dist/register.d.ts.map +1 -0
  81. package/dist/register.js +9 -0
  82. package/dist/register.js.map +1 -0
  83. package/dist/server/host-policy.d.ts +24 -2
  84. package/dist/server/host-policy.d.ts.map +1 -1
  85. package/dist/server/host-policy.js +22 -0
  86. package/dist/server/host-policy.js.map +1 -1
  87. package/dist/server/procedure-server.d.ts +16 -2
  88. package/dist/server/procedure-server.d.ts.map +1 -1
  89. package/dist/server/procedure-server.js +26 -1
  90. package/dist/server/procedure-server.js.map +1 -1
  91. package/package.json +6 -4
  92. package/src/adapters/http/server/transport.ts +1 -0
  93. package/src/browser.ts +29 -0
  94. package/src/client/client.ts +33 -6
  95. package/src/client/types.ts +11 -0
  96. package/src/procedures/capability.ts +333 -0
  97. package/src/procedures/cli/discover.ts +3 -3
  98. package/src/procedures/cli/index.ts +5 -3
  99. package/src/procedures/cli/init.ts +1 -1
  100. package/src/procedures/collection/procedures.ts +12 -0
  101. package/src/procedures/core/array.ts +3 -1
  102. package/src/procedures/core/comparison.ts +3 -1
  103. package/src/procedures/core/index.ts +5 -2
  104. package/src/procedures/core/math.ts +3 -1
  105. package/src/procedures/core/meta.ts +11 -6
  106. package/src/procedures/core/object.ts +3 -1
  107. package/src/procedures/core/string.ts +3 -1
  108. package/src/procedures/core/type.ts +3 -1
  109. package/src/procedures/define-procedure.ts +5 -4
  110. package/src/procedures/effects.ts +24 -0
  111. package/src/procedures/index.ts +33 -22
  112. package/src/procedures/interceptors.ts +2 -1
  113. package/src/procedures/invoke.ts +112 -13
  114. package/src/procedures/module.ts +19 -9
  115. package/src/procedures/types.ts +113 -2
  116. package/src/register.ts +10 -0
  117. package/src/server/host-policy.ts +44 -2
  118. package/src/server/procedure-server.ts +44 -2
  119. package/dist/client/middleware/batching.d.ts +0 -102
  120. package/dist/client/middleware/batching.d.ts.map +0 -1
  121. package/dist/client/middleware/batching.js +0 -245
  122. package/dist/client/middleware/batching.js.map +0 -1
  123. package/dist/collections/async/async-queue.d.ts +0 -144
  124. package/dist/collections/async/async-queue.d.ts.map +0 -1
  125. package/dist/collections/async/async-queue.js +0 -347
  126. package/dist/collections/async/async-queue.js.map +0 -1
  127. package/dist/collections/async/channels.d.ts +0 -188
  128. package/dist/collections/async/channels.d.ts.map +0 -1
  129. package/dist/collections/async/channels.js +0 -312
  130. package/dist/collections/async/channels.js.map +0 -1
  131. package/dist/collections/behaviors/bounded.d.ts +0 -79
  132. package/dist/collections/behaviors/bounded.d.ts.map +0 -1
  133. package/dist/collections/behaviors/bounded.js +0 -384
  134. package/dist/collections/behaviors/bounded.js.map +0 -1
  135. package/dist/collections/behaviors/evented.d.ts +0 -154
  136. package/dist/collections/behaviors/evented.d.ts.map +0 -1
  137. package/dist/collections/behaviors/evented.js +0 -299
  138. package/dist/collections/behaviors/evented.js.map +0 -1
  139. package/dist/collections/behaviors/lru.d.ts +0 -84
  140. package/dist/collections/behaviors/lru.d.ts.map +0 -1
  141. package/dist/collections/behaviors/lru.js +0 -330
  142. package/dist/collections/behaviors/lru.js.map +0 -1
  143. package/dist/collections/behaviors/readonly.d.ts +0 -73
  144. package/dist/collections/behaviors/readonly.d.ts.map +0 -1
  145. package/dist/collections/behaviors/readonly.js +0 -158
  146. package/dist/collections/behaviors/readonly.js.map +0 -1
  147. package/dist/collections/behaviors/safe.d.ts +0 -163
  148. package/dist/collections/behaviors/safe.d.ts.map +0 -1
  149. package/dist/collections/behaviors/safe.js +0 -172
  150. package/dist/collections/behaviors/safe.js.map +0 -1
  151. package/dist/collections/behaviors/synchronized.d.ts +0 -88
  152. package/dist/collections/behaviors/synchronized.d.ts.map +0 -1
  153. package/dist/collections/behaviors/synchronized.js +0 -294
  154. package/dist/collections/behaviors/synchronized.js.map +0 -1
  155. package/dist/collections/behaviors/ttl.d.ts +0 -118
  156. package/dist/collections/behaviors/ttl.d.ts.map +0 -1
  157. package/dist/collections/behaviors/ttl.js +0 -338
  158. package/dist/collections/behaviors/ttl.js.map +0 -1
  159. package/dist/collections/core/effects.d.ts +0 -176
  160. package/dist/collections/core/effects.d.ts.map +0 -1
  161. package/dist/collections/core/effects.js +0 -180
  162. package/dist/collections/core/effects.js.map +0 -1
  163. package/dist/collections/core/events.d.ts +0 -192
  164. package/dist/collections/core/events.d.ts.map +0 -1
  165. package/dist/collections/core/events.js +0 -291
  166. package/dist/collections/core/events.js.map +0 -1
  167. package/dist/collections/core/middleware.d.ts +0 -231
  168. package/dist/collections/core/middleware.d.ts.map +0 -1
  169. package/dist/collections/core/middleware.js +0 -161
  170. package/dist/collections/core/middleware.js.map +0 -1
  171. package/dist/collections/core/policies.d.ts +0 -220
  172. package/dist/collections/core/policies.d.ts.map +0 -1
  173. package/dist/collections/core/policies.js +0 -48
  174. package/dist/collections/core/policies.js.map +0 -1
  175. package/dist/collections/core/traits.d.ts +0 -142
  176. package/dist/collections/core/traits.d.ts.map +0 -1
  177. package/dist/collections/core/traits.js +0 -8
  178. package/dist/collections/core/traits.js.map +0 -1
  179. package/dist/collections/examples.d.ts +0 -13
  180. package/dist/collections/examples.d.ts.map +0 -1
  181. package/dist/collections/examples.js +0 -302
  182. package/dist/collections/examples.js.map +0 -1
  183. package/dist/collections/fx/collectors.d.ts +0 -190
  184. package/dist/collections/fx/collectors.d.ts.map +0 -1
  185. package/dist/collections/fx/collectors.js +0 -369
  186. package/dist/collections/fx/collectors.js.map +0 -1
  187. package/dist/collections/fx/iter.d.ts +0 -166
  188. package/dist/collections/fx/iter.d.ts.map +0 -1
  189. package/dist/collections/fx/iter.js +0 -421
  190. package/dist/collections/fx/iter.js.map +0 -1
  191. package/dist/collections/impl/array-deque.d.ts +0 -107
  192. package/dist/collections/impl/array-deque.d.ts.map +0 -1
  193. package/dist/collections/impl/array-deque.js +0 -381
  194. package/dist/collections/impl/array-deque.js.map +0 -1
  195. package/dist/collections/impl/array-list.d.ts +0 -101
  196. package/dist/collections/impl/array-list.d.ts.map +0 -1
  197. package/dist/collections/impl/array-list.js +0 -387
  198. package/dist/collections/impl/array-list.js.map +0 -1
  199. package/dist/collections/impl/hash-map.d.ts +0 -141
  200. package/dist/collections/impl/hash-map.d.ts.map +0 -1
  201. package/dist/collections/impl/hash-map.js +0 -450
  202. package/dist/collections/impl/hash-map.js.map +0 -1
  203. package/dist/collections/impl/hash-set.d.ts +0 -125
  204. package/dist/collections/impl/hash-set.d.ts.map +0 -1
  205. package/dist/collections/impl/hash-set.js +0 -264
  206. package/dist/collections/impl/hash-set.js.map +0 -1
  207. package/dist/collections/impl/linked-hash-map.d.ts +0 -141
  208. package/dist/collections/impl/linked-hash-map.d.ts.map +0 -1
  209. package/dist/collections/impl/linked-hash-map.js +0 -472
  210. package/dist/collections/impl/linked-hash-map.js.map +0 -1
  211. package/dist/collections/impl/linked-list.d.ts +0 -109
  212. package/dist/collections/impl/linked-list.d.ts.map +0 -1
  213. package/dist/collections/impl/linked-list.js +0 -491
  214. package/dist/collections/impl/linked-list.js.map +0 -1
  215. package/dist/collections/impl/priority-queue.d.ts +0 -134
  216. package/dist/collections/impl/priority-queue.d.ts.map +0 -1
  217. package/dist/collections/impl/priority-queue.js +0 -336
  218. package/dist/collections/impl/priority-queue.js.map +0 -1
  219. package/dist/collections/impl/tree-map.d.ts +0 -146
  220. package/dist/collections/impl/tree-map.d.ts.map +0 -1
  221. package/dist/collections/impl/tree-map.js +0 -781
  222. package/dist/collections/impl/tree-map.js.map +0 -1
  223. package/dist/collections/impl/tree-set.d.ts +0 -112
  224. package/dist/collections/impl/tree-set.d.ts.map +0 -1
  225. package/dist/collections/impl/tree-set.js +0 -374
  226. package/dist/collections/impl/tree-set.js.map +0 -1
  227. package/dist/collections/index.d.ts +0 -105
  228. package/dist/collections/index.d.ts.map +0 -1
  229. package/dist/collections/index.js +0 -135
  230. package/dist/collections/index.js.map +0 -1
  231. package/dist/collections/interfaces/collection.d.ts +0 -119
  232. package/dist/collections/interfaces/collection.d.ts.map +0 -1
  233. package/dist/collections/interfaces/collection.js +0 -8
  234. package/dist/collections/interfaces/collection.js.map +0 -1
  235. package/dist/collections/interfaces/list.d.ts +0 -247
  236. package/dist/collections/interfaces/list.d.ts.map +0 -1
  237. package/dist/collections/interfaces/list.js +0 -8
  238. package/dist/collections/interfaces/list.js.map +0 -1
  239. package/dist/collections/interfaces/map.d.ts +0 -344
  240. package/dist/collections/interfaces/map.d.ts.map +0 -1
  241. package/dist/collections/interfaces/map.js +0 -8
  242. package/dist/collections/interfaces/map.js.map +0 -1
  243. package/dist/collections/interfaces/queue.d.ts +0 -304
  244. package/dist/collections/interfaces/queue.d.ts.map +0 -1
  245. package/dist/collections/interfaces/queue.js +0 -8
  246. package/dist/collections/interfaces/queue.js.map +0 -1
  247. package/dist/collections/interfaces/set.d.ts +0 -137
  248. package/dist/collections/interfaces/set.d.ts.map +0 -1
  249. package/dist/collections/interfaces/set.js +0 -8
  250. package/dist/collections/interfaces/set.js.map +0 -1
  251. package/dist/collections/storage/api.d.ts +0 -109
  252. package/dist/collections/storage/api.d.ts.map +0 -1
  253. package/dist/collections/storage/api.js +0 -182
  254. package/dist/collections/storage/api.js.map +0 -1
  255. package/dist/collections/storage/hybrid.d.ts +0 -164
  256. package/dist/collections/storage/hybrid.d.ts.map +0 -1
  257. package/dist/collections/storage/hybrid.js +0 -416
  258. package/dist/collections/storage/hybrid.js.map +0 -1
  259. package/dist/collections/storage/index.d.ts +0 -16
  260. package/dist/collections/storage/index.d.ts.map +0 -1
  261. package/dist/collections/storage/index.js +0 -13
  262. package/dist/collections/storage/index.js.map +0 -1
  263. package/dist/collections/storage/interface.d.ts +0 -141
  264. package/dist/collections/storage/interface.d.ts.map +0 -1
  265. package/dist/collections/storage/interface.js +0 -23
  266. package/dist/collections/storage/interface.js.map +0 -1
  267. package/dist/collections/storage/memory.d.ts +0 -68
  268. package/dist/collections/storage/memory.d.ts.map +0 -1
  269. package/dist/collections/storage/memory.js +0 -154
  270. package/dist/collections/storage/memory.js.map +0 -1
  271. package/dist/collections/utils/defaults.d.ts +0 -135
  272. package/dist/collections/utils/defaults.d.ts.map +0 -1
  273. package/dist/collections/utils/defaults.js +0 -322
  274. package/dist/collections/utils/defaults.js.map +0 -1
  275. package/dist/collections/utils/factories.d.ts +0 -144
  276. package/dist/collections/utils/factories.d.ts.map +0 -1
  277. package/dist/collections/utils/factories.js +0 -293
  278. package/dist/collections/utils/factories.js.map +0 -1
  279. package/dist/collections/utils/helpers.d.ts +0 -137
  280. package/dist/collections/utils/helpers.d.ts.map +0 -1
  281. package/dist/collections/utils/helpers.js +0 -221
  282. package/dist/collections/utils/helpers.js.map +0 -1
  283. package/dist/collections.d.ts +0 -12
  284. package/dist/collections.d.ts.map +0 -1
  285. package/dist/collections.js +0 -10
  286. package/dist/collections.js.map +0 -1
  287. package/dist/components/define.d.ts +0 -134
  288. package/dist/components/define.d.ts.map +0 -1
  289. package/dist/components/define.js +0 -486
  290. package/dist/components/define.js.map +0 -1
  291. package/dist/components/index.d.ts +0 -39
  292. package/dist/components/index.d.ts.map +0 -1
  293. package/dist/components/index.js +0 -38
  294. package/dist/components/index.js.map +0 -1
  295. package/dist/components/types.d.ts +0 -264
  296. package/dist/components/types.d.ts.map +0 -1
  297. package/dist/components/types.js +0 -46
  298. package/dist/components/types.js.map +0 -1
  299. package/dist/procedures/storage/adapter.d.ts +0 -148
  300. package/dist/procedures/storage/adapter.d.ts.map +0 -1
  301. package/dist/procedures/storage/adapter.js +0 -214
  302. package/dist/procedures/storage/adapter.js.map +0 -1
  303. package/dist/procedures/storage/api.d.ts +0 -125
  304. package/dist/procedures/storage/api.d.ts.map +0 -1
  305. package/dist/procedures/storage/api.js +0 -220
  306. package/dist/procedures/storage/api.js.map +0 -1
  307. package/dist/procedures/storage/factory.d.ts +0 -134
  308. package/dist/procedures/storage/factory.d.ts.map +0 -1
  309. package/dist/procedures/storage/factory.js +0 -166
  310. package/dist/procedures/storage/factory.js.map +0 -1
  311. package/dist/procedures/storage/hybrid.d.ts +0 -193
  312. package/dist/procedures/storage/hybrid.d.ts.map +0 -1
  313. package/dist/procedures/storage/hybrid.js +0 -519
  314. package/dist/procedures/storage/hybrid.js.map +0 -1
  315. package/dist/procedures/storage/index.d.ts +0 -17
  316. package/dist/procedures/storage/index.d.ts.map +0 -1
  317. package/dist/procedures/storage/index.js +0 -17
  318. package/dist/procedures/storage/index.js.map +0 -1
  319. package/dist/procedures/storage/procedures.d.ts +0 -39
  320. package/dist/procedures/storage/procedures.d.ts.map +0 -1
  321. package/dist/procedures/storage/procedures.js +0 -261
  322. package/dist/procedures/storage/procedures.js.map +0 -1
  323. package/dist/procedures/storage/serialization.d.ts +0 -123
  324. package/dist/procedures/storage/serialization.d.ts.map +0 -1
  325. package/dist/procedures/storage/serialization.js +0 -216
  326. package/dist/procedures/storage/serialization.js.map +0 -1
  327. package/dist/procedures/storage/synced-registry.d.ts +0 -246
  328. package/dist/procedures/storage/synced-registry.d.ts.map +0 -1
  329. package/dist/procedures/storage/synced-registry.js +0 -575
  330. package/dist/procedures/storage/synced-registry.js.map +0 -1
  331. package/dist/procedures/storage/types.d.ts +0 -130
  332. package/dist/procedures/storage/types.d.ts.map +0 -1
  333. package/dist/procedures/storage/types.js +0 -8
  334. package/dist/procedures/storage/types.js.map +0 -1
@@ -13,12 +13,19 @@
13
13
  * Interceptors run around each invocation, the nested calls too (roadmap 1.2): policy, tracing,
14
14
  * timeouts and metrics for every host. `interceptors.ts` has a timeout, a tracing and a metrics
15
15
  * interceptor.
16
+ *
17
+ * Each invocation operates with a capability (CAPABILITIES-2026-10, `capability.ts`). A nested
18
+ * call gets the same capability or a narrower one. The admission refuses a procedure whose
19
+ * declared effects the capability does not permit (`FORBIDDEN`). The host can give resources
20
+ * for the capability (`ctx.resources`) and a filter of the output that leaves the host.
16
21
  */
17
22
  import { pathToKey } from "./types.js";
18
23
  import { validateSchema } from "./schema.js";
19
24
  import { PROCEDURE_REGISTRY } from "./registry.js";
20
25
  import { nestedCallRefusal } from "./policy.js";
21
26
  import { scopeOf, withScope } from "./ref.js";
27
+ import { UNLIMITED_CAPABILITY, capabilityRefusal, examinesNestedCall, narrowCapability } from "./capability.js";
28
+ import { timeoutInterceptor } from "./interceptors.js";
22
29
  import { getGlobalEventBus, withEventBusSignal } from "../events/bus.js";
23
30
  /** An error of the invocation itself. An error that the handler throws passes through unchanged. */
24
31
  export class InvocationError extends Error {
@@ -26,10 +33,13 @@ export class InvocationError extends Error {
26
33
  code;
27
34
  path;
28
35
  retryable = false;
29
- constructor(code, message, path) {
36
+ /** The reason of a `FORBIDDEN` error: `effects-undeclared`, `effects-exceeded` or `clearance`. */
37
+ reason;
38
+ constructor(code, message, path, reason) {
30
39
  super(message);
31
40
  this.code = code;
32
41
  this.path = path;
42
+ this.reason = reason;
33
43
  }
34
44
  }
35
45
  function abortError(path) {
@@ -132,8 +142,15 @@ export async function invokeProcedure(procedure, input, options = {}) {
132
142
  signal: options.signal,
133
143
  parent: options.parent,
134
144
  depth: options.parent ? options.parent.depth + 1 : 0,
145
+ capability: options.capability ?? UNLIMITED_CAPABILITY,
135
146
  };
136
- const interceptors = options.interceptors ?? [];
147
+ // A deadline that the parent does not have (from a host, a request or a narrowed nested call)
148
+ // ends the invocation at that time, as the timeout interceptor does
149
+ const deadline = invocation.capability.deadline;
150
+ const ownDeadline = deadline !== undefined && options.parent?.capability.deadline !== deadline;
151
+ const interceptors = ownDeadline
152
+ ? [timeoutInterceptor({ ms: Math.max(0, deadline - Date.now()), appliesTo: () => true }), ...(options.interceptors ?? [])]
153
+ : (options.interceptors ?? []);
137
154
  if (interceptors.length === 0)
138
155
  return runInvocation(invocation, options);
139
156
  const dispatch = (index, current, currentOptions) => {
@@ -147,8 +164,16 @@ export async function invokeProcedure(procedure, input, options = {}) {
147
164
  ...current,
148
165
  signal: changes.signal ?? current.signal,
149
166
  metadata: changes.metadata ?? current.metadata,
167
+ capability: changes.capability
168
+ ? narrowCapability(current.capability, changes.capability, currentOptions.clearanceOrder)
169
+ : current.capability,
150
170
  };
151
- return dispatch(index + 1, changed, { ...currentOptions, signal: changed.signal, metadata: changed.metadata });
171
+ return dispatch(index + 1, changed, {
172
+ ...currentOptions,
173
+ signal: changed.signal,
174
+ metadata: changed.metadata,
175
+ capability: changed.capability,
176
+ });
152
177
  });
153
178
  };
154
179
  return dispatch(0, invocation, options);
@@ -159,6 +184,15 @@ async function runInvocation(invocation, options) {
159
184
  const handler = procedure.handler;
160
185
  if (options.signal?.aborted)
161
186
  throw abortError(path);
187
+ // The admission: before the input validation, so a refused call learns nothing from its input
188
+ const parent = invocation.parent;
189
+ if (!parent || examinesNestedCall(parent.procedure, parent.capability, invocation.capability)) {
190
+ const refusal = capabilityRefusal(procedure, invocation.capability);
191
+ if (refusal?.reason === "deadline")
192
+ throw new InvocationError("TIMEOUT", refusal.message, path);
193
+ if (refusal)
194
+ throw new InvocationError("FORBIDDEN", refusal.message, path, refusal.reason);
195
+ }
162
196
  let data = input;
163
197
  if (!options.inputValidated) {
164
198
  // A synchronous schema gives its result at once, so the handler starts before an await
@@ -174,11 +208,28 @@ async function runInvocation(invocation, options) {
174
208
  data = parsed.value === input ? input : withScope(parsed.value, scopeOf(input));
175
209
  }
176
210
  // The handler starts here, before the first await (the site's trace depends on it)
177
- const result = await handler(data, createProcedureContext(procedure, options, invocation));
211
+ const result = await handler(data, createProcedureContext(procedure, { ...options, capability: invocation.capability }, invocation));
212
+ // The output filter examines only what leaves the host
213
+ const admit = invocation.depth === 0 ? options.admitItem : undefined;
178
214
  if (isAsyncIterable(result)) {
179
- return { kind: "stream", items: validatedItems(procedure, result, options.signal) };
215
+ const items = validatedItems(procedure, result, options.signal);
216
+ return {
217
+ kind: "stream",
218
+ items: (admit ? admittedItems(items, admit, invocation) : items),
219
+ };
220
+ }
221
+ const value = await validateOutput(procedure, result);
222
+ if (admit && !(await admit(value, invocation))) {
223
+ throw new InvocationError("FORBIDDEN", `The clearance of the call does not permit the output of ${pathToKey(path)}`, path, "clearance");
224
+ }
225
+ return { kind: "value", value: value };
226
+ }
227
+ /** The items that the output filter of the host admits. */
228
+ async function* admittedItems(items, admit, invocation) {
229
+ for await (const item of items) {
230
+ if (await admit(item, invocation))
231
+ yield item;
180
232
  }
181
- return { kind: "value", value: (await validateOutput(procedure, result)) };
182
233
  }
183
234
  /** This function finds the procedure at a path in the registry of the options, then runs it. */
184
235
  export async function invokePath(path, input, options = {}) {
@@ -240,6 +291,8 @@ export function createProcedureContext(procedure, options = {}, invocation) {
240
291
  path: procedure.path,
241
292
  client,
242
293
  registry: options.registry ?? PROCEDURE_REGISTRY,
294
+ capability: options.capability ?? UNLIMITED_CAPABILITY,
295
+ resources: invocation && options.resources ? options.resources(invocation) : EMPTY_RESOURCES,
243
296
  };
244
297
  if (options.signal)
245
298
  context.signal = options.signal;
@@ -254,23 +307,36 @@ export function createProcedureContext(procedure, options = {}, invocation) {
254
307
  context.bus = options.signal ? withEventBusSignal(bus, options.signal) : bus;
255
308
  return context;
256
309
  }
310
+ /** The resources of an invocation when the host gives none. */
311
+ const EMPTY_RESOURCES = Object.freeze({});
257
312
  /** The client of a procedure's context: it runs the nested calls from the registry. */
258
313
  function registryClient(caller, options) {
259
- const start = (path, input) => {
314
+ const start = (path, input, callOptions) => {
260
315
  // The call policy of the host, with the immediate caller (BUGS-2026-07 H18, deep dive MCP-3).
261
316
  // It runs before the lookup, so a refused path tells nothing about the procedure.
262
317
  const refusal = nestedCallRefusal(caller, path, options);
263
318
  if (refusal) {
264
319
  return Promise.reject(new InvocationError(refusal.code, refusal.message, path));
265
320
  }
266
- return invokePath(path, input, options);
321
+ // A nested call gets the capability of its caller, or a narrower one that it asks for
322
+ const narrow = callOptions?.narrow;
323
+ if (!narrow)
324
+ return invokePath(path, input, options);
325
+ let capability;
326
+ try {
327
+ capability = narrowCapability(options.capability, narrow, options.clearanceOrder);
328
+ }
329
+ catch (error) {
330
+ return Promise.reject(error);
331
+ }
332
+ return invokePath(path, input, { ...options, capability });
267
333
  };
268
334
  return {
269
- async call(path, input) {
270
- return outputValue(await start(path, input), path);
335
+ async call(path, input, callOptions) {
336
+ return outputValue(await start(path, input, callOptions), path);
271
337
  },
272
- stream(path, input) {
273
- return streamOutput(() => start(path, input));
338
+ stream(path, input, callOptions) {
339
+ return streamOutput(() => start(path, input, callOptions));
274
340
  },
275
341
  };
276
342
  }
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/procedures/invoke.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/procedures/invoke.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Procedure modules and explicit registries (architecture review, roadmap 3.1).
3
3
  *
4
- * Importing a package root registers its procedures in the global `PROCEDURE_REGISTRY`
5
- * (DECISIONS-2026-10, "Every package root registers its procedures"). That stays. A host that
6
- * wants its own registry uses the module of each package instead: the `./module` entry of a
7
- * package exports its procedures as data, and importing it registers nothing.
4
+ * Importing a package registers nothing (ARCHITECTURE-PROPOSALS-2026-10, P9). A host with its own
5
+ * registry gives it the module of each package: the `./module` entry exports the procedures as
6
+ * data. The global `PROCEDURE_REGISTRY` gets the procedures of a package from its `./register`
7
+ * entry (`import "@procedures/git/register"`).
8
8
  *
9
9
  * ```ts
10
10
  * import { createRegistry, Client, LocalTransport } from "@procedures/client";
@@ -20,10 +20,9 @@
20
20
  import { ProcedureRegistry } from "./registry.js";
21
21
  import type { AnyProcedure, ProcedureModule, RegistrationOptions } from "./types.js";
22
22
  /**
23
- * The procedures that `@procedures/client` registers in the global registry when it is
24
- * imported: the control flow (`client.chain`, `client.map` and the others) and
25
- * `procedure.define`/`get`/`list`/`delete`. `createRegistry()` always registers this module, so an
26
- * explicit registry has what the global registry has.
23
+ * The procedures of `@procedures/client`: the control flow (`client.chain`, `client.map` and the
24
+ * others) and `procedure.define`/`get`/`list`/`delete`. `createRegistry()` always registers this
25
+ * module. `import "@procedures/client/register"` registers it in the global registry.
27
26
  */
28
27
  export declare const clientModule: ProcedureModule;
29
28
  /** This function gives a module: its procedures, and the modules whose procedures it calls. */
@@ -46,4 +45,10 @@ export declare function registerModules(registry: ProcedureRegistry, modules: re
46
45
  * `import "@procedures/client"`) and of each module, with their required modules.
47
46
  */
48
47
  export declare function createRegistry(...modules: ModuleInput[]): ProcedureRegistry;
48
+ /**
49
+ * This function registers the procedures of `clientModule` in a registry: the global registry by
50
+ * default. A procedure that the registry has already stays. The `./register` entry of the package
51
+ * starts this function.
52
+ */
53
+ export declare function registerClientProcedures(registry?: ProcedureRegistry): void;
49
54
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/procedures/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,eAAe,CAAC;AAGjE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,eAG1B,CAAC;AAEF,+FAA+F;AAC/F,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,YAAY,EAAE,EACnC,QAAQ,GAAE,SAAS,eAAe,EAAO,GACxC,eAAe,CAEjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,EAAE,CAkBpF;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,SAAS,eAAe,EAAE,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,iBAAiB,CAiBnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAE3E"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/procedures/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAsB,iBAAiB,EAAiB,MAAM,eAAe,CAAC;AAGrF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,eAG1B,CAAC;AAEF,+FAA+F;AAC/F,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,YAAY,EAAE,EACnC,QAAQ,GAAE,SAAS,eAAe,EAAO,GACxC,eAAe,CAEjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,eAAe,EAAE,CAkBpF;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,SAAS,eAAe,EAAE,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,iBAAiB,CAiBnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,GAAE,iBAAsC,GAAG,IAAI,CAI/F"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Procedure modules and explicit registries (architecture review, roadmap 3.1).
3
3
  *
4
- * Importing a package root registers its procedures in the global `PROCEDURE_REGISTRY`
5
- * (DECISIONS-2026-10, "Every package root registers its procedures"). That stays. A host that
6
- * wants its own registry uses the module of each package instead: the `./module` entry of a
7
- * package exports its procedures as data, and importing it registers nothing.
4
+ * Importing a package registers nothing (ARCHITECTURE-PROPOSALS-2026-10, P9). A host with its own
5
+ * registry gives it the module of each package: the `./module` entry exports the procedures as
6
+ * data. The global `PROCEDURE_REGISTRY` gets the procedures of a package from its `./register`
7
+ * entry (`import "@procedures/git/register"`).
8
8
  *
9
9
  * ```ts
10
10
  * import { createRegistry, Client, LocalTransport } from "@procedures/client";
@@ -17,14 +17,13 @@
17
17
  * Two registries in one process stay apart: a nested call, `procedure.define` and the expose
18
18
  * rule of a server all use the registry of the invocation (`ctx.registry`).
19
19
  */
20
- import { ProcedureRegistry, RegistryError } from "./registry.js";
20
+ import { PROCEDURE_REGISTRY, ProcedureRegistry, RegistryError } from "./registry.js";
21
21
  import { coreProcedures } from "./core/index.js";
22
22
  import { metaProcedures as definitionProcedures } from "./define-procedure.js";
23
23
  /**
24
- * The procedures that `@procedures/client` registers in the global registry when it is
25
- * imported: the control flow (`client.chain`, `client.map` and the others) and
26
- * `procedure.define`/`get`/`list`/`delete`. `createRegistry()` always registers this module, so an
27
- * explicit registry has what the global registry has.
24
+ * The procedures of `@procedures/client`: the control flow (`client.chain`, `client.map` and the
25
+ * others) and `procedure.define`/`get`/`list`/`delete`. `createRegistry()` always registers this
26
+ * module. `import "@procedures/client/register"` registers it in the global registry.
28
27
  */
29
28
  export const clientModule = {
30
29
  name: "@procedures/client",
@@ -90,4 +89,15 @@ export function registerModules(registry, modules, options) {
90
89
  export function createRegistry(...modules) {
91
90
  return registerModules(new ProcedureRegistry(), [clientModule, ...modules]);
92
91
  }
92
+ /**
93
+ * This function registers the procedures of `clientModule` in a registry: the global registry by
94
+ * default. A procedure that the registry has already stays. The `./register` entry of the package
95
+ * starts this function.
96
+ */
97
+ export function registerClientProcedures(registry = PROCEDURE_REGISTRY) {
98
+ for (const procedure of clientModule.procedures) {
99
+ if (!registry.has(procedure.path))
100
+ registry.register(procedure);
101
+ }
102
+ }
93
103
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/procedures/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/procedures/module.ts"],"names":[],"mappings":"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"}
@@ -47,9 +47,92 @@ export interface ProcedureMetadata {
47
47
  * procedure whose callees come from its input has the `runs-refs` tag.
48
48
  */
49
49
  calls?: readonly string[];
50
+ /**
51
+ * The side effects of the procedure (CAPABILITIES-2026-10). A host with a restriction of
52
+ * effects refuses a procedure without this declaration.
53
+ */
54
+ effects?: Effects;
50
55
  /** Custom metadata fields */
51
56
  [key: string]: unknown;
52
57
  }
58
+ /**
59
+ * The side effects of a procedure. The resource names are strings that the application chooses.
60
+ * The standard names are `fs` (the files of the host), `network` (systems outside the host),
61
+ * `process` (it starts any program) and `registry` (the procedure registry).
62
+ */
63
+ export interface Effects {
64
+ /** The resources that the procedure reads. Absent: not known. */
65
+ readonly reads?: readonly string[];
66
+ /** The resources that the procedure changes. An empty list: it changes nothing. Absent: not known. */
67
+ readonly writes?: readonly string[];
68
+ /** True: a second call with the same input changes nothing more. The default is false. */
69
+ readonly idempotent?: boolean;
70
+ /**
71
+ * True: the procedure can delete or overwrite data that it did not make. The default is true for
72
+ * a procedure that writes, as in MCP. A procedure that writes only new data declares false.
73
+ */
74
+ readonly destructive?: boolean;
75
+ }
76
+ /** The effects that a capability permits. An absent field permits everything of its kind. */
77
+ export interface PermittedEffects {
78
+ /** The resources that a call can read: names, or `"any"`. */
79
+ readonly reads?: readonly string[] | "any";
80
+ /** The resources that a call can change: names, or `"any"`. An empty list: no change. */
81
+ readonly writes?: readonly string[] | "any";
82
+ /** False: a call cannot start a destructive procedure. */
83
+ readonly destructive?: boolean;
84
+ }
85
+ /**
86
+ * The types that an application gives to the framework, by declaration merging:
87
+ *
88
+ * ```ts
89
+ * declare module "@procedures/client" {
90
+ * interface Register {
91
+ * clearance: "public" | "shared" | "private";
92
+ * resources: { world: World };
93
+ * }
94
+ * }
95
+ * ```
96
+ */
97
+ export interface Register {
98
+ }
99
+ /** The type of a clearance value: `Register["clearance"]`, or `unknown`. */
100
+ export type ClearanceOf = Register extends {
101
+ clearance: infer C;
102
+ } ? C : unknown;
103
+ /** The type of `ctx.resources`: `Register["resources"]`, or a record of unknown values. */
104
+ export type ResourcesOf = Register extends {
105
+ resources: infer R;
106
+ } ? R : Readonly<Record<string, unknown>>;
107
+ /**
108
+ * The permissions of one invocation. A nested call gets the same capability or a narrower one,
109
+ * and only the host makes a capability (from its authentication). The object is frozen.
110
+ */
111
+ export interface Capability<C = ClearanceOf> {
112
+ /** The data that the call can see. Absent: no limit. The application gives the order. */
113
+ readonly clearance?: C;
114
+ /** The effects that the call and its nested calls can have. Absent: all effects. */
115
+ readonly effects?: PermittedEffects;
116
+ /** The time (milliseconds since the epoch) at which the call and its nested calls stop. */
117
+ readonly deadline?: number;
118
+ }
119
+ /**
120
+ * A request for a narrower capability (a nested call, an interceptor). The framework calculates
121
+ * the result, so a request for more has no effect.
122
+ */
123
+ export interface CapabilityRequest<C = ClearanceOf> {
124
+ clearance?: C;
125
+ effects?: PermittedEffects;
126
+ /** The time from now, in milliseconds. The result is the earlier of the two deadlines. */
127
+ timeoutMs?: number;
128
+ }
129
+ /** The order of clearance values: a partial order with a meet (the highest common lower value). */
130
+ export interface ClearanceOrder<C = ClearanceOf> {
131
+ /** True when `a` is the same as or lower than `b`. */
132
+ leq(a: C, b: C): boolean;
133
+ /** The highest value that is the same as or lower than both. */
134
+ meet(a: C, b: C): C;
135
+ }
53
136
  /**
54
137
  * Repository provider for storage access.
55
138
  * Injected into procedure handlers for data access.
@@ -136,6 +219,16 @@ export interface ProcedureContext {
136
219
  * `hydrateInput`, so a trace sees the events of its own program only.
137
220
  */
138
221
  onRef?: ((event: HydrationEvent) => void) | undefined;
222
+ /**
223
+ * The capability of this invocation (CAPABILITIES-2026-10): its clearance, permitted effects
224
+ * and deadline. The nested calls of `ctx.client` get it, or a narrower one. Frozen.
225
+ */
226
+ capability: Capability;
227
+ /**
228
+ * The resources that the host gives to this invocation, for its capability: a view of a
229
+ * database for a lower clearance, for example. Empty when the host gives none.
230
+ */
231
+ resources: ResourcesOf;
139
232
  }
140
233
  /**
141
234
  * The part of `ProcedureRegistry` that a procedure can use through `ctx.registry`.
@@ -155,13 +248,18 @@ export interface ProcedureClient {
155
248
  /**
156
249
  * Call a procedure by path. For a streaming procedure, the result is the last item.
157
250
  */
158
- call<TInput = unknown, TOutput = unknown>(path: ProcedurePath, input: TInput): Promise<TOutput>;
251
+ call<TInput = unknown, TOutput = unknown>(path: ProcedurePath, input: TInput, options?: NestedCallOptions): Promise<TOutput>;
159
252
  /**
160
253
  * Call a procedure by path and read each output: each item of a streaming procedure, or the
161
254
  * one value of another procedure. The procedure starts when the caller reads the first item.
162
255
  * An older client has no `stream`.
163
256
  */
164
- stream?<TInput = unknown, TOutput = unknown>(path: ProcedurePath, input: TInput): AsyncIterable<TOutput>;
257
+ stream?<TInput = unknown, TOutput = unknown>(path: ProcedurePath, input: TInput, options?: NestedCallOptions): AsyncIterable<TOutput>;
258
+ }
259
+ /** The options of one nested call. */
260
+ export interface NestedCallOptions {
261
+ /** A narrower capability for the nested call. A request for more has no effect. */
262
+ narrow?: CapabilityRequest | undefined;
165
263
  }
166
264
  /**
167
265
  * Standard procedure handler function (single return).
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/procedures/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/procedures/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/procedures/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AA+UD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/procedures/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AA8bD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAe,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Importing this file registers the procedures of `@procedures/client` in the global registry:
3
+ * `import "@procedures/client/register"`. These are the control flow (`client.chain`, `client.map`
4
+ * and the others) and `procedure.define`/`get`/`list`/`delete`. The other entries of the package
5
+ * register nothing (ARCHITECTURE-PROPOSALS-2026-10, P9).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Importing this file registers the procedures of `@procedures/client` in the global registry:
3
+ * `import "@procedures/client/register"`. These are the control flow (`client.chain`, `client.map`
4
+ * and the others) and `procedure.define`/`get`/`list`/`delete`. The other entries of the package
5
+ * register nothing (ARCHITECTURE-PROPOSALS-2026-10, P9).
6
+ */
7
+ import { registerClientProcedures } from "./procedures/module.js";
8
+ registerClientProcedures();
9
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,wBAAwB,EAAE,CAAC"}
@@ -12,9 +12,12 @@
12
12
  * procedures (a host for an outside caller sets it).
13
13
  * - `timeoutMs`: the time limit of each call from a caller (not of its nested calls).
14
14
  * - `token`, `browser`: the checks of the network transports (`client-server` applies them).
15
+ * - `capability`, `readOnly`, `clearanceOrder`, `resources`, `admitItem`: the capability of each
16
+ * call and what the host gives for it (CAPABILITIES-2026-10).
15
17
  */
16
- import type { ProcedurePath } from "../procedures/types.js";
17
- import type { Interceptor } from "../procedures/invoke.js";
18
+ import type { Capability, ClearanceOrder, ProcedurePath, ResourcesOf } from "../procedures/types.js";
19
+ import type { AdmitItem, Interceptor, Invocation } from "../procedures/invoke.js";
20
+ import type { ServerRequest } from "./types.js";
18
21
  import type { BrowserGuardOptions } from "./browser-guard.js";
19
22
  import type { ProcedureRegistry } from "../procedures/registry.js";
20
23
  import type { ProcedureServerOptions } from "./procedure-server.js";
@@ -43,6 +46,20 @@ export interface HostPolicyOptions {
43
46
  token?: string | undefined;
44
47
  /** The browser checks of the network transports (`allowedOrigins`, `allowedHosts`, `allowGet`). */
45
48
  browser?: BrowserGuardOptions | undefined;
49
+ /**
50
+ * The capability of each call from a caller: one value, or a function of the request. The
51
+ * function reads only what the transport authenticated (the token, a session), not a claim of
52
+ * the caller. Without it: no limits.
53
+ */
54
+ capability?: Capability | ((request: ServerRequest<unknown>) => Capability | undefined) | undefined;
55
+ /** True: the callers start only the procedures that change nothing (`effects.writes` is empty). */
56
+ readOnly?: boolean | undefined;
57
+ /** The order of the clearance values. */
58
+ clearanceOrder?: ClearanceOrder | undefined;
59
+ /** The resources of each invocation for its capability (`ctx.resources`). */
60
+ resources?: ((invocation: Invocation) => ResourcesOf) | undefined;
61
+ /** The filter of the output that leaves the host. */
62
+ admitItem?: AdmitItem | undefined;
46
63
  }
47
64
  /** What a host lets its callers do. */
48
65
  export interface HostPolicy {
@@ -51,6 +68,11 @@ export interface HostPolicy {
51
68
  readonly interceptors: readonly Interceptor[];
52
69
  readonly token: string | undefined;
53
70
  readonly browser: BrowserGuardOptions;
71
+ /** The capability of a call from a caller, or undefined for no limits. */
72
+ readonly capabilityOf: ((request?: ServerRequest<unknown>) => Capability | undefined) | undefined;
73
+ readonly clearanceOrder: ClearanceOrder | undefined;
74
+ readonly resources: ((invocation: Invocation) => ResourcesOf) | undefined;
75
+ readonly admitItem: AdmitItem | undefined;
54
76
  }
55
77
  /** This function builds the policy of a host from its options. */
56
78
  export declare function hostPolicy(options?: HostPolicyOptions): HostPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"host-policy.d.ts","sourceRoot":"","sources":["../../src/server/host-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACzC;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAc5F;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAIlF;AAED,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC1F,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,oEAAoE;IACpE,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;IAClD,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mGAAmG;IACnG,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC3C;AAED,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC;AAiBD,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAatE;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAQ/G"}
1
+ {"version":3,"file":"host-policy.d.ts","sourceRoot":"","sources":["../../src/server/host-policy.ts"],"names":[],"mappings":"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"}