pm-orchestrator-runner 1.0.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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/dist/cli/cli-interface.d.ts +150 -0
  4. package/dist/cli/cli-interface.d.ts.map +1 -0
  5. package/dist/cli/cli-interface.js +606 -0
  6. package/dist/cli/cli-interface.js.map +1 -0
  7. package/dist/cli/index.d.ts +13 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +243 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/llm-sentinel.d.ts +15 -0
  12. package/dist/cli/llm-sentinel.d.ts.map +1 -0
  13. package/dist/cli/llm-sentinel.js +184 -0
  14. package/dist/cli/llm-sentinel.js.map +1 -0
  15. package/dist/config/configuration-manager.d.ts +149 -0
  16. package/dist/config/configuration-manager.d.ts.map +1 -0
  17. package/dist/config/configuration-manager.js +241 -0
  18. package/dist/config/configuration-manager.js.map +1 -0
  19. package/dist/continuation/continuation-control-manager.d.ts +154 -0
  20. package/dist/continuation/continuation-control-manager.d.ts.map +1 -0
  21. package/dist/continuation/continuation-control-manager.js +303 -0
  22. package/dist/continuation/continuation-control-manager.js.map +1 -0
  23. package/dist/core/runner-core.d.ts +474 -0
  24. package/dist/core/runner-core.d.ts.map +1 -0
  25. package/dist/core/runner-core.js +1311 -0
  26. package/dist/core/runner-core.js.map +1 -0
  27. package/dist/errors/error-codes.d.ts +105 -0
  28. package/dist/errors/error-codes.d.ts.map +1 -0
  29. package/dist/errors/error-codes.js +198 -0
  30. package/dist/errors/error-codes.js.map +1 -0
  31. package/dist/errors/runner-error.d.ts +14 -0
  32. package/dist/errors/runner-error.d.ts.map +1 -0
  33. package/dist/errors/runner-error.js +33 -0
  34. package/dist/errors/runner-error.js.map +1 -0
  35. package/dist/evidence/evidence-manager.d.ts +112 -0
  36. package/dist/evidence/evidence-manager.d.ts.map +1 -0
  37. package/dist/evidence/evidence-manager.js +337 -0
  38. package/dist/evidence/evidence-manager.js.map +1 -0
  39. package/dist/executor/claude-code-executor.d.ts +136 -0
  40. package/dist/executor/claude-code-executor.d.ts.map +1 -0
  41. package/dist/executor/claude-code-executor.js +643 -0
  42. package/dist/executor/claude-code-executor.js.map +1 -0
  43. package/dist/executor/deterministic-executor.d.ts +40 -0
  44. package/dist/executor/deterministic-executor.d.ts.map +1 -0
  45. package/dist/executor/deterministic-executor.js +269 -0
  46. package/dist/executor/deterministic-executor.js.map +1 -0
  47. package/dist/lifecycle/lifecycle-controller.d.ts +270 -0
  48. package/dist/lifecycle/lifecycle-controller.d.ts.map +1 -0
  49. package/dist/lifecycle/lifecycle-controller.js +596 -0
  50. package/dist/lifecycle/lifecycle-controller.js.map +1 -0
  51. package/dist/limits/resource-limit-manager.d.ts +200 -0
  52. package/dist/limits/resource-limit-manager.d.ts.map +1 -0
  53. package/dist/limits/resource-limit-manager.js +376 -0
  54. package/dist/limits/resource-limit-manager.js.map +1 -0
  55. package/dist/locks/lock-manager.d.ts +116 -0
  56. package/dist/locks/lock-manager.d.ts.map +1 -0
  57. package/dist/locks/lock-manager.js +306 -0
  58. package/dist/locks/lock-manager.js.map +1 -0
  59. package/dist/logging/index.d.ts +8 -0
  60. package/dist/logging/index.d.ts.map +1 -0
  61. package/dist/logging/index.js +22 -0
  62. package/dist/logging/index.js.map +1 -0
  63. package/dist/logging/sensitive-data-masker.d.ts +90 -0
  64. package/dist/logging/sensitive-data-masker.d.ts.map +1 -0
  65. package/dist/logging/sensitive-data-masker.js +228 -0
  66. package/dist/logging/sensitive-data-masker.js.map +1 -0
  67. package/dist/logging/task-log-manager.d.ts +215 -0
  68. package/dist/logging/task-log-manager.d.ts.map +1 -0
  69. package/dist/logging/task-log-manager.js +743 -0
  70. package/dist/logging/task-log-manager.js.map +1 -0
  71. package/dist/mediation/fail-closed-runner.d.ts +131 -0
  72. package/dist/mediation/fail-closed-runner.d.ts.map +1 -0
  73. package/dist/mediation/fail-closed-runner.js +245 -0
  74. package/dist/mediation/fail-closed-runner.js.map +1 -0
  75. package/dist/mediation/llm-client-with-evidence.d.ts +123 -0
  76. package/dist/mediation/llm-client-with-evidence.d.ts.map +1 -0
  77. package/dist/mediation/llm-client-with-evidence.js +245 -0
  78. package/dist/mediation/llm-client-with-evidence.js.map +1 -0
  79. package/dist/mediation/llm-client.d.ts +102 -0
  80. package/dist/mediation/llm-client.d.ts.map +1 -0
  81. package/dist/mediation/llm-client.js +206 -0
  82. package/dist/mediation/llm-client.js.map +1 -0
  83. package/dist/mediation/llm-evidence-manager.d.ts +108 -0
  84. package/dist/mediation/llm-evidence-manager.d.ts.map +1 -0
  85. package/dist/mediation/llm-evidence-manager.js +230 -0
  86. package/dist/mediation/llm-evidence-manager.js.map +1 -0
  87. package/dist/mediation/llm-mediation-layer.d.ts +175 -0
  88. package/dist/mediation/llm-mediation-layer.d.ts.map +1 -0
  89. package/dist/mediation/llm-mediation-layer.js +315 -0
  90. package/dist/mediation/llm-mediation-layer.js.map +1 -0
  91. package/dist/mediation/llm-sentinel.d.ts +107 -0
  92. package/dist/mediation/llm-sentinel.d.ts.map +1 -0
  93. package/dist/mediation/llm-sentinel.js +187 -0
  94. package/dist/mediation/llm-sentinel.js.map +1 -0
  95. package/dist/mediation/real-llm-mediation-layer.d.ts +104 -0
  96. package/dist/mediation/real-llm-mediation-layer.d.ts.map +1 -0
  97. package/dist/mediation/real-llm-mediation-layer.js +322 -0
  98. package/dist/mediation/real-llm-mediation-layer.js.map +1 -0
  99. package/dist/mediation/verdict-reporter.d.ts +61 -0
  100. package/dist/mediation/verdict-reporter.d.ts.map +1 -0
  101. package/dist/mediation/verdict-reporter.js +178 -0
  102. package/dist/mediation/verdict-reporter.js.map +1 -0
  103. package/dist/models/enums.d.ts +133 -0
  104. package/dist/models/enums.d.ts.map +1 -0
  105. package/dist/models/enums.js +201 -0
  106. package/dist/models/enums.js.map +1 -0
  107. package/dist/models/evidence.d.ts +60 -0
  108. package/dist/models/evidence.d.ts.map +1 -0
  109. package/dist/models/evidence.js +135 -0
  110. package/dist/models/evidence.js.map +1 -0
  111. package/dist/models/execution-result.d.ts +89 -0
  112. package/dist/models/execution-result.d.ts.map +1 -0
  113. package/dist/models/execution-result.js +197 -0
  114. package/dist/models/execution-result.js.map +1 -0
  115. package/dist/models/file-lock.d.ts +62 -0
  116. package/dist/models/file-lock.d.ts.map +1 -0
  117. package/dist/models/file-lock.js +133 -0
  118. package/dist/models/file-lock.js.map +1 -0
  119. package/dist/models/index.d.ts +12 -0
  120. package/dist/models/index.d.ts.map +1 -0
  121. package/dist/models/index.js +91 -0
  122. package/dist/models/index.js.map +1 -0
  123. package/dist/models/repl/index.d.ts +7 -0
  124. package/dist/models/repl/index.d.ts.map +1 -0
  125. package/dist/models/repl/index.js +32 -0
  126. package/dist/models/repl/index.js.map +1 -0
  127. package/dist/models/repl/model-registry.d.ts +73 -0
  128. package/dist/models/repl/model-registry.d.ts.map +1 -0
  129. package/dist/models/repl/model-registry.js +116 -0
  130. package/dist/models/repl/model-registry.js.map +1 -0
  131. package/dist/models/repl/repl-state.d.ts +86 -0
  132. package/dist/models/repl/repl-state.d.ts.map +1 -0
  133. package/dist/models/repl/repl-state.js +152 -0
  134. package/dist/models/repl/repl-state.js.map +1 -0
  135. package/dist/models/repl/task-log.d.ts +247 -0
  136. package/dist/models/repl/task-log.d.ts.map +1 -0
  137. package/dist/models/repl/task-log.js +178 -0
  138. package/dist/models/repl/task-log.js.map +1 -0
  139. package/dist/models/session.d.ts +71 -0
  140. package/dist/models/session.d.ts.map +1 -0
  141. package/dist/models/session.js +140 -0
  142. package/dist/models/session.js.map +1 -0
  143. package/dist/models/supporting.d.ts +97 -0
  144. package/dist/models/supporting.d.ts.map +1 -0
  145. package/dist/models/supporting.js +208 -0
  146. package/dist/models/supporting.js.map +1 -0
  147. package/dist/models/task.d.ts +77 -0
  148. package/dist/models/task.d.ts.map +1 -0
  149. package/dist/models/task.js +170 -0
  150. package/dist/models/task.js.map +1 -0
  151. package/dist/output/output-control-manager.d.ts +217 -0
  152. package/dist/output/output-control-manager.d.ts.map +1 -0
  153. package/dist/output/output-control-manager.js +378 -0
  154. package/dist/output/output-control-manager.js.map +1 -0
  155. package/dist/pool/agent-pool.d.ts +284 -0
  156. package/dist/pool/agent-pool.d.ts.map +1 -0
  157. package/dist/pool/agent-pool.js +451 -0
  158. package/dist/pool/agent-pool.js.map +1 -0
  159. package/dist/repl/commands/index.d.ts +12 -0
  160. package/dist/repl/commands/index.d.ts.map +1 -0
  161. package/dist/repl/commands/index.js +26 -0
  162. package/dist/repl/commands/index.js.map +1 -0
  163. package/dist/repl/commands/init.d.ts +31 -0
  164. package/dist/repl/commands/init.d.ts.map +1 -0
  165. package/dist/repl/commands/init.js +234 -0
  166. package/dist/repl/commands/init.js.map +1 -0
  167. package/dist/repl/commands/keys.d.ts +63 -0
  168. package/dist/repl/commands/keys.d.ts.map +1 -0
  169. package/dist/repl/commands/keys.js +114 -0
  170. package/dist/repl/commands/keys.js.map +1 -0
  171. package/dist/repl/commands/logs.d.ts +91 -0
  172. package/dist/repl/commands/logs.d.ts.map +1 -0
  173. package/dist/repl/commands/logs.js +200 -0
  174. package/dist/repl/commands/logs.js.map +1 -0
  175. package/dist/repl/commands/model.d.ts +85 -0
  176. package/dist/repl/commands/model.d.ts.map +1 -0
  177. package/dist/repl/commands/model.js +225 -0
  178. package/dist/repl/commands/model.js.map +1 -0
  179. package/dist/repl/commands/models.d.ts +50 -0
  180. package/dist/repl/commands/models.d.ts.map +1 -0
  181. package/dist/repl/commands/models.js +180 -0
  182. package/dist/repl/commands/models.js.map +1 -0
  183. package/dist/repl/commands/provider.d.ts +79 -0
  184. package/dist/repl/commands/provider.d.ts.map +1 -0
  185. package/dist/repl/commands/provider.js +291 -0
  186. package/dist/repl/commands/provider.js.map +1 -0
  187. package/dist/repl/commands/session.d.ts +50 -0
  188. package/dist/repl/commands/session.d.ts.map +1 -0
  189. package/dist/repl/commands/session.js +152 -0
  190. package/dist/repl/commands/session.js.map +1 -0
  191. package/dist/repl/commands/status.d.ts +55 -0
  192. package/dist/repl/commands/status.d.ts.map +1 -0
  193. package/dist/repl/commands/status.js +182 -0
  194. package/dist/repl/commands/status.js.map +1 -0
  195. package/dist/repl/index.d.ts +6 -0
  196. package/dist/repl/index.d.ts.map +1 -0
  197. package/dist/repl/index.js +25 -0
  198. package/dist/repl/index.js.map +1 -0
  199. package/dist/repl/repl-interface.d.ts +371 -0
  200. package/dist/repl/repl-interface.d.ts.map +1 -0
  201. package/dist/repl/repl-interface.js +1214 -0
  202. package/dist/repl/repl-interface.js.map +1 -0
  203. package/dist/session/session-manager.d.ts +85 -0
  204. package/dist/session/session-manager.d.ts.map +1 -0
  205. package/dist/session/session-manager.js +217 -0
  206. package/dist/session/session-manager.js.map +1 -0
  207. package/dist/supervisor/executor-supervisor.d.ts +90 -0
  208. package/dist/supervisor/executor-supervisor.d.ts.map +1 -0
  209. package/dist/supervisor/executor-supervisor.js +223 -0
  210. package/dist/supervisor/executor-supervisor.js.map +1 -0
  211. package/dist/supervisor/index.d.ts +5 -0
  212. package/dist/supervisor/index.d.ts.map +1 -0
  213. package/dist/supervisor/index.js +9 -0
  214. package/dist/supervisor/index.js.map +1 -0
  215. package/package.json +57 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Output Control Manager
3
+ * Based on 06_CORRECTNESS_PROPERTIES.md L141-147 (Property 15)
4
+ *
5
+ * Property 15: Output Control and Validation
6
+ * - All Claude Code output must be validated by Runner
7
+ * - Output without evidence, speculative expressions, direct communication are rejected
8
+ *
9
+ * Responsible for:
10
+ * - JSON-structured output
11
+ * - next_action field determination
12
+ * - incomplete_task_reasons
13
+ * - Output validation
14
+ * - Evidence summary
15
+ * - Error output formatting
16
+ * - Progress output
17
+ * - Output streaming (NDJSON)
18
+ * - Output destinations
19
+ * - Report generation
20
+ * - Output redaction
21
+ * - Exit codes
22
+ */
23
+ import { OverallStatus, TaskStatus } from '../models/enums';
24
+ import { ErrorCode } from '../errors/error-codes';
25
+ /**
26
+ * Output Control Manager Error
27
+ */
28
+ export declare class OutputControlError extends Error {
29
+ readonly code: ErrorCode;
30
+ readonly details?: Record<string, unknown>;
31
+ constructor(code: ErrorCode, message?: string, details?: Record<string, unknown>);
32
+ }
33
+ /**
34
+ * Format options interface
35
+ */
36
+ interface FormatOptions {
37
+ compact?: boolean;
38
+ }
39
+ /**
40
+ * Incomplete task interface
41
+ */
42
+ interface IncompleteTask {
43
+ task_id: string;
44
+ reason: string;
45
+ }
46
+ /**
47
+ * Evidence interface
48
+ */
49
+ interface Evidence {
50
+ files_collected: number;
51
+ hash: string;
52
+ index_hash?: string;
53
+ location: string;
54
+ }
55
+ /**
56
+ * Error info interface
57
+ */
58
+ interface ErrorInfo {
59
+ code: ErrorCode;
60
+ message: string;
61
+ stack?: string;
62
+ }
63
+ /**
64
+ * Output result interface
65
+ */
66
+ interface OutputResult {
67
+ session_id: string;
68
+ overall_status: OverallStatus;
69
+ tasks_completed?: number;
70
+ tasks_total?: number;
71
+ evidence_hash?: string;
72
+ incomplete_tasks?: IncompleteTask[];
73
+ evidence?: Evidence;
74
+ error?: ErrorInfo;
75
+ error_message?: string;
76
+ config?: Record<string, unknown>;
77
+ }
78
+ /**
79
+ * Progress update interface
80
+ */
81
+ interface ProgressUpdate {
82
+ session_id: string;
83
+ current_phase: string;
84
+ tasks_completed: number;
85
+ tasks_total: number;
86
+ elapsed_seconds?: number;
87
+ estimated_remaining_seconds?: number;
88
+ }
89
+ /**
90
+ * Phase info interface
91
+ */
92
+ interface PhaseInfo {
93
+ name: string;
94
+ status: string;
95
+ duration_seconds: number;
96
+ }
97
+ /**
98
+ * Task info interface
99
+ */
100
+ interface TaskInfo {
101
+ id: string;
102
+ status: TaskStatus;
103
+ duration_seconds: number;
104
+ }
105
+ /**
106
+ * Execution result interface
107
+ */
108
+ interface ExecutionResult {
109
+ session_id: string;
110
+ overall_status: OverallStatus;
111
+ started_at: string;
112
+ completed_at: string;
113
+ tasks_completed: number;
114
+ tasks_total: number;
115
+ phases?: PhaseInfo[];
116
+ tasks?: TaskInfo[];
117
+ }
118
+ /**
119
+ * Report interface
120
+ */
121
+ interface Report {
122
+ session_id: string;
123
+ overall_status: OverallStatus;
124
+ duration_seconds: number;
125
+ phases?: PhaseInfo[];
126
+ task_summary?: {
127
+ completed: number;
128
+ total: number;
129
+ };
130
+ }
131
+ /**
132
+ * Output callback type
133
+ */
134
+ type OutputCallback = (output: string) => void;
135
+ /**
136
+ * Output Control Manager class
137
+ */
138
+ export declare class OutputControlManager {
139
+ private debugMode;
140
+ private redactionEnabled;
141
+ private streamingEnabled;
142
+ private destination;
143
+ private outputCallbacks;
144
+ /**
145
+ * Create a new OutputControlManager
146
+ */
147
+ constructor();
148
+ /**
149
+ * Set debug mode
150
+ */
151
+ setDebugMode(enabled: boolean): void;
152
+ /**
153
+ * Set redaction enabled
154
+ */
155
+ setRedactionEnabled(enabled: boolean): void;
156
+ /**
157
+ * Enable streaming output
158
+ */
159
+ enableStreaming(enabled: boolean): void;
160
+ /**
161
+ * Register output callback
162
+ */
163
+ onOutput(callback: OutputCallback): void;
164
+ /**
165
+ * Get default destination
166
+ */
167
+ getDefaultDestination(): string;
168
+ /**
169
+ * Set output destination
170
+ * @throws OutputControlError if path is not writable
171
+ */
172
+ setDestination(filePath: string): void;
173
+ /**
174
+ * Get current destination
175
+ */
176
+ getDestination(): string;
177
+ /**
178
+ * Validate output result
179
+ * @throws OutputControlError if validation fails
180
+ */
181
+ private validateResult;
182
+ /**
183
+ * Determine next_action based on status
184
+ */
185
+ private determineNextAction;
186
+ /**
187
+ * Get reason for next_action
188
+ */
189
+ private getNextActionReason;
190
+ /**
191
+ * Redact sensitive information from an object
192
+ */
193
+ private redactSensitiveData;
194
+ /**
195
+ * Format output result as JSON
196
+ * @throws OutputControlError if validation fails
197
+ */
198
+ formatOutput(result: OutputResult, options?: FormatOptions): string;
199
+ /**
200
+ * Format progress update
201
+ */
202
+ formatProgress(progressUpdate: ProgressUpdate): string;
203
+ /**
204
+ * Emit progress in streaming mode
205
+ */
206
+ emitProgress(progressUpdate: ProgressUpdate): void;
207
+ /**
208
+ * Generate final execution report
209
+ */
210
+ generateReport(executionResult: ExecutionResult): Report;
211
+ /**
212
+ * Get exit code for a status
213
+ */
214
+ getExitCode(status: OverallStatus): number;
215
+ }
216
+ export {};
217
+ //# sourceMappingURL=output-control-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-control-manager.d.ts","sourceRoot":"","sources":["../../src/output/output-control-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,378 @@
1
+ "use strict";
2
+ /**
3
+ * Output Control Manager
4
+ * Based on 06_CORRECTNESS_PROPERTIES.md L141-147 (Property 15)
5
+ *
6
+ * Property 15: Output Control and Validation
7
+ * - All Claude Code output must be validated by Runner
8
+ * - Output without evidence, speculative expressions, direct communication are rejected
9
+ *
10
+ * Responsible for:
11
+ * - JSON-structured output
12
+ * - next_action field determination
13
+ * - incomplete_task_reasons
14
+ * - Output validation
15
+ * - Evidence summary
16
+ * - Error output formatting
17
+ * - Progress output
18
+ * - Output streaming (NDJSON)
19
+ * - Output destinations
20
+ * - Report generation
21
+ * - Output redaction
22
+ * - Exit codes
23
+ */
24
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ var desc = Object.getOwnPropertyDescriptor(m, k);
27
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
28
+ desc = { enumerable: true, get: function() { return m[k]; } };
29
+ }
30
+ Object.defineProperty(o, k2, desc);
31
+ }) : (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ o[k2] = m[k];
34
+ }));
35
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
36
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
37
+ }) : function(o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar = (this && this.__importStar) || (function () {
41
+ var ownKeys = function(o) {
42
+ ownKeys = Object.getOwnPropertyNames || function (o) {
43
+ var ar = [];
44
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
45
+ return ar;
46
+ };
47
+ return ownKeys(o);
48
+ };
49
+ return function (mod) {
50
+ if (mod && mod.__esModule) return mod;
51
+ var result = {};
52
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
53
+ __setModuleDefault(result, mod);
54
+ return result;
55
+ };
56
+ })();
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ exports.OutputControlManager = exports.OutputControlError = void 0;
59
+ const fs = __importStar(require("fs"));
60
+ const path = __importStar(require("path"));
61
+ const enums_1 = require("../models/enums");
62
+ const error_codes_1 = require("../errors/error-codes");
63
+ /**
64
+ * Output Control Manager Error
65
+ */
66
+ class OutputControlError extends Error {
67
+ code;
68
+ details;
69
+ constructor(code, message, details) {
70
+ super(message || (0, error_codes_1.getErrorMessage)(code));
71
+ this.name = 'OutputControlError';
72
+ this.code = code;
73
+ this.details = details;
74
+ }
75
+ }
76
+ exports.OutputControlError = OutputControlError;
77
+ /**
78
+ * Sensitive field patterns for redaction
79
+ */
80
+ const SENSITIVE_PATTERNS = [
81
+ 'api_key',
82
+ 'apikey',
83
+ 'token',
84
+ 'secret',
85
+ 'password',
86
+ 'credential',
87
+ 'auth',
88
+ 'bearer',
89
+ ];
90
+ /**
91
+ * Exit codes for different statuses
92
+ */
93
+ const EXIT_CODES = {
94
+ [enums_1.OverallStatus.COMPLETE]: 0,
95
+ [enums_1.OverallStatus.INCOMPLETE]: 1,
96
+ [enums_1.OverallStatus.NO_EVIDENCE]: 2,
97
+ [enums_1.OverallStatus.ERROR]: 3,
98
+ [enums_1.OverallStatus.INVALID]: 4,
99
+ };
100
+ /**
101
+ * Valid OverallStatus values
102
+ */
103
+ const VALID_STATUSES = Object.values(enums_1.OverallStatus);
104
+ /**
105
+ * Output Control Manager class
106
+ */
107
+ class OutputControlManager {
108
+ debugMode = false;
109
+ redactionEnabled = true;
110
+ streamingEnabled = false;
111
+ destination = 'stdout';
112
+ outputCallbacks = [];
113
+ /**
114
+ * Create a new OutputControlManager
115
+ */
116
+ constructor() {
117
+ // Default configuration
118
+ }
119
+ /**
120
+ * Set debug mode
121
+ */
122
+ setDebugMode(enabled) {
123
+ this.debugMode = enabled;
124
+ }
125
+ /**
126
+ * Set redaction enabled
127
+ */
128
+ setRedactionEnabled(enabled) {
129
+ this.redactionEnabled = enabled;
130
+ }
131
+ /**
132
+ * Enable streaming output
133
+ */
134
+ enableStreaming(enabled) {
135
+ this.streamingEnabled = enabled;
136
+ }
137
+ /**
138
+ * Register output callback
139
+ */
140
+ onOutput(callback) {
141
+ this.outputCallbacks.push(callback);
142
+ }
143
+ /**
144
+ * Get default destination
145
+ */
146
+ getDefaultDestination() {
147
+ return 'stdout';
148
+ }
149
+ /**
150
+ * Set output destination
151
+ * @throws OutputControlError if path is not writable
152
+ */
153
+ setDestination(filePath) {
154
+ // Validate that the directory exists and is writable
155
+ const dir = path.dirname(filePath);
156
+ try {
157
+ fs.accessSync(dir, fs.constants.W_OK);
158
+ }
159
+ catch {
160
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, `Output destination is not writable: ${filePath}`, { path: filePath });
161
+ }
162
+ this.destination = filePath;
163
+ }
164
+ /**
165
+ * Get current destination
166
+ */
167
+ getDestination() {
168
+ return this.destination;
169
+ }
170
+ /**
171
+ * Validate output result
172
+ * @throws OutputControlError if validation fails
173
+ */
174
+ validateResult(result, strict = false) {
175
+ // Check required fields
176
+ if (!result.session_id) {
177
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, 'Missing required field: session_id', { result });
178
+ }
179
+ if (result.overall_status === undefined) {
180
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, 'Missing required field: overall_status', { result });
181
+ }
182
+ // Validate overall_status is a valid enum value
183
+ if (!VALID_STATUSES.includes(result.overall_status)) {
184
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, `Invalid overall_status: ${result.overall_status}`, { result });
185
+ }
186
+ // In strict mode, require tasks_completed and tasks_total
187
+ if (strict) {
188
+ if (result.tasks_completed === undefined) {
189
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, 'Missing required field: tasks_completed', { result });
190
+ }
191
+ if (result.tasks_total === undefined) {
192
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, 'Missing required field: tasks_total', { result });
193
+ }
194
+ }
195
+ // Validate tasks_completed <= tasks_total when both are provided
196
+ if (result.tasks_completed !== undefined && result.tasks_total !== undefined) {
197
+ if (result.tasks_completed > result.tasks_total) {
198
+ throw new OutputControlError(error_codes_1.ErrorCode.E208_OUTPUT_VALIDATION_FAILED, `tasks_completed (${result.tasks_completed}) cannot exceed tasks_total (${result.tasks_total})`, { result });
199
+ }
200
+ }
201
+ }
202
+ /**
203
+ * Determine next_action based on status
204
+ */
205
+ determineNextAction(status) {
206
+ return status === enums_1.OverallStatus.COMPLETE;
207
+ }
208
+ /**
209
+ * Get reason for next_action
210
+ */
211
+ getNextActionReason(status, errorMessage) {
212
+ switch (status) {
213
+ case enums_1.OverallStatus.COMPLETE:
214
+ return 'All tasks completed successfully';
215
+ case enums_1.OverallStatus.INCOMPLETE:
216
+ return 'Some tasks are incomplete';
217
+ case enums_1.OverallStatus.ERROR:
218
+ return errorMessage || 'An error occurred during execution';
219
+ case enums_1.OverallStatus.INVALID:
220
+ return 'Session status is invalid';
221
+ case enums_1.OverallStatus.NO_EVIDENCE:
222
+ return 'No evidence collected';
223
+ default:
224
+ return 'Unknown status';
225
+ }
226
+ }
227
+ /**
228
+ * Redact sensitive information from an object
229
+ */
230
+ redactSensitiveData(obj) {
231
+ if (!this.redactionEnabled) {
232
+ return obj;
233
+ }
234
+ const result = {};
235
+ for (const [key, value] of Object.entries(obj)) {
236
+ const lowerKey = key.toLowerCase();
237
+ const isSensitive = SENSITIVE_PATTERNS.some(pattern => lowerKey.includes(pattern));
238
+ if (isSensitive && typeof value === 'string') {
239
+ result[key] = '[REDACTED]';
240
+ }
241
+ else if (value && typeof value === 'object' && !Array.isArray(value)) {
242
+ result[key] = this.redactSensitiveData(value);
243
+ }
244
+ else {
245
+ result[key] = value;
246
+ }
247
+ }
248
+ return result;
249
+ }
250
+ /**
251
+ * Format output result as JSON
252
+ * @throws OutputControlError if validation fails
253
+ */
254
+ formatOutput(result, options) {
255
+ // Validate the result
256
+ this.validateResult(result);
257
+ // Build output object
258
+ const output = {
259
+ timestamp: new Date().toISOString(),
260
+ session_id: result.session_id,
261
+ overall_status: result.overall_status,
262
+ tasks_completed: result.tasks_completed,
263
+ tasks_total: result.tasks_total,
264
+ next_action: this.determineNextAction(result.overall_status),
265
+ next_action_reason: this.getNextActionReason(result.overall_status, result.error_message),
266
+ };
267
+ // Add evidence_hash if provided
268
+ if (result.evidence_hash) {
269
+ output.evidence_hash = result.evidence_hash;
270
+ }
271
+ // Add incomplete_task_reasons
272
+ if (result.incomplete_tasks) {
273
+ output.incomplete_task_reasons = result.incomplete_tasks;
274
+ }
275
+ else {
276
+ output.incomplete_task_reasons = [];
277
+ }
278
+ // Add evidence_summary if provided
279
+ if (result.evidence) {
280
+ output.evidence_summary = {
281
+ files_collected: result.evidence.files_collected,
282
+ hash: result.evidence.hash,
283
+ ...(result.evidence.index_hash && { index_hash: result.evidence.index_hash }),
284
+ location: result.evidence.location,
285
+ };
286
+ }
287
+ // Add error if provided
288
+ if (result.error) {
289
+ output.error = {
290
+ code: result.error.code,
291
+ message: result.error.message,
292
+ ...(this.debugMode && result.error.stack && { stack: result.error.stack }),
293
+ };
294
+ }
295
+ // Add config (redacted if needed)
296
+ if (result.config) {
297
+ output.config = this.redactSensitiveData(result.config);
298
+ }
299
+ // Format as JSON
300
+ const indent = options?.compact ? 0 : 2;
301
+ return JSON.stringify(output, null, indent);
302
+ }
303
+ /**
304
+ * Format progress update
305
+ */
306
+ formatProgress(progressUpdate) {
307
+ const progressPercent = progressUpdate.tasks_total > 0
308
+ ? Math.round((progressUpdate.tasks_completed / progressUpdate.tasks_total) * 100)
309
+ : 0;
310
+ const output = {
311
+ timestamp: new Date().toISOString(),
312
+ type: 'progress',
313
+ session_id: progressUpdate.session_id,
314
+ current_phase: progressUpdate.current_phase,
315
+ tasks_completed: progressUpdate.tasks_completed,
316
+ tasks_total: progressUpdate.tasks_total,
317
+ progress_percent: progressPercent,
318
+ };
319
+ if (progressUpdate.elapsed_seconds !== undefined) {
320
+ output.elapsed_seconds = progressUpdate.elapsed_seconds;
321
+ }
322
+ if (progressUpdate.estimated_remaining_seconds !== undefined) {
323
+ output.eta_seconds = progressUpdate.estimated_remaining_seconds;
324
+ }
325
+ return JSON.stringify(output, null, 2);
326
+ }
327
+ /**
328
+ * Emit progress in streaming mode
329
+ */
330
+ emitProgress(progressUpdate) {
331
+ if (!this.streamingEnabled) {
332
+ return;
333
+ }
334
+ const output = JSON.stringify({
335
+ timestamp: new Date().toISOString(),
336
+ type: 'progress',
337
+ session_id: progressUpdate.session_id,
338
+ current_phase: progressUpdate.current_phase,
339
+ tasks_completed: progressUpdate.tasks_completed,
340
+ tasks_total: progressUpdate.tasks_total,
341
+ });
342
+ // Notify all callbacks
343
+ for (const callback of this.outputCallbacks) {
344
+ callback(output);
345
+ }
346
+ }
347
+ /**
348
+ * Generate final execution report
349
+ */
350
+ generateReport(executionResult) {
351
+ const startedAt = new Date(executionResult.started_at);
352
+ const completedAt = new Date(executionResult.completed_at);
353
+ const durationSeconds = Math.round((completedAt.getTime() - startedAt.getTime()) / 1000);
354
+ const report = {
355
+ session_id: executionResult.session_id,
356
+ overall_status: executionResult.overall_status,
357
+ duration_seconds: durationSeconds,
358
+ };
359
+ if (executionResult.phases) {
360
+ report.phases = executionResult.phases;
361
+ }
362
+ if (executionResult.tasks || executionResult.tasks_total !== undefined) {
363
+ report.task_summary = {
364
+ completed: executionResult.tasks_completed,
365
+ total: executionResult.tasks_total,
366
+ };
367
+ }
368
+ return report;
369
+ }
370
+ /**
371
+ * Get exit code for a status
372
+ */
373
+ getExitCode(status) {
374
+ return EXIT_CODES[status];
375
+ }
376
+ }
377
+ exports.OutputControlManager = OutputControlManager;
378
+ //# sourceMappingURL=output-control-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-control-manager.js","sourceRoot":"","sources":["../../src/output/output-control-manager.ts"],"names":[],"mappings":"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"}