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,606 @@
1
+ "use strict";
2
+ /**
3
+ * CLI Interface for PM Orchestrator Runner
4
+ * Based on 05_CLI.md specification
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.CLI = exports.CLIError = void 0;
41
+ exports.parseArgs = parseArgs;
42
+ exports.validateArgs = validateArgs;
43
+ const events_1 = require("events");
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const yaml = __importStar(require("yaml"));
47
+ const runner_core_1 = require("../core/runner-core");
48
+ const enums_1 = require("../models/enums");
49
+ const error_codes_1 = require("../errors/error-codes");
50
+ const session_1 = require("../models/session");
51
+ /**
52
+ * CLI Error class
53
+ */
54
+ class CLIError extends Error {
55
+ code;
56
+ details;
57
+ constructor(code, message, details) {
58
+ super(message || (0, error_codes_1.getErrorMessage)(code));
59
+ this.name = 'CLIError';
60
+ this.code = code;
61
+ this.details = details;
62
+ }
63
+ }
64
+ exports.CLIError = CLIError;
65
+ /**
66
+ * Parse CLI arguments
67
+ */
68
+ function parseArgs(args) {
69
+ const result = {};
70
+ let i = 0;
71
+ // Check for help/version flags first
72
+ if (args.includes('--help') || args.includes('-h')) {
73
+ result.help = true;
74
+ // Continue parsing to get command context
75
+ }
76
+ if (args.includes('--version') || args.includes('-v')) {
77
+ result.version = true;
78
+ return result;
79
+ }
80
+ while (i < args.length) {
81
+ const arg = args[i];
82
+ if (arg === '--help' || arg === '-h') {
83
+ result.help = true;
84
+ i++;
85
+ continue;
86
+ }
87
+ // Options
88
+ if (arg === '--config') {
89
+ result.configPath = args[++i];
90
+ }
91
+ else if (arg === '--output') {
92
+ result.outputPath = args[++i];
93
+ }
94
+ else if (arg === '--verbose') {
95
+ result.verbose = true;
96
+ }
97
+ else if (arg === '--quiet') {
98
+ result.quiet = true;
99
+ }
100
+ else if (arg === '--dry-run') {
101
+ result.dryRun = true;
102
+ }
103
+ else if (arg === '--stream') {
104
+ result.stream = true;
105
+ }
106
+ else if (arg === '--format') {
107
+ result.format = args[++i];
108
+ }
109
+ else if (arg === '--max-files') {
110
+ result.limits = result.limits || {};
111
+ result.limits.max_files = parseInt(args[++i], 10);
112
+ }
113
+ else if (arg === '--max-tests') {
114
+ result.limits = result.limits || {};
115
+ result.limits.max_tests = parseInt(args[++i], 10);
116
+ }
117
+ else if (arg === '--max-seconds') {
118
+ result.limits = result.limits || {};
119
+ result.limits.max_seconds = parseInt(args[++i], 10);
120
+ }
121
+ else if (!arg.startsWith('-')) {
122
+ // Positional arguments
123
+ if (!result.command) {
124
+ result.command = arg;
125
+ }
126
+ else if ((result.command === 'start' || result.command === 'validate') && !result.projectPath) {
127
+ result.projectPath = arg;
128
+ }
129
+ else if ((result.command === 'continue' || result.command === 'status') && !result.sessionId) {
130
+ result.sessionId = arg;
131
+ }
132
+ }
133
+ i++;
134
+ }
135
+ return result;
136
+ }
137
+ /**
138
+ * Validate parsed arguments
139
+ */
140
+ function validateArgs(args) {
141
+ // If version is requested, no validation needed
142
+ if (args.version) {
143
+ return args;
144
+ }
145
+ // If help is requested for the main CLI, no command needed
146
+ if (args.help && !args.command) {
147
+ return args;
148
+ }
149
+ // Command is required unless help/version
150
+ if (!args.command) {
151
+ throw new CLIError(error_codes_1.ErrorCode.E101_CONFIG_FILE_NOT_FOUND, 'No command specified. Use --help for usage information.');
152
+ }
153
+ // Validate command (per spec 05_CLI.md L20-26)
154
+ const validCommands = ['start', 'continue', 'status', 'validate'];
155
+ if (!validCommands.includes(args.command)) {
156
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, `Unknown command: ${args.command}`);
157
+ }
158
+ // If help for specific command, that's valid
159
+ if (args.help) {
160
+ return args;
161
+ }
162
+ // Command-specific validation
163
+ if (args.command === 'start' && !args.projectPath) {
164
+ throw new CLIError(error_codes_1.ErrorCode.E102_PROJECT_PATH_INVALID, 'start command requires a project path');
165
+ }
166
+ if (args.command === 'validate' && !args.projectPath) {
167
+ throw new CLIError(error_codes_1.ErrorCode.E102_PROJECT_PATH_INVALID, 'validate command requires a project path');
168
+ }
169
+ if (args.command === 'continue' && !args.sessionId) {
170
+ throw new CLIError(error_codes_1.ErrorCode.E201_SESSION_ID_MISSING, 'continue command requires a session ID');
171
+ }
172
+ if (args.command === 'status' && !args.sessionId) {
173
+ throw new CLIError(error_codes_1.ErrorCode.E201_SESSION_ID_MISSING, 'status command requires a session ID');
174
+ }
175
+ // Validate limits
176
+ if (args.limits) {
177
+ if (args.limits.max_files !== undefined && args.limits.max_files < 1) {
178
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, 'max_files must be at least 1');
179
+ }
180
+ if (args.limits.max_tests !== undefined && args.limits.max_tests < 1) {
181
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, 'max_tests must be at least 1');
182
+ }
183
+ if (args.limits.max_seconds !== undefined && args.limits.max_seconds < 30) {
184
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, 'max_seconds must be at least 30');
185
+ }
186
+ }
187
+ // Check for conflicting flags
188
+ if (args.verbose && args.quiet) {
189
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, 'Cannot use both --verbose and --quiet');
190
+ }
191
+ return args;
192
+ }
193
+ /**
194
+ * Generate help text (per spec 05_CLI.md L20-26)
195
+ */
196
+ function generateHelp(command) {
197
+ if (command === 'start') {
198
+ return `Usage: pm-runner start <project-path> [options]
199
+
200
+ Options:
201
+ --config <path> Path to configuration file
202
+ --output <path> Path to output file
203
+ --max-files <n> Override max files limit (1-20)
204
+ --max-tests <n> Override max tests limit (1-50)
205
+ --max-seconds <n> Override max seconds limit (30-900)
206
+ --verbose Show detailed output
207
+ --quiet Minimal output
208
+ --dry-run Show what would be executed without running
209
+ --stream Stream output events
210
+ --format <type> Output format (json, compact)
211
+ --help Show this help message`;
212
+ }
213
+ if (command === 'validate') {
214
+ return `Usage: pm-runner validate <project-path> [options]
215
+
216
+ Options:
217
+ --config <path> Path to configuration file
218
+ --verbose Show detailed output
219
+ --quiet Minimal output
220
+ --help Show this help message`;
221
+ }
222
+ return `PM Orchestrator Runner
223
+
224
+ Commands:
225
+ start <project> Start a new session on a project
226
+ continue <session> Continue a paused session
227
+ status <session> Show session status
228
+ validate <project> Validate project configuration
229
+
230
+ Options:
231
+ --help Show help message
232
+ --version Show version
233
+
234
+ Use "pm-runner <command> --help" for command-specific options.`;
235
+ }
236
+ /**
237
+ * CLI class
238
+ */
239
+ class CLI extends events_1.EventEmitter {
240
+ options;
241
+ runner = null;
242
+ currentSessionId = null;
243
+ exitCode = 0;
244
+ verbose = false;
245
+ quiet = false;
246
+ interrupted = false;
247
+ sessions = new Map();
248
+ constructor(options) {
249
+ super();
250
+ this.options = options;
251
+ }
252
+ /**
253
+ * Main run method
254
+ */
255
+ async run(argv) {
256
+ const args = parseArgs(argv);
257
+ validateArgs(args);
258
+ // Handle help
259
+ if (args.help) {
260
+ const help = generateHelp(args.command);
261
+ return { session_id: '', help };
262
+ }
263
+ // Handle version
264
+ if (args.version) {
265
+ return { session_id: '', version: '0.1.0' };
266
+ }
267
+ // Apply verbose/quiet settings
268
+ if (args.verbose)
269
+ this.verbose = true;
270
+ if (args.quiet)
271
+ this.quiet = true;
272
+ // Handle commands (per spec 05_CLI.md L20-26)
273
+ switch (args.command) {
274
+ case 'start':
275
+ return this.startCommand(args);
276
+ case 'continue':
277
+ return this.continueCommand(args);
278
+ case 'status':
279
+ return this.statusCommand(args);
280
+ case 'validate':
281
+ return this.validateCommand(args);
282
+ default:
283
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, `Unknown command: ${args.command}`);
284
+ }
285
+ }
286
+ /**
287
+ * Start command implementation (per spec 05_CLI.md L20-26)
288
+ */
289
+ async startCommand(args) {
290
+ const projectPath = args.projectPath;
291
+ // Validate project path
292
+ if (!fs.existsSync(projectPath)) {
293
+ this.exitCode = this.getExitCodeForStatus(enums_1.OverallStatus.ERROR);
294
+ throw new CLIError(error_codes_1.ErrorCode.E102_PROJECT_PATH_INVALID, `Project path does not exist: ${projectPath}`, { projectPath });
295
+ }
296
+ // Handle dry run
297
+ if (args.dryRun) {
298
+ return {
299
+ session_id: '',
300
+ dry_run: true,
301
+ would_execute: true,
302
+ timestamp: new Date().toISOString(),
303
+ };
304
+ }
305
+ // Load config
306
+ const runnerOptions = {
307
+ evidenceDir: this.options.evidenceDir,
308
+ };
309
+ if (args.configPath) {
310
+ if (!fs.existsSync(args.configPath)) {
311
+ throw new CLIError(error_codes_1.ErrorCode.E101_CONFIG_FILE_NOT_FOUND, `Config file not found: ${args.configPath}`);
312
+ }
313
+ try {
314
+ const configContent = fs.readFileSync(args.configPath, 'utf-8');
315
+ const config = yaml.parse(configContent);
316
+ runnerOptions.resourceLimits = config.limits;
317
+ }
318
+ catch (err) {
319
+ throw new CLIError(error_codes_1.ErrorCode.E104_CONFIGURATION_SCHEMA_VALIDATION_FAILURE, `Invalid config file: ${args.configPath}`);
320
+ }
321
+ }
322
+ // Apply limit overrides
323
+ if (args.limits) {
324
+ runnerOptions.resourceLimits = {
325
+ ...runnerOptions.resourceLimits,
326
+ ...args.limits,
327
+ };
328
+ }
329
+ // Create and run
330
+ this.runner = new runner_core_1.RunnerCore(runnerOptions);
331
+ // Set up event forwarding
332
+ this.runner.on('phase_started', (event) => {
333
+ const progress = {
334
+ current_phase: event.phase,
335
+ progress_percent: this.calculateProgress(event.phase),
336
+ };
337
+ this.emit('progress', progress);
338
+ this.emit('output', { type: 'phase_started', ...event });
339
+ if (this.verbose) {
340
+ this.emit('log', `Phase started: ${event.phase}`);
341
+ }
342
+ });
343
+ // Handle interruption
344
+ if (this.interrupted) {
345
+ const session = await this.runner.initialize(projectPath);
346
+ await this.runner.saveState();
347
+ return {
348
+ session_id: session.session_id,
349
+ interrupted: true,
350
+ timestamp: new Date().toISOString(),
351
+ };
352
+ }
353
+ // Initialize
354
+ const session = await this.runner.initialize(projectPath);
355
+ this.currentSessionId = session.session_id;
356
+ this.sessions.set(session.session_id, { status: 'running' });
357
+ if (this.verbose) {
358
+ this.emit('log', `Session initialized: ${session.session_id}`);
359
+ }
360
+ // Execute
361
+ const result = await this.runner.execute({ tasks: [] });
362
+ // Track session status
363
+ this.sessions.set(session.session_id, { status: 'completed' });
364
+ // Set exit code
365
+ this.exitCode = this.getExitCodeForStatus(result.overall_status);
366
+ // Write output file if specified
367
+ if (args.outputPath) {
368
+ fs.writeFileSync(args.outputPath, JSON.stringify(result, null, 2), 'utf-8');
369
+ }
370
+ return {
371
+ ...result,
372
+ timestamp: new Date().toISOString(),
373
+ };
374
+ }
375
+ /**
376
+ * Continue command implementation
377
+ */
378
+ async continueCommand(args) {
379
+ const sessionId = args.sessionId;
380
+ // Check if session exists
381
+ const sessionDir = path.join(this.options.evidenceDir, sessionId);
382
+ const statePath = path.join(sessionDir, 'session.json');
383
+ if (!fs.existsSync(statePath)) {
384
+ this.exitCode = this.getExitCodeForStatus(enums_1.OverallStatus.ERROR);
385
+ throw new CLIError(error_codes_1.ErrorCode.E201_SESSION_ID_MISSING, `Session not found: ${sessionId}`, { sessionId });
386
+ }
387
+ // Read session state
388
+ const stateContent = fs.readFileSync(statePath, 'utf-8');
389
+ const state = JSON.parse(stateContent);
390
+ // Check if session is completed
391
+ if (state.overall_status === enums_1.OverallStatus.COMPLETE ||
392
+ state.status === session_1.SessionStatus.COMPLETED ||
393
+ this.sessions.get(sessionId)?.status === 'completed') {
394
+ this.exitCode = this.getExitCodeForStatus(enums_1.OverallStatus.ERROR);
395
+ throw new CLIError(error_codes_1.ErrorCode.E205_SESSION_RESUME_FAILURE, 'Cannot continue completed session', { sessionId });
396
+ }
397
+ // Create runner and resume
398
+ this.runner = new runner_core_1.RunnerCore({ evidenceDir: this.options.evidenceDir });
399
+ await this.runner.resume(sessionId);
400
+ this.currentSessionId = sessionId;
401
+ this.sessions.set(sessionId, { status: 'running' });
402
+ // Continue execution
403
+ const result = await this.runner.execute({ tasks: [] });
404
+ this.sessions.set(sessionId, { status: 'completed' });
405
+ this.exitCode = this.getExitCodeForStatus(result.overall_status);
406
+ return {
407
+ ...result,
408
+ resumed: true,
409
+ timestamp: new Date().toISOString(),
410
+ };
411
+ }
412
+ /**
413
+ * Status command implementation
414
+ */
415
+ async statusCommand(args) {
416
+ const sessionId = args.sessionId;
417
+ // Check if session exists
418
+ const sessionDir = path.join(this.options.evidenceDir, sessionId);
419
+ const statePath = path.join(sessionDir, 'session.json');
420
+ if (!fs.existsSync(statePath)) {
421
+ this.exitCode = this.getExitCodeForStatus(enums_1.OverallStatus.ERROR);
422
+ throw new CLIError(error_codes_1.ErrorCode.E201_SESSION_ID_MISSING, `Session not found: ${sessionId}`, { sessionId });
423
+ }
424
+ // Read session state
425
+ const stateContent = fs.readFileSync(statePath, 'utf-8');
426
+ const state = JSON.parse(stateContent);
427
+ const taskResults = state.task_results || [];
428
+ const completedTasks = taskResults.filter((t) => t.status === 'COMPLETE' || t.status === 'COMPLETED').length;
429
+ return {
430
+ session_id: sessionId,
431
+ status: state.status,
432
+ current_phase: state.current_phase,
433
+ overall_status: state.overall_status,
434
+ tasks_completed: completedTasks,
435
+ tasks_total: taskResults.length,
436
+ evidence: {
437
+ collected: true,
438
+ phase_evidence: state.current_phase,
439
+ },
440
+ timestamp: new Date().toISOString(),
441
+ };
442
+ }
443
+ /**
444
+ * Validate command implementation (per spec 05_CLI.md L20-26)
445
+ */
446
+ async validateCommand(args) {
447
+ const projectPath = args.projectPath;
448
+ // Validate project path exists
449
+ if (!fs.existsSync(projectPath)) {
450
+ this.exitCode = this.getExitCodeForStatus(enums_1.OverallStatus.ERROR);
451
+ throw new CLIError(error_codes_1.ErrorCode.E102_PROJECT_PATH_INVALID, `Project path does not exist: ${projectPath}`, { projectPath });
452
+ }
453
+ // Check for pm-orchestrator.yaml config file
454
+ const configPath = path.join(projectPath, 'pm-orchestrator.yaml');
455
+ const hasConfig = fs.existsSync(configPath);
456
+ // If custom config path provided, check it
457
+ if (args.configPath && !fs.existsSync(args.configPath)) {
458
+ throw new CLIError(error_codes_1.ErrorCode.E101_CONFIG_FILE_NOT_FOUND, `Config file not found: ${args.configPath}`);
459
+ }
460
+ // Validate config if it exists
461
+ let configValid = false;
462
+ let configErrors = [];
463
+ if (hasConfig || args.configPath) {
464
+ const actualConfigPath = args.configPath || configPath;
465
+ try {
466
+ const configContent = fs.readFileSync(actualConfigPath, 'utf-8');
467
+ yaml.parse(configContent);
468
+ configValid = true;
469
+ }
470
+ catch (err) {
471
+ configErrors.push(`Invalid YAML: ${err.message}`);
472
+ }
473
+ }
474
+ const validationPassed = hasConfig && configValid && configErrors.length === 0;
475
+ const overallStatus = validationPassed ? enums_1.OverallStatus.COMPLETE : enums_1.OverallStatus.INVALID;
476
+ this.exitCode = this.getExitCodeForStatus(overallStatus);
477
+ return {
478
+ session_id: '',
479
+ overall_status: overallStatus,
480
+ timestamp: new Date().toISOString(),
481
+ };
482
+ }
483
+ /**
484
+ * Run and format output as string
485
+ */
486
+ async runAndFormat(argv) {
487
+ const args = parseArgs(argv);
488
+ const result = await this.run(argv);
489
+ if (args.format === 'compact') {
490
+ return JSON.stringify(result);
491
+ }
492
+ return JSON.stringify(result, null, 2);
493
+ }
494
+ /**
495
+ * Pause a session
496
+ */
497
+ pauseSession(sessionId) {
498
+ this.sessions.set(sessionId, { status: 'paused' });
499
+ }
500
+ /**
501
+ * Complete a session
502
+ */
503
+ completeSession(sessionId) {
504
+ this.sessions.set(sessionId, { status: 'completed' });
505
+ // Also update the session file
506
+ const sessionDir = path.join(this.options.evidenceDir, sessionId);
507
+ const statePath = path.join(sessionDir, 'session.json');
508
+ if (fs.existsSync(statePath)) {
509
+ const stateContent = fs.readFileSync(statePath, 'utf-8');
510
+ const state = JSON.parse(stateContent);
511
+ state.overall_status = enums_1.OverallStatus.COMPLETE;
512
+ state.status = session_1.SessionStatus.COMPLETED;
513
+ fs.writeFileSync(statePath, JSON.stringify(state, null, 2), 'utf-8');
514
+ }
515
+ }
516
+ /**
517
+ * Get exit code
518
+ */
519
+ getExitCode() {
520
+ return this.exitCode;
521
+ }
522
+ /**
523
+ * Get exit code for a status
524
+ */
525
+ getExitCodeForStatus(status) {
526
+ switch (status) {
527
+ case enums_1.OverallStatus.COMPLETE:
528
+ return 0;
529
+ case enums_1.OverallStatus.INCOMPLETE:
530
+ return 1;
531
+ case enums_1.OverallStatus.NO_EVIDENCE:
532
+ return 2;
533
+ case enums_1.OverallStatus.ERROR:
534
+ return 3;
535
+ case enums_1.OverallStatus.INVALID:
536
+ return 4;
537
+ default:
538
+ return 5;
539
+ }
540
+ }
541
+ /**
542
+ * Set verbose mode
543
+ */
544
+ setVerbose(flag) {
545
+ this.verbose = flag;
546
+ }
547
+ /**
548
+ * Set quiet mode
549
+ */
550
+ setQuiet(flag) {
551
+ this.quiet = flag;
552
+ }
553
+ /**
554
+ * Format error as JSON string
555
+ */
556
+ formatError(err) {
557
+ const output = {
558
+ error: {
559
+ message: err.message,
560
+ },
561
+ };
562
+ if (err instanceof CLIError) {
563
+ output.error.code = err.code;
564
+ }
565
+ if (this.verbose && !this.quiet) {
566
+ output.error.stack = err.stack;
567
+ }
568
+ return JSON.stringify(output, null, 2);
569
+ }
570
+ /**
571
+ * Handle signal
572
+ */
573
+ handleSignal(signal) {
574
+ this.interrupted = true;
575
+ if (this.runner && this.currentSessionId) {
576
+ // Save state immediately
577
+ this.runner.saveState().catch(() => {
578
+ // Ignore save errors during signal handling
579
+ });
580
+ }
581
+ }
582
+ /**
583
+ * Get current session ID
584
+ */
585
+ getCurrentSessionId() {
586
+ return this.currentSessionId;
587
+ }
588
+ /**
589
+ * Calculate progress percentage
590
+ */
591
+ calculateProgress(phase) {
592
+ const phases = [
593
+ enums_1.LifecyclePhase.REQUIREMENT_ANALYSIS,
594
+ enums_1.LifecyclePhase.TASK_DECOMPOSITION,
595
+ enums_1.LifecyclePhase.PLANNING,
596
+ enums_1.LifecyclePhase.EXECUTION,
597
+ enums_1.LifecyclePhase.QA,
598
+ enums_1.LifecyclePhase.COMPLETION_VALIDATION,
599
+ enums_1.LifecyclePhase.REPORT,
600
+ ];
601
+ const index = phases.indexOf(phase);
602
+ return Math.round((index / phases.length) * 100);
603
+ }
604
+ }
605
+ exports.CLI = CLI;
606
+ //# sourceMappingURL=cli-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-interface.js","sourceRoot":"","sources":["../../src/cli/cli-interface.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFH,8BA8DC;AAKD,oCA6FC;AAvPD,mCAAsC;AACtC,uCAAyB;AACzB,2CAA6B;AAC7B,2CAA6B;AAC7B,qDAAgE;AAChE,2CAAgE;AAChE,uDAAmE;AACnE,+CAAkD;AAElD;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IACjB,IAAI,CAAY;IAChB,OAAO,CAA2B;IAElD,YAAY,IAAe,EAAE,OAAgB,EAAE,OAAiC;QAC9E,KAAK,CAAC,OAAO,IAAI,IAAA,6BAAe,EAAC,IAAI,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAVD,4BAUC;AA8DD;;GAEG;AACH,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,qCAAqC;IACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,0CAA0C;IAC5C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,UAAU;QACV,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAuB,CAAC;QAClD,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,uBAAuB;YACvB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;YACvB,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAChG,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;YAC3B,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC/F,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;YACzB,CAAC;QACH,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAgB;IAC3C,gDAAgD;IAChD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,0BAA0B,EACpC,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,oBAAoB,IAAI,CAAC,OAAO,EAAE,CACnC,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,yBAAyB,EACnC,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,yBAAyB,EACnC,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,uBAAuB,EACjC,wCAAwC,CACzC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,uBAAuB,EACjC,sCAAsC,CACvC,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,8BAA8B,CAC/B,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,8BAA8B,CAC/B,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;YAC1E,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,iCAAiC,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,uCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAgB;IACpC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO;;;;;;;;;;;;;6CAakC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO;;;;;;6CAMkC,CAAC;IAC5C,CAAC;IAED,OAAO;;;;;;;;;;;;+DAYsD,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAa,GAAI,SAAQ,qBAAY;IAClB,OAAO,CAAa;IAC7B,MAAM,GAAsB,IAAI,CAAC;IACjC,gBAAgB,GAAkB,IAAI,CAAC;IACvC,QAAQ,GAAW,CAAC,CAAC;IACrB,OAAO,GAAY,KAAK,CAAC;IACzB,KAAK,GAAY,KAAK,CAAC;IACvB,WAAW,GAAY,KAAK,CAAC;IAC7B,QAAQ,GAAgE,IAAI,GAAG,EAAE,CAAC;IAE1F,YAAY,OAAmB;QAC7B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,cAAc;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC9C,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElC,8CAA8C;QAC9C,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACpC;gBACE,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,oBAAoB,IAAI,CAAC,OAAO,EAAE,CACnC,CAAC;QACN,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAgB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAY,CAAC;QAEtC,wBAAwB;QACxB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,yBAAyB,EACnC,gCAAgC,WAAW,EAAE,EAC7C,EAAE,WAAW,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;gBACL,UAAU,EAAE,EAAE;gBACd,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QAED,cAAc;QACd,MAAM,aAAa,GAAkB;YACnC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;SACtC,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,0BAA0B,EACpC,0BAA0B,IAAI,CAAC,UAAU,EAAE,CAC5C,CAAC;YACJ,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACzC,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,4CAA4C,EACtD,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAC1C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,aAAa,CAAC,cAAc,GAAG;gBAC7B,GAAG,aAAa,CAAC,cAAc;gBAC/B,GAAG,IAAI,CAAC,MAAM;aACf,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAU,CAAC,aAAa,CAAC,CAAC;QAE5C,0BAA0B;QAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAkB;gBAC9B,aAAa,EAAE,KAAK,CAAC,KAAK;gBAC1B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;aACtD,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;QACJ,CAAC;QAED,aAAa;QACb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE7D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAwB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,UAAU;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAExD,uBAAuB;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAE/D,gBAAgB;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEjE,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,IAAgB;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAU,CAAC;QAElC,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,uBAAuB,EACjC,sBAAsB,SAAS,EAAE,EACjC,EAAE,SAAS,EAAE,CACd,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEvC,gCAAgC;QAChC,IAAI,KAAK,CAAC,cAAc,KAAK,qBAAa,CAAC,QAAQ;YAC/C,KAAK,CAAC,MAAM,KAAK,uBAAa,CAAC,SAAS;YACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;YACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,2BAA2B,EACrC,mCAAmC,EACnC,EAAE,SAAS,EAAE,CACd,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpD,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAEjE,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,IAAgB;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAU,CAAC;QAElC,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,uBAAuB,EACjC,sBAAsB,SAAS,EAAE,EACjC,EAAE,SAAS,EAAE,CACd,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAqB,EAAE,EAAE,CAClE,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CACpD,CAAC,MAAM,CAAC;QAET,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,eAAe,EAAE,cAAc;YAC/B,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,KAAK,CAAC,aAAa;aACpC;YACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,IAAgB;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAY,CAAC;QAEtC,+BAA+B;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,yBAAyB,EACnC,gCAAgC,WAAW,EAAE,EAC7C,EAAE,WAAW,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE5C,2CAA2C;QAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,QAAQ,CAChB,uBAAS,CAAC,0BAA0B,EACpC,0BAA0B,IAAI,CAAC,UAAU,EAAE,CAC5C,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,YAAY,GAAa,EAAE,CAAC;QAEhC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;gBACjE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC1B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,YAAY,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,SAAS,IAAI,WAAW,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,qBAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAa,CAAC,OAAO,CAAC;QACxF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAEzD,OAAO;YACL,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAc;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtD,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAExD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvC,KAAK,CAAC,cAAc,GAAG,qBAAa,CAAC,QAAQ,CAAC;YAC9C,KAAK,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC;YACvC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAqB;QACxC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,qBAAa,CAAC,QAAQ;gBACzB,OAAO,CAAC,CAAC;YACX,KAAK,qBAAa,CAAC,UAAU;gBAC3B,OAAO,CAAC,CAAC;YACX,KAAK,qBAAa,CAAC,WAAW;gBAC5B,OAAO,CAAC,CAAC;YACX,KAAK,qBAAa,CAAC,KAAK;gBACtB,OAAO,CAAC,CAAC;YACX,KAAK,qBAAa,CAAC,OAAO;gBACxB,OAAO,CAAC,CAAC;YACX;gBACE,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAa;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAa;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAU;QACpB,MAAM,MAAM,GAAkE;YAC5E,KAAK,EAAE;gBACL,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB;SACF,CAAC;QAEF,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,yBAAyB;YACzB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACjC,4CAA4C;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAqB;QAC7C,MAAM,MAAM,GAAG;YACb,sBAAc,CAAC,oBAAoB;YACnC,sBAAc,CAAC,kBAAkB;YACjC,sBAAc,CAAC,QAAQ;YACvB,sBAAc,CAAC,SAAS;YACxB,sBAAc,CAAC,EAAE;YACjB,sBAAc,CAAC,qBAAqB;YACpC,sBAAc,CAAC,MAAM;SACtB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IACnD,CAAC;CACF;AA5cD,kBA4cC"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PM Orchestrator Runner - CLI Entry Point
4
+ *
5
+ * Usage:
6
+ * pm-orchestrator repl [--project <path>] - Start interactive REPL
7
+ * pm-orchestrator start <path> [options] - Start a new session (per spec 05_CLI.md L20)
8
+ * pm-orchestrator continue <session-id> - Continue a session
9
+ * pm-orchestrator status <session-id> - Get session status
10
+ * pm-orchestrator validate <path> - Validate project structure (per spec 05_CLI.md L23)
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}