@sprinterai/supabase 0.3.0 → 0.5.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 (258) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auth/adapter.js +3 -3
  3. package/dist/auth/guards.d.ts +27 -0
  4. package/dist/auth/guards.d.ts.map +1 -0
  5. package/dist/auth/guards.js +61 -0
  6. package/dist/auth/guards.js.map +1 -0
  7. package/dist/auth/index.d.ts +6 -4
  8. package/dist/auth/index.d.ts.map +1 -1
  9. package/dist/auth/index.js +5 -3
  10. package/dist/auth/index.js.map +1 -1
  11. package/dist/auth/permissions.d.ts +9 -1
  12. package/dist/auth/permissions.d.ts.map +1 -1
  13. package/dist/auth/permissions.js +13 -0
  14. package/dist/auth/permissions.js.map +1 -1
  15. package/dist/clients/admin.d.ts +3 -1
  16. package/dist/clients/admin.d.ts.map +1 -1
  17. package/dist/clients/admin.js +3 -3
  18. package/dist/clients/admin.js.map +1 -1
  19. package/dist/clients/browser.d.ts +3 -1
  20. package/dist/clients/browser.d.ts.map +1 -1
  21. package/dist/clients/browser.js +3 -3
  22. package/dist/clients/browser.js.map +1 -1
  23. package/dist/clients/index.d.ts +3 -3
  24. package/dist/clients/index.js +3 -3
  25. package/dist/clients/server.d.ts +2 -1
  26. package/dist/clients/server.d.ts.map +1 -1
  27. package/dist/clients/server.js +1 -1
  28. package/dist/clients/server.js.map +1 -1
  29. package/dist/generated/database-types.d.ts +4020 -0
  30. package/dist/generated/database-types.d.ts.map +1 -0
  31. package/dist/generated/database-types.js +97 -0
  32. package/dist/generated/database-types.js.map +1 -0
  33. package/dist/generated/index.d.ts +48 -0
  34. package/dist/generated/index.d.ts.map +1 -0
  35. package/dist/generated/index.js +2 -0
  36. package/dist/generated/index.js.map +1 -0
  37. package/dist/index.d.ts +12 -10
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +7 -5
  40. package/dist/index.js.map +1 -1
  41. package/dist/realtime/index.d.ts +2 -2
  42. package/dist/realtime/index.js +1 -1
  43. package/dist/resolvers.d.ts +23 -0
  44. package/dist/resolvers.d.ts.map +1 -0
  45. package/dist/resolvers.js +57 -0
  46. package/dist/resolvers.js.map +1 -0
  47. package/dist/stores/activity-store.d.ts +21 -0
  48. package/dist/stores/activity-store.d.ts.map +1 -0
  49. package/dist/stores/activity-store.js +122 -0
  50. package/dist/stores/activity-store.js.map +1 -0
  51. package/dist/stores/admin-store.d.ts +27 -0
  52. package/dist/stores/admin-store.d.ts.map +1 -0
  53. package/dist/stores/admin-store.js +171 -0
  54. package/dist/stores/admin-store.js.map +1 -0
  55. package/dist/stores/agent-store.d.ts +6 -2
  56. package/dist/stores/agent-store.d.ts.map +1 -1
  57. package/dist/stores/agent-store.js +83 -6
  58. package/dist/stores/agent-store.js.map +1 -1
  59. package/dist/stores/approval-store.d.ts +19 -0
  60. package/dist/stores/approval-store.d.ts.map +1 -0
  61. package/dist/stores/approval-store.js +108 -0
  62. package/dist/stores/approval-store.js.map +1 -0
  63. package/dist/stores/chat-store.d.ts +2 -1
  64. package/dist/stores/chat-store.d.ts.map +1 -1
  65. package/dist/stores/chat-store.js +46 -36
  66. package/dist/stores/chat-store.js.map +1 -1
  67. package/dist/stores/comment-store.d.ts +13 -0
  68. package/dist/stores/comment-store.d.ts.map +1 -0
  69. package/dist/stores/comment-store.js +67 -0
  70. package/dist/stores/comment-store.js.map +1 -0
  71. package/dist/stores/cost-store.d.ts +15 -0
  72. package/dist/stores/cost-store.d.ts.map +1 -0
  73. package/dist/stores/cost-store.js +69 -0
  74. package/dist/stores/cost-store.js.map +1 -0
  75. package/dist/stores/criteria-set-store.d.ts +16 -0
  76. package/dist/stores/criteria-set-store.d.ts.map +1 -0
  77. package/dist/stores/criteria-set-store.js +127 -0
  78. package/dist/stores/criteria-set-store.js.map +1 -0
  79. package/dist/stores/document-store.d.ts +21 -0
  80. package/dist/stores/document-store.d.ts.map +1 -0
  81. package/dist/stores/document-store.js +191 -0
  82. package/dist/stores/document-store.js.map +1 -0
  83. package/dist/stores/embed-store.d.ts +11 -0
  84. package/dist/stores/embed-store.d.ts.map +1 -0
  85. package/dist/stores/embed-store.js +71 -0
  86. package/dist/stores/embed-store.js.map +1 -0
  87. package/dist/stores/entity-store.d.ts +7 -2
  88. package/dist/stores/entity-store.d.ts.map +1 -1
  89. package/dist/stores/entity-store.js +163 -37
  90. package/dist/stores/entity-store.js.map +1 -1
  91. package/dist/stores/extraction-store.d.ts +18 -0
  92. package/dist/stores/extraction-store.d.ts.map +1 -0
  93. package/dist/stores/extraction-store.js +170 -0
  94. package/dist/stores/extraction-store.js.map +1 -0
  95. package/dist/stores/factory.d.ts +29 -2
  96. package/dist/stores/factory.d.ts.map +1 -1
  97. package/dist/stores/factory.js +60 -9
  98. package/dist/stores/factory.js.map +1 -1
  99. package/dist/stores/favorites-store.d.ts +13 -0
  100. package/dist/stores/favorites-store.d.ts.map +1 -0
  101. package/dist/stores/favorites-store.js +53 -0
  102. package/dist/stores/favorites-store.js.map +1 -0
  103. package/dist/stores/feedback-store.d.ts +12 -0
  104. package/dist/stores/feedback-store.d.ts.map +1 -0
  105. package/dist/stores/feedback-store.js +59 -0
  106. package/dist/stores/feedback-store.js.map +1 -0
  107. package/dist/stores/inbound-store.d.ts +16 -0
  108. package/dist/stores/inbound-store.d.ts.map +1 -0
  109. package/dist/stores/inbound-store.js +133 -0
  110. package/dist/stores/inbound-store.js.map +1 -0
  111. package/dist/stores/index.d.ts +36 -10
  112. package/dist/stores/index.d.ts.map +1 -1
  113. package/dist/stores/index.js +35 -9
  114. package/dist/stores/index.js.map +1 -1
  115. package/dist/stores/member-store.d.ts +23 -0
  116. package/dist/stores/member-store.d.ts.map +1 -0
  117. package/dist/stores/member-store.js +121 -0
  118. package/dist/stores/member-store.js.map +1 -0
  119. package/dist/stores/memory-store.d.ts +4 -1
  120. package/dist/stores/memory-store.d.ts.map +1 -1
  121. package/dist/stores/memory-store.js +31 -3
  122. package/dist/stores/memory-store.js.map +1 -1
  123. package/dist/stores/nav-config-store.d.ts +13 -0
  124. package/dist/stores/nav-config-store.d.ts.map +1 -0
  125. package/dist/stores/nav-config-store.js +104 -0
  126. package/dist/stores/nav-config-store.js.map +1 -0
  127. package/dist/stores/notification-store.d.ts +15 -0
  128. package/dist/stores/notification-store.d.ts.map +1 -0
  129. package/dist/stores/notification-store.js +88 -0
  130. package/dist/stores/notification-store.js.map +1 -0
  131. package/dist/stores/recent-view-store.d.ts +11 -0
  132. package/dist/stores/recent-view-store.d.ts.map +1 -0
  133. package/dist/stores/recent-view-store.js +39 -0
  134. package/dist/stores/recent-view-store.js.map +1 -0
  135. package/dist/stores/response-store.d.ts +15 -0
  136. package/dist/stores/response-store.d.ts.map +1 -0
  137. package/dist/stores/response-store.js +294 -0
  138. package/dist/stores/response-store.js.map +1 -0
  139. package/dist/stores/share-store.d.ts +14 -0
  140. package/dist/stores/share-store.d.ts.map +1 -0
  141. package/dist/stores/share-store.js +153 -0
  142. package/dist/stores/share-store.js.map +1 -0
  143. package/dist/stores/shared-context-store.d.ts +12 -0
  144. package/dist/stores/shared-context-store.d.ts.map +1 -0
  145. package/dist/stores/shared-context-store.js +55 -0
  146. package/dist/stores/shared-context-store.js.map +1 -0
  147. package/dist/stores/skill-store.d.ts +21 -0
  148. package/dist/stores/skill-store.d.ts.map +1 -0
  149. package/dist/stores/skill-store.js +163 -0
  150. package/dist/stores/skill-store.js.map +1 -0
  151. package/dist/stores/source-store.d.ts +23 -0
  152. package/dist/stores/source-store.d.ts.map +1 -0
  153. package/dist/stores/source-store.js +111 -0
  154. package/dist/stores/source-store.js.map +1 -0
  155. package/dist/stores/task-store.d.ts +2 -1
  156. package/dist/stores/task-store.d.ts.map +1 -1
  157. package/dist/stores/task-store.js +58 -6
  158. package/dist/stores/task-store.js.map +1 -1
  159. package/dist/stores/template-store.d.ts +16 -0
  160. package/dist/stores/template-store.d.ts.map +1 -0
  161. package/dist/stores/template-store.js +136 -0
  162. package/dist/stores/template-store.js.map +1 -0
  163. package/dist/stores/tenant-store.d.ts +2 -1
  164. package/dist/stores/tenant-store.d.ts.map +1 -1
  165. package/dist/stores/tenant-store.js +2 -2
  166. package/dist/stores/tenant-store.js.map +1 -1
  167. package/dist/stores/theme-store.d.ts +11 -0
  168. package/dist/stores/theme-store.d.ts.map +1 -0
  169. package/dist/stores/theme-store.js +41 -0
  170. package/dist/stores/theme-store.js.map +1 -0
  171. package/dist/stores/tool-definition-store.d.ts +18 -0
  172. package/dist/stores/tool-definition-store.d.ts.map +1 -0
  173. package/dist/stores/tool-definition-store.js +129 -0
  174. package/dist/stores/tool-definition-store.js.map +1 -0
  175. package/dist/stores/tool-store.d.ts +21 -2
  176. package/dist/stores/tool-store.d.ts.map +1 -1
  177. package/dist/stores/tool-store.js +112 -2
  178. package/dist/stores/tool-store.js.map +1 -1
  179. package/dist/stores/view-store.d.ts +8 -4
  180. package/dist/stores/view-store.d.ts.map +1 -1
  181. package/dist/stores/view-store.js +94 -14
  182. package/dist/stores/view-store.js.map +1 -1
  183. package/dist/stores/webhook-endpoint-store.d.ts +18 -0
  184. package/dist/stores/webhook-endpoint-store.d.ts.map +1 -0
  185. package/dist/stores/webhook-endpoint-store.js +56 -0
  186. package/dist/stores/webhook-endpoint-store.js.map +1 -0
  187. package/dist/stores/workflow-run-store.d.ts +23 -0
  188. package/dist/stores/workflow-run-store.d.ts.map +1 -0
  189. package/dist/stores/workflow-run-store.js +201 -0
  190. package/dist/stores/workflow-run-store.js.map +1 -0
  191. package/dist/tenant/actions.js +1 -1
  192. package/dist/tenant/context.js +1 -1
  193. package/dist/tenant/index.d.ts +5 -5
  194. package/dist/tenant/index.js +4 -4
  195. package/dist/types/index.d.ts +5 -4
  196. package/dist/types/index.d.ts.map +1 -1
  197. package/dist/types/index.js +1 -1
  198. package/package.json +19 -14
  199. package/dist/__test-utils__/mock-supabase.d.ts +0 -18
  200. package/dist/__test-utils__/mock-supabase.d.ts.map +0 -1
  201. package/dist/__test-utils__/mock-supabase.js +0 -89
  202. package/dist/__test-utils__/mock-supabase.js.map +0 -1
  203. package/dist/auth/claims.test.d.ts +0 -2
  204. package/dist/auth/claims.test.d.ts.map +0 -1
  205. package/dist/auth/claims.test.js +0 -32
  206. package/dist/auth/claims.test.js.map +0 -1
  207. package/dist/auth/permissions.test.d.ts +0 -2
  208. package/dist/auth/permissions.test.d.ts.map +0 -1
  209. package/dist/auth/permissions.test.js +0 -40
  210. package/dist/auth/permissions.test.js.map +0 -1
  211. package/dist/clients/admin.test.d.ts +0 -2
  212. package/dist/clients/admin.test.d.ts.map +0 -1
  213. package/dist/clients/admin.test.js +0 -31
  214. package/dist/clients/admin.test.js.map +0 -1
  215. package/dist/clients/browser.test.d.ts +0 -2
  216. package/dist/clients/browser.test.d.ts.map +0 -1
  217. package/dist/clients/browser.test.js +0 -29
  218. package/dist/clients/browser.test.js.map +0 -1
  219. package/dist/clients/server.test.d.ts +0 -2
  220. package/dist/clients/server.test.d.ts.map +0 -1
  221. package/dist/clients/server.test.js +0 -26
  222. package/dist/clients/server.test.js.map +0 -1
  223. package/dist/stores/agent-store.test.d.ts +0 -2
  224. package/dist/stores/agent-store.test.d.ts.map +0 -1
  225. package/dist/stores/agent-store.test.js +0 -64
  226. package/dist/stores/agent-store.test.js.map +0 -1
  227. package/dist/stores/chat-store.test.d.ts +0 -2
  228. package/dist/stores/chat-store.test.d.ts.map +0 -1
  229. package/dist/stores/chat-store.test.js +0 -83
  230. package/dist/stores/chat-store.test.js.map +0 -1
  231. package/dist/stores/entity-store.test.d.ts +0 -2
  232. package/dist/stores/entity-store.test.d.ts.map +0 -1
  233. package/dist/stores/entity-store.test.js +0 -125
  234. package/dist/stores/entity-store.test.js.map +0 -1
  235. package/dist/stores/factory.test.d.ts +0 -2
  236. package/dist/stores/factory.test.d.ts.map +0 -1
  237. package/dist/stores/factory.test.js +0 -41
  238. package/dist/stores/factory.test.js.map +0 -1
  239. package/dist/stores/memory-store.test.d.ts +0 -2
  240. package/dist/stores/memory-store.test.d.ts.map +0 -1
  241. package/dist/stores/memory-store.test.js +0 -70
  242. package/dist/stores/memory-store.test.js.map +0 -1
  243. package/dist/stores/task-store.test.d.ts +0 -2
  244. package/dist/stores/task-store.test.d.ts.map +0 -1
  245. package/dist/stores/task-store.test.js +0 -86
  246. package/dist/stores/task-store.test.js.map +0 -1
  247. package/dist/stores/tool-store.test.d.ts +0 -2
  248. package/dist/stores/tool-store.test.d.ts.map +0 -1
  249. package/dist/stores/tool-store.test.js +0 -56
  250. package/dist/stores/tool-store.test.js.map +0 -1
  251. package/dist/stores/view-store.test.d.ts +0 -2
  252. package/dist/stores/view-store.test.d.ts.map +0 -1
  253. package/dist/stores/view-store.test.js +0 -57
  254. package/dist/stores/view-store.test.js.map +0 -1
  255. package/dist/tenant/constants.test.d.ts +0 -2
  256. package/dist/tenant/constants.test.d.ts.map +0 -1
  257. package/dist/tenant/constants.test.js +0 -25
  258. package/dist/tenant/constants.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-config-store.js","sourceRoot":"","sources":["../../src/stores/nav-config-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { NotificationStore, NotificationRecord, ListNotificationsOptions } 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 NotificationStore. */
5
+ export declare class SupabaseNotificationStore implements NotificationStore {
6
+ private client;
7
+ constructor(client: SupabaseClient<Database>);
8
+ getNotifications(userId: string, options?: ListNotificationsOptions): Promise<NotificationRecord[]>;
9
+ getUnreadCount(userId: string): Promise<number>;
10
+ markRead(id: string): Promise<void>;
11
+ markAllRead(userId: string): Promise<void>;
12
+ createNotification(notification: Omit<NotificationRecord, 'id' | 'created_at' | 'read_at'>): Promise<NotificationRecord>;
13
+ deleteNotification(id: string): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=notification-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-store.d.ts","sourceRoot":"","sources":["../../src/stores/notification-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAkB5D,2DAA2D;AAC3D,qBAAa,yBAA0B,YAAW,iBAAiB;IACrD,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAsB1B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C,kBAAkB,CACtB,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,YAAY,GAAG,SAAS,CAAC,GACtE,OAAO,CAAC,kBAAkB,CAAC;IAkBxB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpD"}
@@ -0,0 +1,88 @@
1
+ function mapNotificationRow(row) {
2
+ return {
3
+ id: row.id,
4
+ tenant_id: row.tenant_id,
5
+ user_id: row.user_id,
6
+ type: row.type,
7
+ title: row.title,
8
+ body: row.body,
9
+ data: (row.data ?? {}),
10
+ read_at: row.read_at,
11
+ created_at: row.created_at,
12
+ };
13
+ }
14
+ /** Supabase-backed implementation of NotificationStore. */
15
+ export class SupabaseNotificationStore {
16
+ client;
17
+ constructor(client) {
18
+ this.client = client;
19
+ }
20
+ async getNotifications(userId, options) {
21
+ let q = this.client
22
+ .from('notifications')
23
+ .select('*')
24
+ .eq('user_id', userId)
25
+ .order('created_at', { ascending: false });
26
+ if (options?.unreadOnly) {
27
+ q = q.is('read_at', null);
28
+ }
29
+ if (options?.type) {
30
+ q = q.eq('type', options.type);
31
+ }
32
+ q = q.limit(options?.limit ?? 50);
33
+ const { data, error } = await q;
34
+ if (error)
35
+ throw error;
36
+ return (data ?? []).map(mapNotificationRow);
37
+ }
38
+ async getUnreadCount(userId) {
39
+ const { count, error } = await this.client
40
+ .from('notifications')
41
+ .select('*', { count: 'exact', head: true })
42
+ .eq('user_id', userId)
43
+ .is('read_at', null);
44
+ if (error)
45
+ throw error;
46
+ return count ?? 0;
47
+ }
48
+ async markRead(id) {
49
+ const { error } = await this.client
50
+ .from('notifications')
51
+ .update({ read_at: new Date().toISOString() })
52
+ .eq('id', id);
53
+ if (error)
54
+ throw error;
55
+ }
56
+ async markAllRead(userId) {
57
+ const { error } = await this.client
58
+ .from('notifications')
59
+ .update({ read_at: new Date().toISOString() })
60
+ .eq('user_id', userId)
61
+ .is('read_at', null);
62
+ if (error)
63
+ throw error;
64
+ }
65
+ async createNotification(notification) {
66
+ const { data, error } = await this.client
67
+ .from('notifications')
68
+ .insert({
69
+ tenant_id: notification.tenant_id,
70
+ user_id: notification.user_id,
71
+ type: notification.type,
72
+ title: notification.title,
73
+ body: notification.body,
74
+ data: notification.data,
75
+ })
76
+ .select('*')
77
+ .single();
78
+ if (error)
79
+ throw error;
80
+ return mapNotificationRow(data);
81
+ }
82
+ async deleteNotification(id) {
83
+ const { error } = await this.client.from('notifications').delete().eq('id', id);
84
+ if (error)
85
+ throw error;
86
+ }
87
+ }
88
+ //# sourceMappingURL=notification-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-store.js","sourceRoot":"","sources":["../../src/stores/notification-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { RecentViewStore, RecentViewRecord } 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 RecentViewStore. */
5
+ export declare class SupabaseRecentViewStore implements RecentViewStore {
6
+ private client;
7
+ constructor(client: SupabaseClient<Database>);
8
+ recordView(userId: string, entityId: string, tenantId: string): Promise<void>;
9
+ getRecentViews(userId: string, tenantId: string, limit?: number): Promise<RecentViewRecord[]>;
10
+ }
11
+ //# sourceMappingURL=recent-view-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-view-store.d.ts","sourceRoot":"","sources":["../../src/stores/recent-view-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAc5D,yDAAyD;AACzD,qBAAa,uBAAwB,YAAW,eAAe;IACjD,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7E,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAY/B"}
@@ -0,0 +1,39 @@
1
+ function mapRecentViewRow(row) {
2
+ return {
3
+ id: row.id,
4
+ user_id: row.user_id,
5
+ entity_id: row.entity_id,
6
+ tenant_id: row.tenant_id,
7
+ viewed_at: row.viewed_at,
8
+ };
9
+ }
10
+ /** Supabase-backed implementation of RecentViewStore. */
11
+ export class SupabaseRecentViewStore {
12
+ client;
13
+ constructor(client) {
14
+ this.client = client;
15
+ }
16
+ async recordView(userId, entityId, tenantId) {
17
+ const { error } = await this.client.from('user_recent_views').upsert({
18
+ user_id: userId,
19
+ entity_id: entityId,
20
+ tenant_id: tenantId,
21
+ viewed_at: new Date().toISOString(),
22
+ }, { onConflict: 'user_id,entity_id' });
23
+ if (error)
24
+ throw error;
25
+ }
26
+ async getRecentViews(userId, tenantId, limit) {
27
+ const { data, error } = await this.client
28
+ .from('user_recent_views')
29
+ .select('*')
30
+ .eq('user_id', userId)
31
+ .eq('tenant_id', tenantId)
32
+ .order('viewed_at', { ascending: false })
33
+ .limit(limit ?? 20);
34
+ if (error)
35
+ throw error;
36
+ return (data ?? []).map(mapRecentViewRow);
37
+ }
38
+ }
39
+ //# sourceMappingURL=recent-view-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-view-store.js","sourceRoot":"","sources":["../../src/stores/recent-view-store.ts"],"names":[],"mappings":"AAOA,SAAS,gBAAgB,CAAC,GAAkB;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,OAAO,uBAAuB;IACd;IAApB,YAAoB,MAAgC;QAAhC,WAAM,GAAN,MAAM,CAA0B;IAAG,CAAC;IAExD,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB;QACjE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAClE;YACE,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,EACD,EAAE,UAAU,EAAE,mBAAmB,EAAE,CACpC,CAAC;QAEF,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,QAAgB,EAChB,KAAc;QAEd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM;aACtC,IAAI,CAAC,mBAAmB,CAAC;aACzB,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aACrB,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;aACzB,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACxC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAEtB,IAAI,KAAK;YAAE,MAAM,KAAK,CAAC;QACvB,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { ResponseStore, ListResponsesOptions, EntityResponseRecord, ResponseAggregation, ResponseStatus, SubmitFieldResponseInput } 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 ResponseStore. */
5
+ export declare class SupabaseResponseStore implements ResponseStore {
6
+ private client;
7
+ constructor(client: SupabaseClient<Database>);
8
+ submitResponse(input: SubmitFieldResponseInput): Promise<EntityResponseRecord>;
9
+ listResponses(entityId: string, options?: ListResponsesOptions): Promise<EntityResponseRecord[]>;
10
+ getResponse(responseId: string): Promise<EntityResponseRecord | null>;
11
+ promoteResponse(responseId: string, fieldName: string): Promise<void>;
12
+ updateResponseStatus(responseId: string, status: ResponseStatus, reviewNotes?: string): Promise<EntityResponseRecord>;
13
+ getResponseAggregation(entityId: string, criteriaSetId: string): Promise<ResponseAggregation>;
14
+ }
15
+ //# sourceMappingURL=response-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-store.d.ts","sourceRoot":"","sources":["../../src/stores/response-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EAEnB,cAAc,EACd,wBAAwB,EAGzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;AAiElE,uDAAuD;AACvD,qBAAa,qBAAsB,YAAW,aAAa;IAC7C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,cAAc,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqC9E,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAiC5B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAWrE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiErE,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAuB1B,sBAAsB,CAC1B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC;CAoFhC"}
@@ -0,0 +1,294 @@
1
+ import { computeResponseScore, isNumericDimension } from '@sprinterai/core';
2
+ /**
3
+ * Map a DB entity_responses row to the core EntityResponseRecord type.
4
+ * JSONB columns (values, field_meta, metadata, criteria_snapshot) are Json in the DB;
5
+ * cast to their specific core shapes.
6
+ */
7
+ function toEntityResponseRecord(row) {
8
+ return {
9
+ id: row.id,
10
+ tenant_id: row.tenant_id,
11
+ entity_id: row.entity_id,
12
+ criteria_set_id: row.criteria_set_id,
13
+ // JSONB column stores CriteriaSetDimension[]; Json union requires double cast
14
+ criteria_snapshot: (row.criteria_snapshot ?? []),
15
+ submitted_by_user: row.submitted_by_user,
16
+ submitted_by_agent: row.submitted_by_agent,
17
+ source: row.source ?? 'manual',
18
+ values: (row.values ?? {}), // Json -> Record<string, unknown>
19
+ field_meta: (row.field_meta ?? {}), // Json -> Record<string, FieldMeta>
20
+ weighted_score: row.weighted_score,
21
+ normalized_score: row.normalized_score,
22
+ status: row.status ?? 'submitted',
23
+ promoted_fields: row.promoted_fields ?? [],
24
+ reviewed_by: row.reviewed_by,
25
+ reviewed_at: row.reviewed_at,
26
+ review_notes: row.review_notes,
27
+ parent_response_id: row.parent_response_id,
28
+ temporal_value: row.temporal_value,
29
+ notes: row.notes,
30
+ metadata: (row.metadata ?? {}), // Json -> Record<string, unknown>
31
+ created_at: row.created_at,
32
+ updated_at: row.updated_at,
33
+ };
34
+ }
35
+ /**
36
+ * Map a DB criteria_sets row to the core CriteriaSetRecord type.
37
+ * The `dimensions` column is Json; cast to CriteriaSetDimension[].
38
+ */
39
+ function toCriteriaSetRecord(row) {
40
+ return {
41
+ id: row.id,
42
+ tenant_id: row.tenant_id,
43
+ slug: row.slug,
44
+ name: row.name,
45
+ description: row.description,
46
+ kind: row.kind ?? 'record',
47
+ entity_id: row.entity_id,
48
+ entity_type_slugs: row.entity_type_slugs,
49
+ is_default: row.is_default ?? false,
50
+ // JSONB column stores CriteriaSetDimension[]; Json union requires double cast
51
+ dimensions: (row.dimensions ?? []),
52
+ temporal_key: row.temporal_key,
53
+ aggregate_display: row.aggregate_display ?? 'average',
54
+ promotion_mode: row.promotion_mode ?? 'manual',
55
+ created_by: row.created_by,
56
+ created_at: row.created_at,
57
+ updated_at: row.updated_at,
58
+ };
59
+ }
60
+ /** Supabase-backed implementation of ResponseStore. */
61
+ export class SupabaseResponseStore {
62
+ client;
63
+ constructor(client) {
64
+ this.client = client;
65
+ }
66
+ async submitResponse(input) {
67
+ // Fetch the criteria set to compute scores
68
+ const { data: criteriaSet, error: csErr } = await this.client
69
+ .from('criteria_sets')
70
+ .select('id, dimensions')
71
+ .eq('id', input.criteria_set_id)
72
+ .maybeSingle();
73
+ if (csErr)
74
+ throw new Error(`Failed to fetch criteria set: ${csErr.message}`);
75
+ if (!criteriaSet)
76
+ throw new Error('Criteria set not found');
77
+ // JSONB column stores CriteriaSetDimension[]; Json union requires double cast
78
+ const dimensions = (criteriaSet.dimensions ?? []);
79
+ const { normalized } = computeResponseScore(input.values, dimensions);
80
+ const { data, error } = await this.client
81
+ .from('entity_responses')
82
+ .insert({
83
+ entity_id: input.entity_id,
84
+ criteria_set_id: input.criteria_set_id,
85
+ tenant_id: input.entity_id, // Placeholder -- RLS handles tenant scoping
86
+ source: input.source,
87
+ values: input.values, // Record<string, unknown> -> Json
88
+ field_meta: (input.field_meta ?? {}), // Record<string, FieldMeta> -> Json
89
+ normalized_score: normalized,
90
+ submitted_by_user: input.submitted_by_user ?? null,
91
+ submitted_by_agent: input.submitted_by_agent ?? null,
92
+ metadata: (input.metadata ?? {}), // Record<string, unknown> -> Json
93
+ status: 'submitted',
94
+ })
95
+ .select('*')
96
+ .single();
97
+ if (error)
98
+ throw new Error(`Failed to submit response: ${error.message}`);
99
+ return toEntityResponseRecord(data);
100
+ }
101
+ async listResponses(entityId, options) {
102
+ let query = this.client
103
+ .from('entity_responses')
104
+ .select('*')
105
+ .eq('entity_id', entityId)
106
+ .order('created_at', { ascending: false });
107
+ if (options?.criteriaSetId) {
108
+ query = query.eq('criteria_set_id', options.criteriaSetId);
109
+ }
110
+ if (options?.source) {
111
+ query = query.eq('source', options.source);
112
+ }
113
+ if (options?.status) {
114
+ query = query.eq('status', options.status);
115
+ }
116
+ query = query.limit(options?.limit ?? 100);
117
+ const { data, error } = await query;
118
+ if (error)
119
+ throw new Error(`Failed to list responses: ${error.message}`);
120
+ let results = (data ?? []).map(toEntityResponseRecord);
121
+ // Filter by fieldName in JS since values is JSONB
122
+ if (options?.fieldName) {
123
+ const fieldName = options.fieldName;
124
+ results = results.filter((r) => r.values && fieldName in r.values);
125
+ }
126
+ return results;
127
+ }
128
+ async getResponse(responseId) {
129
+ const { data, error } = await this.client
130
+ .from('entity_responses')
131
+ .select('*')
132
+ .eq('id', responseId)
133
+ .maybeSingle();
134
+ if (error)
135
+ throw new Error(`Failed to get response: ${error.message}`);
136
+ return data ? toEntityResponseRecord(data) : null;
137
+ }
138
+ async promoteResponse(responseId, fieldName) {
139
+ const response = await this.getResponse(responseId);
140
+ if (!response)
141
+ throw new Error('Response not found');
142
+ const fieldValue = response.values[fieldName];
143
+ if (fieldValue === undefined) {
144
+ throw new Error(`Field "${fieldName}" not found in response values`);
145
+ }
146
+ // Update the entity's content with the promoted field value
147
+ const entityId = response.entity_id;
148
+ const { data: entity, error: entityFetchErr } = await this.client
149
+ .from('entities')
150
+ .select('content, metadata')
151
+ .eq('id', entityId)
152
+ .maybeSingle();
153
+ if (entityFetchErr)
154
+ throw new Error(`Failed to fetch entity: ${entityFetchErr.message}`);
155
+ if (!entity)
156
+ throw new Error('Entity not found');
157
+ const existingContent = (entity.content ?? {}); // Json -> Record
158
+ const existingMetadata = (entity.metadata ?? {}); // Json -> Record
159
+ const fieldSources = (existingMetadata.field_sources ?? {});
160
+ const { error: updateErr } = await this.client
161
+ .from('entities')
162
+ .update({
163
+ content: {
164
+ ...existingContent,
165
+ [fieldName]: fieldValue,
166
+ },
167
+ metadata: {
168
+ ...existingMetadata,
169
+ field_sources: {
170
+ ...fieldSources,
171
+ [fieldName]: {
172
+ response_id: responseId,
173
+ criteria_set_id: response.criteria_set_id,
174
+ submitted_by_user: response.submitted_by_user ?? undefined,
175
+ promoted_at: new Date().toISOString(),
176
+ },
177
+ },
178
+ },
179
+ updated_at: new Date().toISOString(),
180
+ })
181
+ .eq('id', entityId);
182
+ if (updateErr)
183
+ throw new Error(`Failed to update entity: ${updateErr.message}`);
184
+ // Update the response status
185
+ const newStatus = 'promoted';
186
+ const { error: responseUpdateErr } = await this.client
187
+ .from('entity_responses')
188
+ .update({
189
+ status: newStatus,
190
+ updated_at: new Date().toISOString(),
191
+ })
192
+ .eq('id', responseId);
193
+ if (responseUpdateErr) {
194
+ throw new Error(`Failed to update response status: ${responseUpdateErr.message}`);
195
+ }
196
+ }
197
+ async updateResponseStatus(responseId, status, reviewNotes) {
198
+ const updateData = {
199
+ status,
200
+ reviewed_at: new Date().toISOString(),
201
+ updated_at: new Date().toISOString(),
202
+ };
203
+ if (reviewNotes) {
204
+ updateData.metadata = { review_notes: reviewNotes };
205
+ }
206
+ const { data, error } = await this.client
207
+ .from('entity_responses')
208
+ .update(updateData)
209
+ .eq('id', responseId)
210
+ .select('*');
211
+ if (error)
212
+ throw new Error(`Failed to update response status: ${error.message}`);
213
+ if (!data || data.length === 0) {
214
+ throw new Error('Response not found or no permission to update');
215
+ }
216
+ return toEntityResponseRecord(data[0]);
217
+ }
218
+ async getResponseAggregation(entityId, criteriaSetId) {
219
+ const [csResult, responsesResult] = await Promise.all([
220
+ this.client.from('criteria_sets').select('*').eq('id', criteriaSetId).maybeSingle(),
221
+ this.client
222
+ .from('entity_responses')
223
+ .select('*')
224
+ .eq('entity_id', entityId)
225
+ .eq('criteria_set_id', criteriaSetId)
226
+ .order('created_at', { ascending: true })
227
+ .limit(1000),
228
+ ]);
229
+ if (csResult.error) {
230
+ throw new Error(`Failed to fetch criteria set: ${csResult.error.message}`);
231
+ }
232
+ if (responsesResult.error) {
233
+ throw new Error(`Failed to fetch responses: ${responsesResult.error.message}`);
234
+ }
235
+ if (!csResult.data)
236
+ throw new Error('Criteria set not found');
237
+ const criteriaSet = toCriteriaSetRecord(csResult.data);
238
+ const responses = (responsesResult.data ?? []).map(toEntityResponseRecord);
239
+ const dimensions = criteriaSet.dimensions ?? [];
240
+ const byDimension = {};
241
+ for (const dim of dimensions) {
242
+ const dimValues = [];
243
+ const bySource = {};
244
+ for (const resp of responses) {
245
+ const val = resp.values?.[dim.key];
246
+ if (val !== undefined && val !== null) {
247
+ dimValues.push(val);
248
+ const src = resp.source ?? 'unknown';
249
+ bySource[src] = (bySource[src] ?? 0) + 1;
250
+ }
251
+ }
252
+ const agg = {
253
+ count: dimValues.length,
254
+ bySource,
255
+ };
256
+ if (isNumericDimension(dim)) {
257
+ const nums = dimValues.filter((v) => typeof v === 'number');
258
+ if (nums.length > 0) {
259
+ nums.sort((a, b) => a - b);
260
+ agg.mean = nums.reduce((s, n) => s + n, 0) / nums.length;
261
+ agg.min = nums[0];
262
+ agg.max = nums[nums.length - 1];
263
+ const mid = Math.floor(nums.length / 2);
264
+ agg.median = nums.length % 2 === 0 ? (nums[mid - 1] + nums[mid]) / 2 : nums[mid];
265
+ }
266
+ }
267
+ else {
268
+ const freq = {};
269
+ for (const v of dimValues) {
270
+ const s = String(v);
271
+ freq[s] = (freq[s] ?? 0) + 1;
272
+ }
273
+ agg.values = Object.entries(freq)
274
+ .map(([value, count]) => ({ value, count }))
275
+ .sort((a, b) => b.count - a.count);
276
+ }
277
+ byDimension[dim.key] = agg;
278
+ }
279
+ const scoreProgression = responses
280
+ .filter((r) => r.normalized_score !== null && r.normalized_score !== undefined)
281
+ .map((r) => ({
282
+ responseId: r.id,
283
+ normalizedScore: r.normalized_score, // filtered above
284
+ createdAt: r.created_at,
285
+ }));
286
+ return {
287
+ criteriaSetId,
288
+ totalResponses: responses.length,
289
+ byDimension,
290
+ scoreProgression: scoreProgression.length > 0 ? scoreProgression : undefined,
291
+ };
292
+ }
293
+ }
294
+ //# sourceMappingURL=response-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-store.js","sourceRoot":"","sources":["../../src/stores/response-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ShareStore, ShareAccessResult, CreateShareLinkInput, ShareLinkRecord } 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 ShareStore. */
5
+ export declare class SupabaseShareStore implements ShareStore {
6
+ private client;
7
+ private adminClient?;
8
+ constructor(client: SupabaseClient<Database>, adminClient?: SupabaseClient<Database> | undefined);
9
+ getSharedEntity(token: string): Promise<ShareAccessResult | null>;
10
+ createShareLink(input: CreateShareLinkInput): Promise<ShareLinkRecord>;
11
+ revokeShareLink(shareId: string): Promise<void>;
12
+ listEntityShareLinks(entityId: string): Promise<ShareLinkRecord[]>;
13
+ }
14
+ //# sourceMappingURL=share-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-store.d.ts","sourceRoot":"","sources":["../../src/stores/share-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AA4E5D,oDAAoD;AACpD,qBAAa,kBAAmB,YAAW,UAAU;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW,CAAC;gBADZ,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,EAChC,WAAW,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAA;IAG1C,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAsCjE,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAuBtE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAWzE"}