@htekdev/actions-debugger 1.0.26 → 1.0.28

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 (46) hide show
  1. package/README.md +45 -4
  2. package/dist/cli/commands/categories.d.ts +6 -0
  3. package/dist/cli/commands/categories.d.ts.map +1 -0
  4. package/dist/cli/commands/categories.js +26 -0
  5. package/dist/cli/commands/categories.js.map +1 -0
  6. package/dist/cli/commands/diagnose.d.ts +6 -0
  7. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  8. package/dist/cli/commands/diagnose.js +56 -0
  9. package/dist/cli/commands/diagnose.js.map +1 -0
  10. package/dist/cli/commands/lookup.d.ts +6 -0
  11. package/dist/cli/commands/lookup.d.ts.map +1 -0
  12. package/dist/cli/commands/lookup.js +27 -0
  13. package/dist/cli/commands/lookup.js.map +1 -0
  14. package/dist/cli/commands/search.d.ts +6 -0
  15. package/dist/cli/commands/search.d.ts.map +1 -0
  16. package/dist/cli/commands/search.js +33 -0
  17. package/dist/cli/commands/search.js.map +1 -0
  18. package/dist/cli/commands/suggest.d.ts +6 -0
  19. package/dist/cli/commands/suggest.d.ts.map +1 -0
  20. package/dist/cli/commands/suggest.js +27 -0
  21. package/dist/cli/commands/suggest.js.map +1 -0
  22. package/dist/cli/main.d.ts +5 -0
  23. package/dist/cli/main.d.ts.map +1 -0
  24. package/dist/cli/main.js +20 -0
  25. package/dist/cli/main.js.map +1 -0
  26. package/dist/cli/output.d.ts +17 -0
  27. package/dist/cli/output.d.ts.map +1 -0
  28. package/dist/cli/output.js +311 -0
  29. package/dist/cli/output.js.map +1 -0
  30. package/dist/entry.d.ts +12 -0
  31. package/dist/entry.d.ts.map +1 -0
  32. package/dist/entry.js +30 -0
  33. package/dist/entry.js.map +1 -0
  34. package/dist/index.d.ts +4 -5
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -30
  37. package/dist/index.js.map +1 -1
  38. package/dist/mcp.d.ts +11 -0
  39. package/dist/mcp.d.ts.map +1 -0
  40. package/dist/mcp.js +25 -0
  41. package/dist/mcp.js.map +1 -0
  42. package/errors/runner-environment/container-job-entrypoint-overridden.yml +90 -0
  43. package/errors/runner-environment/github-path-prepend-breaks-container-no-path-env.yml +80 -0
  44. package/errors/silent-failures/event-inputs-empty-workflow-call.yml +81 -0
  45. package/errors/triggers/workflow-dispatch-button-missing-not-default-branch.yml +94 -0
  46. package/package.json +11 -6
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Output formatters for CLI commands.
3
+ * Supports text (human-friendly), json (machine-parseable), and md (markdown).
4
+ */
5
+ /**
6
+ * Detect the appropriate output format.
7
+ * TTY → text, piped → json, or explicit user choice.
8
+ */
9
+ export function detectFormat(explicit) {
10
+ if (explicit && explicit !== "auto")
11
+ return explicit;
12
+ return process.stdout.isTTY ? "text" : "json";
13
+ }
14
+ // ─── Lookup ─────────────────────────────────────────────────────────────────
15
+ export function formatLookupOutput(results, format) {
16
+ if (format === "json") {
17
+ return JSON.stringify({ matches: results.map(entryToJson) }, null, 2);
18
+ }
19
+ if (format === "md") {
20
+ return formatLookupMd(results);
21
+ }
22
+ return formatLookupText(results);
23
+ }
24
+ function formatLookupText(results) {
25
+ if (results.length === 0) {
26
+ return "No matching errors found.\n\nTry `actions-debugger search <keyword>` for broader results.";
27
+ }
28
+ return results.map((entry) => {
29
+ const lines = [
30
+ `✓ Match: ${entry.title}`,
31
+ ` Category: ${entry.category} | Severity: ${entry.severity}`,
32
+ "",
33
+ ` Root Cause: ${entry.root_cause.trim()}`,
34
+ "",
35
+ ` Fix: ${entry.fix.trim()}`,
36
+ ];
37
+ if (entry.fix_code?.length) {
38
+ lines.push("");
39
+ for (const fc of entry.fix_code) {
40
+ lines.push(` ${fc.label || fc.language}:`);
41
+ for (const line of fc.code.trim().split("\n")) {
42
+ lines.push(` ${line}`);
43
+ }
44
+ }
45
+ }
46
+ if (entry.prevention?.length) {
47
+ lines.push("", " Prevention:");
48
+ for (const p of entry.prevention) {
49
+ lines.push(` - ${p}`);
50
+ }
51
+ }
52
+ if (entry.docs?.length) {
53
+ lines.push("", " Docs:");
54
+ for (const d of entry.docs) {
55
+ lines.push(` - ${d.label}: ${d.url}`);
56
+ }
57
+ }
58
+ return lines.join("\n");
59
+ }).join("\n\n---\n\n");
60
+ }
61
+ function formatLookupMd(results) {
62
+ if (results.length === 0) {
63
+ return "No matching errors found.";
64
+ }
65
+ return results.map((entry, i) => {
66
+ const lines = [
67
+ `## ${i > 0 ? `Match ${i + 1}: ` : ""}${entry.title}`,
68
+ "",
69
+ `**Category:** ${entry.category} | **Severity:** ${entry.severity}`,
70
+ "",
71
+ `**Root Cause:** ${entry.root_cause.trim()}`,
72
+ "",
73
+ `**Fix:** ${entry.fix.trim()}`,
74
+ ];
75
+ if (entry.fix_code?.length) {
76
+ for (const fc of entry.fix_code) {
77
+ lines.push("", `\`\`\`${fc.language}`, fc.code.trim(), "```");
78
+ }
79
+ }
80
+ if (entry.prevention?.length) {
81
+ lines.push("", "**Prevention:**");
82
+ for (const p of entry.prevention) {
83
+ lines.push(`- ${p}`);
84
+ }
85
+ }
86
+ if (entry.docs?.length) {
87
+ lines.push("", "**Docs:**");
88
+ for (const d of entry.docs) {
89
+ lines.push(`- [${d.label}](${d.url})`);
90
+ }
91
+ }
92
+ return lines.join("\n");
93
+ }).join("\n\n---\n\n");
94
+ }
95
+ // ─── Search ─────────────────────────────────────────────────────────────────
96
+ export function formatSearchOutput(results, format) {
97
+ if (format === "json") {
98
+ return JSON.stringify({ matches: results.map(entryToJson) }, null, 2);
99
+ }
100
+ if (format === "md") {
101
+ return formatSearchMd(results);
102
+ }
103
+ return formatSearchText(results);
104
+ }
105
+ function formatSearchText(results) {
106
+ if (results.length === 0) {
107
+ return "No results found. Try different keywords or browse with `actions-debugger categories`.";
108
+ }
109
+ const lines = [`Found ${results.length} result(s):`, ""];
110
+ for (const entry of results) {
111
+ lines.push(` ${entry.title}`);
112
+ lines.push(` ${entry.category} | ${entry.severity} | ${entry.root_cause.trim().split("\n")[0]}`);
113
+ lines.push("");
114
+ }
115
+ return lines.join("\n");
116
+ }
117
+ function formatSearchMd(results) {
118
+ if (results.length === 0)
119
+ return "No results found.";
120
+ const lines = [`## Search Results (${results.length})`, ""];
121
+ for (const entry of results) {
122
+ lines.push(`### ${entry.title}`);
123
+ lines.push(`**Category:** ${entry.category} | **Severity:** ${entry.severity}`);
124
+ lines.push("", entry.root_cause.trim().split("\n")[0], "");
125
+ }
126
+ return lines.join("\n");
127
+ }
128
+ // ─── Diagnose ───────────────────────────────────────────────────────────────
129
+ export function formatDiagnoseOutput(findings, format) {
130
+ if (format === "json") {
131
+ return JSON.stringify({ findings }, null, 2);
132
+ }
133
+ if (format === "md") {
134
+ return formatDiagnoseMd(findings);
135
+ }
136
+ return formatDiagnoseText(findings);
137
+ }
138
+ function formatDiagnoseText(findings) {
139
+ if (findings.length === 0) {
140
+ return "✅ No issues found. Workflow looks good!";
141
+ }
142
+ const lines = [`Found ${findings.length} issue(s):`, ""];
143
+ const icons = { critical: "🔴", high: "🟠", medium: "🟡", low: "🔵" };
144
+ for (const f of findings) {
145
+ lines.push(` ${icons[f.severity] || "•"} [${f.severity}] ${f.message}`);
146
+ lines.push(` Fix: ${f.fix}`);
147
+ if (f.fix_code) {
148
+ for (const line of f.fix_code.split("\n")) {
149
+ lines.push(` ${line}`);
150
+ }
151
+ }
152
+ lines.push("");
153
+ }
154
+ return lines.join("\n");
155
+ }
156
+ function formatDiagnoseMd(findings) {
157
+ if (findings.length === 0)
158
+ return "✅ No issues found.";
159
+ const lines = [`## Workflow Analysis — ${findings.length} issue(s)`, ""];
160
+ for (const f of findings) {
161
+ lines.push(`- **[${f.severity}]** ${f.message}`);
162
+ lines.push(` - Fix: ${f.fix}`);
163
+ if (f.fix_code) {
164
+ lines.push(" ```", ` ${f.fix_code}`, " ```");
165
+ }
166
+ }
167
+ return lines.join("\n");
168
+ }
169
+ // ─── Suggest ────────────────────────────────────────────────────────────────
170
+ export function formatSuggestOutput(results, format) {
171
+ if (format === "json") {
172
+ return JSON.stringify({ suggestions: results.map(entryToJson) }, null, 2);
173
+ }
174
+ if (format === "md") {
175
+ return formatSuggestMd(results);
176
+ }
177
+ return formatSuggestText(results);
178
+ }
179
+ function formatSuggestText(results) {
180
+ if (results.length === 0) {
181
+ return "No matching suggestions. Try `actions-debugger lookup <exact error message>` for better results.";
182
+ }
183
+ const best = results[0];
184
+ const lines = [
185
+ `✓ Suggested Fix: ${best.title}`,
186
+ ` Category: ${best.category} | Severity: ${best.severity}`,
187
+ "",
188
+ ` Root Cause: ${best.root_cause.trim()}`,
189
+ "",
190
+ ` Fix: ${best.fix.trim()}`,
191
+ ];
192
+ if (best.fix_code?.length) {
193
+ lines.push("");
194
+ for (const fc of best.fix_code) {
195
+ lines.push(` ${fc.label || fc.language}:`);
196
+ for (const line of fc.code.trim().split("\n")) {
197
+ lines.push(` ${line}`);
198
+ }
199
+ }
200
+ }
201
+ if (results.length > 1) {
202
+ lines.push("", " Other possible matches:");
203
+ for (const entry of results.slice(1)) {
204
+ lines.push(` - ${entry.title} (${entry.category})`);
205
+ }
206
+ }
207
+ return lines.join("\n");
208
+ }
209
+ function formatSuggestMd(results) {
210
+ if (results.length === 0)
211
+ return "No matching suggestions.";
212
+ const best = results[0];
213
+ const lines = [
214
+ `## Suggested Fix: ${best.title}`,
215
+ "",
216
+ `**Category:** ${best.category} | **Severity:** ${best.severity}`,
217
+ "",
218
+ `**Root Cause:** ${best.root_cause.trim()}`,
219
+ "",
220
+ `**Fix:** ${best.fix.trim()}`,
221
+ ];
222
+ if (best.fix_code?.length) {
223
+ for (const fc of best.fix_code) {
224
+ lines.push("", `\`\`\`${fc.language}`, fc.code.trim(), "```");
225
+ }
226
+ }
227
+ if (results.length > 1) {
228
+ lines.push("", "**Other possible matches:**");
229
+ for (const entry of results.slice(1)) {
230
+ lines.push(`- ${entry.title} (${entry.category})`);
231
+ }
232
+ }
233
+ return lines.join("\n");
234
+ }
235
+ // ─── Categories ─────────────────────────────────────────────────────────────
236
+ export function formatCategoriesOutput(categories, format) {
237
+ if (format === "json") {
238
+ return JSON.stringify({
239
+ categories: categories.map((c) => ({
240
+ name: c.name,
241
+ count: c.count,
242
+ severities: c.severities,
243
+ })),
244
+ }, null, 2);
245
+ }
246
+ if (format === "md") {
247
+ return formatCategoriesMd(categories);
248
+ }
249
+ return formatCategoriesText(categories);
250
+ }
251
+ function formatCategoriesText(categories) {
252
+ const total = categories.reduce((sum, c) => sum + c.count, 0);
253
+ const nameWidth = Math.max(...categories.map((c) => c.name.length), 10);
254
+ const lines = [
255
+ `Error Categories (${total} total errors)`,
256
+ "",
257
+ `${"Category".padEnd(nameWidth)} Count Severities`,
258
+ "─".repeat(nameWidth + 40),
259
+ ];
260
+ for (const cat of categories) {
261
+ const sevParts = [];
262
+ if (cat.severities.error)
263
+ sevParts.push(`${cat.severities.error} error`);
264
+ if (cat.severities.warning)
265
+ sevParts.push(`${cat.severities.warning} warning`);
266
+ if (cat.severities["silent-failure"])
267
+ sevParts.push(`${cat.severities["silent-failure"]} silent`);
268
+ if (cat.severities.limitation)
269
+ sevParts.push(`${cat.severities.limitation} limitation`);
270
+ lines.push(`${cat.name.padEnd(nameWidth)} ${String(cat.count).padStart(5)} ${sevParts.join(", ")}`);
271
+ }
272
+ return lines.join("\n");
273
+ }
274
+ function formatCategoriesMd(categories) {
275
+ const total = categories.reduce((sum, c) => sum + c.count, 0);
276
+ const lines = [
277
+ `## Error Categories (${total} total)`,
278
+ "",
279
+ "| Category | Count | Severities |",
280
+ "|----------|-------|------------|",
281
+ ];
282
+ for (const cat of categories) {
283
+ const sevParts = [];
284
+ if (cat.severities.error)
285
+ sevParts.push(`${cat.severities.error} error`);
286
+ if (cat.severities.warning)
287
+ sevParts.push(`${cat.severities.warning} warning`);
288
+ if (cat.severities["silent-failure"])
289
+ sevParts.push(`${cat.severities["silent-failure"]} silent`);
290
+ if (cat.severities.limitation)
291
+ sevParts.push(`${cat.severities.limitation} limitation`);
292
+ lines.push(`| \`${cat.name}\` | ${cat.count} | ${sevParts.join(", ")} |`);
293
+ }
294
+ return lines.join("\n");
295
+ }
296
+ // ─── Helpers ────────────────────────────────────────────────────────────────
297
+ function entryToJson(entry) {
298
+ return {
299
+ id: entry.id,
300
+ title: entry.title,
301
+ category: entry.category,
302
+ severity: entry.severity,
303
+ root_cause: entry.root_cause.trim(),
304
+ fix: entry.fix.trim(),
305
+ fix_code: entry.fix_code?.map((fc) => ({ language: fc.language, code: fc.code.trim() })),
306
+ prevention: entry.prevention,
307
+ docs: entry.docs,
308
+ tags: entry.tags,
309
+ };
310
+ }
311
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Unified entry point for @htekdev/actions-debugger.
4
+ *
5
+ * Detection logic:
6
+ * - Known subcommand (lookup, search, diagnose, suggest-fix, categories) → CLI mode
7
+ * - --help, --version, or flag starting with - → CLI mode (commander handles it)
8
+ * - No args or --mcp → MCP server mode (backward compatible)
9
+ * - Unknown arg → MCP server mode (fallback)
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
package/dist/entry.js ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Unified entry point for @htekdev/actions-debugger.
4
+ *
5
+ * Detection logic:
6
+ * - Known subcommand (lookup, search, diagnose, suggest-fix, categories) → CLI mode
7
+ * - --help, --version, or flag starting with - → CLI mode (commander handles it)
8
+ * - No args or --mcp → MCP server mode (backward compatible)
9
+ * - Unknown arg → MCP server mode (fallback)
10
+ */
11
+ const CLI_COMMANDS = ["lookup", "search", "diagnose", "suggest-fix", "categories"];
12
+ const firstArg = process.argv[2];
13
+ if (!firstArg || firstArg === "--mcp") {
14
+ // MCP server mode — dynamic import to keep startup fast for CLI
15
+ import("./mcp.js");
16
+ }
17
+ else if (CLI_COMMANDS.includes(firstArg) ||
18
+ firstArg === "--help" ||
19
+ firstArg === "-h" ||
20
+ firstArg === "--version" ||
21
+ firstArg === "-V") {
22
+ // CLI mode
23
+ import("./cli/main.js");
24
+ }
25
+ else {
26
+ // Unknown arg — fallback to MCP for backward compat
27
+ import("./mcp.js");
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAEnF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;IACtC,gEAAgE;IAChE,MAAM,CAAC,UAAU,CAAC,CAAC;AACrB,CAAC;KAAM,IACL,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/B,QAAQ,KAAK,QAAQ;IACrB,QAAQ,KAAK,IAAI;IACjB,QAAQ,KAAK,WAAW;IACxB,QAAQ,KAAK,IAAI,EACjB,CAAC;IACD,WAAW;IACX,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1B,CAAC;KAAM,CAAC;IACN,oDAAoD;IACpD,MAAM,CAAC,UAAU,CAAC,CAAC;AACrB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
- #!/usr/bin/env node
2
1
  /**
3
- * @htekdev/actions-debugger — MCP server entry point.
2
+ * @htekdev/actions-debugger — Programmatic API exports.
4
3
  *
5
4
  * 65+ real GitHub Actions errors, queryable by agents.
6
- * Runs as a stdio MCP server for Claude Desktop, Copilot CLI, Cursor, etc.
7
5
  *
8
- * Usage:
9
- * npx @htekdev/actions-debugger
6
+ * For MCP server: import from "@htekdev/actions-debugger/mcp"
7
+ * For CLI: npx @htekdev/actions-debugger <command>
8
+ * For library: import { lookupError, searchErrors } from "@htekdev/actions-debugger"
10
9
  *
11
10
  * Source: https://htek.dev/articles/github-actions-debugging-guide
12
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACb,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACb,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,44 +1,19 @@
1
- #!/usr/bin/env node
2
1
  /**
3
- * @htekdev/actions-debugger — MCP server entry point.
2
+ * @htekdev/actions-debugger — Programmatic API exports.
4
3
  *
5
4
  * 65+ real GitHub Actions errors, queryable by agents.
6
- * Runs as a stdio MCP server for Claude Desktop, Copilot CLI, Cursor, etc.
7
5
  *
8
- * Usage:
9
- * npx @htekdev/actions-debugger
6
+ * For MCP server: import from "@htekdev/actions-debugger/mcp"
7
+ * For CLI: npx @htekdev/actions-debugger <command>
8
+ * For library: import { lookupError, searchErrors } from "@htekdev/actions-debugger"
10
9
  *
11
10
  * Source: https://htek.dev/articles/github-actions-debugging-guide
12
11
  */
13
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
14
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
15
- import { loadErrorDatabase } from "./db/loader.js";
16
- import { registerTools } from "./server.js";
17
- // Re-export programmatic API
12
+ // Core API exports
18
13
  export { loadErrorDatabase } from "./db/loader.js";
19
14
  export { lookupError } from "./tools/lookup-error.js";
20
15
  export { diagnoseWorkflow } from "./tools/diagnose-workflow.js";
21
16
  export { suggestFix } from "./tools/suggest-fix.js";
22
17
  export { listCategories } from "./tools/list-categories.js";
23
18
  export { searchErrors } from "./tools/search-errors.js";
24
- /**
25
- * Start the MCP server if running as CLI.
26
- */
27
- async function main() {
28
- const db = await loadErrorDatabase();
29
- const server = new Server({ name: "actions-debugger", version: "1.0.0" }, { capabilities: { tools: {} } });
30
- registerTools(server, db);
31
- const transport = new StdioServerTransport();
32
- await server.connect(transport);
33
- }
34
- // Only start server when running as CLI (not when imported as library)
35
- const isMainModule = process.argv[1] &&
36
- (process.argv[1].endsWith("index.js") ||
37
- process.argv[1].endsWith("actions-debugger"));
38
- if (isMainModule) {
39
- main().catch((err) => {
40
- console.error("Fatal error:", err);
41
- process.exit(1);
42
- });
43
- }
44
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAWxD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAErC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,uEAAuE;AACvE,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAElD,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP server entry point.
4
+ * Starts the stdio MCP server for Claude Desktop, Copilot CLI, Cursor, etc.
5
+ *
6
+ * Usage:
7
+ * npx @htekdev/actions-debugger (no subcommand → MCP mode)
8
+ * node dist/mcp.js
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
package/dist/mcp.js ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP server entry point.
4
+ * Starts the stdio MCP server for Claude Desktop, Copilot CLI, Cursor, etc.
5
+ *
6
+ * Usage:
7
+ * npx @htekdev/actions-debugger (no subcommand → MCP mode)
8
+ * node dist/mcp.js
9
+ */
10
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
11
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
+ import { loadErrorDatabase } from "./db/loader.js";
13
+ import { registerTools } from "./server.js";
14
+ async function main() {
15
+ const db = await loadErrorDatabase();
16
+ const server = new Server({ name: "actions-debugger", version: "1.1.0" }, { capabilities: { tools: {} } });
17
+ registerTools(server, db);
18
+ const transport = new StdioServerTransport();
19
+ await server.connect(transport);
20
+ }
21
+ main().catch((err) => {
22
+ console.error("Fatal error:", err);
23
+ process.exit(1);
24
+ });
25
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAErC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,90 @@
1
+ id: runner-environment-080
2
+ title: "Container job ENTRYPOINT silently overridden by GitHub Actions runner"
3
+ category: runner-environment
4
+ severity: silent-failure
5
+ tags:
6
+ - container
7
+ - docker
8
+ - entrypoint
9
+ - job-container
10
+ - dockerfile
11
+ - initialization
12
+ patterns:
13
+ - regex: 'ENTRYPOINT.*not.*execut|entrypoint.*not.*run|entrypoint.*overrid|custom.*entrypoint.*skip'
14
+ flags: 'i'
15
+ - regex: 'container.*init.*fail|setup.*script.*not.*run'
16
+ flags: 'i'
17
+ error_messages:
18
+ - "Custom initialization script did not run in container job"
19
+ - "Expected environment setup from ENTRYPOINT was missing"
20
+ - "Docker container ENTRYPOINT not executing in GitHub Actions"
21
+ root_cause: |
22
+ When a workflow job uses a container image via the container: key, the GitHub
23
+ Actions runner creates the container with --entrypoint "", explicitly replacing
24
+ any ENTRYPOINT defined in the Docker image with an empty string. This is by
25
+ design: the runner must inject its own workspace setup and process management
26
+ before any user steps run.
27
+
28
+ As a result, ENTRYPOINT instructions in the container Dockerfile are silently
29
+ ignored. Steps then run via docker exec into the already-running container, so
30
+ the ENTRYPOINT never fires. Initialization logic that developers expect to run
31
+ (environment setup, tool configuration, user switching) simply does not happen.
32
+
33
+ This is distinct from Docker container ACTIONS (action.yml with runs.using:
34
+ docker), which DO execute ENTRYPOINT as specified. The override only applies to
35
+ workflow job containers (jobs.<id>.container:).
36
+ fix: |
37
+ Choose one of these approaches:
38
+
39
+ 1. Move initialization to CMD. GitHub Actions does not override CMD, and the
40
+ docker container options: field lets you pass --entrypoint pointing to your
41
+ init script.
42
+
43
+ 2. Use the container options: field to specify the entrypoint explicitly:
44
+ options: --entrypoint /path/to/init.sh
45
+
46
+ 3. Add an explicit initialization step at the top of the job. This is the most
47
+ transparent approach: the step runs before other steps and is visible in logs.
48
+
49
+ 4. Switch to a Docker container ACTION (action.yml) if you need ENTRYPOINT
50
+ semantics and own the action definition.
51
+ fix_code:
52
+ - language: yaml
53
+ label: "Option A: Override entrypoint via container options"
54
+ code: |
55
+ jobs:
56
+ build:
57
+ runs-on: ubuntu-latest
58
+ container:
59
+ image: my-custom-image:latest
60
+ options: --entrypoint /usr/local/bin/my-init.sh
61
+ steps:
62
+ - name: Run build
63
+ run: make build
64
+
65
+ - language: yaml
66
+ label: "Option B: Run initialization as an explicit first step (most transparent)"
67
+ code: |
68
+ jobs:
69
+ build:
70
+ runs-on: ubuntu-latest
71
+ container:
72
+ image: my-custom-image:latest
73
+ steps:
74
+ - name: Initialize environment
75
+ run: /usr/local/bin/my-init.sh
76
+ - name: Run build
77
+ run: make build
78
+ prevention:
79
+ - "Do not rely on ENTRYPOINT for initialization in workflow job containers"
80
+ - "Use CMD for default command arguments; keep setup in workflow steps or the options: field"
81
+ - "Test container behavior locally with docker run --entrypoint '' myimage bash to simulate GitHub Actions"
82
+ - "Use Docker container actions (action.yml with runs.using: docker) when ENTRYPOINT execution is required"
83
+ - "Document any ENTRYPOINT logic removal in a comment in the Dockerfile"
84
+ docs:
85
+ - url: "https://docs.github.com/en/actions/reference/dockerfile-support-for-github-actions"
86
+ label: "Dockerfile support for GitHub Actions"
87
+ - url: "https://docs.github.com/en/actions/using-jobs/running-jobs-in-a-container"
88
+ label: "Running jobs in a container"
89
+ - url: "https://github.com/actions/runner/issues/1964"
90
+ label: "actions/runner#1964: Docker entrypoint not executing in container jobs (open, 8 reactions)"