@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.
- package/dist/auth/adapter.js +3 -3
- package/dist/auth/guards.d.ts +27 -0
- package/dist/auth/guards.d.ts.map +1 -0
- package/dist/auth/guards.js +61 -0
- package/dist/auth/guards.js.map +1 -0
- package/dist/auth/index.d.ts +6 -4
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +5 -3
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/permissions.d.ts +9 -1
- package/dist/auth/permissions.d.ts.map +1 -1
- package/dist/auth/permissions.js +13 -0
- package/dist/auth/permissions.js.map +1 -1
- package/dist/clients/admin.d.ts +3 -1
- package/dist/clients/admin.d.ts.map +1 -1
- package/dist/clients/admin.js +3 -3
- package/dist/clients/admin.js.map +1 -1
- package/dist/clients/browser.d.ts +3 -1
- package/dist/clients/browser.d.ts.map +1 -1
- package/dist/clients/browser.js +3 -3
- package/dist/clients/browser.js.map +1 -1
- package/dist/clients/index.d.ts +3 -3
- package/dist/clients/index.js +3 -3
- package/dist/clients/server.d.ts +2 -1
- package/dist/clients/server.d.ts.map +1 -1
- package/dist/clients/server.js +1 -1
- package/dist/clients/server.js.map +1 -1
- package/dist/generated/database-types.d.ts +4020 -0
- package/dist/generated/database-types.d.ts.map +1 -0
- package/dist/generated/database-types.js +97 -0
- package/dist/generated/database-types.js.map +1 -0
- package/dist/generated/index.d.ts +48 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +2 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/index.d.ts +12 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/realtime/index.d.ts +2 -2
- package/dist/realtime/index.js +1 -1
- package/dist/resolvers.d.ts +23 -0
- package/dist/resolvers.d.ts.map +1 -0
- package/dist/resolvers.js +57 -0
- package/dist/resolvers.js.map +1 -0
- package/dist/stores/activity-store.d.ts +21 -0
- package/dist/stores/activity-store.d.ts.map +1 -0
- package/dist/stores/activity-store.js +122 -0
- package/dist/stores/activity-store.js.map +1 -0
- package/dist/stores/admin-store.d.ts +27 -0
- package/dist/stores/admin-store.d.ts.map +1 -0
- package/dist/stores/admin-store.js +171 -0
- package/dist/stores/admin-store.js.map +1 -0
- package/dist/stores/agent-store.d.ts +6 -2
- package/dist/stores/agent-store.d.ts.map +1 -1
- package/dist/stores/agent-store.js +83 -6
- package/dist/stores/agent-store.js.map +1 -1
- package/dist/stores/approval-store.d.ts +19 -0
- package/dist/stores/approval-store.d.ts.map +1 -0
- package/dist/stores/approval-store.js +108 -0
- package/dist/stores/approval-store.js.map +1 -0
- package/dist/stores/chat-store.d.ts +3 -1
- package/dist/stores/chat-store.d.ts.map +1 -1
- package/dist/stores/chat-store.js +47 -36
- package/dist/stores/chat-store.js.map +1 -1
- package/dist/stores/comment-store.d.ts +13 -0
- package/dist/stores/comment-store.d.ts.map +1 -0
- package/dist/stores/comment-store.js +67 -0
- package/dist/stores/comment-store.js.map +1 -0
- package/dist/stores/cost-store.d.ts +15 -0
- package/dist/stores/cost-store.d.ts.map +1 -0
- package/dist/stores/cost-store.js +69 -0
- package/dist/stores/cost-store.js.map +1 -0
- package/dist/stores/criteria-set-store.d.ts +16 -0
- package/dist/stores/criteria-set-store.d.ts.map +1 -0
- package/dist/stores/criteria-set-store.js +127 -0
- package/dist/stores/criteria-set-store.js.map +1 -0
- package/dist/stores/document-store.d.ts +21 -0
- package/dist/stores/document-store.d.ts.map +1 -0
- package/dist/stores/document-store.js +191 -0
- package/dist/stores/document-store.js.map +1 -0
- package/dist/stores/embed-store.d.ts +11 -0
- package/dist/stores/embed-store.d.ts.map +1 -0
- package/dist/stores/embed-store.js +71 -0
- package/dist/stores/embed-store.js.map +1 -0
- package/dist/stores/entity-store.d.ts +7 -2
- package/dist/stores/entity-store.d.ts.map +1 -1
- package/dist/stores/entity-store.js +163 -37
- package/dist/stores/entity-store.js.map +1 -1
- package/dist/stores/extraction-store.d.ts +18 -0
- package/dist/stores/extraction-store.d.ts.map +1 -0
- package/dist/stores/extraction-store.js +170 -0
- package/dist/stores/extraction-store.js.map +1 -0
- package/dist/stores/factory.d.ts +29 -2
- package/dist/stores/factory.d.ts.map +1 -1
- package/dist/stores/factory.js +60 -9
- package/dist/stores/factory.js.map +1 -1
- package/dist/stores/favorites-store.d.ts +13 -0
- package/dist/stores/favorites-store.d.ts.map +1 -0
- package/dist/stores/favorites-store.js +53 -0
- package/dist/stores/favorites-store.js.map +1 -0
- package/dist/stores/feedback-store.d.ts +12 -0
- package/dist/stores/feedback-store.d.ts.map +1 -0
- package/dist/stores/feedback-store.js +59 -0
- package/dist/stores/feedback-store.js.map +1 -0
- package/dist/stores/inbound-store.d.ts +16 -0
- package/dist/stores/inbound-store.d.ts.map +1 -0
- package/dist/stores/inbound-store.js +133 -0
- package/dist/stores/inbound-store.js.map +1 -0
- package/dist/stores/index.d.ts +36 -10
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +35 -9
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/member-store.d.ts +23 -0
- package/dist/stores/member-store.d.ts.map +1 -0
- package/dist/stores/member-store.js +121 -0
- package/dist/stores/member-store.js.map +1 -0
- package/dist/stores/memory-store.d.ts +4 -1
- package/dist/stores/memory-store.d.ts.map +1 -1
- package/dist/stores/memory-store.js +31 -3
- package/dist/stores/memory-store.js.map +1 -1
- package/dist/stores/nav-config-store.d.ts +13 -0
- package/dist/stores/nav-config-store.d.ts.map +1 -0
- package/dist/stores/nav-config-store.js +104 -0
- package/dist/stores/nav-config-store.js.map +1 -0
- package/dist/stores/notification-store.d.ts +15 -0
- package/dist/stores/notification-store.d.ts.map +1 -0
- package/dist/stores/notification-store.js +88 -0
- package/dist/stores/notification-store.js.map +1 -0
- package/dist/stores/recent-view-store.d.ts +11 -0
- package/dist/stores/recent-view-store.d.ts.map +1 -0
- package/dist/stores/recent-view-store.js +39 -0
- package/dist/stores/recent-view-store.js.map +1 -0
- package/dist/stores/response-store.d.ts +15 -0
- package/dist/stores/response-store.d.ts.map +1 -0
- package/dist/stores/response-store.js +294 -0
- package/dist/stores/response-store.js.map +1 -0
- package/dist/stores/share-store.d.ts +14 -0
- package/dist/stores/share-store.d.ts.map +1 -0
- package/dist/stores/share-store.js +153 -0
- package/dist/stores/share-store.js.map +1 -0
- package/dist/stores/shared-context-store.d.ts +12 -0
- package/dist/stores/shared-context-store.d.ts.map +1 -0
- package/dist/stores/shared-context-store.js +55 -0
- package/dist/stores/shared-context-store.js.map +1 -0
- package/dist/stores/skill-store.d.ts +21 -0
- package/dist/stores/skill-store.d.ts.map +1 -0
- package/dist/stores/skill-store.js +163 -0
- package/dist/stores/skill-store.js.map +1 -0
- package/dist/stores/source-store.d.ts +23 -0
- package/dist/stores/source-store.d.ts.map +1 -0
- package/dist/stores/source-store.js +111 -0
- package/dist/stores/source-store.js.map +1 -0
- package/dist/stores/task-store.d.ts +2 -1
- package/dist/stores/task-store.d.ts.map +1 -1
- package/dist/stores/task-store.js +58 -6
- package/dist/stores/task-store.js.map +1 -1
- package/dist/stores/template-store.d.ts +16 -0
- package/dist/stores/template-store.d.ts.map +1 -0
- package/dist/stores/template-store.js +136 -0
- package/dist/stores/template-store.js.map +1 -0
- package/dist/stores/tenant-store.d.ts +2 -1
- package/dist/stores/tenant-store.d.ts.map +1 -1
- package/dist/stores/tenant-store.js +2 -2
- package/dist/stores/tenant-store.js.map +1 -1
- package/dist/stores/theme-store.d.ts +11 -0
- package/dist/stores/theme-store.d.ts.map +1 -0
- package/dist/stores/theme-store.js +41 -0
- package/dist/stores/theme-store.js.map +1 -0
- package/dist/stores/tool-definition-store.d.ts +18 -0
- package/dist/stores/tool-definition-store.d.ts.map +1 -0
- package/dist/stores/tool-definition-store.js +129 -0
- package/dist/stores/tool-definition-store.js.map +1 -0
- package/dist/stores/tool-store.d.ts +21 -2
- package/dist/stores/tool-store.d.ts.map +1 -1
- package/dist/stores/tool-store.js +112 -2
- package/dist/stores/tool-store.js.map +1 -1
- package/dist/stores/view-store.d.ts +8 -4
- package/dist/stores/view-store.d.ts.map +1 -1
- package/dist/stores/view-store.js +94 -14
- package/dist/stores/view-store.js.map +1 -1
- package/dist/stores/webhook-endpoint-store.d.ts +18 -0
- package/dist/stores/webhook-endpoint-store.d.ts.map +1 -0
- package/dist/stores/webhook-endpoint-store.js +56 -0
- package/dist/stores/webhook-endpoint-store.js.map +1 -0
- package/dist/stores/workflow-run-store.d.ts +23 -0
- package/dist/stores/workflow-run-store.d.ts.map +1 -0
- package/dist/stores/workflow-run-store.js +201 -0
- package/dist/stores/workflow-run-store.js.map +1 -0
- package/dist/tenant/actions.js +1 -1
- package/dist/tenant/context.js +1 -1
- package/dist/tenant/index.d.ts +5 -5
- package/dist/tenant/index.js +4 -4
- package/dist/types/index.d.ts +5 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/package.json +10 -5
- package/dist/__test-utils__/mock-supabase.d.ts +0 -18
- package/dist/__test-utils__/mock-supabase.d.ts.map +0 -1
- package/dist/__test-utils__/mock-supabase.js +0 -89
- package/dist/__test-utils__/mock-supabase.js.map +0 -1
- package/dist/auth/claims.test.d.ts +0 -2
- package/dist/auth/claims.test.d.ts.map +0 -1
- package/dist/auth/claims.test.js +0 -32
- package/dist/auth/claims.test.js.map +0 -1
- package/dist/auth/permissions.test.d.ts +0 -2
- package/dist/auth/permissions.test.d.ts.map +0 -1
- package/dist/auth/permissions.test.js +0 -40
- package/dist/auth/permissions.test.js.map +0 -1
- package/dist/clients/admin.test.d.ts +0 -2
- package/dist/clients/admin.test.d.ts.map +0 -1
- package/dist/clients/admin.test.js +0 -31
- package/dist/clients/admin.test.js.map +0 -1
- package/dist/clients/browser.test.d.ts +0 -2
- package/dist/clients/browser.test.d.ts.map +0 -1
- package/dist/clients/browser.test.js +0 -29
- package/dist/clients/browser.test.js.map +0 -1
- package/dist/clients/server.test.d.ts +0 -2
- package/dist/clients/server.test.d.ts.map +0 -1
- package/dist/clients/server.test.js +0 -26
- package/dist/clients/server.test.js.map +0 -1
- package/dist/stores/agent-store.test.d.ts +0 -2
- package/dist/stores/agent-store.test.d.ts.map +0 -1
- package/dist/stores/agent-store.test.js +0 -64
- package/dist/stores/agent-store.test.js.map +0 -1
- package/dist/stores/chat-store.test.d.ts +0 -2
- package/dist/stores/chat-store.test.d.ts.map +0 -1
- package/dist/stores/chat-store.test.js +0 -83
- package/dist/stores/chat-store.test.js.map +0 -1
- package/dist/stores/entity-store.test.d.ts +0 -2
- package/dist/stores/entity-store.test.d.ts.map +0 -1
- package/dist/stores/entity-store.test.js +0 -125
- package/dist/stores/entity-store.test.js.map +0 -1
- package/dist/stores/factory.test.d.ts +0 -2
- package/dist/stores/factory.test.d.ts.map +0 -1
- package/dist/stores/factory.test.js +0 -41
- package/dist/stores/factory.test.js.map +0 -1
- package/dist/stores/memory-store.test.d.ts +0 -2
- package/dist/stores/memory-store.test.d.ts.map +0 -1
- package/dist/stores/memory-store.test.js +0 -70
- package/dist/stores/memory-store.test.js.map +0 -1
- package/dist/stores/task-store.test.d.ts +0 -2
- package/dist/stores/task-store.test.d.ts.map +0 -1
- package/dist/stores/task-store.test.js +0 -86
- package/dist/stores/task-store.test.js.map +0 -1
- package/dist/stores/tool-store.test.d.ts +0 -2
- package/dist/stores/tool-store.test.d.ts.map +0 -1
- package/dist/stores/tool-store.test.js +0 -56
- package/dist/stores/tool-store.test.js.map +0 -1
- package/dist/stores/view-store.test.d.ts +0 -2
- package/dist/stores/view-store.test.d.ts.map +0 -1
- package/dist/stores/view-store.test.js +0 -57
- package/dist/stores/view-store.test.js.map +0 -1
- package/dist/tenant/constants.test.d.ts +0 -2
- package/dist/tenant/constants.test.d.ts.map +0 -1
- package/dist/tenant/constants.test.js +0 -25
- 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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"}
|
package/dist/stores/index.d.ts
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
|
-
export { SupabaseEntityStore } from
|
|
2
|
-
export { SupabaseAgentStore } from
|
|
3
|
-
export { SupabaseChatStore } from
|
|
4
|
-
export { SupabaseTenantStore } from
|
|
5
|
-
export { SupabaseToolStore } from
|
|
6
|
-
export { SupabaseTaskStore } from
|
|
7
|
-
export { SupabaseMemoryStore } from
|
|
8
|
-
export { SupabaseViewStore } from
|
|
9
|
-
export {
|
|
10
|
-
export
|
|
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"}
|
package/dist/stores/index.js
CHANGED
|
@@ -1,10 +1,36 @@
|
|
|
1
|
-
export { SupabaseEntityStore } from
|
|
2
|
-
export { SupabaseAgentStore } from
|
|
3
|
-
export { SupabaseChatStore } from
|
|
4
|
-
export { SupabaseTenantStore } from
|
|
5
|
-
export { SupabaseToolStore } from
|
|
6
|
-
export { SupabaseTaskStore } from
|
|
7
|
-
export { SupabaseMemoryStore } from
|
|
8
|
-
export { SupabaseViewStore } from
|
|
9
|
-
export {
|
|
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
|
package/dist/stores/index.js.map
CHANGED
|
@@ -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;
|
|
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":"
|
|
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
|