@sprinterai/supabase 0.6.0 → 0.8.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/stores/api-key-store.d.ts +27 -0
- package/dist/stores/api-key-store.d.ts.map +1 -0
- package/dist/stores/api-key-store.js +116 -0
- package/dist/stores/api-key-store.js.map +1 -0
- package/dist/stores/audit-store.d.ts +12 -0
- package/dist/stores/audit-store.d.ts.map +1 -0
- package/dist/stores/audit-store.js +85 -0
- package/dist/stores/audit-store.js.map +1 -0
- package/dist/stores/chat-store.d.ts +9 -1
- package/dist/stores/chat-store.d.ts.map +1 -1
- package/dist/stores/chat-store.js +94 -0
- package/dist/stores/chat-store.js.map +1 -1
- package/dist/stores/entity-mappers.d.ts +20 -0
- package/dist/stores/entity-mappers.d.ts.map +1 -0
- package/dist/stores/entity-mappers.js +53 -0
- package/dist/stores/entity-mappers.js.map +1 -0
- package/dist/stores/entity-store.d.ts +1 -0
- package/dist/stores/entity-store.d.ts.map +1 -1
- package/dist/stores/entity-store.js +16 -58
- package/dist/stores/entity-store.js.map +1 -1
- package/dist/stores/factory.d.ts +3 -1
- package/dist/stores/factory.d.ts.map +1 -1
- package/dist/stores/factory.js +4 -0
- package/dist/stores/factory.js.map +1 -1
- package/dist/stores/index.d.ts +3 -0
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +3 -0
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/source-store.d.ts +2 -1
- package/dist/stores/source-store.d.ts.map +1 -1
- package/dist/stores/source-store.js +20 -5
- package/dist/stores/source-store.js.map +1 -1
- package/package.json +39 -3
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { getClaims, getUserId, getUserPermissions, getPermissionsForRole, resolv
|
|
|
3
3
|
export type { JwtClaims } from './auth/index.js';
|
|
4
4
|
export { getTenantContext, getActiveTenantId, DEFAULT_TENANT_ID, DEFAULT_TENANT_SLUG, tenantUrl, ROLE_IDS, APP_TO_DB_ROLE, mapRoleSlug, isAdminRole, switchTenant, createTenant, addTenantMember, removeTenantMember, getTenantMembers, ensureUserProvisioned, } from './tenant/index.js';
|
|
5
5
|
export type { AppRole } from './tenant/index.js';
|
|
6
|
-
export { SupabaseEntityStore, SupabaseAgentStore, SupabaseChatStore, SupabaseTenantStore, SupabaseToolStore, toToolRun, toToolSession, SupabaseTaskStore, SupabaseMemoryStore, SupabaseViewStore, SupabaseActivityStore, getDateLabel, groupActivities, SupabaseCriteriaSetStore, SupabaseResponseStore, SupabaseWorkflowRunStore, SupabaseMemberStore, SupabaseAdminStore, SupabaseDocumentStore, SupabaseNavConfigStore, SupabaseThemeStore, SupabaseCostStore, SupabaseCommentStore, SupabaseNotificationStore, SupabaseShareStore, SupabaseSkillStore, SupabaseSourceStore, SupabaseTemplateStore, SupabaseFavoritesStore, SupabaseRecentViewStore, SupabaseExtractionStore, SupabaseApprovalStore, SupabaseWebhookEndpointStore, SupabaseToolDefinitionStore, SupabaseEmbedStore, createSupabaseStores, } from './stores/index.js';
|
|
6
|
+
export { SupabaseEntityStore, SupabaseAgentStore, SupabaseChatStore, SupabaseTenantStore, SupabaseToolStore, toToolRun, toToolSession, SupabaseTaskStore, SupabaseMemoryStore, SupabaseViewStore, SupabaseActivityStore, getDateLabel, groupActivities, SupabaseCriteriaSetStore, SupabaseResponseStore, SupabaseWorkflowRunStore, SupabaseMemberStore, SupabaseAdminStore, SupabaseDocumentStore, SupabaseNavConfigStore, SupabaseThemeStore, SupabaseCostStore, SupabaseCommentStore, SupabaseNotificationStore, SupabaseShareStore, SupabaseSkillStore, SupabaseSourceStore, SupabaseTemplateStore, SupabaseFavoritesStore, SupabaseRecentViewStore, SupabaseExtractionStore, SupabaseApprovalStore, SupabaseWebhookEndpointStore, SupabaseToolDefinitionStore, SupabaseEmbedStore, SupabaseAuditStore, SupabaseApiKeyStore, generateApiKey, hashApiKey, createSupabaseStores, } from './stores/index.js';
|
|
7
7
|
export type { SupabaseStores } from './stores/index.js';
|
|
8
8
|
export { getResolvedNavConfig, getResolvedTheme } from './resolvers.js';
|
|
9
9
|
export { createRealtimeChannel } from './realtime/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGvF,OAAO,EACL,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGnD,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGvF,OAAO,EACL,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAChB,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGxC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGnD,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { getClaims, getUserId, getUserPermissions, getPermissionsForRole, resolv
|
|
|
5
5
|
// ─── Tenant ─────────────────────────────────────────────────
|
|
6
6
|
export { getTenantContext, getActiveTenantId, DEFAULT_TENANT_ID, DEFAULT_TENANT_SLUG, tenantUrl, ROLE_IDS, APP_TO_DB_ROLE, mapRoleSlug, isAdminRole, switchTenant, createTenant, addTenantMember, removeTenantMember, getTenantMembers, ensureUserProvisioned, } from './tenant/index.js';
|
|
7
7
|
// ─── Stores ─────────────────────────────────────────────────
|
|
8
|
-
export { SupabaseEntityStore, SupabaseAgentStore, SupabaseChatStore, SupabaseTenantStore, SupabaseToolStore, toToolRun, toToolSession, SupabaseTaskStore, SupabaseMemoryStore, SupabaseViewStore, SupabaseActivityStore, getDateLabel, groupActivities, SupabaseCriteriaSetStore, SupabaseResponseStore, SupabaseWorkflowRunStore, SupabaseMemberStore, SupabaseAdminStore, SupabaseDocumentStore, SupabaseNavConfigStore, SupabaseThemeStore, SupabaseCostStore, SupabaseCommentStore, SupabaseNotificationStore, SupabaseShareStore, SupabaseSkillStore, SupabaseSourceStore, SupabaseTemplateStore, SupabaseFavoritesStore, SupabaseRecentViewStore, SupabaseExtractionStore, SupabaseApprovalStore, SupabaseWebhookEndpointStore, SupabaseToolDefinitionStore, SupabaseEmbedStore, createSupabaseStores, } from './stores/index.js';
|
|
8
|
+
export { SupabaseEntityStore, SupabaseAgentStore, SupabaseChatStore, SupabaseTenantStore, SupabaseToolStore, toToolRun, toToolSession, SupabaseTaskStore, SupabaseMemoryStore, SupabaseViewStore, SupabaseActivityStore, getDateLabel, groupActivities, SupabaseCriteriaSetStore, SupabaseResponseStore, SupabaseWorkflowRunStore, SupabaseMemberStore, SupabaseAdminStore, SupabaseDocumentStore, SupabaseNavConfigStore, SupabaseThemeStore, SupabaseCostStore, SupabaseCommentStore, SupabaseNotificationStore, SupabaseShareStore, SupabaseSkillStore, SupabaseSourceStore, SupabaseTemplateStore, SupabaseFavoritesStore, SupabaseRecentViewStore, SupabaseExtractionStore, SupabaseApprovalStore, SupabaseWebhookEndpointStore, SupabaseToolDefinitionStore, SupabaseEmbedStore, SupabaseAuditStore, SupabaseApiKeyStore, generateApiKey, hashApiKey, createSupabaseStores, } from './stores/index.js';
|
|
9
9
|
// ─── Resolvers ─────────────────────────────────────────────
|
|
10
10
|
export { getResolvedNavConfig, getResolvedTheme } from './resolvers.js';
|
|
11
11
|
// ─── Realtime ───────────────────────────────────────────────
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEvF,+DAA+D;AAC/D,OAAO,EACL,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAGhB,+DAA+D;AAC/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,+DAA+D;AAC/D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAGlB,8DAA8D;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,+DAA+D;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEvF,+DAA+D;AAC/D,OAAO,EACL,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,QAAQ,CAAC;AAGhB,+DAA+D;AAC/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,+DAA+D;AAC/D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAGlB,8DAA8D;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,+DAA+D;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ApiKeyStore, ApiKeyCreateInput, ApiKeyRecord } from '@sprinterai/core';
|
|
2
|
+
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
3
|
+
import type { Database } from '../generated/database-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Supabase-backed implementation of ApiKeyStore.
|
|
6
|
+
*
|
|
7
|
+
* Pass an admin/service-role client for `validateApiKey` so it can look up keys
|
|
8
|
+
* across all tenants without RLS filtering. If omitted, the regular client is used
|
|
9
|
+
* (which requires the caller to have SELECT access via RLS).
|
|
10
|
+
*/
|
|
11
|
+
export declare class SupabaseApiKeyStore implements ApiKeyStore {
|
|
12
|
+
private client;
|
|
13
|
+
private adminClient?;
|
|
14
|
+
constructor(client: SupabaseClient<Database>, adminClient?: SupabaseClient<Database> | undefined);
|
|
15
|
+
listApiKeys(tenantId: string): Promise<ApiKeyRecord[]>;
|
|
16
|
+
createApiKey(tenantId: string, input: ApiKeyCreateInput, createdBy: string): Promise<{
|
|
17
|
+
record: ApiKeyRecord;
|
|
18
|
+
plainKey: string;
|
|
19
|
+
}>;
|
|
20
|
+
revokeApiKey(tenantId: string, keyId: string): Promise<void>;
|
|
21
|
+
validateApiKey(keyHash: string): Promise<ApiKeyRecord | null>;
|
|
22
|
+
}
|
|
23
|
+
/** Generate a random API key string with `sk_` prefix. */
|
|
24
|
+
export declare function generateApiKey(): string;
|
|
25
|
+
/** Hash an API key with SHA-256 for storage. Returns a 64-char hex digest. */
|
|
26
|
+
export declare function hashApiKey(key: string): Promise<string>;
|
|
27
|
+
//# sourceMappingURL=api-key-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key-store.d.ts","sourceRoot":"","sources":["../../src/stores/api-key-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAoB5D;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAEnD,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,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAYtD,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBhD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CA2BpE;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED,8EAA8E;AAC9E,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
function toApiKeyRecord(row) {
|
|
2
|
+
return {
|
|
3
|
+
id: row.id,
|
|
4
|
+
tenant_id: row.tenant_id,
|
|
5
|
+
name: row.name,
|
|
6
|
+
key_hash: row.key_hash,
|
|
7
|
+
key_prefix: row.key_prefix,
|
|
8
|
+
scopes: row.scopes ?? [],
|
|
9
|
+
last_used_at: row.last_used_at,
|
|
10
|
+
expires_at: row.expires_at,
|
|
11
|
+
revoked_at: row.revoked_at,
|
|
12
|
+
created_by: row.created_by,
|
|
13
|
+
created_at: row.created_at ?? new Date().toISOString(),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Supabase-backed implementation of ApiKeyStore.
|
|
18
|
+
*
|
|
19
|
+
* Pass an admin/service-role client for `validateApiKey` so it can look up keys
|
|
20
|
+
* across all tenants without RLS filtering. If omitted, the regular client is used
|
|
21
|
+
* (which requires the caller to have SELECT access via RLS).
|
|
22
|
+
*/
|
|
23
|
+
export class SupabaseApiKeyStore {
|
|
24
|
+
client;
|
|
25
|
+
adminClient;
|
|
26
|
+
constructor(client, adminClient) {
|
|
27
|
+
this.client = client;
|
|
28
|
+
this.adminClient = adminClient;
|
|
29
|
+
}
|
|
30
|
+
async listApiKeys(tenantId) {
|
|
31
|
+
const { data, error } = await this.client
|
|
32
|
+
.from('api_keys')
|
|
33
|
+
.select('*')
|
|
34
|
+
.eq('tenant_id', tenantId)
|
|
35
|
+
.is('revoked_at', null)
|
|
36
|
+
.order('created_at', { ascending: false });
|
|
37
|
+
if (error)
|
|
38
|
+
throw error;
|
|
39
|
+
return (data ?? []).map(toApiKeyRecord);
|
|
40
|
+
}
|
|
41
|
+
async createApiKey(tenantId, input, createdBy) {
|
|
42
|
+
const plainKey = generateApiKey();
|
|
43
|
+
const keyHash = await hashApiKey(plainKey);
|
|
44
|
+
const keyPrefix = plainKey.slice(0, 8);
|
|
45
|
+
const { data, error } = await this.client
|
|
46
|
+
.from('api_keys')
|
|
47
|
+
.insert({
|
|
48
|
+
tenant_id: tenantId,
|
|
49
|
+
name: input.name,
|
|
50
|
+
key_hash: keyHash,
|
|
51
|
+
key_prefix: keyPrefix,
|
|
52
|
+
scopes: input.scopes,
|
|
53
|
+
expires_at: input.expiresAt ?? null,
|
|
54
|
+
created_by: createdBy,
|
|
55
|
+
})
|
|
56
|
+
.select('*')
|
|
57
|
+
.single();
|
|
58
|
+
if (error)
|
|
59
|
+
throw error;
|
|
60
|
+
return { record: toApiKeyRecord(data), plainKey };
|
|
61
|
+
}
|
|
62
|
+
async revokeApiKey(tenantId, keyId) {
|
|
63
|
+
const { data, error } = await this.client
|
|
64
|
+
.from('api_keys')
|
|
65
|
+
.update({ revoked_at: new Date().toISOString() })
|
|
66
|
+
.eq('id', keyId)
|
|
67
|
+
.eq('tenant_id', tenantId)
|
|
68
|
+
.select('*');
|
|
69
|
+
if (error)
|
|
70
|
+
throw error;
|
|
71
|
+
if (!data || data.length === 0) {
|
|
72
|
+
throw new Error('API key not found or no permission to revoke');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async validateApiKey(keyHash) {
|
|
76
|
+
const client = this.adminClient ?? this.client;
|
|
77
|
+
const { data, error } = await client
|
|
78
|
+
.from('api_keys')
|
|
79
|
+
.select('*')
|
|
80
|
+
.eq('key_hash', keyHash)
|
|
81
|
+
.is('revoked_at', null)
|
|
82
|
+
.maybeSingle();
|
|
83
|
+
if (error)
|
|
84
|
+
throw error;
|
|
85
|
+
if (!data)
|
|
86
|
+
return null;
|
|
87
|
+
const record = toApiKeyRecord(data);
|
|
88
|
+
if (record.expires_at && new Date(record.expires_at) < new Date()) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
// Fire-and-forget: update last_used_at (errors silently ignored)
|
|
92
|
+
void client
|
|
93
|
+
.from('api_keys')
|
|
94
|
+
.update({ last_used_at: new Date().toISOString() })
|
|
95
|
+
.eq('id', record.id);
|
|
96
|
+
return record;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Generate a random API key string with `sk_` prefix. */
|
|
100
|
+
export function generateApiKey() {
|
|
101
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
102
|
+
let result = 'sk_';
|
|
103
|
+
for (let i = 0; i < 40; i++) {
|
|
104
|
+
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/** Hash an API key with SHA-256 for storage. Returns a 64-char hex digest. */
|
|
109
|
+
export async function hashApiKey(key) {
|
|
110
|
+
const encoder = new TextEncoder();
|
|
111
|
+
const data = encoder.encode(key);
|
|
112
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
|
|
113
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
114
|
+
return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=api-key-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key-store.js","sourceRoot":"","sources":["../../src/stores/api-key-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AuditLogRecord, AuditStore, AuditLogFilters, ListAuditLogsResult } 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 AuditStore using the audit_logs table. */
|
|
5
|
+
export declare class SupabaseAuditStore implements AuditStore {
|
|
6
|
+
private client;
|
|
7
|
+
constructor(client: SupabaseClient<Database>);
|
|
8
|
+
listAuditLogs(tenantId: string, filters?: AuditLogFilters): Promise<ListAuditLogsResult>;
|
|
9
|
+
getAuditLog(tenantId: string, id: string): Promise<AuditLogRecord | null>;
|
|
10
|
+
createAuditLog(tenantId: string, entry: Omit<AuditLogRecord, 'id' | 'tenant_id' | 'created_at'>): Promise<AuditLogRecord>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=audit-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-store.d.ts","sourceRoot":"","sources":["../../src/stores/audit-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;AAkBlE,+EAA+E;AAC/E,qBAAa,kBAAmB,YAAW,UAAU;IACvC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0CxF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAYzE,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC,GAC7D,OAAO,CAAC,cAAc,CAAC;CAiB3B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** Map an audit_logs row to an AuditLogRecord. */
|
|
2
|
+
function toAuditLogRecord(row) {
|
|
3
|
+
return {
|
|
4
|
+
id: String(row.id),
|
|
5
|
+
tenant_id: row.tenant_id ?? '',
|
|
6
|
+
user_id: row.changed_by,
|
|
7
|
+
action: row.operation,
|
|
8
|
+
resource_type: row.table_name,
|
|
9
|
+
resource_id: row.resource_id,
|
|
10
|
+
details: (row.new_data ?? row.old_data ?? {}), // JSONB boundary
|
|
11
|
+
ip_address: null,
|
|
12
|
+
user_agent: null,
|
|
13
|
+
created_at: row.timestamp,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/** Supabase-backed implementation of AuditStore using the audit_logs table. */
|
|
17
|
+
export class SupabaseAuditStore {
|
|
18
|
+
client;
|
|
19
|
+
constructor(client) {
|
|
20
|
+
this.client = client;
|
|
21
|
+
}
|
|
22
|
+
async listAuditLogs(tenantId, filters) {
|
|
23
|
+
const limit = filters?.limit ?? 50;
|
|
24
|
+
const offset = filters?.offset ?? 0;
|
|
25
|
+
let countQ = this.client
|
|
26
|
+
.from('audit_logs')
|
|
27
|
+
.select('id', { count: 'exact', head: true })
|
|
28
|
+
.eq('tenant_id', tenantId);
|
|
29
|
+
let dataQ = this.client
|
|
30
|
+
.from('audit_logs')
|
|
31
|
+
.select('*')
|
|
32
|
+
.eq('tenant_id', tenantId)
|
|
33
|
+
.order('timestamp', { ascending: false })
|
|
34
|
+
.range(offset, offset + limit - 1);
|
|
35
|
+
if (filters?.resourceType) {
|
|
36
|
+
countQ = countQ.eq('table_name', filters.resourceType);
|
|
37
|
+
dataQ = dataQ.eq('table_name', filters.resourceType);
|
|
38
|
+
}
|
|
39
|
+
if (filters?.resourceId) {
|
|
40
|
+
countQ = countQ.eq('resource_id', filters.resourceId);
|
|
41
|
+
dataQ = dataQ.eq('resource_id', filters.resourceId);
|
|
42
|
+
}
|
|
43
|
+
if (filters?.userId) {
|
|
44
|
+
countQ = countQ.eq('changed_by', filters.userId);
|
|
45
|
+
dataQ = dataQ.eq('changed_by', filters.userId);
|
|
46
|
+
}
|
|
47
|
+
if (filters?.operation) {
|
|
48
|
+
countQ = countQ.eq('operation', filters.operation);
|
|
49
|
+
dataQ = dataQ.eq('operation', filters.operation);
|
|
50
|
+
}
|
|
51
|
+
const [{ count }, { data, error }] = await Promise.all([countQ, dataQ]);
|
|
52
|
+
if (error)
|
|
53
|
+
throw error;
|
|
54
|
+
return { logs: (data ?? []).map(toAuditLogRecord), total: count ?? 0 };
|
|
55
|
+
}
|
|
56
|
+
async getAuditLog(tenantId, id) {
|
|
57
|
+
const { data, error } = await this.client
|
|
58
|
+
.from('audit_logs')
|
|
59
|
+
.select('*')
|
|
60
|
+
.eq('tenant_id', tenantId)
|
|
61
|
+
.eq('id', Number(id))
|
|
62
|
+
.maybeSingle();
|
|
63
|
+
if (error)
|
|
64
|
+
throw error;
|
|
65
|
+
return data ? toAuditLogRecord(data) : null;
|
|
66
|
+
}
|
|
67
|
+
async createAuditLog(tenantId, entry) {
|
|
68
|
+
const { data, error } = await this.client
|
|
69
|
+
.from('audit_logs')
|
|
70
|
+
.insert({
|
|
71
|
+
tenant_id: tenantId,
|
|
72
|
+
changed_by: entry.user_id,
|
|
73
|
+
operation: entry.action,
|
|
74
|
+
table_name: entry.resource_type,
|
|
75
|
+
resource_id: entry.resource_id,
|
|
76
|
+
new_data: entry.details, // JSONB boundary
|
|
77
|
+
})
|
|
78
|
+
.select('*')
|
|
79
|
+
.single();
|
|
80
|
+
if (error)
|
|
81
|
+
throw error;
|
|
82
|
+
return toAuditLogRecord(data);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=audit-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-store.js","sourceRoot":"","sources":["../../src/stores/audit-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChatStore, MessageRecord, ConversationListItem, SendMessageInput } from '@sprinterai/core';
|
|
1
|
+
import type { ChatParticipant, ChatStore, MessageRecord, ConversationListItem, ParticipantRole, ParticipantType, SendMessageInput } from '@sprinterai/core';
|
|
2
2
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
3
3
|
import type { Database } from '../generated/database-types.js';
|
|
4
4
|
/** Supabase-backed implementation of ChatStore. */
|
|
@@ -23,5 +23,13 @@ export declare class SupabaseChatStore implements ChatStore {
|
|
|
23
23
|
getChatsByUser(userId: string, options?: {
|
|
24
24
|
limit?: number;
|
|
25
25
|
}): Promise<ConversationListItem[]>;
|
|
26
|
+
getParticipants(chatId: string): Promise<ChatParticipant[]>;
|
|
27
|
+
addParticipant(chatId: string, tenantId: string, participantId: string, participantType: ParticipantType, options?: {
|
|
28
|
+
role?: ParticipantRole;
|
|
29
|
+
autoRespond?: boolean;
|
|
30
|
+
}): Promise<ChatParticipant>;
|
|
31
|
+
removeParticipant(chatId: string, participantId: string): Promise<void>;
|
|
32
|
+
markAsRead(chatId: string, userId: string): Promise<void>;
|
|
33
|
+
getUnreadCount(userId: string): Promise<number>;
|
|
26
34
|
}
|
|
27
35
|
//# sourceMappingURL=chat-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-store.d.ts","sourceRoot":"","sources":["../../src/stores/chat-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-store.d.ts","sourceRoot":"","sources":["../../src/stores/chat-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EAET,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;AAuClE,mDAAmD;AACnD,qBAAa,iBAAkB,YAAW,SAAS;IACrC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAgD7D,UAAU,CAAC,OAAO,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;QACpC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyB3B,WAAW,CACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,aAAa,EAAE,CAAC;IAkBrB,WAAW,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG;QACxB,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;QACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,aAAa,CAAC;IAwBnB,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAmC5B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAU3D,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,eAAe,EAChC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,eAAe,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1D,OAAO,CAAC,eAAe,CAAC;IAkBrB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAsCtD"}
|
|
@@ -15,6 +15,20 @@ function toMessageRecord(row) {
|
|
|
15
15
|
function toChatType(dbChatType) {
|
|
16
16
|
return dbChatType || 'ai';
|
|
17
17
|
}
|
|
18
|
+
/** Map DB chat_participants row to ChatParticipant. */
|
|
19
|
+
function toParticipantRecord(row) {
|
|
20
|
+
return {
|
|
21
|
+
id: row.id,
|
|
22
|
+
chat_id: row.chat_id,
|
|
23
|
+
tenant_id: row.tenant_id,
|
|
24
|
+
participant_type: row.participant_type ?? 'user',
|
|
25
|
+
participant_id: row.participant_id,
|
|
26
|
+
role: row.role ?? 'member',
|
|
27
|
+
auto_respond: Boolean(row.auto_respond),
|
|
28
|
+
joined_at: row.joined_at,
|
|
29
|
+
last_read_at: row.last_read_at,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
18
32
|
/** Supabase-backed implementation of ChatStore. */
|
|
19
33
|
export class SupabaseChatStore {
|
|
20
34
|
client;
|
|
@@ -155,5 +169,85 @@ export class SupabaseChatStore {
|
|
|
155
169
|
unread_count: 0,
|
|
156
170
|
}));
|
|
157
171
|
}
|
|
172
|
+
// ─── Participant management ──────────────────────────────────────────────────
|
|
173
|
+
async getParticipants(chatId) {
|
|
174
|
+
const { data, error } = await this.client
|
|
175
|
+
.from('chat_participants')
|
|
176
|
+
.select('*')
|
|
177
|
+
.eq('chat_id', chatId);
|
|
178
|
+
if (error)
|
|
179
|
+
throw error;
|
|
180
|
+
return (data ?? []).map(toParticipantRecord);
|
|
181
|
+
}
|
|
182
|
+
async addParticipant(chatId, tenantId, participantId, participantType, options) {
|
|
183
|
+
const { data, error } = await this.client
|
|
184
|
+
.from('chat_participants')
|
|
185
|
+
.insert({
|
|
186
|
+
chat_id: chatId,
|
|
187
|
+
tenant_id: tenantId,
|
|
188
|
+
participant_id: participantId,
|
|
189
|
+
participant_type: participantType,
|
|
190
|
+
role: options?.role ?? 'member',
|
|
191
|
+
auto_respond: options?.autoRespond ?? participantType === 'agent',
|
|
192
|
+
})
|
|
193
|
+
.select('*')
|
|
194
|
+
.single();
|
|
195
|
+
if (error)
|
|
196
|
+
throw error;
|
|
197
|
+
return toParticipantRecord(data);
|
|
198
|
+
}
|
|
199
|
+
async removeParticipant(chatId, participantId) {
|
|
200
|
+
const { error } = await this.client
|
|
201
|
+
.from('chat_participants')
|
|
202
|
+
.delete()
|
|
203
|
+
.eq('chat_id', chatId)
|
|
204
|
+
.eq('participant_id', participantId);
|
|
205
|
+
if (error)
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
// ─── Unread tracking ─────────────────────────────────────────────────────────
|
|
209
|
+
async markAsRead(chatId, userId) {
|
|
210
|
+
const { error } = await this.client
|
|
211
|
+
.from('chat_participants')
|
|
212
|
+
.update({ last_read_at: new Date().toISOString() })
|
|
213
|
+
.eq('chat_id', chatId)
|
|
214
|
+
.eq('participant_type', 'user')
|
|
215
|
+
.eq('participant_id', userId);
|
|
216
|
+
if (error)
|
|
217
|
+
throw error;
|
|
218
|
+
}
|
|
219
|
+
async getUnreadCount(userId) {
|
|
220
|
+
const { data: participations, error } = await this.client
|
|
221
|
+
.from('chat_participants')
|
|
222
|
+
.select('chat_id, last_read_at')
|
|
223
|
+
.eq('participant_type', 'user')
|
|
224
|
+
.eq('participant_id', userId);
|
|
225
|
+
if (error || !participations || participations.length === 0)
|
|
226
|
+
return 0;
|
|
227
|
+
// Find oldest last_read_at to bound the messages query
|
|
228
|
+
const oldestReadAt = participations.reduce((oldest, p) => {
|
|
229
|
+
return p.last_read_at < oldest ? p.last_read_at : oldest;
|
|
230
|
+
}, participations[0].last_read_at);
|
|
231
|
+
const chatIds = participations.map((p) => p.chat_id);
|
|
232
|
+
const { data: messages } = await this.client
|
|
233
|
+
.from('messages')
|
|
234
|
+
.select('chat_id, created_at, sender_type, sender_id')
|
|
235
|
+
.in('chat_id', chatIds)
|
|
236
|
+
.gt('created_at', oldestReadAt)
|
|
237
|
+
.limit(1000);
|
|
238
|
+
if (!messages || messages.length === 0)
|
|
239
|
+
return 0;
|
|
240
|
+
const readAtMap = new Map(participations.map((p) => [p.chat_id, p.last_read_at]));
|
|
241
|
+
const unreadChatIds = new Set();
|
|
242
|
+
for (const msg of messages) {
|
|
243
|
+
if (msg.sender_type === 'user' && msg.sender_id === userId)
|
|
244
|
+
continue;
|
|
245
|
+
const lastRead = readAtMap.get(msg.chat_id);
|
|
246
|
+
if (lastRead && msg.created_at > lastRead) {
|
|
247
|
+
unreadChatIds.add(msg.chat_id);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return unreadChatIds.size;
|
|
251
|
+
}
|
|
158
252
|
}
|
|
159
253
|
//# sourceMappingURL=chat-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-store.js","sourceRoot":"","sources":["../../src/stores/chat-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-store.js","sourceRoot":"","sources":["../../src/stores/chat-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { EntityRecord, EntityTypeRecord } from '@sprinterai/core';
|
|
2
|
+
import type { Database } from '../generated/database-types.js';
|
|
3
|
+
type EntitiesRow = Database['public']['Tables']['entities']['Row'];
|
|
4
|
+
type EntityTypesRow = Database['public']['Tables']['entity_types']['Row'];
|
|
5
|
+
/** Maps a raw Supabase entity_types row to EntityTypeRecord. */
|
|
6
|
+
export declare function mapEntityTypeRow(row: EntityTypesRow): EntityTypeRecord;
|
|
7
|
+
/**
|
|
8
|
+
* Maps a raw Supabase entities row to an EntityRecord.
|
|
9
|
+
*
|
|
10
|
+
* Handles JSONB boundary casts for `content` and `metadata`, applies default
|
|
11
|
+
* values for nullable columns (`tags` → `[]`, `visibility` → `'tenant'`), and
|
|
12
|
+
* optionally attaches a pre-fetched entity type.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const { data } = await supabase.from('entities').select('*').eq('id', id).single();
|
|
16
|
+
* return mapEntityRow(data);
|
|
17
|
+
*/
|
|
18
|
+
export declare function mapEntityRow(row: EntitiesRow, entityType?: EntityTypesRow | null): EntityRecord;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=entity-mappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-mappers.d.ts","sourceRoot":"","sources":["../../src/stores/entity-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,KAAK,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;AACnE,KAAK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC;AAE1E,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,gBAAgB,CAkBtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,YAAY,CAoB/F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** Maps a raw Supabase entity_types row to EntityTypeRecord. */
|
|
2
|
+
export function mapEntityTypeRow(row) {
|
|
3
|
+
return {
|
|
4
|
+
id: row.id,
|
|
5
|
+
tenant_id: row.tenant_id,
|
|
6
|
+
slug: row.slug,
|
|
7
|
+
name: row.name,
|
|
8
|
+
description: row.description,
|
|
9
|
+
icon: row.icon,
|
|
10
|
+
color: row.color,
|
|
11
|
+
json_schema: row.json_schema, // JSONB boundary
|
|
12
|
+
visibility: row.visibility ?? 'tenant',
|
|
13
|
+
created_at: row.created_at,
|
|
14
|
+
updated_at: row.updated_at,
|
|
15
|
+
config: row.config, // JSONB boundary
|
|
16
|
+
schemaJson: row.json_schema, // JSONB boundary
|
|
17
|
+
behaviorJson: row.behavior_json, // JSONB boundary
|
|
18
|
+
uiJson: row.ui_json, // JSONB boundary
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Maps a raw Supabase entities row to an EntityRecord.
|
|
23
|
+
*
|
|
24
|
+
* Handles JSONB boundary casts for `content` and `metadata`, applies default
|
|
25
|
+
* values for nullable columns (`tags` → `[]`, `visibility` → `'tenant'`), and
|
|
26
|
+
* optionally attaches a pre-fetched entity type.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const { data } = await supabase.from('entities').select('*').eq('id', id).single();
|
|
30
|
+
* return mapEntityRow(data);
|
|
31
|
+
*/
|
|
32
|
+
export function mapEntityRow(row, entityType) {
|
|
33
|
+
return {
|
|
34
|
+
id: row.id,
|
|
35
|
+
tenant_id: row.tenant_id,
|
|
36
|
+
slug: row.slug,
|
|
37
|
+
entity_type_id: row.entity_type_id,
|
|
38
|
+
title: row.title,
|
|
39
|
+
description: row.description,
|
|
40
|
+
content: row.content, // JSONB boundary
|
|
41
|
+
metadata: row.metadata, // JSONB boundary
|
|
42
|
+
owner_id: row.owner_id,
|
|
43
|
+
parent_id: row.parent_id,
|
|
44
|
+
image_url: row.image_url,
|
|
45
|
+
tags: row.tags ?? [],
|
|
46
|
+
visibility: (row.visibility ?? 'tenant'),
|
|
47
|
+
share_token: row.share_token,
|
|
48
|
+
created_at: row.created_at,
|
|
49
|
+
updated_at: row.updated_at,
|
|
50
|
+
entity_type: entityType ? mapEntityTypeRow(entityType) : undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=entity-mappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-mappers.js","sourceRoot":"","sources":["../../src/stores/entity-mappers.ts"],"names":[],"mappings":"AAOA,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,GAAmB;IAClD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAA6C,EAAE,iBAAiB;QACjF,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,QAAQ;QACtC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAoC,EAAE,iBAAiB;QACnE,UAAU,EAAE,GAAG,CAAC,WAA6C,EAAE,iBAAiB;QAChF,YAAY,EAAE,GAAG,CAAC,aAAiD,EAAE,iBAAiB;QACtF,MAAM,EAAE,GAAG,CAAC,OAAqC,EAAE,iBAAiB;KACrE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,GAAgB,EAAE,UAAkC;IAC/E,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,OAAO,EAAE,GAAG,CAAC,OAAyC,EAAE,iBAAiB;QACzE,QAAQ,EAAE,GAAG,CAAC,QAA0C,EAAE,iBAAiB;QAC3E,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACpB,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ,CAA+B;QACtE,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;KACnE,CAAC;AACJ,CAAC"}
|
|
@@ -22,5 +22,6 @@ export declare class SupabaseEntityStore implements EntityStore {
|
|
|
22
22
|
createRelation(fromId: string, toId: string, type: string): Promise<void>;
|
|
23
23
|
getRelatedEntities(entityId: string): Promise<RelatedEntityWithRelation[]>;
|
|
24
24
|
getEntityCounts(tenantId: string): Promise<Record<string, number>>;
|
|
25
|
+
deleteRelation(relationId: string): Promise<void>;
|
|
25
26
|
}
|
|
26
27
|
//# sourceMappingURL=entity-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-store.d.ts","sourceRoot":"","sources":["../../src/stores/entity-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"entity-store.d.ts","sourceRoot":"","sources":["../../src/stores/entity-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAC;AAWlE,qDAAqD;AACrD,qBAAa,mBAAoB,YAAW,WAAW;IACzC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAmBjE,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAO9C,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqBzE,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,GACvF,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAmB7B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYnD,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBpB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA6B7D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA8BzE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAqD1E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAkBlE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxD"}
|
|
@@ -1,57 +1,10 @@
|
|
|
1
|
+
import { mapEntityRow, mapEntityTypeRow } from './entity-mappers.js';
|
|
1
2
|
function slugify(text) {
|
|
2
3
|
return text
|
|
3
4
|
.toLowerCase()
|
|
4
5
|
.replace(/[^a-z0-9]+/g, '-')
|
|
5
6
|
.replace(/^-|-$/g, '');
|
|
6
7
|
}
|
|
7
|
-
/**
|
|
8
|
-
* Map a DB entity_types row to the core EntityTypeRecord.
|
|
9
|
-
* DB columns behavior_json/ui_json/config are Json; cast to their specific shapes.
|
|
10
|
-
*/
|
|
11
|
-
function toEntityTypeRecord(row) {
|
|
12
|
-
return {
|
|
13
|
-
id: row.id,
|
|
14
|
-
tenant_id: row.tenant_id,
|
|
15
|
-
slug: row.slug,
|
|
16
|
-
name: row.name,
|
|
17
|
-
description: row.description,
|
|
18
|
-
icon: row.icon,
|
|
19
|
-
color: row.color,
|
|
20
|
-
json_schema: row.json_schema, // Json -> Record<string, unknown>
|
|
21
|
-
visibility: row.visibility ?? 'tenant',
|
|
22
|
-
created_at: row.created_at,
|
|
23
|
-
updated_at: row.updated_at,
|
|
24
|
-
config: row.config, // Json -> EntityTypeConfig
|
|
25
|
-
schemaJson: row.json_schema, // Json -> Record<string, unknown>
|
|
26
|
-
behaviorJson: row.behavior_json, // Json -> EntityTypeBehaviorJson
|
|
27
|
-
uiJson: row.ui_json, // Json -> EntityTypeUiJson
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Map a DB entities row to the core EntityRecord.
|
|
32
|
-
* DB columns content/metadata are Json; cast to Record<string, unknown>.
|
|
33
|
-
*/
|
|
34
|
-
function toEntityRecord(row, entityType) {
|
|
35
|
-
return {
|
|
36
|
-
id: row.id,
|
|
37
|
-
tenant_id: row.tenant_id,
|
|
38
|
-
slug: row.slug,
|
|
39
|
-
entity_type_id: row.entity_type_id,
|
|
40
|
-
title: row.title,
|
|
41
|
-
description: row.description,
|
|
42
|
-
content: row.content, // Json -> Record<string, unknown>
|
|
43
|
-
metadata: row.metadata, // Json -> Record<string, unknown>
|
|
44
|
-
owner_id: row.owner_id,
|
|
45
|
-
parent_id: row.parent_id,
|
|
46
|
-
image_url: row.image_url,
|
|
47
|
-
tags: row.tags ?? [],
|
|
48
|
-
visibility: (row.visibility ?? 'tenant'),
|
|
49
|
-
share_token: row.share_token,
|
|
50
|
-
created_at: row.created_at,
|
|
51
|
-
updated_at: row.updated_at,
|
|
52
|
-
entity_type: entityType ? toEntityTypeRecord(entityType) : undefined,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
8
|
/** Supabase-backed implementation of EntityStore. */
|
|
56
9
|
export class SupabaseEntityStore {
|
|
57
10
|
client;
|
|
@@ -66,19 +19,19 @@ export class SupabaseEntityStore {
|
|
|
66
19
|
.eq('slug', slugOrId)
|
|
67
20
|
.maybeSingle();
|
|
68
21
|
if (bySlug)
|
|
69
|
-
return
|
|
22
|
+
return mapEntityTypeRow(bySlug);
|
|
70
23
|
const { data: byId } = await this.client
|
|
71
24
|
.from('entity_types')
|
|
72
25
|
.select('*')
|
|
73
26
|
.eq('id', slugOrId)
|
|
74
27
|
.maybeSingle();
|
|
75
|
-
return byId ?
|
|
28
|
+
return byId ? mapEntityTypeRow(byId) : null;
|
|
76
29
|
}
|
|
77
30
|
async listEntityTypes() {
|
|
78
31
|
const { data, error } = await this.client.from('entity_types').select('*').order('name');
|
|
79
32
|
if (error)
|
|
80
33
|
throw error;
|
|
81
|
-
return (data ?? []).map(
|
|
34
|
+
return (data ?? []).map(mapEntityTypeRow);
|
|
82
35
|
}
|
|
83
36
|
async createEntityType(input) {
|
|
84
37
|
const { data, error } = await this.client
|
|
@@ -98,7 +51,7 @@ export class SupabaseEntityStore {
|
|
|
98
51
|
.single();
|
|
99
52
|
if (error)
|
|
100
53
|
throw error;
|
|
101
|
-
return
|
|
54
|
+
return mapEntityTypeRow(data);
|
|
102
55
|
}
|
|
103
56
|
async updateEntityType(slugOrId, input) {
|
|
104
57
|
// Resolve the entity type to get its id
|
|
@@ -117,7 +70,7 @@ export class SupabaseEntityStore {
|
|
|
117
70
|
throw error;
|
|
118
71
|
if (!data || data.length === 0)
|
|
119
72
|
return null;
|
|
120
|
-
return
|
|
73
|
+
return mapEntityTypeRow(data[0]);
|
|
121
74
|
}
|
|
122
75
|
async deleteEntityType(slugOrId) {
|
|
123
76
|
// Resolve the entity type to get its id
|
|
@@ -138,7 +91,7 @@ export class SupabaseEntityStore {
|
|
|
138
91
|
throw error;
|
|
139
92
|
if (!data)
|
|
140
93
|
return null;
|
|
141
|
-
return
|
|
94
|
+
return mapEntityRow(data, data.entity_type);
|
|
142
95
|
}
|
|
143
96
|
async searchEntities(query, options) {
|
|
144
97
|
let q = this.client.from('entities').select('*');
|
|
@@ -155,7 +108,7 @@ export class SupabaseEntityStore {
|
|
|
155
108
|
const { data, error } = await q;
|
|
156
109
|
if (error)
|
|
157
110
|
throw error;
|
|
158
|
-
return (data ?? []).map((row) =>
|
|
111
|
+
return (data ?? []).map((row) => mapEntityRow(row));
|
|
159
112
|
}
|
|
160
113
|
async createEntity(input) {
|
|
161
114
|
// Look up entity type
|
|
@@ -180,7 +133,7 @@ export class SupabaseEntityStore {
|
|
|
180
133
|
.single();
|
|
181
134
|
if (error)
|
|
182
135
|
throw error;
|
|
183
|
-
return
|
|
136
|
+
return mapEntityRow(data);
|
|
184
137
|
}
|
|
185
138
|
async updateEntity(id, input) {
|
|
186
139
|
const updates = {
|
|
@@ -212,7 +165,7 @@ export class SupabaseEntityStore {
|
|
|
212
165
|
if (!data || data.length === 0) {
|
|
213
166
|
throw new Error('Entity not found or no permission to update');
|
|
214
167
|
}
|
|
215
|
-
return
|
|
168
|
+
return mapEntityRow(data[0]);
|
|
216
169
|
}
|
|
217
170
|
async deleteEntity(id) {
|
|
218
171
|
const { error } = await this.client.from('entities').delete().eq('id', id);
|
|
@@ -272,7 +225,7 @@ export class SupabaseEntityStore {
|
|
|
272
225
|
throw entErr;
|
|
273
226
|
return (entities ?? []).map((e) => ({
|
|
274
227
|
relation: relatedMap.get(e.id),
|
|
275
|
-
entity:
|
|
228
|
+
entity: mapEntityRow(e, e.entity_type),
|
|
276
229
|
}));
|
|
277
230
|
}
|
|
278
231
|
async getEntityCounts(tenantId) {
|
|
@@ -291,5 +244,10 @@ export class SupabaseEntityStore {
|
|
|
291
244
|
}
|
|
292
245
|
return counts;
|
|
293
246
|
}
|
|
247
|
+
async deleteRelation(relationId) {
|
|
248
|
+
const { error } = await this.client.from('entity_relations').delete().eq('id', relationId);
|
|
249
|
+
if (error)
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
294
252
|
}
|
|
295
253
|
//# sourceMappingURL=entity-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-store.js","sourceRoot":"","sources":["../../src/stores/entity-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-store.js","sourceRoot":"","sources":["../../src/stores/entity-store.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/factory.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EntityStore, AgentStore, ChatStore, TenantStore, ToolStore, TaskStore, MemoryStore, ViewStore, ActivityStore, CriteriaSetStore, ResponseStore, WorkflowRunStore, MemberStore, AdminStore, DocumentStore, CommentStore, NotificationStore, NavConfigStore, ThemeStore, CostStore, ShareStore, SkillStore, SourceStore, TemplateStore, ExtractionStore, ToolDefinitionStore, FeedbackStore, RecentViewStore, SharedContextStore, InboundStore, FavoritesStore, ApprovalStore, WebhookEndpointStore } from '@sprinterai/core';
|
|
1
|
+
import type { EntityStore, AgentStore, ChatStore, TenantStore, ToolStore, TaskStore, MemoryStore, ViewStore, ActivityStore, CriteriaSetStore, ResponseStore, WorkflowRunStore, MemberStore, AdminStore, DocumentStore, CommentStore, NotificationStore, NavConfigStore, ThemeStore, CostStore, ShareStore, SkillStore, SourceStore, TemplateStore, ExtractionStore, ToolDefinitionStore, FeedbackStore, RecentViewStore, SharedContextStore, InboundStore, FavoritesStore, ApprovalStore, WebhookEndpointStore, AuditStore, ApiKeyStore } from '@sprinterai/core';
|
|
2
2
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
3
3
|
import type { Database } from '../generated/database-types.js';
|
|
4
4
|
/** All store instances created from a single Supabase client. */
|
|
@@ -36,6 +36,8 @@ export interface SupabaseStores {
|
|
|
36
36
|
favorites?: FavoritesStore;
|
|
37
37
|
approvals?: ApprovalStore;
|
|
38
38
|
webhookEndpoints?: WebhookEndpointStore;
|
|
39
|
+
audit?: AuditStore;
|
|
40
|
+
apiKeys?: ApiKeyStore;
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Create all Supabase store implementations from a single client.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,oBAAoB,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/stores/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAsC5D,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,EAChC,WAAW,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GACrC,cAAc,CAsChB"}
|
package/dist/stores/factory.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { SupabaseActivityStore } from './activity-store.js';
|
|
2
2
|
import { SupabaseAdminStore } from './admin-store.js';
|
|
3
3
|
import { SupabaseAgentStore } from './agent-store.js';
|
|
4
|
+
import { SupabaseApiKeyStore } from './api-key-store.js';
|
|
4
5
|
import { SupabaseApprovalStore } from './approval-store.js';
|
|
6
|
+
import { SupabaseAuditStore } from './audit-store.js';
|
|
5
7
|
import { SupabaseChatStore } from './chat-store.js';
|
|
6
8
|
import { SupabaseCommentStore } from './comment-store.js';
|
|
7
9
|
import { SupabaseCostStore } from './cost-store.js';
|
|
@@ -71,6 +73,8 @@ export function createSupabaseStores(client, adminClient) {
|
|
|
71
73
|
favorites: new SupabaseFavoritesStore(client),
|
|
72
74
|
approvals: new SupabaseApprovalStore(client),
|
|
73
75
|
webhookEndpoints: new SupabaseWebhookEndpointStore(client),
|
|
76
|
+
audit: new SupabaseAuditStore(client),
|
|
77
|
+
apiKeys: new SupabaseApiKeyStore(client, adminClient),
|
|
74
78
|
};
|
|
75
79
|
}
|
|
76
80
|
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/stores/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/stores/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { SupabaseEntityStore } from './entity-store.js';
|
|
2
|
+
export { mapEntityRow, mapEntityTypeRow } from './entity-mappers.js';
|
|
2
3
|
export { SupabaseAgentStore } from './agent-store.js';
|
|
3
4
|
export { SupabaseChatStore } from './chat-store.js';
|
|
4
5
|
export { SupabaseTenantStore } from './tenant-store.js';
|
|
@@ -32,6 +33,8 @@ export { SupabaseFavoritesStore } from './favorites-store.js';
|
|
|
32
33
|
export { SupabaseApprovalStore } from './approval-store.js';
|
|
33
34
|
export { SupabaseWebhookEndpointStore } from './webhook-endpoint-store.js';
|
|
34
35
|
export { SupabaseEmbedStore } from './embed-store.js';
|
|
36
|
+
export { SupabaseAuditStore } from './audit-store.js';
|
|
37
|
+
export { SupabaseApiKeyStore, generateApiKey, hashApiKey } from './api-key-store.js';
|
|
35
38
|
export { createSupabaseStores } from './factory.js';
|
|
36
39
|
export type { SupabaseStores } from './factory.js';
|
|
37
40
|
//# 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,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
|
+
{"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,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClE,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,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/stores/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { SupabaseEntityStore } from './entity-store.js';
|
|
2
|
+
export { mapEntityRow, mapEntityTypeRow } from './entity-mappers.js';
|
|
2
3
|
export { SupabaseAgentStore } from './agent-store.js';
|
|
3
4
|
export { SupabaseChatStore } from './chat-store.js';
|
|
4
5
|
export { SupabaseTenantStore } from './tenant-store.js';
|
|
@@ -32,5 +33,7 @@ export { SupabaseFavoritesStore } from './favorites-store.js';
|
|
|
32
33
|
export { SupabaseApprovalStore } from './approval-store.js';
|
|
33
34
|
export { SupabaseWebhookEndpointStore } from './webhook-endpoint-store.js';
|
|
34
35
|
export { SupabaseEmbedStore } from './embed-store.js';
|
|
36
|
+
export { SupabaseAuditStore } from './audit-store.js';
|
|
37
|
+
export { SupabaseApiKeyStore, generateApiKey, hashApiKey } from './api-key-store.js';
|
|
35
38
|
export { createSupabaseStores } from './factory.js';
|
|
36
39
|
//# 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,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"}
|
|
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,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAClE,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,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SourceStore, SourceRecord, CreateSourceInput, UpdateSourceInput } from '@sprinterai/core';
|
|
1
|
+
import type { SourceStore, SourceRecord, CreateSourceInput, UpdateSourceInput, SourceSyncStatus } from '@sprinterai/core';
|
|
2
2
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
3
3
|
import type { Database } from '../generated/database-types.js';
|
|
4
4
|
/**
|
|
@@ -19,5 +19,6 @@ export declare class SupabaseSourceStore implements SourceStore {
|
|
|
19
19
|
updateSource(id: string, tenantId: string, input: UpdateSourceInput): Promise<SourceRecord | null>;
|
|
20
20
|
deleteSource(id: string, tenantId: string): Promise<void>;
|
|
21
21
|
triggerSync(id: string, tenantId: string): Promise<void>;
|
|
22
|
+
updateSyncStatus(id: string, tenantId: string, status: SourceSyncStatus, error?: string | null): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=source-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-store.d.ts","sourceRoot":"","sources":["../../src/stores/source-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"source-store.d.ts","sourceRoot":"","sources":["../../src/stores/source-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAMzC,OAAO,CAAC,MAAM;IAL1B,4DAA4D;IAC5D,OAAO,KAAK,GAAG,GAEd;gBAEmB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;IAE9C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAWtD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAOnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAyB/E,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA0BzB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxD,gBAAgB,CACpB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,IAAI,CAAC;CAajB"}
|
|
@@ -25,11 +25,7 @@ export class SupabaseSourceStore {
|
|
|
25
25
|
return (data ?? []);
|
|
26
26
|
}
|
|
27
27
|
async getSource(id) {
|
|
28
|
-
const { data, error } = await this.raw
|
|
29
|
-
.from('sources')
|
|
30
|
-
.select('*')
|
|
31
|
-
.eq('id', id)
|
|
32
|
-
.maybeSingle();
|
|
28
|
+
const { data, error } = await this.raw.from('sources').select('*').eq('id', id).maybeSingle();
|
|
33
29
|
if (error)
|
|
34
30
|
throw error;
|
|
35
31
|
return data ? data : null;
|
|
@@ -46,6 +42,10 @@ export class SupabaseSourceStore {
|
|
|
46
42
|
entity_type_slug: input.entity_type_slug,
|
|
47
43
|
field_mapping: input.field_mapping,
|
|
48
44
|
enabled: input.enabled ?? true,
|
|
45
|
+
sync_status: 'never_synced',
|
|
46
|
+
scrape_strategy: input.scrape_strategy ?? null,
|
|
47
|
+
sync_error: null,
|
|
48
|
+
last_validated_at: null,
|
|
49
49
|
metadata: input.metadata ?? null,
|
|
50
50
|
})
|
|
51
51
|
.select('*')
|
|
@@ -72,6 +72,8 @@ export class SupabaseSourceStore {
|
|
|
72
72
|
updateData.field_mapping = input.field_mapping;
|
|
73
73
|
if (input.enabled !== undefined)
|
|
74
74
|
updateData.enabled = input.enabled;
|
|
75
|
+
if (input.scrape_strategy !== undefined)
|
|
76
|
+
updateData.scrape_strategy = input.scrape_strategy;
|
|
75
77
|
if (input.metadata !== undefined)
|
|
76
78
|
updateData.metadata = input.metadata;
|
|
77
79
|
const { data, error } = await this.raw
|
|
@@ -107,5 +109,18 @@ export class SupabaseSourceStore {
|
|
|
107
109
|
if (error)
|
|
108
110
|
throw error;
|
|
109
111
|
}
|
|
112
|
+
async updateSyncStatus(id, tenantId, status, error) {
|
|
113
|
+
const { error: dbError } = await this.raw
|
|
114
|
+
.from('sources')
|
|
115
|
+
.update({
|
|
116
|
+
sync_status: status,
|
|
117
|
+
sync_error: error ?? null,
|
|
118
|
+
updated_at: new Date().toISOString(),
|
|
119
|
+
})
|
|
120
|
+
.eq('id', id)
|
|
121
|
+
.eq('tenant_id', tenantId);
|
|
122
|
+
if (dbError)
|
|
123
|
+
throw dbError;
|
|
124
|
+
}
|
|
110
125
|
}
|
|
111
126
|
//# sourceMappingURL=source-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-store.js","sourceRoot":"","sources":["../../src/stores/source-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-store.js","sourceRoot":"","sources":["../../src/stores/source-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sprinterai/supabase",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Supabase store implementations and auth adapter for the Sprinter AI platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,21 +15,57 @@
|
|
|
15
15
|
"types": "./dist/clients/index.d.ts",
|
|
16
16
|
"import": "./dist/clients/index.js"
|
|
17
17
|
},
|
|
18
|
+
"./clients/*": {
|
|
19
|
+
"types": "./dist/clients/*.d.ts",
|
|
20
|
+
"import": "./dist/clients/*.js"
|
|
21
|
+
},
|
|
18
22
|
"./auth": {
|
|
19
23
|
"types": "./dist/auth/index.d.ts",
|
|
20
24
|
"import": "./dist/auth/index.js"
|
|
21
25
|
},
|
|
26
|
+
"./auth/*": {
|
|
27
|
+
"types": "./dist/auth/*.d.ts",
|
|
28
|
+
"import": "./dist/auth/*.js"
|
|
29
|
+
},
|
|
22
30
|
"./tenant": {
|
|
23
31
|
"types": "./dist/tenant/index.d.ts",
|
|
24
32
|
"import": "./dist/tenant/index.js"
|
|
25
33
|
},
|
|
34
|
+
"./tenant/*": {
|
|
35
|
+
"types": "./dist/tenant/*.d.ts",
|
|
36
|
+
"import": "./dist/tenant/*.js"
|
|
37
|
+
},
|
|
26
38
|
"./stores": {
|
|
27
39
|
"types": "./dist/stores/index.d.ts",
|
|
28
40
|
"import": "./dist/stores/index.js"
|
|
29
41
|
},
|
|
42
|
+
"./stores/*": {
|
|
43
|
+
"types": "./dist/stores/*.d.ts",
|
|
44
|
+
"import": "./dist/stores/*.js"
|
|
45
|
+
},
|
|
30
46
|
"./generated": {
|
|
31
47
|
"types": "./dist/generated/index.d.ts",
|
|
32
48
|
"import": "./dist/generated/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./generated/*": {
|
|
51
|
+
"types": "./dist/generated/*.d.ts",
|
|
52
|
+
"import": "./dist/generated/*.js"
|
|
53
|
+
},
|
|
54
|
+
"./realtime": {
|
|
55
|
+
"types": "./dist/realtime/index.d.ts",
|
|
56
|
+
"import": "./dist/realtime/index.js"
|
|
57
|
+
},
|
|
58
|
+
"./realtime/*": {
|
|
59
|
+
"types": "./dist/realtime/*.d.ts",
|
|
60
|
+
"import": "./dist/realtime/*.js"
|
|
61
|
+
},
|
|
62
|
+
"./types": {
|
|
63
|
+
"types": "./dist/types/index.d.ts",
|
|
64
|
+
"import": "./dist/types/index.js"
|
|
65
|
+
},
|
|
66
|
+
"./types/*": {
|
|
67
|
+
"types": "./dist/types/*.d.ts",
|
|
68
|
+
"import": "./dist/types/*.js"
|
|
33
69
|
}
|
|
34
70
|
},
|
|
35
71
|
"files": [
|
|
@@ -38,7 +74,7 @@
|
|
|
38
74
|
"dependencies": {
|
|
39
75
|
"@supabase/ssr": "^0.9.0",
|
|
40
76
|
"@supabase/supabase-js": "^2.49.0",
|
|
41
|
-
"@sprinterai/core": "^0.
|
|
77
|
+
"@sprinterai/core": "^0.8.0"
|
|
42
78
|
},
|
|
43
79
|
"devDependencies": {
|
|
44
80
|
"@types/node": "^25.5.0",
|
|
@@ -49,7 +85,7 @@
|
|
|
49
85
|
"@sprinterai/eslint-config": "0.1.0"
|
|
50
86
|
},
|
|
51
87
|
"publishConfig": {
|
|
52
|
-
"access": "
|
|
88
|
+
"access": "public"
|
|
53
89
|
},
|
|
54
90
|
"repository": {
|
|
55
91
|
"type": "git",
|