@tonycasey/lisa 2.2.0 → 2.5.5

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 (262) hide show
  1. package/dist/lib/application/handlers/PromptSubmitHandler.d.ts +22 -12
  2. package/dist/lib/application/handlers/PromptSubmitHandler.d.ts.map +1 -1
  3. package/dist/lib/application/handlers/PromptSubmitHandler.js +36 -13
  4. package/dist/lib/application/handlers/PromptSubmitHandler.js.map +1 -1
  5. package/dist/lib/application/handlers/SessionStartHandler.d.ts +47 -5
  6. package/dist/lib/application/handlers/SessionStartHandler.d.ts.map +1 -1
  7. package/dist/lib/application/handlers/SessionStartHandler.js +164 -37
  8. package/dist/lib/application/handlers/SessionStartHandler.js.map +1 -1
  9. package/dist/lib/application/handlers/SessionStopHandler.d.ts +29 -5
  10. package/dist/lib/application/handlers/SessionStopHandler.d.ts.map +1 -1
  11. package/dist/lib/application/handlers/SessionStopHandler.js +83 -11
  12. package/dist/lib/application/handlers/SessionStopHandler.js.map +1 -1
  13. package/dist/lib/application/interfaces/index.d.ts +1 -0
  14. package/dist/lib/application/interfaces/index.d.ts.map +1 -1
  15. package/dist/lib/application/mediator/IMediator.d.ts +73 -0
  16. package/dist/lib/application/mediator/IMediator.d.ts.map +1 -0
  17. package/dist/lib/application/mediator/IMediator.js +12 -0
  18. package/dist/lib/application/mediator/IMediator.js.map +1 -0
  19. package/dist/lib/application/mediator/Mediator.d.ts +29 -0
  20. package/dist/lib/application/mediator/Mediator.d.ts.map +1 -0
  21. package/dist/lib/application/mediator/Mediator.js +53 -0
  22. package/dist/lib/application/mediator/Mediator.js.map +1 -0
  23. package/dist/lib/application/mediator/index.d.ts +10 -0
  24. package/dist/lib/application/mediator/index.d.ts.map +1 -0
  25. package/dist/lib/application/mediator/index.js +18 -0
  26. package/dist/lib/application/mediator/index.js.map +1 -0
  27. package/dist/lib/application/mediator/requests/PromptSubmitRequest.d.ts +60 -0
  28. package/dist/lib/application/mediator/requests/PromptSubmitRequest.d.ts.map +1 -0
  29. package/dist/lib/application/mediator/requests/PromptSubmitRequest.js +35 -0
  30. package/dist/lib/application/mediator/requests/PromptSubmitRequest.js.map +1 -0
  31. package/dist/lib/application/mediator/requests/SessionStartRequest.d.ts +36 -0
  32. package/dist/lib/application/mediator/requests/SessionStartRequest.d.ts.map +1 -0
  33. package/dist/lib/application/mediator/requests/SessionStartRequest.js +32 -0
  34. package/dist/lib/application/mediator/requests/SessionStartRequest.js.map +1 -0
  35. package/dist/lib/application/mediator/requests/SessionStopRequest.d.ts +67 -0
  36. package/dist/lib/application/mediator/requests/SessionStopRequest.d.ts.map +1 -0
  37. package/dist/lib/application/mediator/requests/SessionStopRequest.js +35 -0
  38. package/dist/lib/application/mediator/requests/SessionStopRequest.js.map +1 -0
  39. package/dist/lib/application/mediator/requests/index.d.ts +9 -0
  40. package/dist/lib/application/mediator/requests/index.d.ts.map +1 -0
  41. package/dist/lib/application/mediator/requests/index.js +13 -0
  42. package/dist/lib/application/mediator/requests/index.js.map +1 -0
  43. package/dist/lib/cli.d.ts +2 -44
  44. package/dist/lib/cli.d.ts.map +1 -1
  45. package/dist/lib/cli.js +351 -606
  46. package/dist/lib/cli.js.map +1 -1
  47. package/dist/lib/commands/docker.d.ts +20 -0
  48. package/dist/lib/commands/docker.d.ts.map +1 -0
  49. package/dist/lib/commands/docker.js +27 -0
  50. package/dist/lib/commands/docker.js.map +1 -0
  51. package/dist/lib/commands/doctor.d.ts +94 -0
  52. package/dist/lib/commands/doctor.d.ts.map +1 -0
  53. package/dist/lib/commands/doctor.js +716 -0
  54. package/dist/lib/commands/doctor.js.map +1 -0
  55. package/dist/lib/commands/index.d.ts +10 -0
  56. package/dist/lib/commands/index.d.ts.map +1 -0
  57. package/dist/lib/commands/index.js +31 -0
  58. package/dist/lib/commands/index.js.map +1 -0
  59. package/dist/lib/commands/init.d.ts +31 -0
  60. package/dist/lib/commands/init.d.ts.map +1 -0
  61. package/dist/lib/commands/init.js +497 -0
  62. package/dist/lib/commands/init.js.map +1 -0
  63. package/dist/lib/commands/shared/constants.d.ts +27 -0
  64. package/dist/lib/commands/shared/constants.d.ts.map +1 -0
  65. package/dist/lib/commands/shared/constants.js +46 -0
  66. package/dist/lib/commands/shared/constants.js.map +1 -0
  67. package/dist/lib/commands/shared/index.d.ts +5 -0
  68. package/dist/lib/commands/shared/index.d.ts.map +1 -0
  69. package/dist/lib/commands/shared/index.js +15 -0
  70. package/dist/lib/commands/shared/index.js.map +1 -0
  71. package/dist/lib/domain/index.d.ts +4 -2
  72. package/dist/lib/domain/index.d.ts.map +1 -1
  73. package/dist/lib/domain/index.js +5 -2
  74. package/dist/lib/domain/index.js.map +1 -1
  75. package/dist/lib/domain/interfaces/ILabelInference.d.ts +62 -0
  76. package/dist/lib/domain/interfaces/ILabelInference.d.ts.map +1 -0
  77. package/dist/lib/domain/interfaces/ILabelInference.js +11 -0
  78. package/dist/lib/domain/interfaces/ILabelInference.js.map +1 -0
  79. package/dist/lib/domain/interfaces/ILisaServices.d.ts +6 -0
  80. package/dist/lib/domain/interfaces/ILisaServices.d.ts.map +1 -1
  81. package/dist/lib/domain/interfaces/IMcpClient.d.ts +15 -2
  82. package/dist/lib/domain/interfaces/IMcpClient.d.ts.map +1 -1
  83. package/dist/lib/domain/interfaces/ISessionCaptureService.d.ts +2 -1
  84. package/dist/lib/domain/interfaces/ISessionCaptureService.d.ts.map +1 -1
  85. package/dist/lib/domain/interfaces/IStructuredLog.d.ts +162 -0
  86. package/dist/lib/domain/interfaces/IStructuredLog.d.ts.map +1 -0
  87. package/dist/lib/domain/interfaces/IStructuredLog.js +85 -0
  88. package/dist/lib/domain/interfaces/IStructuredLog.js.map +1 -0
  89. package/dist/lib/domain/interfaces/index.d.ts +2 -0
  90. package/dist/lib/domain/interfaces/index.d.ts.map +1 -1
  91. package/dist/lib/domain/interfaces/index.js +6 -0
  92. package/dist/lib/domain/interfaces/index.js.map +1 -1
  93. package/dist/lib/domain/interfaces/types/ITask.d.ts +16 -0
  94. package/dist/lib/domain/interfaces/types/ITask.d.ts.map +1 -1
  95. package/dist/lib/domain/interfaces/types/ITask.js.map +1 -1
  96. package/dist/lib/domain/utils/cancellation.d.ts +111 -0
  97. package/dist/lib/domain/utils/cancellation.d.ts.map +1 -0
  98. package/dist/lib/domain/utils/cancellation.js +168 -0
  99. package/dist/lib/domain/utils/cancellation.js.map +1 -0
  100. package/dist/lib/domain/utils/index.d.ts +8 -0
  101. package/dist/lib/domain/utils/index.d.ts.map +1 -0
  102. package/dist/lib/domain/utils/index.js +16 -0
  103. package/dist/lib/domain/utils/index.js.map +1 -0
  104. package/dist/lib/infrastructure/adapters/claude/session-start.d.ts +1 -1
  105. package/dist/lib/infrastructure/adapters/claude/session-start.js +9 -11
  106. package/dist/lib/infrastructure/adapters/claude/session-start.js.map +1 -1
  107. package/dist/lib/infrastructure/adapters/claude/session-stop.d.ts +1 -5
  108. package/dist/lib/infrastructure/adapters/claude/session-stop.d.ts.map +1 -1
  109. package/dist/lib/infrastructure/adapters/claude/session-stop.js +12 -15
  110. package/dist/lib/infrastructure/adapters/claude/session-stop.js.map +1 -1
  111. package/dist/lib/infrastructure/adapters/claude/user-prompt-submit.d.ts +1 -1
  112. package/dist/lib/infrastructure/adapters/claude/user-prompt-submit.js +9 -11
  113. package/dist/lib/infrastructure/adapters/claude/user-prompt-submit.js.map +1 -1
  114. package/dist/lib/infrastructure/adapters/opencode/plugin.d.ts +2 -2
  115. package/dist/lib/infrastructure/adapters/opencode/plugin.d.ts.map +1 -1
  116. package/dist/lib/infrastructure/adapters/opencode/plugin.js +16 -21
  117. package/dist/lib/infrastructure/adapters/opencode/plugin.js.map +1 -1
  118. package/dist/lib/infrastructure/cli/index.d.ts +8 -0
  119. package/dist/lib/infrastructure/cli/index.d.ts.map +1 -0
  120. package/dist/lib/infrastructure/cli/index.js +15 -0
  121. package/dist/lib/infrastructure/cli/index.js.map +1 -0
  122. package/dist/lib/infrastructure/cli/io.d.ts +91 -0
  123. package/dist/lib/infrastructure/cli/io.d.ts.map +1 -0
  124. package/dist/lib/infrastructure/cli/io.js +128 -0
  125. package/dist/lib/infrastructure/cli/io.js.map +1 -0
  126. package/dist/lib/infrastructure/dal/connections/McpConnectionManager.js +1 -1
  127. package/dist/lib/infrastructure/dal/connections/McpConnectionManager.js.map +1 -1
  128. package/dist/lib/infrastructure/dal/repositories/mcp/McpTaskRepository.d.ts.map +1 -1
  129. package/dist/lib/infrastructure/dal/repositories/mcp/McpTaskRepository.js +6 -2
  130. package/dist/lib/infrastructure/dal/repositories/mcp/McpTaskRepository.js.map +1 -1
  131. package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.d.ts +5 -2
  132. package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.d.ts.map +1 -1
  133. package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.js +78 -45
  134. package/dist/lib/infrastructure/dal/repositories/neo4j/Neo4jTaskRepository.js.map +1 -1
  135. package/dist/lib/infrastructure/dal/repositories/zep/ZepTaskRepository.d.ts.map +1 -1
  136. package/dist/lib/infrastructure/dal/repositories/zep/ZepTaskRepository.js +6 -2
  137. package/dist/lib/infrastructure/dal/repositories/zep/ZepTaskRepository.js.map +1 -1
  138. package/dist/lib/infrastructure/di/Container.d.ts +72 -0
  139. package/dist/lib/infrastructure/di/Container.d.ts.map +1 -0
  140. package/dist/lib/infrastructure/di/Container.js +182 -0
  141. package/dist/lib/infrastructure/di/Container.js.map +1 -0
  142. package/dist/lib/infrastructure/di/IContainer.d.ts +87 -0
  143. package/dist/lib/infrastructure/di/IContainer.d.ts.map +1 -0
  144. package/dist/lib/infrastructure/di/IContainer.js +11 -0
  145. package/dist/lib/infrastructure/di/IContainer.js.map +1 -0
  146. package/dist/lib/infrastructure/di/ServiceFactory.d.ts +6 -0
  147. package/dist/lib/infrastructure/di/ServiceFactory.d.ts.map +1 -1
  148. package/dist/lib/infrastructure/di/ServiceFactory.js +66 -0
  149. package/dist/lib/infrastructure/di/ServiceFactory.js.map +1 -1
  150. package/dist/lib/infrastructure/di/bootstrap.d.ts +43 -0
  151. package/dist/lib/infrastructure/di/bootstrap.d.ts.map +1 -0
  152. package/dist/lib/infrastructure/di/bootstrap.js +272 -0
  153. package/dist/lib/infrastructure/di/bootstrap.js.map +1 -0
  154. package/dist/lib/infrastructure/di/index.d.ts +6 -0
  155. package/dist/lib/infrastructure/di/index.d.ts.map +1 -1
  156. package/dist/lib/infrastructure/di/index.js +15 -1
  157. package/dist/lib/infrastructure/di/index.js.map +1 -1
  158. package/dist/lib/infrastructure/di/tokens.d.ts +70 -0
  159. package/dist/lib/infrastructure/di/tokens.d.ts.map +1 -0
  160. package/dist/lib/infrastructure/di/tokens.js +58 -0
  161. package/dist/lib/infrastructure/di/tokens.js.map +1 -0
  162. package/dist/lib/infrastructure/index.d.ts +1 -0
  163. package/dist/lib/infrastructure/index.d.ts.map +1 -1
  164. package/dist/lib/infrastructure/index.js +2 -0
  165. package/dist/lib/infrastructure/index.js.map +1 -1
  166. package/dist/lib/infrastructure/logging/Logger.d.ts +51 -4
  167. package/dist/lib/infrastructure/logging/Logger.d.ts.map +1 -1
  168. package/dist/lib/infrastructure/logging/Logger.js +127 -2
  169. package/dist/lib/infrastructure/logging/Logger.js.map +1 -1
  170. package/dist/lib/infrastructure/mcp/McpClient.d.ts +36 -1
  171. package/dist/lib/infrastructure/mcp/McpClient.d.ts.map +1 -1
  172. package/dist/lib/infrastructure/mcp/McpClient.js +68 -2
  173. package/dist/lib/infrastructure/mcp/McpClient.js.map +1 -1
  174. package/dist/lib/infrastructure/services/LabelInferenceService.d.ts +33 -0
  175. package/dist/lib/infrastructure/services/LabelInferenceService.d.ts.map +1 -0
  176. package/dist/lib/infrastructure/services/LabelInferenceService.js +225 -0
  177. package/dist/lib/infrastructure/services/LabelInferenceService.js.map +1 -0
  178. package/dist/lib/infrastructure/services/MemoryService.d.ts +18 -1
  179. package/dist/lib/infrastructure/services/MemoryService.d.ts.map +1 -1
  180. package/dist/lib/infrastructure/services/MemoryService.js +117 -52
  181. package/dist/lib/infrastructure/services/MemoryService.js.map +1 -1
  182. package/dist/lib/infrastructure/services/SessionCaptureService.d.ts +74 -20
  183. package/dist/lib/infrastructure/services/SessionCaptureService.d.ts.map +1 -1
  184. package/dist/lib/infrastructure/services/SessionCaptureService.js +331 -22
  185. package/dist/lib/infrastructure/services/SessionCaptureService.js.map +1 -1
  186. package/dist/lib/infrastructure/services/index.d.ts +1 -0
  187. package/dist/lib/infrastructure/services/index.d.ts.map +1 -1
  188. package/dist/lib/infrastructure/services/index.js +4 -1
  189. package/dist/lib/infrastructure/services/index.js.map +1 -1
  190. package/dist/lib/infrastructure/utils/index.d.ts +10 -0
  191. package/dist/lib/infrastructure/utils/index.d.ts.map +1 -0
  192. package/dist/lib/infrastructure/utils/index.js +26 -0
  193. package/dist/lib/infrastructure/utils/index.js.map +1 -0
  194. package/dist/lib/skills/github/github.d.ts +27 -0
  195. package/dist/lib/skills/github/github.d.ts.map +1 -0
  196. package/dist/lib/skills/github/github.js +408 -0
  197. package/dist/lib/skills/github/github.js.map +1 -0
  198. package/dist/lib/skills/shared/clients/GhCliClient.d.ts +17 -0
  199. package/dist/lib/skills/shared/clients/GhCliClient.d.ts.map +1 -0
  200. package/dist/lib/skills/shared/clients/GhCliClient.js +244 -0
  201. package/dist/lib/skills/shared/clients/GhCliClient.js.map +1 -0
  202. package/dist/lib/skills/shared/clients/McpClient.d.ts +12 -0
  203. package/dist/lib/skills/shared/clients/McpClient.d.ts.map +1 -1
  204. package/dist/lib/skills/shared/clients/McpClient.js +121 -76
  205. package/dist/lib/skills/shared/clients/McpClient.js.map +1 -1
  206. package/dist/lib/skills/shared/clients/index.d.ts +1 -0
  207. package/dist/lib/skills/shared/clients/index.d.ts.map +1 -1
  208. package/dist/lib/skills/shared/clients/index.js +4 -1
  209. package/dist/lib/skills/shared/clients/index.js.map +1 -1
  210. package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.d.ts +56 -0
  211. package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.d.ts.map +1 -0
  212. package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.js +7 -0
  213. package/dist/lib/skills/shared/clients/interfaces/IGhCliClient.js.map +1 -0
  214. package/dist/lib/skills/shared/clients/interfaces/IZepClient.d.ts +7 -1
  215. package/dist/lib/skills/shared/clients/interfaces/IZepClient.d.ts.map +1 -1
  216. package/dist/lib/skills/shared/clients/interfaces/index.d.ts +1 -0
  217. package/dist/lib/skills/shared/clients/interfaces/index.d.ts.map +1 -1
  218. package/dist/lib/skills/shared/clients/interfaces/index.js +1 -0
  219. package/dist/lib/skills/shared/clients/interfaces/index.js.map +1 -1
  220. package/dist/lib/skills/shared/services/GitHubService.d.ts +169 -0
  221. package/dist/lib/skills/shared/services/GitHubService.d.ts.map +1 -0
  222. package/dist/lib/skills/shared/services/GitHubService.js +493 -0
  223. package/dist/lib/skills/shared/services/GitHubService.js.map +1 -0
  224. package/dist/lib/skills/shared/services/GitHubSyncService.d.ts +124 -0
  225. package/dist/lib/skills/shared/services/GitHubSyncService.d.ts.map +1 -0
  226. package/dist/lib/skills/shared/services/GitHubSyncService.js +412 -0
  227. package/dist/lib/skills/shared/services/GitHubSyncService.js.map +1 -0
  228. package/dist/lib/skills/shared/services/TaskCliService.d.ts +4 -2
  229. package/dist/lib/skills/shared/services/TaskCliService.d.ts.map +1 -1
  230. package/dist/lib/skills/shared/services/TaskCliService.js +90 -6
  231. package/dist/lib/skills/shared/services/TaskCliService.js.map +1 -1
  232. package/dist/lib/skills/shared/services/TaskService.d.ts.map +1 -1
  233. package/dist/lib/skills/shared/services/TaskService.js +199 -21
  234. package/dist/lib/skills/shared/services/TaskService.js.map +1 -1
  235. package/dist/lib/skills/shared/services/index.d.ts +2 -0
  236. package/dist/lib/skills/shared/services/index.d.ts.map +1 -1
  237. package/dist/lib/skills/shared/services/index.js +7 -1
  238. package/dist/lib/skills/shared/services/index.js.map +1 -1
  239. package/dist/lib/skills/shared/services/interfaces/ITaskService.d.ts +56 -1
  240. package/dist/lib/skills/shared/services/interfaces/ITaskService.d.ts.map +1 -1
  241. package/dist/lib/skills/shared/utils/index.d.ts +1 -0
  242. package/dist/lib/skills/shared/utils/index.d.ts.map +1 -1
  243. package/dist/lib/skills/shared/utils/index.js +9 -1
  244. package/dist/lib/skills/shared/utils/index.js.map +1 -1
  245. package/dist/lib/skills/shared/utils/issue-refs.d.ts +127 -0
  246. package/dist/lib/skills/shared/utils/issue-refs.d.ts.map +1 -0
  247. package/dist/lib/skills/shared/utils/issue-refs.js +179 -0
  248. package/dist/lib/skills/shared/utils/issue-refs.js.map +1 -0
  249. package/dist/lib/skills/tasks/tasks.d.ts +5 -2
  250. package/dist/lib/skills/tasks/tasks.d.ts.map +1 -1
  251. package/dist/lib/skills/tasks/tasks.js +8 -3
  252. package/dist/lib/skills/tasks/tasks.js.map +1 -1
  253. package/dist/opencode/lisa.js +5886 -1310
  254. package/dist/package.json +1 -1
  255. package/dist/project/.lisa/skills/github/SKILL.md +415 -0
  256. package/dist/project/.lisa/skills/lisa/SKILL.md +22 -0
  257. package/dist/project/.lisa/skills/memory/SKILL.md +3 -2
  258. package/package.json +6 -5
  259. package/dist/hooks/session-start.js +0 -5763
  260. package/dist/hooks/session-stop.js +0 -5348
  261. package/dist/hooks/user-prompt-submit.js +0 -5406
  262. package/dist/project/.claude/config.js +0 -40
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * DI Container Tokens.
4
+ *
5
+ * Symbols used to register and resolve services from the container.
6
+ * Grouped by layer (infrastructure, domain, application).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TOKENS = exports.CONFIG_TOKENS = exports.APP_TOKENS = exports.INFRA_TOKENS = void 0;
10
+ /**
11
+ * Infrastructure layer tokens.
12
+ */
13
+ exports.INFRA_TOKENS = {
14
+ // Core
15
+ Logger: Symbol.for('Lisa.Logger'),
16
+ McpClient: Symbol.for('Lisa.McpClient'),
17
+ // Context
18
+ Context: Symbol.for('Lisa.Context'),
19
+ // DAL
20
+ RepositoryRouter: Symbol.for('Lisa.RepositoryRouter'),
21
+ ConnectionManagers: Symbol.for('Lisa.ConnectionManagers'),
22
+ // Services
23
+ MemoryService: Symbol.for('Lisa.MemoryService'),
24
+ TaskService: Symbol.for('Lisa.TaskService'),
25
+ EventEmitter: Symbol.for('Lisa.EventEmitter'),
26
+ SessionCaptureService: Symbol.for('Lisa.SessionCaptureService'),
27
+ RecursionService: Symbol.for('Lisa.RecursionService'),
28
+ GitHubSyncService: Symbol.for('Lisa.GitHubSyncService'),
29
+ };
30
+ /**
31
+ * Application layer tokens.
32
+ */
33
+ exports.APP_TOKENS = {
34
+ // Mediator
35
+ Mediator: Symbol.for('Lisa.Mediator'),
36
+ // Handlers
37
+ SessionStartHandler: Symbol.for('Lisa.SessionStartHandler'),
38
+ SessionStopHandler: Symbol.for('Lisa.SessionStopHandler'),
39
+ PromptSubmitHandler: Symbol.for('Lisa.PromptSubmitHandler'),
40
+ };
41
+ /**
42
+ * Configuration tokens.
43
+ */
44
+ exports.CONFIG_TOKENS = {
45
+ ServiceConfig: Symbol.for('Lisa.ServiceConfig'),
46
+ ProjectRoot: Symbol.for('Lisa.ProjectRoot'),
47
+ McpEndpoint: Symbol.for('Lisa.McpEndpoint'),
48
+ ApiKey: Symbol.for('Lisa.ApiKey'),
49
+ };
50
+ /**
51
+ * All tokens combined for convenience.
52
+ */
53
+ exports.TOKENS = {
54
+ ...exports.INFRA_TOKENS,
55
+ ...exports.APP_TOKENS,
56
+ ...exports.CONFIG_TOKENS,
57
+ };
58
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/lib/infrastructure/di/tokens.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,OAAO;IACP,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAEvC,UAAU;IACV,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAEnC,MAAM;IACN,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACrD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAEzD,WAAW;IACX,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC7C,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAC/D,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACrD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC;CAC/C,CAAC;AAEX;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAErC,WAAW;IACX,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC3D,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACzD,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;CACnD,CAAC;AAEX;;GAEG;AACU,QAAA,aAAa,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;CACzB,CAAC;AAEX;;GAEG;AACU,QAAA,MAAM,GAAG;IACpB,GAAG,oBAAY;IACf,GAAG,kBAAU;IACb,GAAG,qBAAa;CACR,CAAC"}
@@ -14,4 +14,5 @@ export * from './services';
14
14
  export * from './di';
15
15
  export * from './dal';
16
16
  export * from './logging';
17
+ export * from './utils';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,WAAW,CAAC;AAG1B,cAAc,OAAO,CAAC;AAGtB,cAAc,YAAY,CAAC;AAG3B,cAAc,MAAM,CAAC;AAGrB,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,WAAW,CAAC;AAG1B,cAAc,OAAO,CAAC;AAGtB,cAAc,YAAY,CAAC;AAG3B,cAAc,MAAM,CAAC;AAGrB,cAAc,OAAO,CAAC;AAGtB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC"}
@@ -36,6 +36,8 @@ __exportStar(require("./di"), exports);
36
36
  __exportStar(require("./dal"), exports);
37
37
  // Logging infrastructure
38
38
  __exportStar(require("./logging"), exports);
39
+ // Utilities (cancellation, etc.)
40
+ __exportStar(require("./utils"), exports);
39
41
  // Note: CLI adapters (./adapters/claude/, ./adapters/opencode/)
40
42
  // are entry points, not exported from here.
41
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/infrastructure/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;AAEH,oBAAoB;AACpB,4CAA0B;AAE1B,aAAa;AACb,wCAAsB;AAEtB,0BAA0B;AAC1B,6CAA2B;AAE3B,uBAAuB;AACvB,uCAAqB;AAErB,oDAAoD;AACpD,wCAAsB;AAEtB,yBAAyB;AACzB,4CAA0B;AAE1B,gEAAgE;AAChE,4CAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/infrastructure/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;AAEH,oBAAoB;AACpB,4CAA0B;AAE1B,aAAa;AACb,wCAAsB;AAEtB,0BAA0B;AAC1B,6CAA2B;AAE3B,uBAAuB;AACvB,uCAAqB;AAErB,oDAAoD;AACpD,wCAAsB;AAEtB,yBAAyB;AACzB,4CAA0B;AAE1B,iCAAiC;AACjC,0CAAwB;AAExB,gEAAgE;AAChE,4CAA4C"}
@@ -1,4 +1,4 @@
1
- import type { ILogger, ILoggerOptions, LogLevel } from '../../domain/interfaces';
1
+ import type { ILogger, ILoggerOptions, LogLevel, IStructuredLog, IStructuredLogger, ILogContext, LogEvent } from '../../domain/interfaces';
2
2
  /**
3
3
  * Default logger configuration.
4
4
  */
@@ -6,14 +6,16 @@ export declare const DEFAULT_LOGGER_OPTIONS: ILoggerOptions;
6
6
  /**
7
7
  * Simple file-based logger implementation.
8
8
  * Writes single-line formatted logs with optional colorized console output.
9
+ * Also implements IStructuredLogger for standardized event logging.
9
10
  */
10
- export declare class Logger implements ILogger {
11
+ export declare class Logger implements ILogger, IStructuredLogger {
11
12
  private readonly options;
12
13
  private readonly getCorrelationId;
13
14
  private readonly logFile;
14
15
  private readonly bindings;
16
+ private readonly boundContext;
15
17
  constructor(options: ILoggerOptions, _pinoInstance?: unknown, // Kept for API compatibility
16
- getCorrelationId?: () => string | undefined, bindings?: Record<string, unknown>);
18
+ getCorrelationId?: () => string | undefined, bindings?: Record<string, unknown>, boundContext?: ILogContext);
17
19
  /**
18
20
  * Ensure log directory exists.
19
21
  */
@@ -37,12 +39,48 @@ export declare class Logger implements ILogger {
37
39
  error(message: string, context?: Record<string, unknown>): void;
38
40
  fatal(message: string, context?: Record<string, unknown>): void;
39
41
  child(bindings: Record<string, unknown>): ILogger;
42
+ /**
43
+ * Format a structured log entry into message and context.
44
+ *
45
+ * Note: log.data is flattened into the context object intentionally for better
46
+ * compatibility with log aggregation tools (Elasticsearch, Datadog, etc.) that
47
+ * prefer flat structures. Callers should avoid using keys in log.data that
48
+ * conflict with reserved context fields (event, sessionId, groupId, etc.).
49
+ */
50
+ private formatStructuredLog;
51
+ /**
52
+ * Log a structured event at info level.
53
+ */
54
+ logEvent(log: IStructuredLog): void;
55
+ /**
56
+ * Log a structured event at debug level.
57
+ */
58
+ logEventDebug(log: IStructuredLog): void;
59
+ /**
60
+ * Log a structured event at warn level.
61
+ */
62
+ logEventWarn(log: IStructuredLog): void;
63
+ /**
64
+ * Log a structured event at error level.
65
+ */
66
+ logEventError(log: IStructuredLog): void;
67
+ /**
68
+ * Create a child logger with bound context.
69
+ */
70
+ withContext(context: ILogContext): IStructuredLogger;
71
+ /**
72
+ * Start a timed operation and return a function to complete it.
73
+ */
74
+ startOperation(event: LogEvent | string, context?: ILogContext): (result?: {
75
+ data?: Record<string, unknown>;
76
+ error?: string;
77
+ }) => void;
40
78
  isLevelEnabled(level: LogLevel): boolean;
41
79
  }
42
80
  /**
43
81
  * No-op logger for testing or when logging is disabled.
44
82
  */
45
- export declare class NullLogger implements ILogger {
83
+ export declare class NullLogger implements ILogger, IStructuredLogger {
46
84
  trace(_message: string, _context?: Record<string, unknown>): void;
47
85
  debug(_message: string, _context?: Record<string, unknown>): void;
48
86
  info(_message: string, _context?: Record<string, unknown>): void;
@@ -51,5 +89,14 @@ export declare class NullLogger implements ILogger {
51
89
  fatal(_message: string, _context?: Record<string, unknown>): void;
52
90
  child(_bindings: Record<string, unknown>): ILogger;
53
91
  isLevelEnabled(_level: LogLevel): boolean;
92
+ logEvent(_log: IStructuredLog): void;
93
+ logEventDebug(_log: IStructuredLog): void;
94
+ logEventWarn(_log: IStructuredLog): void;
95
+ logEventError(_log: IStructuredLog): void;
96
+ withContext(_context: ILogContext): IStructuredLogger;
97
+ startOperation(_event: LogEvent | string, _context?: ILogContext): (result?: {
98
+ data?: Record<string, unknown>;
99
+ error?: string;
100
+ }) => void;
54
101
  }
55
102
  //# sourceMappingURL=Logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/logging/Logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAC;AA4DF;;;GAGG;AACH,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;gBAGjD,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,OAAO,EAAE,6BAA6B;IACtD,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,EAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYpC;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA6BhB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IASjD,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;CAGzC;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,OAAO;IACxC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIhE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIhE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAIlD,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAG1C"}
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/logging/Logger.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NullLogger = exports.Logger = exports.DEFAULT_LOGGER_OPTIONS = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
+ const interfaces_1 = require("../../domain/interfaces");
9
10
  /**
10
11
  * Default logger configuration.
11
12
  */
@@ -72,13 +73,15 @@ function getDateString() {
72
73
  /**
73
74
  * Simple file-based logger implementation.
74
75
  * Writes single-line formatted logs with optional colorized console output.
76
+ * Also implements IStructuredLogger for standardized event logging.
75
77
  */
76
78
  class Logger {
77
79
  constructor(options, _pinoInstance, // Kept for API compatibility
78
- getCorrelationId, bindings) {
80
+ getCorrelationId, bindings, boundContext) {
79
81
  this.options = options;
80
82
  this.getCorrelationId = getCorrelationId ?? (() => undefined);
81
83
  this.bindings = bindings ?? {};
84
+ this.boundContext = boundContext ?? {};
82
85
  // Ensure log directory exists
83
86
  const logDir = path_1.default.resolve(options.logDir);
84
87
  this.ensureLogDir(logDir);
@@ -160,7 +163,108 @@ class Logger {
160
163
  this.writeLog('fatal', 'FATAL', message, context);
161
164
  }
162
165
  child(bindings) {
163
- return new Logger(this.options, undefined, this.getCorrelationId, { ...this.bindings, ...bindings });
166
+ return new Logger(this.options, undefined, this.getCorrelationId, { ...this.bindings, ...bindings }, this.boundContext);
167
+ }
168
+ // ============================================================================
169
+ // IStructuredLogger Implementation
170
+ // ============================================================================
171
+ /**
172
+ * Format a structured log entry into message and context.
173
+ *
174
+ * Note: log.data is flattened into the context object intentionally for better
175
+ * compatibility with log aggregation tools (Elasticsearch, Datadog, etc.) that
176
+ * prefer flat structures. Callers should avoid using keys in log.data that
177
+ * conflict with reserved context fields (event, sessionId, groupId, etc.).
178
+ */
179
+ formatStructuredLog(log) {
180
+ const context = {
181
+ event: log.event,
182
+ ...this.boundContext,
183
+ ...log.context,
184
+ };
185
+ // Flatten data into context for log aggregation compatibility
186
+ if (log.data) {
187
+ Object.assign(context, log.data);
188
+ }
189
+ if (log.durationMs !== undefined) {
190
+ context.durationMs = log.durationMs;
191
+ }
192
+ if (log.error) {
193
+ context.error = log.error;
194
+ }
195
+ // Use event name as the message for consistency
196
+ const message = `[${log.event}]`;
197
+ return { message, context };
198
+ }
199
+ /**
200
+ * Log a structured event at info level.
201
+ */
202
+ logEvent(log) {
203
+ const { message, context } = this.formatStructuredLog(log);
204
+ this.info(message, context);
205
+ }
206
+ /**
207
+ * Log a structured event at debug level.
208
+ */
209
+ logEventDebug(log) {
210
+ const { message, context } = this.formatStructuredLog(log);
211
+ this.debug(message, context);
212
+ }
213
+ /**
214
+ * Log a structured event at warn level.
215
+ */
216
+ logEventWarn(log) {
217
+ const { message, context } = this.formatStructuredLog(log);
218
+ this.warn(message, context);
219
+ }
220
+ /**
221
+ * Log a structured event at error level.
222
+ */
223
+ logEventError(log) {
224
+ const { message, context } = this.formatStructuredLog(log);
225
+ this.error(message, context);
226
+ }
227
+ /**
228
+ * Create a child logger with bound context.
229
+ */
230
+ withContext(context) {
231
+ return new Logger(this.options, undefined, this.getCorrelationId, this.bindings, { ...this.boundContext, ...context });
232
+ }
233
+ /**
234
+ * Start a timed operation and return a function to complete it.
235
+ */
236
+ startOperation(event, context) {
237
+ const startTime = Date.now();
238
+ const mergedContext = { ...this.boundContext, ...context };
239
+ // Log the start event at debug level
240
+ this.logEventDebug({
241
+ event,
242
+ context: mergedContext,
243
+ });
244
+ // Return a function to complete the operation
245
+ return (result) => {
246
+ const durationMs = Date.now() - startTime;
247
+ const completeEvent = result?.error
248
+ ? (0, interfaces_1.deriveErrorEvent)(event)
249
+ : (0, interfaces_1.deriveCompleteEvent)(event);
250
+ if (result?.error) {
251
+ this.logEventError({
252
+ event: completeEvent,
253
+ context: mergedContext,
254
+ data: result?.data,
255
+ durationMs,
256
+ error: result.error,
257
+ });
258
+ }
259
+ else {
260
+ this.logEvent({
261
+ event: completeEvent,
262
+ context: mergedContext,
263
+ data: result?.data,
264
+ durationMs,
265
+ });
266
+ }
267
+ };
164
268
  }
165
269
  isLevelEnabled(level) {
166
270
  return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[this.options.level];
@@ -195,6 +299,27 @@ class NullLogger {
195
299
  isLevelEnabled(_level) {
196
300
  return false;
197
301
  }
302
+ // IStructuredLogger no-op implementations
303
+ logEvent(_log) {
304
+ // No-op
305
+ }
306
+ logEventDebug(_log) {
307
+ // No-op
308
+ }
309
+ logEventWarn(_log) {
310
+ // No-op
311
+ }
312
+ logEventError(_log) {
313
+ // No-op
314
+ }
315
+ withContext(_context) {
316
+ return this;
317
+ }
318
+ startOperation(_event, _context) {
319
+ return () => {
320
+ // No-op
321
+ };
322
+ }
198
323
  }
199
324
  exports.NullLogger = NullLogger;
200
325
  //# sourceMappingURL=Logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../../src/lib/infrastructure/logging/Logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../../src/lib/infrastructure/logging/Logger.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,21 @@ import type { IMcpClient } from '../../domain/interfaces';
2
2
  /**
3
3
  * MCP Client implementation.
4
4
  * Communicates with Graphiti MCP server or Zep Cloud.
5
+ *
6
+ * Session Management:
7
+ * This client manages MCP sessions internally. It:
8
+ * - Automatically initializes a session on first call
9
+ * - Updates session ID when server returns a new one in response headers
10
+ * - Re-initializes session if a request fails with 401/403 (expired session)
11
+ * - Thread-safe for concurrent requests (all share the same session)
12
+ *
13
+ * Callers should NOT track session IDs manually - the client handles this.
5
14
  */
6
15
  export declare class McpClient implements IMcpClient {
7
16
  private readonly endpoint;
8
17
  private readonly apiKey?;
9
18
  private sessionId;
19
+ private initializePromise;
10
20
  constructor(endpoint: string, apiKey?: string | undefined);
11
21
  /**
12
22
  * Get headers for MCP requests.
@@ -18,12 +28,37 @@ export declare class McpClient implements IMcpClient {
18
28
  private extractEventStreamData;
19
29
  /**
20
30
  * Initialize the MCP session.
31
+ * Uses a promise cache to prevent concurrent initialization requests.
21
32
  */
22
33
  initialize(timeoutMs?: number): Promise<string>;
34
+ /**
35
+ * Internal initialization logic.
36
+ */
37
+ private doInitialize;
38
+ /**
39
+ * Force re-initialization of the session.
40
+ * Called when a request fails with session-related errors.
41
+ */
42
+ private reinitialize;
23
43
  /**
24
44
  * Make an RPC call to the MCP server.
45
+ *
46
+ * Session management is handled internally:
47
+ * - Session is initialized automatically on first call
48
+ * - Session ID from response headers updates the internal state
49
+ * - On 401/403, session is re-initialized and request retried once
50
+ *
51
+ * @param method - Method name
52
+ * @param params - Method parameters
53
+ * @param _sessionId - DEPRECATED: Ignored. Session managed internally.
54
+ * @param timeoutMs - Timeout in milliseconds
55
+ */
56
+ call<T = unknown>(method: string, params?: Record<string, unknown>, _sessionId?: string | null, // Ignored - session managed internally
57
+ timeoutMs?: number): Promise<[T, string]>;
58
+ /**
59
+ * Internal call implementation with retry logic for session expiry.
25
60
  */
26
- call<T = unknown>(method: string, params?: Record<string, unknown>, sessionId?: string | null, timeoutMs?: number): Promise<[T, string]>;
61
+ private doCall;
27
62
  /**
28
63
  * Check if the MCP server is reachable.
29
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"McpClient.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/mcp/McpClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA8B1D;;;GAGG;AACH,qBAAa,SAAU,YAAW,UAAU;IAIxC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAJ1B,OAAO,CAAC,SAAS,CAAuB;gBAGrB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGlC;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACG,UAAU,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzE;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAsDvB;;OAEG;IACG,IAAI,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IASpE;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;CAG9B"}
1
+ {"version":3,"file":"McpClient.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/mcp/McpClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA8B1D;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAU,YAAW,UAAU;IAKxC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAL1B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,iBAAiB,CAAgC;gBAGtC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGlC;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;OAGG;IACG,UAAU,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBzE;;OAEG;YACW,YAAY;IA4B1B;;;OAGG;YACW,YAAY;IAM1B;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,UAAU,GAAE,MAAM,GAAG,IAAW,EAAE,uCAAuC;IACzE,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAIvB;;OAEG;YACW,MAAM;IAmEpB;;OAEG;IACG,IAAI,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IASpE;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;CAG9B"}
@@ -18,12 +18,22 @@ const DEFAULT_TIMEOUT_MS = 8000;
18
18
  /**
19
19
  * MCP Client implementation.
20
20
  * Communicates with Graphiti MCP server or Zep Cloud.
21
+ *
22
+ * Session Management:
23
+ * This client manages MCP sessions internally. It:
24
+ * - Automatically initializes a session on first call
25
+ * - Updates session ID when server returns a new one in response headers
26
+ * - Re-initializes session if a request fails with 401/403 (expired session)
27
+ * - Thread-safe for concurrent requests (all share the same session)
28
+ *
29
+ * Callers should NOT track session IDs manually - the client handles this.
21
30
  */
22
31
  class McpClient {
23
32
  constructor(endpoint, apiKey) {
24
33
  this.endpoint = endpoint;
25
34
  this.apiKey = apiKey;
26
35
  this.sessionId = null;
36
+ this.initializePromise = null;
27
37
  }
28
38
  /**
29
39
  * Get headers for MCP requests.
@@ -59,8 +69,31 @@ class McpClient {
59
69
  }
60
70
  /**
61
71
  * Initialize the MCP session.
72
+ * Uses a promise cache to prevent concurrent initialization requests.
62
73
  */
63
74
  async initialize(timeoutMs = DEFAULT_TIMEOUT_MS) {
75
+ // If already initializing, return the pending promise
76
+ if (this.initializePromise) {
77
+ return this.initializePromise;
78
+ }
79
+ // If already have a session, return it
80
+ if (this.sessionId) {
81
+ return this.sessionId;
82
+ }
83
+ // Start initialization
84
+ this.initializePromise = this.doInitialize(timeoutMs);
85
+ try {
86
+ const sessionId = await this.initializePromise;
87
+ return sessionId;
88
+ }
89
+ finally {
90
+ this.initializePromise = null;
91
+ }
92
+ }
93
+ /**
94
+ * Internal initialization logic.
95
+ */
96
+ async doInitialize(timeoutMs) {
64
97
  const body = {
65
98
  jsonrpc: '2.0',
66
99
  id: 'init',
@@ -84,11 +117,38 @@ class McpClient {
84
117
  this.sessionId = session;
85
118
  return this.sessionId;
86
119
  }
120
+ /**
121
+ * Force re-initialization of the session.
122
+ * Called when a request fails with session-related errors.
123
+ */
124
+ async reinitialize(timeoutMs) {
125
+ this.sessionId = null;
126
+ this.initializePromise = null;
127
+ return this.initialize(timeoutMs);
128
+ }
87
129
  /**
88
130
  * Make an RPC call to the MCP server.
131
+ *
132
+ * Session management is handled internally:
133
+ * - Session is initialized automatically on first call
134
+ * - Session ID from response headers updates the internal state
135
+ * - On 401/403, session is re-initialized and request retried once
136
+ *
137
+ * @param method - Method name
138
+ * @param params - Method parameters
139
+ * @param _sessionId - DEPRECATED: Ignored. Session managed internally.
140
+ * @param timeoutMs - Timeout in milliseconds
89
141
  */
90
- async call(method, params = {}, sessionId = null, timeoutMs = DEFAULT_TIMEOUT_MS) {
91
- const sid = sessionId || this.sessionId || (await this.initialize(timeoutMs));
142
+ async call(method, params = {}, _sessionId = null, // Ignored - session managed internally
143
+ timeoutMs = DEFAULT_TIMEOUT_MS) {
144
+ return this.doCall(method, params, timeoutMs, false);
145
+ }
146
+ /**
147
+ * Internal call implementation with retry logic for session expiry.
148
+ */
149
+ async doCall(method, params, timeoutMs, isRetry) {
150
+ // Always use internal session ID, never the passed one
151
+ const sid = this.sessionId || (await this.initialize(timeoutMs));
92
152
  const headers = {
93
153
  ...this.getHeaders(),
94
154
  'MCP-SESSION-ID': sid,
@@ -103,10 +163,16 @@ class McpClient {
103
163
  body: JSON.stringify(payload),
104
164
  signal: AbortSignal.timeout(timeoutMs),
105
165
  });
166
+ // Update session ID from response
106
167
  const newSid = resp.headers.get('mcp-session-id');
107
168
  if (newSid) {
108
169
  this.sessionId = newSid;
109
170
  }
171
+ // Handle session expiry - retry once with fresh session
172
+ if ((resp.status === 401 || resp.status === 403) && !isRetry) {
173
+ await this.reinitialize(timeoutMs);
174
+ return this.doCall(method, params, timeoutMs, true);
175
+ }
110
176
  const text = await resp.text();
111
177
  let data;
112
178
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"McpClient.js","sourceRoot":"","sources":["../../../../src/lib/infrastructure/mcp/McpClient.ts"],"names":[],"mappings":";;;;;;AACA,gDAA+C;AAC/C,wDAA0B;AAC1B,gDAAwB;AAExB,iCAAiC;AACjC,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACvF,MAAM,OAAO,GAAG,kBAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC9C,CAAC,CAAE,kBAAE,CAAC,YAAY,CAAC,iBAAiB,CAAyB,CAAC,OAAO;IACrE,CAAC,CAAC,OAAO,CAAC;AAEZ,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAiBhC;;;GAGG;AACH,MAAa,SAAS;IAGpB,YACmB,QAAgB,EAChB,MAAe;QADf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAS;QAJ1B,cAAS,GAAkB,IAAI,CAAC;IAKrC,CAAC;IAEJ;;OAEG;IACK,UAAU;QAChB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,qCAAqC;SAC9C,CAAC;QAEF,2CAA2C;QAC3C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,IAAY;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAgB,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,YAAoB,kBAAkB;QACrD,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,eAAe,EAAE,gBAAgB;gBACjC,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,WAAW;aACxB;SACF,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,iBAAQ,CAAC,mCAAmC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,MAAc,EACd,SAAkC,EAAE,EACpC,YAA2B,IAAI,EAC/B,YAAoB,kBAAkB;QAEtC,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAE9E,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,gBAAgB,EAAE,GAAG;SACtB,CAAC;QAEF,uCAAuC;QACvC,MAAM,OAAO,GACX,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;QAErG,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAiB,CAAC;QAEtB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,GAAG,WAAW,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtD,MAAM,IAAI,iBAAQ,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,SAAS,MAAM,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1D,MAAM,IAAI,iBAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,iBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAM,CAAC;QACpF,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,SAAmB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,YAAoB,kBAAkB;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AA3JD,8BA2JC"}
1
+ {"version":3,"file":"McpClient.js","sourceRoot":"","sources":["../../../../src/lib/infrastructure/mcp/McpClient.ts"],"names":[],"mappings":";;;;;;AACA,gDAA+C;AAC/C,wDAA0B;AAC1B,gDAAwB;AAExB,iCAAiC;AACjC,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACvF,MAAM,OAAO,GAAG,kBAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC9C,CAAC,CAAE,kBAAE,CAAC,YAAY,CAAC,iBAAiB,CAAyB,CAAC,OAAO;IACrE,CAAC,CAAC,OAAO,CAAC;AAEZ,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAiBhC;;;;;;;;;;;;GAYG;AACH,MAAa,SAAS;IAIpB,YACmB,QAAgB,EAChB,MAAe;QADf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAS;QAL1B,cAAS,GAAkB,IAAI,CAAC;QAChC,sBAAiB,GAA2B,IAAI,CAAC;IAKtD,CAAC;IAEJ;;OAEG;IACK,UAAU;QAChB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,qCAAqC;SAC9C,CAAC;QAEF,2CAA2C;QAC3C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,IAAY;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAgB,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,YAAoB,kBAAkB;QACrD,sDAAsD;QACtD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,SAAiB;QAC1C,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,eAAe,EAAE,gBAAgB;gBACjC,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,WAAW;aACxB;SACF,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,iBAAQ,CAAC,mCAAmC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,YAAY,CAAC,SAAiB;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,CACR,MAAc,EACd,SAAkC,EAAE,EACpC,aAA4B,IAAI,EAAE,uCAAuC;IACzE,YAAoB,kBAAkB;QAEtC,OAAO,IAAI,CAAC,MAAM,CAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,MAAM,CAClB,MAAc,EACd,MAA+B,EAC/B,SAAiB,EACjB,OAAgB;QAEhB,uDAAuD;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,gBAAgB,EAAE,GAAG;SACtB,CAAC;QAEF,uCAAuC;QACvC,MAAM,OAAO,GACX,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;QAErG,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAC1B,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,IAAiB,CAAC;QAEtB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,GAAG,WAAW,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtD,MAAM,IAAI,iBAAQ,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,SAAS,MAAM,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1D,MAAM,IAAI,iBAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,iBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAM,CAAC;QACpF,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,SAAmB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,YAAoB,kBAAkB;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AA9ND,8BA8NC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Label inference service implementation.
3
+ *
4
+ * Analyzes issue title and body content to suggest appropriate labels
5
+ * based on conventional commit prefixes and content patterns.
6
+ *
7
+ * @see Issue #21: Auto-label issues based on content
8
+ */
9
+ import type { ILabelInferenceService, ILabelInferenceResult, ILabelInferenceOptions, ILabelRule } from '../../domain/interfaces';
10
+ /**
11
+ * Label inference service implementation.
12
+ */
13
+ export declare class LabelInferenceService implements ILabelInferenceService {
14
+ private readonly rules;
15
+ constructor(customRules?: ILabelRule[]);
16
+ /**
17
+ * Analyze issue content and infer appropriate labels.
18
+ */
19
+ inferLabels(title: string, body: string, options?: ILabelInferenceOptions): ILabelInferenceResult;
20
+ /**
21
+ * Deduplicate matched rules, keeping the highest priority match for each label.
22
+ */
23
+ private deduplicateRules;
24
+ /**
25
+ * Calculate confidence score based on match types.
26
+ */
27
+ private calculateConfidence;
28
+ }
29
+ /**
30
+ * Create a default label inference service.
31
+ */
32
+ export declare function createLabelInferenceService(customRules?: ILabelRule[]): ILabelInferenceService;
33
+ //# sourceMappingURL=LabelInferenceService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelInferenceService.d.ts","sourceRoot":"","sources":["../../../../src/lib/infrastructure/services/LabelInferenceService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACX,MAAM,yBAAyB,CAAC;AA6FjC;;GAEG;AACH,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,WAAW,CAAC,EAAE,UAAU,EAAE;IAItC;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB;IAmFxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAgB5B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAE9F"}