@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
@@ -1,15 +1,39 @@
1
- import type { ISessionStopEvent, ILisaServices } from '../../domain';
1
+ import type { ILisaServices, ILisaContext, IMemoryService, ISessionCaptureService, IEventEmitter, ILogger, ITaskService } from '../../domain';
2
+ import type { IRequestHandler } from '../mediator';
3
+ import { SessionStopRequest } from '../mediator/requests';
4
+ import type { ISessionStopResult } from '../mediator/requests';
2
5
  /**
3
6
  * Handler for session stop events.
4
7
  * Captures session work and saves to memory.
8
+ *
9
+ * Implements IRequestHandler for use with the Mediator pattern.
5
10
  */
6
- export declare class SessionStopHandler {
7
- private readonly services;
11
+ export declare class SessionStopHandler implements IRequestHandler<SessionStopRequest, ISessionStopResult> {
12
+ private readonly context;
13
+ private readonly memory;
14
+ private readonly tasks?;
15
+ private readonly sessionCapture;
16
+ private readonly events;
17
+ private readonly logger?;
18
+ /**
19
+ * Create a new SessionStopHandler.
20
+ *
21
+ * @param services - Lisa services (legacy constructor for backward compatibility)
22
+ */
8
23
  constructor(services: ILisaServices);
9
24
  /**
10
- * Handle a session stop event.
25
+ * Create a new SessionStopHandler with individual service injection.
26
+ */
27
+ constructor(context: ILisaContext, memory: IMemoryService, sessionCapture: ISessionCaptureService, events: IEventEmitter, logger?: ILogger, tasks?: ITaskService);
28
+ /**
29
+ * Handle a session stop request.
11
30
  * Captures work from the session and saves to memory.
12
31
  */
13
- handle(event: ISessionStopEvent): Promise<void>;
32
+ handle(request: SessionStopRequest): Promise<ISessionStopResult>;
33
+ /**
34
+ * Generate suggestions based on current tasks and state.
35
+ * Suggests actions like syncing unlinked tasks to GitHub.
36
+ */
37
+ private generateSuggestions;
14
38
  }
15
39
  //# sourceMappingURL=SessionStopHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStopHandler.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/handlers/SessionStopHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGrE;;;GAGG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa;IAEpD;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBtD"}
1
+ {"version":3,"file":"SessionStopHandler.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/handlers/SessionStopHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,OAAO,EACP,YAAY,EACb,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,sBAAsB,CAAC;AAEvF;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,eAAe,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAU;IAElC;;;;OAIG;gBACS,QAAQ,EAAE,aAAa;IAEnC;;OAEG;gBAED,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,sBAAsB,EACtC,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,YAAY;IA6BtB;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuCtE;;;OAGG;YACW,mBAAmB;CA2ClC"}
@@ -5,30 +5,102 @@ const domain_1 = require("../../domain");
5
5
  /**
6
6
  * Handler for session stop events.
7
7
  * Captures session work and saves to memory.
8
+ *
9
+ * Implements IRequestHandler for use with the Mediator pattern.
8
10
  */
9
11
  class SessionStopHandler {
10
- constructor(services) {
11
- this.services = services;
12
+ constructor(contextOrServices, memory, sessionCapture, events, logger, tasks) {
13
+ if ('context' in contextOrServices && 'memory' in contextOrServices) {
14
+ const services = contextOrServices;
15
+ this.context = services.context;
16
+ this.memory = services.memory;
17
+ this.tasks = services.tasks;
18
+ this.sessionCapture = services.sessionCapture;
19
+ this.events = services.events;
20
+ this.logger = services.logger;
21
+ }
22
+ else {
23
+ this.context = contextOrServices;
24
+ this.memory = memory;
25
+ this.sessionCapture = sessionCapture;
26
+ this.events = events;
27
+ this.logger = logger;
28
+ this.tasks = tasks;
29
+ }
12
30
  }
13
31
  /**
14
- * Handle a session stop event.
32
+ * Handle a session stop request.
15
33
  * Captures work from the session and saves to memory.
16
34
  */
17
- async handle(event) {
18
- const { context, memory, sessionCapture, events } = this.services;
35
+ async handle(request) {
19
36
  // Delegate fact capture to dedicated service
20
- const captured = await sessionCapture.captureSessionWork(event.sessionId);
21
- if (captured.facts.length > 0) {
22
- // Save captured facts to memory
23
- await memory.saveMemory(context.groupId, captured.facts);
37
+ const captured = await this.sessionCapture.captureSessionWork(request.sessionId, request.transcriptPath);
38
+ // Generate suggestions based on current state
39
+ const suggestions = await this.generateSuggestions();
40
+ if (captured.facts.length === 0) {
41
+ return {
42
+ message: 'No significant work to capture.',
43
+ factsCaptured: 0,
44
+ skipped: true,
45
+ skipReason: 'No facts captured from session',
46
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
47
+ };
24
48
  }
49
+ // Save captured facts to memory
50
+ await this.memory.saveMemory(this.context.groupId, captured.facts);
25
51
  // Emit internal event for any listeners
26
- await events.emit({
52
+ await this.events.emit({
27
53
  type: 'memory:save',
28
54
  facts: captured.facts,
29
- groupId: context.groupId,
55
+ groupId: this.context.groupId,
30
56
  timestamp: (0, domain_1.toISOTimestamp)(),
31
57
  });
58
+ return {
59
+ message: `Captured ${captured.facts.length} fact(s) from session.`,
60
+ factsCaptured: captured.facts.length,
61
+ skipped: false,
62
+ suggestions: suggestions.length > 0 ? suggestions : undefined,
63
+ };
64
+ }
65
+ /**
66
+ * Generate suggestions based on current tasks and state.
67
+ * Suggests actions like syncing unlinked tasks to GitHub.
68
+ */
69
+ async generateSuggestions() {
70
+ const suggestions = [];
71
+ if (!this.tasks) {
72
+ return suggestions;
73
+ }
74
+ try {
75
+ // Get current tasks
76
+ const tasks = await this.tasks.getTasksSimple([this.context.groupId]);
77
+ // Count incomplete tasks without external links
78
+ const unlinkedIncompleteTasks = tasks.filter((t) => t.status !== 'done' && t.status !== 'closed' && !t.externalLink);
79
+ if (unlinkedIncompleteTasks.length > 0) {
80
+ suggestions.push({
81
+ action: 'sync-github-export',
82
+ message: `${unlinkedIncompleteTasks.length} incomplete task(s) could be tracked as GitHub issues`,
83
+ command: 'lisa github sync --export',
84
+ count: unlinkedIncompleteTasks.length,
85
+ });
86
+ }
87
+ // Count tasks with external links that might need sync
88
+ const linkedTasks = tasks.filter((t) => t.externalLink?.source === 'github');
89
+ if (linkedTasks.length > 0) {
90
+ // Suggest sync to keep status in sync
91
+ suggestions.push({
92
+ action: 'sync-github-bidirectional',
93
+ message: `${linkedTasks.length} task(s) linked to GitHub - sync to update status`,
94
+ command: 'lisa github sync',
95
+ count: linkedTasks.length,
96
+ });
97
+ }
98
+ }
99
+ catch (error) {
100
+ // Don't fail session stop if suggestions fail
101
+ this.logger?.debug?.('Failed to generate suggestions', { error });
102
+ }
103
+ return suggestions;
32
104
  }
33
105
  }
34
106
  exports.SessionStopHandler = SessionStopHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStopHandler.js","sourceRoot":"","sources":["../../../../src/lib/application/handlers/SessionStopHandler.ts"],"names":[],"mappings":";;;AACA,yCAA8C;AAE9C;;;GAGG;AACH,MAAa,kBAAkB;IAC7B,YAA6B,QAAuB;QAAvB,aAAQ,GAAR,QAAQ,CAAe;IAAG,CAAC;IAExD;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,KAAwB;QACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElE,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE1E,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,gCAAgC;YAChC,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,wCAAwC;QACxC,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAA,uBAAc,GAAE;SAC5B,CAAC,CAAC;IACL,CAAC;CACF;AA1BD,gDA0BC"}
1
+ {"version":3,"file":"SessionStopHandler.js","sourceRoot":"","sources":["../../../../src/lib/application/handlers/SessionStopHandler.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@
2
2
  * Application layer interfaces.
3
3
  */
4
4
  export { ISessionStartResult } from './ISessionStartResult';
5
+ export type { ISessionStopResult, IPromptSubmitResult } from '../mediator/requests';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/interfaces/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/interfaces/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Mediator Pattern Interfaces.
3
+ *
4
+ * The Mediator pattern provides a single entry point for all requests.
5
+ * Each request type maps to exactly one handler.
6
+ *
7
+ * This is different from events (fire-and-forget, multiple subscribers).
8
+ * Requests are "do something and return a result" (single handler, response required).
9
+ */
10
+ /**
11
+ * Marker interface for requests.
12
+ * The generic parameter TResponse indicates what the handler returns.
13
+ *
14
+ * @example
15
+ * class GetUserRequest implements IRequest<User> {
16
+ * constructor(public readonly userId: string) {}
17
+ * }
18
+ */
19
+ export interface IRequest<TResponse = void> {
20
+ /**
21
+ * Phantom type to carry the response type.
22
+ * Not used at runtime, only for type inference.
23
+ */
24
+ readonly __responseType?: TResponse;
25
+ }
26
+ /**
27
+ * Handler for a specific request type.
28
+ *
29
+ * @example
30
+ * class GetUserHandler implements IRequestHandler<GetUserRequest, User> {
31
+ * async handle(request: GetUserRequest): Promise<User> {
32
+ * return this.userRepository.findById(request.userId);
33
+ * }
34
+ * }
35
+ */
36
+ export interface IRequestHandler<TRequest extends IRequest<TResponse>, TResponse> {
37
+ /**
38
+ * Handle the request and return a response.
39
+ */
40
+ handle(request: TRequest): Promise<TResponse>;
41
+ }
42
+ /**
43
+ * Request type constructor.
44
+ * Used for registering handlers by request class.
45
+ */
46
+ export interface IRequestType<TRequest extends IRequest<TResponse>, TResponse = unknown> {
47
+ new (...args: any[]): TRequest;
48
+ }
49
+ /**
50
+ * Mediator interface.
51
+ * Routes requests to their registered handlers.
52
+ */
53
+ export interface IMediator {
54
+ /**
55
+ * Send a request to its handler and return the response.
56
+ *
57
+ * @param request - The request to handle
58
+ * @returns The handler's response
59
+ * @throws Error if no handler is registered for the request type
60
+ *
61
+ * @example
62
+ * const user = await mediator.send(new GetUserRequest('123'));
63
+ */
64
+ send<TResponse>(request: IRequest<TResponse>): Promise<TResponse>;
65
+ /**
66
+ * Register a handler for a request type.
67
+ *
68
+ * @param requestType - The request class constructor
69
+ * @param handler - The handler instance
70
+ */
71
+ register<TRequest extends IRequest<TResponse>, TResponse>(requestType: IRequestType<TRequest, TResponse>, handler: IRequestHandler<TRequest, TResponse>): void;
72
+ }
73
+ //# sourceMappingURL=IMediator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMediator.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/mediator/IMediator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ,CAAC,SAAS,GAAG,IAAI;IACxC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS;IAC9E;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,QAAQ,SAAS,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO;IAErF,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;OASG;IACH,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAElE;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,SAAS,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EACtD,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC9C,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,GAC5C,IAAI,CAAC;CACT"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Mediator Pattern Interfaces.
4
+ *
5
+ * The Mediator pattern provides a single entry point for all requests.
6
+ * Each request type maps to exactly one handler.
7
+ *
8
+ * This is different from events (fire-and-forget, multiple subscribers).
9
+ * Requests are "do something and return a result" (single handler, response required).
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=IMediator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMediator.js","sourceRoot":"","sources":["../../../../src/lib/application/mediator/IMediator.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Mediator Implementation.
3
+ *
4
+ * Routes requests to their registered handlers.
5
+ */
6
+ import type { IMediator, IRequest, IRequestHandler, IRequestType } from './IMediator';
7
+ /**
8
+ * Mediator implementation.
9
+ */
10
+ export declare class Mediator implements IMediator {
11
+ private readonly handlers;
12
+ /**
13
+ * Send a request to its handler.
14
+ */
15
+ send<TResponse>(request: IRequest<TResponse>): Promise<TResponse>;
16
+ /**
17
+ * Register a handler for a request type.
18
+ */
19
+ register<TRequest extends IRequest<TResponse>, TResponse>(requestType: IRequestType<TRequest, TResponse>, handler: IRequestHandler<TRequest, TResponse>): void;
20
+ /**
21
+ * Check if a handler is registered for a request type.
22
+ */
23
+ isRegistered<TRequest extends IRequest<TResponse>, TResponse>(requestType: IRequestType<TRequest, TResponse>): boolean;
24
+ }
25
+ /**
26
+ * Create a new Mediator instance.
27
+ */
28
+ export declare function createMediator(): IMediator;
29
+ //# sourceMappingURL=Mediator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mediator.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/mediator/Mediator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtF;;GAEG;AACH,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;IAEJ;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAYvE;;OAEG;IACH,QAAQ,CAAC,QAAQ,SAAS,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EACtD,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC9C,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,GAC5C,IAAI;IAYP;;OAEG;IACH,YAAY,CAAC,QAAQ,SAAS,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EAC1D,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,GAC7C,OAAO;CAGX;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,SAAS,CAE1C"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Mediator Implementation.
4
+ *
5
+ * Routes requests to their registered handlers.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Mediator = void 0;
9
+ exports.createMediator = createMediator;
10
+ /**
11
+ * Mediator implementation.
12
+ */
13
+ class Mediator {
14
+ constructor() {
15
+ this.handlers = new Map();
16
+ }
17
+ /**
18
+ * Send a request to its handler.
19
+ */
20
+ async send(request) {
21
+ const requestType = request.constructor;
22
+ const handler = this.handlers.get(requestType);
23
+ if (!handler) {
24
+ const name = requestType.name || 'UnknownRequest';
25
+ throw new Error(`No handler registered for request type: ${name}`);
26
+ }
27
+ return handler.handle(request);
28
+ }
29
+ /**
30
+ * Register a handler for a request type.
31
+ */
32
+ register(requestType, handler) {
33
+ if (this.handlers.has(requestType)) {
34
+ const name = requestType.name || 'UnknownRequest';
35
+ throw new Error(`Handler already registered for request type: ${name}`);
36
+ }
37
+ this.handlers.set(requestType, handler);
38
+ }
39
+ /**
40
+ * Check if a handler is registered for a request type.
41
+ */
42
+ isRegistered(requestType) {
43
+ return this.handlers.has(requestType);
44
+ }
45
+ }
46
+ exports.Mediator = Mediator;
47
+ /**
48
+ * Create a new Mediator instance.
49
+ */
50
+ function createMediator() {
51
+ return new Mediator();
52
+ }
53
+ //# sourceMappingURL=Mediator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mediator.js","sourceRoot":"","sources":["../../../../src/lib/application/mediator/Mediator.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA2DH,wCAEC;AAzDD;;GAEG;AACH,MAAa,QAAQ;IAArB;QACmB,aAAQ,GAAG,IAAI,GAAG,EAGhC,CAAC;IA2CN,CAAC;IAzCC;;OAEG;IACH,KAAK,CAAC,IAAI,CAAY,OAA4B;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAA2D,CAAC;QACxF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAgE,CAAC;QAE9G,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,gBAAgB,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,WAA8C,EAC9C,OAA6C;QAE7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAuD,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,gBAAgB,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,WAAuD,EACvD,OAAsD,CACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CACV,WAA8C;QAE9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAuD,CAAC,CAAC;IACpF,CAAC;CACF;AA/CD,4BA+CC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,IAAI,QAAQ,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mediator Pattern Implementation.
3
+ *
4
+ * Provides a single entry point for all request/response operations.
5
+ */
6
+ export type { IRequest, IRequestHandler, IRequestType, IMediator } from './IMediator';
7
+ export { Mediator, createMediator } from './Mediator';
8
+ export { SessionStartRequest, SessionStopRequest, PromptSubmitRequest, } from './requests';
9
+ export type { ISessionStopResult, IPromptSubmitResult } from './requests';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/application/mediator/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Mediator Pattern Implementation.
4
+ *
5
+ * Provides a single entry point for all request/response operations.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PromptSubmitRequest = exports.SessionStopRequest = exports.SessionStartRequest = exports.createMediator = exports.Mediator = void 0;
9
+ // Implementation
10
+ var Mediator_1 = require("./Mediator");
11
+ Object.defineProperty(exports, "Mediator", { enumerable: true, get: function () { return Mediator_1.Mediator; } });
12
+ Object.defineProperty(exports, "createMediator", { enumerable: true, get: function () { return Mediator_1.createMediator; } });
13
+ // Request types
14
+ var requests_1 = require("./requests");
15
+ Object.defineProperty(exports, "SessionStartRequest", { enumerable: true, get: function () { return requests_1.SessionStartRequest; } });
16
+ Object.defineProperty(exports, "SessionStopRequest", { enumerable: true, get: function () { return requests_1.SessionStopRequest; } });
17
+ Object.defineProperty(exports, "PromptSubmitRequest", { enumerable: true, get: function () { return requests_1.PromptSubmitRequest; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/application/mediator/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAKH,iBAAiB;AACjB,uCAAsD;AAA7C,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AAEjC,gBAAgB;AAChB,uCAIoB;AAHlB,+GAAA,mBAAmB,OAAA;AACnB,8GAAA,kBAAkB,OAAA;AAClB,+GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Prompt Submit Request.
3
+ *
4
+ * Request to process a user-submitted prompt.
5
+ */
6
+ import type { IRequest } from '../IMediator';
7
+ import type { PermissionMode, ISOTimestamp, IRecursionResult } from '../../../domain';
8
+ /**
9
+ * Result from handling a prompt submit request.
10
+ */
11
+ export interface IPromptSubmitResult {
12
+ /** The processed prompt content (may be enhanced) */
13
+ readonly content: string;
14
+ /** Whether the prompt should be blocked */
15
+ readonly blocked: boolean;
16
+ /** Reason for blocking, if applicable */
17
+ readonly blockReason?: string;
18
+ /** Whether plan mode recursion was detected */
19
+ readonly planModeRecursion: boolean;
20
+ /** Additional context to inject */
21
+ readonly additionalContext?: string;
22
+ /**
23
+ * Recursion result if in plan mode.
24
+ * @deprecated Use planModeRecursion and additionalContext instead
25
+ */
26
+ readonly recursion?: IRecursionResult;
27
+ }
28
+ /**
29
+ * Request to process a user-submitted prompt.
30
+ */
31
+ export declare class PromptSubmitRequest implements IRequest<IPromptSubmitResult> {
32
+ /** The prompt content */
33
+ readonly content: string;
34
+ /** When the prompt was submitted */
35
+ readonly timestamp: ISOTimestamp;
36
+ /** Optional session identifier */
37
+ readonly sessionId?: string | undefined;
38
+ /** Current permission mode */
39
+ readonly permissionMode?: PermissionMode | undefined;
40
+ readonly __responseType?: IPromptSubmitResult;
41
+ constructor(
42
+ /** The prompt content */
43
+ content: string,
44
+ /** When the prompt was submitted */
45
+ timestamp: ISOTimestamp,
46
+ /** Optional session identifier */
47
+ sessionId?: string | undefined,
48
+ /** Current permission mode */
49
+ permissionMode?: PermissionMode | undefined);
50
+ /**
51
+ * Create from a prompt submit event.
52
+ */
53
+ static fromEvent(event: {
54
+ content: string;
55
+ timestamp: ISOTimestamp;
56
+ sessionId?: string;
57
+ permissionMode?: PermissionMode;
58
+ }): PromptSubmitRequest;
59
+ }
60
+ //# sourceMappingURL=PromptSubmitRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptSubmitRequest.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/mediator/requests/PromptSubmitRequest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,+CAA+C;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAEpC,mCAAmC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,QAAQ,CAAC,mBAAmB,CAAC;IAIrE,yBAAyB;aACT,OAAO,EAAE,MAAM;IAC/B,oCAAoC;aACpB,SAAS,EAAE,YAAY;IACvC,kCAAkC;aAClB,SAAS,CAAC,EAAE,MAAM;IAClC,8BAA8B;aACd,cAAc,CAAC,EAAE,cAAc;IAVjD,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;;IAG5C,yBAAyB;IACT,OAAO,EAAE,MAAM;IAC/B,oCAAoC;IACpB,SAAS,EAAE,YAAY;IACvC,kCAAkC;IAClB,SAAS,CAAC,EAAE,MAAM,YAAA;IAClC,8BAA8B;IACd,cAAc,CAAC,EAAE,cAAc,YAAA;IAGjD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,YAAY,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,GAAG,mBAAmB;CAQxB"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Prompt Submit Request.
4
+ *
5
+ * Request to process a user-submitted prompt.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PromptSubmitRequest = void 0;
9
+ /**
10
+ * Request to process a user-submitted prompt.
11
+ */
12
+ class PromptSubmitRequest {
13
+ constructor(
14
+ /** The prompt content */
15
+ content,
16
+ /** When the prompt was submitted */
17
+ timestamp,
18
+ /** Optional session identifier */
19
+ sessionId,
20
+ /** Current permission mode */
21
+ permissionMode) {
22
+ this.content = content;
23
+ this.timestamp = timestamp;
24
+ this.sessionId = sessionId;
25
+ this.permissionMode = permissionMode;
26
+ }
27
+ /**
28
+ * Create from a prompt submit event.
29
+ */
30
+ static fromEvent(event) {
31
+ return new PromptSubmitRequest(event.content, event.timestamp, event.sessionId, event.permissionMode);
32
+ }
33
+ }
34
+ exports.PromptSubmitRequest = PromptSubmitRequest;
35
+ //# sourceMappingURL=PromptSubmitRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptSubmitRequest.js","sourceRoot":"","sources":["../../../../../src/lib/application/mediator/requests/PromptSubmitRequest.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA+BH;;GAEG;AACH,MAAa,mBAAmB;IAG9B;IACE,yBAAyB;IACT,OAAe;IAC/B,oCAAoC;IACpB,SAAuB;IACvC,kCAAkC;IAClB,SAAkB;IAClC,8BAA8B;IACd,cAA+B;QAN/B,YAAO,GAAP,OAAO,CAAQ;QAEf,cAAS,GAAT,SAAS,CAAc;QAEvB,cAAS,GAAT,SAAS,CAAS;QAElB,mBAAc,GAAd,cAAc,CAAiB;IAC9C,CAAC;IAEJ;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAKhB;QACC,OAAO,IAAI,mBAAmB,CAC5B,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,cAAc,CACrB,CAAC;IACJ,CAAC;CACF;AA9BD,kDA8BC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Session Start Request.
3
+ *
4
+ * Request to load memory context at the start of a session.
5
+ */
6
+ import type { IRequest } from '../IMediator';
7
+ import type { ISessionStartResult } from '../../interfaces';
8
+ import type { SessionTrigger, ISOTimestamp } from '../../../domain';
9
+ /**
10
+ * Request to start a session and load memory context.
11
+ */
12
+ export declare class SessionStartRequest implements IRequest<ISessionStartResult> {
13
+ /** What triggered the session start */
14
+ readonly trigger: SessionTrigger;
15
+ /** When the session started */
16
+ readonly timestamp: ISOTimestamp;
17
+ /** Optional session identifier */
18
+ readonly sessionId?: string | undefined;
19
+ readonly __responseType?: ISessionStartResult;
20
+ constructor(
21
+ /** What triggered the session start */
22
+ trigger: SessionTrigger,
23
+ /** When the session started */
24
+ timestamp: ISOTimestamp,
25
+ /** Optional session identifier */
26
+ sessionId?: string | undefined);
27
+ /**
28
+ * Create from a session start event.
29
+ */
30
+ static fromEvent(event: {
31
+ trigger: SessionTrigger;
32
+ timestamp: ISOTimestamp;
33
+ sessionId?: string;
34
+ }): SessionStartRequest;
35
+ }
36
+ //# sourceMappingURL=SessionStartRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStartRequest.d.ts","sourceRoot":"","sources":["../../../../../src/lib/application/mediator/requests/SessionStartRequest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;GAEG;AACH,qBAAa,mBAAoB,YAAW,QAAQ,CAAC,mBAAmB,CAAC;IAIrE,uCAAuC;aACvB,OAAO,EAAE,cAAc;IACvC,+BAA+B;aACf,SAAS,EAAE,YAAY;IACvC,kCAAkC;aAClB,SAAS,CAAC,EAAE,MAAM;IARpC,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;;IAG5C,uCAAuC;IACvB,OAAO,EAAE,cAAc;IACvC,+BAA+B;IACf,SAAS,EAAE,YAAY;IACvC,kCAAkC;IAClB,SAAS,CAAC,EAAE,MAAM,YAAA;IAGpC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,YAAY,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,mBAAmB;CAGxB"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Session Start Request.
4
+ *
5
+ * Request to load memory context at the start of a session.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SessionStartRequest = void 0;
9
+ /**
10
+ * Request to start a session and load memory context.
11
+ */
12
+ class SessionStartRequest {
13
+ constructor(
14
+ /** What triggered the session start */
15
+ trigger,
16
+ /** When the session started */
17
+ timestamp,
18
+ /** Optional session identifier */
19
+ sessionId) {
20
+ this.trigger = trigger;
21
+ this.timestamp = timestamp;
22
+ this.sessionId = sessionId;
23
+ }
24
+ /**
25
+ * Create from a session start event.
26
+ */
27
+ static fromEvent(event) {
28
+ return new SessionStartRequest(event.trigger, event.timestamp, event.sessionId);
29
+ }
30
+ }
31
+ exports.SessionStartRequest = SessionStartRequest;
32
+ //# sourceMappingURL=SessionStartRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStartRequest.js","sourceRoot":"","sources":["../../../../../src/lib/application/mediator/requests/SessionStartRequest.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAMH;;GAEG;AACH,MAAa,mBAAmB;IAG9B;IACE,uCAAuC;IACvB,OAAuB;IACvC,+BAA+B;IACf,SAAuB;IACvC,kCAAkC;IAClB,SAAkB;QAJlB,YAAO,GAAP,OAAO,CAAgB;QAEvB,cAAS,GAAT,SAAS,CAAc;QAEvB,cAAS,GAAT,SAAS,CAAS;IACjC,CAAC;IAEJ;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAIhB;QACC,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;CACF;AAtBD,kDAsBC"}