devchain-cli 0.20.0 → 0.20.2

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 (217) hide show
  1. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.d.ts +0 -1
  2. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.d.ts.map +1 -1
  3. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.js +0 -2
  4. package/dist/node_modules/@devchain/shared/__fixtures__/phase2-frames.js.map +1 -1
  5. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +114 -11
  6. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
  7. package/dist/node_modules/@devchain/shared/schemas/export-schema.js +11 -8
  8. package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
  9. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  10. package/dist/node_modules/@devchain/shared/tunnel-protocol.d.ts.map +1 -1
  11. package/dist/node_modules/@devchain/shared/tunnel-protocol.js +0 -1
  12. package/dist/node_modules/@devchain/shared/tunnel-protocol.js.map +1 -1
  13. package/dist/server/app.main.module.js +0 -2
  14. package/dist/server/app.main.module.js.map +1 -1
  15. package/dist/server/app.normal.module.js +0 -2
  16. package/dist/server/app.normal.module.js.map +1 -1
  17. package/dist/server/common/test/app-bootstrap.helper.js +1 -0
  18. package/dist/server/common/test/app-bootstrap.helper.js.map +1 -1
  19. package/dist/server/modules/agent-message-delivery/adapters/legacy-delivery-formatter.adapter.js +0 -5
  20. package/dist/server/modules/agent-message-delivery/adapters/legacy-delivery-formatter.adapter.js.map +1 -1
  21. package/dist/server/modules/agent-message-delivery/adapters/legacy-recipient-resolver.adapter.d.ts +1 -3
  22. package/dist/server/modules/agent-message-delivery/adapters/legacy-recipient-resolver.adapter.js +1 -1
  23. package/dist/server/modules/agent-message-delivery/adapters/legacy-recipient-resolver.adapter.js.map +1 -1
  24. package/dist/server/modules/agent-message-delivery/agent-message-delivery.module.js +0 -2
  25. package/dist/server/modules/agent-message-delivery/agent-message-delivery.module.js.map +1 -1
  26. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js +1 -3
  27. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js.map +1 -1
  28. package/dist/server/modules/agent-message-delivery/dtos/delivery.types.d.ts +1 -3
  29. package/dist/server/modules/agent-message-delivery/ports/delivery-recipient-resolver.d.ts +1 -3
  30. package/dist/server/modules/agent-message-delivery/ports/delivery-recipient-resolver.js.map +1 -1
  31. package/dist/server/modules/agents/controllers/agents.controller.js +4 -1
  32. package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
  33. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -1
  34. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.d.ts +1 -1
  35. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js +0 -8
  36. package/dist/server/modules/cloud-tunnel/services/tunnel-event-forwarder.service.js.map +1 -1
  37. package/dist/server/modules/epics/subscribers/epic-assignment-notifier.subscriber.d.ts +6 -0
  38. package/dist/server/modules/epics/subscribers/epic-assignment-notifier.subscriber.js +111 -34
  39. package/dist/server/modules/epics/subscribers/epic-assignment-notifier.subscriber.js.map +1 -1
  40. package/dist/server/modules/events/catalog/broadcast-registry.js +31 -21
  41. package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
  42. package/dist/server/modules/events/catalog/index.d.ts +6 -16
  43. package/dist/server/modules/events/catalog/index.js +0 -2
  44. package/dist/server/modules/events/catalog/index.js.map +1 -1
  45. package/dist/server/modules/events/catalog/session.stopped.d.ts +14 -0
  46. package/dist/server/modules/events/catalog/session.stopped.js +10 -1
  47. package/dist/server/modules/events/catalog/session.stopped.js.map +1 -1
  48. package/dist/server/modules/mcp/constants.d.ts +0 -4
  49. package/dist/server/modules/mcp/constants.js +1 -15
  50. package/dist/server/modules/mcp/constants.js.map +1 -1
  51. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +0 -319
  52. package/dist/server/modules/mcp/dtos/mcp.dto.js +1 -100
  53. package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
  54. package/dist/server/modules/mcp/mcp-full.module.js +0 -2
  55. package/dist/server/modules/mcp/mcp-full.module.js.map +1 -1
  56. package/dist/server/modules/mcp/services/handlers/chat-context.d.ts +0 -4
  57. package/dist/server/modules/mcp/services/handlers/chat-tools.d.ts +0 -3
  58. package/dist/server/modules/mcp/services/handlers/chat-tools.js +71 -382
  59. package/dist/server/modules/mcp/services/handlers/chat-tools.js.map +1 -1
  60. package/dist/server/modules/mcp/services/mcp.service.d.ts +1 -4
  61. package/dist/server/modules/mcp/services/mcp.service.js +22 -44
  62. package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
  63. package/dist/server/modules/mcp/tool-descriptors/chat.bindings.js +0 -3
  64. package/dist/server/modules/mcp/tool-descriptors/chat.bindings.js.map +1 -1
  65. package/dist/server/modules/mcp/tool-descriptors/chat.metadata.js +4 -59
  66. package/dist/server/modules/mcp/tool-descriptors/chat.metadata.js.map +1 -1
  67. package/dist/server/modules/mcp/tool-descriptors/index.js +0 -4
  68. package/dist/server/modules/mcp/tool-descriptors/index.js.map +1 -1
  69. package/dist/server/modules/projects/controllers/projects.controller.d.ts +24 -18
  70. package/dist/server/modules/projects/controllers/projects.controller.js +74 -40
  71. package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
  72. package/dist/server/modules/projects/dtos/template-upgrade.dto.d.ts +19 -0
  73. package/dist/server/modules/projects/dtos/template-upgrade.dto.js +60 -0
  74. package/dist/server/modules/projects/dtos/template-upgrade.dto.js.map +1 -1
  75. package/dist/server/modules/projects/helpers/project-export.d.ts +2 -5
  76. package/dist/server/modules/projects/helpers/project-export.js +2 -2
  77. package/dist/server/modules/projects/helpers/project-export.js.map +1 -1
  78. package/dist/server/modules/projects/helpers/project-import-sessions.d.ts +3 -0
  79. package/dist/server/modules/projects/helpers/project-import-sessions.js +11 -6
  80. package/dist/server/modules/projects/helpers/project-import-sessions.js.map +1 -1
  81. package/dist/server/modules/projects/helpers/project-import.d.ts +83 -8
  82. package/dist/server/modules/projects/helpers/project-import.js +161 -44
  83. package/dist/server/modules/projects/helpers/project-import.js.map +1 -1
  84. package/dist/server/modules/projects/helpers/project-runtime.helpers.d.ts +2 -5
  85. package/dist/server/modules/projects/helpers/project-runtime.helpers.js.map +1 -1
  86. package/dist/server/modules/projects/services/project-template-upgrade.service.d.ts +16 -3
  87. package/dist/server/modules/projects/services/project-template-upgrade.service.js +115 -56
  88. package/dist/server/modules/projects/services/project-template-upgrade.service.js.map +1 -1
  89. package/dist/server/modules/projects/services/projects.service.d.ts +23 -13
  90. package/dist/server/modules/projects/services/projects.service.js +1 -1
  91. package/dist/server/modules/projects/services/projects.service.js.map +1 -1
  92. package/dist/server/modules/projects/template-codec/codecs/statuses.codec.js +4 -2
  93. package/dist/server/modules/projects/template-codec/codecs/statuses.codec.js.map +1 -1
  94. package/dist/server/modules/projects/template-codec/codecs/subscribers.codec.d.ts +3 -10
  95. package/dist/server/modules/projects/template-codec/codecs/subscribers.codec.js.map +1 -1
  96. package/dist/server/modules/registry/controllers/templates.controller.d.ts +12 -1
  97. package/dist/server/modules/reviews/subscribers/review-comment-notifier.subscriber.js +0 -1
  98. package/dist/server/modules/reviews/subscribers/review-comment-notifier.subscriber.js.map +1 -1
  99. package/dist/server/modules/session-reader/data/pricing.json +1 -1
  100. package/dist/server/modules/sessions/controllers/sessions.controller.js +4 -1
  101. package/dist/server/modules/sessions/controllers/sessions.controller.js.map +1 -1
  102. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js +8 -2
  103. package/dist/server/modules/sessions/services/session-lifecycle-facade.service.js.map +1 -1
  104. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +2 -0
  105. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +2 -0
  106. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
  107. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +3 -5
  108. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
  109. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +3 -5
  110. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
  111. package/dist/server/modules/sessions/services/sessions.service.d.ts +2 -2
  112. package/dist/server/modules/sessions/services/sessions.service.js +70 -97
  113. package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
  114. package/dist/server/modules/skills/adapters/community-skill-source.adapter.d.ts +2 -8
  115. package/dist/server/modules/skills/adapters/community-skill-source.adapter.js +3 -167
  116. package/dist/server/modules/skills/adapters/community-skill-source.adapter.js.map +1 -1
  117. package/dist/server/modules/skills/adapters/github-directory-skill-source.adapter.d.ts +21 -0
  118. package/dist/server/modules/skills/adapters/github-directory-skill-source.adapter.js +231 -0
  119. package/dist/server/modules/skills/adapters/github-directory-skill-source.adapter.js.map +1 -0
  120. package/dist/server/modules/skills/adapters/github-skill-source.base.d.ts +1 -0
  121. package/dist/server/modules/skills/adapters/github-skill-source.base.js +4 -4
  122. package/dist/server/modules/skills/adapters/github-skill-source.base.js.map +1 -1
  123. package/dist/server/modules/skills/adapters/skill-parsing.utils.d.ts +1 -0
  124. package/dist/server/modules/skills/adapters/skill-parsing.utils.js +41 -0
  125. package/dist/server/modules/skills/adapters/skill-parsing.utils.js.map +1 -1
  126. package/dist/server/modules/skills/skills.module.js +15 -1
  127. package/dist/server/modules/skills/skills.module.js.map +1 -1
  128. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +0 -1
  129. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  130. package/dist/server/modules/storage/local/delegates/review.delegate.d.ts +0 -1
  131. package/dist/server/modules/storage/local/delegates/review.delegate.js +0 -20
  132. package/dist/server/modules/storage/local/delegates/review.delegate.js.map +1 -1
  133. package/dist/server/modules/storage/local/local-storage.service.d.ts +0 -1
  134. package/dist/server/modules/storage/local/local-storage.service.js +0 -3
  135. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  136. package/dist/server/modules/storage/models/domain.models.d.ts +7 -2
  137. package/dist/server/modules/subscribers/actions/restart-agent.action.js +4 -1
  138. package/dist/server/modules/subscribers/actions/restart-agent.action.js.map +1 -1
  139. package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +227 -19
  140. package/dist/server/modules/subscribers/dtos/subscriber.dto.js +10 -5
  141. package/dist/server/modules/subscribers/dtos/subscriber.dto.js.map +1 -1
  142. package/dist/server/modules/subscribers/events/event-fields-catalog.js +6 -1
  143. package/dist/server/modules/subscribers/events/event-fields-catalog.js.map +1 -1
  144. package/dist/server/modules/subscribers/services/subscriber-executor.service.d.ts +3 -0
  145. package/dist/server/modules/subscribers/services/subscriber-executor.service.js +44 -0
  146. package/dist/server/modules/subscribers/services/subscriber-executor.service.js.map +1 -1
  147. package/dist/server/modules/teams/services/teams.service.js +4 -1
  148. package/dist/server/modules/teams/services/teams.service.js.map +1 -1
  149. package/dist/server/modules/teams/subscribers/team-membership-changed-notifier.subscriber.js +3 -1
  150. package/dist/server/modules/teams/subscribers/team-membership-changed-notifier.subscriber.js.map +1 -1
  151. package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +0 -6
  152. package/dist/server/modules/terminal/gateways/terminal.gateway.js +1 -33
  153. package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
  154. package/dist/server/modules/terminal/services/terminal-io/lifecycle.d.ts +2 -1
  155. package/dist/server/modules/terminal/services/terminal-io/lifecycle.js +38 -0
  156. package/dist/server/modules/terminal/services/terminal-io/lifecycle.js.map +1 -1
  157. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.d.ts +13 -2
  158. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js +141 -25
  159. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js.map +1 -1
  160. package/dist/server/modules/terminal/services/terminal-io/types.d.ts +15 -0
  161. package/dist/server/templates/teams-dev.json +172 -110
  162. package/dist/server/tsconfig.tsbuildinfo +1 -1
  163. package/dist/server/ui/assets/{ReviewDetailPage-Cf5ED0R0.js → ReviewDetailPage-BXLlZvPO.js} +1 -1
  164. package/dist/server/ui/assets/{ReviewsPage-BfP9P3QO.js → ReviewsPage-CmFUc6IP.js} +1 -1
  165. package/dist/server/ui/assets/{index-DptgqA22.js → index-LNBfBNWF.js} +253 -261
  166. package/dist/server/ui/assets/index-NypjSmlZ.css +32 -0
  167. package/dist/server/ui/assets/{useReviewSubscription-QJSfZ3FX.js → useReviewSubscription-Ch8K_5xz.js} +19 -19
  168. package/dist/server/ui/index.html +2 -2
  169. package/dist/templates/teams-dev.json +172 -110
  170. package/package.json +15 -1
  171. package/dist/drizzle/PHASE2_MIGRATION_GUIDE.md +0 -109
  172. package/dist/server/modules/agent-message-delivery/subscribers/chat-message-delivery.subscriber.d.ts +0 -22
  173. package/dist/server/modules/agent-message-delivery/subscribers/chat-message-delivery.subscriber.js +0 -64
  174. package/dist/server/modules/agent-message-delivery/subscribers/chat-message-delivery.subscriber.js.map +0 -1
  175. package/dist/server/modules/chat/chat.module.d.ts +0 -2
  176. package/dist/server/modules/chat/chat.module.js +0 -38
  177. package/dist/server/modules/chat/chat.module.js.map +0 -1
  178. package/dist/server/modules/chat/controllers/chat-settings.controller.d.ts +0 -8
  179. package/dist/server/modules/chat/controllers/chat-settings.controller.js +0 -67
  180. package/dist/server/modules/chat/controllers/chat-settings.controller.js.map +0 -1
  181. package/dist/server/modules/chat/controllers/chat.controller.d.ts +0 -15
  182. package/dist/server/modules/chat/controllers/chat.controller.js +0 -153
  183. package/dist/server/modules/chat/controllers/chat.controller.js.map +0 -1
  184. package/dist/server/modules/chat/dtos/chat-settings.dto.d.ts +0 -31
  185. package/dist/server/modules/chat/dtos/chat-settings.dto.js +0 -17
  186. package/dist/server/modules/chat/dtos/chat-settings.dto.js.map +0 -1
  187. package/dist/server/modules/chat/dtos/chat.dto.d.ts +0 -309
  188. package/dist/server/modules/chat/dtos/chat.dto.js +0 -80
  189. package/dist/server/modules/chat/dtos/chat.dto.js.map +0 -1
  190. package/dist/server/modules/chat/services/chat-session-invite.service.d.ts +0 -16
  191. package/dist/server/modules/chat/services/chat-session-invite.service.js +0 -200
  192. package/dist/server/modules/chat/services/chat-session-invite.service.js.map +0 -1
  193. package/dist/server/modules/chat/services/chat-settings.service.d.ts +0 -12
  194. package/dist/server/modules/chat/services/chat-settings.service.js +0 -123
  195. package/dist/server/modules/chat/services/chat-settings.service.js.map +0 -1
  196. package/dist/server/modules/chat/services/chat.service.d.ts +0 -47
  197. package/dist/server/modules/chat/services/chat.service.js +0 -693
  198. package/dist/server/modules/chat/services/chat.service.js.map +0 -1
  199. package/dist/server/modules/chat/services/invite-template.util.d.ts +0 -17
  200. package/dist/server/modules/chat/services/invite-template.util.js +0 -70
  201. package/dist/server/modules/chat/services/invite-template.util.js.map +0 -1
  202. package/dist/server/modules/events/catalog/chat.message.read.d.ts +0 -21
  203. package/dist/server/modules/events/catalog/chat.message.read.js +0 -14
  204. package/dist/server/modules/events/catalog/chat.message.read.js.map +0 -1
  205. package/dist/server/modules/mcp/services/handlers/activity-context.d.ts +0 -6
  206. package/dist/server/modules/mcp/services/handlers/activity-context.js +0 -3
  207. package/dist/server/modules/mcp/services/handlers/activity-context.js.map +0 -1
  208. package/dist/server/modules/mcp/services/handlers/activity-tools.d.ts +0 -4
  209. package/dist/server/modules/mcp/services/handlers/activity-tools.js +0 -179
  210. package/dist/server/modules/mcp/services/handlers/activity-tools.js.map +0 -1
  211. package/dist/server/modules/mcp/tool-descriptors/activity.bindings.d.ts +0 -2
  212. package/dist/server/modules/mcp/tool-descriptors/activity.bindings.js +0 -9
  213. package/dist/server/modules/mcp/tool-descriptors/activity.bindings.js.map +0 -1
  214. package/dist/server/modules/mcp/tool-descriptors/activity.metadata.d.ts +0 -2
  215. package/dist/server/modules/mcp/tool-descriptors/activity.metadata.js +0 -49
  216. package/dist/server/modules/mcp/tool-descriptors/activity.metadata.js.map +0 -1
  217. package/dist/server/ui/assets/index-B5ZC_DQU.css +0 -32
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devchain-cli",
3
- "version": "0.20.0",
3
+ "version": "0.20.2",
4
4
  "description": "AI driven development platform",
5
5
  "homepage": "https://devchain.cc/",
6
6
  "repository": {
@@ -8,6 +8,20 @@
8
8
  "url": "https://github.com/twitech-lab/devchain.git"
9
9
  },
10
10
  "changelog": {
11
+ "0.20.2": [
12
+ "[Impr] Projects: template upgrades now open the same configuration wizard as imports",
13
+ "[Impr] Skills: DevChain's own skills ship as a built-in source that is enabled by default in every project",
14
+ "[Impr] Skills: three new built-in skills — Create Commit, Code Simplifier, and Simplified Technical English (ASD-STE100) for agent output",
15
+ "[Impr] Chat: the event bus shows the direction of cross-project messages",
16
+ "[Bug Fix] Terminal: typing is accepted right after a reconnect instead of being ignored"
17
+ ],
18
+ "0.20.1": [
19
+ "[Impr] Subscribers: event filters can combine several conditions with AND/OR in one rule",
20
+ "[Impr] Teams: adding a member no longer wakes an offline team lead just to deliver the membership notice",
21
+ "[Impr] Template updates: Brainstormer ships as Project Owner so cross-project messaging works out of the box, refreshed planning and standards prompts",
22
+ "[Bug Fix] Sessions: agents no longer show up as lost or crashed while a session is still starting",
23
+ "[Bug Fix] Terminal: after an idle tab, terminals reconnect on their own instead of staying black"
24
+ ],
11
25
  "0.20.0": [
12
26
  "Projects: designate an agent as the Project Owner",
13
27
  "Cross-project messaging: Project Owners can discover other local projects and message each other",
@@ -1,109 +0,0 @@
1
- # Phase 2 Migration Guide: Profile Provider Configs
2
-
3
- ## Overview
4
-
5
- Phase 2 migrations populate the `profile_provider_configs` table and merge duplicate profiles.
6
-
7
- **Migrations:**
8
- - `0028_populate_provider_configs.sql` - Create configs from existing profiles
9
- - `0029_merge_profiles_by_family_slug.sql` - Merge profiles with same familySlug
10
- - `0030_set_agents_provider_config_id.sql` - Set agent config references
11
-
12
- ## Pre-Migration Checklist
13
-
14
- ### 1. Stop All Sessions
15
-
16
- Before running migrations, ensure no active sessions exist:
17
-
18
- ```bash
19
- sqlite3 ~/.devchain/devchain.db < apps/local-app/drizzle/migration-guard.sql
20
- ```
21
-
22
- If any output is shown, stop the sessions first:
23
- ```bash
24
- # List running sessions
25
- sqlite3 ~/.devchain/devchain.db "SELECT id, agent_id FROM sessions WHERE status='running';"
26
-
27
- # Stop sessions via UI or terminate tmux sessions
28
- ```
29
-
30
- ### 2. Create Backup
31
-
32
- **CRITICAL:** Always backup before migrating:
33
-
34
- ```bash
35
- cp ~/.devchain/devchain.db ~/.devchain/devchain.db.backup-$(date +%Y%m%d-%H%M%S)
36
- ```
37
-
38
- ### 3. Verify Backup
39
-
40
- ```bash
41
- sqlite3 ~/.devchain/devchain.db.backup-* "SELECT COUNT(*) FROM agent_profiles;"
42
- ```
43
-
44
- ## Running Migrations
45
-
46
- ```bash
47
- pnpm --filter local-app db:migrate
48
- ```
49
-
50
- Or manually:
51
- ```bash
52
- sqlite3 ~/.devchain/devchain.db < apps/local-app/drizzle/0028_populate_provider_configs.sql
53
- sqlite3 ~/.devchain/devchain.db < apps/local-app/drizzle/0029_merge_profiles_by_family_slug.sql
54
- sqlite3 ~/.devchain/devchain.db < apps/local-app/drizzle/0030_set_agents_provider_config_id.sql
55
- ```
56
-
57
- ## Post-Migration Verification
58
-
59
- ```bash
60
- # Verify configs created
61
- sqlite3 ~/.devchain/devchain.db "SELECT COUNT(*) FROM profile_provider_configs;"
62
-
63
- # Verify no duplicate familySlug groups
64
- sqlite3 ~/.devchain/devchain.db "SELECT project_id, family_slug, COUNT(*) FROM agent_profiles WHERE family_slug IS NOT NULL GROUP BY project_id, family_slug HAVING COUNT(*) > 1;"
65
-
66
- # Verify all agents have config
67
- sqlite3 ~/.devchain/devchain.db "SELECT COUNT(*) FROM agents WHERE provider_config_id IS NULL;"
68
- ```
69
-
70
- ## Rollback Procedure
71
-
72
- ### Recommended: Restore from Backup
73
-
74
- ```bash
75
- # Stop the application
76
- # Restore backup
77
- cp ~/.devchain/devchain.db.backup-YYYYMMDD-HHMMSS ~/.devchain/devchain.db
78
-
79
- # Restart the application
80
- ```
81
-
82
- ### Alternative: Partial Rollback Script
83
-
84
- **WARNING:** The partial rollback script cannot restore deleted profiles from the merge step.
85
-
86
- ```bash
87
- sqlite3 ~/.devchain/devchain.db < apps/local-app/drizzle/phase2-rollback.sql
88
- ```
89
-
90
- This will:
91
- 1. Clear `agents.provider_config_id` (set to NULL)
92
- 2. Delete all `profile_provider_configs` records
93
- 3. Remove migration tracking entries
94
-
95
- **NOT restored:** Profiles deleted during merge (0029) cannot be restored without backup.
96
-
97
- ## Troubleshooting
98
-
99
- ### Migration fails with "database is locked"
100
- - Stop all sessions and the application
101
- - Ensure no other process is accessing the database
102
-
103
- ### Agents have NULL providerConfigId after migration
104
- - Verify profile has a config: `SELECT * FROM profile_provider_configs WHERE profile_id = '<profile_id>';`
105
- - Re-run migration 0030
106
-
107
- ### Profile configs missing
108
- - Check if profile has providerId: `SELECT provider_id FROM agent_profiles WHERE id = '<profile_id>';`
109
- - Profiles with NULL providerId don't get configs created
@@ -1,22 +0,0 @@
1
- import { AgentMessageDeliveryService } from '../agent-message-delivery.service';
2
- interface ChatMessageCreatedPayload {
3
- threadId: string;
4
- projectId?: string;
5
- recipientIds?: string[];
6
- message: {
7
- id: string;
8
- threadId: string;
9
- authorType: 'user' | 'agent' | 'system';
10
- authorAgentId: string | null;
11
- content: string;
12
- targets?: string[];
13
- createdAt: string;
14
- };
15
- }
16
- export declare class ChatMessageDeliverySubscriber {
17
- private readonly delivery;
18
- private readonly logger;
19
- constructor(delivery: AgentMessageDeliveryService);
20
- handleChatMessageCreated(payload: ChatMessageCreatedPayload): Promise<void>;
21
- }
22
- export {};
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var ChatMessageDeliverySubscriber_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ChatMessageDeliverySubscriber = void 0;
14
- const common_1 = require("@nestjs/common");
15
- const event_emitter_1 = require("@nestjs/event-emitter");
16
- const agent_message_delivery_service_1 = require("../agent-message-delivery.service");
17
- let ChatMessageDeliverySubscriber = ChatMessageDeliverySubscriber_1 = class ChatMessageDeliverySubscriber {
18
- delivery;
19
- logger = new common_1.Logger(ChatMessageDeliverySubscriber_1.name);
20
- constructor(delivery) {
21
- this.delivery = delivery;
22
- }
23
- async handleChatMessageCreated(payload) {
24
- const { threadId, projectId, recipientIds, message } = payload;
25
- if (message.authorType === 'agent' || message.authorType === 'system') {
26
- return;
27
- }
28
- if (!projectId) {
29
- this.logger.warn({ threadId }, 'Missing projectId in payload, skipping delivery');
30
- return;
31
- }
32
- try {
33
- const recipients = recipientIds && recipientIds.length > 0 ? Array.from(new Set(recipientIds)) : [];
34
- if (recipients.length === 0)
35
- return;
36
- await this.delivery.deliver(recipients, {
37
- kind: 'chat.user',
38
- body: message.content,
39
- source: 'chat.message',
40
- projectId,
41
- senderName: 'User',
42
- senderType: 'user',
43
- threadId,
44
- messageId: message.id,
45
- senderAgentId: message.authorAgentId ?? undefined,
46
- });
47
- }
48
- catch (error) {
49
- this.logger.error({ error, threadId, messageId: message.id }, 'Failed to deliver chat message');
50
- }
51
- }
52
- };
53
- exports.ChatMessageDeliverySubscriber = ChatMessageDeliverySubscriber;
54
- __decorate([
55
- (0, event_emitter_1.OnEvent)('chat.message.created', { async: true }),
56
- __metadata("design:type", Function),
57
- __metadata("design:paramtypes", [Object]),
58
- __metadata("design:returntype", Promise)
59
- ], ChatMessageDeliverySubscriber.prototype, "handleChatMessageCreated", null);
60
- exports.ChatMessageDeliverySubscriber = ChatMessageDeliverySubscriber = ChatMessageDeliverySubscriber_1 = __decorate([
61
- (0, common_1.Injectable)(),
62
- __metadata("design:paramtypes", [agent_message_delivery_service_1.AgentMessageDeliveryService])
63
- ], ChatMessageDeliverySubscriber);
64
- //# sourceMappingURL=chat-message-delivery.subscriber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-message-delivery.subscriber.js","sourceRoot":"","sources":["../../../../src/modules/agent-message-delivery/subscribers/chat-message-delivery.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,yDAAgD;AAChD,sFAAgF;AAkBzE,IAAM,6BAA6B,qCAAnC,MAAM,6BAA6B;IAGX;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,+BAA6B,CAAC,IAAI,CAAC,CAAC;IAEzE,YAA6B,QAAqC;QAArC,aAAQ,GAAR,QAAQ,CAA6B;IAAG,CAAC;IAGhE,AAAN,KAAK,CAAC,wBAAwB,CAAC,OAAkC;QAC/D,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAE/D,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,iDAAiD,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GACd,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEpC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;gBACtC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,cAAc;gBACtB,SAAS;gBACT,UAAU,EAAE,MAAM;gBAClB,UAAU,EAAE,MAAM;gBAClB,QAAQ;gBACR,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,SAAS;aAClD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAC1C,gCAAgC,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA1CY,sEAA6B;AAMlC;IADL,IAAA,uBAAO,EAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;;;6EAoChD;wCAzCU,6BAA6B;IADzC,IAAA,mBAAU,GAAE;qCAI4B,4DAA2B;GAHvD,6BAA6B,CA0CzC"}
@@ -1,2 +0,0 @@
1
- export declare class ChatModule {
2
- }
@@ -1,38 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ChatModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const chat_service_1 = require("./services/chat.service");
12
- const chat_controller_1 = require("./controllers/chat.controller");
13
- const chat_settings_controller_1 = require("./controllers/chat-settings.controller");
14
- const chat_settings_service_1 = require("./services/chat-settings.service");
15
- const chat_session_invite_service_1 = require("./services/chat-session-invite.service");
16
- const storage_module_1 = require("../storage/storage.module");
17
- const settings_module_1 = require("../settings/settings.module");
18
- const sessions_read_module_1 = require("../sessions/sessions-read.module");
19
- const sessions_delivery_module_1 = require("../sessions/sessions-delivery.module");
20
- const events_core_module_1 = require("../events/events-core.module");
21
- let ChatModule = class ChatModule {
22
- };
23
- exports.ChatModule = ChatModule;
24
- exports.ChatModule = ChatModule = __decorate([
25
- (0, common_1.Module)({
26
- imports: [
27
- events_core_module_1.EventsCoreModule,
28
- storage_module_1.StorageModule,
29
- settings_module_1.SettingsModule,
30
- sessions_read_module_1.SessionsReadModule,
31
- sessions_delivery_module_1.SessionsDeliveryModule,
32
- ],
33
- controllers: [chat_controller_1.ChatController, chat_settings_controller_1.ChatSettingsController],
34
- providers: [chat_service_1.ChatService, chat_settings_service_1.ChatSettingsService, chat_session_invite_service_1.ChatSessionInviteService],
35
- exports: [chat_service_1.ChatService, chat_settings_service_1.ChatSettingsService, chat_session_invite_service_1.ChatSessionInviteService],
36
- })
37
- ], ChatModule);
38
- //# sourceMappingURL=chat.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.module.js","sourceRoot":"","sources":["../../../src/modules/chat/chat.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,0DAAsD;AACtD,mEAA+D;AAC/D,qFAAgF;AAChF,4EAAuE;AACvE,wFAAkF;AAClF,8DAA0D;AAC1D,iEAA6D;AAC7D,2EAAsE;AACtE,mFAA8E;AAC9E,qEAAgE;AAczD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAZtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qCAAgB;YAChB,8BAAa;YACb,gCAAc;YACd,yCAAkB;YAClB,iDAAsB;SACvB;QACD,WAAW,EAAE,CAAC,gCAAc,EAAE,iDAAsB,CAAC;QACrD,SAAS,EAAE,CAAC,0BAAW,EAAE,2CAAmB,EAAE,sDAAwB,CAAC;QACvE,OAAO,EAAE,CAAC,0BAAW,EAAE,2CAAmB,EAAE,sDAAwB,CAAC;KACtE,CAAC;GACW,UAAU,CAAG"}
@@ -1,8 +0,0 @@
1
- import { ChatSettingsService } from '../services/chat-settings.service';
2
- import { type ChatSettingsResponseDto } from '../dtos/chat-settings.dto';
3
- export declare class ChatSettingsController {
4
- private readonly chatSettingsService;
5
- constructor(chatSettingsService: ChatSettingsService);
6
- getChatSettings(query: unknown): Promise<ChatSettingsResponseDto>;
7
- updateChatSettings(body: unknown): Promise<ChatSettingsResponseDto>;
8
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ChatSettingsController = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const chat_settings_service_1 = require("../services/chat-settings.service");
18
- const logger_1 = require("../../../common/logging/logger");
19
- const chat_settings_dto_1 = require("../dtos/chat-settings.dto");
20
- const invite_template_util_1 = require("../services/invite-template.util");
21
- const logger = (0, logger_1.createLogger)('ChatSettingsController');
22
- let ChatSettingsController = class ChatSettingsController {
23
- chatSettingsService;
24
- constructor(chatSettingsService) {
25
- this.chatSettingsService = chatSettingsService;
26
- }
27
- async getChatSettings(query) {
28
- const { projectId } = chat_settings_dto_1.ChatSettingsQuerySchema.parse(query);
29
- logger.info({ projectId }, 'GET /api/chat/settings');
30
- const storedTemplate = await this.chatSettingsService.getStoredInviteTemplate(projectId);
31
- const isDefault = !storedTemplate || storedTemplate.trim().length === 0;
32
- return chat_settings_dto_1.ChatSettingsResponseSchema.parse({
33
- invite_template: isDefault ? invite_template_util_1.DEFAULT_INVITE_TEMPLATE : storedTemplate,
34
- is_default: isDefault,
35
- });
36
- }
37
- async updateChatSettings(body) {
38
- const { projectId, invite_template: inviteTemplate = '' } = chat_settings_dto_1.UpdateChatSettingsSchema.parse(body);
39
- logger.info({ projectId }, 'PUT /api/chat/settings');
40
- const effectiveTemplate = await this.chatSettingsService.updateInviteTemplate(projectId, inviteTemplate);
41
- const isDefault = inviteTemplate.trim().length === 0;
42
- return chat_settings_dto_1.ChatSettingsResponseSchema.parse({
43
- invite_template: effectiveTemplate,
44
- is_default: isDefault,
45
- });
46
- }
47
- };
48
- exports.ChatSettingsController = ChatSettingsController;
49
- __decorate([
50
- (0, common_1.Get)('settings'),
51
- __param(0, (0, common_1.Query)()),
52
- __metadata("design:type", Function),
53
- __metadata("design:paramtypes", [Object]),
54
- __metadata("design:returntype", Promise)
55
- ], ChatSettingsController.prototype, "getChatSettings", null);
56
- __decorate([
57
- (0, common_1.Put)('settings'),
58
- __param(0, (0, common_1.Body)()),
59
- __metadata("design:type", Function),
60
- __metadata("design:paramtypes", [Object]),
61
- __metadata("design:returntype", Promise)
62
- ], ChatSettingsController.prototype, "updateChatSettings", null);
63
- exports.ChatSettingsController = ChatSettingsController = __decorate([
64
- (0, common_1.Controller)('api/chat'),
65
- __metadata("design:paramtypes", [chat_settings_service_1.ChatSettingsService])
66
- ], ChatSettingsController);
67
- //# sourceMappingURL=chat-settings.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-settings.controller.js","sourceRoot":"","sources":["../../../../src/modules/chat/controllers/chat-settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmE;AACnE,6EAAwE;AACxE,2DAA8D;AAC9D,iEAKmC;AACnC,2EAA2E;AAE3E,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,wBAAwB,CAAC,CAAC;AAG/C,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACJ;IAA7B,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAGnE,AAAN,KAAK,CAAC,eAAe,CAAU,KAAc;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,2CAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAErD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QAExE,OAAO,8CAA0B,CAAC,KAAK,CAAC;YACtC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,8CAAuB,CAAC,CAAC,CAAC,cAAc;YACrE,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAGK,AAAN,KAAK,CAAC,kBAAkB,CAAS,IAAa;QAC5C,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,GAAG,EAAE,EAAE,GACvD,4CAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAErD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAC3E,SAAS,EACT,cAAc,CACf,CAAC;QAEF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QAErD,OAAO,8CAA0B,CAAC,KAAK,CAAC;YACtC,eAAe,EAAE,iBAAiB;YAClC,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnCY,wDAAsB;AAI3B;IADL,IAAA,YAAG,EAAC,UAAU,CAAC;IACO,WAAA,IAAA,cAAK,GAAE,CAAA;;;;6DAW7B;AAGK;IADL,IAAA,YAAG,EAAC,UAAU,CAAC;IACU,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gEAgB/B;iCAlCU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,UAAU,CAAC;qCAE6B,2CAAmB;GAD1D,sBAAsB,CAmClC"}
@@ -1,15 +0,0 @@
1
- import { ChatService } from '../services/chat.service';
2
- import { type ThreadDto, type MessageDto, type ThreadsListDto, type MessagesListDto } from '../dtos/chat.dto';
3
- export declare class ChatController {
4
- private readonly chatService;
5
- constructor(chatService: ChatService);
6
- listThreads(query: unknown): Promise<ThreadsListDto>;
7
- getThread(id: string, projectId: string): Promise<ThreadDto>;
8
- createDirectThread(body: unknown): Promise<ThreadDto>;
9
- createGroupThread(body: unknown): Promise<ThreadDto>;
10
- listMessages(threadId: string, query: unknown): Promise<MessagesListDto>;
11
- createMessage(threadId: string, body: unknown): Promise<MessageDto>;
12
- inviteMembers(threadId: string, body: unknown): Promise<ThreadDto>;
13
- clearHistory(threadId: string, body: unknown): Promise<ThreadDto>;
14
- purgeHistory(threadId: string, body: unknown): Promise<ThreadDto>;
15
- }
@@ -1,153 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ChatController = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const chat_service_1 = require("../services/chat.service");
18
- const logger_1 = require("../../../common/logging/logger");
19
- const chat_dto_1 = require("../dtos/chat.dto");
20
- const logger = (0, logger_1.createLogger)('ChatController');
21
- let ChatController = class ChatController {
22
- chatService;
23
- constructor(chatService) {
24
- this.chatService = chatService;
25
- }
26
- async listThreads(query) {
27
- logger.info({ query }, 'GET /api/chat/threads');
28
- const validatedQuery = chat_dto_1.ListThreadsQuerySchema.parse(query);
29
- return this.chatService.listThreads(validatedQuery);
30
- }
31
- async getThread(id, projectId) {
32
- logger.info({ threadId: id, projectId }, 'GET /api/chat/threads/:id');
33
- const thread = await this.chatService.getThread(id);
34
- if (thread.projectId !== projectId) {
35
- throw new common_1.NotFoundException(`Thread ${id} not found in project ${projectId}`);
36
- }
37
- return thread;
38
- }
39
- async createDirectThread(body) {
40
- logger.info('POST /api/chat/threads/direct');
41
- const data = chat_dto_1.CreateDirectThreadSchema.parse(body);
42
- return this.chatService.createDirectThread(data);
43
- }
44
- async createGroupThread(body) {
45
- logger.info('POST /api/chat/threads/group');
46
- const data = chat_dto_1.CreateGroupThreadSchema.parse(body);
47
- return this.chatService.createGroupThread(data);
48
- }
49
- async listMessages(threadId, query) {
50
- logger.info({ threadId, query }, 'GET /api/chat/threads/:id/messages');
51
- const validatedQuery = chat_dto_1.ListMessagesQuerySchema.parse(query);
52
- const thread = await this.chatService.getThread(threadId);
53
- if (validatedQuery.projectId && thread.projectId !== validatedQuery.projectId) {
54
- throw new common_1.NotFoundException(`Thread ${threadId} not found in project ${validatedQuery.projectId}`);
55
- }
56
- return this.chatService.listMessages(threadId, validatedQuery);
57
- }
58
- async createMessage(threadId, body) {
59
- logger.info({ threadId }, 'POST /api/chat/threads/:id/messages');
60
- const data = chat_dto_1.CreateMessageSchema.parse(body);
61
- return this.chatService.createMessage(threadId, data);
62
- }
63
- async inviteMembers(threadId, body) {
64
- logger.info({ threadId }, 'POST /api/chat/threads/:id/invite');
65
- const data = chat_dto_1.InviteThreadMembersSchema.parse(body);
66
- return this.chatService.inviteMembers(threadId, data);
67
- }
68
- async clearHistory(threadId, body) {
69
- logger.info({ threadId }, 'POST /api/chat/threads/:id/clear');
70
- const data = chat_dto_1.ClearThreadHistorySchema.parse(body);
71
- return this.chatService.clearHistory(threadId, data);
72
- }
73
- async purgeHistory(threadId, body) {
74
- logger.info({ threadId }, 'POST /api/chat/threads/:id/purge');
75
- const data = chat_dto_1.PurgeThreadHistorySchema.parse(body);
76
- return this.chatService.purgeHistory(threadId, data);
77
- }
78
- };
79
- exports.ChatController = ChatController;
80
- __decorate([
81
- (0, common_1.Get)('threads'),
82
- __param(0, (0, common_1.Query)()),
83
- __metadata("design:type", Function),
84
- __metadata("design:paramtypes", [Object]),
85
- __metadata("design:returntype", Promise)
86
- ], ChatController.prototype, "listThreads", null);
87
- __decorate([
88
- (0, common_1.Get)('threads/:id'),
89
- __param(0, (0, common_1.Param)('id')),
90
- __param(1, (0, common_1.Query)('projectId')),
91
- __metadata("design:type", Function),
92
- __metadata("design:paramtypes", [String, String]),
93
- __metadata("design:returntype", Promise)
94
- ], ChatController.prototype, "getThread", null);
95
- __decorate([
96
- (0, common_1.Post)('threads/direct'),
97
- __param(0, (0, common_1.Body)()),
98
- __metadata("design:type", Function),
99
- __metadata("design:paramtypes", [Object]),
100
- __metadata("design:returntype", Promise)
101
- ], ChatController.prototype, "createDirectThread", null);
102
- __decorate([
103
- (0, common_1.Post)('threads/group'),
104
- __param(0, (0, common_1.Body)()),
105
- __metadata("design:type", Function),
106
- __metadata("design:paramtypes", [Object]),
107
- __metadata("design:returntype", Promise)
108
- ], ChatController.prototype, "createGroupThread", null);
109
- __decorate([
110
- (0, common_1.Get)('threads/:id/messages'),
111
- __param(0, (0, common_1.Param)('id')),
112
- __param(1, (0, common_1.Query)()),
113
- __metadata("design:type", Function),
114
- __metadata("design:paramtypes", [String, Object]),
115
- __metadata("design:returntype", Promise)
116
- ], ChatController.prototype, "listMessages", null);
117
- __decorate([
118
- (0, common_1.Post)('threads/:id/messages'),
119
- __param(0, (0, common_1.Param)('id')),
120
- __param(1, (0, common_1.Body)()),
121
- __metadata("design:type", Function),
122
- __metadata("design:paramtypes", [String, Object]),
123
- __metadata("design:returntype", Promise)
124
- ], ChatController.prototype, "createMessage", null);
125
- __decorate([
126
- (0, common_1.Post)('threads/:id/invite'),
127
- __param(0, (0, common_1.Param)('id')),
128
- __param(1, (0, common_1.Body)()),
129
- __metadata("design:type", Function),
130
- __metadata("design:paramtypes", [String, Object]),
131
- __metadata("design:returntype", Promise)
132
- ], ChatController.prototype, "inviteMembers", null);
133
- __decorate([
134
- (0, common_1.Post)('threads/:id/clear'),
135
- __param(0, (0, common_1.Param)('id')),
136
- __param(1, (0, common_1.Body)()),
137
- __metadata("design:type", Function),
138
- __metadata("design:paramtypes", [String, Object]),
139
- __metadata("design:returntype", Promise)
140
- ], ChatController.prototype, "clearHistory", null);
141
- __decorate([
142
- (0, common_1.Post)('threads/:id/purge'),
143
- __param(0, (0, common_1.Param)('id')),
144
- __param(1, (0, common_1.Body)()),
145
- __metadata("design:type", Function),
146
- __metadata("design:paramtypes", [String, Object]),
147
- __metadata("design:returntype", Promise)
148
- ], ChatController.prototype, "purgeHistory", null);
149
- exports.ChatController = ChatController = __decorate([
150
- (0, common_1.Controller)('api/chat'),
151
- __metadata("design:paramtypes", [chat_service_1.ChatService])
152
- ], ChatController);
153
- //# sourceMappingURL=chat.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.controller.js","sourceRoot":"","sources":["../../../../src/modules/chat/controllers/chat.controller.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const ChatSettingsQuerySchema: z.ZodObject<{
3
- projectId: z.ZodString;
4
- }, "strip", z.ZodTypeAny, {
5
- projectId: string;
6
- }, {
7
- projectId: string;
8
- }>;
9
- export declare const ChatSettingsResponseSchema: z.ZodObject<{
10
- invite_template: z.ZodString;
11
- is_default: z.ZodBoolean;
12
- }, "strip", z.ZodTypeAny, {
13
- invite_template: string;
14
- is_default: boolean;
15
- }, {
16
- invite_template: string;
17
- is_default: boolean;
18
- }>;
19
- export declare const UpdateChatSettingsSchema: z.ZodObject<{
20
- projectId: z.ZodString;
21
- invite_template: z.ZodOptional<z.ZodString>;
22
- }, "strip", z.ZodTypeAny, {
23
- projectId: string;
24
- invite_template?: string | undefined;
25
- }, {
26
- projectId: string;
27
- invite_template?: string | undefined;
28
- }>;
29
- export type ChatSettingsQueryDto = z.infer<typeof ChatSettingsQuerySchema>;
30
- export type ChatSettingsResponseDto = z.infer<typeof ChatSettingsResponseSchema>;
31
- export type UpdateChatSettingsDto = z.infer<typeof UpdateChatSettingsSchema>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UpdateChatSettingsSchema = exports.ChatSettingsResponseSchema = exports.ChatSettingsQuerySchema = void 0;
4
- const zod_1 = require("zod");
5
- const invite_template_util_1 = require("../services/invite-template.util");
6
- exports.ChatSettingsQuerySchema = zod_1.z.object({
7
- projectId: zod_1.z.string().uuid(),
8
- });
9
- exports.ChatSettingsResponseSchema = zod_1.z.object({
10
- invite_template: zod_1.z.string(),
11
- is_default: zod_1.z.boolean(),
12
- });
13
- exports.UpdateChatSettingsSchema = zod_1.z.object({
14
- projectId: zod_1.z.string().uuid(),
15
- invite_template: zod_1.z.string().max(invite_template_util_1.TEMPLATE_SIZE_LIMIT).optional(),
16
- });
17
- //# sourceMappingURL=chat-settings.dto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-settings.dto.js","sourceRoot":"","sources":["../../../../src/modules/chat/dtos/chat-settings.dto.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,2EAAuE;AAE1D,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC7B,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE;CACxB,CAAC,CAAC;AAEU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,0CAAmB,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC"}