@multiplayer-app/ai-agent-node 0.1.0-beta.7 → 0.1.0-beta.70

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 (210) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/config.cjs +87 -45
  3. package/dist/cjs/config.cjs.map +1 -1
  4. package/dist/cjs/config.d.ts +60 -29
  5. package/dist/cjs/config.d.ts.map +1 -1
  6. package/dist/cjs/helpers/AIHelper.cjs +127 -65
  7. package/dist/cjs/helpers/AIHelper.cjs.map +1 -1
  8. package/dist/cjs/helpers/AIHelper.d.ts +22 -16
  9. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
  10. package/dist/cjs/helpers/AIHelper.test.cjs +22 -15
  11. package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -1
  12. package/dist/cjs/helpers/ConfigHelper.cjs +15 -6
  13. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -1
  14. package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -1
  15. package/dist/cjs/helpers/FileHelper.cjs +131 -151
  16. package/dist/cjs/helpers/FileHelper.cjs.map +1 -1
  17. package/dist/cjs/helpers/FileHelper.d.ts +19 -25
  18. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
  19. package/dist/cjs/helpers/index.cjs +0 -1
  20. package/dist/cjs/helpers/index.cjs.map +1 -1
  21. package/dist/cjs/helpers/index.d.ts +0 -1
  22. package/dist/cjs/helpers/index.d.ts.map +1 -1
  23. package/dist/cjs/index.cjs +120 -26
  24. package/dist/cjs/index.cjs.map +1 -1
  25. package/dist/cjs/index.d.ts +43 -10
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/libs/s3/index.cjs +3 -39
  28. package/dist/cjs/libs/s3/index.cjs.map +1 -1
  29. package/dist/cjs/libs/s3/index.d.ts +1 -2
  30. package/dist/cjs/libs/s3/index.d.ts.map +1 -1
  31. package/dist/cjs/libs/s3/s3.lib.cjs +173 -186
  32. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -1
  33. package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
  34. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
  35. package/dist/cjs/processors/ActivityProcessor.cjs +39 -0
  36. package/dist/cjs/processors/ActivityProcessor.cjs.map +1 -0
  37. package/dist/cjs/processors/ActivityProcessor.d.ts +32 -0
  38. package/dist/cjs/processors/ActivityProcessor.d.ts.map +1 -0
  39. package/dist/cjs/processors/ActivityProcessor.test.cjs +84 -0
  40. package/dist/cjs/processors/ActivityProcessor.test.cjs.map +1 -0
  41. package/dist/cjs/processors/ActivityProcessor.test.d.ts +2 -0
  42. package/dist/cjs/processors/ActivityProcessor.test.d.ts.map +1 -0
  43. package/dist/cjs/processors/AgentProcessor.cjs +46 -0
  44. package/dist/cjs/processors/AgentProcessor.cjs.map +1 -0
  45. package/dist/cjs/processors/AgentProcessor.d.ts +25 -0
  46. package/dist/cjs/processors/AgentProcessor.d.ts.map +1 -0
  47. package/dist/cjs/processors/AgentProcessor.test.cjs +103 -0
  48. package/dist/cjs/processors/AgentProcessor.test.cjs.map +1 -0
  49. package/dist/cjs/processors/AgentProcessor.test.d.ts +2 -0
  50. package/dist/cjs/processors/AgentProcessor.test.d.ts.map +1 -0
  51. package/dist/cjs/processors/ChatProcessor.cjs +348 -126
  52. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -1
  53. package/dist/cjs/processors/ChatProcessor.d.ts +70 -11
  54. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
  55. package/dist/cjs/processors/ChatProcessor.test.cjs +762 -0
  56. package/dist/cjs/processors/ChatProcessor.test.cjs.map +1 -0
  57. package/dist/cjs/processors/ChatProcessor.test.d.ts +2 -0
  58. package/dist/cjs/processors/ChatProcessor.test.d.ts.map +1 -0
  59. package/dist/cjs/processors/index.cjs +2 -0
  60. package/dist/cjs/processors/index.cjs.map +1 -1
  61. package/dist/cjs/processors/index.d.ts +2 -0
  62. package/dist/cjs/processors/index.d.ts.map +1 -1
  63. package/dist/cjs/services/AIService.cjs +87 -21
  64. package/dist/cjs/services/AIService.cjs.map +1 -1
  65. package/dist/cjs/services/AIService.d.ts +19 -7
  66. package/dist/cjs/services/AIService.d.ts.map +1 -1
  67. package/dist/cjs/services/InternalEventsHandler.cjs +3 -3
  68. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -1
  69. package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
  70. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
  71. package/dist/cjs/services/ModelFetcher.cjs +2 -8
  72. package/dist/cjs/services/ModelFetcher.cjs.map +1 -1
  73. package/dist/cjs/services/ModelFetcher.d.ts +2 -7
  74. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
  75. package/dist/cjs/services/RedisService.cjs +20 -16
  76. package/dist/cjs/services/RedisService.cjs.map +1 -1
  77. package/dist/cjs/services/RedisService.d.ts +5 -2
  78. package/dist/cjs/services/RedisService.d.ts.map +1 -1
  79. package/dist/cjs/services/SocketService.cjs +7 -7
  80. package/dist/cjs/services/SocketService.cjs.map +1 -1
  81. package/dist/cjs/services/SocketService.d.ts +9 -6
  82. package/dist/cjs/services/SocketService.d.ts.map +1 -1
  83. package/dist/cjs/store/AgentStore.cjs +3 -4
  84. package/dist/cjs/store/AgentStore.cjs.map +1 -1
  85. package/dist/cjs/store/AgentStore.d.ts +2 -1
  86. package/dist/cjs/store/AgentStore.d.ts.map +1 -1
  87. package/dist/cjs/store/ConfigStore.cjs +7 -3
  88. package/dist/cjs/store/ConfigStore.cjs.map +1 -1
  89. package/dist/cjs/store/ConfigStore.d.ts +1 -0
  90. package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
  91. package/dist/cjs/tools/generateChartTool.d.ts +2 -2
  92. package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
  93. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  94. package/dist/esm/config.d.ts +60 -29
  95. package/dist/esm/config.d.ts.map +1 -1
  96. package/dist/esm/config.js +87 -43
  97. package/dist/esm/config.js.map +1 -1
  98. package/dist/esm/helpers/AIHelper.d.ts +22 -16
  99. package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
  100. package/dist/esm/helpers/AIHelper.js +134 -70
  101. package/dist/esm/helpers/AIHelper.js.map +1 -1
  102. package/dist/esm/helpers/AIHelper.test.js +22 -15
  103. package/dist/esm/helpers/AIHelper.test.js.map +1 -1
  104. package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -1
  105. package/dist/esm/helpers/ConfigHelper.js +15 -6
  106. package/dist/esm/helpers/ConfigHelper.js.map +1 -1
  107. package/dist/esm/helpers/FileHelper.d.ts +19 -25
  108. package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
  109. package/dist/esm/helpers/FileHelper.js +131 -146
  110. package/dist/esm/helpers/FileHelper.js.map +1 -1
  111. package/dist/esm/helpers/index.d.ts +0 -1
  112. package/dist/esm/helpers/index.d.ts.map +1 -1
  113. package/dist/esm/helpers/index.js +0 -1
  114. package/dist/esm/helpers/index.js.map +1 -1
  115. package/dist/esm/index.d.ts +43 -10
  116. package/dist/esm/index.d.ts.map +1 -1
  117. package/dist/esm/index.js +92 -10
  118. package/dist/esm/index.js.map +1 -1
  119. package/dist/esm/libs/s3/index.d.ts +1 -2
  120. package/dist/esm/libs/s3/index.d.ts.map +1 -1
  121. package/dist/esm/libs/s3/index.js +1 -2
  122. package/dist/esm/libs/s3/index.js.map +1 -1
  123. package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
  124. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
  125. package/dist/esm/libs/s3/s3.lib.js +177 -172
  126. package/dist/esm/libs/s3/s3.lib.js.map +1 -1
  127. package/dist/esm/processors/ActivityProcessor.d.ts +32 -0
  128. package/dist/esm/processors/ActivityProcessor.d.ts.map +1 -0
  129. package/dist/esm/processors/ActivityProcessor.js +36 -0
  130. package/dist/esm/processors/ActivityProcessor.js.map +1 -0
  131. package/dist/esm/processors/ActivityProcessor.test.d.ts +2 -0
  132. package/dist/esm/processors/ActivityProcessor.test.d.ts.map +1 -0
  133. package/dist/esm/processors/ActivityProcessor.test.js +82 -0
  134. package/dist/esm/processors/ActivityProcessor.test.js.map +1 -0
  135. package/dist/esm/processors/AgentProcessor.d.ts +25 -0
  136. package/dist/esm/processors/AgentProcessor.d.ts.map +1 -0
  137. package/dist/esm/processors/AgentProcessor.js +43 -0
  138. package/dist/esm/processors/AgentProcessor.js.map +1 -0
  139. package/dist/esm/processors/AgentProcessor.test.d.ts +2 -0
  140. package/dist/esm/processors/AgentProcessor.test.d.ts.map +1 -0
  141. package/dist/esm/processors/AgentProcessor.test.js +101 -0
  142. package/dist/esm/processors/AgentProcessor.test.js.map +1 -0
  143. package/dist/esm/processors/ChatProcessor.d.ts +70 -11
  144. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
  145. package/dist/esm/processors/ChatProcessor.js +359 -130
  146. package/dist/esm/processors/ChatProcessor.js.map +1 -1
  147. package/dist/esm/processors/ChatProcessor.test.d.ts +2 -0
  148. package/dist/esm/processors/ChatProcessor.test.d.ts.map +1 -0
  149. package/dist/esm/processors/ChatProcessor.test.js +760 -0
  150. package/dist/esm/processors/ChatProcessor.test.js.map +1 -0
  151. package/dist/esm/processors/index.d.ts +2 -0
  152. package/dist/esm/processors/index.d.ts.map +1 -1
  153. package/dist/esm/processors/index.js +2 -0
  154. package/dist/esm/processors/index.js.map +1 -1
  155. package/dist/esm/services/AIService.d.ts +19 -7
  156. package/dist/esm/services/AIService.d.ts.map +1 -1
  157. package/dist/esm/services/AIService.js +91 -24
  158. package/dist/esm/services/AIService.js.map +1 -1
  159. package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
  160. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
  161. package/dist/esm/services/InternalEventsHandler.js +4 -3
  162. package/dist/esm/services/InternalEventsHandler.js.map +1 -1
  163. package/dist/esm/services/ModelFetcher.d.ts +2 -7
  164. package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
  165. package/dist/esm/services/ModelFetcher.js +2 -8
  166. package/dist/esm/services/ModelFetcher.js.map +1 -1
  167. package/dist/esm/services/RedisService.d.ts +5 -2
  168. package/dist/esm/services/RedisService.d.ts.map +1 -1
  169. package/dist/esm/services/RedisService.js +21 -14
  170. package/dist/esm/services/RedisService.js.map +1 -1
  171. package/dist/esm/services/SocketService.d.ts +9 -6
  172. package/dist/esm/services/SocketService.d.ts.map +1 -1
  173. package/dist/esm/services/SocketService.js +9 -5
  174. package/dist/esm/services/SocketService.js.map +1 -1
  175. package/dist/esm/store/AgentStore.d.ts +2 -1
  176. package/dist/esm/store/AgentStore.d.ts.map +1 -1
  177. package/dist/esm/store/AgentStore.js +4 -2
  178. package/dist/esm/store/AgentStore.js.map +1 -1
  179. package/dist/esm/store/ConfigStore.d.ts +1 -0
  180. package/dist/esm/store/ConfigStore.d.ts.map +1 -1
  181. package/dist/esm/store/ConfigStore.js +7 -3
  182. package/dist/esm/store/ConfigStore.js.map +1 -1
  183. package/dist/esm/tools/generateChartTool.d.ts +2 -2
  184. package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
  185. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  186. package/package.json +12 -11
  187. package/dist/cjs/helpers/SetupHelper.cjs +0 -34
  188. package/dist/cjs/helpers/SetupHelper.cjs.map +0 -1
  189. package/dist/cjs/helpers/SetupHelper.d.ts +0 -4
  190. package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
  191. package/dist/cjs/libs/logger/config.cjs +0 -9
  192. package/dist/cjs/libs/logger/config.cjs.map +0 -1
  193. package/dist/cjs/libs/logger/config.d.ts +0 -5
  194. package/dist/cjs/libs/logger/config.d.ts.map +0 -1
  195. package/dist/cjs/libs/s3/config.cjs +0 -8
  196. package/dist/cjs/libs/s3/config.cjs.map +0 -1
  197. package/dist/cjs/libs/s3/config.d.ts +0 -4
  198. package/dist/cjs/libs/s3/config.d.ts.map +0 -1
  199. package/dist/esm/helpers/SetupHelper.d.ts +0 -4
  200. package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
  201. package/dist/esm/helpers/SetupHelper.js +0 -29
  202. package/dist/esm/helpers/SetupHelper.js.map +0 -1
  203. package/dist/esm/libs/logger/config.d.ts +0 -5
  204. package/dist/esm/libs/logger/config.d.ts.map +0 -1
  205. package/dist/esm/libs/logger/config.js +0 -6
  206. package/dist/esm/libs/logger/config.js.map +0 -1
  207. package/dist/esm/libs/s3/config.d.ts +0 -4
  208. package/dist/esm/libs/s3/config.d.ts.map +0 -1
  209. package/dist/esm/libs/s3/config.js +0 -5
  210. package/dist/esm/libs/s3/config.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ import { SortOrder, type Activity, type ActivitySummary, type ActivitySummaryParams, type DataWithCursor } from '@multiplayer-app/ai-agent-types';
2
+ import type { ActivityRepository } from '@multiplayer-app/ai-agent-db';
3
+ export type ActivityTreeNode = Activity & {
4
+ children: ActivityTreeNode[];
5
+ };
6
+ interface ListActivitiesParams {
7
+ ownerId?: string;
8
+ groupId?: string;
9
+ parentId?: string;
10
+ tenants?: Record<string, string>;
11
+ period?: {
12
+ from?: string | Date;
13
+ to?: string | Date;
14
+ };
15
+ sort?: {
16
+ field: string;
17
+ order: SortOrder;
18
+ };
19
+ skip?: number;
20
+ limit?: number;
21
+ }
22
+ export declare class ActivityProcessor {
23
+ private activityRepository;
24
+ constructor(params: {
25
+ activityRepository: ActivityRepository;
26
+ });
27
+ getActivityById(activityId: string, ownerId: string): Promise<Activity | null>;
28
+ listActivities(params: ListActivitiesParams): Promise<DataWithCursor<Activity>>;
29
+ getActivitySummary(params?: ActivitySummaryParams): Promise<ActivitySummary[]>;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=ActivityProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityProcessor.d.ts","sourceRoot":"","sources":["../../../src/processors/ActivityProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAE3E,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACtD,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,EAAE;QAAE,kBAAkB,EAAE,kBAAkB,CAAA;KAAE;IAIxD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAa9E,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAmB/E,kBAAkB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAGrF"}
@@ -0,0 +1,36 @@
1
+ export class ActivityProcessor {
2
+ activityRepository;
3
+ constructor(params) {
4
+ this.activityRepository = params.activityRepository;
5
+ }
6
+ async getActivityById(activityId, ownerId) {
7
+ const activity = await this.activityRepository.findById(activityId);
8
+ if (!activity) {
9
+ return null;
10
+ }
11
+ if (activity.ownerId !== ownerId) {
12
+ return null;
13
+ }
14
+ return activity;
15
+ }
16
+ async listActivities(params) {
17
+ const { ownerId, groupId, parentId, tenants, period, skip, limit, sort } = params;
18
+ const baseFilter = {
19
+ ownerId, groupId, tenants, parentId, period
20
+ };
21
+ const activities = await this.activityRepository.findByParentId(baseFilter, { skip, limit, sort });
22
+ const count = await this.activityRepository.countByParentId(baseFilter);
23
+ return {
24
+ data: activities,
25
+ cursor: {
26
+ total: count,
27
+ skip,
28
+ limit,
29
+ },
30
+ };
31
+ }
32
+ async getActivitySummary(params) {
33
+ return this.activityRepository.getActivitySummary(params);
34
+ }
35
+ }
36
+ //# sourceMappingURL=ActivityProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityProcessor.js","sourceRoot":"","sources":["../../../src/processors/ActivityProcessor.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,iBAAiB;IACpB,kBAAkB,CAAqB;IAE/C,YAAY,MAAkD;QAC5D,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,OAAe;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAA4B;QAC/C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAElF,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;SAC5C,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACxE,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE;gBACN,KAAK,EAAE,KAAK;gBACZ,IAAI;gBACJ,KAAK;aACN;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAA8B;QACrD,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ActivityProcessor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityProcessor.test.d.ts","sourceRoot":"","sources":["../../../src/processors/ActivityProcessor.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ import { SortOrder } from '@multiplayer-app/ai-agent-types';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ import { ActivityProcessor } from './ActivityProcessor';
4
+ describe('ActivityProcessor', () => {
5
+ const rootActivity = {
6
+ id: 'a1',
7
+ ownerId: 'u1',
8
+ groupId: 'p1',
9
+ name: 'root',
10
+ tenants: { accountId: 'acc-1', workspaceId: 'ws-1' },
11
+ sourceId: 'm1',
12
+ sourceType: 'AgentMessage',
13
+ metadata: {},
14
+ };
15
+ const childActivity = {
16
+ id: 'a2',
17
+ ownerId: 'u1',
18
+ groupId: 'p1',
19
+ name: 'child',
20
+ parentId: 'a1',
21
+ tenants: { accountId: 'acc-1', workspaceId: 'ws-1' },
22
+ sourceId: 'm2',
23
+ sourceType: 'AgentMessage',
24
+ metadata: {},
25
+ };
26
+ it('lists root activities with cursor metadata', async () => {
27
+ const repository = {
28
+ find: vi.fn().mockResolvedValue([rootActivity]),
29
+ count: vi.fn().mockResolvedValue(10),
30
+ };
31
+ const processor = new ActivityProcessor({ activityRepository: repository });
32
+ const result = await processor.listActivities({
33
+ ownerId: 'u1',
34
+ groupId: 'p1',
35
+ skip: 2,
36
+ limit: 5,
37
+ });
38
+ expect(repository.find).toHaveBeenCalledWith({ ownerId: 'u1', groupId: 'p1', parentId: { $exists: false } }, { skip: 2, limit: 5, sort: undefined });
39
+ expect(repository.count).toHaveBeenCalledWith({ ownerId: 'u1', groupId: 'p1', parentId: { $exists: false } });
40
+ expect(result).toEqual({
41
+ data: [rootActivity],
42
+ cursor: {
43
+ total: 10,
44
+ skip: 2,
45
+ limit: 5,
46
+ },
47
+ });
48
+ });
49
+ it('filters by explicit parentId when provided', async () => {
50
+ const repository = {
51
+ find: vi.fn().mockResolvedValue([childActivity]),
52
+ count: vi.fn().mockResolvedValue(1),
53
+ };
54
+ const processor = new ActivityProcessor({ activityRepository: repository });
55
+ const result = await processor.listActivities({
56
+ ownerId: 'u1',
57
+ parentId: 'a1',
58
+ sort: { field: 'name', order: SortOrder.Asc },
59
+ });
60
+ expect(repository.find).toHaveBeenCalledWith({ ownerId: 'u1', parentId: 'a1' }, { skip: undefined, limit: undefined, sort: { field: 'name', order: SortOrder.Asc } });
61
+ expect(repository.count).toHaveBeenCalledWith({ ownerId: 'u1', parentId: 'a1' });
62
+ expect(result).toEqual({
63
+ data: [childActivity],
64
+ cursor: {
65
+ total: 1,
66
+ skip: undefined,
67
+ limit: undefined,
68
+ },
69
+ });
70
+ });
71
+ it('filters getActivityById by owner', async () => {
72
+ const repository = {
73
+ findById: vi.fn().mockResolvedValue(rootActivity),
74
+ };
75
+ const processor = new ActivityProcessor({ activityRepository: repository });
76
+ const found = await processor.getActivityById('a1', 'u1');
77
+ const notFound = await processor.getActivityById('a1', 'u2');
78
+ expect(found).toEqual(rootActivity);
79
+ expect(notFound).toBeNull();
80
+ });
81
+ });
82
+ //# sourceMappingURL=ActivityProcessor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityProcessor.test.js","sourceRoot":"","sources":["../../../src/processors/ActivityProcessor.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { AgentConfigRepository } from '@multiplayer-app/ai-agent-db';
2
+ import type { AgentConfigPreference } from '@multiplayer-app/ai-agent-types';
3
+ export interface ToolConfiguration {
4
+ title: string;
5
+ description?: string;
6
+ needsApproval?: boolean;
7
+ disabledByDefault?: boolean;
8
+ userConfigurable?: boolean;
9
+ }
10
+ export interface AgentConfiguration {
11
+ name: string;
12
+ description: string;
13
+ defaultModel?: string;
14
+ tools: ToolConfiguration[];
15
+ }
16
+ export declare class AgentProcessor {
17
+ private agentConfigRepository;
18
+ constructor({ agentConfigRepository }: {
19
+ agentConfigRepository: AgentConfigRepository;
20
+ });
21
+ private getToolConfiguration;
22
+ getAgentsConfiguration(userId?: string, contextKey?: string): Promise<AgentConfiguration[]>;
23
+ upsertUserPreferences(userId: string, agentName: string, tools: Record<string, boolean>): Promise<AgentConfigPreference>;
24
+ }
25
+ //# sourceMappingURL=AgentProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentProcessor.d.ts","sourceRoot":"","sources":["../../../src/processors/AgentProcessor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,qBAAa,cAAc;IAEzB,OAAO,CAAC,qBAAqB,CAAwB;gBACzC,EAAE,qBAAqB,EAAE,EAAE;QAAE,qBAAqB,EAAE,qBAAqB,CAAA;KAAE;IAIvF,OAAO,CAAC,oBAAoB;IAmBtB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkB3F,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,qBAAqB,CAAC;CAGlC"}
@@ -0,0 +1,43 @@
1
+ import { ConfigStore } from '../store';
2
+ export class AgentProcessor {
3
+ agentConfigRepository;
4
+ constructor({ agentConfigRepository }) {
5
+ this.agentConfigRepository = agentConfigRepository;
6
+ }
7
+ getToolConfiguration(tool, userAgentPreference) {
8
+ const availabilityTool = tool;
9
+ const toolName = tool.data?.title || tool.type;
10
+ const userPreference = userAgentPreference?.tools?.[toolName];
11
+ const disabledByDefault = availabilityTool.userConfigurable && userPreference !== undefined
12
+ ? !userPreference
13
+ : (availabilityTool.disabledByDefault ?? false);
14
+ return {
15
+ title: toolName,
16
+ description: tool.data?.description,
17
+ needsApproval: tool.data?.needsApproval ?? false,
18
+ disabledByDefault,
19
+ userConfigurable: availabilityTool.userConfigurable ?? false,
20
+ };
21
+ }
22
+ async getAgentsConfiguration(userId, contextKey) {
23
+ const configStore = ConfigStore.getInstance();
24
+ const agentsConfiguration = configStore.getAgentsConfiguration(contextKey);
25
+ let userAgentPreferences = [];
26
+ if (userId) {
27
+ userAgentPreferences = await this.agentConfigRepository.findByUserId(userId);
28
+ }
29
+ return agentsConfiguration.map((agent) => {
30
+ const userAgentPreference = userAgentPreferences.find((preference) => preference.agentName === agent.name);
31
+ return {
32
+ name: agent.name,
33
+ description: agent.description,
34
+ defaultModel: agent.defaultModel,
35
+ tools: (agent.tools ?? []).map((tool) => this.getToolConfiguration(tool, userAgentPreference)),
36
+ };
37
+ });
38
+ }
39
+ async upsertUserPreferences(userId, agentName, tools) {
40
+ return this.agentConfigRepository.upsertByUserIdAndAgentName(userId, agentName, { tools });
41
+ }
42
+ }
43
+ //# sourceMappingURL=AgentProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentProcessor.js","sourceRoot":"","sources":["../../../src/processors/AgentProcessor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAmBvC,MAAM,OAAO,cAAc;IAEjB,qBAAqB,CAAwB;IACrD,YAAY,EAAE,qBAAqB,EAAoD;QACrF,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;IAEO,oBAAoB,CAAC,IAAe,EAAE,mBAA2C;QACvF,MAAM,gBAAgB,GAAG,IAAyC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAA;QAE9C,MAAM,cAAc,GAAG,mBAAmB,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GACrB,gBAAgB,CAAC,gBAAgB,IAAI,cAAc,KAAK,SAAS;YAC/D,CAAC,CAAC,CAAC,cAAc;YACjB,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;QAEpD,OAAO;YACL,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW;YACnC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,IAAI,KAAK;YAChD,iBAAiB;YACjB,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,IAAI,KAAK;SAC7D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAe,EAAE,UAAmB;QAC/D,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,mBAAmB,GAAG,WAAW,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,oBAAoB,GAA4B,EAAE,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,oBAAoB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAkB,EAAE,EAAE;YACpD,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3G,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;aAC/F,CAAA;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,SAAiB,EACjB,KAA8B;QAE9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgentProcessor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentProcessor.test.d.ts","sourceRoot":"","sources":["../../../src/processors/AgentProcessor.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { AgentToolType } from '@multiplayer-app/ai-agent-types';
3
+ import { ConfigStore } from '../store/ConfigStore';
4
+ import { AgentProcessor } from './AgentProcessor';
5
+ describe('AgentProcessor.getAgentsConfiguration', () => {
6
+ let processor;
7
+ let mockAgentConfigRepository;
8
+ let configStore;
9
+ beforeEach(() => {
10
+ vi.clearAllMocks();
11
+ mockAgentConfigRepository = {
12
+ findByUserId: vi.fn().mockResolvedValue([]),
13
+ };
14
+ configStore = ConfigStore.getInstance();
15
+ configStore.clear();
16
+ configStore.addAgent(['support'], {
17
+ name: 'support-agent',
18
+ description: 'Support conversations',
19
+ defaultModel: 'openai/gpt-4o',
20
+ tools: [
21
+ {
22
+ type: AgentToolType.LOCAL_FUNCTION,
23
+ disabledByDefault: false,
24
+ userConfigurable: true,
25
+ data: {
26
+ title: 'lookupOrder',
27
+ description: 'Find order by id',
28
+ needsApproval: true,
29
+ },
30
+ },
31
+ {
32
+ type: AgentToolType.WEB_SEARCH,
33
+ userConfigurable: true,
34
+ },
35
+ ],
36
+ });
37
+ configStore.addAgent(['sales'], {
38
+ name: 'sales-agent',
39
+ description: 'Sales conversations',
40
+ defaultModel: 'openai/gpt-4o-mini',
41
+ tools: [],
42
+ });
43
+ processor = new AgentProcessor({ agentConfigRepository: mockAgentConfigRepository });
44
+ });
45
+ it('returns all agent configurations when context key is not provided', async () => {
46
+ const agents = await processor.getAgentsConfiguration();
47
+ expect(agents).toHaveLength(2);
48
+ expect(agents.map((agent) => agent.name)).toEqual(['support-agent', 'sales-agent']);
49
+ expect(mockAgentConfigRepository.findByUserId).not.toHaveBeenCalled();
50
+ });
51
+ it('filters agents by context key when provided', async () => {
52
+ const agents = await processor.getAgentsConfiguration(undefined, 'support');
53
+ expect(agents).toHaveLength(1);
54
+ expect(agents[0].name).toBe('support-agent');
55
+ });
56
+ it('applies user tool preferences for configurable tools', async () => {
57
+ mockAgentConfigRepository.findByUserId.mockResolvedValue([
58
+ {
59
+ userId: 'user-1',
60
+ agentName: 'support-agent',
61
+ tools: {
62
+ lookupOrder: false,
63
+ },
64
+ },
65
+ ]);
66
+ const agents = await processor.getAgentsConfiguration('user-1', 'support');
67
+ expect(mockAgentConfigRepository.findByUserId).toHaveBeenCalledWith('user-1');
68
+ expect(agents[0].tools).toEqual([
69
+ {
70
+ title: 'lookupOrder',
71
+ description: 'Find order by id',
72
+ needsApproval: true,
73
+ disabledByDefault: true,
74
+ userConfigurable: true,
75
+ },
76
+ {
77
+ title: AgentToolType.WEB_SEARCH,
78
+ description: undefined,
79
+ needsApproval: false,
80
+ disabledByDefault: false,
81
+ userConfigurable: true,
82
+ },
83
+ ]);
84
+ });
85
+ it('does not leak one user preference into another user response', async () => {
86
+ mockAgentConfigRepository.findByUserId
87
+ .mockResolvedValueOnce([
88
+ {
89
+ userId: 'user-1',
90
+ agentName: 'support-agent',
91
+ tools: { lookupOrder: false },
92
+ },
93
+ ])
94
+ .mockResolvedValueOnce([]);
95
+ const userOneAgents = await processor.getAgentsConfiguration('user-1', 'support');
96
+ const userTwoAgents = await processor.getAgentsConfiguration('user-2', 'support');
97
+ expect(userOneAgents[0].tools[0].disabledByDefault).toBe(true);
98
+ expect(userTwoAgents[0].tools[0].disabledByDefault).toBe(false);
99
+ });
100
+ });
101
+ //# sourceMappingURL=AgentProcessor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentProcessor.test.js","sourceRoot":"","sources":["../../../src/processors/AgentProcessor.test.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,60 @@
1
- import type { AgentChatRepository, AgentMessageRepository } from '@multiplayer-app/ai-agent-db';
2
- import { AgentArtifact, AgentChat, AgentChatResponse, AgentAttachment, AgentMessage, MessageRole, SendMessagePayload, SortOrder, SendMessagePayloadWithContent, AdditionalContext } from '@multiplayer-app/ai-agent-types';
1
+ import type { AgentChatRepository, AgentMessageRepository, ActivityRepository, AgentConfigRepository } from '@multiplayer-app/ai-agent-db';
2
+ import { AgentArtifact, AgentChat, AgentAttachment, AgentMessage, AgentToolCallStatus, MessageRole, SendMessagePayload, SortOrder, SendMessagePayloadWithContent, AdditionalContext, MessagesPage, DataWithCursor } from '@multiplayer-app/ai-agent-types';
3
3
  import { ArtifactStore } from '../store';
4
- import { GenerateTextOptions } from '../services';
5
4
  import { PassThrough } from 'stream';
5
+ import { Config } from '../config';
6
+ import { S3Lib } from '../libs/s3';
7
+ import { SocketService } from '../services/SocketService';
8
+ import { AgentStore } from '../store/AgentStore';
9
+ import type { StepResult, ToolSet } from 'ai';
10
+ import type { AgentOptions } from '../services';
6
11
  export declare class ChatProcessor {
12
+ private aiHelper;
7
13
  private chatRepository;
8
14
  private messageRepository;
9
15
  private artifactStore;
10
- constructor(chatRepository: AgentChatRepository, messageRepository: AgentMessageRepository, artifactStore: ArtifactStore);
16
+ private activityRepository;
17
+ private agentConfigRepository;
18
+ private config;
19
+ private socketService;
20
+ private agentStore;
21
+ private debug;
22
+ constructor(params: {
23
+ chatRepository: AgentChatRepository;
24
+ messageRepository: AgentMessageRepository;
25
+ agentConfigRepository: AgentConfigRepository;
26
+ artifactStore: ArtifactStore;
27
+ activityRepository: ActivityRepository;
28
+ s3Lib: S3Lib;
29
+ config: Config;
30
+ socketService: SocketService;
31
+ agentStore: AgentStore;
32
+ });
11
33
  private getTemporaryTitle;
12
34
  private isTemporaryTitle;
35
+ private isPlainObject;
36
+ private mergeMissingUsageFields;
37
+ private extractCostUsageFields;
38
+ private mergeUsageWithProviderMetadata;
39
+ private validateToolCallInput;
13
40
  listChats(params?: {
14
41
  contextKey?: string;
42
+ skip?: number;
15
43
  limit?: number;
16
44
  userId?: string;
17
45
  sortField?: string;
18
46
  sortOrder?: SortOrder;
19
- }): Promise<AgentChatResponse[]>;
20
- getChat(chatId: string): Promise<AgentChatResponse>;
47
+ }): Promise<DataWithCursor<AgentChat>>;
48
+ getChat(chatId: string): Promise<AgentChat>;
49
+ /**
50
+ * Get messages for a chat with optional cursor pagination.
51
+ * When limit is omitted, returns all messages (backward compatible).
52
+ * Messages are returned in chronological order (oldest → newest).
53
+ */
54
+ getMessages(chatId: string, options?: {
55
+ limit?: number;
56
+ before?: string;
57
+ }): Promise<MessagesPage>;
21
58
  deleteChat(chatId: string): Promise<void>;
22
59
  upsertAndGetChat(payload: SendMessagePayload, excludeSocketId?: string): Promise<AgentChat>;
23
60
  getChatTitle(payload: {
@@ -42,6 +79,19 @@ export declare class ChatProcessor {
42
79
  }): Promise<{
43
80
  ok: true;
44
81
  }>;
82
+ /**
83
+ * Update selected fields (input/output/status) on a specific tool call.
84
+ */
85
+ updateToolCall(params: {
86
+ chatId: string;
87
+ messageId: string;
88
+ toolCallId: string;
89
+ userId?: string;
90
+ input?: Record<string, unknown>;
91
+ output?: Record<string, unknown>;
92
+ status?: AgentToolCallStatus;
93
+ excludeSocketId?: string;
94
+ }): Promise<AgentMessage>;
45
95
  private streamMessageStep;
46
96
  private isApprovalPayload;
47
97
  private processApprovalPayload;
@@ -50,18 +100,27 @@ export declare class ChatProcessor {
50
100
  }, prevMessages: AgentMessage[], excludeSocketId?: string): Promise<{
51
101
  userMessage: AgentMessage;
52
102
  assistantMessage: AgentMessage;
53
- agentOptions: Omit<GenerateTextOptions, "messages"> & {
54
- name: string;
55
- };
103
+ agentOptions: AgentOptions;
56
104
  }>;
105
+ storeStepActivity(params: {
106
+ chat: AgentChat;
107
+ parentId?: string;
108
+ stepResult: StepResult<ToolSet>;
109
+ name: string;
110
+ sourceId: string;
111
+ sourceType: string;
112
+ tenants?: Record<string, string>;
113
+ }): Promise<void>;
57
114
  streamMessage(chat: AgentChat, payload: SendMessagePayload & {
58
115
  context?: AdditionalContext;
59
116
  }, excludeSocketId?: string, onAgentStart?: () => void): Promise<void>;
117
+ private getAvailableTools;
60
118
  listArtifacts(chatId: string): AgentArtifact[];
61
119
  private eventToChunk;
62
- getMessageStream(chatId: string): PassThrough;
120
+ getMessageStream(chatId: string, signal?: AbortSignal): PassThrough;
63
121
  createMessageStream(payload: SendMessagePayload & {
64
122
  context?: AdditionalContext;
65
- }, excludeSocketId?: string): Promise<PassThrough>;
123
+ }, excludeSocketId?: string, signal?: AbortSignal): Promise<PassThrough>;
124
+ private runMessageStream;
66
125
  }
67
126
  //# sourceMappingURL=ChatProcessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatProcessor.d.ts","sourceRoot":"","sources":["../../../src/processors/ChatProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatProcessor.d.ts","sourceRoot":"","sources":["../../../src/processors/ChatProcessor.ts"],"names":[],"mappings":"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"}