@peers-app/peers-sdk 0.7.0 → 0.7.3

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 (59) hide show
  1. package/dist/context/data-context.d.ts +1 -1
  2. package/dist/context/data-context.js +2 -3
  3. package/dist/context/user-context-singleton.js +6 -30
  4. package/dist/context/user-context.d.ts +1 -6
  5. package/dist/context/user-context.js +10 -12
  6. package/dist/data/assistants.d.ts +1 -1
  7. package/dist/data/change-tracking.d.ts +16 -16
  8. package/dist/data/channels.d.ts +1 -1
  9. package/dist/data/data-locks.d.ts +2 -2
  10. package/dist/data/devices.d.ts +4 -4
  11. package/dist/data/embeddings.d.ts +1 -1
  12. package/dist/data/files/files.d.ts +8 -6
  13. package/dist/data/files/files.js +16 -12
  14. package/dist/data/files/files.test.js +17 -17
  15. package/dist/data/group-members.d.ts +7 -4
  16. package/dist/data/group-members.js +98 -32
  17. package/dist/data/groups.d.ts +7 -3
  18. package/dist/data/groups.js +91 -30
  19. package/dist/data/index.d.ts +2 -0
  20. package/dist/data/index.js +2 -0
  21. package/dist/data/knowledge/knowledge-frames.d.ts +1 -1
  22. package/dist/data/knowledge/knowledge-links.d.ts +1 -1
  23. package/dist/data/knowledge/knowledge-values.d.ts +1 -1
  24. package/dist/data/knowledge/peer-types.d.ts +1 -1
  25. package/dist/data/knowledge/predicates.d.ts +1 -1
  26. package/dist/data/messages.d.ts +4 -4
  27. package/dist/data/orm/client-proxy.data-source.js +8 -18
  28. package/dist/data/orm/decorators.d.ts +1 -1
  29. package/dist/data/orm/decorators.js +7 -7
  30. package/dist/data/orm/table.js +3 -5
  31. package/dist/data/packages.d.ts +2 -1
  32. package/dist/data/packages.js +93 -44
  33. package/dist/data/packages.utils.d.ts +3 -0
  34. package/dist/data/packages.utils.js +41 -0
  35. package/dist/data/peer-events/peer-event-handlers.d.ts +1 -1
  36. package/dist/data/peer-events/peer-event-types.d.ts +1 -1
  37. package/dist/data/tool-tests.d.ts +1 -1
  38. package/dist/data/tools.d.ts +1 -1
  39. package/dist/data/user-permissions.test.js +7 -10
  40. package/dist/data/user-trust-levels.d.ts +42 -0
  41. package/dist/data/user-trust-levels.js +60 -0
  42. package/dist/data/users.d.ts +7 -7
  43. package/dist/data/users.js +86 -27
  44. package/dist/data/workflow-logs.d.ts +1 -1
  45. package/dist/data/workflow-runs.js +1 -1
  46. package/dist/data/workflows.d.ts +1 -1
  47. package/dist/device/get-trust-level.js +9 -5
  48. package/dist/keys.d.ts +1 -1
  49. package/dist/keys.js +2 -2
  50. package/dist/keys.test.js +1 -1
  51. package/dist/package-loader/package-loader.d.ts +1 -1
  52. package/dist/package-loader/package-loader.js +4 -4
  53. package/dist/rpc-types.d.ts +6 -20
  54. package/dist/rpc-types.js +5 -12
  55. package/dist/system-ids.d.ts +2 -0
  56. package/dist/system-ids.js +3 -1
  57. package/dist/users.query.d.ts +3 -1
  58. package/dist/users.query.js +39 -11
  59. package/package.json +1 -1
@@ -179,7 +179,7 @@ describe('FileTable', () => {
179
179
  // Save file first
180
180
  await fileTable.saveFile(metadata, originalData);
181
181
  // Retrieve file
182
- const retrievedData = await fileTable.getFile(fileId);
182
+ const retrievedData = await fileTable.getFileContents(fileId);
183
183
  expect(new Uint8Array(retrievedData)).toEqual(originalData);
184
184
  });
185
185
  it('should retrieve a multi-chunk file', async () => {
@@ -194,11 +194,11 @@ describe('FileTable', () => {
194
194
  // Save file first
195
195
  await fileTable.saveFile(metadata, originalData);
196
196
  // Retrieve file
197
- const retrievedData = await fileTable.getFile(fileId);
197
+ const retrievedData = await fileTable.getFileContents(fileId);
198
198
  expect(new Uint8Array(retrievedData)).toEqual(originalData);
199
199
  });
200
200
  it('should return null for non-existent file', async () => {
201
- const result = await fileTable.getFile('non-existent');
201
+ const result = await fileTable.getFileContents('non-existent');
202
202
  expect(result).toBeNull();
203
203
  });
204
204
  it('should return null when chunk is missing', async () => {
@@ -212,11 +212,11 @@ describe('FileTable', () => {
212
212
  };
213
213
  // Insert metadata directly without saving chunks
214
214
  await fileTable.dataSource.insert(metadata);
215
- const result = await fileTable.getFile(fileId);
215
+ const result = await fileTable.getFileContents(fileId);
216
216
  expect(result).toBeNull();
217
217
  });
218
218
  it('should return null when chunk is missing during read', async () => {
219
- const result = await fileTable.getFile('non-existent');
219
+ const result = await fileTable.getFileContents('non-existent');
220
220
  expect(result).toBeNull();
221
221
  });
222
222
  });
@@ -233,14 +233,14 @@ describe('FileTable', () => {
233
233
  // Save file first
234
234
  const saved = await fileTable.saveFile(metadata, data);
235
235
  // Verify file exists
236
- const fileData = await fileTable.getFile(fileId);
236
+ const fileData = await fileTable.getFileContents(fileId);
237
237
  expect(new Uint8Array(fileData)).toEqual(data);
238
238
  const chunkHash = saved.chunkHashes[0];
239
239
  expect(await mockFileOps.fileExists(`file_chunks/${chunkHash}`)).toBe(true);
240
240
  // Delete file
241
241
  await fileTable.deleteFile(fileId);
242
242
  // Verify file metadata is gone but chunk remains (for potential sharing)
243
- expect(await fileTable.getFile(fileId)).toBeNull();
243
+ expect(await fileTable.getFileContents(fileId)).toBeNull();
244
244
  expect(await mockFileOps.fileExists(`file_chunks/${chunkHash}`)).toBe(true);
245
245
  });
246
246
  it('should handle deleting non-existent file gracefully', async () => {
@@ -266,7 +266,7 @@ describe('FileTable', () => {
266
266
  // Delete file
267
267
  await fileTable.deleteFile(fileId);
268
268
  // Verify file metadata is gone but chunks remain (for potential sharing)
269
- expect(await fileTable.getFile(fileId)).toBeNull();
269
+ expect(await fileTable.getFileContents(fileId)).toBeNull();
270
270
  expect(await mockFileOps.fileExists(`file_chunks/${chunk0Hash}`)).toBe(true);
271
271
  expect(await mockFileOps.fileExists(`file_chunks/${chunk1Hash}`)).toBe(true);
272
272
  });
@@ -300,8 +300,8 @@ describe('FileTable', () => {
300
300
  expect(await mockFileOps.fileExists(chunkPath)).toBe(true);
301
301
  expect(mockFileOps.getStoredFiles().filter(path => path.includes(chunkHash))).toHaveLength(1);
302
302
  // Both files should retrieve the same content
303
- const file1Data = await fileTable.getFile(fileId1);
304
- const file2Data = await fileTable.getFile(fileId2);
303
+ const file1Data = await fileTable.getFileContents(fileId1);
304
+ const file2Data = await fileTable.getFileContents(fileId2);
305
305
  expect(new Uint8Array(file1Data)).toEqual(data);
306
306
  expect(new Uint8Array(file2Data)).toEqual(data);
307
307
  });
@@ -324,7 +324,7 @@ describe('FileTable', () => {
324
324
  expect(result.chunkHashes).toHaveLength(1);
325
325
  expect(result.indexFileId).toBeUndefined();
326
326
  // Should be able to retrieve the file
327
- const retrievedData = await fileTable.getFile(fileId);
327
+ const retrievedData = await fileTable.getFileContents(fileId);
328
328
  expect(new Uint8Array(retrievedData)).toEqual(smallData);
329
329
  });
330
330
  it('should use recursive index files for very large files', async () => {
@@ -347,7 +347,7 @@ describe('FileTable', () => {
347
347
  expect(result.chunkHashes).toBeUndefined();
348
348
  expect(result.indexFileId).toBeTruthy();
349
349
  // Should be able to retrieve the file
350
- const retrievedData = await fileTable.getFile(fileId);
350
+ const retrievedData = await fileTable.getFileContents(fileId);
351
351
  expect(retrievedData).toBeTruthy();
352
352
  expect(new Uint8Array(retrievedData)).toEqual(largeData);
353
353
  // The index file should be marked as an index file
@@ -374,7 +374,7 @@ describe('FileTable', () => {
374
374
  };
375
375
  // Insert metadata directly without creating index file
376
376
  await fileTable.dataSource.insert(metadata);
377
- await expect(fileTable.getFile(fileId)).rejects.toThrow('Index file not found: missing_index_file_id');
377
+ await expect(fileTable.getFileContents(fileId)).rejects.toThrow('Index file not found: missing_index_file_id');
378
378
  });
379
379
  });
380
380
  describe('Streaming API', () => {
@@ -399,7 +399,7 @@ describe('FileTable', () => {
399
399
  expect(result.fileSize).toBe(23); // Total bytes written: 'Hello, streaming world!'
400
400
  expect(result.chunkHashes).toHaveLength(1); // Small file, single chunk
401
401
  // Verify we can read the file back
402
- const retrievedData = await fileTable.getFile(fileId);
402
+ const retrievedData = await fileTable.getFileContents(fileId);
403
403
  expect(Buffer.from(retrievedData).toString('utf8')).toBe('Hello, streaming world!');
404
404
  });
405
405
  it('should handle large file streaming across multiple chunks', async () => {
@@ -421,7 +421,7 @@ describe('FileTable', () => {
421
421
  expect(result.fileSize).toBe(chunkSize + 500);
422
422
  expect(result.chunkHashes).toHaveLength(2); // Two chunks
423
423
  // Verify content
424
- const retrievedData = await fileTable.getFile(fileId);
424
+ const retrievedData = await fileTable.getFileContents(fileId);
425
425
  expect(retrievedData?.length).toBe(chunkSize + 500);
426
426
  expect(new Uint8Array(retrievedData).subarray(0, chunkSize).every(b => b === 65)).toBe(true); // All 'A's
427
427
  expect(new Uint8Array(retrievedData).subarray(chunkSize).every(b => b === 66)).toBe(true); // All 'B's
@@ -490,7 +490,7 @@ describe('FileTable', () => {
490
490
  expect(result.fileSize).toBe(data.length);
491
491
  expect(result.chunkHashes).toHaveLength(3); // 2 complete + 1 partial chunk
492
492
  // Verify we can read it back correctly
493
- const retrievedData = await fileTable.getFile(fileId);
493
+ const retrievedData = await fileTable.getFileContents(fileId);
494
494
  expect(retrievedData?.length).toBe(data.length);
495
495
  expect(new Uint8Array(retrievedData)).toEqual(data);
496
496
  });
@@ -686,7 +686,7 @@ describe('FileTable', () => {
686
686
  await fileTable.dataSource.insert(metadata);
687
687
  // This should return null when the chunk can't be found
688
688
  // instead of throwing an error or hanging
689
- const result = await fileTable.getFile(fileId);
689
+ const result = await fileTable.getFileContents(fileId);
690
690
  expect(result).toBeNull();
691
691
  });
692
692
  });
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import type { DataContext } from "../context/data-context";
3
- import { Table } from "./orm";
4
3
  import { GroupMemberRole } from './group-member-roles';
5
- import { ISaveOptions } from "..";
4
+ import type { ISaveOptions } from "./orm/data-query";
5
+ import { Table } from "./orm/table";
6
6
  export declare const groupMemberSchema: z.ZodObject<{
7
7
  groupMemberId: z.ZodEffects<z.ZodString, string, string>;
8
8
  groupId: z.ZodEffects<z.ZodString, string, string>;
@@ -13,16 +13,16 @@ export declare const groupMemberSchema: z.ZodObject<{
13
13
  }, "strip", z.ZodTypeAny, {
14
14
  role: GroupMemberRole;
15
15
  signature: string;
16
- groupId: string;
17
16
  userId: string;
18
17
  groupMemberId: string;
18
+ groupId: string;
19
19
  deleted?: boolean | undefined;
20
20
  }, {
21
21
  role: GroupMemberRole;
22
22
  signature: string;
23
- groupId: string;
24
23
  userId: string;
25
24
  groupMemberId: string;
25
+ groupId: string;
26
26
  deleted?: boolean | undefined;
27
27
  }>;
28
28
  export type IGroupMember = z.infer<typeof groupMemberSchema>;
@@ -30,7 +30,10 @@ export declare const groupMembersTableName = "GroupMembers";
30
30
  export declare class GroupMembersTable extends Table<IGroupMember> {
31
31
  static isPassthrough: boolean;
32
32
  save(groupMember: IGroupMember, opts?: ISaveOptions): Promise<IGroupMember>;
33
+ signAndSave(groupMember: IGroupMember, opts?: ISaveOptions): Promise<IGroupMember>;
33
34
  delete(groupMemberId: string): Promise<void>;
35
+ private static addSignatureToGroupMember;
36
+ static enableGroupMemberSigning(fn: (groupMember: IGroupMember) => IGroupMember): void;
34
37
  /** @deprecated Forbidden on GroupsTable; use save() */
35
38
  insert(..._args: Parameters<Table<IGroupMember>['insert']>): never;
36
39
  /** @deprecated Forbidden on GroupsTable; use save() */
@@ -1,16 +1,51 @@
1
1
  "use strict";
2
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
+ var useValue = arguments.length > 2;
4
+ for (var i = 0; i < initializers.length; i++) {
5
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
6
+ }
7
+ return useValue ? value : void 0;
8
+ };
9
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
10
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
11
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
12
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
13
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
14
+ var _, done = false;
15
+ for (var i = decorators.length - 1; i >= 0; i--) {
16
+ var context = {};
17
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
18
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
19
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
20
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
21
+ if (kind === "accessor") {
22
+ if (result === void 0) continue;
23
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
24
+ if (_ = accept(result.get)) descriptor.get = _;
25
+ if (_ = accept(result.set)) descriptor.set = _;
26
+ if (_ = accept(result.init)) initializers.unshift(_);
27
+ }
28
+ else if (_ = accept(result)) {
29
+ if (kind === "field") initializers.unshift(_);
30
+ else descriptor[key] = _;
31
+ }
32
+ }
33
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
+ done = true;
35
+ };
2
36
  Object.defineProperty(exports, "__esModule", { value: true });
3
37
  exports.GroupMembersTable = exports.groupMembersTableName = exports.groupMemberSchema = void 0;
4
38
  exports.GroupMembers = GroupMembers;
5
39
  const zod_1 = require("zod");
6
40
  const user_context_singleton_1 = require("../context/user-context-singleton");
41
+ const decorators_1 = require("../data/orm/decorators");
7
42
  const zod_types_1 = require("../types/zod-types");
8
- const orm_1 = require("./orm");
9
- const table_definitions_system_1 = require("./orm/table-definitions.system");
10
- const types_1 = require("./orm/types");
11
43
  const group_member_roles_1 = require("./group-member-roles");
12
44
  const group_permissions_1 = require("./group-permissions");
13
- const __1 = require("..");
45
+ const table_1 = require("./orm/table");
46
+ const table_definitions_system_1 = require("./orm/table-definitions.system");
47
+ const types_1 = require("./orm/types");
48
+ const users_1 = require("./users");
14
49
  exports.groupMemberSchema = zod_1.z.object({
15
50
  groupMemberId: zod_types_1.zodPeerId,
16
51
  groupId: zod_types_1.zodPeerId.describe('The id of the group'),
@@ -29,38 +64,69 @@ const metaData = {
29
64
  { fields: ['groupId', 'userId'], unique: true },
30
65
  ]
31
66
  };
32
- class GroupMembersTable extends orm_1.Table {
33
- static isPassthrough = false;
34
- async save(groupMember, opts) {
35
- if (GroupMembersTable.isPassthrough) {
36
- return super.save(groupMember, opts);
67
+ let GroupMembersTable = (() => {
68
+ let _classSuper = table_1.Table;
69
+ let _instanceExtraInitializers = [];
70
+ let _signAndSave_decorators;
71
+ return class GroupMembersTable extends _classSuper {
72
+ static {
73
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
74
+ _signAndSave_decorators = [(0, decorators_1.ProxyClientTableMethodCalls)()];
75
+ __esDecorate(this, null, _signAndSave_decorators, { kind: "method", name: "signAndSave", static: false, private: false, access: { has: obj => "signAndSave" in obj, get: obj => obj.signAndSave }, metadata: _metadata }, null, _instanceExtraInitializers);
76
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
37
77
  }
38
- const oldGroupMember = groupMember.groupMemberId ? await this.get(groupMember.groupMemberId) : undefined;
39
- if (await (0, group_permissions_1.isGroupMemberSignatureValid)(groupMember.groupId, groupMember, oldGroupMember)) {
40
- return super.save(groupMember, opts);
78
+ static isPassthrough = false;
79
+ async save(groupMember, opts) {
80
+ if (GroupMembersTable.isPassthrough) {
81
+ return super.save(groupMember, opts);
82
+ }
83
+ const me = await (0, users_1.getMe)();
84
+ if (groupMember.groupId === me.userId) {
85
+ throw new Error('Group members cannot be added to personal user contexts');
86
+ }
87
+ const oldGroupMember = groupMember.groupMemberId ? await this.get(groupMember.groupMemberId) : undefined;
88
+ if (await (0, group_permissions_1.isGroupMemberSignatureValid)(groupMember.groupId, groupMember, oldGroupMember)) {
89
+ return super.save(groupMember, opts);
90
+ }
91
+ throw new Error('Group member signature is not valid');
41
92
  }
42
- throw new Error('Group member signature is not valid');
43
- }
44
- async delete(groupMemberId) {
45
- if (GroupMembersTable.isPassthrough) {
46
- return super.delete(groupMemberId);
93
+ async signAndSave(groupMember, opts) {
94
+ if (!GroupMembersTable.addSignatureToGroupMember) {
95
+ throw new Error('Group member signing must be enabled to sign and save group members. Call GroupMembersTable.enableGroupMemberSigning(fn) to enable it.');
96
+ }
97
+ groupMember = GroupMembersTable.addSignatureToGroupMember(groupMember);
98
+ return this.save(groupMember, opts);
47
99
  }
48
- const groupMember = await this.get(groupMemberId);
49
- if (groupMember) {
50
- groupMember.deleted = true;
51
- groupMember.role = group_member_roles_1.GroupMemberRole.None;
52
- await __1.rpcServerCalls.tableSave(groupMember.groupId, "GroupMembers", groupMember);
100
+ async delete(groupMemberId) {
101
+ if (GroupMembersTable.isPassthrough) {
102
+ return super.delete(groupMemberId);
103
+ }
104
+ const groupMember = await this.get(groupMemberId);
105
+ if (groupMember) {
106
+ groupMember.deleted = true;
107
+ groupMember.role = group_member_roles_1.GroupMemberRole.None;
108
+ // we do a soft delete by saving the object with deleted=true and
109
+ await this.signAndSave(groupMember);
110
+ }
53
111
  }
54
- }
55
- /** @deprecated Forbidden on GroupsTable; use save() */
56
- insert(..._args) {
57
- throw new Error('GroupsTable forbids insert; use save()');
58
- }
59
- /** @deprecated Forbidden on GroupsTable; use save() */
60
- update(..._args) {
61
- throw new Error('GroupsTable forbids update; use save()');
62
- }
63
- }
112
+ static addSignatureToGroupMember = undefined;
113
+ static enableGroupMemberSigning(fn) {
114
+ GroupMembersTable.addSignatureToGroupMember = fn;
115
+ }
116
+ /** @deprecated Forbidden on GroupsTable; use save() */
117
+ insert(..._args) {
118
+ throw new Error('GroupsTable forbids insert; use save()');
119
+ }
120
+ /** @deprecated Forbidden on GroupsTable; use save() */
121
+ update(..._args) {
122
+ throw new Error('GroupsTable forbids update; use save()');
123
+ }
124
+ constructor() {
125
+ super(...arguments);
126
+ __runInitializers(this, _instanceExtraInitializers);
127
+ }
128
+ };
129
+ })();
64
130
  exports.GroupMembersTable = GroupMembersTable;
65
131
  (0, table_definitions_system_1.registerSystemTableDefinition)(metaData, exports.groupMemberSchema, GroupMembersTable);
66
132
  function GroupMembers(dataContext) {
@@ -1,7 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import type { DataContext } from "../context/data-context";
3
3
  import { GroupMemberRole } from "./group-member-roles";
4
- import { ISaveOptions, Table } from "./orm";
4
+ import type { ISaveOptions } from "./orm/data-query";
5
+ import { Table } from "./orm/table";
5
6
  export declare const groupSchema: z.ZodObject<{
6
7
  groupId: z.ZodEffects<z.ZodString, string, string>;
7
8
  name: z.ZodString;
@@ -18,9 +19,9 @@ export declare const groupSchema: z.ZodObject<{
18
19
  description: string;
19
20
  signature: string;
20
21
  publicKey: string;
22
+ publicBoxKey: string;
21
23
  groupId: string;
22
24
  founderUserId: string;
23
- publicBoxKey: string;
24
25
  disabled?: boolean | undefined;
25
26
  iconClassName?: string | undefined;
26
27
  publicRole?: GroupMemberRole | undefined;
@@ -29,9 +30,9 @@ export declare const groupSchema: z.ZodObject<{
29
30
  description: string;
30
31
  signature: string;
31
32
  publicKey: string;
33
+ publicBoxKey: string;
32
34
  groupId: string;
33
35
  founderUserId: string;
34
- publicBoxKey: string;
35
36
  disabled?: boolean | undefined;
36
37
  iconClassName?: string | undefined;
37
38
  publicRole?: GroupMemberRole | undefined;
@@ -41,7 +42,10 @@ export declare const groupsTableName = "Groups";
41
42
  export declare class GroupsTable extends Table<IGroup> {
42
43
  static isPassthrough: boolean;
43
44
  save(group: IGroup, opts?: ISaveOptions): Promise<IGroup>;
45
+ signAndSave(group: IGroup, opts?: ISaveOptions): Promise<IGroup>;
44
46
  delete(groupId: string): Promise<void>;
47
+ private static addSignatureToGroup;
48
+ static enableGroupSigning(fn: (group: IGroup) => IGroup): void;
45
49
  /** @deprecated Direct inserts forbidden; use save() */
46
50
  insert(..._args: Parameters<Table<IGroup>['insert']>): never;
47
51
  /** @deprecated Direct updates forbidden; use save() */
@@ -1,4 +1,38 @@
1
1
  "use strict";
2
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
+ var useValue = arguments.length > 2;
4
+ for (var i = 0; i < initializers.length; i++) {
5
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
6
+ }
7
+ return useValue ? value : void 0;
8
+ };
9
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
10
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
11
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
12
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
13
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
14
+ var _, done = false;
15
+ for (var i = decorators.length - 1; i >= 0; i--) {
16
+ var context = {};
17
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
18
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
19
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
20
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
21
+ if (kind === "accessor") {
22
+ if (result === void 0) continue;
23
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
24
+ if (_ = accept(result.get)) descriptor.get = _;
25
+ if (_ = accept(result.set)) descriptor.set = _;
26
+ if (_ = accept(result.init)) initializers.unshift(_);
27
+ }
28
+ else if (_ = accept(result)) {
29
+ if (kind === "field") initializers.unshift(_);
30
+ else descriptor[key] = _;
31
+ }
32
+ }
33
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
+ done = true;
35
+ };
2
36
  Object.defineProperty(exports, "__esModule", { value: true });
3
37
  exports.GroupsTable = exports.groupsTableName = exports.groupSchema = void 0;
4
38
  exports.Groups = Groups;
@@ -7,7 +41,8 @@ const user_context_singleton_1 = require("../context/user-context-singleton");
7
41
  const zod_types_1 = require("../types/zod-types");
8
42
  const group_member_roles_1 = require("./group-member-roles");
9
43
  const group_permissions_1 = require("./group-permissions");
10
- const orm_1 = require("./orm");
44
+ const decorators_1 = require("./orm/decorators");
45
+ const table_1 = require("./orm/table");
11
46
  const table_definitions_system_1 = require("./orm/table-definitions.system");
12
47
  const types_1 = require("./orm/types");
13
48
  exports.groupSchema = zod_1.z.object({
@@ -33,39 +68,65 @@ const metaData = {
33
68
  { fields: ['name'] },
34
69
  ]
35
70
  };
36
- class GroupsTable extends orm_1.Table {
37
- static isPassthrough = false;
38
- async save(group, opts) {
39
- if (GroupsTable.isPassthrough) {
40
- return super.save(group, opts);
71
+ let GroupsTable = (() => {
72
+ let _classSuper = table_1.Table;
73
+ let _instanceExtraInitializers = [];
74
+ let _signAndSave_decorators;
75
+ return class GroupsTable extends _classSuper {
76
+ static {
77
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
78
+ _signAndSave_decorators = [(0, decorators_1.ProxyClientTableMethodCalls)()];
79
+ __esDecorate(this, null, _signAndSave_decorators, { kind: "method", name: "signAndSave", static: false, private: false, access: { has: obj => "signAndSave" in obj, get: obj => obj.signAndSave }, metadata: _metadata }, null, _instanceExtraInitializers);
80
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
41
81
  }
42
- const userContext = await (0, user_context_singleton_1.getUserContext)();
43
- const userContextGroups = Groups(userContext.userDataContext);
44
- if (userContextGroups === this) {
45
- // users can do whatever they want to groups in their personal space
82
+ static isPassthrough = false;
83
+ async save(group, opts) {
84
+ if (GroupsTable.isPassthrough) {
85
+ return super.save(group, opts);
86
+ }
87
+ const userContext = await (0, user_context_singleton_1.getUserContext)();
88
+ const userContextGroups = Groups(userContext.userDataContext);
89
+ if (userContextGroups === this) {
90
+ // users can do whatever they want to groups in their personal space
91
+ return super.save(group, opts);
92
+ }
93
+ const oldGroup = await this.get(group.groupId);
94
+ await (0, group_permissions_1.verifyGroupSignature)(group, oldGroup);
46
95
  return super.save(group, opts);
47
96
  }
48
- const oldGroup = await this.get(group.groupId);
49
- await (0, group_permissions_1.verifyGroupSignature)(group, oldGroup);
50
- return super.save(group, opts);
51
- }
52
- async delete(groupId) {
53
- const userContext = await (0, user_context_singleton_1.getUserContext)();
54
- const userContextGroups = Groups(userContext.userDataContext);
55
- if (userContextGroups === this) {
56
- return super.delete(groupId);
97
+ async signAndSave(group, opts) {
98
+ if (!GroupsTable.addSignatureToGroup) {
99
+ throw new Error('Group signing must be enabled to sign and save groups. Call GroupsTable.enableGroupSigning(fn) to enable it.');
100
+ }
101
+ group = GroupsTable.addSignatureToGroup(group);
102
+ return this.save(group, opts);
57
103
  }
58
- throw new Error('Only deleting groups from the user context Groups table is allowed');
59
- }
60
- /** @deprecated Direct inserts forbidden; use save() */
61
- insert(..._args) {
62
- throw new Error('Direct inserts forbidden; use save()');
63
- }
64
- /** @deprecated Direct updates forbidden; use save() */
65
- update(..._args) {
66
- throw new Error('Direct updates forbidden; use save()');
67
- }
68
- }
104
+ async delete(groupId) {
105
+ const userContext = await (0, user_context_singleton_1.getUserContext)();
106
+ const userContextGroups = Groups(userContext.userDataContext);
107
+ if (userContextGroups === this) {
108
+ return super.delete(groupId);
109
+ }
110
+ throw new Error('Only deleting groups from the user context Groups table is allowed');
111
+ }
112
+ static addSignatureToGroup = undefined;
113
+ static enableGroupSigning(fn) {
114
+ this.addSignatureToGroup = fn;
115
+ }
116
+ /** @deprecated Direct inserts forbidden; use save() */
117
+ insert(..._args) {
118
+ throw new Error('Direct inserts forbidden; use save()');
119
+ }
120
+ /** @deprecated Direct updates forbidden; use save() */
121
+ update(..._args) {
122
+ throw new Error('Direct updates forbidden; use save()');
123
+ }
124
+ constructor() {
125
+ super(...arguments);
126
+ __runInitializers(this, _instanceExtraInitializers);
127
+ }
128
+ };
129
+ })();
69
130
  exports.GroupsTable = GroupsTable;
70
131
  (0, table_definitions_system_1.registerSystemTableDefinition)(metaData, exports.groupSchema, GroupsTable);
71
132
  function Groups(dataContext) {
@@ -18,6 +18,7 @@ export * from "./knowledge/peer-types";
18
18
  export * from "./knowledge/predicates";
19
19
  export * from "./messages";
20
20
  export * from "./packages";
21
+ export * from "./packages.utils";
21
22
  export * from "./peer-events/peer-event-handlers";
22
23
  export * from "./peer-events/peer-event-types";
23
24
  export * from "./peer-events/peer-events";
@@ -26,6 +27,7 @@ export * from "./tool-tests";
26
27
  export * from "./tools";
27
28
  export * from "./users";
28
29
  export * from "./user-permissions";
30
+ export * from "./user-trust-levels";
29
31
  export * from "./workflow-logs";
30
32
  export * from "./workflow-runs";
31
33
  export * from "./workflows";
@@ -34,6 +34,7 @@ __exportStar(require("./knowledge/peer-types"), exports);
34
34
  __exportStar(require("./knowledge/predicates"), exports);
35
35
  __exportStar(require("./messages"), exports);
36
36
  __exportStar(require("./packages"), exports);
37
+ __exportStar(require("./packages.utils"), exports);
37
38
  __exportStar(require("./peer-events/peer-event-handlers"), exports);
38
39
  __exportStar(require("./peer-events/peer-event-types"), exports);
39
40
  __exportStar(require("./peer-events/peer-events"), exports);
@@ -42,6 +43,7 @@ __exportStar(require("./tool-tests"), exports);
42
43
  __exportStar(require("./tools"), exports);
43
44
  __exportStar(require("./users"), exports);
44
45
  __exportStar(require("./user-permissions"), exports);
46
+ __exportStar(require("./user-trust-levels"), exports);
45
47
  __exportStar(require("./workflow-logs"), exports);
46
48
  __exportStar(require("./workflow-runs"), exports);
47
49
  __exportStar(require("./workflows"), exports);
@@ -23,7 +23,7 @@ declare const knowledgeFrameSchema: z.ZodObject<{
23
23
  conclusion?: string | undefined;
24
24
  }>;
25
25
  export type IKnowledgeFrame = z.infer<typeof knowledgeFrameSchema>;
26
- export declare function KnowledgeFrames(dataContext?: DataContext): import("../..").Table<{
26
+ export declare function KnowledgeFrames(dataContext?: DataContext): import("../orm").Table<{
27
27
  name: string;
28
28
  body: string;
29
29
  knowledgeFrameId: string;
@@ -20,7 +20,7 @@ declare const knowledgeLinkSchema: z.ZodObject<{
20
20
  objectValueId?: string | undefined;
21
21
  }>;
22
22
  export type IKnowledgeLink = z.infer<typeof knowledgeLinkSchema>;
23
- export declare function KnowledgeLinks(dataContext?: DataContext): import("../..").Table<{
23
+ export declare function KnowledgeLinks(dataContext?: DataContext): import("../orm").Table<{
24
24
  knowledgeLinkId: string;
25
25
  subjectValueId: string;
26
26
  predicateId: string;
@@ -24,7 +24,7 @@ export declare const knowledgeValueSchema: z.ZodObject<{
24
24
  lastModified?: Date | undefined;
25
25
  }>;
26
26
  export type IKnowledgeValue = z.infer<typeof knowledgeValueSchema>;
27
- export declare function KnowledgeValues(dataContext?: DataContext): import("../..").Table<{
27
+ export declare function KnowledgeValues(dataContext?: DataContext): import("../orm").Table<{
28
28
  name: string;
29
29
  value: {} & {
30
30
  [k: string]: any;
@@ -91,7 +91,7 @@ declare const valueTypeSchema: z.ZodObject<{
91
91
  iconClass?: string | undefined;
92
92
  }>;
93
93
  export type IPeerType = z.infer<typeof valueTypeSchema>;
94
- export declare function PeerTypes(dataContext?: DataContext): import("../..").Table<{
94
+ export declare function PeerTypes(dataContext?: DataContext): import("../orm").Table<{
95
95
  name: string;
96
96
  schema: {
97
97
  type: import("../tools").IOSchemaType;
@@ -23,7 +23,7 @@ declare const predicateSchema: z.ZodObject<{
23
23
  allowedObjectValueTypes?: string[] | undefined;
24
24
  }>;
25
25
  export type IPredicate = z.infer<typeof predicateSchema>;
26
- export declare function Predicates(dataContext?: DataContext): import("../..").Table<{
26
+ export declare function Predicates(dataContext?: DataContext): import("../orm").Table<{
27
27
  name: string;
28
28
  predicateId: string;
29
29
  description?: string | undefined;
@@ -13,8 +13,8 @@ export declare const messageSchema: z.ZodObject<{
13
13
  vars: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodAny, z.objectOutputType<{}, z.ZodAny, "strip">, z.objectInputType<{}, z.ZodAny, "strip">>>;
14
14
  }, "strip", z.ZodTypeAny, {
15
15
  message: string;
16
- userId: string;
17
16
  createdAt: Date;
17
+ userId: string;
18
18
  channelId: string;
19
19
  messageId: string;
20
20
  assistantId?: string | undefined;
@@ -24,8 +24,8 @@ export declare const messageSchema: z.ZodObject<{
24
24
  fileIds?: string[] | undefined;
25
25
  }, {
26
26
  message: string;
27
- userId: string;
28
27
  createdAt: Date;
28
+ userId: string;
29
29
  channelId: string;
30
30
  messageId: string;
31
31
  assistantId?: string | undefined;
@@ -35,10 +35,10 @@ export declare const messageSchema: z.ZodObject<{
35
35
  fileIds?: string[] | undefined;
36
36
  }>;
37
37
  export type IMessage = z.infer<typeof messageSchema>;
38
- export declare function Messages(dataContext?: DataContext): import("..").Table<{
38
+ export declare function Messages(dataContext?: DataContext): import("./orm").Table<{
39
39
  message: string;
40
- userId: string;
41
40
  createdAt: Date;
41
+ userId: string;
42
42
  channelId: string;
43
43
  messageId: string;
44
44
  assistantId?: string | undefined;