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.
- package/README.md +1 -1
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.d.ts +8 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.d.ts.map +1 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.js +2 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewItem.js.map +1 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.d.ts +9 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.d.ts.map +1 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.js +42 -0
- package/dist/application/context/goals/query/GoalBacklogPreviewQueryHandler.js.map +1 -0
- package/dist/application/context/search/ISearchDocumentProjector.d.ts +10 -0
- package/dist/application/context/search/ISearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/ISearchDocumentProjector.js +2 -0
- package/dist/application/context/search/ISearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/ISearchGateway.d.ts +6 -0
- package/dist/application/context/search/ISearchGateway.d.ts.map +1 -0
- package/dist/application/context/search/ISearchGateway.js +2 -0
- package/dist/application/context/search/ISearchGateway.js.map +1 -0
- package/dist/application/context/search/ISearchIndexReader.d.ts +9 -0
- package/dist/application/context/search/ISearchIndexReader.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexReader.js +2 -0
- package/dist/application/context/search/ISearchIndexReader.js.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.d.ts +6 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.js +2 -0
- package/dist/application/context/search/ISearchIndexRebuildGateway.js.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.d.ts +6 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.js +2 -0
- package/dist/application/context/search/ISearchIndexRebuildStore.js.map +1 -0
- package/dist/application/context/search/ISearchIndexWriter.d.ts +7 -0
- package/dist/application/context/search/ISearchIndexWriter.d.ts.map +1 -0
- package/dist/application/context/search/ISearchIndexWriter.js +2 -0
- package/dist/application/context/search/ISearchIndexWriter.js.map +1 -0
- package/dist/application/context/search/ISearchProvider.d.ts +6 -0
- package/dist/application/context/search/ISearchProvider.d.ts.map +1 -0
- package/dist/application/context/search/ISearchProvider.js +2 -0
- package/dist/application/context/search/ISearchProvider.js.map +1 -0
- package/dist/application/context/search/LocalSearchGateway.d.ts +14 -0
- package/dist/application/context/search/LocalSearchGateway.d.ts.map +1 -0
- package/dist/application/context/search/LocalSearchGateway.js +40 -0
- package/dist/application/context/search/LocalSearchGateway.js.map +1 -0
- package/dist/application/context/search/SearchCategory.d.ts +10 -0
- package/dist/application/context/search/SearchCategory.d.ts.map +1 -0
- package/dist/application/context/search/SearchCategory.js +8 -0
- package/dist/application/context/search/SearchCategory.js.map +1 -0
- package/dist/application/context/search/SearchController.d.ts +9 -0
- package/dist/application/context/search/SearchController.d.ts.map +1 -0
- package/dist/application/context/search/SearchController.js +9 -0
- package/dist/application/context/search/SearchController.js.map +1 -0
- package/dist/application/context/search/SearchCriteria.d.ts +8 -0
- package/dist/application/context/search/SearchCriteria.d.ts.map +1 -0
- package/dist/application/context/search/SearchCriteria.js +2 -0
- package/dist/application/context/search/SearchCriteria.js.map +1 -0
- package/dist/application/context/search/SearchDocument.d.ts +16 -0
- package/dist/application/context/search/SearchDocument.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocument.js +2 -0
- package/dist/application/context/search/SearchDocument.js.map +1 -0
- package/dist/application/context/search/SearchDocumentChange.d.ts +10 -0
- package/dist/application/context/search/SearchDocumentChange.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocumentChange.js +2 -0
- package/dist/application/context/search/SearchDocumentChange.js.map +1 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.d.ts +9 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.js +17 -0
- package/dist/application/context/search/SearchDocumentProjectorRegistry.js.map +1 -0
- package/dist/application/context/search/SearchDocumentSource.d.ts +5 -0
- package/dist/application/context/search/SearchDocumentSource.d.ts.map +1 -0
- package/dist/application/context/search/SearchDocumentSource.js +2 -0
- package/dist/application/context/search/SearchDocumentSource.js.map +1 -0
- package/dist/application/context/search/SearchFacetValue.d.ts +2 -0
- package/dist/application/context/search/SearchFacetValue.d.ts.map +1 -0
- package/dist/application/context/search/SearchFacetValue.js +2 -0
- package/dist/application/context/search/SearchFacetValue.js.map +1 -0
- package/dist/application/context/search/SearchHit.d.ts +13 -0
- package/dist/application/context/search/SearchHit.d.ts.map +1 -0
- package/dist/application/context/search/SearchHit.js +2 -0
- package/dist/application/context/search/SearchHit.js.map +1 -0
- package/dist/application/context/search/SearchHitGroup.d.ts +7 -0
- package/dist/application/context/search/SearchHitGroup.d.ts.map +1 -0
- package/dist/application/context/search/SearchHitGroup.js +2 -0
- package/dist/application/context/search/SearchHitGroup.js.map +1 -0
- package/dist/application/context/search/SearchIndexEventHandler.d.ts +14 -0
- package/dist/application/context/search/SearchIndexEventHandler.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexEventHandler.js +24 -0
- package/dist/application/context/search/SearchIndexEventHandler.js.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildController.d.ts +9 -0
- package/dist/application/context/search/SearchIndexRebuildController.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildController.js +9 -0
- package/dist/application/context/search/SearchIndexRebuildController.js.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.d.ts +3 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.js +2 -0
- package/dist/application/context/search/SearchIndexRebuildRequest.js.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.d.ts +9 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.d.ts.map +1 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.js +2 -0
- package/dist/application/context/search/SearchIndexRebuildResponse.js.map +1 -0
- package/dist/application/context/search/SearchRequest.d.ts +5 -0
- package/dist/application/context/search/SearchRequest.d.ts.map +1 -0
- package/dist/application/context/search/SearchRequest.js +2 -0
- package/dist/application/context/search/SearchRequest.js.map +1 -0
- package/dist/application/context/search/SearchResponse.d.ts +7 -0
- package/dist/application/context/search/SearchResponse.d.ts.map +1 -0
- package/dist/application/context/search/SearchResponse.js +2 -0
- package/dist/application/context/search/SearchResponse.js.map +1 -0
- package/dist/application/context/search/SearchResultLimit.d.ts +6 -0
- package/dist/application/context/search/SearchResultLimit.d.ts.map +1 -0
- package/dist/application/context/search/SearchResultLimit.js +6 -0
- package/dist/application/context/search/SearchResultLimit.js.map +1 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.js +93 -0
- package/dist/application/context/search/projectors/ComponentSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.js +92 -0
- package/dist/application/context/search/projectors/DecisionSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.js +89 -0
- package/dist/application/context/search/projectors/DependencySearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.js +71 -0
- package/dist/application/context/search/projectors/GuidelineSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.d.ts +14 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.d.ts.map +1 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.js +61 -0
- package/dist/application/context/search/projectors/InvariantSearchDocumentProjector.js.map +1 -0
- package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts +5 -1
- package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts.map +1 -1
- package/dist/application/context/sessions/start/LocalStartSessionGateway.js +11 -2
- package/dist/application/context/sessions/start/LocalStartSessionGateway.js.map +1 -1
- package/dist/application/context/sessions/start/SessionStartResponse.d.ts +2 -0
- package/dist/application/context/sessions/start/SessionStartResponse.d.ts.map +1 -1
- package/dist/application/host/IApplicationContainer.d.ts +8 -0
- package/dist/application/host/IApplicationContainer.d.ts.map +1 -1
- package/dist/application/settings/Settings.d.ts +15 -0
- package/dist/application/settings/Settings.d.ts.map +1 -1
- package/dist/application/settings/Settings.js +4 -0
- package/dist/application/settings/Settings.js.map +1 -1
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.d.ts +18 -0
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.d.ts.map +1 -0
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.js +28 -0
- package/dist/infrastructure/context/search/LocalSearchIndexRebuildGateway.js.map +1 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.d.ts +10 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.d.ts.map +1 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.js +9 -0
- package/dist/infrastructure/context/search/ProjectedSearchIndexProvider.js.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.d.ts +14 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.d.ts.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.js +2 -0
- package/dist/infrastructure/context/search/SearchIndexRecord.js.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.d.ts +10 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.d.ts.map +1 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.js +44 -0
- package/dist/infrastructure/context/search/SearchIndexRecordMapper.js.map +1 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.d.ts +21 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.d.ts.map +1 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.js +94 -0
- package/dist/infrastructure/context/search/SqliteSearchIndexStore.js.map +1 -0
- package/dist/infrastructure/context/search/migrations/001-create-search-index-entries.sql +26 -0
- package/dist/infrastructure/host/HostBuilder.d.ts.map +1 -1
- package/dist/infrastructure/host/HostBuilder.js +23 -1
- package/dist/infrastructure/host/HostBuilder.js.map +1 -1
- package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts +1 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.d.ts.map +1 -1
- package/dist/infrastructure/messaging/ProjectionBusFactory.js +13 -0
- package/dist/infrastructure/messaging/ProjectionBusFactory.js.map +1 -1
- package/dist/infrastructure/persistence/migrations.config.d.ts.map +1 -1
- package/dist/infrastructure/persistence/migrations.config.js +1 -0
- package/dist/infrastructure/persistence/migrations.config.js.map +1 -1
- package/dist/infrastructure/settings/DefaultSettings.d.ts.map +1 -1
- package/dist/infrastructure/settings/DefaultSettings.js +4 -1
- package/dist/infrastructure/settings/DefaultSettings.js.map +1 -1
- package/dist/infrastructure/settings/FsSettingsInitializer.d.ts.map +1 -1
- package/dist/infrastructure/settings/FsSettingsInitializer.js +6 -0
- package/dist/infrastructure/settings/FsSettingsInitializer.js.map +1 -1
- package/dist/infrastructure/settings/FsSettingsReader.d.ts.map +1 -1
- package/dist/infrastructure/settings/FsSettingsReader.js +10 -0
- package/dist/infrastructure/settings/FsSettingsReader.js.map +1 -1
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.d.ts +20 -0
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.d.ts.map +1 -0
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.js +54 -0
- package/dist/presentation/cli/commands/index/rebuild/IndexRebuildOutputBuilder.js.map +1 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.d.ts +8 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.d.ts.map +1 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.js +45 -0
- package/dist/presentation/cli/commands/index/rebuild/index.rebuild.js.map +1 -0
- package/dist/presentation/cli/commands/registry/generated-commands.d.ts.map +1 -1
- package/dist/presentation/cli/commands/registry/generated-commands.js +12 -0
- package/dist/presentation/cli/commands/registry/generated-commands.js.map +1 -1
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.d.ts +17 -0
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.d.ts.map +1 -0
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.js +111 -0
- package/dist/presentation/cli/commands/search/SearchOutputBuilder.js.map +1 -0
- package/dist/presentation/cli/commands/search/search.d.ts +12 -0
- package/dist/presentation/cli/commands/search/search.d.ts.map +1 -0
- package/dist/presentation/cli/commands/search/search.js +119 -0
- package/dist/presentation/cli/commands/search/search.js.map +1 -0
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts +2 -0
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js +9 -1
- package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/help/SubcommandHelpFormatter.d.ts.map +1 -1
- package/dist/presentation/cli/help/SubcommandHelpFormatter.js +3 -4
- package/dist/presentation/cli/help/SubcommandHelpFormatter.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts +18 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js +2 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts +11 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js +58 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts +5 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js +11 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts +17 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js +86 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts +9 -7
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js +36 -187
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts +3 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js +7 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts +7 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js +25 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts +8 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts.map +1 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js +29 -0
- package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js.map +1 -0
- 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":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAU/F,MAAM,OAAO,mBAAmB;IAAhC;QACmB,YAAO,GAAG,IAAI,qBAAqB,EAAE,CAAC;IA0FzD,CAAC;IAxFC,KAAK,CAAC,QAAwB,EAAE,QAA8B,EAAE,MAA0B;QACxF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEhE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAEjG,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,qBAAqB,CAAC,QAAwB,EAAE,QAA8B,EAAE,MAA0B;QACxG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;YACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;YAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;YAC3B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACnD,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aACzD,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEO,SAAS,CAAC,GAAc,EAAE,MAA0B;QAC1D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,WAAW,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aACzH,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAExF,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,QAAwB;QAC5C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,QAAQ;YACR,IAAI;SACL,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAED,SAAS,YAAY,CAAC,GAAc,EAAE,MAA0B;IAC9D,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC;IAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,QAAQ;SACZ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,GAAc;IAClC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAkC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -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;
|
|
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 = "
|
|
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":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAIjF,MAAM,6BAA6B,GAAG,8BAA8B,CAAC;AACrE,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AACpD,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAC/D,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAC5D,MAAM,aAAa,GACjB,
|
|
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,
|
|
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 {
|
|
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
|
|
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>
|
|
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":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts.map
ADDED
|
@@ -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,
|
|
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"}
|