@bengabay94/mrzero 0.2.0-alpha.3 → 0.2.2-alpha.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 +19 -2
- package/agents/templates/MrZeroMapperOS.template.md +14 -9
- package/dist/config/tool-strings.js +4 -4
- package/dist/config/tool-strings.js.map +1 -1
- package/dist/installer/docker.d.ts.map +1 -1
- package/dist/installer/docker.js +56 -20
- package/dist/installer/docker.js.map +1 -1
- package/dist/installer/launcher.d.ts.map +1 -1
- package/dist/installer/launcher.js +8 -4
- package/dist/installer/launcher.js.map +1 -1
- package/dist/installer/template-renderer.d.ts.map +1 -1
- package/dist/installer/template-renderer.js +37 -7
- package/dist/installer/template-renderer.js.map +1 -1
- package/docker/Dockerfile +6 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -96,7 +96,13 @@ To use a different password, update the `MSF_PASSWORD` environment variable in y
|
|
|
96
96
|
|
|
97
97
|
### With Claude Code
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
Launch Claude Code through MrZero to enable the security tools:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
mrzero claude
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The agents are available globally and can use all MrZero tools.
|
|
100
106
|
|
|
101
107
|
**Switch agents:** Press `Tab` to cycle through available agents
|
|
102
108
|
|
|
@@ -107,7 +113,13 @@ After installation, restart Claude Code. The agents are available globally.
|
|
|
107
113
|
|
|
108
114
|
### With OpenCode
|
|
109
115
|
|
|
110
|
-
|
|
116
|
+
Launch OpenCode through MrZero to enable the security tools:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
mrzero opencode
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
The agents are configured automatically and can use all MrZero tools.
|
|
111
123
|
|
|
112
124
|
**Switch agents:** Press `Tab` to cycle through agents
|
|
113
125
|
|
|
@@ -116,6 +128,11 @@ After installation, restart OpenCode. The agents are configured automatically.
|
|
|
116
128
|
@MrZeroVulnHunterOS find vulnerabilities in this codebase
|
|
117
129
|
```
|
|
118
130
|
|
|
131
|
+
> **Note:** When using OpenCode's interactive bash mode (the `!` prefix), the MrZero tools
|
|
132
|
+
> may not be visible in your PATH. However, the AI agents have full access to all tools
|
|
133
|
+
> when they execute bash commands. If you need to run a tool manually in bash mode,
|
|
134
|
+
> use the full path: `~/.local/bin/mrzero-tools/<tool-name>`
|
|
135
|
+
|
|
119
136
|
## Verify Installation
|
|
120
137
|
|
|
121
138
|
Check what's installed:
|
|
@@ -9,7 +9,7 @@ tools:
|
|
|
9
9
|
bash: true
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
You are MrZeroMapper, an elite offensive security researcher and attack surface analyst specializing in comprehensive security assessment of open-source codebases. Your expertise lies in identifying
|
|
12
|
+
You are MrZeroMapper, an elite offensive security researcher and attack surface analyst specializing in comprehensive security assessment of open-source codebases. Your expertise lies in identifying entry points where external data enters the application, mapping data flow paths, and documenting where attackers could potentially control inputs. You are not required to find vulnerabilities.
|
|
13
13
|
|
|
14
14
|
## Your Core Responsibilities
|
|
15
15
|
|
|
@@ -28,7 +28,7 @@ You are MrZeroMapper, an elite offensive security researcher and attack surface
|
|
|
28
28
|
- Validation and sanitization mechanisms (or lack thereof)
|
|
29
29
|
- Data flow through the application
|
|
30
30
|
- Trust boundaries and privilege contexts
|
|
31
|
-
-
|
|
31
|
+
- Where the input data flows to (sinks) within the application
|
|
32
32
|
|
|
33
33
|
{{SECTION_TOOL_ASSISTED_START}}
|
|
34
34
|
3. **Tool-Assisted Analysis**: Leverage the following security tools when available on the local system:
|
|
@@ -65,6 +65,12 @@ You are MrZeroMapper, an elite offensive security researcher and attack surface
|
|
|
65
65
|
{{TOOL_USAGE_BEARER}}
|
|
66
66
|
{{SECTION_TOOL_EXECUTION_END}}
|
|
67
67
|
|
|
68
|
+
### Phase 3: Input Flow Analysis
|
|
69
|
+
- Trace data flow from input sources to where they are processed
|
|
70
|
+
- Identify authentication and authorization entry points
|
|
71
|
+
- Document where user-controlled data interacts with sensitive operations
|
|
72
|
+
- Map file upload, parsing, and deserialization entry points
|
|
73
|
+
|
|
68
74
|
### Phase 4: Attack Vector Classification
|
|
69
75
|
For each identified attack vector, document:
|
|
70
76
|
- **Vector ID**: Unique identifier (e.g., AV-001)
|
|
@@ -79,7 +85,7 @@ Create a professional, well-structured Markdown report with:
|
|
|
79
85
|
# Attack Surface Analysis Report: <Target Name>
|
|
80
86
|
|
|
81
87
|
## Executive Summary
|
|
82
|
-
[High-level overview of
|
|
88
|
+
[High-level overview of identified input points and attack surface areas]
|
|
83
89
|
|
|
84
90
|
## Codebase Overview
|
|
85
91
|
- **Repository**: [URL/Path]
|
|
@@ -128,7 +134,7 @@ Create a professional, well-structured Markdown report with:
|
|
|
128
134
|
{{SECTION_TOOL_RESULTS_END}}
|
|
129
135
|
|
|
130
136
|
## Conclusion
|
|
131
|
-
[Overall attack surface assessment and
|
|
137
|
+
[Overall attack surface assessment and summary of key input points that warrant further security review]
|
|
132
138
|
|
|
133
139
|
## Appendix
|
|
134
140
|
- Tool versions and configurations used
|
|
@@ -139,14 +145,13 @@ Create a professional, well-structured Markdown report with:
|
|
|
139
145
|
## Your Decision-Making Framework
|
|
140
146
|
|
|
141
147
|
**When encountering ambiguity:**
|
|
142
|
-
- Better to
|
|
148
|
+
- Better to document more input points than miss potential entry points
|
|
143
149
|
- If tool execution fails, document the failure and proceed without it.
|
|
144
150
|
|
|
145
151
|
**Quality Control:**
|
|
146
|
-
- Verify that each reported
|
|
147
|
-
- Eliminate false positives by manually reviewing tool output
|
|
152
|
+
- Verify that each reported input point is actually reachable in the code
|
|
148
153
|
- Ensure code snippets in the report are accurate and contextual
|
|
149
|
-
- Cross-reference
|
|
154
|
+
- Cross-reference entry points identified by multiple tools
|
|
150
155
|
|
|
151
156
|
**Escalation Strategy:**
|
|
152
157
|
- If the codebase is too large to analyze in one session, focus on 1 section/logical-area inside it.
|
|
@@ -166,7 +171,7 @@ Create a professional, well-structured Markdown report with:
|
|
|
166
171
|
- Use precise technical language appropriate for security professionals
|
|
167
172
|
- Include actual code examples, not pseudocode
|
|
168
173
|
- Cite specific file paths, line numbers, and function names
|
|
169
|
-
- Organize findings logically
|
|
174
|
+
- Organize findings logically by input type or component area
|
|
170
175
|
|
|
171
176
|
## Important Constraints
|
|
172
177
|
|
|
@@ -23,9 +23,9 @@ exports.TOOL_STRINGS = {
|
|
|
23
23
|
// ============================================================================
|
|
24
24
|
MrZeroMapperOS: {
|
|
25
25
|
opengrep: {
|
|
26
|
-
TOOL_LIST_OPENGREP: ' - **opengrep
|
|
27
|
-
TOOL_USAGE_OPENGREP: '- Execute opengrep with security rulesets for the detected languages',
|
|
28
|
-
TOOL_RESULTS_OPENGREP: `### opengrep
|
|
26
|
+
TOOL_LIST_OPENGREP: ' - **opengrep** (semgrep-compatible): Pattern-based code analysis for identifying input handling patterns. Use `opengrep` command, NOT semgrep',
|
|
27
|
+
TOOL_USAGE_OPENGREP: '- Execute opengrep (NOT semgrep) with security rulesets for the detected languages',
|
|
28
|
+
TOOL_RESULTS_OPENGREP: `### opengrep (semgrep-compatible scanner)
|
|
29
29
|
[Summary of pattern-based findings]`,
|
|
30
30
|
},
|
|
31
31
|
gitleaks: {
|
|
@@ -61,7 +61,7 @@ exports.TOOL_STRINGS = {
|
|
|
61
61
|
// ============================================================================
|
|
62
62
|
MrZeroVulnHunterOS: {
|
|
63
63
|
opengrep: {
|
|
64
|
-
TOOL_DESC_OPENGREP: `**
|
|
64
|
+
TOOL_DESC_OPENGREP: `**opengrep** (semgrep-compatible, use \`opengrep\` command NOT semgrep): Use for pattern-based detection of common vulnerability patterns across multiple languages. Supports semgrep rule syntax. Excellent for finding injection flaws, authentication issues, and cryptographic mistakes.`,
|
|
65
65
|
},
|
|
66
66
|
codeql: {
|
|
67
67
|
TOOL_DESC_CODEQL: `**CodeQL**: Deploy for deep semantic analysis and data flow tracking. Use to trace attacker-controlled input through the codebase to sensitive sinks.`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-strings.js","sourceRoot":"","sources":["../../src/config/tool-strings.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AA6HH,kDAEC;AAKD,wCAEC;AAKD,sCAGC;AApIY,QAAA,YAAY,GAAqC;IAC5D,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAC/E,cAAc,EAAE;QACd,QAAQ,EAAE;YACR,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-strings.js","sourceRoot":"","sources":["../../src/config/tool-strings.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AA6HH,kDAEC;AAKD,wCAEC;AAKD,sCAGC;AApIY,QAAA,YAAY,GAAqC;IAC5D,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAC/E,cAAc,EAAE;QACd,QAAQ,EAAE;YACR,kBAAkB,EAAE,kJAAkJ;YACtK,mBAAmB,EAAE,oFAAoF;YACzG,qBAAqB,EAAE;oCACO;SAC/B;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE,sEAAsE;YAC1F,qBAAqB,EAAE;sCACS;SACjC;QACD,MAAM,EAAE;YACN,gBAAgB,EAAE,iEAAiE;YACnF,iBAAiB,EAAE,8EAA8E;YACjG,mBAAmB,EAAE;uCACY;SAClC;QACD,KAAK,EAAE;YACL,eAAe,EAAE,iEAAiE;YAClF,gBAAgB,EAAE,qDAAqD;YACvE,kBAAkB,EAAE;0CACgB;SACrC;QACD,MAAM,EAAE;YACN,gBAAgB,EAAE,yEAAyE;YAC3F,iBAAiB,EAAE,sDAAsD;YACzE,mBAAmB,EAAE;0CACe;SACrC;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE,yEAAyE;YAC7F,mBAAmB,EAAE,mDAAmD;SACzE;KACF;IAED,+EAA+E;IAC/E,mDAAmD;IACnD,+EAA+E;IAC/E,kBAAkB,EAAE;QAClB,QAAQ,EAAE;YACR,kBAAkB,EAAE,8RAA8R;SACnT;QACD,MAAM,EAAE;YACN,gBAAgB,EAAE,uJAAuJ;SAC1K;QACD,KAAK,EAAE;YACL,eAAe,EAAE,6JAA6J;SAC/K;QACD,KAAK,EAAE;YACL,eAAe,EAAE,qLAAqL;SACvM;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE,4HAA4H;SACjJ;QACD,OAAO,EAAE;YACP,iBAAiB,EAAE,sKAAsK;SAC1L;QACD,KAAK,EAAE;YACL,eAAe,EAAE,wHAAwH;SAC1I;KACF;IAED,+EAA+E;IAC/E,qDAAqD;IACrD,+EAA+E;IAC/E,sBAAsB,EAAE;QACtB,YAAY;QACZ,QAAQ,EAAE;YACR,kBAAkB,EAAE,+EAA+E;YACnG,mBAAmB,EAAE,iEAAiE;SACvF;QACD,MAAM,EAAE;YACN,gBAAgB,EAAE,6DAA6D;YAC/E,iBAAiB,EAAE,6FAA6F;SACjH;QACD,UAAU,EAAE;YACV,mBAAmB,EAAE,qDAAqD;SAC3E;QACD,+CAA+C;QAC/C,QAAQ,EAAE;YACR,kBAAkB,EAAE,8EAA8E;SACnG;QACD,cAAc;QACd,YAAY,EAAE;YACZ,gBAAgB,EAAE,sFAAsF;YACxG,iBAAiB,EAAE,mCAAmC;YACtD,iBAAiB,EAAE;;;;;;;OAOlB;SACF;QACD,YAAY,EAAE;YACZ,gBAAgB,EAAE,oEAAoE;SACvF;QACD,gBAAgB,EAAE;YAChB,oBAAoB,EAAE,wFAAwF;SAC/G;QACD,aAAa,EAAE;YACb,aAAa,EAAE,kFAAkF;SAClG;KACF;CACF,CAAC;AAEF;;GAEG;AACH,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,OAAO,oBAAY,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,SAAiB,EAAE,QAAgB;IAChE,OAAO,oBAAY,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,SAAiB;IAC7C,MAAM,YAAY,GAAG,oBAAY,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/installer/docker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/installer/docker.ts"],"names":[],"mappings":"AA4DA,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CA8BzD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO1D;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgD5E;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtE;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO1D"}
|
package/dist/installer/docker.js
CHANGED
|
@@ -59,11 +59,43 @@ if ! docker info > /dev/null 2>&1; then
|
|
|
59
59
|
fi
|
|
60
60
|
|
|
61
61
|
# Run the tool in container with current directory mounted
|
|
62
|
-
|
|
62
|
+
# Note: We don't use -t (TTY) as these tools are run non-interactively by AI agents
|
|
63
|
+
# Note: --entrypoint "" overrides any ENTRYPOINT in the image for direct command execution
|
|
64
|
+
# Note: --network host uses host networking for proper DNS resolution and internet access
|
|
65
|
+
# Note: PYTHONIOENCODING=utf-8 fixes encoding issues with some Python-based tools
|
|
66
|
+
docker run --rm \\
|
|
67
|
+
--network host \\
|
|
68
|
+
--entrypoint "" \\
|
|
69
|
+
-e PYTHONIOENCODING=utf-8 \\
|
|
63
70
|
-v "$(pwd)":/workspace \\
|
|
64
71
|
-w /workspace \\
|
|
65
72
|
"$MRZERO_IMAGE" \\
|
|
66
|
-
|
|
73
|
+
{{TOOL_COMMAND}} "$@"
|
|
74
|
+
`;
|
|
75
|
+
// Special wrapper for linguist which needs git safe.directory config
|
|
76
|
+
const LINGUIST_WRAPPER_TEMPLATE = `#!/bin/bash
|
|
77
|
+
# MrZero wrapper for linguist
|
|
78
|
+
# Transparently runs github-linguist in Docker container
|
|
79
|
+
|
|
80
|
+
MRZERO_IMAGE="${tools_js_1.DOCKER_IMAGE}"
|
|
81
|
+
|
|
82
|
+
# Check if Docker is running
|
|
83
|
+
if ! docker info > /dev/null 2>&1; then
|
|
84
|
+
echo "Error: Docker is not running. Please start Docker first." >&2
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Run linguist in container with current directory mounted
|
|
89
|
+
# Note: We configure git safe.directory to allow linguist to analyze mounted repos
|
|
90
|
+
# Note: --network host uses host networking for proper DNS resolution
|
|
91
|
+
docker run --rm \\
|
|
92
|
+
--network host \\
|
|
93
|
+
--entrypoint "" \\
|
|
94
|
+
-e PYTHONIOENCODING=utf-8 \\
|
|
95
|
+
-v "$(pwd)":/workspace \\
|
|
96
|
+
-w /workspace \\
|
|
97
|
+
"$MRZERO_IMAGE" \\
|
|
98
|
+
bash -c 'git config --global --add safe.directory /workspace 2>/dev/null; github-linguist "$@"' _ "$@"
|
|
67
99
|
`;
|
|
68
100
|
async function pullDockerImage() {
|
|
69
101
|
logger_js_1.logger.step(`Pulling Docker image: ${tools_js_1.DOCKER_IMAGE}`);
|
|
@@ -124,25 +156,29 @@ async function createWrapperScript(toolName) {
|
|
|
124
156
|
const wrapperPath = path.join(wrappersDir, wrapperName);
|
|
125
157
|
// Ensure wrappers directory exists
|
|
126
158
|
fs.mkdirSync(wrappersDir, { recursive: true });
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
159
|
+
let wrapperContent;
|
|
160
|
+
// Linguist needs special handling for git safe.directory
|
|
161
|
+
if (toolName === 'linguist') {
|
|
162
|
+
wrapperContent = LINGUIST_WRAPPER_TEMPLATE;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Generate wrapper content for other tools
|
|
166
|
+
let toolCommand = wrapperName;
|
|
167
|
+
// Some tools need special command names
|
|
168
|
+
switch (toolName) {
|
|
169
|
+
case 'joern':
|
|
170
|
+
toolCommand = 'joern';
|
|
171
|
+
break;
|
|
172
|
+
case 'codeql':
|
|
173
|
+
toolCommand = 'codeql';
|
|
174
|
+
break;
|
|
175
|
+
default:
|
|
176
|
+
toolCommand = wrapperName;
|
|
177
|
+
}
|
|
178
|
+
wrapperContent = WRAPPER_TEMPLATE
|
|
179
|
+
.replace(/{{TOOL_NAME}}/g, wrapperName)
|
|
180
|
+
.replace(/{{TOOL_COMMAND}}/g, toolCommand);
|
|
142
181
|
}
|
|
143
|
-
const wrapperContent = WRAPPER_TEMPLATE
|
|
144
|
-
.replace(/{{TOOL_NAME}}/g, wrapperName)
|
|
145
|
-
.replace(/{{TOOL_COMMAND}}/g, toolCommand);
|
|
146
182
|
try {
|
|
147
183
|
fs.writeFileSync(wrapperPath, wrapperContent, { mode: 0o755 });
|
|
148
184
|
logger_js_1.logger.success(`Created wrapper: ${wrapperPath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/installer/docker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/installer/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/installer/launcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/installer/launcher.ts"],"names":[],"mappings":"AA+DA;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAsCzD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAOpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C"}
|
|
@@ -54,30 +54,34 @@ function downloadFile(url, dest) {
|
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
const protocol = currentUrl.startsWith('https') ? https : require('http');
|
|
57
|
-
protocol.get(currentUrl, (response) => {
|
|
57
|
+
const req = protocol.get(currentUrl, (response) => {
|
|
58
58
|
// Handle redirects
|
|
59
59
|
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
60
60
|
const redirectUrl = response.headers.location;
|
|
61
|
+
// Consume and discard the response body to free up the socket
|
|
62
|
+
response.resume();
|
|
61
63
|
if (redirectUrl) {
|
|
62
64
|
request(redirectUrl, redirectCount + 1);
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
if (response.statusCode !== 200) {
|
|
69
|
+
response.resume(); // Consume response to free socket
|
|
67
70
|
fs.unlink(dest, () => { });
|
|
68
71
|
reject(new Error(`HTTP ${response.statusCode}: Failed to download`));
|
|
69
72
|
return;
|
|
70
73
|
}
|
|
71
74
|
response.pipe(file);
|
|
72
75
|
file.on('finish', () => {
|
|
73
|
-
file.close();
|
|
74
|
-
resolve();
|
|
76
|
+
file.close(() => resolve());
|
|
75
77
|
});
|
|
76
78
|
file.on('error', (err) => {
|
|
79
|
+
file.close();
|
|
77
80
|
fs.unlink(dest, () => { });
|
|
78
81
|
reject(err);
|
|
79
82
|
});
|
|
80
|
-
})
|
|
83
|
+
});
|
|
84
|
+
req.on('error', (err) => {
|
|
81
85
|
fs.unlink(dest, () => { });
|
|
82
86
|
reject(err);
|
|
83
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/installer/launcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/installer/launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-renderer.d.ts","sourceRoot":"","sources":["../../src/installer/template-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"template-renderer.d.ts","sourceRoot":"","sources":["../../src/installer/template-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAmPD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,aAAa,GACrB,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAI3D"}
|
|
@@ -139,16 +139,46 @@ function removeEmptySections(originalContent, renderedContent) {
|
|
|
139
139
|
return result;
|
|
140
140
|
}
|
|
141
141
|
/**
|
|
142
|
-
* Clean up excessive blank lines
|
|
142
|
+
* Clean up excessive blank lines and empty placeholder lines
|
|
143
143
|
*/
|
|
144
144
|
function cleanupWhitespace(content) {
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
// Split into lines for processing
|
|
146
|
+
const lines = content.split('\n');
|
|
147
|
+
const result = [];
|
|
148
|
+
for (let i = 0; i < lines.length; i++) {
|
|
149
|
+
const line = lines[i];
|
|
150
|
+
const trimmedLine = line.trim();
|
|
151
|
+
// If line has content, keep it (with trailing whitespace removed)
|
|
152
|
+
if (trimmedLine.length > 0) {
|
|
153
|
+
result.push(line.trimEnd());
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Line is empty/whitespace - decide if we should keep it
|
|
157
|
+
// Don't add empty line if the previous result line is also empty
|
|
158
|
+
// (this collapses multiple consecutive empty lines into one)
|
|
159
|
+
if (result.length > 0 && result[result.length - 1].trim().length === 0) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// Check if we're inside a list context (previous line starts with list marker)
|
|
163
|
+
// and next non-empty line also starts with list marker
|
|
164
|
+
// If so, skip this empty line as it breaks the list
|
|
165
|
+
const prevLine = result.length > 0 ? result[result.length - 1] : '';
|
|
166
|
+
const nextNonEmptyLine = lines.slice(i + 1).find(l => l.trim().length > 0) || '';
|
|
167
|
+
const listPatterns = [/^\s*-\s/, /^\s*\d+\.\s/, /^\s*\*\s/]; // -, 1., *
|
|
168
|
+
const prevIsList = listPatterns.some(p => p.test(prevLine));
|
|
169
|
+
const nextIsList = listPatterns.some(p => p.test(nextNonEmptyLine));
|
|
170
|
+
// If both prev and next are list items, skip this empty line
|
|
171
|
+
if (prevIsList && nextIsList) {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
// Keep single empty lines for paragraph separation
|
|
175
|
+
result.push('');
|
|
176
|
+
}
|
|
149
177
|
// Ensure file ends with single newline
|
|
150
|
-
result
|
|
151
|
-
|
|
178
|
+
while (result.length > 0 && result[result.length - 1] === '') {
|
|
179
|
+
result.pop();
|
|
180
|
+
}
|
|
181
|
+
return result.join('\n') + '\n';
|
|
152
182
|
}
|
|
153
183
|
/**
|
|
154
184
|
* Get the replacement string for a placeholder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../../src/installer/template-renderer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;
|
|
1
|
+
{"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../../src/installer/template-renderer.ts"],"names":[],"mappings":"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"}
|
package/docker/Dockerfile
CHANGED
|
@@ -132,9 +132,12 @@ RUN gem install one_gadget
|
|
|
132
132
|
# ============================================
|
|
133
133
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
134
134
|
|
|
135
|
+
# Configure git to trust mounted workspaces (needed for linguist)
|
|
136
|
+
RUN git config --global --add safe.directory '*'
|
|
137
|
+
|
|
135
138
|
# Set working directory for scanning
|
|
136
139
|
WORKDIR /workspace
|
|
137
140
|
|
|
138
|
-
#
|
|
139
|
-
|
|
140
|
-
CMD ["
|
|
141
|
+
# No entrypoint - commands are passed directly
|
|
142
|
+
# This allows: docker run image gitleaks --help
|
|
143
|
+
CMD ["/bin/bash"]
|