jumbo-cli 3.3.0 → 3.4.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 (70) 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/sessions/start/LocalStartSessionGateway.d.ts +5 -1
  11. package/dist/application/context/sessions/start/LocalStartSessionGateway.d.ts.map +1 -1
  12. package/dist/application/context/sessions/start/LocalStartSessionGateway.js +11 -2
  13. package/dist/application/context/sessions/start/LocalStartSessionGateway.js.map +1 -1
  14. package/dist/application/context/sessions/start/SessionStartResponse.d.ts +2 -0
  15. package/dist/application/context/sessions/start/SessionStartResponse.d.ts.map +1 -1
  16. package/dist/application/host/IApplicationContainer.d.ts +2 -0
  17. package/dist/application/host/IApplicationContainer.d.ts.map +1 -1
  18. package/dist/application/settings/Settings.d.ts +15 -0
  19. package/dist/application/settings/Settings.d.ts.map +1 -1
  20. package/dist/application/settings/Settings.js +4 -0
  21. package/dist/application/settings/Settings.js.map +1 -1
  22. package/dist/infrastructure/host/HostBuilder.d.ts.map +1 -1
  23. package/dist/infrastructure/host/HostBuilder.js +4 -1
  24. package/dist/infrastructure/host/HostBuilder.js.map +1 -1
  25. package/dist/infrastructure/settings/DefaultSettings.d.ts.map +1 -1
  26. package/dist/infrastructure/settings/DefaultSettings.js +4 -1
  27. package/dist/infrastructure/settings/DefaultSettings.js.map +1 -1
  28. package/dist/infrastructure/settings/FsSettingsInitializer.d.ts.map +1 -1
  29. package/dist/infrastructure/settings/FsSettingsInitializer.js +6 -0
  30. package/dist/infrastructure/settings/FsSettingsInitializer.js.map +1 -1
  31. package/dist/infrastructure/settings/FsSettingsReader.d.ts.map +1 -1
  32. package/dist/infrastructure/settings/FsSettingsReader.js +10 -0
  33. package/dist/infrastructure/settings/FsSettingsReader.js.map +1 -1
  34. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts +2 -0
  35. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.d.ts.map +1 -1
  36. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js +9 -1
  37. package/dist/presentation/cli/commands/sessions/start/SessionStartOutputBuilder.js.map +1 -1
  38. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts +18 -0
  39. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts.map +1 -0
  40. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js +2 -0
  41. package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.js.map +1 -0
  42. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts +11 -0
  43. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.d.ts.map +1 -0
  44. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js +58 -0
  45. package/dist/presentation/tui/daemon-subprocesses/TuiDaemonOutputEventParser.js.map +1 -0
  46. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts +5 -0
  47. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.d.ts.map +1 -0
  48. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js +11 -0
  49. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessConfigResolver.js.map +1 -0
  50. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts +17 -0
  51. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.d.ts.map +1 -0
  52. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js +86 -0
  53. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessLifecycleEventRecorder.js.map +1 -0
  54. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts +9 -7
  55. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.d.ts.map +1 -1
  56. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js +36 -187
  57. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessManager.js.map +1 -1
  58. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts +3 -0
  59. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.d.ts.map +1 -0
  60. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js +7 -0
  61. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.js.map +1 -0
  62. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts +7 -0
  63. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.d.ts.map +1 -0
  64. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js +25 -0
  65. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.js.map +1 -0
  66. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts +8 -0
  67. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.d.ts.map +1 -0
  68. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js +29 -0
  69. package/dist/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.js.map +1 -0
  70. package/package.json +1 -1
@@ -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"}
@@ -1,45 +1,29 @@
1
- import { DEFAULT_WORKER_DAEMON_CONFIG, WORKER_DAEMON_NAMES, } from "../../../application/daemons/WorkerDaemonCatalog.js";
2
- import { TuiDaemonEventStatus, } from "./TuiDaemonEventStatus.js";
3
- import { TuiDaemonEventCategory } from "./TuiDaemonEventCategory.js";
1
+ import { WORKER_DAEMON_NAMES, } from "../../../application/daemons/WorkerDaemonCatalog.js";
2
+ import { TuiDaemonOutputEventParser } from "./TuiDaemonOutputEventParser.js";
3
+ import { TuiSubprocessConfigResolver } from "./TuiSubprocessConfigResolver.js";
4
4
  import { TuiSubprocessStatus, } from "./TuiSubprocessStatus.js";
5
5
  import { TuiSubprocessCopy } from "./TuiSubprocessCopy.js";
6
- const OUTPUT_RING_BUFFER_SIZE = 25;
7
- const EVENT_RING_BUFFER_SIZE = 50;
8
- const OUTPUT_CHUNK_MAX_LENGTH = 16384;
9
- const OUTPUT_LINE_MAX_LENGTH = 2048;
10
- const EVENT_TEXT_FIELD_MAX_LENGTH = 2048;
11
- const SUBPROCESS_EVENT_COPY = {
12
- stopping: {
13
- category: TuiDaemonEventCategory.STOPPING,
14
- message: TuiSubprocessCopy.terminationRequested,
15
- },
16
- stopped: {
17
- category: TuiDaemonEventCategory.STOPPED,
18
- message: TuiSubprocessCopy.processStopped,
19
- },
20
- failed: {
21
- category: TuiDaemonEventCategory.FAILED,
22
- message: TuiSubprocessCopy.processFailed,
23
- },
24
- };
25
- const NOOP_LOGGER = {
26
- error: () => { },
27
- warn: () => { },
28
- info: () => { },
29
- debug: () => { },
30
- };
6
+ import { TuiSubprocessLifecycleEventRecorder } from "./TuiSubprocessLifecycleEventRecorder.js";
7
+ import { TuiSubprocessNoOpLogger } from "./TuiSubprocessNoOpLogger.js";
8
+ import { TuiSubprocessOutputRingBuffer } from "./TuiSubprocessOutputRingBuffer.js";
9
+ import { TuiSubprocessSnapshotMapper } from "./TuiSubprocessSnapshotMapper.js";
31
10
  export class TuiSubprocessManager {
32
- constructor(processController, logger = NOOP_LOGGER) {
11
+ constructor(processController, logger = TuiSubprocessNoOpLogger) {
33
12
  this.processController = processController;
34
13
  this.logger = logger;
35
14
  this.processes = new Map();
15
+ this.configResolver = new TuiSubprocessConfigResolver();
16
+ this.outputRingBuffer = new TuiSubprocessOutputRingBuffer();
17
+ this.outputEventParser = new TuiDaemonOutputEventParser();
18
+ this.snapshotMapper = new TuiSubprocessSnapshotMapper();
19
+ this.lifecycleEventRecorder = new TuiSubprocessLifecycleEventRecorder(logger, this.outputEventParser);
36
20
  }
37
21
  async spawn(name, config = {}) {
38
22
  const existing = this.processes.get(name);
39
23
  if (existing?.status === TuiSubprocessStatus.RUNNING) {
40
- return this.toSnapshot(existing);
24
+ return this.snapshotMapper.fromManagedSubprocess(existing);
41
25
  }
42
- const resolvedConfig = this.resolveConfig(config);
26
+ const resolvedConfig = this.configResolver.resolve(config);
43
27
  this.logger.info(TuiSubprocessCopy.spawnRequestedLog, {
44
28
  daemon: name,
45
29
  config: resolvedConfig,
@@ -61,24 +45,24 @@ export class TuiSubprocessManager {
61
45
  pid: child.pid,
62
46
  });
63
47
  child.stdout?.on("data", (chunk) => {
64
- const text = limitTextTail(chunk.toString(), OUTPUT_CHUNK_MAX_LENGTH);
65
- const lines = this.appendLines(managed.stdout, text);
48
+ const text = this.outputRingBuffer.limitChunk(chunk.toString());
49
+ const lines = this.outputRingBuffer.appendLines(managed.stdout, text);
66
50
  this.logger.info(TuiSubprocessCopy.stdoutLog, { daemon: name, text });
67
- const events = lines.map((line) => parseDaemonOutputEvent(name, line));
51
+ const events = lines.map((line) => this.outputEventParser.parseOutputLine(name, line));
68
52
  for (const event of events) {
69
- this.recordDaemonEvent(managed, event);
53
+ this.lifecycleEventRecorder.recordDaemonEvent(managed, event);
70
54
  }
71
55
  });
72
56
  child.stderr?.on("data", (chunk) => {
73
- const text = limitTextTail(chunk.toString(), OUTPUT_CHUNK_MAX_LENGTH);
74
- this.appendLines(managed.stderr, text);
57
+ const text = this.outputRingBuffer.limitChunk(chunk.toString());
58
+ this.outputRingBuffer.appendLines(managed.stderr, text);
75
59
  this.logger.warn(TuiSubprocessCopy.stderrLog, { daemon: name, text });
76
60
  });
77
61
  child.on("close", (code, signal) => {
78
62
  managed.exitCode = code;
79
63
  managed.exitSignal = signal;
80
64
  managed.status = this.resolveClosedStatus(managed, code);
81
- this.recordSubprocessTerminalEvent(managed);
65
+ this.lifecycleEventRecorder.recordTerminalEvent(managed);
82
66
  this.logger.info(TuiSubprocessCopy.closedLog, {
83
67
  daemon: name,
84
68
  exitCode: code,
@@ -91,16 +75,16 @@ export class TuiSubprocessManager {
91
75
  managed.status = managed.stopRequested
92
76
  ? TuiSubprocessStatus.STOPPED
93
77
  : TuiSubprocessStatus.FAILED;
94
- const errorMessage = limitTextTail(error.message, EVENT_TEXT_FIELD_MAX_LENGTH);
95
- this.appendLines(managed.stderr, errorMessage);
96
- this.recordSubprocessTerminalEvent(managed, errorMessage);
97
- this.logger.error(TuiSubprocessCopy.errorLog, boundedError(error), {
78
+ const errorMessage = this.outputEventParser.boundTextField(error.message);
79
+ this.outputRingBuffer.appendLines(managed.stderr, errorMessage);
80
+ this.lifecycleEventRecorder.recordTerminalEvent(managed, errorMessage);
81
+ this.logger.error(TuiSubprocessCopy.errorLog, this.lifecycleEventRecorder.boundErrorForLog(error), {
98
82
  daemon: name,
99
83
  stopRequested: managed.stopRequested,
100
84
  status: managed.status,
101
85
  });
102
86
  });
103
- return this.toSnapshot(managed);
87
+ return this.snapshotMapper.fromManagedSubprocess(managed);
104
88
  }
105
89
  async terminate(name) {
106
90
  const managed = this.processes.get(name);
@@ -112,10 +96,7 @@ export class TuiSubprocessManager {
112
96
  const strategy = managed.child.pid === undefined
113
97
  ? { kind: "no-pid" }
114
98
  : this.processController.getTerminationStrategy(managed.child);
115
- this.recordSubprocessLifecycleEvent(managed, {
116
- status: TuiDaemonEventStatus.STOPPING,
117
- ...SUBPROCESS_EVENT_COPY.stopping,
118
- });
99
+ this.lifecycleEventRecorder.recordStopping(managed);
119
100
  this.logger.info(TuiSubprocessCopy.terminationRequestedLog, {
120
101
  daemon: name,
121
102
  pid: managed.child.pid,
@@ -123,10 +104,7 @@ export class TuiSubprocessManager {
123
104
  });
124
105
  await this.processController.terminateDaemonProcess(managed.child);
125
106
  managed.status = TuiSubprocessStatus.STOPPED;
126
- this.recordSubprocessLifecycleEvent(managed, {
127
- status: TuiDaemonEventStatus.STOPPED,
128
- ...SUBPROCESS_EVENT_COPY.stopped,
129
- });
107
+ this.lifecycleEventRecorder.recordStopped(managed);
130
108
  this.logger.info(TuiSubprocessCopy.terminationCompletedLog, {
131
109
  daemon: name,
132
110
  pid: managed.child.pid,
@@ -136,20 +114,16 @@ export class TuiSubprocessManager {
136
114
  catch (error) {
137
115
  managed.stopRequested = false;
138
116
  managed.status = TuiSubprocessStatus.FAILED;
139
- const errorMessage = limitTextTail(error instanceof Error ? error.message : String(error), EVENT_TEXT_FIELD_MAX_LENGTH);
140
- this.appendLines(managed.stderr, errorMessage);
141
- this.recordSubprocessLifecycleEvent(managed, {
142
- status: TuiDaemonEventStatus.FAILED,
143
- errorMessage,
144
- ...SUBPROCESS_EVENT_COPY.failed,
145
- });
146
- this.logger.error(TuiSubprocessCopy.terminationFailedLog, boundedError(error), {
117
+ const errorMessage = this.outputEventParser.boundTextField(error instanceof Error ? error.message : String(error));
118
+ this.outputRingBuffer.appendLines(managed.stderr, errorMessage);
119
+ this.lifecycleEventRecorder.recordFailed(managed, errorMessage);
120
+ this.logger.error(TuiSubprocessCopy.terminationFailedLog, this.lifecycleEventRecorder.boundErrorForLog(error), {
147
121
  daemon: name,
148
122
  pid: managed.child.pid,
149
123
  stopRequested: managed.stopRequested,
150
124
  });
151
125
  }
152
- return this.toSnapshot(managed);
126
+ return this.snapshotMapper.fromManagedSubprocess(managed);
153
127
  }
154
128
  async terminateAll() {
155
129
  await Promise.all(Array.from(this.processes.keys()).map((name) => this.terminate(name)));
@@ -157,143 +131,18 @@ export class TuiSubprocessManager {
157
131
  getStatus(name) {
158
132
  const managed = this.processes.get(name);
159
133
  if (managed === undefined) {
160
- return {
161
- name,
162
- status: TuiSubprocessStatus.STOPPED,
163
- config: DEFAULT_WORKER_DAEMON_CONFIG,
164
- stdout: [],
165
- stderr: [],
166
- events: [],
167
- };
134
+ return this.snapshotMapper.stopped(name);
168
135
  }
169
- return this.toSnapshot(managed);
136
+ return this.snapshotMapper.fromManagedSubprocess(managed);
170
137
  }
171
138
  getAllStatuses() {
172
139
  return WORKER_DAEMON_NAMES.map((name) => this.getStatus(name));
173
140
  }
174
- resolveConfig(config) {
175
- return {
176
- agentId: config.agentId ?? DEFAULT_WORKER_DAEMON_CONFIG.agentId,
177
- pollIntervalMs: config.pollIntervalMs ?? DEFAULT_WORKER_DAEMON_CONFIG.pollIntervalMs,
178
- maxRetries: config.maxRetries ?? DEFAULT_WORKER_DAEMON_CONFIG.maxRetries,
179
- };
180
- }
181
141
  resolveClosedStatus(process, code) {
182
142
  if (process.stopRequested) {
183
143
  return TuiSubprocessStatus.STOPPED;
184
144
  }
185
145
  return code === 0 ? TuiSubprocessStatus.STOPPED : TuiSubprocessStatus.FAILED;
186
146
  }
187
- appendLines(buffer, value) {
188
- const lines = value
189
- .split(/\r?\n/)
190
- .filter((line) => line.length > 0);
191
- buffer.push(...lines.map((line) => limitTextTail(line, OUTPUT_LINE_MAX_LENGTH)));
192
- while (buffer.length > OUTPUT_RING_BUFFER_SIZE) {
193
- buffer.shift();
194
- }
195
- return lines;
196
- }
197
- toSnapshot(process) {
198
- return {
199
- name: process.name,
200
- status: process.status,
201
- config: process.config,
202
- pid: process.child.pid,
203
- stdout: [...process.stdout],
204
- stderr: [...process.stderr],
205
- events: [...process.events],
206
- exitCode: process.exitCode,
207
- exitSignal: process.exitSignal,
208
- stopRequested: process.stopRequested,
209
- };
210
- }
211
- recordSubprocessTerminalEvent(process, errorMessage = process.stderr[process.stderr.length - 1]) {
212
- const status = process.status === TuiSubprocessStatus.STOPPED
213
- ? TuiDaemonEventStatus.STOPPED
214
- : TuiDaemonEventStatus.FAILED;
215
- this.recordSubprocessLifecycleEvent(process, {
216
- status,
217
- exitCode: process.exitCode ?? undefined,
218
- errorMessage: status === TuiDaemonEventStatus.FAILED ? errorMessage : undefined,
219
- ...(status === TuiDaemonEventStatus.STOPPED ? SUBPROCESS_EVENT_COPY.stopped : SUBPROCESS_EVENT_COPY.failed),
220
- });
221
- }
222
- recordSubprocessLifecycleEvent(process, event) {
223
- const lastEvent = process.events[process.events.length - 1];
224
- if (lastEvent?.source === process.name && lastEvent.status === event.status) {
225
- return;
226
- }
227
- this.recordDaemonEvent(process, {
228
- daemon: process.name,
229
- source: process.name,
230
- timestampMs: Date.now(),
231
- ...event,
232
- });
233
- }
234
- recordDaemonEvent(process, event) {
235
- const boundedEvent = boundDaemonEvent(event);
236
- this.logger.info(TuiSubprocessCopy.eventLog, { daemon: process.name, event: boundedEvent });
237
- process.events.push(boundedEvent);
238
- while (process.events.length > EVENT_RING_BUFFER_SIZE) {
239
- process.events.shift();
240
- }
241
- }
242
- }
243
- function parseDaemonOutputEvent(daemon, line) {
244
- const parsedEvent = parseDaemonEvent(line);
245
- if (parsedEvent !== null) {
246
- return parsedEvent;
247
- }
248
- return {
249
- daemon,
250
- status: TuiDaemonEventStatus.PROCESSING,
251
- source: daemon,
252
- category: TuiDaemonEventCategory.MODEL_OUTPUT,
253
- message: limitTextTail(line, EVENT_TEXT_FIELD_MAX_LENGTH),
254
- timestampMs: Date.now(),
255
- };
256
- }
257
- function parseDaemonEvent(line) {
258
- try {
259
- const parsed = JSON.parse(line);
260
- if (typeof parsed.daemon !== "string" || typeof parsed.status !== "string") {
261
- return null;
262
- }
263
- return {
264
- ...parsed,
265
- timestampMs: parsed.timestampMs ?? Date.now(),
266
- };
267
- }
268
- catch {
269
- return null;
270
- }
271
- }
272
- function boundDaemonEvent(event) {
273
- return {
274
- ...event,
275
- daemon: limitTextTail(event.daemon, EVENT_TEXT_FIELD_MAX_LENGTH),
276
- status: limitTextTail(event.status, EVENT_TEXT_FIELD_MAX_LENGTH),
277
- source: boundOptionalText(event.source),
278
- category: boundOptionalText(event.category),
279
- message: boundOptionalText(event.message),
280
- goalId: boundOptionalText(event.goalId),
281
- errorMessage: boundOptionalText(event.errorMessage),
282
- };
283
- }
284
- function boundOptionalText(value) {
285
- return value === undefined ? undefined : limitTextTail(value, EVENT_TEXT_FIELD_MAX_LENGTH);
286
- }
287
- function boundedError(error) {
288
- if (!(error instanceof Error)) {
289
- return error;
290
- }
291
- const bounded = new Error(limitTextTail(error.message, EVENT_TEXT_FIELD_MAX_LENGTH));
292
- bounded.name = error.name;
293
- bounded.stack = boundOptionalText(error.stack);
294
- return bounded;
295
- }
296
- function limitTextTail(value, maxLength) {
297
- return value.length > maxLength ? value.slice(-maxLength) : value;
298
147
  }
299
148
  //# sourceMappingURL=TuiSubprocessManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TuiSubprocessManager.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TuiSubprocessManager.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ILogger } from "../../../application/logging/ILogger.js";
2
+ export declare const TuiSubprocessNoOpLogger: ILogger;
3
+ //# sourceMappingURL=TuiSubprocessNoOpLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessNoOpLogger.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAEvE,eAAO,MAAM,uBAAuB,EAAE,OAKrC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const TuiSubprocessNoOpLogger = {
2
+ error: () => { },
3
+ warn: () => { },
4
+ info: () => { },
5
+ debug: () => { },
6
+ };
7
+ //# sourceMappingURL=TuiSubprocessNoOpLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessNoOpLogger.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessNoOpLogger.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAY;IAC9C,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare class TuiSubprocessOutputRingBuffer {
2
+ limitChunk(value: string): string;
3
+ appendLines(buffer: string[], value: string): string[];
4
+ limitTextField(value: string): string;
5
+ private limitTextTail;
6
+ }
7
+ //# sourceMappingURL=TuiSubprocessOutputRingBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessOutputRingBuffer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.ts"],"names":[],"mappings":"AAIA,qBAAa,6BAA6B;IACxC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAWtD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC,OAAO,CAAC,aAAa;CAGtB"}
@@ -0,0 +1,25 @@
1
+ const OUTPUT_RING_BUFFER_SIZE = 25;
2
+ const OUTPUT_CHUNK_MAX_LENGTH = 16384;
3
+ const OUTPUT_LINE_MAX_LENGTH = 2048;
4
+ export class TuiSubprocessOutputRingBuffer {
5
+ limitChunk(value) {
6
+ return this.limitTextTail(value, OUTPUT_CHUNK_MAX_LENGTH);
7
+ }
8
+ appendLines(buffer, value) {
9
+ const lines = value
10
+ .split(/\r?\n/)
11
+ .filter((line) => line.length > 0);
12
+ buffer.push(...lines.map((line) => this.limitTextTail(line, OUTPUT_LINE_MAX_LENGTH)));
13
+ while (buffer.length > OUTPUT_RING_BUFFER_SIZE) {
14
+ buffer.shift();
15
+ }
16
+ return lines;
17
+ }
18
+ limitTextField(value) {
19
+ return this.limitTextTail(value, OUTPUT_LINE_MAX_LENGTH);
20
+ }
21
+ limitTextTail(value, maxLength) {
22
+ return value.length > maxLength ? value.slice(-maxLength) : value;
23
+ }
24
+ }
25
+ //# sourceMappingURL=TuiSubprocessOutputRingBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessOutputRingBuffer.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessOutputRingBuffer.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,uBAAuB,GAAG,KAAM,CAAC;AACvC,MAAM,sBAAsB,GAAG,IAAK,CAAC;AAErC,MAAM,OAAO,6BAA6B;IACxC,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC5D,CAAC;IAED,WAAW,CAAC,MAAgB,EAAE,KAAa;QACzC,MAAM,KAAK,GAAG,KAAK;aAChB,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACtF,OAAO,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAC/C,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IAC3D,CAAC;IAEO,aAAa,CAAC,KAAa,EAAE,SAAiB;QACpD,OAAO,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { ManagedSubprocess } from "./ManagedSubprocess.js";
2
+ import type { TuiDaemonName } from "./TuiDaemonName.js";
3
+ import type { TuiSubprocessSnapshot } from "./TuiSubprocessSnapshot.js";
4
+ export declare class TuiSubprocessSnapshotMapper {
5
+ stopped(name: TuiDaemonName): TuiSubprocessSnapshot;
6
+ fromManagedSubprocess(process: ManagedSubprocess): TuiSubprocessSnapshot;
7
+ }
8
+ //# sourceMappingURL=TuiSubprocessSnapshotMapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TuiSubprocessSnapshotMapper.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/TuiSubprocessSnapshotMapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,qBAAa,2BAA2B;IACtC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB;IAWnD,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,qBAAqB;CAczE"}
@@ -0,0 +1,29 @@
1
+ import { DEFAULT_WORKER_DAEMON_CONFIG } from "../../../application/daemons/WorkerDaemonCatalog.js";
2
+ import { TuiSubprocessStatus } from "./TuiSubprocessStatus.js";
3
+ export class TuiSubprocessSnapshotMapper {
4
+ stopped(name) {
5
+ return {
6
+ name,
7
+ status: TuiSubprocessStatus.STOPPED,
8
+ config: DEFAULT_WORKER_DAEMON_CONFIG,
9
+ stdout: [],
10
+ stderr: [],
11
+ events: [],
12
+ };
13
+ }
14
+ fromManagedSubprocess(process) {
15
+ return {
16
+ name: process.name,
17
+ status: process.status,
18
+ config: process.config,
19
+ pid: process.child.pid,
20
+ stdout: [...process.stdout],
21
+ stderr: [...process.stderr],
22
+ events: [...process.events],
23
+ exitCode: process.exitCode,
24
+ exitSignal: process.exitSignal,
25
+ stopRequested: process.stopRequested,
26
+ };
27
+ }
28
+ }
29
+ //# sourceMappingURL=TuiSubprocessSnapshotMapper.js.map