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,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">83.17% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>89/107</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">67.56% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>25/37</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">88.88% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>8/9</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">82.85% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>87/105</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>
|
|
@@ -321,29 +321,29 @@
|
|
|
321
321
|
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
322
|
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
323
|
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a></td><td class="line-coverage quiet"><span class="cline-any cline-
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">11x</span>
|
|
325
325
|
<span class="cline-any cline-neutral"> </span>
|
|
326
326
|
<span class="cline-any cline-neutral"> </span>
|
|
327
327
|
<span class="cline-any cline-neutral"> </span>
|
|
328
328
|
<span class="cline-any cline-neutral"> </span>
|
|
329
329
|
<span class="cline-any cline-neutral"> </span>
|
|
330
|
-
<span class="cline-any cline-
|
|
331
|
-
<span class="cline-any cline-
|
|
332
|
-
<span class="cline-any cline-
|
|
333
|
-
<span class="cline-any cline-
|
|
334
|
-
<span class="cline-any cline-
|
|
330
|
+
<span class="cline-any cline-yes">11x</span>
|
|
331
|
+
<span class="cline-any cline-yes">11x</span>
|
|
332
|
+
<span class="cline-any cline-yes">11x</span>
|
|
333
|
+
<span class="cline-any cline-yes">11x</span>
|
|
334
|
+
<span class="cline-any cline-yes">11x</span>
|
|
335
335
|
<span class="cline-any cline-neutral"> </span>
|
|
336
336
|
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-
|
|
338
|
-
<span class="cline-any cline-
|
|
339
|
-
<span class="cline-any cline-
|
|
340
|
-
<span class="cline-any cline-
|
|
341
|
-
<span class="cline-any cline-
|
|
342
|
-
<span class="cline-any cline-
|
|
343
|
-
<span class="cline-any cline-
|
|
344
|
-
<span class="cline-any cline-
|
|
345
|
-
<span class="cline-any cline-
|
|
346
|
-
<span class="cline-any cline-
|
|
337
|
+
<span class="cline-any cline-yes">11x</span>
|
|
338
|
+
<span class="cline-any cline-yes">11x</span>
|
|
339
|
+
<span class="cline-any cline-yes">11x</span>
|
|
340
|
+
<span class="cline-any cline-yes">11x</span>
|
|
341
|
+
<span class="cline-any cline-yes">11x</span>
|
|
342
|
+
<span class="cline-any cline-yes">11x</span>
|
|
343
|
+
<span class="cline-any cline-yes">11x</span>
|
|
344
|
+
<span class="cline-any cline-yes">11x</span>
|
|
345
|
+
<span class="cline-any cline-yes">11x</span>
|
|
346
|
+
<span class="cline-any cline-yes">11x</span>
|
|
347
347
|
<span class="cline-any cline-neutral"> </span>
|
|
348
348
|
<span class="cline-any cline-neutral"> </span>
|
|
349
349
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -363,16 +363,16 @@
|
|
|
363
363
|
<span class="cline-any cline-neutral"> </span>
|
|
364
364
|
<span class="cline-any cline-neutral"> </span>
|
|
365
365
|
<span class="cline-any cline-neutral"> </span>
|
|
366
|
-
<span class="cline-any cline-
|
|
367
|
-
<span class="cline-any cline-
|
|
366
|
+
<span class="cline-any cline-yes">11x</span>
|
|
367
|
+
<span class="cline-any cline-yes">19x</span>
|
|
368
368
|
<span class="cline-any cline-neutral"> </span>
|
|
369
369
|
<span class="cline-any cline-neutral"> </span>
|
|
370
370
|
<span class="cline-any cline-neutral"> </span>
|
|
371
|
-
<span class="cline-any cline-
|
|
371
|
+
<span class="cline-any cline-yes">19x</span>
|
|
372
372
|
<span class="cline-any cline-neutral"> </span>
|
|
373
|
-
<span class="cline-any cline-
|
|
374
|
-
<span class="cline-any cline-
|
|
375
|
-
<span class="cline-any cline-
|
|
373
|
+
<span class="cline-any cline-yes">19x</span>
|
|
374
|
+
<span class="cline-any cline-yes">19x</span>
|
|
375
|
+
<span class="cline-any cline-yes">19x</span>
|
|
376
376
|
<span class="cline-any cline-neutral"> </span>
|
|
377
377
|
<span class="cline-any cline-neutral"> </span>
|
|
378
378
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -393,107 +393,107 @@
|
|
|
393
393
|
<span class="cline-any cline-neutral"> </span>
|
|
394
394
|
<span class="cline-any cline-neutral"> </span>
|
|
395
395
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
-
<span class="cline-any cline-
|
|
396
|
+
<span class="cline-any cline-yes">28x</span>
|
|
397
397
|
<span class="cline-any cline-neutral"> </span>
|
|
398
398
|
<span class="cline-any cline-neutral"> </span>
|
|
399
399
|
<span class="cline-any cline-neutral"> </span>
|
|
400
|
-
<span class="cline-any cline-
|
|
400
|
+
<span class="cline-any cline-yes">28x</span>
|
|
401
401
|
<span class="cline-any cline-no"> </span>
|
|
402
402
|
<span class="cline-any cline-neutral"> </span>
|
|
403
|
-
<span class="cline-any cline-
|
|
403
|
+
<span class="cline-any cline-yes">28x</span>
|
|
404
404
|
<span class="cline-any cline-neutral"> </span>
|
|
405
405
|
<span class="cline-any cline-neutral"> </span>
|
|
406
406
|
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-
|
|
407
|
+
<span class="cline-any cline-yes">7x</span>
|
|
408
408
|
<span class="cline-any cline-neutral"> </span>
|
|
409
|
-
<span class="cline-any cline-
|
|
410
|
-
<span class="cline-any cline-
|
|
409
|
+
<span class="cline-any cline-yes">7x</span>
|
|
410
|
+
<span class="cline-any cline-yes">2x</span>
|
|
411
411
|
<span class="cline-any cline-neutral"> </span>
|
|
412
412
|
<span class="cline-any cline-neutral"> </span>
|
|
413
413
|
<span class="cline-any cline-neutral"> </span>
|
|
414
414
|
<span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-
|
|
416
|
-
<span class="cline-any cline-
|
|
415
|
+
<span class="cline-any cline-yes">5x</span>
|
|
416
|
+
<span class="cline-any cline-yes">5x</span>
|
|
417
417
|
<span class="cline-any cline-neutral"> </span>
|
|
418
418
|
<span class="cline-any cline-neutral"> </span>
|
|
419
419
|
<span class="cline-any cline-neutral"> </span>
|
|
420
|
-
<span class="cline-any cline-
|
|
420
|
+
<span class="cline-any cline-yes">4x</span>
|
|
421
421
|
<span class="cline-any cline-neutral"> </span>
|
|
422
|
-
<span class="cline-any cline-
|
|
422
|
+
<span class="cline-any cline-yes">4x</span>
|
|
423
423
|
<span class="cline-any cline-neutral"> </span>
|
|
424
424
|
<span class="cline-any cline-neutral"> </span>
|
|
425
425
|
<span class="cline-any cline-neutral"> </span>
|
|
426
|
-
<span class="cline-any cline-
|
|
426
|
+
<span class="cline-any cline-yes">2x</span>
|
|
427
427
|
<span class="cline-any cline-neutral"> </span>
|
|
428
428
|
<span class="cline-any cline-neutral"> </span>
|
|
429
429
|
<span class="cline-any cline-neutral"> </span>
|
|
430
430
|
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-
|
|
432
|
-
<span class="cline-any cline-
|
|
431
|
+
<span class="cline-any cline-yes">2x</span>
|
|
432
|
+
<span class="cline-any cline-yes">2x</span>
|
|
433
433
|
<span class="cline-any cline-neutral"> </span>
|
|
434
434
|
<span class="cline-any cline-neutral"> </span>
|
|
435
435
|
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-
|
|
436
|
+
<span class="cline-any cline-yes">3x</span>
|
|
437
437
|
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-
|
|
439
|
-
<span class="cline-any cline-
|
|
438
|
+
<span class="cline-any cline-yes">3x</span>
|
|
439
|
+
<span class="cline-any cline-yes">2x</span>
|
|
440
440
|
<span class="cline-any cline-neutral"> </span>
|
|
441
441
|
<span class="cline-any cline-neutral"> </span>
|
|
442
442
|
<span class="cline-any cline-neutral"> </span>
|
|
443
443
|
<span class="cline-any cline-neutral"> </span>
|
|
444
|
-
<span class="cline-any cline-
|
|
445
|
-
<span class="cline-any cline-
|
|
444
|
+
<span class="cline-any cline-yes">1x</span>
|
|
445
|
+
<span class="cline-any cline-yes">1x</span>
|
|
446
446
|
<span class="cline-any cline-neutral"> </span>
|
|
447
447
|
<span class="cline-any cline-neutral"> </span>
|
|
448
|
-
<span class="cline-any cline-
|
|
448
|
+
<span class="cline-any cline-yes">1x</span>
|
|
449
449
|
<span class="cline-any cline-neutral"> </span>
|
|
450
450
|
<span class="cline-any cline-neutral"> </span>
|
|
451
451
|
<span class="cline-any cline-neutral"> </span>
|
|
452
|
-
<span class="cline-any cline-
|
|
452
|
+
<span class="cline-any cline-yes">10x</span>
|
|
453
453
|
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-
|
|
455
|
-
<span class="cline-any cline-
|
|
454
|
+
<span class="cline-any cline-yes">10x</span>
|
|
455
|
+
<span class="cline-any cline-yes">1x</span>
|
|
456
456
|
<span class="cline-any cline-neutral"> </span>
|
|
457
457
|
<span class="cline-any cline-neutral"> </span>
|
|
458
458
|
<span class="cline-any cline-neutral"> </span>
|
|
459
459
|
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-
|
|
461
|
-
<span class="cline-any cline-
|
|
462
|
-
<span class="cline-any cline-
|
|
460
|
+
<span class="cline-any cline-yes">9x</span>
|
|
461
|
+
<span class="cline-any cline-yes">9x</span>
|
|
462
|
+
<span class="cline-any cline-yes">9x</span>
|
|
463
463
|
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-
|
|
465
|
-
<span class="cline-any cline-
|
|
464
|
+
<span class="cline-any cline-yes">9x</span>
|
|
465
|
+
<span class="cline-any cline-yes">9x</span>
|
|
466
466
|
<span class="cline-any cline-neutral"> </span>
|
|
467
467
|
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-
|
|
468
|
+
<span class="cline-any cline-yes">9x</span>
|
|
469
469
|
<span class="cline-any cline-neutral"> </span>
|
|
470
|
+
<span class="cline-any cline-yes">4x</span>
|
|
470
471
|
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-
|
|
472
|
-
<span class="cline-any cline-
|
|
473
|
-
<span class="cline-any cline-no"> </span>
|
|
472
|
+
<span class="cline-any cline-yes">4x</span>
|
|
473
|
+
<span class="cline-any cline-yes">3x</span>
|
|
474
474
|
<span class="cline-any cline-neutral"> </span>
|
|
475
475
|
<span class="cline-any cline-neutral"> </span>
|
|
476
476
|
<span class="cline-any cline-neutral"> </span>
|
|
477
477
|
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-
|
|
478
|
+
<span class="cline-any cline-yes">3x</span>
|
|
479
479
|
<span class="cline-any cline-neutral"> </span>
|
|
480
480
|
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-
|
|
482
|
-
<span class="cline-any cline-
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">1x</span>
|
|
483
483
|
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-
|
|
485
|
-
<span class="cline-any cline-
|
|
484
|
+
<span class="cline-any cline-yes">4x</span>
|
|
485
|
+
<span class="cline-any cline-yes">4x</span>
|
|
486
486
|
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-yes">1x</span>
|
|
487
488
|
<span class="cline-any cline-no"> </span>
|
|
488
|
-
<span class="cline-any cline-
|
|
489
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
+
<span class="cline-any cline-yes">1x</span>
|
|
490
490
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-
|
|
491
|
+
<span class="cline-any cline-yes">1x</span>
|
|
492
492
|
<span class="cline-any cline-neutral"> </span>
|
|
493
493
|
<span class="cline-any cline-neutral"> </span>
|
|
494
494
|
<span class="cline-any cline-neutral"> </span>
|
|
495
495
|
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-
|
|
496
|
+
<span class="cline-any cline-yes">1x</span>
|
|
497
497
|
<span class="cline-any cline-neutral"> </span>
|
|
498
498
|
<span class="cline-any cline-neutral"> </span>
|
|
499
499
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -509,51 +509,51 @@
|
|
|
509
509
|
<span class="cline-any cline-neutral"> </span>
|
|
510
510
|
<span class="cline-any cline-neutral"> </span>
|
|
511
511
|
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-
|
|
513
|
-
<span class="cline-any cline-
|
|
512
|
+
<span class="cline-any cline-yes">1x</span>
|
|
513
|
+
<span class="cline-any cline-yes">1x</span>
|
|
514
514
|
<span class="cline-any cline-neutral"> </span>
|
|
515
|
+
<span class="cline-any cline-yes">2x</span>
|
|
515
516
|
<span class="cline-any cline-no"> </span>
|
|
516
|
-
<span class="cline-any cline-
|
|
517
|
-
<span class="cline-any cline-
|
|
518
|
-
<span class="cline-any cline-
|
|
519
|
-
<span class="cline-any cline-no"> </span>
|
|
517
|
+
<span class="cline-any cline-yes">2x</span>
|
|
518
|
+
<span class="cline-any cline-yes">2x</span>
|
|
519
|
+
<span class="cline-any cline-yes">1x</span>
|
|
520
520
|
<span class="cline-any cline-neutral"> </span>
|
|
521
521
|
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-
|
|
522
|
+
<span class="cline-any cline-yes">1x</span>
|
|
523
523
|
<span class="cline-any cline-no"> </span>
|
|
524
524
|
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-
|
|
525
|
+
<span class="cline-any cline-yes">1x</span>
|
|
526
526
|
<span class="cline-any cline-neutral"> </span>
|
|
527
527
|
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-
|
|
529
|
-
<span class="cline-any cline-
|
|
528
|
+
<span class="cline-any cline-yes">1x</span>
|
|
529
|
+
<span class="cline-any cline-yes">1x</span>
|
|
530
530
|
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-
|
|
532
|
-
<span class="cline-any cline-
|
|
533
|
-
<span class="cline-any cline-
|
|
531
|
+
<span class="cline-any cline-yes">2x</span>
|
|
532
|
+
<span class="cline-any cline-yes">2x</span>
|
|
533
|
+
<span class="cline-any cline-yes">2x</span>
|
|
534
534
|
<span class="cline-any cline-neutral"> </span>
|
|
535
535
|
<span class="cline-any cline-no"> </span>
|
|
536
536
|
<span class="cline-any cline-neutral"> </span>
|
|
537
537
|
<span class="cline-any cline-neutral"> </span>
|
|
538
538
|
<span class="cline-any cline-neutral"> </span>
|
|
539
|
-
<span class="cline-any cline-
|
|
539
|
+
<span class="cline-any cline-yes">8x</span>
|
|
540
540
|
<span class="cline-any cline-neutral"> </span>
|
|
541
541
|
<span class="cline-any cline-neutral"> </span>
|
|
542
542
|
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-
|
|
543
|
+
<span class="cline-any cline-yes">1x</span>
|
|
544
544
|
<span class="cline-any cline-neutral"> </span>
|
|
545
545
|
<span class="cline-any cline-neutral"> </span>
|
|
546
546
|
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-
|
|
548
|
-
<span class="cline-any cline-
|
|
549
|
-
<span class="cline-any cline-
|
|
547
|
+
<span class="cline-any cline-yes">1x</span>
|
|
548
|
+
<span class="cline-any cline-yes">1x</span>
|
|
549
|
+
<span class="cline-any cline-yes">1x</span>
|
|
550
550
|
<span class="cline-any cline-neutral"> </span>
|
|
551
551
|
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-
|
|
552
|
+
<span class="cline-any cline-yes">9x</span>
|
|
553
553
|
<span class="cline-any cline-neutral"> </span>
|
|
554
554
|
<span class="cline-any cline-neutral"> </span>
|
|
555
555
|
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-
|
|
556
|
+
<span class="cline-any cline-yes">9x</span>
|
|
557
557
|
<span class="cline-any cline-neutral"> </span>
|
|
558
558
|
<span class="cline-any cline-neutral"> </span>
|
|
559
559
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -561,17 +561,17 @@
|
|
|
561
561
|
<span class="cline-any cline-neutral"> </span>
|
|
562
562
|
<span class="cline-any cline-neutral"> </span>
|
|
563
563
|
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-
|
|
565
|
-
<span class="cline-any cline-
|
|
564
|
+
<span class="cline-any cline-yes">9x</span>
|
|
565
|
+
<span class="cline-any cline-yes">9x</span>
|
|
566
566
|
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-
|
|
567
|
+
<span class="cline-any cline-yes">9x</span>
|
|
568
568
|
<span class="cline-any cline-neutral"> </span>
|
|
569
569
|
<span class="cline-any cline-neutral"> </span>
|
|
570
570
|
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-
|
|
571
|
+
<span class="cline-any cline-yes">6x</span>
|
|
572
572
|
<span class="cline-any cline-neutral"> </span>
|
|
573
573
|
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-
|
|
574
|
+
<span class="cline-any cline-yes">6x</span>
|
|
575
575
|
<span class="cline-any cline-no"> </span>
|
|
576
576
|
<span class="cline-any cline-neutral"> </span>
|
|
577
577
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -579,29 +579,29 @@
|
|
|
579
579
|
<span class="cline-any cline-neutral"> </span>
|
|
580
580
|
<span class="cline-any cline-neutral"> </span>
|
|
581
581
|
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
582
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
583
583
|
Injectable,
|
|
584
584
|
NotFoundException,
|
|
585
585
|
BadRequestException,
|
|
586
586
|
Logger,
|
|
587
587
|
} from '@nestjs/common';
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
588
|
+
import { InjectRepository } from '@nestjs/typeorm';
|
|
589
|
+
import { Repository } from 'typeorm';
|
|
590
|
+
import { AIAction, SessionInput, ExecutionLog } from '../core-entities';
|
|
591
|
+
import { ExecutionLogsService } from '../execution-logs/execution-logs.service';
|
|
592
|
+
import { ActionExecutionService } from '../action-execution/action-execution.service';
|
|
593
593
|
|
|
594
594
|
// Enum for AIAction statuses to avoid magic strings
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
595
|
+
export enum AIActionStatus {
|
|
596
|
+
PROPOSED = 'proposed',
|
|
597
|
+
AWAITING_CONTEXT = 'awaiting_context',
|
|
598
|
+
APPROVED_FOR_APPLY = 'approved_for_apply',
|
|
599
|
+
REJECTED_BEFORE_APPLY = 'rejected_before_apply',
|
|
600
|
+
APPLIED_PENDING_REVIEW = 'applied_pending_review',
|
|
601
|
+
CONFIRMED_KEPT = 'confirmed_kept',
|
|
602
|
+
CONFIRMED_REVERTED = 'confirmed_reverted',
|
|
603
|
+
EXECUTION_FAILED = 'execution_failed',
|
|
604
|
+
REVERT_FAILED = 'revert_failed',
|
|
605
605
|
}
|
|
606
606
|
|
|
607
607
|
export interface ActionResult {
|
|
@@ -621,16 +621,16 @@ export interface ConfirmedActionInfo {
|
|
|
621
621
|
}
|
|
622
622
|
|
|
623
623
|
@Injectable()
|
|
624
|
-
export class
|
|
625
|
-
private readonly
|
|
624
|
+
export class AIActionsService {
|
|
625
|
+
private readonly logger = new Logger(AIActionsService.name);
|
|
626
626
|
|
|
627
|
-
|
|
627
|
+
constructor(
|
|
628
628
|
@InjectRepository(AIAction)
|
|
629
|
-
private
|
|
629
|
+
private aiActionsRepository: Repository<AIAction>,
|
|
630
630
|
@InjectRepository(SessionInput) // To verify inputId existence
|
|
631
|
-
private
|
|
632
|
-
private
|
|
633
|
-
private readonly
|
|
631
|
+
private sessionInputsRepository: Repository<SessionInput>,
|
|
632
|
+
private executionLogsService: ExecutionLogsService,
|
|
633
|
+
private readonly actionExecutionService: ActionExecutionService,
|
|
634
634
|
) {}
|
|
635
635
|
|
|
636
636
|
<span class="fstat-no" title="function not covered" > async </span>findAllByInputId(inputId: string): Promise<AIAction[]> {
|
|
@@ -650,109 +650,109 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
650
650
|
});
|
|
651
651
|
}
|
|
652
652
|
|
|
653
|
-
|
|
654
|
-
const action =
|
|
653
|
+
async findOne(actionId: string): Promise<AIAction> {
|
|
654
|
+
const action = await this.aiActionsRepository.findOne({
|
|
655
655
|
where: { id: actionId },
|
|
656
656
|
relations: ['executionLogs'],
|
|
657
657
|
});
|
|
658
|
-
|
|
658
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!action) {
|
|
659
659
|
<span class="cstat-no" title="statement not covered" > throw new NotFoundException(`AIAction with ID "${actionId}" not found`);</span>
|
|
660
660
|
}
|
|
661
|
-
|
|
661
|
+
return action;
|
|
662
662
|
}
|
|
663
663
|
|
|
664
|
-
|
|
665
|
-
const action =
|
|
664
|
+
async approveAction(actionId: string): Promise<AIAction> {
|
|
665
|
+
const action = await this.findOne(actionId);
|
|
666
666
|
|
|
667
|
-
|
|
668
|
-
|
|
667
|
+
if (action.status !== AIActionStatus.PROPOSED) {
|
|
668
|
+
throw new BadRequestException(
|
|
669
669
|
`Action with ID "${actionId}" cannot be approved. Status is "${action.status}", but must be "${AIActionStatus.PROPOSED}".`,
|
|
670
670
|
);
|
|
671
671
|
}
|
|
672
672
|
|
|
673
|
-
|
|
674
|
-
|
|
673
|
+
action.status = AIActionStatus.APPROVED_FOR_APPLY;
|
|
674
|
+
return this.aiActionsRepository.save(action);
|
|
675
675
|
}
|
|
676
676
|
|
|
677
|
-
|
|
678
|
-
const action =
|
|
677
|
+
async discardAction(actionId: string): Promise<AIAction> {
|
|
678
|
+
const action = await this.findOne(actionId);
|
|
679
679
|
|
|
680
|
-
|
|
680
|
+
if (
|
|
681
681
|
action.status !== AIActionStatus.PROPOSED &&
|
|
682
682
|
action.status !== AIActionStatus.APPROVED_FOR_APPLY
|
|
683
683
|
) {
|
|
684
|
-
|
|
684
|
+
throw new BadRequestException(
|
|
685
685
|
`Action with ID "${actionId}" cannot be discarded. Status is "${action.status}", but must be "${AIActionStatus.PROPOSED}" or "${AIActionStatus.APPROVED_FOR_APPLY}".`,
|
|
686
686
|
);
|
|
687
687
|
}
|
|
688
688
|
|
|
689
|
-
|
|
690
|
-
|
|
689
|
+
action.status = AIActionStatus.REJECTED_BEFORE_APPLY;
|
|
690
|
+
return this.aiActionsRepository.save(action);
|
|
691
691
|
}
|
|
692
692
|
|
|
693
|
-
|
|
694
|
-
const action =
|
|
693
|
+
async confirmKeepAction(actionId: string): Promise<AIAction> {
|
|
694
|
+
const action = await this.findOne(actionId);
|
|
695
695
|
|
|
696
|
-
|
|
697
|
-
|
|
696
|
+
if (action.status !== AIActionStatus.APPLIED_PENDING_REVIEW) {
|
|
697
|
+
throw new BadRequestException(
|
|
698
698
|
`Action with ID "${actionId}" cannot be confirmed. Status is "${action.status}", but must be "${AIActionStatus.APPLIED_PENDING_REVIEW}".`,
|
|
699
699
|
);
|
|
700
700
|
}
|
|
701
701
|
|
|
702
|
-
|
|
703
|
-
|
|
702
|
+
action.status = AIActionStatus.CONFIRMED_KEPT;
|
|
703
|
+
this.logger.log(
|
|
704
704
|
`Action ID ${actionId} confirmed kept. Status: ${action.status}`,
|
|
705
705
|
);
|
|
706
|
-
|
|
706
|
+
return this.aiActionsRepository.save(action);
|
|
707
707
|
}
|
|
708
708
|
|
|
709
|
-
|
|
710
|
-
const action =
|
|
709
|
+
async revertAction(actionId: string): Promise<AIAction> {
|
|
710
|
+
const action = await this.findOne(actionId); // findOne already loads executionLogs
|
|
711
711
|
|
|
712
|
-
|
|
713
|
-
|
|
712
|
+
if (action.status !== AIActionStatus.APPLIED_PENDING_REVIEW) {
|
|
713
|
+
throw new BadRequestException(
|
|
714
714
|
`Action with ID "${actionId}" cannot be reverted. Status is "${action.status}", but must be "${AIActionStatus.APPLIED_PENDING_REVIEW}".`,
|
|
715
715
|
);
|
|
716
716
|
}
|
|
717
717
|
|
|
718
|
-
let revertSucceeded =
|
|
719
|
-
let revertOutcomeMessage =
|
|
720
|
-
let errorDetails: string | undefined =
|
|
718
|
+
let revertSucceeded = false;
|
|
719
|
+
let revertOutcomeMessage = `Reverting action type: ${action.action_type}`;
|
|
720
|
+
let errorDetails: string | undefined = undefined;
|
|
721
721
|
|
|
722
|
-
|
|
723
|
-
|
|
722
|
+
try {
|
|
723
|
+
this.logger.log(
|
|
724
724
|
`Attempting to revert action ID ${action.id}, type ${action.action_type}`,
|
|
725
725
|
);
|
|
726
|
-
|
|
726
|
+
switch (action.action_type) {
|
|
727
727
|
case 'edit_file':
|
|
728
|
-
|
|
728
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path)
|
|
729
729
|
<span class="cstat-no" title="statement not covered" > throw new Error('Missing file_path for edit_file revert.');</span>
|
|
730
|
-
|
|
731
|
-
|
|
730
|
+
if (action.original_content_for_revert !== null) {
|
|
731
|
+
await this.actionExecutionService.editFile(
|
|
732
732
|
// Use editFile to restore; this will ensure directory exists
|
|
733
733
|
action.file_path,
|
|
734
734
|
action.original_content_for_revert,
|
|
735
735
|
);
|
|
736
|
-
|
|
736
|
+
revertOutcomeMessage = `File "${action.file_path}" content reverted to original.`;
|
|
737
737
|
} else {
|
|
738
738
|
// Original content was null, implies file was created by 'edit'. Revert by deleting.
|
|
739
|
-
|
|
740
|
-
|
|
739
|
+
await this.actionExecutionService.deleteFile(action.file_path);
|
|
740
|
+
revertOutcomeMessage = `File "${action.file_path}" (created by edit) was deleted.`;
|
|
741
741
|
}
|
|
742
|
-
|
|
743
|
-
|
|
742
|
+
revertSucceeded = true;
|
|
743
|
+
break;
|
|
744
744
|
case 'delete_file':
|
|
745
|
-
|
|
745
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path)
|
|
746
746
|
<span class="cstat-no" title="statement not covered" > throw new Error('Missing file_path for delete_file revert.');</span>
|
|
747
|
-
|
|
747
|
+
if (action.original_content_for_revert !== null) {
|
|
748
748
|
// If there was original content, recreate the file with it.
|
|
749
|
-
|
|
749
|
+
await this.actionExecutionService.createFile(
|
|
750
750
|
// Use createFile to restore; this will ensure directory exists
|
|
751
751
|
action.file_path,
|
|
752
752
|
action.original_content_for_revert,
|
|
753
753
|
);
|
|
754
|
-
|
|
755
|
-
} else {
|
|
754
|
+
revertOutcomeMessage = `Deleted file "${action.file_path}" restored with original content.`;
|
|
755
|
+
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
756
756
|
// If original_content_for_revert is null, it implies an empty or non-existent file was deleted.
|
|
757
757
|
// Reverting means ensuring it remains non-existent.
|
|
758
758
|
// Attempt to delete (might fail if already gone, which is fine).
|
|
@@ -767,51 +767,51 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
767
767
|
}
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
|
-
|
|
771
|
-
|
|
770
|
+
revertSucceeded = true;
|
|
771
|
+
break;
|
|
772
772
|
case 'create_file':
|
|
773
|
-
|
|
773
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!action.file_path)
|
|
774
774
|
<span class="cstat-no" title="statement not covered" > throw new Error('Missing file_path for create_file revert.');</span>
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
775
|
+
try {
|
|
776
|
+
await this.actionExecutionService.deleteFile(action.file_path);
|
|
777
|
+
revertOutcomeMessage = `Created file "${action.file_path}" deleted.`;
|
|
778
778
|
} catch (e) {
|
|
779
779
|
// If file not found, it's already "reverted" in a sense
|
|
780
|
-
<span class="
|
|
780
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (e instanceof NotFoundException) {
|
|
781
781
|
<span class="cstat-no" title="statement not covered" > revertOutcomeMessage = `Created file "${action.file_path}" was already deleted/not found.`;</span>
|
|
782
782
|
} else {
|
|
783
|
-
|
|
783
|
+
throw e; // Re-throw other errors
|
|
784
784
|
}
|
|
785
785
|
}
|
|
786
|
-
|
|
787
|
-
|
|
786
|
+
revertSucceeded = true;
|
|
787
|
+
break;
|
|
788
788
|
case 'run_command':
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
default
|
|
789
|
+
revertOutcomeMessage = `Command "${action.command_string}" cannot be automatically reverted.`;
|
|
790
|
+
revertSucceeded = false; // Explicitly false as it's not truly reverted
|
|
791
|
+
break;
|
|
792
|
+
<span class="branch-4 cbranch-no" title="branch not covered" > default:</span>
|
|
793
793
|
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
794
794
|
`Unsupported action_type for revert: "${action.action_type}"`,
|
|
795
795
|
);
|
|
796
796
|
}
|
|
797
|
-
|
|
797
|
+
this.logger.log(
|
|
798
798
|
`Revert attempt for action ID ${action.id} resulted in success: ${revertSucceeded}. Message: ${revertOutcomeMessage}`,
|
|
799
799
|
);
|
|
800
800
|
} catch (error) {
|
|
801
|
-
|
|
801
|
+
this.logger.error(
|
|
802
802
|
`Failed to revert action ID ${action.id}: ${error.message}`,
|
|
803
803
|
error.stack,
|
|
804
804
|
);
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
805
|
+
revertOutcomeMessage = `Failed to revert action: ${error.message}`;
|
|
806
|
+
errorDetails = error.message;
|
|
807
|
+
revertSucceeded = false;
|
|
808
808
|
}
|
|
809
809
|
|
|
810
|
-
|
|
810
|
+
action.status = revertSucceeded
|
|
811
811
|
? AIActionStatus.CONFIRMED_REVERTED
|
|
812
812
|
: AIActionStatus.REVERT_FAILED;
|
|
813
813
|
|
|
814
|
-
const log =
|
|
814
|
+
const log = await this.executionLogsService.createLog({
|
|
815
815
|
action_id: action.id,
|
|
816
816
|
output: revertSucceeded ? revertOutcomeMessage : undefined,
|
|
817
817
|
error_message: !revertSucceeded
|
|
@@ -819,17 +819,17 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
819
819
|
: undefined,
|
|
820
820
|
});
|
|
821
821
|
|
|
822
|
-
<span class="
|
|
823
|
-
|
|
822
|
+
action.executionLogs = [...(action.executionLogs || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>, log];
|
|
823
|
+
await this.aiActionsRepository.save(action);
|
|
824
824
|
|
|
825
|
-
|
|
825
|
+
return action;
|
|
826
826
|
}
|
|
827
827
|
|
|
828
|
-
|
|
829
|
-
const actions =
|
|
828
|
+
async deleteAllByInputId(inputId: string): Promise<void> {
|
|
829
|
+
const actions = await this.aiActionsRepository.find({
|
|
830
830
|
where: { input_id: inputId },
|
|
831
831
|
});
|
|
832
|
-
|
|
832
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (actions.length > 0) {
|
|
833
833
|
<span class="cstat-no" title="statement not covered" > this.logger.log(</span>
|
|
834
834
|
`Deleting ${actions.length} actions for input ID ${inputId}`,
|
|
835
835
|
);
|
|
@@ -844,7 +844,7 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
844
844
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
845
845
|
Code coverage generated by
|
|
846
846
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
847
|
-
at 2025-
|
|
847
|
+
at 2025-09-12T19:21:55.945Z
|
|
848
848
|
</div>
|
|
849
849
|
<script src="../../prettify.js"></script>
|
|
850
850
|
<script>
|