@0xprathamesh/why-cli 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +436 -0
- package/dist/cli/index.js +101 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/ai.js +195 -0
- package/dist/core/ai.js.map +1 -0
- package/dist/core/args.js +221 -0
- package/dist/core/args.js.map +1 -0
- package/dist/core/codebase-context.js +74 -0
- package/dist/core/codebase-context.js.map +1 -0
- package/dist/core/command-intelligence.js +196 -0
- package/dist/core/command-intelligence.js.map +1 -0
- package/dist/core/env.js +117 -0
- package/dist/core/env.js.map +1 -0
- package/dist/core/error-parser.js +172 -0
- package/dist/core/error-parser.js.map +1 -0
- package/dist/core/process.js +118 -0
- package/dist/core/process.js.map +1 -0
- package/dist/core/prompts.js +64 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/provider-health.js +71 -0
- package/dist/core/provider-health.js.map +1 -0
- package/dist/core/runner.js +266 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/setup.js +82 -0
- package/dist/core/setup.js.map +1 -0
- package/dist/core/simulation.js +330 -0
- package/dist/core/simulation.js.map +1 -0
- package/dist/core/skills.js +57 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/utils/logger.js +147 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeCommand = analyzeCommand;
|
|
4
|
+
exports.resolveExecutionMode = resolveExecutionMode;
|
|
5
|
+
const LONG_RUNNING_ACTIONS = new Set(["start", "dev", "watch", "serve", "preview"]);
|
|
6
|
+
const SHELL_BUILTINS = new Set(["cd", "alias", "export", "source", ".", "unset"]);
|
|
7
|
+
const HIGH_RISK_GIT_ACTIONS = new Set(["push", "rebase", "reset", "clean"]);
|
|
8
|
+
const MEDIUM_RISK_GIT_ACTIONS = new Set(["add", "commit", "merge", "checkout", "switch", "restore", "pull", "init"]);
|
|
9
|
+
const DRY_RUN_CAPABLE_GIT_ACTIONS = new Set(["add", "push"]);
|
|
10
|
+
function normalizeExecutable(value) {
|
|
11
|
+
return (value ?? "").trim().toLowerCase();
|
|
12
|
+
}
|
|
13
|
+
function riskForGitAction(action) {
|
|
14
|
+
if (HIGH_RISK_GIT_ACTIONS.has(action)) {
|
|
15
|
+
return action === "reset" || action === "clean" ? "critical" : "high";
|
|
16
|
+
}
|
|
17
|
+
if (MEDIUM_RISK_GIT_ACTIONS.has(action)) {
|
|
18
|
+
return "medium";
|
|
19
|
+
}
|
|
20
|
+
return "low";
|
|
21
|
+
}
|
|
22
|
+
function analyzeCommand(commandArgs) {
|
|
23
|
+
const executable = normalizeExecutable(commandArgs[0]);
|
|
24
|
+
const action = normalizeExecutable(commandArgs[1]);
|
|
25
|
+
if (!executable) {
|
|
26
|
+
return {
|
|
27
|
+
family: "unknown",
|
|
28
|
+
executable: "",
|
|
29
|
+
action: "none",
|
|
30
|
+
intentLabel: "Unknown",
|
|
31
|
+
risk: "low",
|
|
32
|
+
mutatesState: false,
|
|
33
|
+
touchesRemote: false,
|
|
34
|
+
supportsSimulation: false,
|
|
35
|
+
likelyLongRunning: false,
|
|
36
|
+
interactive: false,
|
|
37
|
+
reasons: ["No executable was provided."],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (SHELL_BUILTINS.has(executable)) {
|
|
41
|
+
return {
|
|
42
|
+
family: "shell",
|
|
43
|
+
executable,
|
|
44
|
+
action: executable,
|
|
45
|
+
intentLabel: "Shell Builtin",
|
|
46
|
+
risk: "low",
|
|
47
|
+
mutatesState: executable === "cd",
|
|
48
|
+
touchesRemote: false,
|
|
49
|
+
supportsSimulation: false,
|
|
50
|
+
likelyLongRunning: false,
|
|
51
|
+
interactive: false,
|
|
52
|
+
unsupportedReason: executable === "cd"
|
|
53
|
+
? "`cd` is a shell builtin, so why-cli cannot change the working directory of your parent terminal session."
|
|
54
|
+
: `\`${executable}\` is a shell builtin and must run in the current shell to have its normal effect.`,
|
|
55
|
+
reasons: [`${executable} is a shell builtin, not a normal standalone executable.`],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (executable === "git") {
|
|
59
|
+
const risk = riskForGitAction(action);
|
|
60
|
+
const mutatesState = risk !== "low";
|
|
61
|
+
const touchesRemote = action === "push" || action === "pull" || action === "fetch";
|
|
62
|
+
const reasons = [
|
|
63
|
+
`Git action detected: ${action || "status"}.`,
|
|
64
|
+
mutatesState ? "This command can change repository state." : "This looks read-only.",
|
|
65
|
+
];
|
|
66
|
+
if (touchesRemote) {
|
|
67
|
+
reasons.push("This command may interact with a remote repository.");
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
family: "git",
|
|
71
|
+
executable,
|
|
72
|
+
action: action || "status",
|
|
73
|
+
intentLabel: touchesRemote ? "Remote Git Operation" : mutatesState ? "Repository Mutation" : "Repository Inspection",
|
|
74
|
+
risk,
|
|
75
|
+
mutatesState,
|
|
76
|
+
touchesRemote,
|
|
77
|
+
supportsSimulation: DRY_RUN_CAPABLE_GIT_ACTIONS.has(action) || action === "commit",
|
|
78
|
+
likelyLongRunning: false,
|
|
79
|
+
interactive: false,
|
|
80
|
+
reasons,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (executable === "npm" || executable === "pnpm" || executable === "yarn") {
|
|
84
|
+
const mutatingAction = new Set(["install", "add", "remove", "publish", "upgrade"]);
|
|
85
|
+
const touchesRemote = action === "publish";
|
|
86
|
+
const mutatesState = mutatingAction.has(action);
|
|
87
|
+
const risk = action === "publish" ? "high" : mutatesState ? "medium" : "low";
|
|
88
|
+
return {
|
|
89
|
+
family: executable,
|
|
90
|
+
executable,
|
|
91
|
+
action: action || "run",
|
|
92
|
+
intentLabel: action === "publish" ? "Package Release" : mutatesState ? "Dependency Change" : "Package Script / Inspection",
|
|
93
|
+
risk,
|
|
94
|
+
mutatesState,
|
|
95
|
+
touchesRemote,
|
|
96
|
+
supportsSimulation: action === "publish" || action === "install" || action === "add",
|
|
97
|
+
likelyLongRunning: LONG_RUNNING_ACTIONS.has(action),
|
|
98
|
+
interactive: false,
|
|
99
|
+
reasons: [
|
|
100
|
+
`Package manager command detected: ${executable} ${action || ""}`.trim(),
|
|
101
|
+
mutatesState ? "This command may change dependencies or release artifacts." : "This looks read-only or script-oriented.",
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (executable === "python" || executable === "python3") {
|
|
106
|
+
return {
|
|
107
|
+
family: "python",
|
|
108
|
+
executable,
|
|
109
|
+
action: action || "script",
|
|
110
|
+
intentLabel: "Python Execution",
|
|
111
|
+
risk: "low",
|
|
112
|
+
mutatesState: false,
|
|
113
|
+
touchesRemote: false,
|
|
114
|
+
supportsSimulation: false,
|
|
115
|
+
likelyLongRunning: action === "script" || action === "-i" || action === "",
|
|
116
|
+
interactive: commandArgs.length === 1,
|
|
117
|
+
reasons: ["Python execution detected. why-cli can analyze failures after execution."],
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (executable === "node" || executable === "npx") {
|
|
121
|
+
return {
|
|
122
|
+
family: "node",
|
|
123
|
+
executable,
|
|
124
|
+
action: action || "script",
|
|
125
|
+
intentLabel: executable === "npx" ? "Node Tool Execution" : "Node.js Execution",
|
|
126
|
+
risk: "low",
|
|
127
|
+
mutatesState: false,
|
|
128
|
+
touchesRemote: false,
|
|
129
|
+
supportsSimulation: false,
|
|
130
|
+
likelyLongRunning: commandArgs.some((value) => LONG_RUNNING_ACTIONS.has(normalizeExecutable(value))),
|
|
131
|
+
interactive: false,
|
|
132
|
+
reasons: ["Node.js execution detected. why-cli will run it directly and analyze any failures."],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
if (executable === "sh" || executable === "bash" || executable === "zsh") {
|
|
136
|
+
return {
|
|
137
|
+
family: "shell",
|
|
138
|
+
executable,
|
|
139
|
+
action: action || "script",
|
|
140
|
+
intentLabel: "Shell Script Execution",
|
|
141
|
+
risk: "high",
|
|
142
|
+
mutatesState: true,
|
|
143
|
+
touchesRemote: /\b(push|publish|deploy|scp|rsync)\b/.test(commandArgs.join(" ")),
|
|
144
|
+
supportsSimulation: false,
|
|
145
|
+
likelyLongRunning: commandArgs.some((value) => LONG_RUNNING_ACTIONS.has(normalizeExecutable(value))),
|
|
146
|
+
interactive: false,
|
|
147
|
+
reasons: ["Shell script execution can bundle multiple actions, so why-cli treats it as higher risk."],
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
if (["rm", "mv", "cp", "mkdir", "rmdir", "touch", "cat", "ls", "pwd", "echo", "whoami"].includes(executable)) {
|
|
151
|
+
const readOnlyCommands = new Set(["cat", "ls", "pwd", "echo", "whoami"]);
|
|
152
|
+
const supportsSimulationCommands = new Set(["rm", "mv", "cp", "mkdir", "rmdir", "touch", "cat", "ls", "pwd", "echo", "whoami"]);
|
|
153
|
+
const mutatesState = !readOnlyCommands.has(executable);
|
|
154
|
+
const risk = executable === "rm" ? "critical" : mutatesState ? "medium" : "low";
|
|
155
|
+
return {
|
|
156
|
+
family: "system",
|
|
157
|
+
executable,
|
|
158
|
+
action: executable,
|
|
159
|
+
intentLabel: mutatesState ? "Filesystem Mutation" : "Filesystem Inspection",
|
|
160
|
+
risk,
|
|
161
|
+
mutatesState,
|
|
162
|
+
touchesRemote: false,
|
|
163
|
+
supportsSimulation: supportsSimulationCommands.has(executable),
|
|
164
|
+
likelyLongRunning: false,
|
|
165
|
+
interactive: false,
|
|
166
|
+
reasons: [
|
|
167
|
+
mutatesState
|
|
168
|
+
? `${executable} changes local filesystem state.`
|
|
169
|
+
: `${executable} is a read-only local shell command.`,
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
family: "unknown",
|
|
175
|
+
executable,
|
|
176
|
+
action: action || executable,
|
|
177
|
+
intentLabel: "Generic Command Execution",
|
|
178
|
+
risk: "low",
|
|
179
|
+
mutatesState: false,
|
|
180
|
+
touchesRemote: false,
|
|
181
|
+
supportsSimulation: false,
|
|
182
|
+
likelyLongRunning: commandArgs.some((value) => LONG_RUNNING_ACTIONS.has(normalizeExecutable(value))),
|
|
183
|
+
interactive: false,
|
|
184
|
+
reasons: ["Unknown command type. why-cli will execute it directly unless you force simulation."],
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function resolveExecutionMode(requestedMode, intent) {
|
|
188
|
+
if (requestedMode !== "auto") {
|
|
189
|
+
return requestedMode;
|
|
190
|
+
}
|
|
191
|
+
if (intent.mutatesState || intent.touchesRemote || intent.risk === "high" || intent.risk === "critical") {
|
|
192
|
+
return "simulate";
|
|
193
|
+
}
|
|
194
|
+
return "run";
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=command-intelligence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-intelligence.js","sourceRoot":"","sources":["../../src/core/command-intelligence.ts"],"names":[],"mappings":"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"}
|
package/dist/core/env.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadEnv = loadEnv;
|
|
7
|
+
exports.resolveEnvAlias = resolveEnvAlias;
|
|
8
|
+
exports.getGlobalConfigDir = getGlobalConfigDir;
|
|
9
|
+
exports.getGlobalEnvPath = getGlobalEnvPath;
|
|
10
|
+
exports.serializeConfig = serializeConfig;
|
|
11
|
+
exports.writeGlobalConfig = writeGlobalConfig;
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const ENV_FILENAMES = [".env.local", ".env"];
|
|
15
|
+
function parseEnvLine(line) {
|
|
16
|
+
const trimmed = line.trim();
|
|
17
|
+
if (!trimmed || trimmed.startsWith("#")) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const exportPrefix = trimmed.startsWith("export ") ? trimmed.slice(7) : trimmed;
|
|
21
|
+
const separatorIndex = exportPrefix.indexOf("=");
|
|
22
|
+
if (separatorIndex <= 0) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const key = exportPrefix.slice(0, separatorIndex).trim();
|
|
26
|
+
let value = exportPrefix.slice(separatorIndex + 1).trim();
|
|
27
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
28
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
29
|
+
value = value.slice(1, -1);
|
|
30
|
+
}
|
|
31
|
+
value = value.replace(/\\n/g, "\n");
|
|
32
|
+
return key ? [key, value] : null;
|
|
33
|
+
}
|
|
34
|
+
function parseEnvFile(filePath) {
|
|
35
|
+
const content = (0, fs_1.readFileSync)(filePath, "utf8");
|
|
36
|
+
const entries = content
|
|
37
|
+
.split(/\r?\n/)
|
|
38
|
+
.map(parseEnvLine)
|
|
39
|
+
.filter((entry) => entry !== null);
|
|
40
|
+
return Object.fromEntries(entries);
|
|
41
|
+
}
|
|
42
|
+
function candidateDirectories(cwd) {
|
|
43
|
+
const directories = [];
|
|
44
|
+
let current = path_1.default.resolve(cwd);
|
|
45
|
+
while (true) {
|
|
46
|
+
directories.push(current);
|
|
47
|
+
const parent = path_1.default.dirname(current);
|
|
48
|
+
if (parent === current) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
current = parent;
|
|
52
|
+
}
|
|
53
|
+
const home = process.env.HOME;
|
|
54
|
+
if (home) {
|
|
55
|
+
directories.push(home);
|
|
56
|
+
directories.push(path_1.default.join(home, ".config", "why-cli"));
|
|
57
|
+
}
|
|
58
|
+
return [...new Set(directories)];
|
|
59
|
+
}
|
|
60
|
+
function loadEnv(cwd) {
|
|
61
|
+
for (const directory of candidateDirectories(cwd)) {
|
|
62
|
+
for (const filename of ENV_FILENAMES) {
|
|
63
|
+
const candidate = path_1.default.join(directory, filename);
|
|
64
|
+
if ((0, fs_1.existsSync)(candidate)) {
|
|
65
|
+
const values = parseEnvFile(candidate);
|
|
66
|
+
for (const [key, value] of Object.entries(values)) {
|
|
67
|
+
if (!process.env[key]) {
|
|
68
|
+
process.env[key] = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
filePath: candidate,
|
|
73
|
+
values,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
values: {},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function resolveEnvAlias(names) {
|
|
83
|
+
for (const name of names) {
|
|
84
|
+
const value = process.env[name];
|
|
85
|
+
if (value && value.trim()) {
|
|
86
|
+
return value.trim();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
function getGlobalConfigDir() {
|
|
92
|
+
const home = process.env.HOME ?? process.cwd();
|
|
93
|
+
return path_1.default.join(home, ".config", "why-cli");
|
|
94
|
+
}
|
|
95
|
+
function getGlobalEnvPath() {
|
|
96
|
+
return path_1.default.join(getGlobalConfigDir(), ".env");
|
|
97
|
+
}
|
|
98
|
+
function serializeConfig(config) {
|
|
99
|
+
const lines = [
|
|
100
|
+
`WHY_PROVIDER=${config.provider ?? "auto"}`,
|
|
101
|
+
`OPENAI_API_KEY=${config.openaiApiKey ?? ""}`,
|
|
102
|
+
`OPENAI_MODEL=${config.openaiModel ?? "gpt-4.1"}`,
|
|
103
|
+
`OPENAI_BASE_URL=${config.openaiBaseUrl ?? "https://api.openai.com/v1"}`,
|
|
104
|
+
`OLLAMA_HOST=${config.ollamaHost ?? "http://127.0.0.1:11434"}`,
|
|
105
|
+
`OLLAMA_MODEL=${config.ollamaModel ?? "gemma3:4b"}`,
|
|
106
|
+
`WHY_SKILL=${config.skill ?? "debug,fix"}`,
|
|
107
|
+
];
|
|
108
|
+
return `${lines.join("\n")}\n`;
|
|
109
|
+
}
|
|
110
|
+
function writeGlobalConfig(config) {
|
|
111
|
+
const dir = getGlobalConfigDir();
|
|
112
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
113
|
+
const filePath = getGlobalEnvPath();
|
|
114
|
+
(0, fs_1.writeFileSync)(filePath, serializeConfig(config), "utf8");
|
|
115
|
+
return filePath;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createInterruptedError = createInterruptedError;
|
|
4
|
+
exports.parseError = parseError;
|
|
5
|
+
function createInterruptedError(command, signal) {
|
|
6
|
+
const signalLabel = signal ?? "SIGINT";
|
|
7
|
+
return {
|
|
8
|
+
category: "interrupted",
|
|
9
|
+
headline: "Command interrupted",
|
|
10
|
+
summary: `The command \`${command}\` was interrupted by ${signalLabel}.`,
|
|
11
|
+
evidence: [`Interrupted by ${signalLabel}`],
|
|
12
|
+
suggestions: ["Re-run the command when you are ready, or add `--stream` for live interactive output."],
|
|
13
|
+
firstErrorLine: `Interrupted by ${signalLabel}`,
|
|
14
|
+
fileReferences: [],
|
|
15
|
+
stackFrames: [],
|
|
16
|
+
signals: ["interrupted"],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function cleanLines(value) {
|
|
20
|
+
return value
|
|
21
|
+
.split(/\r?\n/)
|
|
22
|
+
.map((line) => line.trim())
|
|
23
|
+
.filter(Boolean);
|
|
24
|
+
}
|
|
25
|
+
function takeUnique(values, limit = 5) {
|
|
26
|
+
return [...new Set(values)].slice(0, limit);
|
|
27
|
+
}
|
|
28
|
+
function detectCategory(combined, signals) {
|
|
29
|
+
if (/ENOENT|command not found|not recognized as an internal or external command/i.test(combined)) {
|
|
30
|
+
return "missing-command";
|
|
31
|
+
}
|
|
32
|
+
if (/EACCES|EPERM|permission denied/i.test(combined)) {
|
|
33
|
+
return "permissions";
|
|
34
|
+
}
|
|
35
|
+
if (/ECONNREFUSED|ENOTFOUND|ETIMEDOUT|fetch failed|network|socket hang up/i.test(combined)) {
|
|
36
|
+
return "network";
|
|
37
|
+
}
|
|
38
|
+
if (/Traceback \(most recent call last\):|ModuleNotFoundError|ImportError|SyntaxError:/i.test(combined)) {
|
|
39
|
+
return "python";
|
|
40
|
+
}
|
|
41
|
+
if (/TS\d{4}|typescript/i.test(combined)) {
|
|
42
|
+
return "typescript";
|
|
43
|
+
}
|
|
44
|
+
if (/npm error|npm ERR!|pnpm|yarn error|Missing script:/i.test(combined)) {
|
|
45
|
+
return "package-manager";
|
|
46
|
+
}
|
|
47
|
+
if (/ReferenceError|TypeError|SyntaxError|Cannot find module|UnhandledPromiseRejection/i.test(combined)) {
|
|
48
|
+
return "runtime";
|
|
49
|
+
}
|
|
50
|
+
if (signals.includes("stack-trace")) {
|
|
51
|
+
return "runtime";
|
|
52
|
+
}
|
|
53
|
+
return "unknown";
|
|
54
|
+
}
|
|
55
|
+
function detectSignals(lines, combined) {
|
|
56
|
+
const signals = [];
|
|
57
|
+
if (/error|failed|exception|fatal|panic/i.test(combined)) {
|
|
58
|
+
signals.push("error-keyword");
|
|
59
|
+
}
|
|
60
|
+
if (lines.some((line) => /^\s*at\s.+/.test(line) || /^at\s.+/.test(line))) {
|
|
61
|
+
signals.push("stack-trace");
|
|
62
|
+
}
|
|
63
|
+
if (/[A-Za-z0-9_./-]+\.(ts|tsx|js|jsx|py|go|rs|java|json|yml|yaml)\(\d+,\d+\)/i.test(combined)) {
|
|
64
|
+
signals.push("file-location");
|
|
65
|
+
}
|
|
66
|
+
if (/Missing script:/i.test(combined)) {
|
|
67
|
+
signals.push("missing-script");
|
|
68
|
+
}
|
|
69
|
+
if (/not a git repository/i.test(combined)) {
|
|
70
|
+
signals.push("not-a-repository");
|
|
71
|
+
}
|
|
72
|
+
if (/--dry-run|dry run|simulation/i.test(combined)) {
|
|
73
|
+
signals.push("dry-run-context");
|
|
74
|
+
}
|
|
75
|
+
if (/timed out|timeout/i.test(combined)) {
|
|
76
|
+
signals.push("timeout");
|
|
77
|
+
}
|
|
78
|
+
return takeUnique(signals);
|
|
79
|
+
}
|
|
80
|
+
function extractFirstErrorLine(lines) {
|
|
81
|
+
return lines.find((line) => /error|exception|fatal|panic|failed|ENOENT|EACCES|EPERM/i.test(line)) ?? lines[0];
|
|
82
|
+
}
|
|
83
|
+
function extractFileReferences(combined) {
|
|
84
|
+
const matches = [
|
|
85
|
+
...combined.matchAll(/([A-Za-z0-9_./-]+\.(?:ts|tsx|js|jsx|py|go|rs|java|json|yml|yaml))(?::\d+|(?:\(\d+,\d+\)))?/g),
|
|
86
|
+
].map((match) => match[1]);
|
|
87
|
+
return takeUnique(matches, 8);
|
|
88
|
+
}
|
|
89
|
+
function extractStackFrames(lines) {
|
|
90
|
+
return takeUnique(lines.filter((line) => /^at\s.+/.test(line) || /^\s*at\s.+/.test(line)), 5);
|
|
91
|
+
}
|
|
92
|
+
function extractEvidence(lines, firstErrorLine) {
|
|
93
|
+
const prioritized = [
|
|
94
|
+
...(firstErrorLine ? [firstErrorLine] : []),
|
|
95
|
+
...lines.filter((line) => /error|exception|fatal|panic|ENOENT|EACCES|EPERM|Missing script:/i.test(line)),
|
|
96
|
+
...lines.filter((line) => /[A-Za-z0-9_./-]+\.(?:ts|tsx|js|jsx|py|go|rs|java|json|yml|yaml)\(\d+,\d+\)/i.test(line)),
|
|
97
|
+
];
|
|
98
|
+
return takeUnique(prioritized.length > 0 ? prioritized : lines.slice(0, 3), 4);
|
|
99
|
+
}
|
|
100
|
+
function buildFallbackSuggestions(category, signals) {
|
|
101
|
+
const suggestions = [
|
|
102
|
+
"Start with the first concrete error line instead of later noisy output.",
|
|
103
|
+
"Re-run with `--stream` for live logs or `--json` for structured output.",
|
|
104
|
+
];
|
|
105
|
+
if (signals.includes("file-location")) {
|
|
106
|
+
suggestions.push("Open the referenced file and fix the earliest reported location first.");
|
|
107
|
+
}
|
|
108
|
+
if (signals.includes("stack-trace")) {
|
|
109
|
+
suggestions.push("Follow the first stack frame that points into your own code.");
|
|
110
|
+
}
|
|
111
|
+
if (signals.includes("missing-script")) {
|
|
112
|
+
suggestions.push("Run `npm run` to list available scripts, then use the correct one.");
|
|
113
|
+
}
|
|
114
|
+
if (category === "missing-command") {
|
|
115
|
+
suggestions.push("Check that the executable exists on PATH or run it through your package manager.");
|
|
116
|
+
}
|
|
117
|
+
if (category === "network") {
|
|
118
|
+
suggestions.push("Check whether the target service, host, or local server is reachable.");
|
|
119
|
+
}
|
|
120
|
+
return takeUnique(suggestions, 4);
|
|
121
|
+
}
|
|
122
|
+
function buildHeadline(category, firstErrorLine) {
|
|
123
|
+
switch (category) {
|
|
124
|
+
case "missing-command":
|
|
125
|
+
return "Missing executable";
|
|
126
|
+
case "permissions":
|
|
127
|
+
return "Permission problem";
|
|
128
|
+
case "network":
|
|
129
|
+
return "Network or service failure";
|
|
130
|
+
case "typescript":
|
|
131
|
+
return "TypeScript failure";
|
|
132
|
+
case "package-manager":
|
|
133
|
+
return "Package manager failure";
|
|
134
|
+
case "python":
|
|
135
|
+
return "Python failure";
|
|
136
|
+
case "runtime":
|
|
137
|
+
return "Runtime failure";
|
|
138
|
+
default:
|
|
139
|
+
return firstErrorLine ? "Command failed" : "No output from command";
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function buildSummary(command, exitCode, firstErrorLine) {
|
|
143
|
+
if (firstErrorLine) {
|
|
144
|
+
return firstErrorLine;
|
|
145
|
+
}
|
|
146
|
+
return `The command \`${command}\` exited${exitCode === null ? "" : ` with code ${exitCode}`}.`;
|
|
147
|
+
}
|
|
148
|
+
function parseError(command, stdout, stderr, exitCode) {
|
|
149
|
+
const combined = `${stderr}\n${stdout}`.trim();
|
|
150
|
+
const lines = cleanLines(combined);
|
|
151
|
+
const signals = detectSignals(lines, combined);
|
|
152
|
+
const firstErrorLine = extractFirstErrorLine(lines);
|
|
153
|
+
const category = detectCategory(combined, signals);
|
|
154
|
+
const headline = buildHeadline(category, firstErrorLine);
|
|
155
|
+
const summary = buildSummary(command, exitCode, firstErrorLine);
|
|
156
|
+
const fileReferences = extractFileReferences(combined);
|
|
157
|
+
const stackFrames = extractStackFrames(lines);
|
|
158
|
+
const evidence = extractEvidence(lines, firstErrorLine);
|
|
159
|
+
const suggestions = buildFallbackSuggestions(category, signals);
|
|
160
|
+
return {
|
|
161
|
+
category,
|
|
162
|
+
summary,
|
|
163
|
+
headline,
|
|
164
|
+
evidence,
|
|
165
|
+
suggestions,
|
|
166
|
+
firstErrorLine,
|
|
167
|
+
fileReferences,
|
|
168
|
+
stackFrames,
|
|
169
|
+
signals,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=error-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../src/core/error-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runProcess = runProcess;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
async function runProcess(commandArgs, options) {
|
|
6
|
+
const [file, ...args] = commandArgs;
|
|
7
|
+
if (!file) {
|
|
8
|
+
throw new Error("No executable was provided.");
|
|
9
|
+
}
|
|
10
|
+
const startedAt = Date.now();
|
|
11
|
+
let stdout = "";
|
|
12
|
+
let stderr = "";
|
|
13
|
+
let timedOut = false;
|
|
14
|
+
const streamedOutput = options.streamOutput ?? false;
|
|
15
|
+
let child;
|
|
16
|
+
try {
|
|
17
|
+
child = (0, child_process_1.spawn)(file, args, {
|
|
18
|
+
cwd: options.cwd,
|
|
19
|
+
env: process.env,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
const message = error.message;
|
|
24
|
+
return {
|
|
25
|
+
command: commandArgs.join(" "),
|
|
26
|
+
commandArgs,
|
|
27
|
+
cwd: options.cwd,
|
|
28
|
+
stdout,
|
|
29
|
+
stderr: message,
|
|
30
|
+
durationMs: Date.now() - startedAt,
|
|
31
|
+
exitCode: null,
|
|
32
|
+
signal: null,
|
|
33
|
+
ok: false,
|
|
34
|
+
timedOut,
|
|
35
|
+
streamedOutput,
|
|
36
|
+
started: false,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (options.inheritStdin && process.stdin.isTTY) {
|
|
40
|
+
process.stdin.resume();
|
|
41
|
+
process.stdin.pipe(child.stdin);
|
|
42
|
+
}
|
|
43
|
+
const forwardSignal = (signal) => {
|
|
44
|
+
if (!child.killed) {
|
|
45
|
+
child.kill(signal);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const handleSigint = () => {
|
|
49
|
+
forwardSignal("SIGINT");
|
|
50
|
+
};
|
|
51
|
+
const handleSigterm = () => {
|
|
52
|
+
forwardSignal("SIGTERM");
|
|
53
|
+
};
|
|
54
|
+
process.once("SIGINT", handleSigint);
|
|
55
|
+
process.once("SIGTERM", handleSigterm);
|
|
56
|
+
child.stdout.on("data", (chunk) => {
|
|
57
|
+
const text = chunk.toString();
|
|
58
|
+
stdout += text;
|
|
59
|
+
options.onStdout?.(text);
|
|
60
|
+
});
|
|
61
|
+
child.stderr.on("data", (chunk) => {
|
|
62
|
+
const text = chunk.toString();
|
|
63
|
+
stderr += text;
|
|
64
|
+
options.onStderr?.(text);
|
|
65
|
+
});
|
|
66
|
+
const timeout = options.timeoutMs
|
|
67
|
+
? setTimeout(() => {
|
|
68
|
+
timedOut = true;
|
|
69
|
+
child.kill("SIGTERM");
|
|
70
|
+
}, options.timeoutMs)
|
|
71
|
+
: undefined;
|
|
72
|
+
return new Promise((resolve) => {
|
|
73
|
+
child.on("error", (error) => {
|
|
74
|
+
if (timeout) {
|
|
75
|
+
clearTimeout(timeout);
|
|
76
|
+
}
|
|
77
|
+
resolve({
|
|
78
|
+
command: commandArgs.join(" "),
|
|
79
|
+
commandArgs,
|
|
80
|
+
cwd: options.cwd,
|
|
81
|
+
stdout,
|
|
82
|
+
stderr: error.message,
|
|
83
|
+
durationMs: Date.now() - startedAt,
|
|
84
|
+
exitCode: null,
|
|
85
|
+
signal: null,
|
|
86
|
+
ok: false,
|
|
87
|
+
timedOut,
|
|
88
|
+
streamedOutput,
|
|
89
|
+
started: true,
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
child.on("close", (exitCode, signal) => {
|
|
93
|
+
process.removeListener("SIGINT", handleSigint);
|
|
94
|
+
process.removeListener("SIGTERM", handleSigterm);
|
|
95
|
+
if (options.inheritStdin && process.stdin.isTTY) {
|
|
96
|
+
process.stdin.unpipe(child.stdin);
|
|
97
|
+
}
|
|
98
|
+
if (timeout) {
|
|
99
|
+
clearTimeout(timeout);
|
|
100
|
+
}
|
|
101
|
+
resolve({
|
|
102
|
+
command: commandArgs.join(" "),
|
|
103
|
+
commandArgs,
|
|
104
|
+
cwd: options.cwd,
|
|
105
|
+
stdout,
|
|
106
|
+
stderr,
|
|
107
|
+
durationMs: Date.now() - startedAt,
|
|
108
|
+
exitCode,
|
|
109
|
+
signal,
|
|
110
|
+
ok: exitCode === 0 && !timedOut,
|
|
111
|
+
timedOut,
|
|
112
|
+
streamedOutput,
|
|
113
|
+
started: true,
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/core/process.ts"],"names":[],"mappings":"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"}
|