@mtkn/mega-agent 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +64 -4
  2. package/dist/artifact/artifact.repository.d.ts +2 -1
  3. package/dist/artifact/artifact.repository.d.ts.map +1 -1
  4. package/dist/artifact/artifact.repository.js +1 -1
  5. package/dist/artifact/artifact.repository.js.map +1 -1
  6. package/dist/artifact/artifact.service.d.ts +3 -2
  7. package/dist/artifact/artifact.service.d.ts.map +1 -1
  8. package/dist/artifact/artifact.service.js.map +1 -1
  9. package/dist/artifact/artifact.types.d.ts +2 -1
  10. package/dist/artifact/artifact.types.d.ts.map +1 -1
  11. package/dist/artifact/artifact.types.js.map +1 -1
  12. package/dist/chat/chat-memory.integration.d.ts +3 -2
  13. package/dist/chat/chat-memory.integration.d.ts.map +1 -1
  14. package/dist/chat/chat-memory.integration.js.map +1 -1
  15. package/dist/chat/chat.repository.d.ts +2 -1
  16. package/dist/chat/chat.repository.d.ts.map +1 -1
  17. package/dist/chat/chat.repository.js +1 -1
  18. package/dist/chat/chat.repository.js.map +1 -1
  19. package/dist/chat/chat.service.d.ts +3 -2
  20. package/dist/chat/chat.service.d.ts.map +1 -1
  21. package/dist/chat/chat.service.js +108 -33
  22. package/dist/chat/chat.service.js.map +1 -1
  23. package/dist/chat/chat.types.d.ts +7 -5
  24. package/dist/chat/chat.types.d.ts.map +1 -1
  25. package/dist/chat/chat.types.js.map +1 -1
  26. package/dist/chat/prompts/system.prompts.d.ts.map +1 -1
  27. package/dist/chat/prompts/system.prompts.js +9 -6
  28. package/dist/chat/prompts/system.prompts.js.map +1 -1
  29. package/dist/incident/incident.correlator.d.ts +3 -2
  30. package/dist/incident/incident.correlator.d.ts.map +1 -1
  31. package/dist/incident/incident.correlator.js.map +1 -1
  32. package/dist/incident/incident.repository.d.ts +5 -4
  33. package/dist/incident/incident.repository.d.ts.map +1 -1
  34. package/dist/incident/incident.repository.js +6 -6
  35. package/dist/incident/incident.repository.js.map +1 -1
  36. package/dist/incident/incident.service.d.ts +3 -2
  37. package/dist/incident/incident.service.d.ts.map +1 -1
  38. package/dist/incident/incident.service.js.map +1 -1
  39. package/dist/incident/incident.types.d.ts +3 -2
  40. package/dist/incident/incident.types.d.ts.map +1 -1
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/mcp/source.repository.d.ts +5 -4
  45. package/dist/mcp/source.repository.d.ts.map +1 -1
  46. package/dist/mcp/source.repository.js +3 -3
  47. package/dist/mcp/source.repository.js.map +1 -1
  48. package/dist/mcp/source.service.d.ts +3 -2
  49. package/dist/mcp/source.service.d.ts.map +1 -1
  50. package/dist/mcp/source.service.js.map +1 -1
  51. package/dist/memory/memory.repository.d.ts +3 -2
  52. package/dist/memory/memory.repository.d.ts.map +1 -1
  53. package/dist/memory/memory.repository.js +4 -4
  54. package/dist/memory/memory.repository.js.map +1 -1
  55. package/dist/memory/memory.service.d.ts +3 -2
  56. package/dist/memory/memory.service.d.ts.map +1 -1
  57. package/dist/memory/memory.service.js +2 -2
  58. package/dist/memory/memory.service.js.map +1 -1
  59. package/dist/memory/memory.types.d.ts +4 -3
  60. package/dist/memory/memory.types.d.ts.map +1 -1
  61. package/dist/memory/memory.types.js.map +1 -1
  62. package/dist/tools/tool-registry.d.ts +3 -2
  63. package/dist/tools/tool-registry.d.ts.map +1 -1
  64. package/dist/tools/tool-registry.js.map +1 -1
  65. package/dist/types/id.types.d.ts +7 -0
  66. package/dist/types/id.types.d.ts.map +1 -0
  67. package/dist/types/id.types.js +2 -0
  68. package/dist/types/id.types.js.map +1 -0
  69. package/dist/types/index.d.ts +2 -0
  70. package/dist/types/index.d.ts.map +1 -0
  71. package/dist/types/index.js +2 -0
  72. package/dist/types/index.js.map +1 -0
  73. package/dist/workflow/workflow.repository.js.map +1 -1
  74. package/dist/workflow/workflow.service.d.ts.map +1 -1
  75. package/dist/workflow/workflow.service.js +7 -6
  76. package/dist/workflow/workflow.service.js.map +1 -1
  77. package/dist/workflow/workflow.types.d.ts +4 -2
  78. package/dist/workflow/workflow.types.d.ts.map +1 -1
  79. package/dist/workflow/workflow.types.js.map +1 -1
  80. package/package.json +1 -3
  81. package/prisma/schema.prisma +9 -1
  82. package/scripts/prisma-sync.mjs +216 -13
package/README.md CHANGED
@@ -77,7 +77,41 @@ The package requires 16 enums and 12 models in your Prisma schema.
77
77
  npx mega-agent-prisma-sync --target prisma/schema.prisma
78
78
  ```
79
79
 
80
- This copies all mega-agent enums and models into your schema between marker comments. Running it again updates only the marked section.
80
+ On first run, the CLI interactively asks your preferred ID strategy:
81
+
82
+ ```
83
+ 📋 mega-agent Prisma Schema Configuration
84
+
85
+ Primary key strategy for mega-agent models? (cuid/uuid/autoincrement) [cuid]:
86
+ User ID type in your app? (int/string) [int]:
87
+ ```
88
+
89
+ You can also pass flags directly (useful for CI/CD):
90
+
91
+ ```bash
92
+ # UUID primary keys + String user IDs
93
+ npx mega-agent-prisma-sync --target prisma/schema.prisma --id-type uuid --user-id-type string
94
+
95
+ # Autoincrement (integer) primary keys
96
+ npx mega-agent-prisma-sync --target prisma/schema.prisma --id-type autoincrement
97
+
98
+ # Skip prompts, use previous config or defaults
99
+ npx mega-agent-prisma-sync --target prisma/schema.prisma --no-interactive
100
+
101
+ # Preview without writing
102
+ npx mega-agent-prisma-sync --target prisma/schema.prisma --id-type uuid --dry-run
103
+ ```
104
+
105
+ **Available options:**
106
+
107
+ | Flag | Values | Default | Description |
108
+ |------|--------|---------|-------------|
109
+ | `--id-type` | `cuid`, `uuid`, `autoincrement` | `cuid` | Primary key strategy for all mega-agent models |
110
+ | `--user-id-type` | `int`, `string` | `int` | Type of the `userId` field (must match your User model's ID type) |
111
+ | `--no-interactive` | — | — | Skip prompts, use previous config or defaults |
112
+ | `--dry-run` | — | — | Print result without writing to file |
113
+
114
+ Your selection is saved in the marker comment. Re-running the sync command automatically detects and reuses the previous config.
81
115
 
82
116
  ### Option B: Manual Copy
83
117
 
@@ -88,6 +122,8 @@ Copy all enums and models from the reference schema:
88
122
  cat node_modules/@mtkn/mega-agent/prisma/schema.prisma
89
123
  ```
90
124
 
125
+ If your app uses UUID or autoincrement IDs, you'll need to manually adjust the `@id` defaults and `userId` field types.
126
+
91
127
  ### Add User Relations
92
128
 
93
129
  Each AI model has a `userId` field. Add relations in your `User` model:
@@ -118,12 +154,12 @@ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
118
154
 
119
155
  ### Add Notification Model
120
156
 
121
- The workflow service uses `prisma.notification.create()`. Your schema needs:
157
+ The workflow service uses `prisma.notification.create()`. Your schema needs a Notification model. Adjust the `userId` type to match your User model:
122
158
 
123
159
  ```prisma
124
160
  model Notification {
125
161
  id Int @id @default(autoincrement())
126
- userId Int @map("user_id")
162
+ userId Int @map("user_id") // Use String if your User.id is String
127
163
  type String
128
164
  title String
129
165
  message String
@@ -257,9 +293,11 @@ The chat router requires an auth middleware that sets `req.user` with at least a
257
293
  type AuthMiddleware = (req: Request, res: Response, next: NextFunction) => void;
258
294
 
259
295
  // Your middleware must set:
260
- // req.user = { id: number, ... }
296
+ // req.user = { id: number | string, ... }
261
297
  ```
262
298
 
299
+ The `userId` type is flexible — it accepts both `number` and `string` to support different ID strategies (autoincrement integers, CUID strings, UUIDs, etc.).
300
+
263
301
  ### Registering Domain Tools
264
302
 
265
303
  Tools give the AI agent access to your application's data and actions. The package comes with 2 built-in tools (`search_memory`, `create_memory`) when memory is enabled. Register your own domain tools after calling `createMegaAgent()`:
@@ -559,6 +597,28 @@ If using a monorepo with linked packages, ensure there's only one `@prisma/clien
559
597
  - Up to 20 context messages are sent to the LLM
560
598
  - Check LLM API key validity and rate limits
561
599
 
600
+ ## TypeScript Types
601
+
602
+ The package exports a `UserId` type for use in your application:
603
+
604
+ ```typescript
605
+ import type { UserId } from '@mtkn/mega-agent';
606
+
607
+ // UserId = string | number
608
+ // Matches both integer and string-based ID strategies
609
+ ```
610
+
611
+ All service methods accept `UserId` for the `userId` parameter, so your app works regardless of whether your User model uses `Int @id @default(autoincrement())` or `String @id @default(cuid())`.
612
+
613
+ ## Changelog
614
+
615
+ ### v0.2.0
616
+
617
+ - **ID type selection** — `prisma-sync` CLI now supports `--id-type` (cuid/uuid/autoincrement) and `--user-id-type` (int/string) with interactive prompts
618
+ - **Flexible UserId** — All services accept `string | number` for userId, supporting any ID strategy
619
+ - **Removed `uuid` dependency** — Replaced with Node.js built-in `crypto.randomUUID()`
620
+ - **Bug fix** — Fixed hardcoded `userId: 1` in workflow action handlers
621
+
562
622
  ## License
563
623
 
564
624
  MIT
@@ -4,12 +4,13 @@
4
4
  */
5
5
  import type { AiArtifact } from '@prisma/client';
6
6
  import type { CreateArtifactDto, UpdateArtifactDto, ArtifactListQuery, ArtifactServiceDependencies } from './artifact.types.js';
7
+ import type { UserId } from '../types/index.js';
7
8
  export declare function initArtifactRepository(deps: ArtifactServiceDependencies): void;
8
9
  export declare class ArtifactRepository {
9
10
  private get prisma();
10
11
  create(data: CreateArtifactDto): Promise<AiArtifact>;
11
12
  findById(id: string): Promise<AiArtifact | null>;
12
- findByUser(userId: number, query?: ArtifactListQuery): Promise<AiArtifact[]>;
13
+ findByUser(userId: UserId, query?: ArtifactListQuery): Promise<AiArtifact[]>;
13
14
  findByChat(chatId: string): Promise<AiArtifact[]>;
14
15
  update(id: string, data: UpdateArtifactDto): Promise<AiArtifact>;
15
16
  delete(id: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.repository.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAIhI,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAE9E;AAED,qBAAa,kBAAkB;IAC7B,OAAO,KAAK,MAAM,GAGjB;IAEK,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBpD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIhD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAY5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAahE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
1
+ {"version":3,"file":"artifact.repository.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAChI,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAE9E;AAED,qBAAa,kBAAkB;IAC7B,OAAO,KAAK,MAAM,GAGjB;IAEK,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBpD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIhD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAY5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAahE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -33,7 +33,7 @@ export class ArtifactRepository {
33
33
  async findByUser(userId, query) {
34
34
  return this.prisma.aiArtifact.findMany({
35
35
  where: {
36
- userId,
36
+ userId: userId,
37
37
  ...(query?.type && { type: query.type }),
38
38
  },
39
39
  orderBy: { createdAt: 'desc' },
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.repository.js","sourceRoot":"","sources":["../../src/artifact/artifact.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact.repository.js","sourceRoot":"","sources":["../../src/artifact/artifact.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,IAAI,KAAK,GAAuC,IAAI,CAAC;AAErD,MAAM,UAAU,sBAAsB,CAAC,IAAiC;IACtE,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED,MAAM,OAAO,kBAAkB;IAC7B,IAAY,MAAM;QAChB,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAuB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAa;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAiB;gBAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC5C,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAkB,IAAI,SAAS;aAC/C;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,KAAyB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrC,KAAK,EAAE;gBACL,MAAM,EAAE,MAAa;gBACrB,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;aACzC;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC9B,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;YACxB,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC/C,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAuB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACnC,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAiB,EAAE,CAAC;gBACtE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAkB,EAAE,CAAC;aAC5D;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { AiArtifact } from '@prisma/client';
6
6
  import type { CreateArtifactDto, UpdateArtifactDto, ArtifactListQuery, ArtifactServiceDependencies } from './artifact.types.js';
7
+ import type { UserId } from '../types/index.js';
7
8
  export declare function initArtifactService(deps: ArtifactServiceDependencies): void;
8
9
  export declare function getArtifactServiceDeps(): ArtifactServiceDependencies | null;
9
10
  export declare class ArtifactService {
@@ -12,11 +13,11 @@ export declare class ArtifactService {
12
13
  private get logger();
13
14
  create(data: CreateArtifactDto): Promise<AiArtifact>;
14
15
  getById(id: string): Promise<AiArtifact | null>;
15
- listByUser(userId: number, query?: ArtifactListQuery): Promise<AiArtifact[]>;
16
+ listByUser(userId: UserId, query?: ArtifactListQuery): Promise<AiArtifact[]>;
16
17
  listByChat(chatId: string): Promise<AiArtifact[]>;
17
18
  update(id: string, data: UpdateArtifactDto): Promise<AiArtifact>;
18
19
  delete(id: string): Promise<void>;
19
- createFromMessage(userId: number, chatId: string, messageId: string, data: Partial<CreateArtifactDto>): Promise<AiArtifact>;
20
+ createFromMessage(userId: UserId, chatId: string, messageId: string, data: Partial<CreateArtifactDto>): Promise<AiArtifact>;
20
21
  export(id: string, format: 'json' | 'csv' | 'md'): Promise<string>;
21
22
  }
22
23
  //# sourceMappingURL=artifact.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.service.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAK7B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAG3E;AAED,wBAAgB,sBAAsB,IAAI,2BAA2B,GAAG,IAAI,CAE3E;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAqB;;IAQvC,OAAO,KAAK,MAAM,GAA4B;IAIxC,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAMpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI/C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIhE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjC,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC;IAahB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BzE"}
1
+ {"version":3,"file":"artifact.service.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAG3E;AAED,wBAAgB,sBAAsB,IAAI,2BAA2B,GAAG,IAAI,CAE3E;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAqB;;IAQvC,OAAO,KAAK,MAAM,GAA4B;IAIxC,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAMpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI/C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI5E,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIhE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjC,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC;IAahB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.service.js","sourceRoot":"","sources":["../../src/artifact/artifact.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact.service.js","sourceRoot":"","sources":["../../src/artifact/artifact.service.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,11 @@
3
3
  */
4
4
  import { ArtifactType } from '@prisma/client';
5
5
  import type { AiArtifact, Prisma, PrismaClient } from '@prisma/client';
6
+ import type { UserId } from '../types/index.js';
6
7
  export { ArtifactType };
7
8
  export type { AiArtifact };
8
9
  export interface CreateArtifactDto {
9
- userId: number;
10
+ userId: UserId;
10
11
  chatId?: string;
11
12
  messageId?: string;
12
13
  type: ArtifactType;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.types.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC;IAChD,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C"}
1
+ {"version":3,"file":"artifact.types.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC;IAChD,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.types.js","sourceRoot":"","sources":["../../src/artifact/artifact.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"artifact.types.js","sourceRoot":"","sources":["../../src/artifact/artifact.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { AiChatMessage, MemoryType } from '@prisma/client';
7
7
  import type { ChatMemoryIntegrationDependencies, MemorySearchResult, MemorySuggestionResult } from './chat.types.js';
8
+ import type { UserId } from '../types/index.js';
8
9
  /**
9
10
  * Initialize the Chat Memory Integration with dependencies
10
11
  */
@@ -29,7 +30,7 @@ export declare class ChatMemoryIntegration {
29
30
  * Get relevant memories for a chat message
30
31
  * Combines the current message with chat context for better relevance
31
32
  */
32
- getRelevantMemories(userId: number, message: string, chatContext?: string): Promise<MemorySearchResult[]>;
33
+ getRelevantMemories(userId: UserId, message: string, chatContext?: string): Promise<MemorySearchResult[]>;
33
34
  /**
34
35
  * Build memory context string for LLM injection
35
36
  * Formats memories in a structured way for the LLM to understand
@@ -54,6 +55,6 @@ export declare class ChatMemoryIntegration {
54
55
  * Create memory suggestion from chat
55
56
  * Generates a memory suggestion based on chat content
56
57
  */
57
- suggestMemoryFromChat(chatId: string, messageId: string, userId: number, content: string, type?: MemoryType): Promise<void>;
58
+ suggestMemoryFromChat(chatId: string, messageId: string, userId: UserId, content: string, type?: MemoryType): Promise<void>;
58
59
  }
59
60
  //# sourceMappingURL=chat-memory.integration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-memory.integration.d.ts","sourceRoot":"","sources":["../../src/chat/chat-memory.integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,iCAAiC,EAGjC,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAMzB;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,iCAAiC,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,iCAAiC,GAAG,IAAI,CAEvF;AAID;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,yDAAyD;IACzD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,QAAQ;IAE3C,8CAA8C;IAC9C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,KAAK;;IAQzC,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,aAAa,GAExB;IAED;;;OAGG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqBhC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM;IAsB1D;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,WAAW,GAAE,MAAU,GAAG,MAAM;IAQnF;;;OAGG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB;IAuBhE;;;OAGG;IACG,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,UAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAmBjB"}
1
+ {"version":3,"file":"chat-memory.integration.d.ts","sourceRoot":"","sources":["../../src/chat/chat-memory.integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,iCAAiC,EAGjC,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,iCAAiC,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,iCAAiC,GAAG,IAAI,CAEvF;AAID;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,yDAAyD;IACzD,MAAM,CAAC,QAAQ,CAAC,mBAAmB,QAAQ;IAE3C,8CAA8C;IAC9C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,KAAK;;IAQzC,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,aAAa,GAExB;IAED;;;OAGG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqBhC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM;IAsB1D;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,WAAW,GAAE,MAAU,GAAG,MAAM;IAQnF;;;OAGG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB;IAuBhE;;;OAGG;IACG,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,UAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;CAmBjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-memory.integration.js","sourceRoot":"","sources":["../../src/chat/chat-memory.integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-memory.integration.js","sourceRoot":"","sources":["../../src/chat/chat-memory.integration.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { AiChat, AiChatMessage } from '@prisma/client';
6
6
  import type { CreateChatDto, UpdateChatDto, ChatServiceDependencies } from './chat.types.js';
7
+ import type { UserId } from '../types/index.js';
7
8
  /**
8
9
  * Initialize the Chat repository with dependencies
9
10
  */
@@ -28,7 +29,7 @@ export declare class ChatRepository {
28
29
  /**
29
30
  * Find chats by user
30
31
  */
31
- findByUser(userId: number, limit?: number): Promise<AiChat[]>;
32
+ findByUser(userId: UserId, limit?: number): Promise<AiChat[]>;
32
33
  /**
33
34
  * Update a chat
34
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.repository.d.ts","sourceRoot":"","sources":["../../src/chat/chat.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI7F;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAEtE;AAED,qBAAa,cAAc;IACzB,OAAO,KAAK,MAAM,GAGjB;IAED,OAAO,KAAK,MAAM,GAGjB;IAED;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBtD;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIlD;;OAEG;IACG,oBAAoB,CACxB,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAY3D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQnE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EACrC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GACA,OAAO,CAAC,aAAa,CAAC;IAsBzB;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,IAAI,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC;IAW3B;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"}
1
+ {"version":3,"file":"chat.repository.d.ts","sourceRoot":"","sources":["../../src/chat/chat.repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAEtE;AAED,qBAAa,cAAc;IACzB,OAAO,KAAK,MAAM,GAGjB;IAED,OAAO,KAAK,MAAM,GAGjB;IAED;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBtD;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIlD;;OAEG;IACG,oBAAoB,CACxB,EAAE,EAAE,MAAM,EACV,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAY3D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQnE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,EACrC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GACA,OAAO,CAAC,aAAa,CAAC;IAsBzB;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,IAAI,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC;IAW3B;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"}
@@ -62,7 +62,7 @@ export class ChatRepository {
62
62
  */
63
63
  async findByUser(userId, limit) {
64
64
  return this.prisma.aiChat.findMany({
65
- where: { userId },
65
+ where: { userId: userId },
66
66
  orderBy: { updatedAt: 'desc' },
67
67
  take: limit,
68
68
  });
@@ -1 +1 @@
1
- {"version":3,"file":"chat.repository.js","sourceRoot":"","sources":["../../src/chat/chat.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.repository.js","sourceRoot":"","sources":["../../src/chat/chat.repository.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type { AiChat } from '@prisma/client';
5
5
  import type { CreateChatDto, UpdateChatDto, SendMessageDto, ChatMessageResponse, ChatStreamChunk, ChatContext, ChatServiceDependencies } from './chat.types.js';
6
+ import type { UserId } from '../types/index.js';
6
7
  export declare function initChatService(deps: ChatServiceDependencies): void;
7
8
  export declare function getChatServiceDeps(): ChatServiceDependencies | null;
8
9
  export declare class ChatService {
@@ -14,11 +15,11 @@ export declare class ChatService {
14
15
  private get llmService();
15
16
  createChat(data: CreateChatDto): Promise<AiChat>;
16
17
  sendMessage(dto: SendMessageDto): Promise<ChatMessageResponse>;
17
- approveToolCall(chatId: string, toolName: string, args: Record<string, unknown>, userId: number, conversationState: string): Promise<ChatMessageResponse>;
18
+ approveToolCall(chatId: string, toolName: string, args: Record<string, unknown>, userId: UserId, conversationState: string): Promise<ChatMessageResponse>;
18
19
  streamMessage(dto: SendMessageDto): AsyncGenerator<ChatStreamChunk>;
19
20
  getChat(id: string): Promise<AiChat | null>;
20
21
  getChatWithMessages(id: string): Promise<ChatContext | null>;
21
- getUserChats(userId: number, limit?: number): Promise<AiChat[]>;
22
+ getUserChats(userId: UserId, limit?: number): Promise<AiChat[]>;
22
23
  updateChat(id: string, data: UpdateChatDto): Promise<AiChat>;
23
24
  deleteChat(id: string): Promise<void>;
24
25
  generateTitle(chatId: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../src/chat/chat.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAYhK,wBAAgB,eAAe,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAA4C;AAChH,wBAAgB,kBAAkB,IAAI,uBAAuB,GAAG,IAAI,CAAkB;AAEtF,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAM;IAC1C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAM;;IAQ1C,OAAO,KAAK,MAAM,GAA4B;IAC9C,OAAO,KAAK,UAAU,GAAgC;IAEhD,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAShD,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6G9D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAuBxJ,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAAC,eAAe,CAAC;IAsBpE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3C,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI5D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/D,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAErC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpD,OAAO,CAAC,oBAAoB;YAId,qBAAqB;CAOpC"}
1
+ {"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../src/chat/chat.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAChK,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYhD,wBAAgB,eAAe,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAA4C;AAChH,wBAAgB,kBAAkB,IAAI,uBAAuB,GAAG,IAAI,CAAkB;AAEtF,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAM;IAC1C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAM;;IAQ1C,OAAO,KAAK,MAAM,GAA4B;IAC9C,OAAO,KAAK,UAAU,GAAgC;IAEhD,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAShD,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqI9D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+BxJ,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAAC,eAAe,CAAC;IAgFpE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3C,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI5D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/D,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAErC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpD,OAAO,CAAC,oBAAoB;YAId,qBAAqB;CAOpC"}
@@ -65,7 +65,7 @@ export class ChatService {
65
65
  const toolsCalled = [];
66
66
  let finalContent = '';
67
67
  let totalTokens = { prompt: 0, completion: 0, total: 0 };
68
- // ── Loop ─────────────────────────────────────────────────────
68
+ // ── Loop (handles multiple tool calls per iteration) ────────
69
69
  for (let i = 0; i < ChatService.MAX_AGENT_ITERATIONS; i++) {
70
70
  const res = await this.llmService.complete({
71
71
  messages: llmMessages,
@@ -81,38 +81,60 @@ export class ChatService {
81
81
  finalContent = res.content;
82
82
  break;
83
83
  }
84
- const tc = res.toolCalls[0];
85
- // WRITE tool needs approval
86
- if (requiresApproval(tc.name)) {
87
- const tool = getAllTools().find(t => t.name === tc.name);
88
- const approvalMsg = await this.repository.addMessage(dto.chatId, 'ASSISTANT', `I want to execute **${tc.name}**: \`\`\`json\n${JSON.stringify(tc.input, null, 2)}\n\`\`\`\nPlease confirm or reject.`);
84
+ const toolCalls = res.toolCalls;
85
+ const firstWriteIndex = toolCalls.findIndex(tc => requiresApproval(tc.name));
86
+ const autoExecuteCalls = firstWriteIndex === -1 ? toolCalls : toolCalls.slice(0, firstWriteIndex);
87
+ const writeToolCall = firstWriteIndex !== -1 ? toolCalls[firstWriteIndex] : null;
88
+ // Build assistant message with ALL tool_use blocks (Anthropic API requires matching tool_results)
89
+ const assistantBlocks = [
90
+ ...(res.content ? [{ type: 'text', text: res.content }] : []),
91
+ ...toolCalls.map(tc => ({ type: 'tool_use', id: tc.id, name: tc.name, input: tc.input })),
92
+ ];
93
+ llmMessages.push({ role: 'assistant', content: assistantBlocks });
94
+ // Execute all READ tools before the first WRITE
95
+ const resultBlocks = [];
96
+ for (const tc of autoExecuteCalls) {
97
+ this.logger.info('Auto-executing tool', { tool: tc.name, iter: i });
98
+ const tStart = Date.now();
99
+ const result = await executeTool(tc.name, tc.input, chat.userId);
100
+ toolsCalled.push({ name: tc.name, durationMs: Date.now() - tStart });
101
+ resultBlocks.push({
102
+ type: 'tool_result',
103
+ tool_use_id: tc.id,
104
+ content: JSON.stringify(result.success ? (result.data ?? null) : (result.error ?? 'Unknown tool error')),
105
+ is_error: !result.success,
106
+ });
107
+ }
108
+ // WRITE tool → add placeholder results and return approval
109
+ if (writeToolCall) {
110
+ resultBlocks.push({
111
+ type: 'tool_result',
112
+ tool_use_id: writeToolCall.id,
113
+ content: 'Awaiting user approval.',
114
+ });
115
+ for (const tc of toolCalls.slice(firstWriteIndex + 1)) {
116
+ resultBlocks.push({
117
+ type: 'tool_result',
118
+ tool_use_id: tc.id,
119
+ content: 'Skipped: preceding tool requires user approval.',
120
+ is_error: true,
121
+ });
122
+ }
123
+ llmMessages.push({ role: 'user', content: resultBlocks });
124
+ const tool = getAllTools().find(t => t.name === writeToolCall.name);
125
+ const approvalMsg = await this.repository.addMessage(dto.chatId, 'ASSISTANT', `I want to execute **${writeToolCall.name}**: \`\`\`json\n${JSON.stringify(writeToolCall.input, null, 2)}\n\`\`\`\nPlease confirm or reject.`);
89
126
  return {
90
127
  message: userMessage, assistantMessage: approvalMsg, usedMemories: usedMemoryIds,
91
128
  tokens: totalTokens, latencyMs: Date.now() - startTime,
92
129
  pendingApproval: {
93
- id: `apv-${Date.now()}`, chatId: dto.chatId, toolName: tc.name,
94
- toolDescription: tool?.description || tc.name, arguments: tc.input,
130
+ id: `apv-${Date.now()}`, chatId: dto.chatId, toolName: writeToolCall.name,
131
+ toolDescription: tool?.description || writeToolCall.name, arguments: writeToolCall.input,
95
132
  conversationState: JSON.stringify(llmMessages),
96
133
  },
97
134
  };
98
135
  }
99
- // READ tool auto-execute
100
- this.logger.info('Auto-executing tool', { tool: tc.name, iter: i });
101
- const tStart = Date.now();
102
- const result = await executeTool(tc.name, tc.input, chat.userId);
103
- toolsCalled.push({ name: tc.name, durationMs: Date.now() - tStart });
104
- // Append tool_use + tool_result to conversation
105
- llmMessages.push({
106
- role: 'assistant',
107
- content: [
108
- ...(res.content ? [{ type: 'text', text: res.content }] : []),
109
- { type: 'tool_use', id: tc.id, name: tc.name, input: tc.input },
110
- ],
111
- });
112
- llmMessages.push({
113
- role: 'user',
114
- content: [{ type: 'tool_result', tool_use_id: tc.id, content: JSON.stringify(result.data ?? result.error) }],
115
- });
136
+ // All READ → push all tool_result blocks as single user message
137
+ llmMessages.push({ role: 'user', content: resultBlocks });
116
138
  }
117
139
  // Save final
118
140
  const assistantMessage = await this.repository.addMessage(dto.chatId, 'ASSISTANT', finalContent, {
@@ -139,7 +161,15 @@ export class ChatService {
139
161
  const llmMessages = JSON.parse(conversationState);
140
162
  const toolId = `tool-${Date.now()}`;
141
163
  llmMessages.push({ role: 'assistant', content: [{ type: 'tool_use', id: toolId, name: toolName, input: args }] });
142
- llmMessages.push({ role: 'user', content: [{ type: 'tool_result', tool_use_id: toolId, content: JSON.stringify(result.data ?? result.error) }] });
164
+ llmMessages.push({
165
+ role: 'user',
166
+ content: [{
167
+ type: 'tool_result',
168
+ tool_use_id: toolId,
169
+ content: JSON.stringify(result.success ? (result.data ?? null) : (result.error ?? 'Unknown tool error')),
170
+ is_error: !result.success,
171
+ }],
172
+ });
143
173
  const chat = await this.repository.findByIdWithMessages(chatId, 3);
144
174
  const res = await this.llmService.complete({ messages: llmMessages, model: chat?.model, tools: toAnthropicTools() });
145
175
  const assistantMessage = await this.repository.addMessage(chatId, 'ASSISTANT', res.content, { model: res.model, tokens: res.tokens.total, latencyMs: res.latencyMs });
@@ -147,29 +177,74 @@ export class ChatService {
147
177
  const structured = ResponseParser.parse(res.content, ctx);
148
178
  return { message: assistantMessage, assistantMessage, usedMemories: [], tokens: res.tokens, latencyMs: Date.now() - startTime, structured };
149
179
  }
150
- // ── Stream (unchanged, no tools) ───────────────────────────────
180
+ // ── Stream (hybrid: non-streaming tool loop + streaming final response) ──
151
181
  async *streamMessage(dto) {
152
182
  const chat = await this.repository.findByIdWithMessages(dto.chatId, ChatService.MAX_CONTEXT_MESSAGES);
153
183
  if (!chat) {
154
- yield { type: 'error', error: `Chat not found` };
184
+ yield { type: 'error', error: 'Chat not found' };
155
185
  return;
156
186
  }
157
187
  await this.repository.addMessage(dto.chatId, 'USER', dto.content);
158
188
  const systemPrompt = buildSystemPrompt(chat.mode, { customPrompt: chat.systemPrompt ?? undefined });
159
- const msgs = [
189
+ const llmMessages = [
160
190
  { role: 'system', content: systemPrompt },
161
- ...chat.messages.map(m => ({ role: m.role.toLowerCase(), content: m.content })),
191
+ ...chat.messages.map((m) => ({
192
+ role: m.role.toLowerCase(),
193
+ content: m.content,
194
+ })),
162
195
  { role: 'user', content: dto.content },
163
196
  ];
164
- let full = '';
197
+ const tools = toAnthropicTools();
198
+ const model = dto.model || chat.model;
165
199
  try {
166
- for await (const chunk of this.llmService.stream({ messages: msgs, model: dto.model || chat.model, temperature: chat.temperature })) {
200
+ // ── Phase 1: Non-streaming tool execution loop ──────────────
201
+ if (tools.length > 0) {
202
+ for (let i = 0; i < ChatService.MAX_AGENT_ITERATIONS; i++) {
203
+ const res = await this.llmService.complete({
204
+ messages: llmMessages,
205
+ model,
206
+ temperature: chat.temperature,
207
+ tools,
208
+ });
209
+ // No tool calls → proceed to Phase 2
210
+ if (!res.toolCalls || res.toolCalls.length === 0)
211
+ break;
212
+ const toolCalls = res.toolCalls;
213
+ // WRITE tools incompatible with SSE approval workflow
214
+ if (toolCalls.some(tc => requiresApproval(tc.name))) {
215
+ yield { type: 'error', error: 'A write tool requires approval. Please use non-streaming mode for write tool support.' };
216
+ return;
217
+ }
218
+ // Build assistant message with all tool_use blocks
219
+ const assistantBlocks = [
220
+ ...(res.content ? [{ type: 'text', text: res.content }] : []),
221
+ ...toolCalls.map(tc => ({ type: 'tool_use', id: tc.id, name: tc.name, input: tc.input })),
222
+ ];
223
+ llmMessages.push({ role: 'assistant', content: assistantBlocks });
224
+ // Execute all READ tools, yield status for each
225
+ const resultBlocks = [];
226
+ for (const tc of toolCalls) {
227
+ yield { type: 'tool_status', toolName: tc.name, content: `Executing ${tc.name}...` };
228
+ const result = await executeTool(tc.name, tc.input, chat.userId);
229
+ resultBlocks.push({
230
+ type: 'tool_result',
231
+ tool_use_id: tc.id,
232
+ content: JSON.stringify(result.success ? (result.data ?? null) : (result.error ?? 'Unknown tool error')),
233
+ is_error: !result.success,
234
+ });
235
+ }
236
+ llmMessages.push({ role: 'user', content: resultBlocks });
237
+ }
238
+ }
239
+ // ── Phase 2: Stream the final response ──────────────────────
240
+ let full = '';
241
+ for await (const chunk of this.llmService.stream({ messages: llmMessages, model, temperature: chat.temperature })) {
167
242
  full += chunk.content;
168
243
  yield { type: 'content', content: chunk.content };
169
244
  if (chunk.done)
170
245
  break;
171
246
  }
172
- await this.repository.addMessage(dto.chatId, 'ASSISTANT', full, { model: dto.model || chat.model });
247
+ await this.repository.addMessage(dto.chatId, 'ASSISTANT', full, { model });
173
248
  yield { type: 'done' };
174
249
  }
175
250
  catch (error) {