@memoryengine/client 0.1.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.
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Engram schemas - shared between server and client
3
+ *
4
+ * Server: imports schemas for validation
5
+ * Client: imports inferred types for type safety
6
+ */
7
+ import { z } from "zod";
8
+ import { contentField, idField, metaField, treeField, treeFilterField, } from "./fields";
9
+ // ===== Input Schemas =====
10
+ export const temporalSchema = z
11
+ .object({
12
+ start: z.string().describe("ISO timestamp for start of time range"),
13
+ end: z
14
+ .string()
15
+ .optional()
16
+ .describe("ISO timestamp for end (omit for point-in-time)"),
17
+ })
18
+ .describe("Time range for the memory");
19
+ export const temporalQuerySchema = z
20
+ .object({
21
+ contains: z
22
+ .string()
23
+ .optional()
24
+ .describe("Find memories containing this point in time"),
25
+ overlaps: z
26
+ .tuple([z.string(), z.string()])
27
+ .optional()
28
+ .describe("[start, end] - find memories overlapping this range"),
29
+ within: z
30
+ .tuple([z.string(), z.string()])
31
+ .optional()
32
+ .describe("[start, end] - find memories fully within this range"),
33
+ })
34
+ .refine((data) => {
35
+ const defined = [data.contains, data.overlaps, data.within].filter((v) => v !== undefined);
36
+ return defined.length <= 1;
37
+ }, {
38
+ message: "Temporal filter must use exactly one of: contains, overlaps, within",
39
+ })
40
+ .describe("Temporal filter for search");
41
+ export const createEngramSchema = z.object({
42
+ id: idField.optional(),
43
+ content: contentField,
44
+ meta: metaField.optional(),
45
+ tree: treeField
46
+ .optional()
47
+ .describe("Hierarchical path (e.g., work.projects.me). Defaults to root path when omitted"),
48
+ temporal: temporalSchema.optional(),
49
+ });
50
+ export const batchCreateEngramSchema = z.object({
51
+ engrams: z.array(createEngramSchema).max(1000),
52
+ });
53
+ export const updateEngramSchema = z.object({
54
+ id: idField,
55
+ content: contentField.optional(),
56
+ meta: metaField.optional(),
57
+ tree: treeField.optional(),
58
+ temporal: temporalSchema.optional(),
59
+ });
60
+ export const getEngramSchema = z.object({
61
+ id: idField,
62
+ });
63
+ export const deleteEngramSchema = z.object({
64
+ id: idField,
65
+ });
66
+ export const mvEngramSchema = z.object({
67
+ source: treeField.min(1),
68
+ destination: treeField,
69
+ dry_run: z.boolean().optional().default(false),
70
+ });
71
+ export const mvEngramResultSchema = z.object({
72
+ moved: z.number().int(),
73
+ source: z.string(),
74
+ destination: z.string(),
75
+ });
76
+ export const searchEngramSchema = z
77
+ .object({
78
+ semantic: z.string().optional(),
79
+ fulltext: z.string().optional(),
80
+ meta: metaField.optional(),
81
+ tree: treeFilterField.optional(),
82
+ temporal: temporalQuerySchema.optional(),
83
+ limit: z.number().int().positive().max(1000).optional().default(100),
84
+ candidateLimit: z
85
+ .number()
86
+ .int()
87
+ .positive()
88
+ .min(1)
89
+ .max(1000)
90
+ .optional()
91
+ .default(30),
92
+ hybrid: z
93
+ .object({
94
+ weights: z
95
+ .object({
96
+ fulltext: z
97
+ .number()
98
+ .min(0)
99
+ .max(1)
100
+ .optional()
101
+ .describe("Weight for BM25 keyword matching (0-1)"),
102
+ semantic: z
103
+ .number()
104
+ .min(0)
105
+ .max(1)
106
+ .optional()
107
+ .describe("Weight for semantic similarity (0-1)"),
108
+ })
109
+ .optional()
110
+ .describe("Weights for hybrid search ranking (RRF)"),
111
+ })
112
+ .optional(),
113
+ })
114
+ .refine((data) => data.semantic || data.fulltext || data.meta || data.tree || data.temporal, { message: "At least one search criterion required" });
115
+ // ===== Output Schemas =====
116
+ export const engramSchema = z.object({
117
+ id: idField,
118
+ content: contentField,
119
+ meta: metaField,
120
+ tree: treeField,
121
+ temporal: z.string().nullable(),
122
+ has_embedding: z.boolean().optional(),
123
+ created_at: z.string(),
124
+ updated_at: z.string().nullable(),
125
+ });
126
+ export const engramWithScoreSchema = engramSchema.extend({
127
+ score: z.number(),
128
+ });
129
+ export const searchEngramResultSchema = z.object({
130
+ results: z.array(engramWithScoreSchema),
131
+ total: z.number(),
132
+ limit: z.number(),
133
+ });
134
+ export const batchCreateResultSchema = z.object({
135
+ ids: z.array(z.uuidv7()),
136
+ });
137
+ export const deleteResultSchema = z.object({
138
+ success: z.literal(true),
139
+ });
140
+ //# sourceMappingURL=engram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engram.js","sourceRoot":"","sources":["../../src/schemas/engram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared field validators - single source of truth
3
+ *
4
+ * Both shared schemas and MCP tool schemas import from here.
5
+ * This prevents drift in core validation logic (e.g., uuidv7, content min length).
6
+ */
7
+ import { z } from "zod";
8
+ /** UUIDv7 for all engram IDs */
9
+ export declare const idField: z.ZodUUID;
10
+ /** Memory content - non-empty string */
11
+ export declare const contentField: z.ZodString;
12
+ /** Metadata - arbitrary key-value pairs */
13
+ export declare const metaField: z.ZodRecord<z.ZodString, z.ZodUnknown>;
14
+ /** Tree path - dot-separated hierarchy (write contexts) */
15
+ export declare const treeField: z.ZodString;
16
+ /** Tree filter - ltree path, lquery pattern, or ltxtquery label search */
17
+ export declare const treeFilterField: z.ZodString;
18
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/schemas/fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gCAAgC;AAChC,eAAO,MAAM,OAAO,WAAa,CAAC;AAElC,wCAAwC;AACxC,eAAO,MAAM,YAAY,aAAoB,CAAC;AAE9C,2CAA2C;AAC3C,eAAO,MAAM,SAAS,wCAAoC,CAAC;AAE3D,2DAA2D;AAC3D,eAAO,MAAM,SAAS,aAAa,CAAC;AAEpC,0EAA0E;AAC1E,eAAO,MAAM,eAAe,aAa3B,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Shared field validators - single source of truth
3
+ *
4
+ * Both shared schemas and MCP tool schemas import from here.
5
+ * This prevents drift in core validation logic (e.g., uuidv7, content min length).
6
+ */
7
+ import { z } from "zod";
8
+ /** UUIDv7 for all engram IDs */
9
+ export const idField = z.uuidv7();
10
+ /** Memory content - non-empty string */
11
+ export const contentField = z.string().min(1);
12
+ /** Metadata - arbitrary key-value pairs */
13
+ export const metaField = z.record(z.string(), z.unknown());
14
+ /** Tree path - dot-separated hierarchy (write contexts) */
15
+ export const treeField = z.string();
16
+ /** Tree filter - ltree path, lquery pattern, or ltxtquery label search */
17
+ export const treeFilterField = z.string().refine((val) => {
18
+ if (!val.includes("&"))
19
+ return true;
20
+ const words = val
21
+ .replace(/[&|!()]/g, " ")
22
+ .split(/\s+/)
23
+ .filter(Boolean);
24
+ return words.every((w) => !w.includes("."));
25
+ }, {
26
+ message: 'ltxtquery matches labels, not paths. Use individual labels with & (e.g., "knowledge & postgresql"), not dot-separated paths (e.g., "work.knowledge & postgresql").',
27
+ });
28
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/schemas/fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gCAAgC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAElC,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAE3D,2DAA2D;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAEpC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAC9C,CAAC,GAAG,EAAE,EAAE;IACN,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG;SACd,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC,EACD;IACE,OAAO,EACL,oKAAoK;CACvK,CACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared schemas - import from here in both server and client
3
+ */
4
+ export * from "./auth";
5
+ export * from "./engram";
6
+ export * from "./fields";
7
+ export * from "./principal";
8
+ export * from "./rpc";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,QAAQ,CAAC;AAEvB,cAAc,UAAU,CAAC;AAEzB,cAAc,UAAU,CAAC;AAEzB,cAAc,aAAa,CAAC;AAG5B,cAAc,OAAO,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared schemas - import from here in both server and client
3
+ */
4
+ // Auth schemas and types
5
+ export * from "./auth";
6
+ // Engram schemas and types
7
+ export * from "./engram";
8
+ // Shared field validators (single source of truth)
9
+ export * from "./fields";
10
+ // Principal schemas and types
11
+ export * from "./principal";
12
+ // RPC contract and type utilities
13
+ export * from "./rpc";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,yBAAyB;AACzB,cAAc,QAAQ,CAAC;AACvB,2BAA2B;AAC3B,cAAc,UAAU,CAAC;AACzB,mDAAmD;AACnD,cAAc,UAAU,CAAC;AACzB,8BAA8B;AAC9B,cAAc,aAAa,CAAC;AAE5B,kCAAkC;AAClC,cAAc,OAAO,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Principal management schemas - shared between server and client
3
+ */
4
+ import { z } from "zod";
5
+ import { successSchema } from "./auth";
6
+ export declare const getPrincipalSchema: z.ZodObject<{
7
+ name: z.ZodString;
8
+ }, z.core.$strip>;
9
+ export declare const createPrincipalSchema: z.ZodObject<{
10
+ name: z.ZodString;
11
+ email: z.ZodOptional<z.ZodEmail>;
12
+ password: z.ZodOptional<z.ZodString>;
13
+ superuser: z.ZodOptional<z.ZodBoolean>;
14
+ createrole: z.ZodOptional<z.ZodBoolean>;
15
+ can_login: z.ZodOptional<z.ZodBoolean>;
16
+ }, z.core.$strip>;
17
+ export declare const deletePrincipalSchema: z.ZodObject<{
18
+ name: z.ZodString;
19
+ }, z.core.$strip>;
20
+ export declare const setPasswordSchema: z.ZodObject<{
21
+ name: z.ZodString;
22
+ password: z.ZodString;
23
+ }, z.core.$strip>;
24
+ export declare const grantTreeAccessSchema: z.ZodObject<{
25
+ principal_name: z.ZodString;
26
+ tree_path: z.ZodString;
27
+ actions: z.ZodArray<z.ZodEnum<{
28
+ read: "read";
29
+ create: "create";
30
+ update: "update";
31
+ delete: "delete";
32
+ }>>;
33
+ with_grant_option: z.ZodOptional<z.ZodBoolean>;
34
+ }, z.core.$strip>;
35
+ export declare const revokeTreeAccessSchema: z.ZodObject<{
36
+ principal_name: z.ZodString;
37
+ tree_path: z.ZodString;
38
+ }, z.core.$strip>;
39
+ export declare const listTreeGrantsSchema: z.ZodObject<{
40
+ principal_name: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>;
42
+ export declare const checkTreeAccessSchema: z.ZodObject<{
43
+ tree_path: z.ZodString;
44
+ action: z.ZodEnum<{
45
+ read: "read";
46
+ create: "create";
47
+ update: "update";
48
+ delete: "delete";
49
+ }>;
50
+ }, z.core.$strip>;
51
+ export declare const addRoleMemberSchema: z.ZodObject<{
52
+ role_name: z.ZodString;
53
+ member_name: z.ZodString;
54
+ with_admin_option: z.ZodOptional<z.ZodBoolean>;
55
+ }, z.core.$strip>;
56
+ export declare const removeRoleMemberSchema: z.ZodObject<{
57
+ role_name: z.ZodString;
58
+ member_name: z.ZodString;
59
+ }, z.core.$strip>;
60
+ export declare const listRoleMembersSchema: z.ZodObject<{
61
+ role_name: z.ZodString;
62
+ }, z.core.$strip>;
63
+ export declare const listRolesForPrincipalSchema: z.ZodObject<{
64
+ principal_name: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$strip>;
66
+ export declare const setTreeOwnerSchema: z.ZodObject<{
67
+ tree_path: z.ZodString;
68
+ principal_name: z.ZodString;
69
+ }, z.core.$strip>;
70
+ export declare const removeTreeOwnerSchema: z.ZodObject<{
71
+ tree_path: z.ZodString;
72
+ }, z.core.$strip>;
73
+ export declare const getTreeOwnerSchema: z.ZodObject<{
74
+ tree_path: z.ZodString;
75
+ }, z.core.$strip>;
76
+ export declare const listTreeOwnersSchema: z.ZodObject<{
77
+ principal_name: z.ZodOptional<z.ZodString>;
78
+ }, z.core.$strip>;
79
+ export declare const principalListItemSchema: z.ZodObject<{
80
+ id: z.ZodUUID;
81
+ email: z.ZodNullable<z.ZodEmail>;
82
+ name: z.ZodString;
83
+ superuser: z.ZodBoolean;
84
+ createrole: z.ZodBoolean;
85
+ can_login: z.ZodBoolean;
86
+ created_at: z.ZodString;
87
+ }, z.core.$strip>;
88
+ export declare const principalDetailSchema: z.ZodObject<{
89
+ id: z.ZodUUID;
90
+ email: z.ZodNullable<z.ZodEmail>;
91
+ name: z.ZodString;
92
+ superuser: z.ZodBoolean;
93
+ createrole: z.ZodBoolean;
94
+ can_login: z.ZodBoolean;
95
+ created_at: z.ZodString;
96
+ }, z.core.$strip>;
97
+ export declare const treeGrantSchema: z.ZodObject<{
98
+ id: z.ZodUUID;
99
+ principal_id: z.ZodUUID;
100
+ tree_path: z.ZodString;
101
+ actions: z.ZodArray<z.ZodString>;
102
+ with_grant_option: z.ZodBoolean;
103
+ granted_by: z.ZodNullable<z.ZodUUID>;
104
+ created_at: z.ZodString;
105
+ }, z.core.$strip>;
106
+ export declare const roleMemberSchema: z.ZodObject<{
107
+ id: z.ZodUUID;
108
+ name: z.ZodString;
109
+ email: z.ZodNullable<z.ZodEmail>;
110
+ superuser: z.ZodBoolean;
111
+ can_login: z.ZodBoolean;
112
+ with_admin_option: z.ZodBoolean;
113
+ created_at: z.ZodString;
114
+ }, z.core.$strip>;
115
+ export declare const principalRoleSchema: z.ZodObject<{
116
+ id: z.ZodUUID;
117
+ name: z.ZodString;
118
+ created_at: z.ZodString;
119
+ }, z.core.$strip>;
120
+ export declare const treeOwnerSchema: z.ZodObject<{
121
+ tree_path: z.ZodString;
122
+ principal_id: z.ZodUUID;
123
+ principal_name: z.ZodString;
124
+ created_by: z.ZodNullable<z.ZodUUID>;
125
+ created_at: z.ZodString;
126
+ }, z.core.$strip>;
127
+ export { successSchema };
128
+ export type GetPrincipalParams = z.infer<typeof getPrincipalSchema>;
129
+ export type CreatePrincipalParams = z.infer<typeof createPrincipalSchema>;
130
+ export type DeletePrincipalParams = z.infer<typeof deletePrincipalSchema>;
131
+ export type SetPasswordParams = z.infer<typeof setPasswordSchema>;
132
+ export type GrantTreeAccessParams = z.infer<typeof grantTreeAccessSchema>;
133
+ export type RevokeTreeAccessParams = z.infer<typeof revokeTreeAccessSchema>;
134
+ export type ListTreeGrantsParams = z.infer<typeof listTreeGrantsSchema>;
135
+ export type CheckTreeAccessParams = z.infer<typeof checkTreeAccessSchema>;
136
+ export type AddRoleMemberParams = z.infer<typeof addRoleMemberSchema>;
137
+ export type RemoveRoleMemberParams = z.infer<typeof removeRoleMemberSchema>;
138
+ export type ListRoleMembersParams = z.infer<typeof listRoleMembersSchema>;
139
+ export type ListRolesForPrincipalParams = z.infer<typeof listRolesForPrincipalSchema>;
140
+ export type SetTreeOwnerParams = z.infer<typeof setTreeOwnerSchema>;
141
+ export type RemoveTreeOwnerParams = z.infer<typeof removeTreeOwnerSchema>;
142
+ export type GetTreeOwnerParams = z.infer<typeof getTreeOwnerSchema>;
143
+ export type ListTreeOwnersParams = z.infer<typeof listTreeOwnersSchema>;
144
+ export type PrincipalListItem = z.infer<typeof principalListItemSchema>;
145
+ export type PrincipalDetail = z.infer<typeof principalDetailSchema>;
146
+ export type TreeGrant = z.infer<typeof treeGrantSchema>;
147
+ export type RoleMember = z.infer<typeof roleMemberSchema>;
148
+ export type PrincipalRole = z.infer<typeof principalRoleSchema>;
149
+ export type TreeOwner = z.infer<typeof treeOwnerSchema>;
150
+ //# sourceMappingURL=principal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../src/schemas/principal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Principal management schemas - shared between server and client
3
+ */
4
+ import { z } from "zod";
5
+ import { principalSchema, successSchema } from "./auth";
6
+ // ===== Input Schemas =====
7
+ export const getPrincipalSchema = z.object({
8
+ name: z.string().min(1),
9
+ });
10
+ export const createPrincipalSchema = z.object({
11
+ name: z.string().min(1),
12
+ email: z.email().optional(),
13
+ password: z.string().min(8).optional(),
14
+ superuser: z.boolean().optional(),
15
+ createrole: z.boolean().optional(),
16
+ can_login: z.boolean().optional(),
17
+ });
18
+ export const deletePrincipalSchema = z.object({
19
+ name: z.string().min(1),
20
+ });
21
+ export const setPasswordSchema = z.object({
22
+ name: z.string().min(1),
23
+ password: z.string().min(8),
24
+ });
25
+ // ===== Tree Grant Schemas =====
26
+ const treeActionSchema = z.enum(["read", "create", "update", "delete"]);
27
+ export const grantTreeAccessSchema = z.object({
28
+ principal_name: z.string().min(1),
29
+ tree_path: z.string(),
30
+ actions: z.array(treeActionSchema).min(1),
31
+ with_grant_option: z.boolean().optional(),
32
+ });
33
+ export const revokeTreeAccessSchema = z.object({
34
+ principal_name: z.string().min(1),
35
+ tree_path: z.string(),
36
+ });
37
+ export const listTreeGrantsSchema = z.object({
38
+ principal_name: z.string().min(1).optional(),
39
+ });
40
+ export const checkTreeAccessSchema = z.object({
41
+ tree_path: z.string(),
42
+ action: treeActionSchema,
43
+ });
44
+ // ===== Role Membership Schemas =====
45
+ export const addRoleMemberSchema = z.object({
46
+ role_name: z.string().min(1),
47
+ member_name: z.string().min(1),
48
+ with_admin_option: z.boolean().optional(),
49
+ });
50
+ export const removeRoleMemberSchema = z.object({
51
+ role_name: z.string().min(1),
52
+ member_name: z.string().min(1),
53
+ });
54
+ export const listRoleMembersSchema = z.object({
55
+ role_name: z.string().min(1),
56
+ });
57
+ export const listRolesForPrincipalSchema = z.object({
58
+ principal_name: z.string().min(1).optional(),
59
+ });
60
+ // ===== Tree Ownership Schemas =====
61
+ export const setTreeOwnerSchema = z.object({
62
+ tree_path: z.string(),
63
+ principal_name: z.string().min(1),
64
+ });
65
+ export const removeTreeOwnerSchema = z.object({
66
+ tree_path: z.string(),
67
+ });
68
+ export const getTreeOwnerSchema = z.object({
69
+ tree_path: z.string(),
70
+ });
71
+ export const listTreeOwnersSchema = z.object({
72
+ principal_name: z.string().min(1).optional(),
73
+ });
74
+ // ===== Output Schemas =====
75
+ export const principalListItemSchema = z.object({
76
+ id: z.uuidv7(),
77
+ email: z.email().nullable(),
78
+ name: z.string(),
79
+ superuser: z.boolean(),
80
+ createrole: z.boolean(),
81
+ can_login: z.boolean(),
82
+ created_at: z.string(),
83
+ });
84
+ export const principalDetailSchema = principalSchema.extend({
85
+ created_at: z.string(),
86
+ });
87
+ export const treeGrantSchema = z.object({
88
+ id: z.uuidv7(),
89
+ principal_id: z.uuidv7(),
90
+ tree_path: z.string(),
91
+ actions: z.array(z.string()),
92
+ with_grant_option: z.boolean(),
93
+ granted_by: z.uuidv7().nullable(),
94
+ created_at: z.string(),
95
+ });
96
+ export const roleMemberSchema = z.object({
97
+ id: z.uuidv7(),
98
+ name: z.string(),
99
+ email: z.email().nullable(),
100
+ superuser: z.boolean(),
101
+ can_login: z.boolean(),
102
+ with_admin_option: z.boolean(),
103
+ created_at: z.string(),
104
+ });
105
+ export const principalRoleSchema = z.object({
106
+ id: z.uuidv7(),
107
+ name: z.string(),
108
+ created_at: z.string(),
109
+ });
110
+ export const treeOwnerSchema = z.object({
111
+ tree_path: z.string(),
112
+ principal_id: z.uuidv7(),
113
+ principal_name: z.string(),
114
+ created_by: z.uuidv7().nullable(),
115
+ created_at: z.string(),
116
+ });
117
+ // Re-export success schema for convenience
118
+ export { successSchema };
119
+ //# sourceMappingURL=principal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../src/schemas/principal.ts"],"names":[],"mappings":"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"}