jumbo-cli 3.3.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +1 -1
  2. package/dist/application/context/goals/query/GoalBacklogPreviewItem.d.ts +8 -0
  3. package/dist/application/context/goals/query/GoalBacklogPreviewItem.d.ts.map +1 -0
  4. package/dist/application/context/goals/query/GoalBacklogPreviewItem.js +2 -0
  5. package/dist/application/context/goals/query/GoalBacklogPreviewItem.js.map +1 -0
  6. package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.d.ts +9 -0
  7. package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.d.ts.map +1 -0
  8. package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.js +42 -0
  9. package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.js.map +1 -0
  10. package/dist/application/context/search/ISearchDocumentProjector.d.ts +10 -0
  11. package/dist/application/context/search/ISearchDocumentProjector.d.ts.map +1 -0
  12. package/dist/application/context/search/ISearchDocumentProjector.js +2 -0
  13. package/dist/application/context/search/ISearchDocumentProjector.js.map +1 -0
  14. package/dist/application/context/search/ISearchGateway.d.ts +6 -0
  15. package/dist/application/context/search/ISearchGateway.d.ts.map +1 -0
  16. package/dist/application/context/search/ISearchGateway.js +2 -0
  17. package/dist/application/context/search/ISearchGateway.js.map +1 -0
  18. package/dist/application/context/search/ISearchIndexReader.d.ts +9 -0
  19. package/dist/application/context/search/ISearchIndexReader.d.ts.map +1 -0
  20. package/dist/application/context/search/ISearchIndexReader.js +2 -0
  21. package/dist/application/context/search/ISearchIndexReader.js.map +1 -0
  22. package/dist/application/context/search/ISearchIndexRebuildGateway.d.ts +6 -0
  23. package/dist/application/context/search/ISearchIndexRebuildGateway.d.ts.map +1 -0
  24. package/dist/application/context/search/ISearchIndexRebuildGateway.js +2 -0
  25. package/dist/application/context/search/ISearchIndexRebuildGateway.js.map +1 -0
  26. package/dist/application/context/search/ISearchIndexRebuildStore.d.ts +6 -0
  27. package/dist/application/context/search/ISearchIndexRebuildStore.d.ts.map +1 -0
  28. package/dist/application/context/search/ISearchIndexRebuildStore.js +2 -0
  29. package/dist/application/context/search/ISearchIndexRebuildStore.js.map +1 -0
  30. package/dist/application/context/search/ISearchIndexWriter.d.ts +7 -0
  31. package/dist/application/context/search/ISearchIndexWriter.d.ts.map +1 -0
  32. package/dist/application/context/search/ISearchIndexWriter.js +2 -0
  33. package/dist/application/context/search/ISearchIndexWriter.js.map +1 -0
  34. package/dist/application/context/search/ISearchProvider.d.ts +6 -0
  35. package/dist/application/context/search/ISearchProvider.d.ts.map +1 -0
  36. package/dist/application/context/search/ISearchProvider.js +2 -0
  37. package/dist/application/context/search/ISearchProvider.js.map +1 -0
  38. package/dist/application/context/search/LocalSearchGateway.d.ts +14 -0
  39. package/dist/application/context/search/LocalSearchGateway.d.ts.map +1 -0
  40. package/dist/application/context/search/LocalSearchGateway.js +40 -0
  41. package/dist/application/context/search/LocalSearchGateway.js.map +1 -0
  42. package/dist/application/context/search/SearchCategory.d.ts +10 -0
  43. package/dist/application/context/search/SearchCategory.d.ts.map +1 -0
  44. package/dist/application/context/search/SearchCategory.js +8 -0
  45. package/dist/application/context/search/SearchCategory.js.map +1 -0
  46. package/dist/application/context/search/SearchController.d.ts +9 -0
  47. package/dist/application/context/search/SearchController.d.ts.map +1 -0
  48. package/dist/application/context/search/SearchController.js +9 -0
  49. package/dist/application/context/search/SearchController.js.map +1 -0
  50. package/dist/application/context/search/SearchCriteria.d.ts +8 -0
  51. package/dist/application/context/search/SearchCriteria.d.ts.map +1 -0
  52. package/dist/application/context/search/SearchCriteria.js +2 -0
  53. package/dist/application/context/search/SearchCriteria.js.map +1 -0
  54. package/dist/application/context/search/SearchDocument.d.ts +16 -0
  55. package/dist/application/context/search/SearchDocument.d.ts.map +1 -0
  56. package/dist/application/context/search/SearchDocument.js +2 -0
  57. package/dist/application/context/search/SearchDocument.js.map +1 -0
  58. package/dist/application/context/search/SearchDocumentChange.d.ts +10 -0
  59. package/dist/application/context/search/SearchDocumentChange.d.ts.map +1 -0
  60. package/dist/application/context/search/SearchDocumentChange.js +2 -0
  61. package/dist/application/context/search/SearchDocumentChange.js.map +1 -0
  62. package/dist/application/context/search/SearchDocumentProjectorRegistry.d.ts +9 -0
  63. package/dist/application/context/search/SearchDocumentProjectorRegistry.d.ts.map +1 -0
  64. package/dist/application/context/search/SearchDocumentProjectorRegistry.js +17 -0
  65. package/dist/application/context/search/SearchDocumentProjectorRegistry.js.map +1 -0
  66. package/dist/application/context/search/SearchDocumentSource.d.ts +5 -0
  67. package/dist/application/context/search/SearchDocumentSource.d.ts.map +1 -0
  68. package/dist/application/context/search/SearchDocumentSource.js +2 -0
  69. package/dist/application/context/search/SearchDocumentSource.js.map +1 -0
  70. package/dist/application/context/search/SearchFacetValue.d.ts +2 -0
  71. package/dist/application/context/search/SearchFacetValue.d.ts.map +1 -0
  72. package/dist/application/context/search/SearchFacetValue.js +2 -0
  73. package/dist/application/context/search/SearchFacetValue.js.map +1 -0
  74. package/dist/application/context/search/SearchHit.d.ts +13 -0
  75. package/dist/application/context/search/SearchHit.d.ts.map +1 -0
  76. package/dist/application/context/search/SearchHit.js +2 -0
  77. package/dist/application/context/search/SearchHit.js.map +1 -0
  78. package/dist/application/context/search/SearchHitGroup.d.ts +7 -0
  79. package/dist/application/context/search/SearchHitGroup.d.ts.map +1 -0
  80. package/dist/application/context/search/SearchHitGroup.js +2 -0
  81. package/dist/application/context/search/SearchHitGroup.js.map +1 -0
  82. package/dist/application/context/search/SearchIndexEventHandler.d.ts +14 -0
  83. package/dist/application/context/search/SearchIndexEventHandler.d.ts.map +1 -0
  84. package/dist/application/context/search/SearchIndexEventHandler.js +24 -0
  85. package/dist/application/context/search/SearchIndexEventHandler.js.map +1 -0
  86. package/dist/application/context/search/SearchIndexRebuildController.d.ts +9 -0
  87. package/dist/application/context/search/SearchIndexRebuildController.d.ts.map +1 -0
  88. package/dist/application/context/search/SearchIndexRebuildController.js +9 -0
  89. package/dist/application/context/search/SearchIndexRebuildController.js.map +1 -0
  90. package/dist/application/context/search/SearchIndexRebuildRequest.d.ts +3 -0
  91. package/dist/application/context/search/SearchIndexRebuildRequest.d.ts.map +1 -0
  92. package/dist/application/context/search/SearchIndexRebuildRequest.js +2 -0
  93. package/dist/application/context/search/SearchIndexRebuildRequest.js.map +1 -0
  94. package/dist/application/context/search/SearchIndexRebuildResponse.d.ts +9 -0
  95. package/dist/application/context/search/SearchIndexRebuildResponse.d.ts.map +1 -0
  96. package/dist/application/context/search/SearchIndexRebuildResponse.js +2 -0
  97. package/dist/application/context/search/SearchIndexRebuildResponse.js.map +1 -0
  98. package/dist/application/context/search/SearchRequest.d.ts +5 -0
  99. package/dist/application/context/search/SearchRequest.d.ts.map +1 -0
  100. package/dist/application/context/search/SearchRequest.js +2 -0
  101. package/dist/application/context/search/SearchRequest.js.map +1 -0
  102. package/dist/application/context/search/SearchResponse.d.ts +7 -0
  103. package/dist/application/context/search/SearchResponse.d.ts.map +1 -0
  104. package/dist/application/context/search/SearchResponse.js +2 -0
  105. package/dist/application/context/search/SearchResponse.js.map +1 -0
  106. package/dist/application/context/search/SearchResultLimit.d.ts +6 -0
  107. package/dist/application/context/search/SearchResultLimit.d.ts.map +1 -0
  108. package/dist/application/context/search/SearchResultLimit.js +6 -0
  109. package/dist/application/context/search/SearchResultLimit.js.map +1 -0
  110. package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.d.ts +14 -0
  111. package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.d.ts.map +1 -0
  112. package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.js +93 -0
  113. package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.js.map +1 -0
  114. package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.d.ts +14 -0
  115. package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.d.ts.map +1 -0
  116. package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.js +92 -0
  117. package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.js.map +1 -0
  118. package/dist/application/context/search/projectors/DependencySearchDocumentProjector.d.ts +14 -0
  119. package/dist/application/context/search/projectors/DependencySearchDocumentProjector.d.ts.map +1 -0
  120. package/dist/application/context/search/projectors/DependencySearchDocumentProjector.js +89 -0
  121. package/dist/application/context/search/projectors/DependencySearchDocumentProjector.js.map +1 -0
  122. package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.d.ts +14 -0
  123. package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.d.ts.map +1 -0
  124. package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.js +71 -0
  125. package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.js.map +1 -0
  126. package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.d.ts +14 -0
  127. package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.d.ts.map +1 -0
  128. package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.js +61 -0
  129. package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.js.map +1 -0
  130. package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts +5 -1
  131. package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts.map +1 -1
  132. package/dist/application/context/sessions/start/LocalStartSessionGateway.js +11 -2
  133. package/dist/application/context/sessions/start/LocalStartSessionGateway.js.map +1 -1
  134. package/dist/application/context/sessions/start/SessionStartResponse.d.ts +2 -0
  135. package/dist/application/context/sessions/start/SessionStartResponse.d.ts.map +1 -1
  136. package/dist/application/host/IApplicationContainer.d.ts +8 -0
  137. package/dist/application/host/IApplicationContainer.d.ts.map +1 -1
  138. package/dist/application/settings/Settings.d.ts +15 -0
  139. package/dist/application/settings/Settings.d.ts.map +1 -1
  140. package/dist/application/settings/Settings.js +4 -0
  141. package/dist/application/settings/Settings.js.map +1 -1
  142. package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.d.ts +18 -0
  143. package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.d.ts.map +1 -0
  144. package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.js +28 -0
  145. package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.js.map +1 -0
  146. package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.d.ts +10 -0
  147. package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.d.ts.map +1 -0
  148. package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.js +9 -0
  149. package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.js.map +1 -0
  150. package/dist/infrastructure/context/search/SearchIndexRecord.d.ts +14 -0
  151. package/dist/infrastructure/context/search/SearchIndexRecord.d.ts.map +1 -0
  152. package/dist/infrastructure/context/search/SearchIndexRecord.js +2 -0
  153. package/dist/infrastructure/context/search/SearchIndexRecord.js.map +1 -0
  154. package/dist/infrastructure/context/search/SearchIndexRecordMapper.d.ts +10 -0
  155. package/dist/infrastructure/context/search/SearchIndexRecordMapper.d.ts.map +1 -0
  156. package/dist/infrastructure/context/search/SearchIndexRecordMapper.js +44 -0
  157. package/dist/infrastructure/context/search/SearchIndexRecordMapper.js.map +1 -0
  158. package/dist/infrastructure/context/search/SqliteSearchIndexStore.d.ts +21 -0
  159. package/dist/infrastructure/context/search/SqliteSearchIndexStore.d.ts.map +1 -0
  160. package/dist/infrastructure/context/search/SqliteSearchIndexStore.js +94 -0
  161. package/dist/infrastructure/context/search/SqliteSearchIndexStore.js.map +1 -0
  162. package/dist/infrastructure/context/search/migrations/001-create-search-index-entries.sql +26 -0
  163. package/dist/infrastructure/host/HostBuilder.d.ts.map +1 -1
  164. package/dist/infrastructure/host/HostBuilder.js +23 -1
  165. package/dist/infrastructure/host/HostBuilder.js.map +1 -1
  166. package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts +1 -0
  167. package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts.map +1 -1
  168. package/dist/infrastructure/messaging/ProjectionBusFactory.js +13 -0
  169. package/dist/infrastructure/messaging/ProjectionBusFactory.js.map +1 -1
  170. package/dist/infrastructure/persistence/migrations.config.d.ts.map +1 -1
  171. package/dist/infrastructure/persistence/migrations.config.js +1 -0
  172. package/dist/infrastructure/persistence/migrations.config.js.map +1 -1
  173. package/dist/infrastructure/settings/DefaultSettings.d.ts.map +1 -1
  174. package/dist/infrastructure/settings/DefaultSettings.js +4 -1
  175. package/dist/infrastructure/settings/DefaultSettings.js.map +1 -1
  176. package/dist/infrastructure/settings/FsSettingsInitializer.d.ts.map +1 -1
  177. package/dist/infrastructure/settings/FsSettingsInitializer.js +6 -0
  178. package/dist/infrastructure/settings/FsSettingsInitializer.js.map +1 -1
  179. package/dist/infrastructure/settings/FsSettingsReader.d.ts.map +1 -1
  180. package/dist/infrastructure/settings/FsSettingsReader.js +10 -0
  181. package/dist/infrastructure/settings/FsSettingsReader.js.map +1 -1
  182. package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.d.ts +20 -0
  183. package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.d.ts.map +1 -0
  184. package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.js +54 -0
  185. package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.js.map +1 -0
  186. package/dist/presentation/cli/commands/index/rebuild/index.rebuild.d.ts +8 -0
  187. package/dist/presentation/cli/commands/index/rebuild/index.rebuild.d.ts.map +1 -0
  188. package/dist/presentation/cli/commands/index/rebuild/index.rebuild.js +45 -0
  189. package/dist/presentation/cli/commands/index/rebuild/index.rebuild.js.map +1 -0
  190. package/dist/presentation/cli/commands/registry/generated-commands.d.ts.map +1 -1
  191. package/dist/presentation/cli/commands/registry/generated-commands.js +12 -0
  192. package/dist/presentation/cli/commands/registry/generated-commands.js.map +1 -1
  193. package/dist/presentation/cli/commands/search/SearchOutputBuilder.d.ts +17 -0
  194. package/dist/presentation/cli/commands/search/SearchOutputBuilder.d.ts.map +1 -0
  195. package/dist/presentation/cli/commands/search/SearchOutputBuilder.js +111 -0
  196. package/dist/presentation/cli/commands/search/SearchOutputBuilder.js.map +1 -0
  197. package/dist/presentation/cli/commands/search/search.d.ts +12 -0
  198. package/dist/presentation/cli/commands/search/search.d.ts.map +1 -0
  199. package/dist/presentation/cli/commands/search/search.js +119 -0
  200. package/dist/presentation/cli/commands/search/search.js.map +1 -0
  201. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts +2 -0
  202. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts.map +1 -1
  203. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js +9 -1
  204. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js.map +1 -1
  205. package/dist/presentation/cli/help/SubcommandHelpFormatter.d.ts.map +1 -1
  206. package/dist/presentation/cli/help/SubcommandHelpFormatter.js +3 -4
  207. package/dist/presentation/cli/help/SubcommandHelpFormatter.js.map +1 -1
  208. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts +18 -0
  209. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts.map +1 -0
  210. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js +2 -0
  211. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js.map +1 -0
  212. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts +11 -0
  213. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts.map +1 -0
  214. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js +58 -0
  215. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js.map +1 -0
  216. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts +5 -0
  217. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts.map +1 -0
  218. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js +11 -0
  219. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js.map +1 -0
  220. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts +17 -0
  221. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts.map +1 -0
  222. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js +86 -0
  223. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js.map +1 -0
  224. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts +9 -7
  225. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts.map +1 -1
  226. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js +36 -187
  227. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js.map +1 -1
  228. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts +3 -0
  229. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts.map +1 -0
  230. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js +7 -0
  231. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js.map +1 -0
  232. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts +7 -0
  233. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts.map +1 -0
  234. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js +25 -0
  235. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js.map +1 -0
  236. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts +8 -0
  237. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts.map +1 -0
  238. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js +29 -0
  239. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js.map +1 -0
  240. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchOutputBuilder.js","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/search/SearchOutputBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { IApplicationContainer } from "../../../../application/host/IApplicationContainer.js";
2
+ import { CommandMetadata } from "../registry/CommandMetadata.js";
3
+ export declare const metadata: CommandMetadata;
4
+ interface SearchOptions {
5
+ readonly query: string;
6
+ readonly category?: string;
7
+ readonly limit?: string;
8
+ readonly output?: string;
9
+ }
10
+ export declare function search(options: SearchOptions, container: IApplicationContainer): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/search/search.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAOjE,eAAO,MAAM,QAAQ,EAAE,eAuCtB,CAAC;AAEF,UAAU,aAAa;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCpG"}
@@ -0,0 +1,119 @@
1
+ import { SearchCategory } from "../../../../application/context/search/SearchCategory.js";
2
+ import { SearchResultLimit } from "../../../../application/context/search/SearchResultLimit.js";
3
+ import { Renderer } from "../../rendering/Renderer.js";
4
+ import { SearchOutputBuilder } from "./SearchOutputBuilder.js";
5
+ const VALID_SEARCH_CATEGORIES = Object.values(SearchCategory);
6
+ export const metadata = {
7
+ description: "Search the global Jumbo memory index",
8
+ category: "project-knowledge",
9
+ requiredOptions: [
10
+ {
11
+ flags: "-q, --query <query>",
12
+ description: "Search query text",
13
+ },
14
+ ],
15
+ options: [
16
+ {
17
+ flags: "-c, --category <category>",
18
+ description: "Filter by category: component, dependency, decision, guideline, invariant",
19
+ },
20
+ {
21
+ flags: "-l, --limit <limit>",
22
+ description: `Maximum results to return (${SearchResultLimit.MIN}-${SearchResultLimit.MAX})`,
23
+ },
24
+ {
25
+ flags: "-o, --output <output>",
26
+ description: "Output detail level: default or compact",
27
+ },
28
+ ],
29
+ examples: [
30
+ {
31
+ command: 'jumbo search --query "event bus"',
32
+ description: "Search all memory categories",
33
+ },
34
+ {
35
+ command: 'jumbo search --query "sqlite" --category decision --output compact',
36
+ description: "Search one category with compact output",
37
+ },
38
+ {
39
+ command: 'jumbo search --query "testing" --limit 10 --format json',
40
+ description: "Emit structured search results for agents",
41
+ },
42
+ ],
43
+ related: ["components search", "decisions search", "dependencies search", "guidelines search", "invariants search"],
44
+ requiresProject: true,
45
+ };
46
+ export async function search(options, container) {
47
+ const renderer = Renderer.getInstance();
48
+ const query = normalizeQuery(options.query, renderer);
49
+ const category = normalizeCategory(options.category, renderer);
50
+ const limit = normalizeLimit(options.limit, renderer);
51
+ const outputFormat = normalizeOutputFormat(options.output, renderer);
52
+ const request = {
53
+ criteria: {
54
+ query,
55
+ groupByCategory: true,
56
+ ...(category ? { category } : {}),
57
+ ...(limit ? { limit } : {}),
58
+ },
59
+ };
60
+ try {
61
+ const response = await container.searchController.handle(request);
62
+ const outputBuilder = new SearchOutputBuilder();
63
+ if (renderer.getConfig().format === "text") {
64
+ const output = outputBuilder.build(response, { query, category, limit }, outputFormat);
65
+ renderer.info(output.toHumanReadable());
66
+ return;
67
+ }
68
+ const output = outputBuilder.buildStructuredOutput(response, { query, category, limit }, outputFormat);
69
+ const data = output.getSections().find((section) => section.type === "data")?.content;
70
+ renderer.data(data);
71
+ }
72
+ catch (error) {
73
+ renderer.error("Failed to search Jumbo memory", error instanceof Error ? error : String(error));
74
+ process.exit(1);
75
+ }
76
+ }
77
+ function normalizeQuery(query, renderer) {
78
+ const normalized = query?.trim();
79
+ if (!normalized) {
80
+ renderer.error("Search query cannot be empty");
81
+ process.exit(1);
82
+ }
83
+ return normalized;
84
+ }
85
+ function normalizeCategory(category, renderer) {
86
+ if (!category) {
87
+ return undefined;
88
+ }
89
+ if (!VALID_SEARCH_CATEGORIES.includes(category)) {
90
+ renderer.error(`Invalid category: ${category}. Must be one of: ${VALID_SEARCH_CATEGORIES.join(", ")}`);
91
+ process.exit(1);
92
+ }
93
+ return category;
94
+ }
95
+ function normalizeLimit(limit, renderer) {
96
+ if (!limit) {
97
+ return undefined;
98
+ }
99
+ const parsed = Number.parseInt(limit, 10);
100
+ if (!Number.isInteger(parsed) ||
101
+ String(parsed) !== limit ||
102
+ parsed < SearchResultLimit.MIN ||
103
+ parsed > SearchResultLimit.MAX) {
104
+ renderer.error(`Invalid limit: ${limit}. Must be an integer from ${SearchResultLimit.MIN} to ${SearchResultLimit.MAX}`);
105
+ process.exit(1);
106
+ }
107
+ return parsed;
108
+ }
109
+ function normalizeOutputFormat(output, renderer) {
110
+ if (!output || output === "default") {
111
+ return "default";
112
+ }
113
+ if (output === "compact") {
114
+ return "compact";
115
+ }
116
+ renderer.error(`Invalid output format: ${output}. Must be one of: default, compact`);
117
+ process.exit(1);
118
+ }
119
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/search/search.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { SessionStartResponse } from "../../../../../application/context/session
10
10
  */
11
11
  export declare class SessionStartOutputBuilder {
12
12
  private readonly builder;
13
+ private readonly yamlFormatter;
13
14
  constructor();
14
15
  /**
15
16
  * Build human-readable session router output.
@@ -20,6 +21,7 @@ export declare class SessionStartOutputBuilder {
20
21
  */
21
22
  buildStructuredOutput(response: SessionStartResponse): Record<string, unknown>;
22
23
  private renderRouterText;
24
+ private renderBacklogPreview;
23
25
  private buildBrownfieldInstruction;
24
26
  }
25
27
  //# sourceMappingURL=SessionStartOutputBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStartOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2EAA2E,CAAC;AA+BjH;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;;IAMhD;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,cAAc;IAYvE;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAwB9E,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,0BAA0B;CAqCnC"}
1
+ {"version":3,"file":"SessionStartOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2EAA2E,CAAC;AAiCjH;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;;IAO9C;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,cAAc;IAYvE;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAyB9E,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,0BAA0B;CAqCnC"}
@@ -1,9 +1,10 @@
1
1
  import { TerminalOutputBuilder } from "../../../output/TerminalOutputBuilder.js";
2
+ import { YamlFormatter } from "../../../formatting/YamlFormatter.js";
2
3
  const SESSION_ROUTER_SCHEMA_VERSION = "jumbo.sessionStart.router.v1";
3
4
  const SESSION_ROUTER_PACKET_TYPE = "session.router";
4
5
  const GOAL_FALLBACK_COMMAND = "jumbo goals list --format json";
5
6
  const ROUTER_PRIMARY_ACTION = "ask_user_to_choose_workflow";
6
- const ROUTER_PROMPT = "Ask the user whether they want to design or define a goal, refine a goal, execute a goal, review a goal, codify a goal, or do something different.";
7
+ const ROUTER_PROMPT = "Prompt the user for input about what goal or workflow to work on. Session start includes only a bounded backlog preview with goalId, title, status, and createdAt. Ask whether they want to work on one of the shown goals, design or define a goal, refine a goal, execute a goal, review a goal, codify a goal, or do something different. IMPORTANT: Run the appropriate route command for the chosen goal before doing any work.";
7
8
  const ROUTES = {
8
9
  design_or_define_goal: {
9
10
  command: "jumbo project show --northstar --format json",
@@ -36,6 +37,7 @@ const ROUTES = {
36
37
  export class SessionStartOutputBuilder {
37
38
  constructor() {
38
39
  this.builder = new TerminalOutputBuilder();
40
+ this.yamlFormatter = new YamlFormatter();
39
41
  }
40
42
  /**
41
43
  * Build human-readable session router output.
@@ -63,6 +65,7 @@ export class SessionStartOutputBuilder {
63
65
  primaryAction: ROUTER_PRIMARY_ACTION,
64
66
  prompt: ROUTER_PROMPT,
65
67
  },
68
+ backlogPreview: response.backlogPreview,
66
69
  routes: ROUTES,
67
70
  };
68
71
  if (response.isUnprimedBrownfield) {
@@ -78,6 +81,8 @@ export class SessionStartOutputBuilder {
78
81
  ` sessionId: ${response.sessionId}`,
79
82
  ` status: ${response.status}`,
80
83
  "",
84
+ this.renderBacklogPreview(response.backlogPreview),
85
+ "",
81
86
  `@LLM: ${ROUTER_PROMPT}`,
82
87
  "",
83
88
  "routes:",
@@ -92,6 +97,9 @@ export class SessionStartOutputBuilder {
92
97
  ` fallbackCommand: ${ROUTES.codify_goal.fallbackCommand}`,
93
98
  ].join("\n");
94
99
  }
100
+ renderBacklogPreview(preview) {
101
+ return this.yamlFormatter.toYaml({ backlogPreview: preview }).trimEnd();
102
+ }
95
103
  buildBrownfieldInstruction() {
96
104
  return [
97
105
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStartOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionStartOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubcommandHelpFormatter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/cli/help/SubcommandHelpFormatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAiC,MAAM,yCAAyC,CAAC;AA2D3G;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAkDR"}
1
+ {"version":3,"file":"SubcommandHelpFormatter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/cli/help/SubcommandHelpFormatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAiC,MAAM,yCAAyC,CAAC;AA2D3G;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAiDR"}
@@ -4,7 +4,7 @@
4
4
  * Formats individual subcommand help in gh CLI style.
5
5
  * Produces: description, USAGE, FLAGS, INHERITED FLAGS, EXAMPLES, LEARN MORE.
6
6
  */
7
- import { extractParts } from "../commands/registry/PathNormalizer.js";
7
+ import { normalizePath } from "../commands/registry/PathNormalizer.js";
8
8
  /** Indent for flag lines (2 spaces, matching gh style). */
9
9
  const FLAG_INDENT = " ";
10
10
  /** Minimum gap between flag text and description. */
@@ -64,8 +64,7 @@ function formatExamples(examples) {
64
64
  */
65
65
  export function formatSubcommandHelp(registeredCommand, aliasName) {
66
66
  const metadata = registeredCommand.metadata;
67
- const { parent, subcommand } = extractParts(registeredCommand.path);
68
- const commandName = aliasName ?? `${parent} ${subcommand}`;
67
+ const commandName = aliasName ?? normalizePath(registeredCommand.path).join(" ");
69
68
  // Compute consistent pad width across all flags (including --help)
70
69
  const allOptions = [
71
70
  ...(metadata.requiredOptions ?? []),
@@ -93,7 +92,7 @@ export function formatSubcommandHelp(registeredCommand, aliasName) {
93
92
  }
94
93
  // LEARN MORE
95
94
  const learnMoreLines = [
96
- " Use `jumbo <command> <subcommand> --help` for more information about a command.",
95
+ " Use `jumbo <command> --help` for more information about a command.",
97
96
  ];
98
97
  if (metadata.related && metadata.related.length > 0) {
99
98
  learnMoreLines.push(" Related: " + metadata.related.map(cmd => `jumbo ${cmd}`).join(", "));
@@ -1 +1 @@
1
- {"version":3,"file":"SubcommandHelpFormatter.js","sourceRoot":"","sources":["../../../../src/presentation/cli/help/SubcommandHelpFormatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubcommandHelpFormatter.js","sourceRoot":"","sources":["../../../../src/presentation/cli/help/SubcommandHelpFormatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { WorkerDaemonProcess } from "../../../application/daemons/IWorkerDaemonProcessController.js";
2
+ import type { TuiDaemonConfig } from "./TuiDaemonConfig.js";
3
+ import type { TuiDaemonEventSnapshot } from "./TuiDaemonEventSnapshot.js";
4
+ import type { TuiDaemonName } from "./TuiDaemonName.js";
5
+ import type { TuiSubprocessStatusValue } from "./TuiSubprocessStatus.js";
6
+ export interface ManagedSubprocess {
7
+ readonly name: TuiDaemonName;
8
+ readonly child: WorkerDaemonProcess;
9
+ readonly config: TuiDaemonConfig;
10
+ readonly stdout: string[];
11
+ readonly stderr: string[];
12
+ readonly events: TuiDaemonEventSnapshot[];
13
+ status: TuiSubprocessStatusValue;
14
+ exitCode?: number | null;
15
+ exitSignal?: string | null;
16
+ stopRequested: boolean;
17
+ }
18
+ //# sourceMappingURL=ManagedSubprocess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagedSubprocess.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/ManagedSubprocess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC1C,MAAM,EAAE,wBAAwB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ManagedSubprocess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagedSubprocess.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/ManagedSubprocess.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { TuiDaemonEventSnapshot } from "./TuiDaemonEventSnapshot.js";
2
+ import type { TuiDaemonName } from "./TuiDaemonName.js";
3
+ export declare class TuiDaemonOutputEventParser {
4
+ parseOutputLine(daemon: TuiDaemonName, line: string): TuiDaemonEventSnapshot;
5
+ boundTextField(value: string): string;
6
+ boundOptionalTextField(value: string | undefined): string | undefined;
7
+ boundEvent(event: TuiDaemonEventSnapshot): TuiDaemonEventSnapshot;
8
+ private parseStructuredEvent;
9
+ private limitTextTail;
10
+ }
11
+ //# sourceMappingURL=TuiDaemonOutputEventParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiDaemonOutputEventParser.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,qBAAa,0BAA0B;IACrC,eAAe,CACb,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACX,sBAAsB;IAiBzB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAIrE,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB;IAajE,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,aAAa;CAKtB"}
@@ -0,0 +1,58 @@
1
+ import { TuiDaemonEventCategory } from "./TuiDaemonEventCategory.js";
2
+ import { TuiDaemonEventStatus } from "./TuiDaemonEventStatus.js";
3
+ const EVENT_TEXT_FIELD_MAX_LENGTH = 2048;
4
+ export class TuiDaemonOutputEventParser {
5
+ parseOutputLine(daemon, line) {
6
+ const parsedEvent = this.parseStructuredEvent(line);
7
+ if (parsedEvent !== null) {
8
+ return this.boundEvent(parsedEvent);
9
+ }
10
+ return {
11
+ daemon,
12
+ status: TuiDaemonEventStatus.PROCESSING,
13
+ source: daemon,
14
+ category: TuiDaemonEventCategory.MODEL_OUTPUT,
15
+ message: this.limitTextTail(line),
16
+ timestampMs: Date.now(),
17
+ };
18
+ }
19
+ boundTextField(value) {
20
+ return this.limitTextTail(value);
21
+ }
22
+ boundOptionalTextField(value) {
23
+ return value === undefined ? undefined : this.limitTextTail(value);
24
+ }
25
+ boundEvent(event) {
26
+ return {
27
+ ...event,
28
+ daemon: this.limitTextTail(event.daemon),
29
+ status: this.limitTextTail(event.status),
30
+ source: this.boundOptionalTextField(event.source),
31
+ category: this.boundOptionalTextField(event.category),
32
+ message: this.boundOptionalTextField(event.message),
33
+ goalId: this.boundOptionalTextField(event.goalId),
34
+ errorMessage: this.boundOptionalTextField(event.errorMessage),
35
+ };
36
+ }
37
+ parseStructuredEvent(line) {
38
+ try {
39
+ const parsed = JSON.parse(line);
40
+ if (typeof parsed.daemon !== "string" || typeof parsed.status !== "string") {
41
+ return null;
42
+ }
43
+ return {
44
+ ...parsed,
45
+ timestampMs: parsed.timestampMs ?? Date.now(),
46
+ };
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ limitTextTail(value) {
53
+ return value.length > EVENT_TEXT_FIELD_MAX_LENGTH
54
+ ? value.slice(-EVENT_TEXT_FIELD_MAX_LENGTH)
55
+ : value;
56
+ }
57
+ }
58
+ //# sourceMappingURL=TuiDaemonOutputEventParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiDaemonOutputEventParser.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,MAAM,2BAA2B,GAAG,IAAK,CAAC;AAE1C,MAAM,OAAO,0BAA0B;IACrC,eAAe,CACb,MAAqB,EACrB,IAAY;QAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,OAAO;YACL,MAAM;YACN,MAAM,EAAE,oBAAoB,CAAC,UAAU;YACvC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,sBAAsB,CAAC,YAAY;YAC7C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,sBAAsB,CAAC,KAAyB;QAC9C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,UAAU,CAAC,KAA6B;QACtC,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC;YACnD,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC;SAC9D,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2B,CAAC;YAC1D,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO;gBACL,GAAG,MAAM;gBACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;aAC9C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,2BAA2B;YAC/C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import type { TuiDaemonConfig } from "./TuiDaemonConfig.js";
2
+ export declare class TuiSubprocessConfigResolver {
3
+ resolve(config: Partial<TuiDaemonConfig>): TuiDaemonConfig;
4
+ }
5
+ //# sourceMappingURL=TuiSubprocessConfigResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessConfigResolver.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,qBAAa,2BAA2B;IACtC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe;CAO3D"}
@@ -0,0 +1,11 @@
1
+ import { DEFAULT_WORKER_DAEMON_CONFIG } from "../../../application/daemons/WorkerDaemonCatalog.js";
2
+ export class TuiSubprocessConfigResolver {
3
+ resolve(config) {
4
+ return {
5
+ agentId: config.agentId ?? DEFAULT_WORKER_DAEMON_CONFIG.agentId,
6
+ pollIntervalMs: config.pollIntervalMs ?? DEFAULT_WORKER_DAEMON_CONFIG.pollIntervalMs,
7
+ maxRetries: config.maxRetries ?? DEFAULT_WORKER_DAEMON_CONFIG.maxRetries,
8
+ };
9
+ }
10
+ }
11
+ //# sourceMappingURL=TuiSubprocessConfigResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessConfigResolver.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AAGnG,MAAM,OAAO,2BAA2B;IACtC,OAAO,CAAC,MAAgC;QACtC,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,4BAA4B,CAAC,OAAO;YAC/D,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,4BAA4B,CAAC,cAAc;YACpF,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,4BAA4B,CAAC,UAAU;SACzE,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { ILogger } from "../../../application/logging/ILogger.js";
2
+ import type { ManagedSubprocess } from "./ManagedSubprocess.js";
3
+ import type { TuiDaemonEventSnapshot } from "./TuiDaemonEventSnapshot.js";
4
+ import { TuiDaemonOutputEventParser } from "./TuiDaemonOutputEventParser.js";
5
+ export declare class TuiSubprocessLifecycleEventRecorder {
6
+ private readonly logger;
7
+ private readonly outputEventParser;
8
+ constructor(logger: ILogger, outputEventParser?: TuiDaemonOutputEventParser);
9
+ recordStopping(process: ManagedSubprocess): void;
10
+ recordStopped(process: ManagedSubprocess): void;
11
+ recordFailed(process: ManagedSubprocess, errorMessage: string): void;
12
+ recordTerminalEvent(process: ManagedSubprocess, errorMessage?: string): void;
13
+ recordDaemonEvent(process: ManagedSubprocess, event: TuiDaemonEventSnapshot): void;
14
+ boundErrorForLog(error: unknown): unknown;
15
+ private recordLifecycleEvent;
16
+ }
17
+ //# sourceMappingURL=TuiSubprocessLifecycleEventRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessLifecycleEventRecorder.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAI1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAmB7E,qBAAa,mCAAmC;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADjB,MAAM,EAAE,OAAO,EACf,iBAAiB,6BAAmC;IAGvE,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAOhD,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAO/C,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQpE,mBAAmB,CACjB,OAAO,EAAE,iBAAiB,EAC1B,YAAY,SAA4C,GACvD,IAAI;IAYP,iBAAiB,CACf,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,sBAAsB,GAC5B,IAAI;IASP,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWzC,OAAO,CAAC,oBAAoB;CAgB7B"}
@@ -0,0 +1,86 @@
1
+ import { TuiDaemonEventCategory } from "./TuiDaemonEventCategory.js";
2
+ import { TuiDaemonEventStatus } from "./TuiDaemonEventStatus.js";
3
+ import { TuiSubprocessCopy } from "./TuiSubprocessCopy.js";
4
+ import { TuiSubprocessStatus } from "./TuiSubprocessStatus.js";
5
+ import { TuiDaemonOutputEventParser } from "./TuiDaemonOutputEventParser.js";
6
+ const EVENT_RING_BUFFER_SIZE = 50;
7
+ const SUBPROCESS_EVENT_COPY = {
8
+ stopping: {
9
+ category: TuiDaemonEventCategory.STOPPING,
10
+ message: TuiSubprocessCopy.terminationRequested,
11
+ },
12
+ stopped: {
13
+ category: TuiDaemonEventCategory.STOPPED,
14
+ message: TuiSubprocessCopy.processStopped,
15
+ },
16
+ failed: {
17
+ category: TuiDaemonEventCategory.FAILED,
18
+ message: TuiSubprocessCopy.processFailed,
19
+ },
20
+ };
21
+ export class TuiSubprocessLifecycleEventRecorder {
22
+ constructor(logger, outputEventParser = new TuiDaemonOutputEventParser()) {
23
+ this.logger = logger;
24
+ this.outputEventParser = outputEventParser;
25
+ }
26
+ recordStopping(process) {
27
+ this.recordLifecycleEvent(process, {
28
+ status: TuiDaemonEventStatus.STOPPING,
29
+ ...SUBPROCESS_EVENT_COPY.stopping,
30
+ });
31
+ }
32
+ recordStopped(process) {
33
+ this.recordLifecycleEvent(process, {
34
+ status: TuiDaemonEventStatus.STOPPED,
35
+ ...SUBPROCESS_EVENT_COPY.stopped,
36
+ });
37
+ }
38
+ recordFailed(process, errorMessage) {
39
+ this.recordLifecycleEvent(process, {
40
+ status: TuiDaemonEventStatus.FAILED,
41
+ errorMessage,
42
+ ...SUBPROCESS_EVENT_COPY.failed,
43
+ });
44
+ }
45
+ recordTerminalEvent(process, errorMessage = process.stderr[process.stderr.length - 1]) {
46
+ const status = process.status === TuiSubprocessStatus.STOPPED
47
+ ? TuiDaemonEventStatus.STOPPED
48
+ : TuiDaemonEventStatus.FAILED;
49
+ this.recordLifecycleEvent(process, {
50
+ status,
51
+ exitCode: process.exitCode ?? undefined,
52
+ errorMessage: status === TuiDaemonEventStatus.FAILED ? errorMessage : undefined,
53
+ ...(status === TuiDaemonEventStatus.STOPPED ? SUBPROCESS_EVENT_COPY.stopped : SUBPROCESS_EVENT_COPY.failed),
54
+ });
55
+ }
56
+ recordDaemonEvent(process, event) {
57
+ const boundedEvent = this.outputEventParser.boundEvent(event);
58
+ this.logger.info(TuiSubprocessCopy.eventLog, { daemon: process.name, event: boundedEvent });
59
+ process.events.push(boundedEvent);
60
+ while (process.events.length > EVENT_RING_BUFFER_SIZE) {
61
+ process.events.shift();
62
+ }
63
+ }
64
+ boundErrorForLog(error) {
65
+ if (!(error instanceof Error)) {
66
+ return error;
67
+ }
68
+ const bounded = new Error(this.outputEventParser.boundTextField(error.message));
69
+ bounded.name = error.name;
70
+ bounded.stack = this.outputEventParser.boundOptionalTextField(error.stack);
71
+ return bounded;
72
+ }
73
+ recordLifecycleEvent(process, event) {
74
+ const lastEvent = process.events[process.events.length - 1];
75
+ if (lastEvent?.source === process.name && lastEvent.status === event.status) {
76
+ return;
77
+ }
78
+ this.recordDaemonEvent(process, {
79
+ daemon: process.name,
80
+ source: process.name,
81
+ timestampMs: Date.now(),
82
+ ...event,
83
+ });
84
+ }
85
+ }
86
+ //# sourceMappingURL=TuiSubprocessLifecycleEventRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessLifecycleEventRecorder.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,24 @@
1
1
  import type { ILogger } from "../../../application/logging/ILogger.js";
2
- import { ISubprocessManager, TuiDaemonConfig, TuiDaemonName, TuiSubprocessSnapshot } from "./ISubprocessManager.js";
3
2
  import type { IWorkerDaemonProcessController } from "../../../application/daemons/IWorkerDaemonProcessController.js";
3
+ import type { ISubprocessManager } from "./ISubprocessManager.js";
4
+ import type { TuiDaemonConfig } from "./TuiDaemonConfig.js";
5
+ import type { TuiDaemonName } from "./TuiDaemonName.js";
6
+ import type { TuiSubprocessSnapshot } from "./TuiSubprocessSnapshot.js";
4
7
  export declare class TuiSubprocessManager implements ISubprocessManager {
5
8
  private readonly processController;
6
9
  private readonly logger;
7
10
  private readonly processes;
11
+ private readonly configResolver;
12
+ private readonly outputRingBuffer;
13
+ private readonly outputEventParser;
14
+ private readonly snapshotMapper;
15
+ private readonly lifecycleEventRecorder;
8
16
  constructor(processController: IWorkerDaemonProcessController, logger?: ILogger);
9
17
  spawn(name: TuiDaemonName, config?: Partial<TuiDaemonConfig>): Promise<TuiSubprocessSnapshot>;
10
18
  terminate(name: TuiDaemonName): Promise<TuiSubprocessSnapshot>;
11
19
  terminateAll(): Promise<void>;
12
20
  getStatus(name: TuiDaemonName): TuiSubprocessSnapshot;
13
21
  getAllStatuses(): readonly TuiSubprocessSnapshot[];
14
- private resolveConfig;
15
22
  private resolveClosedStatus;
16
- private appendLines;
17
- private toSnapshot;
18
- private recordSubprocessTerminalEvent;
19
- private recordSubprocessLifecycleEvent;
20
- private recordDaemonEvent;
21
23
  }
22
24
  //# sourceMappingURL=TuiSubprocessManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TuiSubprocessManager.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAA0B,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC5I,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,gEAAgE,CAAC;AAsDxE,qBAAa,oBAAqB,YAAW,kBAAkB;IAI3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+C;gBAGtD,iBAAiB,EAAE,8BAA8B,EACjD,MAAM,GAAE,OAAqB;IAG1C,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAyEjG,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkD9D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB;IAgBrD,cAAc,IAAI,SAAS,qBAAqB,EAAE;IAIlD,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,6BAA6B;IAerC,OAAO,CAAC,8BAA8B;IAiBtC,OAAO,CAAC,iBAAiB;CAW1B"}
1
+ {"version":3,"file":"TuiSubprocessManager.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EACV,8BAA8B,EAC/B,MAAM,gEAAgE,CAAC;AAIxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAaxE,qBAAa,oBAAqB,YAAW,kBAAkB;IAS3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+C;IACzE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IACtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;gBAG1D,iBAAiB,EAAE,8BAA8B,EACjD,MAAM,GAAE,OAAiC;IAQtD,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAyEjG,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwC9D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB;IASrD,cAAc,IAAI,SAAS,qBAAqB,EAAE;IAIlD,OAAO,CAAC,mBAAmB;CAU5B"}