@sprinterai/supabase 0.4.1 → 0.6.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.
Files changed (257) hide show
  1. package/dist/auth/adapter.js +3 -3
  2. package/dist/auth/guards.d.ts +27 -0
  3. package/dist/auth/guards.d.ts.map +1 -0
  4. package/dist/auth/guards.js +61 -0
  5. package/dist/auth/guards.js.map +1 -0
  6. package/dist/auth/index.d.ts +6 -4
  7. package/dist/auth/index.d.ts.map +1 -1
  8. package/dist/auth/index.js +5 -3
  9. package/dist/auth/index.js.map +1 -1
  10. package/dist/auth/permissions.d.ts +9 -1
  11. package/dist/auth/permissions.d.ts.map +1 -1
  12. package/dist/auth/permissions.js +13 -0
  13. package/dist/auth/permissions.js.map +1 -1
  14. package/dist/clients/admin.d.ts +3 -1
  15. package/dist/clients/admin.d.ts.map +1 -1
  16. package/dist/clients/admin.js +3 -3
  17. package/dist/clients/admin.js.map +1 -1
  18. package/dist/clients/browser.d.ts +3 -1
  19. package/dist/clients/browser.d.ts.map +1 -1
  20. package/dist/clients/browser.js +3 -3
  21. package/dist/clients/browser.js.map +1 -1
  22. package/dist/clients/index.d.ts +3 -3
  23. package/dist/clients/index.js +3 -3
  24. package/dist/clients/server.d.ts +2 -1
  25. package/dist/clients/server.d.ts.map +1 -1
  26. package/dist/clients/server.js +1 -1
  27. package/dist/clients/server.js.map +1 -1
  28. package/dist/generated/database-types.d.ts +4020 -0
  29. package/dist/generated/database-types.d.ts.map +1 -0
  30. package/dist/generated/database-types.js +97 -0
  31. package/dist/generated/database-types.js.map +1 -0
  32. package/dist/generated/index.d.ts +48 -0
  33. package/dist/generated/index.d.ts.map +1 -0
  34. package/dist/generated/index.js +2 -0
  35. package/dist/generated/index.js.map +1 -0
  36. package/dist/index.d.ts +12 -10
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/realtime/index.d.ts +2 -2
  41. package/dist/realtime/index.js +1 -1
  42. package/dist/resolvers.d.ts +23 -0
  43. package/dist/resolvers.d.ts.map +1 -0
  44. package/dist/resolvers.js +57 -0
  45. package/dist/resolvers.js.map +1 -0
  46. package/dist/stores/activity-store.d.ts +21 -0
  47. package/dist/stores/activity-store.d.ts.map +1 -0
  48. package/dist/stores/activity-store.js +122 -0
  49. package/dist/stores/activity-store.js.map +1 -0
  50. package/dist/stores/admin-store.d.ts +27 -0
  51. package/dist/stores/admin-store.d.ts.map +1 -0
  52. package/dist/stores/admin-store.js +171 -0
  53. package/dist/stores/admin-store.js.map +1 -0
  54. package/dist/stores/agent-store.d.ts +6 -2
  55. package/dist/stores/agent-store.d.ts.map +1 -1
  56. package/dist/stores/agent-store.js +83 -6
  57. package/dist/stores/agent-store.js.map +1 -1
  58. package/dist/stores/approval-store.d.ts +19 -0
  59. package/dist/stores/approval-store.d.ts.map +1 -0
  60. package/dist/stores/approval-store.js +108 -0
  61. package/dist/stores/approval-store.js.map +1 -0
  62. package/dist/stores/chat-store.d.ts +3 -1
  63. package/dist/stores/chat-store.d.ts.map +1 -1
  64. package/dist/stores/chat-store.js +47 -36
  65. package/dist/stores/chat-store.js.map +1 -1
  66. package/dist/stores/comment-store.d.ts +13 -0
  67. package/dist/stores/comment-store.d.ts.map +1 -0
  68. package/dist/stores/comment-store.js +67 -0
  69. package/dist/stores/comment-store.js.map +1 -0
  70. package/dist/stores/cost-store.d.ts +15 -0
  71. package/dist/stores/cost-store.d.ts.map +1 -0
  72. package/dist/stores/cost-store.js +69 -0
  73. package/dist/stores/cost-store.js.map +1 -0
  74. package/dist/stores/criteria-set-store.d.ts +16 -0
  75. package/dist/stores/criteria-set-store.d.ts.map +1 -0
  76. package/dist/stores/criteria-set-store.js +127 -0
  77. package/dist/stores/criteria-set-store.js.map +1 -0
  78. package/dist/stores/document-store.d.ts +21 -0
  79. package/dist/stores/document-store.d.ts.map +1 -0
  80. package/dist/stores/document-store.js +191 -0
  81. package/dist/stores/document-store.js.map +1 -0
  82. package/dist/stores/embed-store.d.ts +11 -0
  83. package/dist/stores/embed-store.d.ts.map +1 -0
  84. package/dist/stores/embed-store.js +71 -0
  85. package/dist/stores/embed-store.js.map +1 -0
  86. package/dist/stores/entity-store.d.ts +7 -2
  87. package/dist/stores/entity-store.d.ts.map +1 -1
  88. package/dist/stores/entity-store.js +163 -37
  89. package/dist/stores/entity-store.js.map +1 -1
  90. package/dist/stores/extraction-store.d.ts +18 -0
  91. package/dist/stores/extraction-store.d.ts.map +1 -0
  92. package/dist/stores/extraction-store.js +170 -0
  93. package/dist/stores/extraction-store.js.map +1 -0
  94. package/dist/stores/factory.d.ts +29 -2
  95. package/dist/stores/factory.d.ts.map +1 -1
  96. package/dist/stores/factory.js +60 -9
  97. package/dist/stores/factory.js.map +1 -1
  98. package/dist/stores/favorites-store.d.ts +13 -0
  99. package/dist/stores/favorites-store.d.ts.map +1 -0
  100. package/dist/stores/favorites-store.js +53 -0
  101. package/dist/stores/favorites-store.js.map +1 -0
  102. package/dist/stores/feedback-store.d.ts +12 -0
  103. package/dist/stores/feedback-store.d.ts.map +1 -0
  104. package/dist/stores/feedback-store.js +59 -0
  105. package/dist/stores/feedback-store.js.map +1 -0
  106. package/dist/stores/inbound-store.d.ts +16 -0
  107. package/dist/stores/inbound-store.d.ts.map +1 -0
  108. package/dist/stores/inbound-store.js +133 -0
  109. package/dist/stores/inbound-store.js.map +1 -0
  110. package/dist/stores/index.d.ts +36 -10
  111. package/dist/stores/index.d.ts.map +1 -1
  112. package/dist/stores/index.js +35 -9
  113. package/dist/stores/index.js.map +1 -1
  114. package/dist/stores/member-store.d.ts +23 -0
  115. package/dist/stores/member-store.d.ts.map +1 -0
  116. package/dist/stores/member-store.js +121 -0
  117. package/dist/stores/member-store.js.map +1 -0
  118. package/dist/stores/memory-store.d.ts +4 -1
  119. package/dist/stores/memory-store.d.ts.map +1 -1
  120. package/dist/stores/memory-store.js +31 -3
  121. package/dist/stores/memory-store.js.map +1 -1
  122. package/dist/stores/nav-config-store.d.ts +13 -0
  123. package/dist/stores/nav-config-store.d.ts.map +1 -0
  124. package/dist/stores/nav-config-store.js +104 -0
  125. package/dist/stores/nav-config-store.js.map +1 -0
  126. package/dist/stores/notification-store.d.ts +15 -0
  127. package/dist/stores/notification-store.d.ts.map +1 -0
  128. package/dist/stores/notification-store.js +88 -0
  129. package/dist/stores/notification-store.js.map +1 -0
  130. package/dist/stores/recent-view-store.d.ts +11 -0
  131. package/dist/stores/recent-view-store.d.ts.map +1 -0
  132. package/dist/stores/recent-view-store.js +39 -0
  133. package/dist/stores/recent-view-store.js.map +1 -0
  134. package/dist/stores/response-store.d.ts +15 -0
  135. package/dist/stores/response-store.d.ts.map +1 -0
  136. package/dist/stores/response-store.js +294 -0
  137. package/dist/stores/response-store.js.map +1 -0
  138. package/dist/stores/share-store.d.ts +14 -0
  139. package/dist/stores/share-store.d.ts.map +1 -0
  140. package/dist/stores/share-store.js +153 -0
  141. package/dist/stores/share-store.js.map +1 -0
  142. package/dist/stores/shared-context-store.d.ts +12 -0
  143. package/dist/stores/shared-context-store.d.ts.map +1 -0
  144. package/dist/stores/shared-context-store.js +55 -0
  145. package/dist/stores/shared-context-store.js.map +1 -0
  146. package/dist/stores/skill-store.d.ts +21 -0
  147. package/dist/stores/skill-store.d.ts.map +1 -0
  148. package/dist/stores/skill-store.js +163 -0
  149. package/dist/stores/skill-store.js.map +1 -0
  150. package/dist/stores/source-store.d.ts +23 -0
  151. package/dist/stores/source-store.d.ts.map +1 -0
  152. package/dist/stores/source-store.js +111 -0
  153. package/dist/stores/source-store.js.map +1 -0
  154. package/dist/stores/task-store.d.ts +2 -1
  155. package/dist/stores/task-store.d.ts.map +1 -1
  156. package/dist/stores/task-store.js +58 -6
  157. package/dist/stores/task-store.js.map +1 -1
  158. package/dist/stores/template-store.d.ts +16 -0
  159. package/dist/stores/template-store.d.ts.map +1 -0
  160. package/dist/stores/template-store.js +136 -0
  161. package/dist/stores/template-store.js.map +1 -0
  162. package/dist/stores/tenant-store.d.ts +2 -1
  163. package/dist/stores/tenant-store.d.ts.map +1 -1
  164. package/dist/stores/tenant-store.js +2 -2
  165. package/dist/stores/tenant-store.js.map +1 -1
  166. package/dist/stores/theme-store.d.ts +11 -0
  167. package/dist/stores/theme-store.d.ts.map +1 -0
  168. package/dist/stores/theme-store.js +41 -0
  169. package/dist/stores/theme-store.js.map +1 -0
  170. package/dist/stores/tool-definition-store.d.ts +18 -0
  171. package/dist/stores/tool-definition-store.d.ts.map +1 -0
  172. package/dist/stores/tool-definition-store.js +129 -0
  173. package/dist/stores/tool-definition-store.js.map +1 -0
  174. package/dist/stores/tool-store.d.ts +21 -2
  175. package/dist/stores/tool-store.d.ts.map +1 -1
  176. package/dist/stores/tool-store.js +112 -2
  177. package/dist/stores/tool-store.js.map +1 -1
  178. package/dist/stores/view-store.d.ts +8 -4
  179. package/dist/stores/view-store.d.ts.map +1 -1
  180. package/dist/stores/view-store.js +94 -14
  181. package/dist/stores/view-store.js.map +1 -1
  182. package/dist/stores/webhook-endpoint-store.d.ts +18 -0
  183. package/dist/stores/webhook-endpoint-store.d.ts.map +1 -0
  184. package/dist/stores/webhook-endpoint-store.js +56 -0
  185. package/dist/stores/webhook-endpoint-store.js.map +1 -0
  186. package/dist/stores/workflow-run-store.d.ts +23 -0
  187. package/dist/stores/workflow-run-store.d.ts.map +1 -0
  188. package/dist/stores/workflow-run-store.js +201 -0
  189. package/dist/stores/workflow-run-store.js.map +1 -0
  190. package/dist/tenant/actions.js +1 -1
  191. package/dist/tenant/context.js +1 -1
  192. package/dist/tenant/index.d.ts +5 -5
  193. package/dist/tenant/index.js +4 -4
  194. package/dist/types/index.d.ts +5 -4
  195. package/dist/types/index.d.ts.map +1 -1
  196. package/dist/types/index.js +1 -1
  197. package/package.json +10 -5
  198. package/dist/__test-utils__/mock-supabase.d.ts +0 -18
  199. package/dist/__test-utils__/mock-supabase.d.ts.map +0 -1
  200. package/dist/__test-utils__/mock-supabase.js +0 -89
  201. package/dist/__test-utils__/mock-supabase.js.map +0 -1
  202. package/dist/auth/claims.test.d.ts +0 -2
  203. package/dist/auth/claims.test.d.ts.map +0 -1
  204. package/dist/auth/claims.test.js +0 -32
  205. package/dist/auth/claims.test.js.map +0 -1
  206. package/dist/auth/permissions.test.d.ts +0 -2
  207. package/dist/auth/permissions.test.d.ts.map +0 -1
  208. package/dist/auth/permissions.test.js +0 -40
  209. package/dist/auth/permissions.test.js.map +0 -1
  210. package/dist/clients/admin.test.d.ts +0 -2
  211. package/dist/clients/admin.test.d.ts.map +0 -1
  212. package/dist/clients/admin.test.js +0 -31
  213. package/dist/clients/admin.test.js.map +0 -1
  214. package/dist/clients/browser.test.d.ts +0 -2
  215. package/dist/clients/browser.test.d.ts.map +0 -1
  216. package/dist/clients/browser.test.js +0 -29
  217. package/dist/clients/browser.test.js.map +0 -1
  218. package/dist/clients/server.test.d.ts +0 -2
  219. package/dist/clients/server.test.d.ts.map +0 -1
  220. package/dist/clients/server.test.js +0 -26
  221. package/dist/clients/server.test.js.map +0 -1
  222. package/dist/stores/agent-store.test.d.ts +0 -2
  223. package/dist/stores/agent-store.test.d.ts.map +0 -1
  224. package/dist/stores/agent-store.test.js +0 -64
  225. package/dist/stores/agent-store.test.js.map +0 -1
  226. package/dist/stores/chat-store.test.d.ts +0 -2
  227. package/dist/stores/chat-store.test.d.ts.map +0 -1
  228. package/dist/stores/chat-store.test.js +0 -83
  229. package/dist/stores/chat-store.test.js.map +0 -1
  230. package/dist/stores/entity-store.test.d.ts +0 -2
  231. package/dist/stores/entity-store.test.d.ts.map +0 -1
  232. package/dist/stores/entity-store.test.js +0 -125
  233. package/dist/stores/entity-store.test.js.map +0 -1
  234. package/dist/stores/factory.test.d.ts +0 -2
  235. package/dist/stores/factory.test.d.ts.map +0 -1
  236. package/dist/stores/factory.test.js +0 -41
  237. package/dist/stores/factory.test.js.map +0 -1
  238. package/dist/stores/memory-store.test.d.ts +0 -2
  239. package/dist/stores/memory-store.test.d.ts.map +0 -1
  240. package/dist/stores/memory-store.test.js +0 -70
  241. package/dist/stores/memory-store.test.js.map +0 -1
  242. package/dist/stores/task-store.test.d.ts +0 -2
  243. package/dist/stores/task-store.test.d.ts.map +0 -1
  244. package/dist/stores/task-store.test.js +0 -86
  245. package/dist/stores/task-store.test.js.map +0 -1
  246. package/dist/stores/tool-store.test.d.ts +0 -2
  247. package/dist/stores/tool-store.test.d.ts.map +0 -1
  248. package/dist/stores/tool-store.test.js +0 -56
  249. package/dist/stores/tool-store.test.js.map +0 -1
  250. package/dist/stores/view-store.test.d.ts +0 -2
  251. package/dist/stores/view-store.test.d.ts.map +0 -1
  252. package/dist/stores/view-store.test.js +0 -57
  253. package/dist/stores/view-store.test.js.map +0 -1
  254. package/dist/tenant/constants.test.d.ts +0 -2
  255. package/dist/tenant/constants.test.d.ts.map +0 -1
  256. package/dist/tenant/constants.test.js +0 -25
  257. package/dist/tenant/constants.test.js.map +0 -1
@@ -0,0 +1,133 @@
1
+ function mapEmailRow(row) {
2
+ return {
3
+ id: row.id,
4
+ tenant_id: row.tenant_id,
5
+ user_id: row.user_id,
6
+ from_address: row.from_address,
7
+ from_name: row.from_name,
8
+ to_address: row.to_address,
9
+ subject: row.subject ?? '',
10
+ text_body: row.text_body,
11
+ html_body: row.html_body,
12
+ processing_status: row.processing_status ?? 'pending',
13
+ processing_result: row.processing_result,
14
+ processed_at: row.processed_at,
15
+ created_at: row.created_at,
16
+ };
17
+ }
18
+ function mapWebhookEndpointRow(row) {
19
+ return {
20
+ id: row.id,
21
+ tenant_id: row.tenant_id,
22
+ token: row.token,
23
+ name: row.name,
24
+ entity_type_slug: row.entity_type_slug,
25
+ field_mapping: (row.field_mapping ?? {}),
26
+ tags: row.tags ?? [],
27
+ enabled: row.enabled ?? true,
28
+ last_received_at: row.last_received_at,
29
+ items_created: row.items_created ?? 0,
30
+ created_at: row.created_at,
31
+ updated_at: row.updated_at,
32
+ };
33
+ }
34
+ /** Supabase-backed implementation of InboundStore. */
35
+ export class SupabaseInboundStore {
36
+ client;
37
+ constructor(client) {
38
+ this.client = client;
39
+ }
40
+ async storeEmail(input) {
41
+ const { data, error } = await this.client
42
+ .from('inbound_emails')
43
+ .insert({
44
+ tenant_id: input.tenant_id,
45
+ user_id: input.user_id,
46
+ from_address: input.from_address,
47
+ from_name: input.from_name ?? null,
48
+ to_address: input.to_address,
49
+ subject: input.subject,
50
+ text_body: input.text_body ?? null,
51
+ html_body: input.html_body ?? null,
52
+ })
53
+ .select('*')
54
+ .single();
55
+ if (error)
56
+ throw error;
57
+ return mapEmailRow(data);
58
+ }
59
+ async getEmail(emailId) {
60
+ const { data, error } = await this.client
61
+ .from('inbound_emails')
62
+ .select('*')
63
+ .eq('id', emailId)
64
+ .maybeSingle();
65
+ if (error)
66
+ throw error;
67
+ return data ? mapEmailRow(data) : null;
68
+ }
69
+ async listEmails(tenantId, status) {
70
+ let q = this.client
71
+ .from('inbound_emails')
72
+ .select('*')
73
+ .eq('tenant_id', tenantId)
74
+ .order('created_at', { ascending: false });
75
+ if (status) {
76
+ q = q.eq('processing_status', status);
77
+ }
78
+ const { data, error } = await q;
79
+ if (error)
80
+ throw error;
81
+ return (data ?? []).map(mapEmailRow);
82
+ }
83
+ async markEmailProcessed(emailId, result) {
84
+ const { error } = await this.client
85
+ .from('inbound_emails')
86
+ .update({
87
+ processing_status: 'processed',
88
+ processing_result: result,
89
+ processed_at: new Date().toISOString(),
90
+ })
91
+ .eq('id', emailId);
92
+ if (error)
93
+ throw error;
94
+ }
95
+ async getWebhookEndpoint(token) {
96
+ const { data, error } = await this.client
97
+ .from('inbound_webhook_endpoints')
98
+ .select('*')
99
+ .eq('token', token)
100
+ .maybeSingle();
101
+ if (error)
102
+ throw error;
103
+ return data ? mapWebhookEndpointRow(data) : null;
104
+ }
105
+ async listWebhookEndpoints(tenantId) {
106
+ const { data, error } = await this.client
107
+ .from('inbound_webhook_endpoints')
108
+ .select('*')
109
+ .eq('tenant_id', tenantId);
110
+ if (error)
111
+ throw error;
112
+ return (data ?? []).map(mapWebhookEndpointRow);
113
+ }
114
+ async createWebhookEndpoint(input) {
115
+ const { data, error } = await this.client
116
+ .from('inbound_webhook_endpoints')
117
+ .insert({
118
+ tenant_id: input.tenant_id,
119
+ token: input.token,
120
+ name: input.name,
121
+ entity_type_slug: input.entity_type_slug ?? null,
122
+ field_mapping: input.field_mapping,
123
+ tags: input.tags ?? [],
124
+ enabled: input.enabled ?? true,
125
+ })
126
+ .select('*')
127
+ .single();
128
+ if (error)
129
+ throw error;
130
+ return mapWebhookEndpointRow(data);
131
+ }
132
+ }
133
+ //# sourceMappingURL=inbound-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound-store.js","sourceRoot":"","sources":["../../src/stores/inbound-store.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,37 @@
1
- export { SupabaseEntityStore } from "./entity-store";
2
- export { SupabaseAgentStore } from "./agent-store";
3
- export { SupabaseChatStore } from "./chat-store";
4
- export { SupabaseTenantStore } from "./tenant-store";
5
- export { SupabaseToolStore } from "./tool-store";
6
- export { SupabaseTaskStore } from "./task-store";
7
- export { SupabaseMemoryStore } from "./memory-store";
8
- export { SupabaseViewStore } from "./view-store";
9
- export { createSupabaseStores } from "./factory";
10
- export type { SupabaseStores } from "./factory";
1
+ export { SupabaseEntityStore } from './entity-store.js';
2
+ export { SupabaseAgentStore } from './agent-store.js';
3
+ export { SupabaseChatStore } from './chat-store.js';
4
+ export { SupabaseTenantStore } from './tenant-store.js';
5
+ export { SupabaseToolStore, toToolRun, toToolSession } from './tool-store.js';
6
+ export { SupabaseTaskStore } from './task-store.js';
7
+ export { SupabaseMemoryStore } from './memory-store.js';
8
+ export { SupabaseViewStore } from './view-store.js';
9
+ export { SupabaseActivityStore, getDateLabel, groupActivities } from './activity-store.js';
10
+ export { SupabaseCriteriaSetStore } from './criteria-set-store.js';
11
+ export { SupabaseResponseStore } from './response-store.js';
12
+ export { SupabaseWorkflowRunStore } from './workflow-run-store.js';
13
+ export { SupabaseMemberStore } from './member-store.js';
14
+ export { SupabaseAdminStore } from './admin-store.js';
15
+ export { SupabaseDocumentStore } from './document-store.js';
16
+ export { SupabaseCommentStore } from './comment-store.js';
17
+ export { SupabaseNotificationStore } from './notification-store.js';
18
+ export { SupabaseNavConfigStore } from './nav-config-store.js';
19
+ export { SupabaseThemeStore } from './theme-store.js';
20
+ export { SupabaseCostStore } from './cost-store.js';
21
+ export { SupabaseShareStore } from './share-store.js';
22
+ export { SupabaseSkillStore } from './skill-store.js';
23
+ export { SupabaseSourceStore } from './source-store.js';
24
+ export { SupabaseTemplateStore } from './template-store.js';
25
+ export { SupabaseExtractionStore } from './extraction-store.js';
26
+ export { SupabaseToolDefinitionStore } from './tool-definition-store.js';
27
+ export { SupabaseFeedbackStore } from './feedback-store.js';
28
+ export { SupabaseRecentViewStore } from './recent-view-store.js';
29
+ export { SupabaseSharedContextStore } from './shared-context-store.js';
30
+ export { SupabaseInboundStore } from './inbound-store.js';
31
+ export { SupabaseFavoritesStore } from './favorites-store.js';
32
+ export { SupabaseApprovalStore } from './approval-store.js';
33
+ export { SupabaseWebhookEndpointStore } from './webhook-endpoint-store.js';
34
+ export { SupabaseEmbedStore } from './embed-store.js';
35
+ export { createSupabaseStores } from './factory.js';
36
+ export type { SupabaseStores } from './factory.js';
11
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,10 +1,36 @@
1
- export { SupabaseEntityStore } from "./entity-store";
2
- export { SupabaseAgentStore } from "./agent-store";
3
- export { SupabaseChatStore } from "./chat-store";
4
- export { SupabaseTenantStore } from "./tenant-store";
5
- export { SupabaseToolStore } from "./tool-store";
6
- export { SupabaseTaskStore } from "./task-store";
7
- export { SupabaseMemoryStore } from "./memory-store";
8
- export { SupabaseViewStore } from "./view-store";
9
- export { createSupabaseStores } from "./factory";
1
+ export { SupabaseEntityStore } from './entity-store.js';
2
+ export { SupabaseAgentStore } from './agent-store.js';
3
+ export { SupabaseChatStore } from './chat-store.js';
4
+ export { SupabaseTenantStore } from './tenant-store.js';
5
+ export { SupabaseToolStore, toToolRun, toToolSession } from './tool-store.js';
6
+ export { SupabaseTaskStore } from './task-store.js';
7
+ export { SupabaseMemoryStore } from './memory-store.js';
8
+ export { SupabaseViewStore } from './view-store.js';
9
+ export { SupabaseActivityStore, getDateLabel, groupActivities } from './activity-store.js';
10
+ export { SupabaseCriteriaSetStore } from './criteria-set-store.js';
11
+ export { SupabaseResponseStore } from './response-store.js';
12
+ export { SupabaseWorkflowRunStore } from './workflow-run-store.js';
13
+ export { SupabaseMemberStore } from './member-store.js';
14
+ export { SupabaseAdminStore } from './admin-store.js';
15
+ export { SupabaseDocumentStore } from './document-store.js';
16
+ export { SupabaseCommentStore } from './comment-store.js';
17
+ export { SupabaseNotificationStore } from './notification-store.js';
18
+ export { SupabaseNavConfigStore } from './nav-config-store.js';
19
+ export { SupabaseThemeStore } from './theme-store.js';
20
+ export { SupabaseCostStore } from './cost-store.js';
21
+ export { SupabaseShareStore } from './share-store.js';
22
+ export { SupabaseSkillStore } from './skill-store.js';
23
+ export { SupabaseSourceStore } from './source-store.js';
24
+ export { SupabaseTemplateStore } from './template-store.js';
25
+ export { SupabaseExtractionStore } from './extraction-store.js';
26
+ export { SupabaseToolDefinitionStore } from './tool-definition-store.js';
27
+ export { SupabaseFeedbackStore } from './feedback-store.js';
28
+ export { SupabaseRecentViewStore } from './recent-view-store.js';
29
+ export { SupabaseSharedContextStore } from './shared-context-store.js';
30
+ export { SupabaseInboundStore } from './inbound-store.js';
31
+ export { SupabaseFavoritesStore } from './favorites-store.js';
32
+ export { SupabaseApprovalStore } from './approval-store.js';
33
+ export { SupabaseWebhookEndpointStore } from './webhook-endpoint-store.js';
34
+ export { SupabaseEmbedStore } from './embed-store.js';
35
+ export { createSupabaseStores } from './factory.js';
10
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { MemberStore, MemberRecord, RoleRecord } from '@sprinterai/core';
2
+ import type { SupabaseClient } from '@supabase/supabase-js';
3
+ import type { Database } from '../generated/database-types.js';
4
+ /** Supabase-backed implementation of MemberStore. */
5
+ export declare class SupabaseMemberStore implements MemberStore {
6
+ private client;
7
+ constructor(client: SupabaseClient<Database>);
8
+ listMembers(): Promise<MemberRecord[]>;
9
+ listRoles(): Promise<RoleRecord[]>;
10
+ getRole(id: string): Promise<RoleRecord | null>;
11
+ inviteMember(email: string, roleId: string): Promise<void>;
12
+ updateMemberRole(userId: string, roleId: string): Promise<void>;
13
+ removeMember(userId: string): Promise<void>;
14
+ createRole(input: {
15
+ name: string;
16
+ slug: string;
17
+ description?: string;
18
+ permissions: string[];
19
+ }): Promise<RoleRecord>;
20
+ updateRole(id: string, input: Partial<RoleRecord>): Promise<RoleRecord | null>;
21
+ deleteRole(id: string): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=member-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-store.d.ts","sourceRoot":"","sources":["../../src/stores/member-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAsB5D,qDAAqD;AACrD,qBAAa,mBAAoB,YAAW,WAAW;IACzC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAyBtC,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO/C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,UAAU,CAAC,KAAK,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,OAAO,CAAC,UAAU,CAAC;IAcjB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAyB9E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Map a DB roles row to a RoleRecord.
3
+ * The DB schema lacks `description` and `permissions` columns that RoleRecord
4
+ * expects, and has extra columns (`updated_at`, `is_global_role`) that
5
+ * RoleRecord does not. This function bridges the gap with explicit defaults.
6
+ */
7
+ function toRoleRecord(row) {
8
+ return {
9
+ id: row.id,
10
+ tenant_id: row.tenant_id ?? '',
11
+ name: row.name,
12
+ slug: row.slug,
13
+ description: null,
14
+ permissions: [],
15
+ created_at: row.created_at,
16
+ };
17
+ }
18
+ /** Supabase-backed implementation of MemberStore. */
19
+ export class SupabaseMemberStore {
20
+ client;
21
+ constructor(client) {
22
+ this.client = client;
23
+ }
24
+ async listMembers() {
25
+ const { data, error } = await this.client
26
+ .from('user_tenants')
27
+ .select('user_id, role_id, joined_at:created_at, profile:profiles(email, display_name, photo_url), role:roles(name)')
28
+ .order('created_at', { ascending: false });
29
+ if (error)
30
+ throw error;
31
+ return (data ?? []).map((row) => {
32
+ const profile = (row.profile ?? {});
33
+ const role = (row.role ?? {});
34
+ return {
35
+ user_id: row.user_id,
36
+ email: profile.email ?? null,
37
+ display_name: profile.display_name ?? null,
38
+ avatar_url: profile.photo_url ?? null,
39
+ role_id: row.role_id ?? null,
40
+ role_name: role.name ?? null,
41
+ joined_at: row.joined_at,
42
+ };
43
+ });
44
+ }
45
+ async listRoles() {
46
+ const { data, error } = await this.client.from('roles').select('*').order('name');
47
+ if (error)
48
+ throw error;
49
+ return (data ?? []).map(toRoleRecord);
50
+ }
51
+ async getRole(id) {
52
+ const { data, error } = await this.client.from('roles').select('*').eq('id', id).maybeSingle();
53
+ if (error)
54
+ throw error;
55
+ return data ? toRoleRecord(data) : null;
56
+ }
57
+ async inviteMember(email, roleId) {
58
+ // The invitations table is not in our schema, so use a raw insert approach
59
+ const tableName = 'user_tenants';
60
+ const { error } = await this.client.from(tableName).insert({
61
+ user_id: email, // Placeholder: real implementation would resolve email to user_id
62
+ tenant_id: '00000000-0000-0000-0000-000000000000',
63
+ role_id: roleId,
64
+ });
65
+ if (error)
66
+ throw error;
67
+ }
68
+ async updateMemberRole(userId, roleId) {
69
+ const { data, error } = await this.client
70
+ .from('user_tenants')
71
+ .update({ role_id: roleId })
72
+ .eq('user_id', userId)
73
+ .select('*');
74
+ if (error)
75
+ throw error;
76
+ if (!data || data.length === 0) {
77
+ throw new Error('Member not found or no permission to update');
78
+ }
79
+ }
80
+ async removeMember(userId) {
81
+ const { error } = await this.client.from('user_tenants').delete().eq('user_id', userId);
82
+ if (error)
83
+ throw error;
84
+ }
85
+ async createRole(input) {
86
+ const { data, error } = await this.client
87
+ .from('roles')
88
+ .insert({
89
+ name: input.name,
90
+ slug: input.slug,
91
+ })
92
+ .select('*')
93
+ .single();
94
+ if (error)
95
+ throw error;
96
+ return toRoleRecord(data);
97
+ }
98
+ async updateRole(id, input) {
99
+ const { id: _id, created_at: _ca, tenant_id: _tid, description: _desc, permissions: _perms, ...rest } = input;
100
+ const updates = {
101
+ ...rest,
102
+ updated_at: new Date().toISOString(),
103
+ };
104
+ const { data, error } = await this.client
105
+ .from('roles')
106
+ .update(updates)
107
+ .eq('id', id)
108
+ .select('*');
109
+ if (error)
110
+ throw error;
111
+ if (!data || data.length === 0)
112
+ return null;
113
+ return toRoleRecord(data[0]);
114
+ }
115
+ async deleteRole(id) {
116
+ const { error } = await this.client.from('roles').delete().eq('id', id);
117
+ if (error)
118
+ throw error;
119
+ }
120
+ }
121
+ //# sourceMappingURL=member-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-store.js","sourceRoot":"","sources":["../../src/stores/member-store.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import type { MemoryStore, UserMemory, MemorySource } from '@sprinterai/core';
2
2
  import type { SupabaseClient } from '@supabase/supabase-js';
3
+ import type { Database } from '../generated/database-types.js';
3
4
  /** Supabase-backed implementation of MemoryStore. */
4
5
  export declare class SupabaseMemoryStore implements MemoryStore {
5
6
  private client;
6
- constructor(client: SupabaseClient);
7
+ constructor(client: SupabaseClient<Database>);
7
8
  getUserMemories(userId: string, options?: {
8
9
  limit?: number;
9
10
  source?: MemorySource;
@@ -13,7 +14,9 @@ export declare class SupabaseMemoryStore implements MemoryStore {
13
14
  content: string;
14
15
  source: MemorySource;
15
16
  }): Promise<UserMemory>;
17
+ updateMemory(id: string, content: string): Promise<UserMemory>;
16
18
  deleteMemory(id: string): Promise<void>;
19
+ deleteAllMemories(userId: string): Promise<void>;
17
20
  searchSimilarMessages(query: string, options?: {
18
21
  userId?: string;
19
22
  limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/stores/memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qDAAqD;AACrD,qBAAa,mBAAoB,YAAW,WAAW;IACzC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAEpC,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,YAAY,CAAC;KACvB,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBlB,UAAU,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,YAAY,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,CAAC;IAejB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;CAmBzB"}
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/stores/memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAe5D,qDAAqD;AACrD,qBAAa,mBAAoB,YAAW,WAAW;IACzC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,YAAY,CAAC;KACvB,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBlB,UAAU,CAAC,KAAK,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,YAAY,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,CAAC;IAejB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAc9D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;CAmBzB"}
@@ -1,3 +1,13 @@
1
+ function mapMemoryRow(row) {
2
+ return {
3
+ id: row.id,
4
+ user_id: row.user_id,
5
+ content: row.content,
6
+ source: row.source,
7
+ created_at: row.created_at,
8
+ updated_at: row.updated_at,
9
+ };
10
+ }
1
11
  /** Supabase-backed implementation of MemoryStore. */
2
12
  export class SupabaseMemoryStore {
3
13
  client;
@@ -17,7 +27,7 @@ export class SupabaseMemoryStore {
17
27
  const { data, error } = await q;
18
28
  if (error)
19
29
  throw error;
20
- return (data ?? []);
30
+ return (data ?? []).map(mapMemoryRow);
21
31
  }
22
32
  async saveMemory(input) {
23
33
  const { data, error } = await this.client
@@ -31,13 +41,31 @@ export class SupabaseMemoryStore {
31
41
  .single();
32
42
  if (error)
33
43
  throw error;
34
- return data;
44
+ return mapMemoryRow(data);
45
+ }
46
+ async updateMemory(id, content) {
47
+ const { data, error } = await this.client
48
+ .from('user_memories')
49
+ .update({ content, updated_at: new Date().toISOString() })
50
+ .eq('id', id)
51
+ .select('*');
52
+ if (error)
53
+ throw error;
54
+ if (!data || data.length === 0) {
55
+ throw new Error('Memory not found or no permission to update');
56
+ }
57
+ return mapMemoryRow(data[0]);
35
58
  }
36
59
  async deleteMemory(id) {
37
60
  const { error } = await this.client.from('user_memories').delete().eq('id', id);
38
61
  if (error)
39
62
  throw error;
40
63
  }
64
+ async deleteAllMemories(userId) {
65
+ const { error } = await this.client.from('user_memories').delete().eq('user_id', userId);
66
+ if (error)
67
+ throw error;
68
+ }
41
69
  async searchSimilarMessages(query, options) {
42
70
  // Fallback to ilike search when pgvector is not available.
43
71
  // In production, this would use an RPC with embedding similarity.
@@ -53,7 +81,7 @@ export class SupabaseMemoryStore {
53
81
  const { data, error } = await q;
54
82
  if (error)
55
83
  throw error;
56
- return (data ?? []);
84
+ return (data ?? []).map(mapMemoryRow);
57
85
  }
58
86
  }
59
87
  //# sourceMappingURL=memory-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/stores/memory-store.ts"],"names":[],"mappings":"AAGA,qDAAqD;AACrD,MAAM,OAAO,mBAAmB;IACV;IAApB,YAAoB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAE9C,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,OAGC;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;aAChB,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aACrB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAElC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,CAAC,IAAI,IAAI,EAAE,CAAiB,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAIhB;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC;YACN,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;aACD,MAAM,CAAC,GAAG,CAAC;aACX,MAAM,EAAE,CAAC;QAEZ,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,IAAkB,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEhF,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,KAAa,EACb,OAGC;QAED,2DAA2D;QAC3D,kEAAkE;QAClE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;aAChB,IAAI,CAAC,eAAe,CAAC;aACrB,MAAM,CAAC,GAAG,CAAC;aACX,KAAK,CAAC,SAAS,EAAE,IAAI,KAAK,GAAG,CAAC;aAC9B,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAElC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,CAAC,IAAI,IAAI,EAAE,CAAiB,CAAC;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/stores/memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { NavConfigStore, NavConfigOverride, NavConfigOverrideRecord } from '@sprinterai/core';
2
+ import type { SupabaseClient } from '@supabase/supabase-js';
3
+ import type { Database } from '../generated/database-types.js';
4
+ /** Supabase-backed implementation of NavConfigStore using tenant_settings. */
5
+ export declare class SupabaseNavConfigStore implements NavConfigStore {
6
+ private client;
7
+ constructor(client: SupabaseClient<Database>);
8
+ getTenantOverride(tenantId: string): Promise<NavConfigOverrideRecord | null>;
9
+ getUserOverride(tenantId: string, userId: string): Promise<NavConfigOverrideRecord | null>;
10
+ saveOverride(tenantId: string, config: NavConfigOverride, scope: 'tenant' | 'user', userId?: string): Promise<NavConfigOverrideRecord>;
11
+ private upsertSetting;
12
+ }
13
+ //# sourceMappingURL=nav-config-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-config-store.d.ts","sourceRoot":"","sources":["../../src/stores/nav-config-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;AAqBlE,8EAA8E;AAC9E,qBAAa,sBAAuB,YAAW,cAAc;IAC/C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAe5E,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAe1F,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC;YAUrB,aAAa;CAgD5B"}
@@ -0,0 +1,104 @@
1
+ const NAV_CONFIG_KEY = 'nav_config';
2
+ /**
3
+ * Map a DB tenant_settings row to a NavConfigOverrideRecord.
4
+ * The `value` column is Json; cast to NavConfigOverride.
5
+ */
6
+ function toOverrideRecord(row, userId) {
7
+ return {
8
+ id: row.id,
9
+ tenant_id: row.tenant_id,
10
+ user_id: userId,
11
+ config: row.value, // Json -> NavConfigOverride
12
+ created_at: row.created_at,
13
+ updated_at: row.updated_at,
14
+ };
15
+ }
16
+ /** Supabase-backed implementation of NavConfigStore using tenant_settings. */
17
+ export class SupabaseNavConfigStore {
18
+ client;
19
+ constructor(client) {
20
+ this.client = client;
21
+ }
22
+ async getTenantOverride(tenantId) {
23
+ const { data, error } = await this.client
24
+ .from('tenant_settings')
25
+ .select('*')
26
+ .eq('tenant_id', tenantId)
27
+ .eq('key', NAV_CONFIG_KEY)
28
+ .is('user_id', null)
29
+ .maybeSingle();
30
+ if (error)
31
+ throw new Error(`Failed to get tenant nav override: ${error.message}`);
32
+ if (!data)
33
+ return null;
34
+ return toOverrideRecord(data, null);
35
+ }
36
+ async getUserOverride(tenantId, userId) {
37
+ const { data, error } = await this.client
38
+ .from('tenant_settings')
39
+ .select('*')
40
+ .eq('tenant_id', tenantId)
41
+ .eq('key', NAV_CONFIG_KEY)
42
+ .eq('user_id', userId)
43
+ .maybeSingle();
44
+ if (error)
45
+ throw new Error(`Failed to get user nav override: ${error.message}`);
46
+ if (!data)
47
+ return null;
48
+ return toOverrideRecord(data, userId);
49
+ }
50
+ async saveOverride(tenantId, config, scope, userId) {
51
+ if (scope === 'user') {
52
+ if (!userId) {
53
+ throw new Error('userId is required for user-scoped nav config overrides');
54
+ }
55
+ return this.upsertSetting(tenantId, config, userId);
56
+ }
57
+ return this.upsertSetting(tenantId, config, null);
58
+ }
59
+ async upsertSetting(tenantId, config, userId) {
60
+ // Check if setting already exists
61
+ const query = this.client
62
+ .from('tenant_settings')
63
+ .select('id')
64
+ .eq('tenant_id', tenantId)
65
+ .eq('key', NAV_CONFIG_KEY);
66
+ const { data: existing } = userId
67
+ ? await query.eq('user_id', userId).maybeSingle()
68
+ : await query.is('user_id', null).maybeSingle();
69
+ const now = new Date().toISOString();
70
+ if (existing) {
71
+ const updateQuery = this.client
72
+ .from('tenant_settings')
73
+ .update({ value: config, updated_at: now }) // NavConfigOverride -> Json
74
+ .eq('id', existing.id)
75
+ .select('*');
76
+ const { data, error } = await updateQuery;
77
+ if (error)
78
+ throw new Error(`Failed to update nav config: ${error.message}`);
79
+ if (!data || data.length === 0)
80
+ throw new Error('No data returned after updating nav config');
81
+ return toOverrideRecord(data[0], userId);
82
+ }
83
+ else {
84
+ const insertRow = {
85
+ tenant_id: tenantId,
86
+ key: NAV_CONFIG_KEY,
87
+ value: config, // NavConfigOverride -> Json
88
+ updated_at: now,
89
+ };
90
+ if (userId)
91
+ insertRow.user_id = userId;
92
+ const { data, error } = await this.client
93
+ .from('tenant_settings')
94
+ .insert(insertRow)
95
+ .select('*');
96
+ if (error)
97
+ throw new Error(`Failed to insert nav config: ${error.message}`);
98
+ if (!data || data.length === 0)
99
+ throw new Error('No data returned after inserting nav config');
100
+ return toOverrideRecord(data[0], userId);
101
+ }
102
+ }
103
+ }
104
+ //# sourceMappingURL=nav-config-store.js.map