@cotal-ai/core 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acls.d.ts +21 -0
- package/dist/acls.d.ts.map +1 -1
- package/dist/acls.js +75 -12
- package/dist/acls.js.map +1 -1
- package/dist/artifact.d.ts +45 -0
- package/dist/artifact.d.ts.map +1 -0
- package/dist/artifact.js +82 -0
- package/dist/artifact.js.map +1 -0
- package/dist/backup-config.d.ts +9 -2
- package/dist/backup-config.d.ts.map +1 -1
- package/dist/backup-config.js +6 -2
- package/dist/backup-config.js.map +1 -1
- package/dist/broker-tls.d.ts +70 -0
- package/dist/broker-tls.d.ts.map +1 -0
- package/dist/broker-tls.js +195 -0
- package/dist/broker-tls.js.map +1 -0
- package/dist/canonical.d.ts +14 -1
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +21 -1
- package/dist/canonical.js.map +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +18 -9
- package/dist/channels.js.map +1 -1
- package/dist/endpoint-action.d.ts +108 -3
- package/dist/endpoint-action.d.ts.map +1 -1
- package/dist/endpoint-action.js +209 -20
- package/dist/endpoint-action.js.map +1 -1
- package/dist/endpoint-binding.d.ts +138 -8
- package/dist/endpoint-binding.d.ts.map +1 -1
- package/dist/endpoint-binding.js +233 -26
- package/dist/endpoint-binding.js.map +1 -1
- package/dist/endpoint-contract-store.d.ts +24 -1
- package/dist/endpoint-contract-store.d.ts.map +1 -1
- package/dist/endpoint-contract-store.js +79 -27
- package/dist/endpoint-contract-store.js.map +1 -1
- package/dist/endpoint-envelope.d.ts +15 -37
- package/dist/endpoint-envelope.d.ts.map +1 -1
- package/dist/endpoint-envelope.js +93 -44
- package/dist/endpoint-envelope.js.map +1 -1
- package/dist/endpoint-error.d.ts +33 -0
- package/dist/endpoint-error.d.ts.map +1 -0
- package/dist/endpoint-error.js +34 -0
- package/dist/endpoint-error.js.map +1 -0
- package/dist/endpoint-grants.d.ts +48 -7
- package/dist/endpoint-grants.d.ts.map +1 -1
- package/dist/endpoint-grants.js +97 -9
- package/dist/endpoint-grants.js.map +1 -1
- package/dist/endpoint-invoke.d.ts +138 -0
- package/dist/endpoint-invoke.d.ts.map +1 -0
- package/dist/endpoint-invoke.js +340 -0
- package/dist/endpoint-invoke.js.map +1 -0
- package/dist/endpoint-records.d.ts.map +1 -1
- package/dist/endpoint-records.js +17 -0
- package/dist/endpoint-records.js.map +1 -1
- package/dist/endpoint-serve-kv.d.ts +97 -0
- package/dist/endpoint-serve-kv.d.ts.map +1 -0
- package/dist/endpoint-serve-kv.js +336 -0
- package/dist/endpoint-serve-kv.js.map +1 -0
- package/dist/endpoint-serve.d.ts.map +1 -1
- package/dist/endpoint-serve.js +21 -1
- package/dist/endpoint-serve.js.map +1 -1
- package/dist/endpoint-service.d.ts +1 -1
- package/dist/endpoint-service.d.ts.map +1 -1
- package/dist/endpoint-service.js +34 -10
- package/dist/endpoint-service.js.map +1 -1
- package/dist/endpoint-session-rail.d.ts +127 -0
- package/dist/endpoint-session-rail.d.ts.map +1 -0
- package/dist/endpoint-session-rail.js +325 -0
- package/dist/endpoint-session-rail.js.map +1 -0
- package/dist/endpoint-session.d.ts +1 -115
- package/dist/endpoint-session.d.ts.map +1 -1
- package/dist/endpoint-session.js +4 -316
- package/dist/endpoint-session.js.map +1 -1
- package/dist/endpoint-subjects.d.ts +10 -1
- package/dist/endpoint-subjects.d.ts.map +1 -1
- package/dist/endpoint-subjects.js +10 -1
- package/dist/endpoint-subjects.js.map +1 -1
- package/dist/endpoint-verbs.d.ts +1 -2
- package/dist/endpoint-verbs.d.ts.map +1 -1
- package/dist/endpoint-verbs.js +6 -6
- package/dist/endpoint-verbs.js.map +1 -1
- package/dist/endpoint.d.ts +169 -15
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +491 -43
- package/dist/endpoint.js.map +1 -1
- package/dist/identity.d.ts +19 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +12 -0
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/kv-scan.d.ts +105 -0
- package/dist/kv-scan.d.ts.map +1 -0
- package/dist/kv-scan.js +192 -0
- package/dist/kv-scan.js.map +1 -0
- package/dist/lease.d.ts +12 -5
- package/dist/lease.d.ts.map +1 -1
- package/dist/lease.js.map +1 -1
- package/dist/lifecycle-saga.d.ts +174 -0
- package/dist/lifecycle-saga.d.ts.map +1 -0
- package/dist/lifecycle-saga.js +418 -0
- package/dist/lifecycle-saga.js.map +1 -0
- package/dist/lifecycle-state.d.ts +202 -0
- package/dist/lifecycle-state.d.ts.map +1 -0
- package/dist/lifecycle-state.js +347 -0
- package/dist/lifecycle-state.js.map +1 -0
- package/dist/members.d.ts +8 -4
- package/dist/members.d.ts.map +1 -1
- package/dist/members.js +19 -9
- package/dist/members.js.map +1 -1
- package/dist/parts.d.ts +13 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +17 -0
- package/dist/parts.js.map +1 -0
- package/dist/provision.d.ts +106 -9
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +506 -110
- package/dist/provision.js.map +1 -1
- package/dist/schema-profile.d.ts +3 -2
- package/dist/schema-profile.d.ts.map +1 -1
- package/dist/schema-profile.js +242 -18
- package/dist/schema-profile.js.map +1 -1
- package/dist/session-browser.d.ts +15 -0
- package/dist/session-browser.d.ts.map +1 -0
- package/dist/session-browser.js +14 -0
- package/dist/session-browser.js.map +1 -0
- package/dist/session-terminal-frames.d.ts +36 -0
- package/dist/session-terminal-frames.d.ts.map +1 -0
- package/dist/session-terminal-frames.js +149 -0
- package/dist/session-terminal-frames.js.map +1 -0
- package/dist/spaces.d.ts.map +1 -1
- package/dist/spaces.js +6 -1
- package/dist/spaces.js.map +1 -1
- package/dist/streams.d.ts +53 -1
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +135 -8
- package/dist/streams.js.map +1 -1
- package/dist/subjects.d.ts +32 -26
- package/dist/subjects.d.ts.map +1 -1
- package/dist/subjects.js +38 -25
- package/dist/subjects.js.map +1 -1
- package/dist/types.d.ts +27 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -1
package/dist/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,19 +4,24 @@ export * from "./endpoint-subjects.js";
|
|
|
4
4
|
export * from "./endpoint-grants.js";
|
|
5
5
|
export * from "./endpoint-envelope.js";
|
|
6
6
|
export * from "./endpoint-records.js";
|
|
7
|
+
export * from "./lifecycle-state.js";
|
|
8
|
+
export * from "./lifecycle-saga.js";
|
|
7
9
|
export * from "./endpoint-cluster.js";
|
|
8
10
|
export * from "./endpoint-journal.js";
|
|
9
11
|
export * from "./endpoint-binding.js";
|
|
10
12
|
export * from "./endpoint-service.js";
|
|
11
13
|
export * from "./endpoint-serve.js";
|
|
12
14
|
export * from "./endpoint-verbs.js";
|
|
15
|
+
export * from "./endpoint-invoke.js";
|
|
13
16
|
export * from "./endpoint-work.js";
|
|
14
17
|
export * from "./endpoint-action.js";
|
|
15
18
|
export * from "./endpoint-checkpoint.js";
|
|
16
19
|
export * from "./endpoint-contract-store.js";
|
|
20
|
+
export * from "./endpoint-serve-kv.js";
|
|
17
21
|
export * from "./endpoint-guard.js";
|
|
18
22
|
export * from "./endpoint-handle.js";
|
|
19
23
|
export * from "./endpoint-session.js";
|
|
24
|
+
export * from "./session-terminal-frames.js";
|
|
20
25
|
export * from "./endpoint-virtual.js";
|
|
21
26
|
export * from "./endpoint-receipt.js";
|
|
22
27
|
export * from "./endpoint-signing.js";
|
|
@@ -42,6 +47,7 @@ export * from "./launch.js";
|
|
|
42
47
|
export * from "./fs-safe.js";
|
|
43
48
|
export * from "./secret-fs.js";
|
|
44
49
|
export * from "./connector-config.js";
|
|
50
|
+
export * from "./kv-scan.js";
|
|
45
51
|
export * from "./endpoint.js";
|
|
46
52
|
export * from "./spaces.js";
|
|
47
53
|
export * from "./connector.js";
|
|
@@ -51,6 +57,9 @@ export * from "./terminal.js";
|
|
|
51
57
|
export * from "./registry.js";
|
|
52
58
|
export * from "./auth-provider.js";
|
|
53
59
|
export * from "./canonical.js";
|
|
60
|
+
export * from "./artifact.js";
|
|
61
|
+
export * from "./parts.js";
|
|
54
62
|
export * from "./schema-profile.js";
|
|
55
63
|
export * from "./broker-floor.js";
|
|
64
|
+
export * from "./broker-tls.js";
|
|
56
65
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,19 +4,24 @@ export * from "./endpoint-subjects.js";
|
|
|
4
4
|
export * from "./endpoint-grants.js";
|
|
5
5
|
export * from "./endpoint-envelope.js";
|
|
6
6
|
export * from "./endpoint-records.js";
|
|
7
|
+
export * from "./lifecycle-state.js";
|
|
8
|
+
export * from "./lifecycle-saga.js";
|
|
7
9
|
export * from "./endpoint-cluster.js";
|
|
8
10
|
export * from "./endpoint-journal.js";
|
|
9
11
|
export * from "./endpoint-binding.js";
|
|
10
12
|
export * from "./endpoint-service.js";
|
|
11
13
|
export * from "./endpoint-serve.js";
|
|
12
14
|
export * from "./endpoint-verbs.js";
|
|
15
|
+
export * from "./endpoint-invoke.js";
|
|
13
16
|
export * from "./endpoint-work.js";
|
|
14
17
|
export * from "./endpoint-action.js";
|
|
15
18
|
export * from "./endpoint-checkpoint.js";
|
|
16
19
|
export * from "./endpoint-contract-store.js";
|
|
20
|
+
export * from "./endpoint-serve-kv.js";
|
|
17
21
|
export * from "./endpoint-guard.js";
|
|
18
22
|
export * from "./endpoint-handle.js";
|
|
19
23
|
export * from "./endpoint-session.js";
|
|
24
|
+
export * from "./session-terminal-frames.js";
|
|
20
25
|
export * from "./endpoint-virtual.js";
|
|
21
26
|
export * from "./endpoint-receipt.js";
|
|
22
27
|
export * from "./endpoint-signing.js";
|
|
@@ -42,6 +47,7 @@ export * from "./launch.js";
|
|
|
42
47
|
export * from "./fs-safe.js";
|
|
43
48
|
export * from "./secret-fs.js";
|
|
44
49
|
export * from "./connector-config.js";
|
|
50
|
+
export * from "./kv-scan.js";
|
|
45
51
|
export * from "./endpoint.js";
|
|
46
52
|
export * from "./spaces.js";
|
|
47
53
|
export * from "./connector.js";
|
|
@@ -51,6 +57,9 @@ export * from "./terminal.js";
|
|
|
51
57
|
export * from "./registry.js";
|
|
52
58
|
export * from "./auth-provider.js";
|
|
53
59
|
export * from "./canonical.js";
|
|
60
|
+
export * from "./artifact.js";
|
|
61
|
+
export * from "./parts.js";
|
|
54
62
|
export * from "./schema-profile.js";
|
|
55
63
|
export * from "./broker-floor.js";
|
|
64
|
+
export * from "./broker-tls.js";
|
|
56
65
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { KV, KvEntry } from "@nats-io/kv";
|
|
2
|
+
/**
|
|
3
|
+
* The ONE sanctioned way to read every live entry of a KV bucket.
|
|
4
|
+
*
|
|
5
|
+
* ## Why this exists
|
|
6
|
+
*
|
|
7
|
+
* Four call sites independently open-coded a whole-bucket read. `readMembership` had the worst
|
|
8
|
+
* shape: enumerate keys, then fetch each key's value. `kv.keys()` is one ordered-consumer pass, but
|
|
9
|
+
* every yielded key then costs a separate `STREAM.MSG.GET` round trip, sequentially. That is O(N)
|
|
10
|
+
* round trips to read N records. It is invisible against a loopback broker and catastrophic anywhere
|
|
11
|
+
* else: 89 membership keys measured 30-34 seconds against a mesh at 534ms RTT, where a single pass is
|
|
12
|
+
* ~3 round trips regardless of N.
|
|
13
|
+
*
|
|
14
|
+
* The other three were already close to a single pass; what they gained is the completeness
|
|
15
|
+
* guarantee below, which none of them had.
|
|
16
|
+
*
|
|
17
|
+
* Fixing the call sites one at a time guarantees a fifth, so no call site may open-code this. That is
|
|
18
|
+
* currently a CONVENTION, not an enforced rule: nothing in the build rejects a new `keys()`-then-
|
|
19
|
+
* `get()` loop.
|
|
20
|
+
*
|
|
21
|
+
* ## Why it owns the pass instead of wrapping `kv.history()`
|
|
22
|
+
*
|
|
23
|
+
* `kv.history()` would deliver values in one pass, but its public iterator does not expose the
|
|
24
|
+
* consumer's `num_pending`. Without it, a caller cannot distinguish an EMPTY bucket from a pass that
|
|
25
|
+
* died before its first message — both arrive as zero entries and a clean end. For membership and
|
|
26
|
+
* ACL reads that ambiguity produces a confident empty set, which is worse than a short one because
|
|
27
|
+
* nothing about it looks wrong.
|
|
28
|
+
*
|
|
29
|
+
* ## What the completeness check guarantees
|
|
30
|
+
*
|
|
31
|
+
* In `@nats-io/kv`, `iter.closed().then(...)` ends an iterator CLEANLY on any mid-stream
|
|
32
|
+
* termination: a dropped connection, a deleted consumer, a server error. Nothing throws. On exactly
|
|
33
|
+
* the high-latency, jittery links this helper exists to serve, a silently truncated read would
|
|
34
|
+
* otherwise be the default failure mode.
|
|
35
|
+
*
|
|
36
|
+
* MEASURED, not inferred. Against `@nats-io/kv` 3.4.0 and a real broker, with the link destroyed
|
|
37
|
+
* mid-delivery through a TCP proxy: `history()` on a bucket of 1500 records returned 20 of them,
|
|
38
|
+
* threw nothing, and ended its iterator exactly as a complete read does. Reported upstream as
|
|
39
|
+
* https://github.com/nats-io/nats.js/issues/426. If that is fixed, this can go back to the public
|
|
40
|
+
* API and drop the `@nats-io/kv/internal` import below; until then the import is load-bearing,
|
|
41
|
+
* because `history()` cannot express the difference between a short answer and a wrong one.
|
|
42
|
+
* Re-run that check on any client bump rather than assuming the behaviour still holds.
|
|
43
|
+
*
|
|
44
|
+
* Because the pass is bound here, both halves are decidable:
|
|
45
|
+
* - EMPTY is proven, not inferred. `num_pending` is read at bind, before any delivery, so an empty
|
|
46
|
+
* result means the bucket (or the filtered subset) really had nothing — never that the pass died
|
|
47
|
+
* before its first message. That distinction is why this does not wrap `history()`, which hides
|
|
48
|
+
* the count: read through that, a dropped link during a filtered ACL scan reported a provisioned
|
|
49
|
+
* principal as having no row, and a durable join was refused as "not provisioned".
|
|
50
|
+
* - COMPLETE means a delivered message reported nothing behind it. An idle heartbeat is NOT
|
|
51
|
+
* accepted as completion, unlike `history()`, whose "a heartbeat means we got all the keys"
|
|
52
|
+
* shortcut is how a stalled pass returns a short list wearing a clean end.
|
|
53
|
+
*
|
|
54
|
+
* Anything else raises {@link IncompleteKvScan}. Treat it as retryable: it says this read did not
|
|
55
|
+
* finish, never that data was lost.
|
|
56
|
+
*
|
|
57
|
+
* ## Why tombstones are carried through the collapse
|
|
58
|
+
*
|
|
59
|
+
* Filtering DEL/PURGE markers DURING iteration resurrects deleted keys: if a key's PUT is delivered
|
|
60
|
+
* and its later DEL is skipped, the stale PUT survives as the "latest". So the collapse keeps
|
|
61
|
+
* markers, picks the greatest revision per key, and only then drops keys whose final state is a
|
|
62
|
+
* marker.
|
|
63
|
+
*
|
|
64
|
+
* This is required for CONCURRENCY, not merely for misconfigured buckets. `DeliverPolicy.All` chases
|
|
65
|
+
* a moving tail, so a key rewritten while the pass drains legitimately appears at two revisions even
|
|
66
|
+
* on a `history: 1` bucket.
|
|
67
|
+
*
|
|
68
|
+
* ## What it deliberately does NOT do
|
|
69
|
+
*
|
|
70
|
+
* It never asserts `status().history === 1`. Greatest-revision-with-tombstones is correct for every
|
|
71
|
+
* `history >= 1`, so a drifted bucket is read correctly rather than refused; throwing on a read
|
|
72
|
+
* because PROVISIONING drifted would turn a bucket-config problem into a mesh-wide outage. Bucket
|
|
73
|
+
* reconcile is a privileged setup concern and needs `STREAM.UPDATE`, which read credentials do not
|
|
74
|
+
* have and must not be given.
|
|
75
|
+
*
|
|
76
|
+
* ## Grant
|
|
77
|
+
*
|
|
78
|
+
* Same broker authority as the `keys()` + `get()` pair it replaces: one ordered/push consumer over
|
|
79
|
+
* `$KV.<bucket>.>`, differing only in `deliver_policy`. Values are not new authority — the existing
|
|
80
|
+
* `keys()` consumer grant could already request bodies. No ACL widening anywhere.
|
|
81
|
+
*/
|
|
82
|
+
/** Thrown when a pass ends without reaching its terminal message. The caller decides whether to
|
|
83
|
+
* retry or surface it; what it may NOT do is treat the partial set as the answer. */
|
|
84
|
+
export declare class IncompleteKvScan extends Error {
|
|
85
|
+
readonly bucket: string;
|
|
86
|
+
readonly received: number;
|
|
87
|
+
readonly expected: number;
|
|
88
|
+
constructor(bucket: string, received: number, expected: number);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Every currently-live entry of `kv`, in ONE pass, with values.
|
|
92
|
+
*
|
|
93
|
+
* `filter` narrows the scan to matching keys (NATS subject wildcards), for callers that scan a
|
|
94
|
+
* key prefix rather than the whole bucket. Returns entries whose final operation is a real value;
|
|
95
|
+
* deleted and purged keys are absent.
|
|
96
|
+
*
|
|
97
|
+
* Throws {@link IncompleteKvScan} if the pass is cut short. Returns `[]` for a bucket that is
|
|
98
|
+
* genuinely empty (proven at bind time, not inferred from silence).
|
|
99
|
+
*/
|
|
100
|
+
export declare function liveKvEntries(kv: KV, filter?: string | string[]): Promise<KvEntry[]>;
|
|
101
|
+
/** {@link liveKvEntries}, decoded. `decode` returning `undefined` drops the entry — for callers that
|
|
102
|
+
* skip garbled records rather than failing the whole read (the prevailing convention in the
|
|
103
|
+
* registries: one unparseable row must not blind the surface to every other row). */
|
|
104
|
+
export declare function liveKvValues<T>(kv: KV, decode: (e: KvEntry) => T | undefined, filter?: string | string[]): Promise<T[]>;
|
|
105
|
+
//# sourceMappingURL=kv-scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv-scan.d.ts","sourceRoot":"","sources":["../src/kv-scan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AAEH;sFACsF;AACtF,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAFhB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CAO5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAoE1F;AAED;;sFAEsF;AACtF,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,GAAG,SAAS,EACrC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAOd"}
|
package/dist/kv-scan.js
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Bucket, KvWatchInclude } from "@nats-io/kv/internal";
|
|
2
|
+
/**
|
|
3
|
+
* The ONE sanctioned way to read every live entry of a KV bucket.
|
|
4
|
+
*
|
|
5
|
+
* ## Why this exists
|
|
6
|
+
*
|
|
7
|
+
* Four call sites independently open-coded a whole-bucket read. `readMembership` had the worst
|
|
8
|
+
* shape: enumerate keys, then fetch each key's value. `kv.keys()` is one ordered-consumer pass, but
|
|
9
|
+
* every yielded key then costs a separate `STREAM.MSG.GET` round trip, sequentially. That is O(N)
|
|
10
|
+
* round trips to read N records. It is invisible against a loopback broker and catastrophic anywhere
|
|
11
|
+
* else: 89 membership keys measured 30-34 seconds against a mesh at 534ms RTT, where a single pass is
|
|
12
|
+
* ~3 round trips regardless of N.
|
|
13
|
+
*
|
|
14
|
+
* The other three were already close to a single pass; what they gained is the completeness
|
|
15
|
+
* guarantee below, which none of them had.
|
|
16
|
+
*
|
|
17
|
+
* Fixing the call sites one at a time guarantees a fifth, so no call site may open-code this. That is
|
|
18
|
+
* currently a CONVENTION, not an enforced rule: nothing in the build rejects a new `keys()`-then-
|
|
19
|
+
* `get()` loop.
|
|
20
|
+
*
|
|
21
|
+
* ## Why it owns the pass instead of wrapping `kv.history()`
|
|
22
|
+
*
|
|
23
|
+
* `kv.history()` would deliver values in one pass, but its public iterator does not expose the
|
|
24
|
+
* consumer's `num_pending`. Without it, a caller cannot distinguish an EMPTY bucket from a pass that
|
|
25
|
+
* died before its first message — both arrive as zero entries and a clean end. For membership and
|
|
26
|
+
* ACL reads that ambiguity produces a confident empty set, which is worse than a short one because
|
|
27
|
+
* nothing about it looks wrong.
|
|
28
|
+
*
|
|
29
|
+
* ## What the completeness check guarantees
|
|
30
|
+
*
|
|
31
|
+
* In `@nats-io/kv`, `iter.closed().then(...)` ends an iterator CLEANLY on any mid-stream
|
|
32
|
+
* termination: a dropped connection, a deleted consumer, a server error. Nothing throws. On exactly
|
|
33
|
+
* the high-latency, jittery links this helper exists to serve, a silently truncated read would
|
|
34
|
+
* otherwise be the default failure mode.
|
|
35
|
+
*
|
|
36
|
+
* MEASURED, not inferred. Against `@nats-io/kv` 3.4.0 and a real broker, with the link destroyed
|
|
37
|
+
* mid-delivery through a TCP proxy: `history()` on a bucket of 1500 records returned 20 of them,
|
|
38
|
+
* threw nothing, and ended its iterator exactly as a complete read does. Reported upstream as
|
|
39
|
+
* https://github.com/nats-io/nats.js/issues/426. If that is fixed, this can go back to the public
|
|
40
|
+
* API and drop the `@nats-io/kv/internal` import below; until then the import is load-bearing,
|
|
41
|
+
* because `history()` cannot express the difference between a short answer and a wrong one.
|
|
42
|
+
* Re-run that check on any client bump rather than assuming the behaviour still holds.
|
|
43
|
+
*
|
|
44
|
+
* Because the pass is bound here, both halves are decidable:
|
|
45
|
+
* - EMPTY is proven, not inferred. `num_pending` is read at bind, before any delivery, so an empty
|
|
46
|
+
* result means the bucket (or the filtered subset) really had nothing — never that the pass died
|
|
47
|
+
* before its first message. That distinction is why this does not wrap `history()`, which hides
|
|
48
|
+
* the count: read through that, a dropped link during a filtered ACL scan reported a provisioned
|
|
49
|
+
* principal as having no row, and a durable join was refused as "not provisioned".
|
|
50
|
+
* - COMPLETE means a delivered message reported nothing behind it. An idle heartbeat is NOT
|
|
51
|
+
* accepted as completion, unlike `history()`, whose "a heartbeat means we got all the keys"
|
|
52
|
+
* shortcut is how a stalled pass returns a short list wearing a clean end.
|
|
53
|
+
*
|
|
54
|
+
* Anything else raises {@link IncompleteKvScan}. Treat it as retryable: it says this read did not
|
|
55
|
+
* finish, never that data was lost.
|
|
56
|
+
*
|
|
57
|
+
* ## Why tombstones are carried through the collapse
|
|
58
|
+
*
|
|
59
|
+
* Filtering DEL/PURGE markers DURING iteration resurrects deleted keys: if a key's PUT is delivered
|
|
60
|
+
* and its later DEL is skipped, the stale PUT survives as the "latest". So the collapse keeps
|
|
61
|
+
* markers, picks the greatest revision per key, and only then drops keys whose final state is a
|
|
62
|
+
* marker.
|
|
63
|
+
*
|
|
64
|
+
* This is required for CONCURRENCY, not merely for misconfigured buckets. `DeliverPolicy.All` chases
|
|
65
|
+
* a moving tail, so a key rewritten while the pass drains legitimately appears at two revisions even
|
|
66
|
+
* on a `history: 1` bucket.
|
|
67
|
+
*
|
|
68
|
+
* ## What it deliberately does NOT do
|
|
69
|
+
*
|
|
70
|
+
* It never asserts `status().history === 1`. Greatest-revision-with-tombstones is correct for every
|
|
71
|
+
* `history >= 1`, so a drifted bucket is read correctly rather than refused; throwing on a read
|
|
72
|
+
* because PROVISIONING drifted would turn a bucket-config problem into a mesh-wide outage. Bucket
|
|
73
|
+
* reconcile is a privileged setup concern and needs `STREAM.UPDATE`, which read credentials do not
|
|
74
|
+
* have and must not be given.
|
|
75
|
+
*
|
|
76
|
+
* ## Grant
|
|
77
|
+
*
|
|
78
|
+
* Same broker authority as the `keys()` + `get()` pair it replaces: one ordered/push consumer over
|
|
79
|
+
* `$KV.<bucket>.>`, differing only in `deliver_policy`. Values are not new authority — the existing
|
|
80
|
+
* `keys()` consumer grant could already request bodies. No ACL widening anywhere.
|
|
81
|
+
*/
|
|
82
|
+
/** Thrown when a pass ends without reaching its terminal message. The caller decides whether to
|
|
83
|
+
* retry or surface it; what it may NOT do is treat the partial set as the answer. */
|
|
84
|
+
export class IncompleteKvScan extends Error {
|
|
85
|
+
bucket;
|
|
86
|
+
received;
|
|
87
|
+
expected;
|
|
88
|
+
constructor(bucket, received, expected) {
|
|
89
|
+
super(`reading ${bucket} ended after ${received} of ~${expected} entries without reaching the end of the bucket - the connection or consumer died mid-pass. Refusing to return a partial view (a short or empty result here is indistinguishable from a real answer). Retry; if it persists, the link to the broker is dropping.`);
|
|
90
|
+
this.bucket = bucket;
|
|
91
|
+
this.received = received;
|
|
92
|
+
this.expected = expected;
|
|
93
|
+
this.name = "IncompleteKvScan";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Every currently-live entry of `kv`, in ONE pass, with values.
|
|
98
|
+
*
|
|
99
|
+
* `filter` narrows the scan to matching keys (NATS subject wildcards), for callers that scan a
|
|
100
|
+
* key prefix rather than the whole bucket. Returns entries whose final operation is a real value;
|
|
101
|
+
* deleted and purged keys are absent.
|
|
102
|
+
*
|
|
103
|
+
* Throws {@link IncompleteKvScan} if the pass is cut short. Returns `[]` for a bucket that is
|
|
104
|
+
* genuinely empty (proven at bind time, not inferred from silence).
|
|
105
|
+
*/
|
|
106
|
+
export async function liveKvEntries(kv, filter) {
|
|
107
|
+
// OWN THE PASS. This deliberately does NOT call `kv.history()`. That helper hides the consumer's
|
|
108
|
+
// bind-time `num_pending`, and without it an empty result is ambiguous: a genuinely empty bucket
|
|
109
|
+
// and a pass that died before its first message look identical. For a FILTERED scan that ambiguity
|
|
110
|
+
// is not academic — `enumerateLiveAclRows` reads this way, so a dropped link mid-scan would report
|
|
111
|
+
// a provisioned principal as having no ACL row at all, and `deliveryJoin` would refuse the join as
|
|
112
|
+
// "not provisioned" rather than as "could not read". A wrong reason on an authorization path.
|
|
113
|
+
//
|
|
114
|
+
// The pinned client exposes what is needed through its `@nats-io/kv/internal` entry point: the
|
|
115
|
+
// `Bucket` implementation carries the JetStream client, the stream name, the consumer-config
|
|
116
|
+
// builder the public watchers use, and the entry decoder. Binding through those keeps this on
|
|
117
|
+
// EXACTLY the ordered push consumer over `$KV.<bucket>.>` that `keys()` and `history()` already
|
|
118
|
+
// use — same subject, same verbs, no new broker authority.
|
|
119
|
+
if (!(kv instanceof Bucket))
|
|
120
|
+
throw new Error(`liveKvEntries needs the @nats-io/kv Bucket implementation to bind its own consumer (got ${kv?.constructor?.name ?? typeof kv}). Refusing to fall back to history(), whose hidden bind-time pending count is exactly the ambiguity this exists to remove.`);
|
|
121
|
+
const bucket = kv;
|
|
122
|
+
const cc = bucket._buildCC(filter ?? ">", KvWatchInclude.AllHistory, { headers_only: false });
|
|
123
|
+
const oc = await bucket.js.consumers.getPushConsumer(bucket.stream, cc);
|
|
124
|
+
// THE BIND-TIME PROOF: `num_pending` is how many messages this consumer will deliver, read before
|
|
125
|
+
// a single one arrives. Zero means the bucket (or the filtered subset) really is empty; it is
|
|
126
|
+
// never inferred from silence.
|
|
127
|
+
// ONE try/finally around EVERY exit. The consumer must be reclaimed on the empty path too: an
|
|
128
|
+
// empty read is not rare, it is the normal answer for a filtered ACL miss, and `readAclForAlias`
|
|
129
|
+
// performs TWO of those per unknown principal. `_buildCC` sets a 5s idle heartbeat, so an
|
|
130
|
+
// undeleted consumer lingers until its inactivity threshold; at alias-check churn that piles up on
|
|
131
|
+
// the broker for no reason.
|
|
132
|
+
const latest = new Map();
|
|
133
|
+
let received = 0;
|
|
134
|
+
let sawTerminal = false;
|
|
135
|
+
let bucketName = bucket.bucket;
|
|
136
|
+
let expected = 0;
|
|
137
|
+
try {
|
|
138
|
+
// THE BIND-TIME PROOF, continued: zero here is the only thing that yields an empty result.
|
|
139
|
+
expected = (await oc.info(true)).num_pending;
|
|
140
|
+
if (expected === 0)
|
|
141
|
+
return [];
|
|
142
|
+
// Greatest revision per key, markers INCLUDED — see the header. Collapsing after the fact is
|
|
143
|
+
// what makes concurrent rewrites and drifted `history` settings both correct.
|
|
144
|
+
const iter = await oc.consume();
|
|
145
|
+
try {
|
|
146
|
+
for await (const m of iter) {
|
|
147
|
+
const e = bucket.jmToWatchEntry(m, false);
|
|
148
|
+
received++;
|
|
149
|
+
bucketName = e.bucket;
|
|
150
|
+
const prior = latest.get(e.key);
|
|
151
|
+
if (prior === undefined || e.revision >= prior.revision)
|
|
152
|
+
latest.set(e.key, e);
|
|
153
|
+
// The ONLY completion signal accepted: a delivered message that says nothing is left behind
|
|
154
|
+
// it. Unlike `history()`, an idle heartbeat is NOT treated as "we got everything" — that
|
|
155
|
+
// shortcut is precisely how a stalled pass returns a short list wearing a clean end.
|
|
156
|
+
if (m.info.pending === 0) {
|
|
157
|
+
sawTerminal = true;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
iter.stop();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
await oc.delete().catch(() => { });
|
|
168
|
+
}
|
|
169
|
+
// Fell out without the terminal message: the connection dropped, the consumer was removed, or the
|
|
170
|
+
// stream stalled past the heartbeat. Whatever the cause, this is a PARTIAL view and saying so is
|
|
171
|
+
// the whole point. Filtered and unfiltered obey the same rule, including zero-received.
|
|
172
|
+
if (!sawTerminal)
|
|
173
|
+
throw new IncompleteKvScan(bucketName, received, expected);
|
|
174
|
+
const out = [];
|
|
175
|
+
for (const e of latest.values())
|
|
176
|
+
if (e.operation !== "DEL" && e.operation !== "PURGE")
|
|
177
|
+
out.push(e);
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
180
|
+
/** {@link liveKvEntries}, decoded. `decode` returning `undefined` drops the entry — for callers that
|
|
181
|
+
* skip garbled records rather than failing the whole read (the prevailing convention in the
|
|
182
|
+
* registries: one unparseable row must not blind the surface to every other row). */
|
|
183
|
+
export async function liveKvValues(kv, decode, filter) {
|
|
184
|
+
const out = [];
|
|
185
|
+
for (const e of await liveKvEntries(kv, filter)) {
|
|
186
|
+
const v = decode(e);
|
|
187
|
+
if (v !== undefined)
|
|
188
|
+
out.push(v);
|
|
189
|
+
}
|
|
190
|
+
return out;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=kv-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv-scan.js","sourceRoot":"","sources":["../src/kv-scan.ts"],"names":[],"mappings":"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"}
|
package/dist/lease.d.ts
CHANGED
|
@@ -22,16 +22,23 @@ export interface DeliveryLeaseInfo {
|
|
|
22
22
|
since: number;
|
|
23
23
|
ready: boolean;
|
|
24
24
|
}
|
|
25
|
-
/** A manager
|
|
26
|
-
* `spawn -f` fail LOUD on a mismatch instead of silently reusing a wrong-runtime /
|
|
27
|
-
* manager (no fallbacks); `pid` is a diagnostics + targeted-stop hint.
|
|
28
|
-
*
|
|
25
|
+
/** A manager per-instance LIVENESS-lease record: which logical instance is live + how it was launched.
|
|
26
|
+
* `runtime`/`root` let `spawn -f` fail LOUD on a mismatch instead of silently reusing a wrong-runtime /
|
|
27
|
+
* foreign-checkout manager (no fallbacks); `pid` is a diagnostics + targeted-stop hint. Keyed per
|
|
28
|
+
* {@link ManagerLeaseInfo.instanceId} ({@link import("./subjects.js").managerLeaseKey}) — P2 item 3
|
|
29
|
+
* demoted the per-space singleton to per-instance liveness, so a second manager's create no longer
|
|
30
|
+
* THROWS (distinct instance id ⇒ distinct key ⇒ both acquire). Losing the key stops THAT instance only. */
|
|
29
31
|
export interface ManagerLeaseInfo {
|
|
30
32
|
/** The manager endpoint id — `principalKey(owner, actor).key` dot-form (the endpoint card's
|
|
31
33
|
* id), so it is DIRECTLY comparable to a control subject's `<owner>.<actor>` attribution:
|
|
32
34
|
* the auth service's retirement rail (#29 piece 3) leader-reads this row and requires
|
|
33
|
-
* holder == the subject-attributed requester principal, fresh per request.
|
|
35
|
+
* holder == the subject-attributed requester principal, fresh per request. On an auth mesh every
|
|
36
|
+
* instance of one space shares this holder (same owner+actor principal); {@link instanceId} is what
|
|
37
|
+
* distinguishes them. */
|
|
34
38
|
holder: string;
|
|
39
|
+
/** The live LOGICAL manager instance id (persisted per workspace root, advanced-epoch on restart).
|
|
40
|
+
* The KEY discriminator: two managers in one space share `holder` but have distinct `instanceId`. */
|
|
41
|
+
instanceId: string;
|
|
35
42
|
runtime: string;
|
|
36
43
|
root: string;
|
|
37
44
|
pid: number;
|
package/dist/lease.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lease.d.ts","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;qEAIqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"lease.d.ts","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;qEAIqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;4GAK4G;AAC5G,MAAM,WAAW,gBAAgB;IAC/B;;;;;8BAK0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf;0GACsG;IACtG,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;6GAC6G;AAC7G,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,EAAE,CAAC,CAEb;AAED;;;;8GAI8G;AAC9G,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BnB"}
|
package/dist/lease.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lease.js","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,GAAG,EAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"lease.js","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,GAAG,EAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoCzD;6GAC6G;AAC7G,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAoD,EACpD,KAAa;IAEb,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;8GAI8G;AAC9G,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAM1C;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACvD,IAAI,EAAmD,CAAC;IACxD,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,OAAO,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvE,WAAW,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE;YAChC,oBAAoB,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC1D,2FAA2F;gBAC3F,IAAI,CAAC;oBAAC,IAAI,CAAC,CAAC,IAAI,EAAqB,CAAC,KAAK,KAAK,IAAI;wBAAE,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|