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.
- package/LICENSE +21 -0
- package/README.md +108 -0
- package/dist/cli/cli-interface.d.ts +150 -0
- package/dist/cli/cli-interface.d.ts.map +1 -0
- package/dist/cli/cli-interface.js +606 -0
- package/dist/cli/cli-interface.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +243 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/llm-sentinel.d.ts +15 -0
- package/dist/cli/llm-sentinel.d.ts.map +1 -0
- package/dist/cli/llm-sentinel.js +184 -0
- package/dist/cli/llm-sentinel.js.map +1 -0
- package/dist/config/configuration-manager.d.ts +149 -0
- package/dist/config/configuration-manager.d.ts.map +1 -0
- package/dist/config/configuration-manager.js +241 -0
- package/dist/config/configuration-manager.js.map +1 -0
- package/dist/continuation/continuation-control-manager.d.ts +154 -0
- package/dist/continuation/continuation-control-manager.d.ts.map +1 -0
- package/dist/continuation/continuation-control-manager.js +303 -0
- package/dist/continuation/continuation-control-manager.js.map +1 -0
- package/dist/core/runner-core.d.ts +474 -0
- package/dist/core/runner-core.d.ts.map +1 -0
- package/dist/core/runner-core.js +1311 -0
- package/dist/core/runner-core.js.map +1 -0
- package/dist/errors/error-codes.d.ts +105 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +198 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/runner-error.d.ts +14 -0
- package/dist/errors/runner-error.d.ts.map +1 -0
- package/dist/errors/runner-error.js +33 -0
- package/dist/errors/runner-error.js.map +1 -0
- package/dist/evidence/evidence-manager.d.ts +112 -0
- package/dist/evidence/evidence-manager.d.ts.map +1 -0
- package/dist/evidence/evidence-manager.js +337 -0
- package/dist/evidence/evidence-manager.js.map +1 -0
- package/dist/executor/claude-code-executor.d.ts +136 -0
- package/dist/executor/claude-code-executor.d.ts.map +1 -0
- package/dist/executor/claude-code-executor.js +643 -0
- package/dist/executor/claude-code-executor.js.map +1 -0
- package/dist/executor/deterministic-executor.d.ts +40 -0
- package/dist/executor/deterministic-executor.d.ts.map +1 -0
- package/dist/executor/deterministic-executor.js +269 -0
- package/dist/executor/deterministic-executor.js.map +1 -0
- package/dist/lifecycle/lifecycle-controller.d.ts +270 -0
- package/dist/lifecycle/lifecycle-controller.d.ts.map +1 -0
- package/dist/lifecycle/lifecycle-controller.js +596 -0
- package/dist/lifecycle/lifecycle-controller.js.map +1 -0
- package/dist/limits/resource-limit-manager.d.ts +200 -0
- package/dist/limits/resource-limit-manager.d.ts.map +1 -0
- package/dist/limits/resource-limit-manager.js +376 -0
- package/dist/limits/resource-limit-manager.js.map +1 -0
- package/dist/locks/lock-manager.d.ts +116 -0
- package/dist/locks/lock-manager.d.ts.map +1 -0
- package/dist/locks/lock-manager.js +306 -0
- package/dist/locks/lock-manager.js.map +1 -0
- package/dist/logging/index.d.ts +8 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +22 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/sensitive-data-masker.d.ts +90 -0
- package/dist/logging/sensitive-data-masker.d.ts.map +1 -0
- package/dist/logging/sensitive-data-masker.js +228 -0
- package/dist/logging/sensitive-data-masker.js.map +1 -0
- package/dist/logging/task-log-manager.d.ts +215 -0
- package/dist/logging/task-log-manager.d.ts.map +1 -0
- package/dist/logging/task-log-manager.js +743 -0
- package/dist/logging/task-log-manager.js.map +1 -0
- package/dist/mediation/fail-closed-runner.d.ts +131 -0
- package/dist/mediation/fail-closed-runner.d.ts.map +1 -0
- package/dist/mediation/fail-closed-runner.js +245 -0
- package/dist/mediation/fail-closed-runner.js.map +1 -0
- package/dist/mediation/llm-client-with-evidence.d.ts +123 -0
- package/dist/mediation/llm-client-with-evidence.d.ts.map +1 -0
- package/dist/mediation/llm-client-with-evidence.js +245 -0
- package/dist/mediation/llm-client-with-evidence.js.map +1 -0
- package/dist/mediation/llm-client.d.ts +102 -0
- package/dist/mediation/llm-client.d.ts.map +1 -0
- package/dist/mediation/llm-client.js +206 -0
- package/dist/mediation/llm-client.js.map +1 -0
- package/dist/mediation/llm-evidence-manager.d.ts +108 -0
- package/dist/mediation/llm-evidence-manager.d.ts.map +1 -0
- package/dist/mediation/llm-evidence-manager.js +230 -0
- package/dist/mediation/llm-evidence-manager.js.map +1 -0
- package/dist/mediation/llm-mediation-layer.d.ts +175 -0
- package/dist/mediation/llm-mediation-layer.d.ts.map +1 -0
- package/dist/mediation/llm-mediation-layer.js +315 -0
- package/dist/mediation/llm-mediation-layer.js.map +1 -0
- package/dist/mediation/llm-sentinel.d.ts +107 -0
- package/dist/mediation/llm-sentinel.d.ts.map +1 -0
- package/dist/mediation/llm-sentinel.js +187 -0
- package/dist/mediation/llm-sentinel.js.map +1 -0
- package/dist/mediation/real-llm-mediation-layer.d.ts +104 -0
- package/dist/mediation/real-llm-mediation-layer.d.ts.map +1 -0
- package/dist/mediation/real-llm-mediation-layer.js +322 -0
- package/dist/mediation/real-llm-mediation-layer.js.map +1 -0
- package/dist/mediation/verdict-reporter.d.ts +61 -0
- package/dist/mediation/verdict-reporter.d.ts.map +1 -0
- package/dist/mediation/verdict-reporter.js +178 -0
- package/dist/mediation/verdict-reporter.js.map +1 -0
- package/dist/models/enums.d.ts +133 -0
- package/dist/models/enums.d.ts.map +1 -0
- package/dist/models/enums.js +201 -0
- package/dist/models/enums.js.map +1 -0
- package/dist/models/evidence.d.ts +60 -0
- package/dist/models/evidence.d.ts.map +1 -0
- package/dist/models/evidence.js +135 -0
- package/dist/models/evidence.js.map +1 -0
- package/dist/models/execution-result.d.ts +89 -0
- package/dist/models/execution-result.d.ts.map +1 -0
- package/dist/models/execution-result.js +197 -0
- package/dist/models/execution-result.js.map +1 -0
- package/dist/models/file-lock.d.ts +62 -0
- package/dist/models/file-lock.d.ts.map +1 -0
- package/dist/models/file-lock.js +133 -0
- package/dist/models/file-lock.js.map +1 -0
- package/dist/models/index.d.ts +12 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +91 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/repl/index.d.ts +7 -0
- package/dist/models/repl/index.d.ts.map +1 -0
- package/dist/models/repl/index.js +32 -0
- package/dist/models/repl/index.js.map +1 -0
- package/dist/models/repl/model-registry.d.ts +73 -0
- package/dist/models/repl/model-registry.d.ts.map +1 -0
- package/dist/models/repl/model-registry.js +116 -0
- package/dist/models/repl/model-registry.js.map +1 -0
- package/dist/models/repl/repl-state.d.ts +86 -0
- package/dist/models/repl/repl-state.d.ts.map +1 -0
- package/dist/models/repl/repl-state.js +152 -0
- package/dist/models/repl/repl-state.js.map +1 -0
- package/dist/models/repl/task-log.d.ts +247 -0
- package/dist/models/repl/task-log.d.ts.map +1 -0
- package/dist/models/repl/task-log.js +178 -0
- package/dist/models/repl/task-log.js.map +1 -0
- package/dist/models/session.d.ts +71 -0
- package/dist/models/session.d.ts.map +1 -0
- package/dist/models/session.js +140 -0
- package/dist/models/session.js.map +1 -0
- package/dist/models/supporting.d.ts +97 -0
- package/dist/models/supporting.d.ts.map +1 -0
- package/dist/models/supporting.js +208 -0
- package/dist/models/supporting.js.map +1 -0
- package/dist/models/task.d.ts +77 -0
- package/dist/models/task.d.ts.map +1 -0
- package/dist/models/task.js +170 -0
- package/dist/models/task.js.map +1 -0
- package/dist/output/output-control-manager.d.ts +217 -0
- package/dist/output/output-control-manager.d.ts.map +1 -0
- package/dist/output/output-control-manager.js +378 -0
- package/dist/output/output-control-manager.js.map +1 -0
- package/dist/pool/agent-pool.d.ts +284 -0
- package/dist/pool/agent-pool.d.ts.map +1 -0
- package/dist/pool/agent-pool.js +451 -0
- package/dist/pool/agent-pool.js.map +1 -0
- package/dist/repl/commands/index.d.ts +12 -0
- package/dist/repl/commands/index.d.ts.map +1 -0
- package/dist/repl/commands/index.js +26 -0
- package/dist/repl/commands/index.js.map +1 -0
- package/dist/repl/commands/init.d.ts +31 -0
- package/dist/repl/commands/init.d.ts.map +1 -0
- package/dist/repl/commands/init.js +234 -0
- package/dist/repl/commands/init.js.map +1 -0
- package/dist/repl/commands/keys.d.ts +63 -0
- package/dist/repl/commands/keys.d.ts.map +1 -0
- package/dist/repl/commands/keys.js +114 -0
- package/dist/repl/commands/keys.js.map +1 -0
- package/dist/repl/commands/logs.d.ts +91 -0
- package/dist/repl/commands/logs.d.ts.map +1 -0
- package/dist/repl/commands/logs.js +200 -0
- package/dist/repl/commands/logs.js.map +1 -0
- package/dist/repl/commands/model.d.ts +85 -0
- package/dist/repl/commands/model.d.ts.map +1 -0
- package/dist/repl/commands/model.js +225 -0
- package/dist/repl/commands/model.js.map +1 -0
- package/dist/repl/commands/models.d.ts +50 -0
- package/dist/repl/commands/models.d.ts.map +1 -0
- package/dist/repl/commands/models.js +180 -0
- package/dist/repl/commands/models.js.map +1 -0
- package/dist/repl/commands/provider.d.ts +79 -0
- package/dist/repl/commands/provider.d.ts.map +1 -0
- package/dist/repl/commands/provider.js +291 -0
- package/dist/repl/commands/provider.js.map +1 -0
- package/dist/repl/commands/session.d.ts +50 -0
- package/dist/repl/commands/session.d.ts.map +1 -0
- package/dist/repl/commands/session.js +152 -0
- package/dist/repl/commands/session.js.map +1 -0
- package/dist/repl/commands/status.d.ts +55 -0
- package/dist/repl/commands/status.d.ts.map +1 -0
- package/dist/repl/commands/status.js +182 -0
- package/dist/repl/commands/status.js.map +1 -0
- package/dist/repl/index.d.ts +6 -0
- package/dist/repl/index.d.ts.map +1 -0
- package/dist/repl/index.js +25 -0
- package/dist/repl/index.js.map +1 -0
- package/dist/repl/repl-interface.d.ts +371 -0
- package/dist/repl/repl-interface.d.ts.map +1 -0
- package/dist/repl/repl-interface.js +1214 -0
- package/dist/repl/repl-interface.js.map +1 -0
- package/dist/session/session-manager.d.ts +85 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +217 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/supervisor/executor-supervisor.d.ts +90 -0
- package/dist/supervisor/executor-supervisor.d.ts.map +1 -0
- package/dist/supervisor/executor-supervisor.js +223 -0
- package/dist/supervisor/executor-supervisor.js.map +1 -0
- package/dist/supervisor/index.d.ts +5 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +9 -0
- package/dist/supervisor/index.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|