@caracalai/revocation-redis 0.1.2 → 0.1.4-rc.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.
@@ -1,14 +1,17 @@
1
1
  import type { RevocationStore } from '@caracalai/revocation';
2
2
  export declare const REVOCATION_STREAM = "caracal.sessions.revoke";
3
+ export declare const DELEGATION_INVALIDATION_STREAM = "caracal.delegations.invalidate";
3
4
  export declare const DEFAULT_REVOCATION_TTL_MS: number;
4
5
  export interface RedisRevocationClient {
5
6
  get: (key: string) => Promise<string | null>;
6
7
  set: (key: string, value: string, mode: 'PX', ttlMs: number) => Promise<unknown>;
7
8
  xgroup?: (...args: string[]) => Promise<unknown>;
8
9
  xreadgroup?: (...args: (string | number)[]) => Promise<RedisStreamResult | null>;
10
+ xautoclaim?: (...args: (string | number)[]) => Promise<RedisAutoClaimResult>;
9
11
  xack?: (stream: string, group: string, id: string) => Promise<unknown>;
10
12
  }
11
13
  export type RedisStreamResult = Array<[string, Array<[string, string[]]>]>;
14
+ export type RedisAutoClaimResult = [string, Array<[string, string[]]>];
12
15
  export interface RedisRevocationStoreOptions {
13
16
  keyPrefix?: string;
14
17
  defaultTtlMs?: number;
@@ -22,7 +25,10 @@ export declare class RedisRevocationStore implements RevocationStore {
22
25
  constructor(redis: RedisRevocationClient, opts?: RedisRevocationStoreOptions);
23
26
  isRevoked(sid: string): Promise<boolean>;
24
27
  markRevoked(sid: string, ttlMs?: number): Promise<void>;
28
+ currentDelegationEpoch(zoneId: string): Promise<number>;
29
+ markDelegationEpoch(zoneId: string, epoch: number, ttlMs?: number): Promise<void>;
25
30
  private key;
31
+ private delegationEpochKey;
26
32
  }
27
33
  export interface RedisRevocationConsumerOptions {
28
34
  stream?: string;
@@ -30,6 +36,7 @@ export interface RedisRevocationConsumerOptions {
30
36
  consumer: string;
31
37
  batchSize?: number;
32
38
  blockMs?: number;
39
+ pendingIdleMs?: number;
33
40
  streamHmacKey?: Buffer;
34
41
  requireSignature?: boolean;
35
42
  }
@@ -41,11 +48,32 @@ export declare class RedisRevocationConsumer {
41
48
  private readonly group;
42
49
  private readonly batchSize;
43
50
  private readonly blockMs;
51
+ private readonly pendingIdleMs;
44
52
  private readonly streamHmacKey;
45
53
  private readonly requireSignature;
46
54
  constructor(redis: RedisRevocationClient, store: RedisRevocationStore, opts: RedisRevocationConsumerOptions);
47
55
  ensureGroup(): Promise<void>;
48
56
  pollOnce(): Promise<number>;
57
+ private replayPending;
58
+ private processMessage;
59
+ private verify;
60
+ private ack;
61
+ }
62
+ export declare class RedisDelegationInvalidationConsumer {
63
+ private readonly redis;
64
+ private readonly store;
65
+ private readonly opts;
66
+ private readonly stream;
67
+ private readonly group;
68
+ private readonly batchSize;
69
+ private readonly blockMs;
70
+ private readonly pendingIdleMs;
71
+ private readonly streamHmacKey;
72
+ private readonly requireSignature;
73
+ constructor(redis: RedisRevocationClient, store: RedisRevocationStore, opts: RedisRevocationConsumerOptions);
74
+ ensureGroup(): Promise<void>;
75
+ pollOnce(): Promise<number>;
76
+ private replayPending;
49
77
  private processMessage;
50
78
  private verify;
51
79
  private ack;
@@ -1 +1 @@
1
- {"version":3,"file":"revocation.d.ts","sourceRoot":"","sources":["../src/revocation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revocation.d.ts","sourceRoot":"","sources":["../src/revocation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,eAAO,MAAM,iBAAiB,4BAA4B,CAAA;AAC1D,eAAO,MAAM,8BAA8B,mCAAmC,CAAA;AAC9E,eAAO,MAAM,yBAAyB,QAAsB,CAAA;AAE5D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC5C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChF,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IAChF,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC5E,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvE;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;AAEtE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAK9C,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAEP,KAAK,EAAE,qBAAqB,EAAE,IAAI,GAAE,2BAAgC;IAM3F,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWvD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvF,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,kBAAkB;CAG3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,qBAAa,uBAAuB;IAUhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGvB,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,8BAA8B;IAcjD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;YAyBnB,aAAa;YAuBb,cAAc;IAY5B,OAAO,CAAC,MAAM;YAUA,GAAG;CAIlB;AAED,qBAAa,mCAAmC;IAU5C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGvB,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,8BAA8B;IAcjD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;YAyBnB,aAAa;YAuBb,cAAc;IAc5B,OAAO,CAAC,MAAM;YAUA,GAAG;CAIlB"}
@@ -5,6 +5,7 @@
5
5
  import { timingSafeEqual } from 'node:crypto';
6
6
  import { signStream, STREAM_SIG_FIELD } from '@caracalai/core';
7
7
  export const REVOCATION_STREAM = 'caracal.sessions.revoke';
8
+ export const DELEGATION_INVALIDATION_STREAM = 'caracal.delegations.invalidate';
8
9
  export const DEFAULT_REVOCATION_TTL_MS = 24 * 60 * 60 * 1000;
9
10
  export class RedisRevocationStore {
10
11
  redis;
@@ -34,9 +35,32 @@ export class RedisRevocationStore {
34
35
  return;
35
36
  await this.redis.set(this.key(sid), '1', 'PX', ttlMs ?? this.defaultTtlMs);
36
37
  }
38
+ async currentDelegationEpoch(zoneId) {
39
+ try {
40
+ const value = await this.redis.get(this.delegationEpochKey(zoneId));
41
+ const epoch = Number(value ?? 0);
42
+ return Number.isSafeInteger(epoch) && epoch > 0 ? epoch : 0;
43
+ }
44
+ catch (err) {
45
+ if (this.failClosed)
46
+ return Number.MAX_SAFE_INTEGER;
47
+ throw err;
48
+ }
49
+ }
50
+ async markDelegationEpoch(zoneId, epoch, ttlMs) {
51
+ if (zoneId === '' || !Number.isSafeInteger(epoch) || epoch < 0)
52
+ return;
53
+ const current = await this.currentDelegationEpoch(zoneId);
54
+ if (epoch <= current)
55
+ return;
56
+ await this.redis.set(this.delegationEpochKey(zoneId), String(epoch), 'PX', ttlMs ?? this.defaultTtlMs);
57
+ }
37
58
  key(sid) {
38
59
  return `${this.keyPrefix}${sid}`;
39
60
  }
61
+ delegationEpochKey(zoneId) {
62
+ return `${this.keyPrefix}delegation-epoch:${zoneId}`;
63
+ }
40
64
  }
41
65
  export class RedisRevocationConsumer {
42
66
  redis;
@@ -46,6 +70,7 @@ export class RedisRevocationConsumer {
46
70
  group;
47
71
  batchSize;
48
72
  blockMs;
73
+ pendingIdleMs;
49
74
  streamHmacKey;
50
75
  requireSignature;
51
76
  constructor(redis, store, opts) {
@@ -56,6 +81,7 @@ export class RedisRevocationConsumer {
56
81
  this.group = opts.group ?? 'resource-revocation';
57
82
  this.batchSize = opts.batchSize ?? 50;
58
83
  this.blockMs = opts.blockMs ?? 0;
84
+ this.pendingIdleMs = opts.pendingIdleMs ?? 30_000;
59
85
  this.streamHmacKey = opts.streamHmacKey;
60
86
  this.requireSignature = opts.requireSignature ?? Boolean(opts.streamHmacKey);
61
87
  if (this.requireSignature && !this.streamHmacKey) {
@@ -76,8 +102,106 @@ export class RedisRevocationConsumer {
76
102
  async pollOnce() {
77
103
  if (!this.redis.xreadgroup)
78
104
  throw new Error('redis client does not support xreadgroup');
105
+ if (!this.redis.xautoclaim)
106
+ throw new Error('redis client does not support xautoclaim');
107
+ let handled = await this.replayPending();
79
108
  const rows = await this.redis.xreadgroup('GROUP', this.group, this.opts.consumer, 'COUNT', this.batchSize, 'BLOCK', this.blockMs, 'STREAMS', this.stream, '>');
109
+ for (const [, messages] of rows ?? []) {
110
+ for (const [id, fields] of messages) {
111
+ await this.processMessage(id, fields);
112
+ handled++;
113
+ }
114
+ }
115
+ return handled;
116
+ }
117
+ async replayPending() {
118
+ if (!this.redis.xautoclaim)
119
+ throw new Error('redis client does not support xautoclaim');
80
120
  let handled = 0;
121
+ let start = '0-0';
122
+ for (;;) {
123
+ const [next, messages] = await this.redis.xautoclaim(this.stream, this.group, this.opts.consumer, this.pendingIdleMs, start, 'COUNT', this.batchSize);
124
+ for (const [id, fields] of messages) {
125
+ await this.processMessage(id, fields);
126
+ handled++;
127
+ }
128
+ if (messages.length === 0 || next === '' || next === '0-0')
129
+ return handled;
130
+ start = next;
131
+ }
132
+ }
133
+ async processMessage(id, fields) {
134
+ const values = fieldsToValues(fields);
135
+ if (!this.verify(values)) {
136
+ await this.ack(id);
137
+ return;
138
+ }
139
+ for (const anchor of revocationAnchors(values)) {
140
+ await this.store.markRevoked(anchor);
141
+ }
142
+ await this.ack(id);
143
+ }
144
+ verify(values) {
145
+ if (!this.requireSignature && !this.streamHmacKey)
146
+ return true;
147
+ const got = values[STREAM_SIG_FIELD];
148
+ if (typeof got !== 'string' || !this.streamHmacKey)
149
+ return false;
150
+ const want = signStream(this.streamHmacKey, this.stream, values);
151
+ const gotBytes = Buffer.from(got, 'hex');
152
+ const wantBytes = Buffer.from(want, 'hex');
153
+ return gotBytes.length === wantBytes.length && timingSafeEqual(gotBytes, wantBytes);
154
+ }
155
+ async ack(id) {
156
+ if (!this.redis.xack)
157
+ throw new Error('redis client does not support xack');
158
+ await this.redis.xack(this.stream, this.group, id);
159
+ }
160
+ }
161
+ export class RedisDelegationInvalidationConsumer {
162
+ redis;
163
+ store;
164
+ opts;
165
+ stream;
166
+ group;
167
+ batchSize;
168
+ blockMs;
169
+ pendingIdleMs;
170
+ streamHmacKey;
171
+ requireSignature;
172
+ constructor(redis, store, opts) {
173
+ this.redis = redis;
174
+ this.store = store;
175
+ this.opts = opts;
176
+ this.stream = opts.stream ?? DELEGATION_INVALIDATION_STREAM;
177
+ this.group = opts.group ?? 'resource-delegation-invalidation';
178
+ this.batchSize = opts.batchSize ?? 50;
179
+ this.blockMs = opts.blockMs ?? 0;
180
+ this.pendingIdleMs = opts.pendingIdleMs ?? 30_000;
181
+ this.streamHmacKey = opts.streamHmacKey;
182
+ this.requireSignature = opts.requireSignature ?? Boolean(opts.streamHmacKey);
183
+ if (this.requireSignature && !this.streamHmacKey) {
184
+ throw new Error('streamHmacKey is required when requireSignature is true');
185
+ }
186
+ }
187
+ async ensureGroup() {
188
+ if (!this.redis.xgroup)
189
+ throw new Error('redis client does not support xgroup');
190
+ try {
191
+ await this.redis.xgroup('CREATE', this.stream, this.group, '0', 'MKSTREAM');
192
+ }
193
+ catch (err) {
194
+ if (!String(err.message).includes('BUSYGROUP'))
195
+ throw err;
196
+ }
197
+ }
198
+ async pollOnce() {
199
+ if (!this.redis.xreadgroup)
200
+ throw new Error('redis client does not support xreadgroup');
201
+ if (!this.redis.xautoclaim)
202
+ throw new Error('redis client does not support xautoclaim');
203
+ let handled = await this.replayPending();
204
+ const rows = await this.redis.xreadgroup('GROUP', this.group, this.opts.consumer, 'COUNT', this.batchSize, 'BLOCK', this.blockMs, 'STREAMS', this.stream, '>');
81
205
  for (const [, messages] of rows ?? []) {
82
206
  for (const [id, fields] of messages) {
83
207
  await this.processMessage(id, fields);
@@ -86,15 +210,32 @@ export class RedisRevocationConsumer {
86
210
  }
87
211
  return handled;
88
212
  }
213
+ async replayPending() {
214
+ if (!this.redis.xautoclaim)
215
+ throw new Error('redis client does not support xautoclaim');
216
+ let handled = 0;
217
+ let start = '0-0';
218
+ for (;;) {
219
+ const [next, messages] = await this.redis.xautoclaim(this.stream, this.group, this.opts.consumer, this.pendingIdleMs, start, 'COUNT', this.batchSize);
220
+ for (const [id, fields] of messages) {
221
+ await this.processMessage(id, fields);
222
+ handled++;
223
+ }
224
+ if (messages.length === 0 || next === '' || next === '0-0')
225
+ return handled;
226
+ start = next;
227
+ }
228
+ }
89
229
  async processMessage(id, fields) {
90
230
  const values = fieldsToValues(fields);
91
231
  if (!this.verify(values)) {
92
232
  await this.ack(id);
93
233
  return;
94
234
  }
95
- const sid = values.session_id;
96
- if (typeof sid === 'string' && sid !== '') {
97
- await this.store.markRevoked(sid);
235
+ const zoneId = values.zone_id;
236
+ const epoch = Number(values.epoch);
237
+ if (typeof zoneId === 'string' && Number.isSafeInteger(epoch) && epoch >= 0) {
238
+ await this.store.markDelegationEpoch(zoneId, epoch);
98
239
  }
99
240
  await this.ack(id);
100
241
  }
@@ -115,6 +256,16 @@ export class RedisRevocationConsumer {
115
256
  await this.redis.xack(this.stream, this.group, id);
116
257
  }
117
258
  }
259
+ function revocationAnchors(values) {
260
+ const anchors = [
261
+ values.session_id,
262
+ values.sid,
263
+ values.root_sid,
264
+ values.agent_session_id,
265
+ values.delegation_edge_id,
266
+ ].filter((value) => typeof value === 'string' && value !== '');
267
+ return [...new Set(anchors)];
268
+ }
118
269
  function fieldsToValues(fields) {
119
270
  const out = {};
120
271
  for (let i = 0; i < fields.length; i += 2) {
@@ -1 +1 @@
1
- {"version":3,"file":"revocation.js","sourceRoot":"","sources":["../src/revocation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revocation.js","sourceRoot":"","sources":["../src/revocation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caracalai/revocation-redis",
3
- "version": "0.1.2",
3
+ "version": "0.1.4-rc.1",
4
4
  "description": "Caracal Redis-backed revocation connector.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Garudex-Labs/caracal",
@@ -16,6 +16,9 @@
16
16
  "connector"
17
17
  ],
18
18
  "type": "module",
19
+ "engines": {
20
+ "node": ">=22"
21
+ },
19
22
  "main": "./dist/index.js",
20
23
  "types": "./dist/index.d.ts",
21
24
  "exports": {
@@ -26,7 +29,6 @@
26
29
  },
27
30
  "files": [
28
31
  "dist",
29
- "README.md",
30
32
  "LICENSE"
31
33
  ],
32
34
  "publishConfig": {
@@ -39,8 +41,8 @@
39
41
  "prepublishOnly": "tsc"
40
42
  },
41
43
  "dependencies": {
42
- "@caracalai/core": "0.1.2",
43
- "@caracalai/revocation": "0.1.2"
44
+ "@caracalai/core": "0.1.4-rc.1",
45
+ "@caracalai/revocation": "0.1.4-rc.1"
44
46
  },
45
47
  "devDependencies": {
46
48
  "@types/node": "^24.12.2",