@openleash/core 0.5.0 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/audit.d.ts +45 -0
  2. package/dist/audit.d.ts.map +1 -1
  3. package/dist/audit.js +232 -5
  4. package/dist/audit.js.map +1 -1
  5. package/dist/file-store.d.ts +19 -0
  6. package/dist/file-store.d.ts.map +1 -0
  7. package/dist/file-store.js +233 -0
  8. package/dist/file-store.js.map +1 -0
  9. package/dist/identity.d.ts +25 -0
  10. package/dist/identity.d.ts.map +1 -1
  11. package/dist/identity.js +11 -1
  12. package/dist/identity.js.map +1 -1
  13. package/dist/index.d.ts +6 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +6 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/keys.d.ts +2 -0
  18. package/dist/keys.d.ts.map +1 -1
  19. package/dist/keys.js +2 -0
  20. package/dist/keys.js.map +1 -1
  21. package/dist/plugin-loader.d.ts +6 -0
  22. package/dist/plugin-loader.d.ts.map +1 -0
  23. package/dist/plugin-loader.js +24 -0
  24. package/dist/plugin-loader.js.map +1 -0
  25. package/dist/server-plugin-loader.d.ts +6 -0
  26. package/dist/server-plugin-loader.d.ts.map +1 -0
  27. package/dist/server-plugin-loader.js +20 -0
  28. package/dist/server-plugin-loader.js.map +1 -0
  29. package/dist/server-plugin.d.ts +29 -0
  30. package/dist/server-plugin.d.ts.map +1 -0
  31. package/dist/server-plugin.js +3 -0
  32. package/dist/server-plugin.js.map +1 -0
  33. package/dist/state.d.ts +38 -1
  34. package/dist/state.d.ts.map +1 -1
  35. package/dist/state.js +77 -0
  36. package/dist/state.js.map +1 -1
  37. package/dist/store.d.ts +61 -0
  38. package/dist/store.d.ts.map +1 -0
  39. package/dist/store.js +3 -0
  40. package/dist/store.js.map +1 -0
  41. package/dist/types.d.ts +23 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js +5 -0
  44. package/dist/types.js.map +1 -1
  45. package/dist/webhook.d.ts +25 -0
  46. package/dist/webhook.d.ts.map +1 -0
  47. package/dist/webhook.js +114 -0
  48. package/dist/webhook.js.map +1 -0
  49. package/package.json +1 -1
package/dist/audit.d.ts CHANGED
@@ -1,11 +1,56 @@
1
1
  import type { AuditEvent } from './types.js';
2
+ /** @deprecated Use `store.audit.append()` instead. */
2
3
  export declare function appendAuditEvent(dataDir: string, eventType: string, metadata?: Record<string, unknown>, opts?: {
3
4
  principal_id?: string | null;
4
5
  action_id?: string | null;
5
6
  decision_id?: string | null;
6
7
  }): AuditEvent;
8
+ /** @deprecated Use `store.audit.readPage()` instead. */
7
9
  export declare function readAuditLog(dataDir: string, limit?: number, cursor?: number): {
8
10
  items: AuditEvent[];
9
11
  next_cursor: string | null;
12
+ total: number;
10
13
  };
14
+ export interface AuditStore {
15
+ append(eventType: string, metadata: Record<string, unknown>, opts?: {
16
+ principal_id?: string | null;
17
+ action_id?: string | null;
18
+ decision_id?: string | null;
19
+ }): AuditEvent;
20
+ readPage(limit: number, offset: number): {
21
+ items: AuditEvent[];
22
+ total: number;
23
+ };
24
+ readByPrincipal(principalId: string, relatedPrincipalIds: Set<string>, limit: number, offset: number): {
25
+ items: AuditEvent[];
26
+ total: number;
27
+ };
28
+ getTotal(): number;
29
+ }
30
+ export declare class FileAuditStore implements AuditStore {
31
+ private readonly filePath;
32
+ private readonly dataDir;
33
+ private index;
34
+ constructor(dataDir: string);
35
+ append(eventType: string, metadata?: Record<string, unknown>, opts?: {
36
+ principal_id?: string | null;
37
+ action_id?: string | null;
38
+ decision_id?: string | null;
39
+ }): AuditEvent;
40
+ readPage(limit: number, offset: number): {
41
+ items: AuditEvent[];
42
+ total: number;
43
+ };
44
+ readByPrincipal(principalId: string, relatedPrincipalIds: Set<string>, limit: number, offset: number): {
45
+ items: AuditEvent[];
46
+ total: number;
47
+ };
48
+ getTotal(): number;
49
+ private ensureIndex;
50
+ private rebuildIndex;
51
+ private readNewBytes;
52
+ private indexPrincipalIds;
53
+ private readLines;
54
+ private readSpecificLines;
55
+ }
11
56
  //# sourceMappingURL=audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACtC,IAAI,CAAC,EAAE;IACL,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GACA,UAAU,CAcZ;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAwBrD"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,sDAAsD;AACtD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACtC,IAAI,CAAC,EAAE;IACL,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GACA,UAAU,CAcZ;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAyBpE;AAID,MAAM,WAAW,UAAU;IACzB,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,GACA,UAAU,CAAC;IAEd,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAEhF,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1C,QAAQ,IAAI,MAAM,CAAC;CACpB;AAaD,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,KAAK,CAA0B;gBAE3B,OAAO,EAAE,MAAM;IAK3B,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACtC,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,GACA,UAAU;IAeb,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAW/E,eAAe,CACb,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAuBzC,QAAQ,IAAI,MAAM;IAOlB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,iBAAiB;CAyB1B"}
package/dist/audit.js CHANGED
@@ -33,11 +33,13 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FileAuditStore = void 0;
36
37
  exports.appendAuditEvent = appendAuditEvent;
37
38
  exports.readAuditLog = readAuditLog;
38
39
  const crypto = __importStar(require("node:crypto"));
39
40
  const fs = __importStar(require("node:fs"));
40
41
  const path = __importStar(require("node:path"));
42
+ /** @deprecated Use `store.audit.append()` instead. */
41
43
  function appendAuditEvent(dataDir, eventType, metadata = {}, opts) {
42
44
  const event = {
43
45
  event_id: crypto.randomUUID(),
@@ -52,25 +54,250 @@ function appendAuditEvent(dataDir, eventType, metadata = {}, opts) {
52
54
  fs.appendFileSync(filePath, JSON.stringify(event) + '\n', 'utf-8');
53
55
  return event;
54
56
  }
57
+ /** @deprecated Use `store.audit.readPage()` instead. */
55
58
  function readAuditLog(dataDir, limit = 50, cursor = 0) {
56
59
  const filePath = path.join(dataDir, 'audit.log.jsonl');
57
60
  if (!fs.existsSync(filePath)) {
58
- return { items: [], next_cursor: null };
61
+ return { items: [], next_cursor: null, total: 0 };
59
62
  }
60
63
  const content = fs.readFileSync(filePath, 'utf-8').trim();
61
64
  if (!content) {
62
- return { items: [], next_cursor: null };
65
+ return { items: [], next_cursor: null, total: 0 };
63
66
  }
64
67
  const lines = content.split('\n');
68
+ const total = lines.length;
65
69
  const start = cursor;
66
- const end = Math.min(start + limit, lines.length);
70
+ const end = Math.min(start + limit, total);
67
71
  const items = [];
68
72
  for (let i = start; i < end; i++) {
69
73
  if (lines[i].trim()) {
70
74
  items.push(JSON.parse(lines[i]));
71
75
  }
72
76
  }
73
- const nextCursor = end < lines.length ? String(end) : null;
74
- return { items, next_cursor: nextCursor };
77
+ const nextCursor = end < total ? String(end) : null;
78
+ return { items, next_cursor: nextCursor, total };
75
79
  }
80
+ class FileAuditStore {
81
+ filePath;
82
+ dataDir;
83
+ index = null;
84
+ constructor(dataDir) {
85
+ this.dataDir = dataDir;
86
+ this.filePath = path.join(dataDir, 'audit.log.jsonl');
87
+ }
88
+ append(eventType, metadata = {}, opts) {
89
+ const event = appendAuditEvent(this.dataDir, eventType, metadata, opts);
90
+ // Update index incrementally if it exists
91
+ if (this.index) {
92
+ const line = JSON.stringify(event) + '\n';
93
+ const lineNum = this.index.offsets.length;
94
+ this.index.offsets.push(this.index.fileSize);
95
+ this.index.fileSize += Buffer.byteLength(line, 'utf-8');
96
+ this.indexPrincipalIds(event, lineNum);
97
+ }
98
+ return event;
99
+ }
100
+ readPage(limit, offset) {
101
+ this.ensureIndex();
102
+ const total = this.index.offsets.length;
103
+ if (total === 0 || offset >= total) {
104
+ return { items: [], total };
105
+ }
106
+ const end = Math.min(offset + limit, total);
107
+ const items = this.readLines(offset, end);
108
+ return { items, total };
109
+ }
110
+ readByPrincipal(principalId, relatedPrincipalIds, limit, offset) {
111
+ this.ensureIndex();
112
+ const idx = this.index;
113
+ // Collect all matching line numbers from the principal index
114
+ const lineSet = new Set();
115
+ const addLines = (pid) => {
116
+ const lines = idx.principalLines.get(pid);
117
+ if (lines)
118
+ for (const ln of lines)
119
+ lineSet.add(ln);
120
+ };
121
+ addLines(principalId);
122
+ for (const pid of relatedPrincipalIds)
123
+ addLines(pid);
124
+ // Sort ascending
125
+ const sorted = [...lineSet].sort((a, b) => a - b);
126
+ const total = sorted.length;
127
+ const page = sorted.slice(offset, offset + limit);
128
+ const items = this.readSpecificLines(page);
129
+ return { items, total };
130
+ }
131
+ getTotal() {
132
+ this.ensureIndex();
133
+ return this.index.offsets.length;
134
+ }
135
+ // ─── Internal ─────────────────────────────────────────────────────
136
+ ensureIndex() {
137
+ let stat;
138
+ try {
139
+ stat = fs.statSync(this.filePath);
140
+ }
141
+ catch {
142
+ // File missing — empty index
143
+ this.index = { offsets: [], fileSize: 0, principalLines: new Map() };
144
+ return;
145
+ }
146
+ const fileSize = stat.size;
147
+ if (this.index && this.index.fileSize === fileSize)
148
+ return; // unchanged
149
+ if (this.index && fileSize > this.index.fileSize) {
150
+ // File grew — incremental update
151
+ this.readNewBytes(this.index.fileSize, fileSize);
152
+ return;
153
+ }
154
+ // Full rebuild (first load or file shrank)
155
+ this.rebuildIndex(fileSize);
156
+ }
157
+ rebuildIndex(fileSize) {
158
+ this.index = { offsets: [], fileSize, principalLines: new Map() };
159
+ if (fileSize === 0)
160
+ return;
161
+ const content = fs.readFileSync(this.filePath, 'utf-8');
162
+ let pos = 0;
163
+ let lineNum = 0;
164
+ const lines = content.split('\n');
165
+ for (const line of lines) {
166
+ if (line.length === 0 && pos >= fileSize)
167
+ break; // trailing empty from split
168
+ this.index.offsets.push(pos);
169
+ pos += Buffer.byteLength(line, 'utf-8') + 1; // +1 for \n
170
+ if (line.trim()) {
171
+ try {
172
+ const event = JSON.parse(line);
173
+ this.indexPrincipalIds(event, lineNum);
174
+ }
175
+ catch {
176
+ // skip malformed lines
177
+ }
178
+ }
179
+ lineNum++;
180
+ }
181
+ // Remove trailing empty line if file doesn't end with content after last \n
182
+ if (this.index.offsets.length > 0) {
183
+ const lastOffset = this.index.offsets[this.index.offsets.length - 1];
184
+ if (lastOffset >= fileSize) {
185
+ this.index.offsets.pop();
186
+ }
187
+ }
188
+ }
189
+ readNewBytes(fromSize, toSize) {
190
+ const idx = this.index;
191
+ const buf = Buffer.alloc(toSize - fromSize);
192
+ const fd = fs.openSync(this.filePath, 'r');
193
+ try {
194
+ fs.readSync(fd, buf, 0, buf.length, fromSize);
195
+ }
196
+ finally {
197
+ fs.closeSync(fd);
198
+ }
199
+ const chunk = buf.toString('utf-8');
200
+ let pos = fromSize;
201
+ let lineNum = idx.offsets.length;
202
+ const lines = chunk.split('\n');
203
+ for (const line of lines) {
204
+ if (line.length === 0 && pos >= toSize)
205
+ break;
206
+ idx.offsets.push(pos);
207
+ pos += Buffer.byteLength(line, 'utf-8') + 1;
208
+ if (line.trim()) {
209
+ try {
210
+ const event = JSON.parse(line);
211
+ this.indexPrincipalIds(event, lineNum);
212
+ }
213
+ catch {
214
+ // skip malformed
215
+ }
216
+ }
217
+ lineNum++;
218
+ }
219
+ // Remove trailing empty
220
+ if (idx.offsets.length > 0) {
221
+ const lastOffset = idx.offsets[idx.offsets.length - 1];
222
+ if (lastOffset >= toSize) {
223
+ idx.offsets.pop();
224
+ }
225
+ }
226
+ idx.fileSize = toSize;
227
+ }
228
+ indexPrincipalIds(event, lineNum) {
229
+ const idx = this.index;
230
+ const addPrincipal = (pid) => {
231
+ if (!pid)
232
+ return;
233
+ let set = idx.principalLines.get(pid);
234
+ if (!set) {
235
+ set = new Set();
236
+ idx.principalLines.set(pid, set);
237
+ }
238
+ set.add(lineNum);
239
+ };
240
+ addPrincipal(event.principal_id);
241
+ const meta = event.metadata_json;
242
+ addPrincipal(meta.owner_principal_id);
243
+ addPrincipal(meta.agent_principal_id);
244
+ }
245
+ readLines(start, end) {
246
+ const idx = this.index;
247
+ if (idx.offsets.length === 0)
248
+ return [];
249
+ const startByte = idx.offsets[start];
250
+ const endByte = end < idx.offsets.length ? idx.offsets[end] : idx.fileSize;
251
+ const buf = Buffer.alloc(endByte - startByte);
252
+ const fd = fs.openSync(this.filePath, 'r');
253
+ try {
254
+ fs.readSync(fd, buf, 0, buf.length, startByte);
255
+ }
256
+ finally {
257
+ fs.closeSync(fd);
258
+ }
259
+ const items = [];
260
+ const lines = buf.toString('utf-8').split('\n');
261
+ for (const line of lines) {
262
+ if (line.trim()) {
263
+ try {
264
+ items.push(JSON.parse(line));
265
+ }
266
+ catch {
267
+ // skip malformed
268
+ }
269
+ }
270
+ }
271
+ return items;
272
+ }
273
+ readSpecificLines(lineNums) {
274
+ if (lineNums.length === 0)
275
+ return [];
276
+ const idx = this.index;
277
+ const items = [];
278
+ const fd = fs.openSync(this.filePath, 'r');
279
+ try {
280
+ for (const ln of lineNums) {
281
+ const startByte = idx.offsets[ln];
282
+ const endByte = ln + 1 < idx.offsets.length ? idx.offsets[ln + 1] : idx.fileSize;
283
+ const buf = Buffer.alloc(endByte - startByte);
284
+ fs.readSync(fd, buf, 0, buf.length, startByte);
285
+ const line = buf.toString('utf-8').trim();
286
+ if (line) {
287
+ try {
288
+ items.push(JSON.parse(line));
289
+ }
290
+ catch {
291
+ // skip malformed
292
+ }
293
+ }
294
+ }
295
+ }
296
+ finally {
297
+ fs.closeSync(fd);
298
+ }
299
+ return items;
300
+ }
301
+ }
302
+ exports.FileAuditStore = FileAuditStore;
76
303
  //# sourceMappingURL=audit.js.map
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,4CAuBC;AAED,oCA4BC;AA1DD,oDAAsC;AACtC,4CAA8B;AAC9B,gDAAkC;AAGlC,SAAgB,gBAAgB,CAC9B,OAAe,EACf,SAAiB,EACjB,WAAoC,EAAE,EACtC,IAIC;IAED,MAAM,KAAK,GAAe;QACxB,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;QAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI;QACxC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI;QAClC,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI;QACtC,aAAa,EAAE,QAAQ;KACxB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACvD,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,YAAY,CAC1B,OAAe,EACf,QAAgB,EAAE,EAClB,SAAiB,CAAC;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AuditStore } from './audit.js';
2
+ import type { DataStore, OwnerRepository, AgentRepository, PolicyRepository, ApprovalRequestRepository, PolicyDraftRepository, SetupInviteRepository, AgentInviteRepository, KeyRepository, StateRepository } from './store.js';
3
+ export declare class FileDataStore implements DataStore {
4
+ readonly owners: OwnerRepository;
5
+ readonly agents: AgentRepository;
6
+ readonly policies: PolicyRepository;
7
+ readonly approvalRequests: ApprovalRequestRepository;
8
+ readonly policyDrafts: PolicyDraftRepository;
9
+ readonly setupInvites: SetupInviteRepository;
10
+ readonly agentInvites: AgentInviteRepository;
11
+ readonly keys: KeyRepository;
12
+ readonly state: StateRepository;
13
+ readonly audit: AuditStore;
14
+ private readonly dataDir;
15
+ constructor(dataDir: string);
16
+ initialize(): void;
17
+ }
18
+ export declare function createFileDataStore(dataDir: string): DataStore;
19
+ //# sourceMappingURL=file-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AA8IpB,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,MAAM;IAc3B,UAAU,IAAI,IAAI;CAsCnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAE9D"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FileDataStore = void 0;
37
+ exports.createFileDataStore = createFileDataStore;
38
+ const fs = __importStar(require("node:fs"));
39
+ const path = __importStar(require("node:path"));
40
+ const state_js_1 = require("./state.js");
41
+ const keys_js_1 = require("./keys.js");
42
+ const audit_js_1 = require("./audit.js");
43
+ // ─── File-based repository implementations ──────────────────────────
44
+ class FileOwnerRepository {
45
+ dataDir;
46
+ constructor(dataDir) {
47
+ this.dataDir = dataDir;
48
+ }
49
+ read(ownerPrincipalId) {
50
+ return (0, state_js_1.readOwnerFile)(this.dataDir, ownerPrincipalId);
51
+ }
52
+ write(owner, body) {
53
+ (0, state_js_1.writeOwnerFile)(this.dataDir, owner, body);
54
+ }
55
+ }
56
+ class FileAgentRepository {
57
+ dataDir;
58
+ constructor(dataDir) {
59
+ this.dataDir = dataDir;
60
+ }
61
+ read(agentPrincipalId) {
62
+ return (0, state_js_1.readAgentFile)(this.dataDir, agentPrincipalId);
63
+ }
64
+ write(agent, body) {
65
+ (0, state_js_1.writeAgentFile)(this.dataDir, agent, body);
66
+ }
67
+ }
68
+ class FilePolicyRepository {
69
+ dataDir;
70
+ constructor(dataDir) {
71
+ this.dataDir = dataDir;
72
+ }
73
+ read(policyId) {
74
+ return (0, state_js_1.readPolicyFile)(this.dataDir, policyId);
75
+ }
76
+ write(policyId, yamlContent) {
77
+ (0, state_js_1.writePolicyFile)(this.dataDir, policyId, yamlContent);
78
+ }
79
+ delete(policyId) {
80
+ (0, state_js_1.deletePolicyFile)(this.dataDir, policyId);
81
+ }
82
+ }
83
+ class FileApprovalRequestRepository {
84
+ dataDir;
85
+ constructor(dataDir) {
86
+ this.dataDir = dataDir;
87
+ }
88
+ read(approvalRequestId) {
89
+ return (0, state_js_1.readApprovalRequestFile)(this.dataDir, approvalRequestId);
90
+ }
91
+ write(req) {
92
+ (0, state_js_1.writeApprovalRequestFile)(this.dataDir, req);
93
+ }
94
+ }
95
+ class FilePolicyDraftRepository {
96
+ dataDir;
97
+ constructor(dataDir) {
98
+ this.dataDir = dataDir;
99
+ }
100
+ read(policyDraftId) {
101
+ return (0, state_js_1.readPolicyDraftFile)(this.dataDir, policyDraftId);
102
+ }
103
+ write(draft) {
104
+ (0, state_js_1.writePolicyDraftFile)(this.dataDir, draft);
105
+ }
106
+ }
107
+ class FileSetupInviteRepository {
108
+ dataDir;
109
+ constructor(dataDir) {
110
+ this.dataDir = dataDir;
111
+ }
112
+ read(inviteId) {
113
+ return (0, state_js_1.readSetupInviteFile)(this.dataDir, inviteId);
114
+ }
115
+ write(invite) {
116
+ (0, state_js_1.writeSetupInviteFile)(this.dataDir, invite);
117
+ }
118
+ delete(inviteId) {
119
+ (0, state_js_1.deleteSetupInviteFile)(this.dataDir, inviteId);
120
+ }
121
+ }
122
+ class FileAgentInviteRepository {
123
+ dataDir;
124
+ constructor(dataDir) {
125
+ this.dataDir = dataDir;
126
+ }
127
+ read(inviteId) {
128
+ return (0, state_js_1.readAgentInviteFile)(this.dataDir, inviteId);
129
+ }
130
+ write(invite) {
131
+ (0, state_js_1.writeAgentInviteFile)(this.dataDir, invite);
132
+ }
133
+ }
134
+ class FileKeyRepository {
135
+ dataDir;
136
+ constructor(dataDir) {
137
+ this.dataDir = dataDir;
138
+ }
139
+ read(kid) {
140
+ return (0, keys_js_1.readKeyFile)(this.dataDir, kid);
141
+ }
142
+ write(key) {
143
+ (0, keys_js_1.writeKeyFile)(this.dataDir, key);
144
+ }
145
+ generate() {
146
+ return (0, keys_js_1.generateSigningKey)();
147
+ }
148
+ }
149
+ class FileStateRepository {
150
+ stateIndex;
151
+ dataDir;
152
+ constructor(dataDir) {
153
+ this.dataDir = dataDir;
154
+ this.stateIndex = new state_js_1.StateIndex(dataDir);
155
+ }
156
+ getState() {
157
+ return this.stateIndex.getState();
158
+ }
159
+ updateState(mutator) {
160
+ const state = (0, state_js_1.readState)(this.dataDir);
161
+ mutator(state);
162
+ (0, state_js_1.writeState)(this.dataDir, state);
163
+ }
164
+ getResolvedApprovals(ownerId, limit, offset) {
165
+ return this.stateIndex.getResolvedApprovals(ownerId, limit, offset);
166
+ }
167
+ }
168
+ // ─── FileDataStore ──────────────────────────────────────────────────
169
+ class FileDataStore {
170
+ owners;
171
+ agents;
172
+ policies;
173
+ approvalRequests;
174
+ policyDrafts;
175
+ setupInvites;
176
+ agentInvites;
177
+ keys;
178
+ state;
179
+ audit;
180
+ dataDir;
181
+ constructor(dataDir) {
182
+ this.dataDir = dataDir;
183
+ this.owners = new FileOwnerRepository(dataDir);
184
+ this.agents = new FileAgentRepository(dataDir);
185
+ this.policies = new FilePolicyRepository(dataDir);
186
+ this.approvalRequests = new FileApprovalRequestRepository(dataDir);
187
+ this.policyDrafts = new FilePolicyDraftRepository(dataDir);
188
+ this.setupInvites = new FileSetupInviteRepository(dataDir);
189
+ this.agentInvites = new FileAgentInviteRepository(dataDir);
190
+ this.keys = new FileKeyRepository(dataDir);
191
+ this.state = new FileStateRepository(dataDir);
192
+ this.audit = new audit_js_1.FileAuditStore(dataDir);
193
+ }
194
+ initialize() {
195
+ // Ensure data directories
196
+ fs.mkdirSync(this.dataDir, { recursive: true });
197
+ fs.mkdirSync(path.join(this.dataDir, 'keys'), { recursive: true });
198
+ fs.mkdirSync(path.join(this.dataDir, 'owners'), { recursive: true });
199
+ fs.mkdirSync(path.join(this.dataDir, 'agents'), { recursive: true });
200
+ fs.mkdirSync(path.join(this.dataDir, 'policies'), { recursive: true });
201
+ fs.mkdirSync(path.join(this.dataDir, 'approval-requests'), { recursive: true });
202
+ fs.mkdirSync(path.join(this.dataDir, 'invites'), { recursive: true });
203
+ // Ensure audit log
204
+ const auditPath = path.join(this.dataDir, 'audit.log.jsonl');
205
+ if (!fs.existsSync(auditPath)) {
206
+ fs.writeFileSync(auditPath, '', 'utf-8');
207
+ }
208
+ // Ensure state.md
209
+ const statePath = path.join(this.dataDir, 'state.md');
210
+ if (!fs.existsSync(statePath)) {
211
+ const key = this.keys.generate();
212
+ this.keys.write(key);
213
+ const state = {
214
+ version: 1,
215
+ created_at: new Date().toISOString(),
216
+ server_keys: {
217
+ active_kid: key.kid,
218
+ keys: [{ kid: key.kid, path: `./keys/${key.kid}.json` }],
219
+ },
220
+ owners: [],
221
+ agents: [],
222
+ policies: [],
223
+ bindings: [],
224
+ };
225
+ (0, state_js_1.writeState)(this.dataDir, state);
226
+ }
227
+ }
228
+ }
229
+ exports.FileDataStore = FileDataStore;
230
+ function createFileDataStore(dataDir) {
231
+ return new FileDataStore(dataDir);
232
+ }
233
+ //# sourceMappingURL=file-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../src/file-store.ts"],"names":[],"mappings":"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"}