repoburg 1.0.55 → 1.0.57
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/backend/.env +1 -0
- package/backend/coverage/clover.xml +2409 -2355
- package/backend/coverage/coverage-final.json +99 -96
- package/backend/coverage/lcov-report/index.html +356 -341
- package/backend/coverage/lcov-report/src/action-execution/action-execution.module.ts.html +12 -12
- package/backend/coverage/lcov-report/src/action-execution/action-execution.service.ts.html +140 -62
- package/backend/coverage/lcov-report/src/action-execution/index.html +28 -28
- package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +188 -188
- package/backend/coverage/lcov-report/src/ai-actions/ai-action-creation.service.ts.html +284 -236
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +109 -109
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +28 -28
- package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +193 -193
- package/backend/coverage/lcov-report/src/ai-actions/index.html +61 -61
- package/backend/coverage/lcov-report/src/app.controller.ts.html +24 -24
- package/backend/coverage/lcov-report/src/app.module.ts.html +68 -65
- package/backend/coverage/lcov-report/src/app.service.ts.html +46 -13
- package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +87 -33
- package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +18 -18
- package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +113 -68
- package/backend/coverage/lcov-report/src/application-state/dto/index.html +42 -27
- package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +12 -12
- package/backend/coverage/lcov-report/src/application-state/dto/set-orchestration-timeout.dto.ts.html +103 -0
- package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +12 -12
- package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +12 -12
- package/backend/coverage/lcov-report/src/application-state/index.html +37 -37
- package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +16 -16
- package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +222 -222
- package/backend/coverage/lcov-report/src/context-generation/index.html +28 -28
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +31 -31
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +20 -20
- package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +26 -26
- package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +28 -28
- package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/context-snippets/index.html +31 -31
- package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +45 -45
- package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +20 -20
- package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +87 -84
- package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +48 -48
- package/backend/coverage/lcov-report/src/context-templates/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/context-templates/index.html +36 -36
- package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +48 -48
- package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +14 -14
- package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +22 -22
- package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +18 -18
- package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +52 -52
- package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +20 -20
- package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +26 -26
- package/backend/coverage/lcov-report/src/core-entities/index.html +112 -112
- package/backend/coverage/lcov-report/src/core-entities/index.ts.html +28 -28
- package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +24 -24
- package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +59 -50
- package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +56 -56
- package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +28 -28
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +30 -30
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +18 -18
- package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +20 -20
- package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +28 -28
- package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/custom-snippets/index.html +32 -32
- package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +46 -46
- package/backend/coverage/lcov-report/src/events/events.module.ts.html +12 -12
- package/backend/coverage/lcov-report/src/events/index.html +28 -28
- package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +1 -1
- package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +1 -1
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +18 -18
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +18 -18
- package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +32 -32
- package/backend/coverage/lcov-report/src/execution-logs/index.html +33 -33
- package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +55 -55
- package/backend/coverage/lcov-report/src/index.html +44 -44
- package/backend/coverage/lcov-report/src/llm-response-parser/dto/ai-action.dto.ts.html +67 -67
- package/backend/coverage/lcov-report/src/llm-response-parser/dto/index.html +21 -21
- package/backend/coverage/lcov-report/src/llm-response-parser/errors/index.html +17 -17
- package/backend/coverage/lcov-report/src/llm-response-parser/errors/parsing.error.ts.html +19 -19
- package/backend/coverage/lcov-report/src/llm-response-parser/index.html +35 -35
- package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.module.ts.html +12 -12
- package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.service.ts.html +208 -208
- package/backend/coverage/lcov-report/src/llm-response-parser/parsing.constants.ts.html +38 -38
- package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +21 -21
- package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +28 -28
- package/backend/coverage/lcov-report/src/llm-responses/index.html +38 -38
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +24 -24
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +38 -35
- package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +107 -86
- package/backend/coverage/lcov-report/src/main.ts.html +1 -1
- package/backend/coverage/lcov-report/src/orchestration/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/orchestration/dto/orchestration.dto.ts.html +30 -45
- package/backend/coverage/lcov-report/src/orchestration/index.html +74 -74
- package/backend/coverage/lcov-report/src/orchestration/orchestration-fs.service.ts.html +245 -128
- package/backend/coverage/lcov-report/src/orchestration/orchestration-parser.service.ts.html +32 -200
- package/backend/coverage/lcov-report/src/orchestration/orchestration.controller.ts.html +72 -102
- package/backend/coverage/lcov-report/src/orchestration/orchestration.module.ts.html +35 -38
- package/backend/coverage/lcov-report/src/orchestration/orchestration.service.ts.html +317 -425
- package/backend/coverage/lcov-report/src/orchestration/orchestration.types.ts.html +41 -35
- package/backend/coverage/lcov-report/src/projects/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +20 -20
- package/backend/coverage/lcov-report/src/projects/index.html +32 -32
- package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +28 -28
- package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +18 -18
- package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +20 -20
- package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +22 -22
- package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +21 -21
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/pm-context.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/pr-description.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/context-templates/sample_focused-tree.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/codebase-explorer.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_multi-file-action-generator-with-requester.ts.html +8 -2
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +3 -3
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/packup.ts.html +1 -1
- package/backend/coverage/lcov-report/src/seeding/data/system-prompts/refactor-split.ts.html +244 -0
- package/backend/coverage/lcov-report/src/seeding/index.html +47 -47
- package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +24 -24
- package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +27 -27
- package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +21 -21
- package/backend/coverage/lcov-report/src/session-followup/index.html +28 -28
- package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +22 -22
- package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +44 -41
- package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +40 -28
- package/backend/coverage/lcov-report/src/session-inputs/index.html +50 -50
- package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +168 -156
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +36 -36
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +40 -37
- package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +242 -236
- package/backend/coverage/lcov-report/src/session-transfer/index.html +22 -22
- package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +16 -16
- package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +30 -30
- package/backend/coverage/lcov-report/src/sessions/dto/index.html +21 -21
- package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +54 -54
- package/backend/coverage/lcov-report/src/sessions/index.html +39 -39
- package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +55 -55
- package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +30 -30
- package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +120 -120
- package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +19 -19
- package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +38 -29
- package/backend/coverage/lcov-report/src/system-prompts/index.html +37 -37
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +34 -34
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +20 -20
- package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +62 -62
- package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +1 -1
- package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +310 -0
- package/backend/coverage/lcov-report/src/utils/index.html +131 -0
- package/backend/coverage/lcov-report/src/utils/index.ts.html +88 -0
- package/backend/coverage/lcov-report/src/workspace/dto/index.html +13 -13
- package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +24 -24
- package/backend/coverage/lcov-report/src/workspace/index.html +37 -37
- package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +26 -26
- package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +16 -16
- package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +259 -214
- package/backend/coverage/lcov.info +3284 -3186
- package/backend/dist/action-execution/action-execution.service.d.ts +2 -0
- package/backend/dist/action-execution/action-execution.service.js +31 -13
- package/backend/dist/action-execution/action-execution.service.js.map +1 -1
- package/backend/dist/context-generation/context-generation.service.d.ts +2 -2
- package/backend/dist/context-generation/context-generation.service.js.map +1 -1
- package/backend/dist/orchestration/orchestration.service.js +1 -0
- package/backend/dist/orchestration/orchestration.service.js.map +1 -1
- package/backend/dist/session-inputs/dto/session-input.dto.d.ts +1 -0
- package/backend/dist/session-inputs/dto/session-input.dto.js +5 -0
- package/backend/dist/session-inputs/dto/session-input.dto.js.map +1 -1
- package/backend/dist/session-inputs/session-input-context.service.js +4 -5
- package/backend/dist/session-inputs/session-input-context.service.js.map +1 -1
- package/backend/dist/session-inputs/session-inputs.service.js +2 -1
- package/backend/dist/session-inputs/session-inputs.service.js.map +1 -1
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/backend/dist/utils/fuzzy-search.js +13 -4
- package/backend/dist/utils/fuzzy-search.js.map +1 -1
- package/backend/dist/workspace/workspace.service.d.ts +1 -0
- package/backend/dist/workspace/workspace.service.js +14 -3
- package/backend/dist/workspace/workspace.service.js.map +1 -1
- package/package.json +1 -1
- package/orchestration-test.txt +0 -3
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>5/5</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>3/3</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -71,22 +71,22 @@
|
|
|
71
71
|
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
72
|
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
73
|
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a></td><td class="line-coverage quiet"><span class="cline-any cline-
|
|
75
|
-
<span class="cline-any cline-
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">6x</span>
|
|
75
|
+
<span class="cline-any cline-yes">6x</span>
|
|
76
76
|
<span class="cline-any cline-neutral"> </span>
|
|
77
77
|
<span class="cline-any cline-neutral"> </span>
|
|
78
78
|
<span class="cline-any cline-neutral"> </span>
|
|
79
79
|
<span class="cline-any cline-neutral"> </span>
|
|
80
80
|
<span class="cline-any cline-neutral"> </span>
|
|
81
|
-
<span class="cline-any cline-
|
|
82
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
83
|
-
|
|
81
|
+
<span class="cline-any cline-yes">6x</span>
|
|
82
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Module } from '@nestjs/common';
|
|
83
|
+
import { ActionExecutionService } from './action-execution.service';
|
|
84
84
|
|
|
85
85
|
@Module({
|
|
86
86
|
providers: [ActionExecutionService],
|
|
87
87
|
exports: [ActionExecutionService],
|
|
88
88
|
})
|
|
89
|
-
export
|
|
89
|
+
export class ActionExecutionModule {}
|
|
90
90
|
</pre></td></tr></table></pre>
|
|
91
91
|
|
|
92
92
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -94,7 +94,7 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
|
|
|
94
94
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
95
95
|
Code coverage generated by
|
|
96
96
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
97
|
-
at 2025-
|
|
97
|
+
at 2025-09-12T19:21:55.945Z
|
|
98
98
|
</div>
|
|
99
99
|
<script src="../../prettify.js"></script>
|
|
100
100
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">64.81% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>35/54</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">33.33% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>4/12</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">83.33% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>5/6</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">63.46% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>33/52</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -158,62 +158,112 @@
|
|
|
158
158
|
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
159
|
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
160
|
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">11x</span>
|
|
162
188
|
<span class="cline-any cline-neutral"> </span>
|
|
163
189
|
<span class="cline-any cline-neutral"> </span>
|
|
164
190
|
<span class="cline-any cline-neutral"> </span>
|
|
165
191
|
<span class="cline-any cline-neutral"> </span>
|
|
166
192
|
<span class="cline-any cline-neutral"> </span>
|
|
167
|
-
<span class="cline-any cline-no"> </span>
|
|
168
|
-
<span class="cline-any cline-no"> </span>
|
|
169
|
-
<span class="cline-any cline-no"> </span>
|
|
170
|
-
<span class="cline-any cline-no"> </span>
|
|
171
193
|
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-
|
|
194
|
+
<span class="cline-any cline-yes">11x</span>
|
|
195
|
+
<span class="cline-any cline-yes">11x</span>
|
|
196
|
+
<span class="cline-any cline-yes">11x</span>
|
|
197
|
+
<span class="cline-any cline-yes">11x</span>
|
|
173
198
|
<span class="cline-any cline-neutral"> </span>
|
|
199
|
+
<span class="cline-any cline-yes">11x</span>
|
|
174
200
|
<span class="cline-any cline-neutral"> </span>
|
|
175
|
-
<span class="cline-any cline-no"> </span>
|
|
176
|
-
<span class="cline-any cline-no"> </span>
|
|
177
201
|
<span class="cline-any cline-neutral"> </span>
|
|
202
|
+
<span class="cline-any cline-yes">11x</span>
|
|
203
|
+
<span class="cline-any cline-yes">6x</span>
|
|
204
|
+
<span class="cline-any cline-yes">6x</span>
|
|
178
205
|
<span class="cline-any cline-neutral"> </span>
|
|
179
|
-
<span class="cline-any cline-no"> </span>
|
|
180
|
-
<span class="cline-any cline-no"> </span>
|
|
181
|
-
<span class="cline-any cline-no"> </span>
|
|
182
|
-
<span class="cline-any cline-no"> </span>
|
|
183
|
-
<span class="cline-any cline-no"> </span>
|
|
184
206
|
<span class="cline-any cline-neutral"> </span>
|
|
207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
208
|
+
<span class="cline-any cline-yes">12x</span>
|
|
209
|
+
<span class="cline-any cline-yes">12x</span>
|
|
210
|
+
<span class="cline-any cline-yes">1x</span>
|
|
211
|
+
<span class="cline-any cline-neutral"> </span>
|
|
212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-yes">11x</span>
|
|
215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
216
|
+
<span class="cline-any cline-yes">11x</span>
|
|
185
217
|
<span class="cline-any cline-no"> </span>
|
|
186
218
|
<span class="cline-any cline-no"> </span>
|
|
187
219
|
<span class="cline-any cline-neutral"> </span>
|
|
188
220
|
<span class="cline-any cline-neutral"> </span>
|
|
189
221
|
<span class="cline-any cline-neutral"> </span>
|
|
222
|
+
<span class="cline-any cline-yes">11x</span>
|
|
190
223
|
<span class="cline-any cline-neutral"> </span>
|
|
191
224
|
<span class="cline-any cline-neutral"> </span>
|
|
192
225
|
<span class="cline-any cline-neutral"> </span>
|
|
193
|
-
<span class="cline-any cline-
|
|
226
|
+
<span class="cline-any cline-yes">7x</span>
|
|
227
|
+
<span class="cline-any cline-yes">6x</span>
|
|
228
|
+
<span class="cline-any cline-yes">6x</span>
|
|
229
|
+
<span class="cline-any cline-yes">6x</span>
|
|
230
|
+
<span class="cline-any cline-yes">6x</span>
|
|
231
|
+
<span class="cline-any cline-yes">6x</span>
|
|
194
232
|
<span class="cline-any cline-neutral"> </span>
|
|
195
233
|
<span class="cline-any cline-no"> </span>
|
|
196
234
|
<span class="cline-any cline-no"> </span>
|
|
197
|
-
<span class="cline-any cline-no"> </span>
|
|
198
|
-
<span class="cline-any cline-no"> </span>
|
|
199
235
|
<span class="cline-any cline-neutral"> </span>
|
|
200
|
-
<span class="cline-any cline-no"> </span>
|
|
201
|
-
<span class="cline-any cline-no"> </span>
|
|
202
236
|
<span class="cline-any cline-neutral"> </span>
|
|
203
237
|
<span class="cline-any cline-neutral"> </span>
|
|
204
238
|
<span class="cline-any cline-neutral"> </span>
|
|
205
239
|
<span class="cline-any cline-neutral"> </span>
|
|
206
240
|
<span class="cline-any cline-neutral"> </span>
|
|
241
|
+
<span class="cline-any cline-yes">4x</span>
|
|
242
|
+
<span class="cline-any cline-yes">4x</span>
|
|
243
|
+
<span class="cline-any cline-neutral"> </span>
|
|
244
|
+
<span class="cline-any cline-yes">4x</span>
|
|
245
|
+
<span class="cline-any cline-yes">4x</span>
|
|
246
|
+
<span class="cline-any cline-yes">4x</span>
|
|
247
|
+
<span class="cline-any cline-yes">4x</span>
|
|
207
248
|
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-no"> </span>
|
|
209
|
-
<span class="cline-any cline-no"> </span>
|
|
210
249
|
<span class="cline-any cline-no"> </span>
|
|
211
250
|
<span class="cline-any cline-no"> </span>
|
|
212
251
|
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-
|
|
252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
254
|
+
<span class="cline-any cline-neutral"> </span>
|
|
255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
257
|
+
<span class="cline-any cline-yes">1x</span>
|
|
258
|
+
<span class="cline-any cline-yes">1x</span>
|
|
259
|
+
<span class="cline-any cline-yes">1x</span>
|
|
214
260
|
<span class="cline-any cline-no"> </span>
|
|
215
261
|
<span class="cline-any cline-no"> </span>
|
|
216
262
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-yes">1x</span>
|
|
264
|
+
<span class="cline-any cline-yes">1x</span>
|
|
265
|
+
<span class="cline-any cline-yes">1x</span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
217
267
|
<span class="cline-any cline-neutral"> </span>
|
|
218
268
|
<span class="cline-any cline-neutral"> </span>
|
|
219
269
|
<span class="cline-any cline-no"> </span>
|
|
@@ -228,6 +278,8 @@
|
|
|
228
278
|
<span class="cline-any cline-no"> </span>
|
|
229
279
|
<span class="cline-any cline-no"> </span>
|
|
230
280
|
<span class="cline-any cline-no"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
231
283
|
<span class="cline-any cline-no"> </span>
|
|
232
284
|
<span class="cline-any cline-no"> </span>
|
|
233
285
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -253,61 +305,85 @@
|
|
|
253
305
|
<span class="cline-any cline-neutral"> </span>
|
|
254
306
|
<span class="cline-any cline-neutral"> </span>
|
|
255
307
|
<span class="cline-any cline-neutral"> </span>
|
|
256
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
308
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
257
309
|
Injectable,
|
|
258
310
|
InternalServerErrorException,
|
|
259
311
|
Logger,
|
|
260
312
|
NotFoundException,
|
|
313
|
+
BadRequestException,
|
|
261
314
|
} from '@nestjs/common';
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
315
|
+
import * as fs from 'fs/promises';
|
|
316
|
+
import * as path from 'path';
|
|
317
|
+
import { exec } from 'child_process';
|
|
318
|
+
import { promisify } from 'util';
|
|
266
319
|
|
|
267
|
-
const execAsync =
|
|
320
|
+
const execAsync = promisify(exec);
|
|
268
321
|
|
|
269
322
|
@Injectable()
|
|
270
|
-
export
|
|
271
|
-
private readonly
|
|
323
|
+
export class ActionExecutionService {
|
|
324
|
+
private readonly logger = new Logger(ActionExecutionService.name);
|
|
325
|
+
private readonly projectRoot: string =
|
|
326
|
+
process.env.REPOBURG_PROJECT_PATH || process.cwd();
|
|
272
327
|
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
328
|
+
private resolveAndValidatePath(unsafePath: string): string {
|
|
329
|
+
const normalizedPath = path.normalize(unsafePath);
|
|
330
|
+
if (path.isAbsolute(normalizedPath)) {
|
|
331
|
+
throw new BadRequestException(
|
|
332
|
+
`Absolute paths are not allowed: ${unsafePath}`,
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
const resolvedPath = path.resolve(this.projectRoot, normalizedPath);
|
|
336
|
+
|
|
337
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!resolvedPath.startsWith(this.projectRoot)) {
|
|
338
|
+
<span class="cstat-no" title="statement not covered" > this.logger.warn(`Path traversal attempt detected: ${unsafePath}`);</span>
|
|
339
|
+
<span class="cstat-no" title="statement not covered" > throw new BadRequestException(</span>
|
|
340
|
+
`Path traversal is not allowed. Access denied for path: ${unsafePath}`,
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
return resolvedPath;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
public async createFile(filePath: string, content: string): Promise<void> {
|
|
347
|
+
const safePath = this.resolveAndValidatePath(filePath);
|
|
348
|
+
const dir = path.dirname(safePath);
|
|
349
|
+
try {
|
|
350
|
+
await fs.mkdir(dir, { recursive: true });
|
|
351
|
+
await fs.writeFile(safePath, content, 'utf8');
|
|
352
|
+
this.logger.log(`Created file: ${safePath}`);
|
|
279
353
|
} catch (error) {
|
|
280
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error(`Error creating file ${
|
|
354
|
+
<span class="cstat-no" title="statement not covered" > this.logger.error(`Error creating file ${safePath}: ${error.message}`);</span>
|
|
281
355
|
<span class="cstat-no" title="statement not covered" > throw new InternalServerErrorException(</span>
|
|
282
356
|
`Failed to create file "${filePath}": ${error.message}`,
|
|
283
357
|
);
|
|
284
358
|
}
|
|
285
359
|
}
|
|
286
360
|
|
|
287
|
-
public
|
|
288
|
-
|
|
361
|
+
public async editFile(filePath: string, newContent: string): Promise<void> {
|
|
362
|
+
const safePath = this.resolveAndValidatePath(filePath);
|
|
363
|
+
try {
|
|
289
364
|
// For edit, ensure directory exists, then write. This handles cases where edit implies creation.
|
|
290
|
-
const dir =
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
365
|
+
const dir = path.dirname(safePath);
|
|
366
|
+
await fs.mkdir(dir, { recursive: true });
|
|
367
|
+
await fs.writeFile(safePath, newContent, 'utf8');
|
|
368
|
+
this.logger.log(`Edited file: ${safePath}`);
|
|
294
369
|
} catch (error) {
|
|
295
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error(`Error editing file ${
|
|
370
|
+
<span class="cstat-no" title="statement not covered" > this.logger.error(`Error editing file ${safePath}: ${error.message}`);</span>
|
|
296
371
|
<span class="cstat-no" title="statement not covered" > throw new InternalServerErrorException(</span>
|
|
297
372
|
`Failed to edit file "${filePath}": ${error.message}`,
|
|
298
373
|
);
|
|
299
374
|
}
|
|
300
375
|
}
|
|
301
376
|
|
|
302
|
-
public
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
<span class="cstat-no" title="statement not covered" >
|
|
377
|
+
public async deleteFile(filePath: string): Promise<void> {
|
|
378
|
+
const safePath = this.resolveAndValidatePath(filePath);
|
|
379
|
+
try {
|
|
380
|
+
await fs.access(safePath); // Check if file exists
|
|
381
|
+
<span class="cstat-no" title="statement not covered" > await fs.unlink(safePath);</span>
|
|
382
|
+
<span class="cstat-no" title="statement not covered" > this.logger.log(`Deleted file: ${safePath}`);</span>
|
|
307
383
|
} catch (error) {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
384
|
+
this.logger.error(`Error deleting file ${safePath}: ${error.message}`);
|
|
385
|
+
if (error.code === 'ENOENT') {
|
|
386
|
+
throw new NotFoundException(
|
|
311
387
|
`File not found, cannot delete: "${filePath}"`,
|
|
312
388
|
);
|
|
313
389
|
}
|
|
@@ -322,7 +398,9 @@ export <span class="fstat-no" title="function not covered" >class <span class="c
|
|
|
322
398
|
): Promise<{ stdout: string; stderr: string }> {
|
|
323
399
|
<span class="cstat-no" title="statement not covered" > this.logger.log(`Executing command: ${commandString}`);</span>
|
|
324
400
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
325
|
-
const { stdout, stderr } = <span class="cstat-no" title="statement not covered" >await execAsync(commandString
|
|
401
|
+
const { stdout, stderr } = <span class="cstat-no" title="statement not covered" >await execAsync(commandString, {</span>
|
|
402
|
+
cwd: this.projectRoot,
|
|
403
|
+
});
|
|
326
404
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (stderr) {</span>
|
|
327
405
|
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
328
406
|
`Command "${commandString}" produced stderr: ${stderr}`,
|
|
@@ -355,7 +433,7 @@ export <span class="fstat-no" title="function not covered" >class <span class="c
|
|
|
355
433
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
356
434
|
Code coverage generated by
|
|
357
435
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
358
|
-
at 2025-
|
|
436
|
+
at 2025-09-12T19:21:55.945Z
|
|
359
437
|
</div>
|
|
360
438
|
<script src="../../prettify.js"></script>
|
|
361
439
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">67.79% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>40/59</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">33.33% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>4/12</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">83.33% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>5/6</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">65.45% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>36/55</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<div class="pad1">
|
|
66
66
|
<table class="coverage-summary">
|
|
67
67
|
<thead>
|
|
@@ -79,33 +79,33 @@
|
|
|
79
79
|
</tr>
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
|
-
<td class="file
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
82
|
+
<td class="file high" data-value="action-execution.module.ts"><a href="action-execution.module.ts.html">action-execution.module.ts</a></td>
|
|
83
|
+
<td data-value="100" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="5" class="abs
|
|
86
|
+
<td data-value="100" class="pct high">100%</td>
|
|
87
|
+
<td data-value="5" class="abs high">5/5</td>
|
|
88
88
|
<td data-value="100" class="pct high">100%</td>
|
|
89
89
|
<td data-value="0" class="abs high">0/0</td>
|
|
90
90
|
<td data-value="100" class="pct high">100%</td>
|
|
91
91
|
<td data-value="0" class="abs high">0/0</td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="3" class="abs
|
|
92
|
+
<td data-value="100" class="pct high">100%</td>
|
|
93
|
+
<td data-value="3" class="abs high">3/3</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
97
|
-
<td class="file
|
|
98
|
-
<td data-value="
|
|
99
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
97
|
+
<td class="file medium" data-value="action-execution.service.ts"><a href="action-execution.service.ts.html">action-execution.service.ts</a></td>
|
|
98
|
+
<td data-value="64.81" class="pic medium">
|
|
99
|
+
<div class="chart"><div class="cover-fill" style="width: 64%"></div><div class="cover-empty" style="width: 36%"></div></div>
|
|
100
100
|
</td>
|
|
101
|
-
<td data-value="
|
|
102
|
-
<td data-value="
|
|
103
|
-
<td data-value="
|
|
104
|
-
<td data-value="
|
|
105
|
-
<td data-value="
|
|
106
|
-
<td data-value="
|
|
107
|
-
<td data-value="
|
|
108
|
-
<td data-value="
|
|
101
|
+
<td data-value="64.81" class="pct medium">64.81%</td>
|
|
102
|
+
<td data-value="54" class="abs medium">35/54</td>
|
|
103
|
+
<td data-value="33.33" class="pct low">33.33%</td>
|
|
104
|
+
<td data-value="12" class="abs low">4/12</td>
|
|
105
|
+
<td data-value="83.33" class="pct high">83.33%</td>
|
|
106
|
+
<td data-value="6" class="abs high">5/6</td>
|
|
107
|
+
<td data-value="63.46" class="pct medium">63.46%</td>
|
|
108
|
+
<td data-value="52" class="abs medium">33/52</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
</tbody>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2025-
|
|
119
|
+
at 2025-09-12T19:21:55.945Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|