@multiplayer-app/ai-agent-db 0.1.0-beta.8 → 0.1.0-beta.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +5 -2
  2. package/dist/cjs/repositories/ActivityRepository.cjs +3 -0
  3. package/dist/cjs/repositories/ActivityRepository.cjs.map +1 -0
  4. package/dist/cjs/repositories/ActivityRepository.d.ts +72 -0
  5. package/dist/cjs/repositories/ActivityRepository.d.ts.map +1 -0
  6. package/dist/cjs/repositories/AgentChatRepository.d.ts +17 -27
  7. package/dist/cjs/repositories/AgentChatRepository.d.ts.map +1 -1
  8. package/dist/cjs/repositories/AgentConfigRepository.cjs +3 -0
  9. package/dist/cjs/repositories/AgentConfigRepository.cjs.map +1 -0
  10. package/dist/cjs/repositories/AgentConfigRepository.d.ts +13 -0
  11. package/dist/cjs/repositories/AgentConfigRepository.d.ts.map +1 -0
  12. package/dist/cjs/repositories/AgentMessageRepository.d.ts +30 -1
  13. package/dist/cjs/repositories/AgentMessageRepository.d.ts.map +1 -1
  14. package/dist/cjs/repositories/BaseRepository.d.ts +1 -0
  15. package/dist/cjs/repositories/BaseRepository.d.ts.map +1 -1
  16. package/dist/cjs/repositories/TenantAICredentialRepository.cjs +3 -0
  17. package/dist/cjs/repositories/TenantAICredentialRepository.cjs.map +1 -0
  18. package/dist/cjs/repositories/TenantAICredentialRepository.d.ts +13 -0
  19. package/dist/cjs/repositories/TenantAICredentialRepository.d.ts.map +1 -0
  20. package/dist/cjs/repositories/index.cjs +3 -0
  21. package/dist/cjs/repositories/index.cjs.map +1 -1
  22. package/dist/cjs/repositories/index.d.ts +3 -0
  23. package/dist/cjs/repositories/index.d.ts.map +1 -1
  24. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  25. package/dist/esm/repositories/ActivityRepository.d.ts +72 -0
  26. package/dist/esm/repositories/ActivityRepository.d.ts.map +1 -0
  27. package/dist/esm/repositories/ActivityRepository.js +2 -0
  28. package/dist/esm/repositories/ActivityRepository.js.map +1 -0
  29. package/dist/esm/repositories/AgentChatRepository.d.ts +17 -27
  30. package/dist/esm/repositories/AgentChatRepository.d.ts.map +1 -1
  31. package/dist/esm/repositories/AgentConfigRepository.d.ts +13 -0
  32. package/dist/esm/repositories/AgentConfigRepository.d.ts.map +1 -0
  33. package/dist/esm/repositories/AgentConfigRepository.js +2 -0
  34. package/dist/esm/repositories/AgentConfigRepository.js.map +1 -0
  35. package/dist/esm/repositories/AgentMessageRepository.d.ts +30 -1
  36. package/dist/esm/repositories/AgentMessageRepository.d.ts.map +1 -1
  37. package/dist/esm/repositories/BaseRepository.d.ts +1 -0
  38. package/dist/esm/repositories/BaseRepository.d.ts.map +1 -1
  39. package/dist/esm/repositories/TenantAICredentialRepository.d.ts +13 -0
  40. package/dist/esm/repositories/TenantAICredentialRepository.d.ts.map +1 -0
  41. package/dist/esm/repositories/TenantAICredentialRepository.js +2 -0
  42. package/dist/esm/repositories/TenantAICredentialRepository.js.map +1 -0
  43. package/dist/esm/repositories/index.d.ts +3 -0
  44. package/dist/esm/repositories/index.d.ts.map +1 -1
  45. package/dist/esm/repositories/index.js +3 -0
  46. package/dist/esm/repositories/index.js.map +1 -1
  47. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  48. package/package.json +2 -2
package/README.md CHANGED
@@ -29,7 +29,10 @@ Generic interface providing standard CRUD operations:
29
29
  ```typescript
30
30
  interface BaseRepository<T, ID = string> {
31
31
  findById(id: ID): Promise<T | null>;
32
- find(filter?: Partial<T>, options?: { sort?: { field: string; order: SortOrder }; limit?: number }): Promise<T[]>;
32
+ find(
33
+ filter?: Partial<T>,
34
+ options?: { sort?: { field: string; order: SortOrder }; skip?: number; limit?: number }
35
+ ): Promise<T[]>;
33
36
  findOne(filter: Partial<T>): Promise<T | null>;
34
37
  create(entity: Omit<T, 'id' | 'createdAt' | 'updatedAt'>, id?: string): Promise<T>;
35
38
  update(id: ID, updates: Partial<Omit<T, 'id' | 'createdAt'>>): Promise<T | null>;
@@ -101,7 +104,7 @@ export class PostgresAgentChatRepository implements AgentChatRepository {
101
104
 
102
105
  async find(
103
106
  filter?: Partial<AgentChat>,
104
- options?: { sort?: { field: string; order: SortOrder }; limit?: number }
107
+ options?: { sort?: { field: string; order: SortOrder }; skip?: number; limit?: number }
105
108
  ): Promise<AgentChat[]> {
106
109
  // Your implementation with filtering, sorting, and pagination
107
110
  }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ActivityRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityRepository.js","sourceRoot":"","sources":["../../../src/repositories/ActivityRepository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import type { Activity, ActivitySummary, ActivitySummaryParams } from '@multiplayer-app/ai-agent-types';
2
+ import { SortOrder } from '@multiplayer-app/ai-agent-types';
3
+ import type { BaseRepository } from './BaseRepository';
4
+ /**
5
+ * Abstract repository interface for Activity operations.
6
+ * Implement this interface for your specific database (MongoDB, PostgreSQL, etc.)
7
+ */
8
+ export interface ActivityRepository extends BaseRepository<Activity> {
9
+ getActivitySummary(params?: ActivitySummaryParams): Promise<ActivitySummary[]>;
10
+ findByParentId(filter?: {
11
+ ownerId?: string;
12
+ groupId?: string;
13
+ parentId?: string;
14
+ tenants?: Record<string, string>;
15
+ period?: {
16
+ from?: string | Date;
17
+ to?: string | Date;
18
+ };
19
+ sourceType?: string;
20
+ }, options?: {
21
+ sort?: {
22
+ field: string;
23
+ order: SortOrder;
24
+ };
25
+ limit?: number;
26
+ skip?: number;
27
+ }): Promise<Activity[]>;
28
+ countByParentId(filter?: {
29
+ ownerId?: string;
30
+ groupId?: string;
31
+ parentId?: string;
32
+ tenants?: Record<string, string>;
33
+ period?: {
34
+ from?: string | Date;
35
+ to?: string | Date;
36
+ };
37
+ sourceType?: string;
38
+ }): Promise<number>;
39
+ /**
40
+ * Distinct `sourceType` values for activities matching the same scope as list (parent/root query).
41
+ */
42
+ distinctSourceTypes(filter?: {
43
+ ownerId?: string;
44
+ groupId?: string;
45
+ parentId?: string;
46
+ tenants?: Record<string, string>;
47
+ period?: {
48
+ from?: string | Date;
49
+ to?: string | Date;
50
+ };
51
+ }): Promise<string[]>;
52
+ /**
53
+ * Delete all activities for a specific owner
54
+ */
55
+ deleteByOwnerId(ownerId: string): Promise<number>;
56
+ /**
57
+ * Delete all activities for a specific group
58
+ */
59
+ deleteByGroupId(groupId: string): Promise<number>;
60
+ getGroupedMetadataByParentId(parentId: string): Promise<{
61
+ inputTokens: number;
62
+ outputTokens: number;
63
+ cost: number;
64
+ childCount: number;
65
+ totalTokens: number;
66
+ reasoningTokens: number;
67
+ cachedInputTokens: number;
68
+ }>;
69
+ updateMetadata(activityId: string, metadata: Partial<Activity['metadata']>): Promise<Activity | null>;
70
+ calculateCost(activityData: Partial<Activity>): Promise<number>;
71
+ }
72
+ //# sourceMappingURL=ActivityRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/ActivityRepository.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,26 @@
1
- import type { AgentChat, AgentChatResponse, SortOrder } from '@multiplayer-app/ai-agent-types';
1
+ import type { AgentChat, SortOrder } from '@multiplayer-app/ai-agent-types';
2
2
  import type { BaseRepository } from './BaseRepository';
3
+ export type AgentChatFilter = Partial<AgentChat> & {
4
+ /**
5
+ * true: chats with more than one participant.
6
+ * false: chats with zero or one participant, including legacy rows without participantIds.
7
+ */
8
+ multiUser?: boolean;
9
+ };
3
10
  /**
4
11
  * Abstract repository interface for AgentChat operations.
5
12
  * Implement this interface for your specific database (MongoDB, PostgreSQL, etc.)
6
13
  */
7
14
  export interface AgentChatRepository extends BaseRepository<AgentChat> {
8
- /**
9
- * Find all chats for a specific user
10
- */
11
- findByUserId(userId: string): Promise<AgentChat[]>;
12
- /**
13
- * Find all chats for a specific context key
14
- */
15
- findByContextKey(contextKey: string): Promise<AgentChat[]>;
16
- /**
17
- * Find chats by user ID and context key
18
- */
19
- findByUserIdAndContextKey(userId: string, contextKey: string): Promise<AgentChat[]>;
20
- /**
21
- * Find guest chats (chats without a userId) for a specific context key
22
- */
23
- findGuestChatsByContextKey(contextKey: string): Promise<AgentChat[]>;
15
+ find(filter?: AgentChatFilter, options?: {
16
+ sort?: {
17
+ field: string;
18
+ order: SortOrder;
19
+ };
20
+ skip?: number;
21
+ limit?: number;
22
+ }): Promise<AgentChat[]>;
23
+ count(filter?: AgentChatFilter): Promise<number>;
24
24
  /**
25
25
  * Update chat title
26
26
  */
@@ -33,15 +33,5 @@ export interface AgentChatRepository extends BaseRepository<AgentChat> {
33
33
  * Delete all chats for a specific context key
34
34
  */
35
35
  deleteByContextKey(contextKey: string): Promise<number>;
36
- /**
37
- * Find chats with related messages using aggregation
38
- */
39
- findWithMessages(filter?: Partial<AgentChat>, options?: {
40
- sort?: {
41
- field: string;
42
- order: SortOrder;
43
- };
44
- limit?: number;
45
- }): Promise<AgentChatResponse[]>;
46
36
  }
47
37
  //# sourceMappingURL=AgentChatRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentChatRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/AgentChatRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,SAAS,CAAC;IACpE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEnD;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAE3D;;OAEG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEpF;;OAEG;IACH,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAErE;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhD;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExD;;OAEG;IACH,gBAAgB,CACd,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;CACjC"}
1
+ {"version":3,"file":"AgentChatRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/AgentChatRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG;IACjD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,SAAS,CAAC;IACpE,IAAI,CACF,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAExB,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhD;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAEzD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AgentConfigRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentConfigRepository.js","sourceRoot":"","sources":["../../../src/repositories/AgentConfigRepository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { AgentConfigPreference } from '@multiplayer-app/ai-agent-types';
2
+ import type { BaseRepository } from './BaseRepository';
3
+ /**
4
+ * Repository for user-level agent tool preferences.
5
+ * A preference document is unique per (userId, agentName).
6
+ */
7
+ export interface AgentConfigRepository extends BaseRepository<AgentConfigPreference> {
8
+ findByUserId(userId: string): Promise<AgentConfigPreference[]>;
9
+ findByUserIdAndAgentName(userId: string, agentName: string): Promise<AgentConfigPreference | null>;
10
+ upsertByUserIdAndAgentName(userId: string, agentName: string, updates: Pick<AgentConfigPreference, 'tools'>): Promise<AgentConfigPreference>;
11
+ deleteByUserId(userId: string): Promise<number>;
12
+ }
13
+ //# sourceMappingURL=AgentConfigRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/AgentConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,qBAAqB,CAAC;IAClF,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC/D,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACnG,0BAA0B,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD"}
@@ -1,5 +1,15 @@
1
- import type { AgentMessage, MessageRole } from '@multiplayer-app/ai-agent-types';
1
+ import type { AgentMessage, AgentToolCallStatus, MessageRole } from '@multiplayer-app/ai-agent-types';
2
2
  import type { BaseRepository } from './BaseRepository';
3
+ /**
4
+ * Options for cursor-based pagination of messages.
5
+ * When limit is omitted, implementations should return all messages (backward compatible).
6
+ */
7
+ export interface FindMessagesPaginatedOptions {
8
+ /** Max number of messages to return. Omit to return all (legacy behavior). */
9
+ limit?: number;
10
+ /** Cursor: return messages older than this message (by createdAt). */
11
+ before?: string;
12
+ }
3
13
  /**
4
14
  * Abstract repository interface for AgentMessage operations.
5
15
  * Implement this interface for your specific database (MongoDB, PostgreSQL, etc.)
@@ -9,6 +19,15 @@ export interface AgentMessageRepository extends BaseRepository<AgentMessage> {
9
19
  * Find all messages for a specific chat
10
20
  */
11
21
  findByChatId(chatId: string): Promise<AgentMessage[]>;
22
+ /**
23
+ * Find messages for a chat with optional cursor pagination.
24
+ * Sort: newest first in DB, then returned as oldest → newest for the page.
25
+ * When limit is omitted, returns all messages and hasMore: false (backward compatible).
26
+ */
27
+ findByChatIdPaginated(chatId: string, options?: FindMessagesPaginatedOptions): Promise<{
28
+ messages: AgentMessage[];
29
+ hasMore: boolean;
30
+ }>;
12
31
  /**
13
32
  * Find messages by role
14
33
  */
@@ -37,5 +56,15 @@ export interface AgentMessageRepository extends BaseRepository<AgentMessage> {
37
56
  * Delete messages by chat ID and role
38
57
  */
39
58
  deleteByChatIdAndRole(chatId: string, role: MessageRole): Promise<number>;
59
+ /**
60
+ * Update selected fields for a single tool call within a specific message.
61
+ * Returns null when message or tool call cannot be found.
62
+ */
63
+ updateToolCall(messageId: string, toolCallId: string, updates: {
64
+ input?: Record<string, unknown>;
65
+ output?: Record<string, unknown>;
66
+ status?: AgentToolCallStatus;
67
+ subagentChatId?: string;
68
+ }): Promise<AgentMessage | null>;
40
69
  }
41
70
  //# sourceMappingURL=AgentMessageRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentMessageRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/AgentMessageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc,CAAC,YAAY,CAAC;IAC1E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEtD;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEvD;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEjF;;OAEG;IACH,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5D;;OAEG;IACH,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE9D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjD;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E"}
1
+ {"version":3,"file":"AgentMessageRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/AgentMessageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc,CAAC,YAAY,CAAC;IAC1E;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEtD;;;;OAIG;IACH,qBAAqB,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC;QAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE3D;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEvD;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEjF;;OAEG;IACH,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5D;;OAEG;IACH,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE9D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjD;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1E;;;OAGG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACjC"}
@@ -17,6 +17,7 @@ export interface BaseRepository<T, ID = string> {
17
17
  field: string;
18
18
  order: SortOrder;
19
19
  };
20
+ skip?: number;
20
21
  limit?: number;
21
22
  }): Promise<T[]>;
22
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/BaseRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM;IAC5C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAElH;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnF;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjF;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C"}
1
+ {"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/BaseRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,iCAAiC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM;IAC5C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,IAAI,CACF,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnF;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjF;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TenantAICredentialRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantAICredentialRepository.js","sourceRoot":"","sources":["../../../src/repositories/TenantAICredentialRepository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { TenantAICredential, AIProvider } from '@multiplayer-app/ai-agent-types';
2
+ import type { BaseRepository } from './BaseRepository';
3
+ /**
4
+ * Repository for tenant-scoped provider credentials.
5
+ * One document is unique per (tenantKey, provider).
6
+ */
7
+ export interface TenantAICredentialRepository extends BaseRepository<TenantAICredential> {
8
+ findByTenantKey(tenantKey: string): Promise<TenantAICredential[]>;
9
+ findByTenantKeyAndProvider(tenantKey: string, provider: AIProvider): Promise<TenantAICredential | null>;
10
+ upsertByTenantKeyAndProvider(tenantKey: string, tenants: Record<string, string>, provider: AIProvider, encryptedApiKey: string, baseUrl?: string): Promise<TenantAICredential>;
11
+ deleteByTenantKeyAndProvider(tenantKey: string, provider: AIProvider): Promise<boolean>;
12
+ }
13
+ //# sourceMappingURL=TenantAICredentialRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantAICredentialRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/TenantAICredentialRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,4BAA6B,SAAQ,cAAc,CAAC,kBAAkB,CAAC;IACtF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACxG,4BAA4B,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,QAAQ,EAAE,UAAU,EACpB,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzF"}
@@ -16,5 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./AgentChatRepository.cjs"), exports);
18
18
  __exportStar(require("./AgentMessageRepository.cjs"), exports);
19
+ __exportStar(require("./ActivityRepository.cjs"), exports);
20
+ __exportStar(require("./AgentConfigRepository.cjs"), exports);
21
+ __exportStar(require("./TenantAICredentialRepository.cjs"), exports);
19
22
  __exportStar(require("./BaseRepository.cjs"), exports);
20
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,uDAAqC;AACrC,0DAAwC;AACxC,iEAA+C;AAC/C,mDAAiC"}
@@ -1,4 +1,7 @@
1
1
  export * from './AgentChatRepository';
2
2
  export * from './AgentMessageRepository';
3
+ export * from './ActivityRepository';
4
+ export * from './AgentConfigRepository';
5
+ export * from './TenantAICredentialRepository';
3
6
  export * from './BaseRepository';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC"}