@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.
- package/CHANGELOG.md +32 -0
- package/README.md +5 -5
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/http/server/transport.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.js +1 -0
- package/dist/adapters/http/server/transport.js.map +1 -1
- package/dist/browser.d.ts +6 -3
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -1
- package/dist/browser.js.map +1 -1
- package/dist/client/client.d.ts +9 -1
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +27 -6
- package/dist/client/client.js.map +1 -1
- package/dist/client/types.d.ts +9 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js.map +1 -1
- package/dist/procedures/capability.d.ts +111 -0
- package/dist/procedures/capability.d.ts.map +1 -0
- package/dist/procedures/capability.js +269 -0
- package/dist/procedures/capability.js.map +1 -0
- package/dist/procedures/cli/discover.d.ts +3 -3
- package/dist/procedures/cli/discover.js +3 -3
- package/dist/procedures/cli/index.js +5 -3
- package/dist/procedures/cli/index.js.map +1 -1
- package/dist/procedures/cli/init.js +1 -1
- package/dist/procedures/collection/procedures.d.ts.map +1 -1
- package/dist/procedures/collection/procedures.js +12 -0
- package/dist/procedures/collection/procedures.js.map +1 -1
- package/dist/procedures/core/array.d.ts.map +1 -1
- package/dist/procedures/core/array.js +3 -1
- package/dist/procedures/core/array.js.map +1 -1
- package/dist/procedures/core/comparison.d.ts.map +1 -1
- package/dist/procedures/core/comparison.js +3 -1
- package/dist/procedures/core/comparison.js.map +1 -1
- package/dist/procedures/core/index.d.ts.map +1 -1
- package/dist/procedures/core/index.js +5 -2
- package/dist/procedures/core/index.js.map +1 -1
- package/dist/procedures/core/math.d.ts.map +1 -1
- package/dist/procedures/core/math.js +3 -1
- package/dist/procedures/core/math.js.map +1 -1
- package/dist/procedures/core/meta.d.ts.map +1 -1
- package/dist/procedures/core/meta.js +11 -6
- package/dist/procedures/core/meta.js.map +1 -1
- package/dist/procedures/core/object.d.ts.map +1 -1
- package/dist/procedures/core/object.js +3 -1
- package/dist/procedures/core/object.js.map +1 -1
- package/dist/procedures/core/string.d.ts.map +1 -1
- package/dist/procedures/core/string.js +3 -1
- package/dist/procedures/core/string.js.map +1 -1
- package/dist/procedures/core/type.d.ts.map +1 -1
- package/dist/procedures/core/type.js +3 -1
- package/dist/procedures/core/type.js.map +1 -1
- package/dist/procedures/define-procedure.d.ts.map +1 -1
- package/dist/procedures/define-procedure.js +5 -4
- package/dist/procedures/define-procedure.js.map +1 -1
- package/dist/procedures/effects.d.ts +15 -0
- package/dist/procedures/effects.d.ts.map +1 -0
- package/dist/procedures/effects.js +18 -0
- package/dist/procedures/effects.js.map +1 -0
- package/dist/procedures/index.d.ts +5 -2
- package/dist/procedures/index.d.ts.map +1 -1
- package/dist/procedures/index.js +8 -23
- package/dist/procedures/index.js.map +1 -1
- package/dist/procedures/interceptors.d.ts.map +1 -1
- package/dist/procedures/interceptors.js +2 -1
- package/dist/procedures/interceptors.js.map +1 -1
- package/dist/procedures/invoke.d.ts +36 -3
- package/dist/procedures/invoke.d.ts.map +1 -1
- package/dist/procedures/invoke.js +78 -12
- package/dist/procedures/invoke.js.map +1 -1
- package/dist/procedures/module.d.ts +13 -8
- package/dist/procedures/module.d.ts.map +1 -1
- package/dist/procedures/module.js +19 -9
- package/dist/procedures/module.js.map +1 -1
- package/dist/procedures/types.d.ts +100 -2
- package/dist/procedures/types.d.ts.map +1 -1
- package/dist/procedures/types.js.map +1 -1
- package/dist/register.d.ts +8 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +9 -0
- package/dist/register.js.map +1 -0
- package/dist/server/host-policy.d.ts +24 -2
- package/dist/server/host-policy.d.ts.map +1 -1
- package/dist/server/host-policy.js +22 -0
- package/dist/server/host-policy.js.map +1 -1
- package/dist/server/procedure-server.d.ts +16 -2
- package/dist/server/procedure-server.d.ts.map +1 -1
- package/dist/server/procedure-server.js +26 -1
- package/dist/server/procedure-server.js.map +1 -1
- package/package.json +6 -4
- package/src/adapters/http/server/transport.ts +1 -0
- package/src/browser.ts +29 -0
- package/src/client/client.ts +33 -6
- package/src/client/types.ts +11 -0
- package/src/procedures/capability.ts +333 -0
- package/src/procedures/cli/discover.ts +3 -3
- package/src/procedures/cli/index.ts +5 -3
- package/src/procedures/cli/init.ts +1 -1
- package/src/procedures/collection/procedures.ts +12 -0
- package/src/procedures/core/array.ts +3 -1
- package/src/procedures/core/comparison.ts +3 -1
- package/src/procedures/core/index.ts +5 -2
- package/src/procedures/core/math.ts +3 -1
- package/src/procedures/core/meta.ts +11 -6
- package/src/procedures/core/object.ts +3 -1
- package/src/procedures/core/string.ts +3 -1
- package/src/procedures/core/type.ts +3 -1
- package/src/procedures/define-procedure.ts +5 -4
- package/src/procedures/effects.ts +24 -0
- package/src/procedures/index.ts +33 -22
- package/src/procedures/interceptors.ts +2 -1
- package/src/procedures/invoke.ts +112 -13
- package/src/procedures/module.ts +19 -9
- package/src/procedures/types.ts +113 -2
- package/src/register.ts +10 -0
- package/src/server/host-policy.ts +44 -2
- package/src/server/procedure-server.ts +44 -2
- package/dist/client/middleware/batching.d.ts +0 -102
- package/dist/client/middleware/batching.d.ts.map +0 -1
- package/dist/client/middleware/batching.js +0 -245
- package/dist/client/middleware/batching.js.map +0 -1
- package/dist/collections/async/async-queue.d.ts +0 -144
- package/dist/collections/async/async-queue.d.ts.map +0 -1
- package/dist/collections/async/async-queue.js +0 -347
- package/dist/collections/async/async-queue.js.map +0 -1
- package/dist/collections/async/channels.d.ts +0 -188
- package/dist/collections/async/channels.d.ts.map +0 -1
- package/dist/collections/async/channels.js +0 -312
- package/dist/collections/async/channels.js.map +0 -1
- package/dist/collections/behaviors/bounded.d.ts +0 -79
- package/dist/collections/behaviors/bounded.d.ts.map +0 -1
- package/dist/collections/behaviors/bounded.js +0 -384
- package/dist/collections/behaviors/bounded.js.map +0 -1
- package/dist/collections/behaviors/evented.d.ts +0 -154
- package/dist/collections/behaviors/evented.d.ts.map +0 -1
- package/dist/collections/behaviors/evented.js +0 -299
- package/dist/collections/behaviors/evented.js.map +0 -1
- package/dist/collections/behaviors/lru.d.ts +0 -84
- package/dist/collections/behaviors/lru.d.ts.map +0 -1
- package/dist/collections/behaviors/lru.js +0 -330
- package/dist/collections/behaviors/lru.js.map +0 -1
- package/dist/collections/behaviors/readonly.d.ts +0 -73
- package/dist/collections/behaviors/readonly.d.ts.map +0 -1
- package/dist/collections/behaviors/readonly.js +0 -158
- package/dist/collections/behaviors/readonly.js.map +0 -1
- package/dist/collections/behaviors/safe.d.ts +0 -163
- package/dist/collections/behaviors/safe.d.ts.map +0 -1
- package/dist/collections/behaviors/safe.js +0 -172
- package/dist/collections/behaviors/safe.js.map +0 -1
- package/dist/collections/behaviors/synchronized.d.ts +0 -88
- package/dist/collections/behaviors/synchronized.d.ts.map +0 -1
- package/dist/collections/behaviors/synchronized.js +0 -294
- package/dist/collections/behaviors/synchronized.js.map +0 -1
- package/dist/collections/behaviors/ttl.d.ts +0 -118
- package/dist/collections/behaviors/ttl.d.ts.map +0 -1
- package/dist/collections/behaviors/ttl.js +0 -338
- package/dist/collections/behaviors/ttl.js.map +0 -1
- package/dist/collections/core/effects.d.ts +0 -176
- package/dist/collections/core/effects.d.ts.map +0 -1
- package/dist/collections/core/effects.js +0 -180
- package/dist/collections/core/effects.js.map +0 -1
- package/dist/collections/core/events.d.ts +0 -192
- package/dist/collections/core/events.d.ts.map +0 -1
- package/dist/collections/core/events.js +0 -291
- package/dist/collections/core/events.js.map +0 -1
- package/dist/collections/core/middleware.d.ts +0 -231
- package/dist/collections/core/middleware.d.ts.map +0 -1
- package/dist/collections/core/middleware.js +0 -161
- package/dist/collections/core/middleware.js.map +0 -1
- package/dist/collections/core/policies.d.ts +0 -220
- package/dist/collections/core/policies.d.ts.map +0 -1
- package/dist/collections/core/policies.js +0 -48
- package/dist/collections/core/policies.js.map +0 -1
- package/dist/collections/core/traits.d.ts +0 -142
- package/dist/collections/core/traits.d.ts.map +0 -1
- package/dist/collections/core/traits.js +0 -8
- package/dist/collections/core/traits.js.map +0 -1
- package/dist/collections/examples.d.ts +0 -13
- package/dist/collections/examples.d.ts.map +0 -1
- package/dist/collections/examples.js +0 -302
- package/dist/collections/examples.js.map +0 -1
- package/dist/collections/fx/collectors.d.ts +0 -190
- package/dist/collections/fx/collectors.d.ts.map +0 -1
- package/dist/collections/fx/collectors.js +0 -369
- package/dist/collections/fx/collectors.js.map +0 -1
- package/dist/collections/fx/iter.d.ts +0 -166
- package/dist/collections/fx/iter.d.ts.map +0 -1
- package/dist/collections/fx/iter.js +0 -421
- package/dist/collections/fx/iter.js.map +0 -1
- package/dist/collections/impl/array-deque.d.ts +0 -107
- package/dist/collections/impl/array-deque.d.ts.map +0 -1
- package/dist/collections/impl/array-deque.js +0 -381
- package/dist/collections/impl/array-deque.js.map +0 -1
- package/dist/collections/impl/array-list.d.ts +0 -101
- package/dist/collections/impl/array-list.d.ts.map +0 -1
- package/dist/collections/impl/array-list.js +0 -387
- package/dist/collections/impl/array-list.js.map +0 -1
- package/dist/collections/impl/hash-map.d.ts +0 -141
- package/dist/collections/impl/hash-map.d.ts.map +0 -1
- package/dist/collections/impl/hash-map.js +0 -450
- package/dist/collections/impl/hash-map.js.map +0 -1
- package/dist/collections/impl/hash-set.d.ts +0 -125
- package/dist/collections/impl/hash-set.d.ts.map +0 -1
- package/dist/collections/impl/hash-set.js +0 -264
- package/dist/collections/impl/hash-set.js.map +0 -1
- package/dist/collections/impl/linked-hash-map.d.ts +0 -141
- package/dist/collections/impl/linked-hash-map.d.ts.map +0 -1
- package/dist/collections/impl/linked-hash-map.js +0 -472
- package/dist/collections/impl/linked-hash-map.js.map +0 -1
- package/dist/collections/impl/linked-list.d.ts +0 -109
- package/dist/collections/impl/linked-list.d.ts.map +0 -1
- package/dist/collections/impl/linked-list.js +0 -491
- package/dist/collections/impl/linked-list.js.map +0 -1
- package/dist/collections/impl/priority-queue.d.ts +0 -134
- package/dist/collections/impl/priority-queue.d.ts.map +0 -1
- package/dist/collections/impl/priority-queue.js +0 -336
- package/dist/collections/impl/priority-queue.js.map +0 -1
- package/dist/collections/impl/tree-map.d.ts +0 -146
- package/dist/collections/impl/tree-map.d.ts.map +0 -1
- package/dist/collections/impl/tree-map.js +0 -781
- package/dist/collections/impl/tree-map.js.map +0 -1
- package/dist/collections/impl/tree-set.d.ts +0 -112
- package/dist/collections/impl/tree-set.d.ts.map +0 -1
- package/dist/collections/impl/tree-set.js +0 -374
- package/dist/collections/impl/tree-set.js.map +0 -1
- package/dist/collections/index.d.ts +0 -105
- package/dist/collections/index.d.ts.map +0 -1
- package/dist/collections/index.js +0 -135
- package/dist/collections/index.js.map +0 -1
- package/dist/collections/interfaces/collection.d.ts +0 -119
- package/dist/collections/interfaces/collection.d.ts.map +0 -1
- package/dist/collections/interfaces/collection.js +0 -8
- package/dist/collections/interfaces/collection.js.map +0 -1
- package/dist/collections/interfaces/list.d.ts +0 -247
- package/dist/collections/interfaces/list.d.ts.map +0 -1
- package/dist/collections/interfaces/list.js +0 -8
- package/dist/collections/interfaces/list.js.map +0 -1
- package/dist/collections/interfaces/map.d.ts +0 -344
- package/dist/collections/interfaces/map.d.ts.map +0 -1
- package/dist/collections/interfaces/map.js +0 -8
- package/dist/collections/interfaces/map.js.map +0 -1
- package/dist/collections/interfaces/queue.d.ts +0 -304
- package/dist/collections/interfaces/queue.d.ts.map +0 -1
- package/dist/collections/interfaces/queue.js +0 -8
- package/dist/collections/interfaces/queue.js.map +0 -1
- package/dist/collections/interfaces/set.d.ts +0 -137
- package/dist/collections/interfaces/set.d.ts.map +0 -1
- package/dist/collections/interfaces/set.js +0 -8
- package/dist/collections/interfaces/set.js.map +0 -1
- package/dist/collections/storage/api.d.ts +0 -109
- package/dist/collections/storage/api.d.ts.map +0 -1
- package/dist/collections/storage/api.js +0 -182
- package/dist/collections/storage/api.js.map +0 -1
- package/dist/collections/storage/hybrid.d.ts +0 -164
- package/dist/collections/storage/hybrid.d.ts.map +0 -1
- package/dist/collections/storage/hybrid.js +0 -416
- package/dist/collections/storage/hybrid.js.map +0 -1
- package/dist/collections/storage/index.d.ts +0 -16
- package/dist/collections/storage/index.d.ts.map +0 -1
- package/dist/collections/storage/index.js +0 -13
- package/dist/collections/storage/index.js.map +0 -1
- package/dist/collections/storage/interface.d.ts +0 -141
- package/dist/collections/storage/interface.d.ts.map +0 -1
- package/dist/collections/storage/interface.js +0 -23
- package/dist/collections/storage/interface.js.map +0 -1
- package/dist/collections/storage/memory.d.ts +0 -68
- package/dist/collections/storage/memory.d.ts.map +0 -1
- package/dist/collections/storage/memory.js +0 -154
- package/dist/collections/storage/memory.js.map +0 -1
- package/dist/collections/utils/defaults.d.ts +0 -135
- package/dist/collections/utils/defaults.d.ts.map +0 -1
- package/dist/collections/utils/defaults.js +0 -322
- package/dist/collections/utils/defaults.js.map +0 -1
- package/dist/collections/utils/factories.d.ts +0 -144
- package/dist/collections/utils/factories.d.ts.map +0 -1
- package/dist/collections/utils/factories.js +0 -293
- package/dist/collections/utils/factories.js.map +0 -1
- package/dist/collections/utils/helpers.d.ts +0 -137
- package/dist/collections/utils/helpers.d.ts.map +0 -1
- package/dist/collections/utils/helpers.js +0 -221
- package/dist/collections/utils/helpers.js.map +0 -1
- package/dist/collections.d.ts +0 -12
- package/dist/collections.d.ts.map +0 -1
- package/dist/collections.js +0 -10
- package/dist/collections.js.map +0 -1
- package/dist/components/define.d.ts +0 -134
- package/dist/components/define.d.ts.map +0 -1
- package/dist/components/define.js +0 -486
- package/dist/components/define.js.map +0 -1
- package/dist/components/index.d.ts +0 -39
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -38
- package/dist/components/index.js.map +0 -1
- package/dist/components/types.d.ts +0 -264
- package/dist/components/types.d.ts.map +0 -1
- package/dist/components/types.js +0 -46
- package/dist/components/types.js.map +0 -1
- package/dist/procedures/storage/adapter.d.ts +0 -148
- package/dist/procedures/storage/adapter.d.ts.map +0 -1
- package/dist/procedures/storage/adapter.js +0 -214
- package/dist/procedures/storage/adapter.js.map +0 -1
- package/dist/procedures/storage/api.d.ts +0 -125
- package/dist/procedures/storage/api.d.ts.map +0 -1
- package/dist/procedures/storage/api.js +0 -220
- package/dist/procedures/storage/api.js.map +0 -1
- package/dist/procedures/storage/factory.d.ts +0 -134
- package/dist/procedures/storage/factory.d.ts.map +0 -1
- package/dist/procedures/storage/factory.js +0 -166
- package/dist/procedures/storage/factory.js.map +0 -1
- package/dist/procedures/storage/hybrid.d.ts +0 -193
- package/dist/procedures/storage/hybrid.d.ts.map +0 -1
- package/dist/procedures/storage/hybrid.js +0 -519
- package/dist/procedures/storage/hybrid.js.map +0 -1
- package/dist/procedures/storage/index.d.ts +0 -17
- package/dist/procedures/storage/index.d.ts.map +0 -1
- package/dist/procedures/storage/index.js +0 -17
- package/dist/procedures/storage/index.js.map +0 -1
- package/dist/procedures/storage/procedures.d.ts +0 -39
- package/dist/procedures/storage/procedures.d.ts.map +0 -1
- package/dist/procedures/storage/procedures.js +0 -261
- package/dist/procedures/storage/procedures.js.map +0 -1
- package/dist/procedures/storage/serialization.d.ts +0 -123
- package/dist/procedures/storage/serialization.d.ts.map +0 -1
- package/dist/procedures/storage/serialization.js +0 -216
- package/dist/procedures/storage/serialization.js.map +0 -1
- package/dist/procedures/storage/synced-registry.d.ts +0 -246
- package/dist/procedures/storage/synced-registry.d.ts.map +0 -1
- package/dist/procedures/storage/synced-registry.js +0 -575
- package/dist/procedures/storage/synced-registry.js.map +0 -1
- package/dist/procedures/storage/types.d.ts +0 -130
- package/dist/procedures/storage/types.d.ts.map +0 -1
- package/dist/procedures/storage/types.js +0 -8
- package/dist/procedures/storage/types.js.map +0 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invocation capabilities (packages/documentation/CAPABILITIES-2026-10.md).
|
|
3
|
+
*
|
|
4
|
+
* Each invocation operates with a capability: a clearance (the data that it can see), the
|
|
5
|
+
* effects that it can have, and a deadline. A nested call gets the same capability or a
|
|
6
|
+
* narrower one: `narrowCapability()` calculates it, so a request for more has no effect. Only
|
|
7
|
+
* the host makes a capability, from its authentication.
|
|
8
|
+
*
|
|
9
|
+
* A procedure declares its effects in `metadata.effects`. The admission (`capabilityRefusal()`)
|
|
10
|
+
* compares them with the permitted effects. It examines each call of a host, each nested call
|
|
11
|
+
* of a data-driven procedure (its caller chose the refs), and each nested call with a narrowed
|
|
12
|
+
* capability. A procedure of code that declares its effects answers for its own nested calls:
|
|
13
|
+
* `checkEffects()` examines those declarations against the call graph, as `metadata.calls`
|
|
14
|
+
* makes the reach of a procedure visible.
|
|
15
|
+
*/
|
|
16
|
+
import { pathToKey } from "./types.js";
|
|
17
|
+
import { isDataDriven } from "./ref.js";
|
|
18
|
+
import { callMatches } from "./policy.js";
|
|
19
|
+
/** The standard resource names. An application adds its own names. */
|
|
20
|
+
export const STANDARD_RESOURCES = ["fs", "network", "process", "registry"];
|
|
21
|
+
/**
|
|
22
|
+
* The metadata key of the remaining time of a remote call, in milliseconds. A server uses it
|
|
23
|
+
* only to make its deadline earlier.
|
|
24
|
+
*/
|
|
25
|
+
export const TIMEOUT_METADATA_KEY = "procedure-timeout";
|
|
26
|
+
/** The capability without limits: the capability of a host that sets none. */
|
|
27
|
+
export const UNLIMITED_CAPABILITY = Object.freeze({});
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Clearance orders
|
|
30
|
+
// =============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* This function gives the order of a ladder: each value is higher than the values before it.
|
|
33
|
+
* `ladder(["public", "shared", "private"])`.
|
|
34
|
+
*/
|
|
35
|
+
export function ladder(levels) {
|
|
36
|
+
const rank = (value) => {
|
|
37
|
+
const index = levels.indexOf(value);
|
|
38
|
+
if (index === -1)
|
|
39
|
+
throw new Error(`Not a clearance value of the ladder: ${String(value)}`);
|
|
40
|
+
return index;
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
leq: (a, b) => rank(a) <= rank(b),
|
|
44
|
+
meet: (a, b) => (rank(a) <= rank(b) ? a : b),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// =============================================================================
|
|
48
|
+
// Effects
|
|
49
|
+
// =============================================================================
|
|
50
|
+
/** The declared effects of a procedure, or undefined when it declares none. */
|
|
51
|
+
export function effectsOf(procedure) {
|
|
52
|
+
const effects = procedure.metadata?.effects;
|
|
53
|
+
return effects !== null && typeof effects === "object" ? effects : undefined;
|
|
54
|
+
}
|
|
55
|
+
/** True when the effects say that the procedure changes nothing (`writes: []`). */
|
|
56
|
+
export function isReadOnly(effects) {
|
|
57
|
+
return effects?.writes !== undefined && effects.writes.length === 0;
|
|
58
|
+
}
|
|
59
|
+
/** True when the procedure can delete or overwrite data. Not known: true (as in MCP). */
|
|
60
|
+
export function isDestructive(effects) {
|
|
61
|
+
if (isReadOnly(effects))
|
|
62
|
+
return false;
|
|
63
|
+
return effects?.destructive ?? true;
|
|
64
|
+
}
|
|
65
|
+
/** True when the procedure can reach systems outside the host. Not known: true (as in MCP). */
|
|
66
|
+
export function isOpenWorld(effects) {
|
|
67
|
+
if (effects?.reads === undefined || effects.writes === undefined)
|
|
68
|
+
return true;
|
|
69
|
+
return effects.reads.includes("network") || effects.writes.includes("network") || effects.writes.includes("process");
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The MCP hints of a procedure, from its declared effects. A procedure without a declaration,
|
|
73
|
+
* or a data-driven one (its operands decide what it does), gets no hints: then the MCP defaults
|
|
74
|
+
* apply (not read-only, destructive, open world).
|
|
75
|
+
*/
|
|
76
|
+
export function toolHints(procedure) {
|
|
77
|
+
const effects = effectsOf(procedure);
|
|
78
|
+
if (!effects || isDataDriven(procedure))
|
|
79
|
+
return {};
|
|
80
|
+
if (isReadOnly(effects)) {
|
|
81
|
+
return { readOnlyHint: true, openWorldHint: isOpenWorld(effects) };
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
readOnlyHint: false,
|
|
85
|
+
destructiveHint: isDestructive(effects),
|
|
86
|
+
idempotentHint: effects.idempotent ?? false,
|
|
87
|
+
openWorldHint: isOpenWorld(effects),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function intersect(current, requested) {
|
|
91
|
+
if (current === undefined || current === "any")
|
|
92
|
+
return requested ?? current;
|
|
93
|
+
if (requested === undefined || requested === "any")
|
|
94
|
+
return current;
|
|
95
|
+
return Object.freeze(current.filter((name) => requested.includes(name)));
|
|
96
|
+
}
|
|
97
|
+
function narrowEffects(current, requested) {
|
|
98
|
+
if (!requested)
|
|
99
|
+
return current;
|
|
100
|
+
const reads = intersect(current?.reads, requested.reads);
|
|
101
|
+
const writes = intersect(current?.writes, requested.writes);
|
|
102
|
+
const destructive = current?.destructive === false || requested.destructive === false ? false : undefined;
|
|
103
|
+
const result = {};
|
|
104
|
+
if (reads !== undefined)
|
|
105
|
+
result.reads = reads;
|
|
106
|
+
if (writes !== undefined)
|
|
107
|
+
result.writes = writes;
|
|
108
|
+
if (destructive !== undefined)
|
|
109
|
+
result.destructive = destructive;
|
|
110
|
+
return Object.freeze(result);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* This function gives the capability for a request: the same as `current`, or narrower. The
|
|
114
|
+
* clearance is the meet of the two values (a ladder: the lower one). The permitted effects are
|
|
115
|
+
* the intersection. The deadline is the earlier one. Two different clearances need an order.
|
|
116
|
+
*/
|
|
117
|
+
export function narrowCapability(current, request, order, now = Date.now()) {
|
|
118
|
+
const base = current ?? UNLIMITED_CAPABILITY;
|
|
119
|
+
if (!request)
|
|
120
|
+
return base;
|
|
121
|
+
const result = {};
|
|
122
|
+
if (request.clearance === undefined) {
|
|
123
|
+
if (base.clearance !== undefined)
|
|
124
|
+
result.clearance = base.clearance;
|
|
125
|
+
}
|
|
126
|
+
else if (base.clearance === undefined) {
|
|
127
|
+
result.clearance = request.clearance;
|
|
128
|
+
}
|
|
129
|
+
else if (Object.is(base.clearance, request.clearance)) {
|
|
130
|
+
result.clearance = base.clearance;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
if (!order) {
|
|
134
|
+
throw new Error("Two different clearances need a clearance order: give clearanceOrder to the host (hostPolicy)");
|
|
135
|
+
}
|
|
136
|
+
result.clearance = order.meet(base.clearance, request.clearance);
|
|
137
|
+
}
|
|
138
|
+
const effects = narrowEffects(base.effects, request.effects);
|
|
139
|
+
if (effects !== undefined)
|
|
140
|
+
result.effects = effects;
|
|
141
|
+
const requestedDeadline = request.timeoutMs !== undefined ? now + request.timeoutMs : undefined;
|
|
142
|
+
const deadline = base.deadline === undefined ? requestedDeadline : requestedDeadline === undefined ? base.deadline : Math.min(base.deadline, requestedDeadline);
|
|
143
|
+
if (deadline !== undefined)
|
|
144
|
+
result.deadline = deadline;
|
|
145
|
+
return Object.freeze(result);
|
|
146
|
+
}
|
|
147
|
+
const VERB = { reads: "reads", writes: "changes" };
|
|
148
|
+
/**
|
|
149
|
+
* This function gives the refusal of an invocation under a capability, or undefined when the
|
|
150
|
+
* capability permits it. It compares the declared effects with the permitted effects, and the
|
|
151
|
+
* time with the deadline. The clearance does not refuse an invocation: it limits the data.
|
|
152
|
+
*/
|
|
153
|
+
export function capabilityRefusal(procedure, capability, now = Date.now()) {
|
|
154
|
+
if (!capability)
|
|
155
|
+
return undefined;
|
|
156
|
+
const key = pathToKey(procedure.path);
|
|
157
|
+
if (capability.deadline !== undefined && now >= capability.deadline) {
|
|
158
|
+
return { reason: "deadline", message: `The deadline of the call passed before ${key} started` };
|
|
159
|
+
}
|
|
160
|
+
const permitted = capability.effects;
|
|
161
|
+
if (!permitted)
|
|
162
|
+
return undefined;
|
|
163
|
+
const effects = effectsOf(procedure);
|
|
164
|
+
for (const kind of ["reads", "writes"]) {
|
|
165
|
+
const allowed = permitted[kind];
|
|
166
|
+
if (allowed === undefined || allowed === "any")
|
|
167
|
+
continue;
|
|
168
|
+
const declared = effects?.[kind];
|
|
169
|
+
const limit = allowed.length > 0 ? `only ${allowed.join(", ")}` : "nothing";
|
|
170
|
+
if (declared === undefined) {
|
|
171
|
+
return {
|
|
172
|
+
reason: "effects-undeclared",
|
|
173
|
+
message: `${key} does not declare what it ${VERB[kind]}, and this call ${VERB[kind]} ${limit}`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
const extra = declared.filter((name) => !allowed.includes(name));
|
|
177
|
+
if (extra.length > 0) {
|
|
178
|
+
return {
|
|
179
|
+
reason: "effects-exceeded",
|
|
180
|
+
message: `${key} ${VERB[kind]} ${extra.join(", ")}, and this call ${VERB[kind]} ${limit}`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (permitted.destructive === false && isDestructive(effects)) {
|
|
185
|
+
return {
|
|
186
|
+
reason: "effects-exceeded",
|
|
187
|
+
message: `${key} can delete or overwrite data, and this call cannot start such a procedure`,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* True when the admission examines a nested call: the caller is data-driven (its caller chose
|
|
194
|
+
* the refs), the caller declares no effects, or the capability of the nested call is narrower
|
|
195
|
+
* than the capability of its caller. A procedure of code with declared effects answers for its
|
|
196
|
+
* own nested calls (`checkEffects()` examines them).
|
|
197
|
+
*/
|
|
198
|
+
export function examinesNestedCall(caller, callerCapability, capability) {
|
|
199
|
+
return isDataDriven(caller) || effectsOf(caller) === undefined || capability !== callerCapability;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* This function tells, without a call, if a host call of a path is permitted under a
|
|
203
|
+
* capability, and why. An application can show it to a user.
|
|
204
|
+
*/
|
|
205
|
+
export function explainInvocation(path, capability, registry, now = Date.now()) {
|
|
206
|
+
const procedure = registry.get(path);
|
|
207
|
+
if (!procedure)
|
|
208
|
+
return { permitted: false, reason: "not-found", message: `No procedure at ${pathToKey(path)}` };
|
|
209
|
+
const refusal = capabilityRefusal(procedure, capability, now);
|
|
210
|
+
if (refusal)
|
|
211
|
+
return { permitted: false, reason: refusal.reason, message: refusal.message };
|
|
212
|
+
return { permitted: true, message: `${pathToKey(path)} is permitted` };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* This function examines each procedure of code that declares its effects and its calls
|
|
216
|
+
* (`metadata.calls`). Its declaration must include the reads and the writes of each procedure
|
|
217
|
+
* that it calls: the resources are structural, so a caller cannot touch less than its callees.
|
|
218
|
+
*
|
|
219
|
+
* Two things are the caller's own claim, and the check does not compare them. A callee that
|
|
220
|
+
* writes `process` starts any program, and its caller declares what that program does. The
|
|
221
|
+
* flags `destructive` and `idempotent` depend on the input that the caller gives: `lib.new`
|
|
222
|
+
* creates new files with `fs.write`, which can overwrite. The effects snapshot of the MCP tools
|
|
223
|
+
* shows these claims in a review.
|
|
224
|
+
*/
|
|
225
|
+
export function checkEffects(procedures) {
|
|
226
|
+
const byKey = new Map(procedures.map((procedure) => [pathToKey(procedure.path), procedure]));
|
|
227
|
+
const violations = [];
|
|
228
|
+
for (const procedure of procedures) {
|
|
229
|
+
const own = effectsOf(procedure);
|
|
230
|
+
const calls = procedure.metadata?.calls;
|
|
231
|
+
if (!own || !Array.isArray(calls) || isDataDriven(procedure))
|
|
232
|
+
continue;
|
|
233
|
+
const key = pathToKey(procedure.path);
|
|
234
|
+
const callees = new Set();
|
|
235
|
+
for (const entry of calls) {
|
|
236
|
+
for (const candidate of byKey.keys())
|
|
237
|
+
if (callMatches(entry, candidate))
|
|
238
|
+
callees.add(candidate);
|
|
239
|
+
}
|
|
240
|
+
for (const calleeKey of [...callees].sort()) {
|
|
241
|
+
const callee = byKey.get(calleeKey);
|
|
242
|
+
const theirs = effectsOf(callee);
|
|
243
|
+
const report = (message) => {
|
|
244
|
+
violations.push({ path: procedure.path, callee: calleeKey, message: `${key} calls ${calleeKey}: ${message}` });
|
|
245
|
+
};
|
|
246
|
+
if (!theirs) {
|
|
247
|
+
report("the callee declares no effects");
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
for (const kind of ["reads", "writes"]) {
|
|
251
|
+
const mine = own[kind];
|
|
252
|
+
const needed = (theirs[kind] ?? []).filter((name) => name !== "process");
|
|
253
|
+
if (theirs[kind] === undefined) {
|
|
254
|
+
report(`the callee does not declare what it ${VERB[kind]}`);
|
|
255
|
+
}
|
|
256
|
+
else if (mine === undefined) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
const missing = needed.filter((name) => !mine.includes(name));
|
|
261
|
+
if (missing.length > 0)
|
|
262
|
+
report(`the declaration does not include ${missing.join(", ")} in ${kind}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return violations;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/procedures/capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,9 +31,9 @@ export interface DiscoveredPackage {
|
|
|
31
31
|
/**
|
|
32
32
|
* The specifier that imports the procedures file of a package. With an `exports` map, a bare
|
|
33
33
|
* `pkg/dist/register.js` import fails unless the map exports that path: the function looks for
|
|
34
|
-
* the subpath (also a `./*` pattern) whose target is the file
|
|
35
|
-
*
|
|
36
|
-
*
|
|
34
|
+
* the subpath (also a `./*` pattern) whose target is the file: for the packages of this
|
|
35
|
+
* repository, `./register`. When the map has none, it imports the package root. (Before, the
|
|
36
|
+
* generated import ignored the map, and failed: deep dive CORE-17.)
|
|
37
37
|
*
|
|
38
38
|
* @param name - Package name
|
|
39
39
|
* @param manifest - The package.json of the package
|
|
@@ -26,9 +26,9 @@ function exportTargets(value) {
|
|
|
26
26
|
/**
|
|
27
27
|
* The specifier that imports the procedures file of a package. With an `exports` map, a bare
|
|
28
28
|
* `pkg/dist/register.js` import fails unless the map exports that path: the function looks for
|
|
29
|
-
* the subpath (also a `./*` pattern) whose target is the file
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* the subpath (also a `./*` pattern) whose target is the file: for the packages of this
|
|
30
|
+
* repository, `./register`. When the map has none, it imports the package root. (Before, the
|
|
31
|
+
* generated import ignored the map, and failed: deep dive CORE-17.)
|
|
32
32
|
*
|
|
33
33
|
* @param name - Package name
|
|
34
34
|
* @param manifest - The package.json of the package
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - announce: Register this package's procedures (called from postinstall)
|
|
10
10
|
* - init: Initialize a new library with procedure support
|
|
11
11
|
*/
|
|
12
|
+
import { readFileSync } from "node:fs";
|
|
12
13
|
import { parseArgs } from "node:util";
|
|
13
14
|
import { discover } from "./discover.js";
|
|
14
15
|
import { init } from "./init.js";
|
|
@@ -130,12 +131,13 @@ How it works:
|
|
|
130
131
|
|
|
131
132
|
4. App runs "client-registry discover" to generate imports from the registry
|
|
132
133
|
|
|
133
|
-
For more information, visit: https://github.
|
|
134
|
+
For more information, visit: https://mark1russell7.github.io/client/
|
|
134
135
|
`);
|
|
135
136
|
}
|
|
136
137
|
function printVersion() {
|
|
137
|
-
//
|
|
138
|
-
|
|
138
|
+
// This file is dist/procedures/cli/index.js: the package.json is three folders up
|
|
139
|
+
const manifest = JSON.parse(readFileSync(new URL("../../../package.json", import.meta.url), "utf8"));
|
|
140
|
+
console.log(`client-registry v${manifest.version}`);
|
|
139
141
|
}
|
|
140
142
|
// =============================================================================
|
|
141
143
|
// Main
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/procedures/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAYrD,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,yBAAyB;IACzB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU,EAAE,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,+BAA+B,EAAE;oBAChF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;oBAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;oBACtD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;oBACtD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;iBACzD;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACvD,CAAC;QAED,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;iBACvD;gBACD,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnD,CAAC;QAED,KAAK,UAAU,EAAE,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;oBACxD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC/C;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACvD,CAAC;QAED,KAAK,YAAY,EAAE,CAAC;YAClB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;iBACzD;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACvD,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAE3D,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAE9D;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/procedures/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -215,7 +215,7 @@ npm install ${name}
|
|
|
215
215
|
|
|
216
216
|
## How It Works
|
|
217
217
|
|
|
218
|
-
This library
|
|
218
|
+
This library announces its procedures when installed:
|
|
219
219
|
|
|
220
220
|
1. The \`postinstall\` script runs \`client-registry announce\`
|
|
221
221
|
2. This writes to \`.client-registry.json\` at your project root
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../src/procedures/collection/procedures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAgElE;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../src/procedures/collection/procedures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAgElE;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,CA4KjF"}
|
|
@@ -46,6 +46,8 @@ function getStorage(ctx) {
|
|
|
46
46
|
*/
|
|
47
47
|
export function createCollectionProcedures(collectionName) {
|
|
48
48
|
const basePath = ["collections", collectionName];
|
|
49
|
+
// Each collection is a resource of its own (CAPABILITIES-2026-10): a capability can permit one
|
|
50
|
+
const resource = `collection:${collectionName}`;
|
|
49
51
|
return [
|
|
50
52
|
// Get
|
|
51
53
|
defineProcedure({
|
|
@@ -53,6 +55,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
53
55
|
input: getInputSchema,
|
|
54
56
|
output: getOutputSchema,
|
|
55
57
|
metadata: {
|
|
58
|
+
effects: { reads: [resource], writes: [] },
|
|
56
59
|
description: `Get item from ${collectionName} by ID`,
|
|
57
60
|
tags: ["collections", collectionName, "read"],
|
|
58
61
|
},
|
|
@@ -67,6 +70,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
67
70
|
input: setInputSchema,
|
|
68
71
|
output: setOutputSchema,
|
|
69
72
|
metadata: {
|
|
73
|
+
effects: { reads: [resource], writes: [resource], idempotent: true },
|
|
70
74
|
description: `Set item in ${collectionName}`,
|
|
71
75
|
tags: ["collections", collectionName, "write"],
|
|
72
76
|
},
|
|
@@ -81,6 +85,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
81
85
|
input: deleteInputSchema,
|
|
82
86
|
output: deleteOutputSchema,
|
|
83
87
|
metadata: {
|
|
88
|
+
effects: { reads: [resource], writes: [resource], idempotent: true },
|
|
84
89
|
description: `Delete item from ${collectionName}`,
|
|
85
90
|
tags: ["collections", collectionName, "write"],
|
|
86
91
|
},
|
|
@@ -95,6 +100,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
95
100
|
input: hasInputSchema,
|
|
96
101
|
output: hasOutputSchema,
|
|
97
102
|
metadata: {
|
|
103
|
+
effects: { reads: [resource], writes: [] },
|
|
98
104
|
description: `Check if item exists in ${collectionName}`,
|
|
99
105
|
tags: ["collections", collectionName, "read"],
|
|
100
106
|
},
|
|
@@ -109,6 +115,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
109
115
|
input: getAllInputSchema,
|
|
110
116
|
output: getAllOutputSchema,
|
|
111
117
|
metadata: {
|
|
118
|
+
effects: { reads: [resource], writes: [] },
|
|
112
119
|
description: `Get all items from ${collectionName}`,
|
|
113
120
|
tags: ["collections", collectionName, "read"],
|
|
114
121
|
},
|
|
@@ -123,6 +130,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
123
130
|
input: sizeInputSchema,
|
|
124
131
|
output: sizeOutputSchema,
|
|
125
132
|
metadata: {
|
|
133
|
+
effects: { reads: [resource], writes: [] },
|
|
126
134
|
description: `Get number of items in ${collectionName}`,
|
|
127
135
|
tags: ["collections", collectionName, "read"],
|
|
128
136
|
},
|
|
@@ -137,6 +145,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
137
145
|
input: clearInputSchema,
|
|
138
146
|
output: clearOutputSchema,
|
|
139
147
|
metadata: {
|
|
148
|
+
effects: { reads: [resource], writes: [resource], idempotent: true },
|
|
140
149
|
description: `Clear all items from ${collectionName}`,
|
|
141
150
|
tags: ["collections", collectionName, "write"],
|
|
142
151
|
},
|
|
@@ -151,6 +160,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
151
160
|
input: getBatchInputSchema,
|
|
152
161
|
output: getBatchOutputSchema,
|
|
153
162
|
metadata: {
|
|
163
|
+
effects: { reads: [resource], writes: [] },
|
|
154
164
|
description: `Get multiple items from ${collectionName}`,
|
|
155
165
|
tags: ["collections", collectionName, "read", "batch"],
|
|
156
166
|
},
|
|
@@ -167,6 +177,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
167
177
|
input: setBatchInputSchema,
|
|
168
178
|
output: setBatchOutputSchema,
|
|
169
179
|
metadata: {
|
|
180
|
+
effects: { reads: [resource], writes: [resource], idempotent: true },
|
|
170
181
|
description: `Set multiple items in ${collectionName}`,
|
|
171
182
|
tags: ["collections", collectionName, "write", "batch"],
|
|
172
183
|
},
|
|
@@ -185,6 +196,7 @@ export function createCollectionProcedures(collectionName) {
|
|
|
185
196
|
input: deleteBatchInputSchema,
|
|
186
197
|
output: deleteBatchOutputSchema,
|
|
187
198
|
metadata: {
|
|
199
|
+
effects: { reads: [resource], writes: [resource], idempotent: true },
|
|
188
200
|
description: `Delete multiple items from ${collectionName}`,
|
|
189
201
|
tags: ["collections", collectionName, "write", "batch"],
|
|
190
202
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../../src/procedures/collection/procedures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,GAWxB,MAAM,cAAc,CAAC;AAEtB,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAI,GAAqB;IAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,CAAI,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,gFAAgF;AAChF,mCAAmC;AACnC,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CAAC,cAAsB;IAC/D,MAAM,QAAQ,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../../src/procedures/collection/procedures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/procedures/core/array.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/procedures/core/array.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
import { anyOutput, arrayOutput, booleanOutput, numberOutput } from "./outputs.js";
|
|
9
9
|
import { defineProcedure, namespace } from "../define.js";
|
|
10
|
+
import { PURE_EFFECTS, withEffects } from "../effects.js";
|
|
10
11
|
const FirstInputSchema = z.object({
|
|
11
12
|
items: z.array(z.unknown()).describe("The array"),
|
|
12
13
|
});
|
|
@@ -612,7 +613,8 @@ const arrayProceduresRaw = [
|
|
|
612
613
|
/**
|
|
613
614
|
* All array procedures namespaced under "client".
|
|
614
615
|
*/
|
|
615
|
-
|
|
616
|
+
// Each one calculates its output from its input: no reads, no changes (CAPABILITIES-2026-10)
|
|
617
|
+
export const arrayProcedures = namespace(["client"], withEffects(PURE_EFFECTS, arrayProceduresRaw));
|
|
616
618
|
/**
|
|
617
619
|
* Array procedures module for registration.
|
|
618
620
|
*/
|