repoburg 1.0.54 → 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 +3 -1
- 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 +3 -3
- 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 +12 -8
- 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.d.ts +1 -0
- package/backend/dist/utils/fuzzy-search.js +54 -0
- package/backend/dist/utils/fuzzy-search.js.map +1 -0
- package/backend/dist/utils/index.d.ts +1 -0
- package/backend/dist/utils/index.js +18 -0
- package/backend/dist/utils/index.js.map +1 -0
- package/backend/dist/workspace/workspace.service.d.ts +2 -1
- package/backend/dist/workspace/workspace.service.js +53 -85
- package/backend/dist/workspace/workspace.service.js.map +1 -1
- package/backend/package.json +1 -1
- package/package.json +1 -1
- package/orchestration-test.txt +0 -3
package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html
CHANGED
|
@@ -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">88.6% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>70/79</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">89.28% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>25/28</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">85.71% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>6/7</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">88.15% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>67/76</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>
|
|
@@ -285,68 +285,73 @@
|
|
|
285
285
|
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
286
|
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
287
|
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">9x</span>
|
|
289
293
|
<span class="cline-any cline-neutral"> </span>
|
|
290
294
|
<span class="cline-any cline-neutral"> </span>
|
|
291
|
-
<span class="cline-any cline-
|
|
292
|
-
<span class="cline-any cline-
|
|
293
|
-
<span class="cline-any cline-
|
|
294
|
-
<span class="cline-any cline-
|
|
295
|
+
<span class="cline-any cline-yes">9x</span>
|
|
296
|
+
<span class="cline-any cline-yes">9x</span>
|
|
297
|
+
<span class="cline-any cline-yes">9x</span>
|
|
298
|
+
<span class="cline-any cline-yes">9x</span>
|
|
295
299
|
<span class="cline-any cline-neutral"> </span>
|
|
296
300
|
<span class="cline-any cline-neutral"> </span>
|
|
297
301
|
<span class="cline-any cline-neutral"> </span>
|
|
298
302
|
<span class="cline-any cline-neutral"> </span>
|
|
299
303
|
<span class="cline-any cline-neutral"> </span>
|
|
300
304
|
<span class="cline-any cline-neutral"> </span>
|
|
301
|
-
<span class="cline-any cline-
|
|
302
|
-
<span class="cline-any cline-
|
|
305
|
+
<span class="cline-any cline-yes">9x</span>
|
|
306
|
+
<span class="cline-any cline-yes">13x</span>
|
|
303
307
|
<span class="cline-any cline-neutral"> </span>
|
|
304
308
|
<span class="cline-any cline-neutral"> </span>
|
|
305
|
-
<span class="cline-any cline-
|
|
306
|
-
<span class="cline-any cline-
|
|
307
|
-
<span class="cline-any cline-
|
|
308
|
-
<span class="cline-any cline-
|
|
309
|
+
<span class="cline-any cline-yes">13x</span>
|
|
310
|
+
<span class="cline-any cline-yes">13x</span>
|
|
311
|
+
<span class="cline-any cline-yes">13x</span>
|
|
312
|
+
<span class="cline-any cline-yes">13x</span>
|
|
309
313
|
<span class="cline-any cline-neutral"> </span>
|
|
310
314
|
<span class="cline-any cline-neutral"> </span>
|
|
311
315
|
<span class="cline-any cline-neutral"> </span>
|
|
312
316
|
<span class="cline-any cline-neutral"> </span>
|
|
313
317
|
<span class="cline-any cline-neutral"> </span>
|
|
314
|
-
<span class="cline-any cline-no"> </span>
|
|
315
|
-
<span class="cline-any cline-no"> </span>
|
|
316
318
|
<span class="cline-any cline-neutral"> </span>
|
|
317
|
-
<span class="cline-any cline-
|
|
318
|
-
<span class="cline-any cline-
|
|
319
|
+
<span class="cline-any cline-yes">20x</span>
|
|
320
|
+
<span class="cline-any cline-yes">20x</span>
|
|
319
321
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-yes">20x</span>
|
|
323
|
+
<span class="cline-any cline-yes">17x</span>
|
|
320
324
|
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-no"> </span>
|
|
322
325
|
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-yes">3x</span>
|
|
327
|
+
<span class="cline-any cline-yes">3x</span>
|
|
323
328
|
<span class="cline-any cline-neutral"> </span>
|
|
324
329
|
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-no"> </span>
|
|
326
330
|
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-
|
|
328
|
-
<span class="cline-any cline-no"> </span>
|
|
329
|
-
<span class="cline-any cline-no"> </span>
|
|
330
|
-
<span class="cline-any cline-no"> </span>
|
|
331
|
+
<span class="cline-any cline-yes">3x</span>
|
|
331
332
|
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-yes">3x</span>
|
|
334
|
+
<span class="cline-any cline-yes">3x</span>
|
|
335
|
+
<span class="cline-any cline-yes">3x</span>
|
|
336
|
+
<span class="cline-any cline-yes">2x</span>
|
|
332
337
|
<span class="cline-any cline-neutral"> </span>
|
|
333
|
-
<span class="cline-any cline-no"> </span>
|
|
334
338
|
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-
|
|
339
|
+
<span class="cline-any cline-yes">2x</span>
|
|
336
340
|
<span class="cline-any cline-neutral"> </span>
|
|
341
|
+
<span class="cline-any cline-yes">1x</span>
|
|
337
342
|
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-no"> </span>
|
|
339
343
|
<span class="cline-any cline-neutral"> </span>
|
|
344
|
+
<span class="cline-any cline-yes">1x</span>
|
|
340
345
|
<span class="cline-any cline-neutral"> </span>
|
|
341
346
|
<span class="cline-any cline-neutral"> </span>
|
|
342
347
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-no"> </span>
|
|
344
348
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-
|
|
349
|
+
<span class="cline-any cline-yes">3x</span>
|
|
346
350
|
<span class="cline-any cline-neutral"> </span>
|
|
347
351
|
<span class="cline-any cline-neutral"> </span>
|
|
348
352
|
<span class="cline-any cline-neutral"> </span>
|
|
349
353
|
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-yes">3x</span>
|
|
350
355
|
<span class="cline-any cline-neutral"> </span>
|
|
351
356
|
<span class="cline-any cline-neutral"> </span>
|
|
352
357
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -355,22 +360,22 @@
|
|
|
355
360
|
<span class="cline-any cline-neutral"> </span>
|
|
356
361
|
<span class="cline-any cline-neutral"> </span>
|
|
357
362
|
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-no"> </span>
|
|
359
|
-
<span class="cline-any cline-no"> </span>
|
|
360
363
|
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-no"> </span>
|
|
362
364
|
<span class="cline-any cline-neutral"> </span>
|
|
363
365
|
<span class="cline-any cline-neutral"> </span>
|
|
364
366
|
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-yes">20x</span>
|
|
368
|
+
<span class="cline-any cline-yes">20x</span>
|
|
365
369
|
<span class="cline-any cline-neutral"> </span>
|
|
370
|
+
<span class="cline-any cline-yes">20x</span>
|
|
366
371
|
<span class="cline-any cline-neutral"> </span>
|
|
367
372
|
<span class="cline-any cline-neutral"> </span>
|
|
368
373
|
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
374
|
<span class="cline-any cline-neutral"> </span>
|
|
371
375
|
<span class="cline-any cline-neutral"> </span>
|
|
372
376
|
<span class="cline-any cline-neutral"> </span>
|
|
373
377
|
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-yes">20x</span>
|
|
374
379
|
<span class="cline-any cline-neutral"> </span>
|
|
375
380
|
<span class="cline-any cline-neutral"> </span>
|
|
376
381
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -378,9 +383,12 @@
|
|
|
378
383
|
<span class="cline-any cline-neutral"> </span>
|
|
379
384
|
<span class="cline-any cline-neutral"> </span>
|
|
380
385
|
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
386
|
<span class="cline-any cline-neutral"> </span>
|
|
383
|
-
<span class="cline-any cline-
|
|
387
|
+
<span class="cline-any cline-neutral"> </span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-yes">20x</span>
|
|
390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
391
|
+
<span class="cline-any cline-yes">20x</span>
|
|
384
392
|
<span class="cline-any cline-no"> </span>
|
|
385
393
|
<span class="cline-any cline-neutral"> </span>
|
|
386
394
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -390,13 +398,13 @@
|
|
|
390
398
|
<span class="cline-any cline-neutral"> </span>
|
|
391
399
|
<span class="cline-any cline-neutral"> </span>
|
|
392
400
|
<span class="cline-any cline-neutral"> </span>
|
|
393
|
-
<span class="cline-any cline-
|
|
401
|
+
<span class="cline-any cline-yes">20x</span>
|
|
394
402
|
<span class="cline-any cline-neutral"> </span>
|
|
395
403
|
<span class="cline-any cline-neutral"> </span>
|
|
396
404
|
<span class="cline-any cline-neutral"> </span>
|
|
397
405
|
<span class="cline-any cline-neutral"> </span>
|
|
398
|
-
<span class="cline-any cline-
|
|
399
|
-
<span class="cline-any cline-
|
|
406
|
+
<span class="cline-any cline-yes">20x</span>
|
|
407
|
+
<span class="cline-any cline-yes">20x</span>
|
|
400
408
|
<span class="cline-any cline-no"> </span>
|
|
401
409
|
<span class="cline-any cline-no"> </span>
|
|
402
410
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -406,10 +414,10 @@
|
|
|
406
414
|
<span class="cline-any cline-neutral"> </span>
|
|
407
415
|
<span class="cline-any cline-neutral"> </span>
|
|
408
416
|
<span class="cline-any cline-neutral"> </span>
|
|
409
|
-
<span class="cline-any cline-
|
|
410
|
-
<span class="cline-any cline-
|
|
411
|
-
<span class="cline-any cline-
|
|
412
|
-
<span class="cline-any cline-
|
|
417
|
+
<span class="cline-any cline-yes">20x</span>
|
|
418
|
+
<span class="cline-any cline-yes">20x</span>
|
|
419
|
+
<span class="cline-any cline-yes">3x</span>
|
|
420
|
+
<span class="cline-any cline-yes">3x</span>
|
|
413
421
|
<span class="cline-any cline-neutral"> </span>
|
|
414
422
|
<span class="cline-any cline-no"> </span>
|
|
415
423
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -417,50 +425,50 @@
|
|
|
417
425
|
<span class="cline-any cline-neutral"> </span>
|
|
418
426
|
<span class="cline-any cline-neutral"> </span>
|
|
419
427
|
<span class="cline-any cline-neutral"> </span>
|
|
420
|
-
<span class="cline-any cline-
|
|
428
|
+
<span class="cline-any cline-yes">20x</span>
|
|
421
429
|
<span class="cline-any cline-neutral"> </span>
|
|
422
430
|
<span class="cline-any cline-neutral"> </span>
|
|
423
431
|
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-
|
|
432
|
+
<span class="cline-any cline-yes">20x</span>
|
|
425
433
|
<span class="cline-any cline-neutral"> </span>
|
|
426
|
-
<span class="cline-any cline-
|
|
434
|
+
<span class="cline-any cline-yes">20x</span>
|
|
427
435
|
<span class="cline-any cline-neutral"> </span>
|
|
428
436
|
<span class="cline-any cline-neutral"> </span>
|
|
429
437
|
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-
|
|
438
|
+
<span class="cline-any cline-yes">20x</span>
|
|
431
439
|
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-
|
|
433
|
-
<span class="cline-any cline-
|
|
440
|
+
<span class="cline-any cline-yes">20x</span>
|
|
441
|
+
<span class="cline-any cline-yes">3x</span>
|
|
434
442
|
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-
|
|
443
|
+
<span class="cline-any cline-yes">3x</span>
|
|
436
444
|
<span class="cline-any cline-neutral"> </span>
|
|
437
445
|
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-
|
|
446
|
+
<span class="cline-any cline-yes">3x</span>
|
|
439
447
|
<span class="cline-any cline-neutral"> </span>
|
|
440
448
|
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-
|
|
442
|
-
<span class="cline-any cline-
|
|
449
|
+
<span class="cline-any cline-yes">20x</span>
|
|
450
|
+
<span class="cline-any cline-yes">1x</span>
|
|
443
451
|
<span class="cline-any cline-neutral"> </span>
|
|
444
452
|
<span class="cline-any cline-neutral"> </span>
|
|
445
|
-
<span class="cline-any cline-
|
|
446
|
-
<span class="cline-any cline-
|
|
453
|
+
<span class="cline-any cline-yes">1x</span>
|
|
454
|
+
<span class="cline-any cline-yes">1x</span>
|
|
447
455
|
<span class="cline-any cline-neutral"> </span>
|
|
448
|
-
<span class="cline-any cline-
|
|
456
|
+
<span class="cline-any cline-yes">1x</span>
|
|
449
457
|
<span class="cline-any cline-neutral"> </span>
|
|
450
458
|
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-
|
|
459
|
+
<span class="cline-any cline-yes">1x</span>
|
|
452
460
|
<span class="cline-any cline-neutral"> </span>
|
|
453
461
|
<span class="cline-any cline-no"> </span>
|
|
454
462
|
<span class="cline-any cline-neutral"> </span>
|
|
455
463
|
<span class="cline-any cline-neutral"> </span>
|
|
456
464
|
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-
|
|
465
|
+
<span class="cline-any cline-yes">1x</span>
|
|
458
466
|
<span class="cline-any cline-neutral"> </span>
|
|
459
467
|
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-
|
|
468
|
+
<span class="cline-any cline-yes">1x</span>
|
|
461
469
|
<span class="cline-any cline-neutral"> </span>
|
|
462
470
|
<span class="cline-any cline-neutral"> </span>
|
|
463
|
-
<span class="cline-any cline-
|
|
471
|
+
<span class="cline-any cline-yes">20x</span>
|
|
464
472
|
<span class="cline-any cline-neutral"> </span>
|
|
465
473
|
<span class="cline-any cline-neutral"> </span>
|
|
466
474
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -469,33 +477,33 @@
|
|
|
469
477
|
<span class="cline-any cline-neutral"> </span>
|
|
470
478
|
<span class="cline-any cline-neutral"> </span>
|
|
471
479
|
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-
|
|
473
|
-
<span class="cline-any cline-
|
|
480
|
+
<span class="cline-any cline-yes">20x</span>
|
|
481
|
+
<span class="cline-any cline-yes">20x</span>
|
|
474
482
|
<span class="cline-any cline-neutral"> </span>
|
|
475
483
|
<span class="cline-any cline-neutral"> </span>
|
|
476
484
|
<span class="cline-any cline-neutral"> </span>
|
|
477
485
|
<span class="cline-any cline-neutral"> </span>
|
|
478
486
|
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-
|
|
480
|
-
<span class="cline-any cline-
|
|
481
|
-
<span class="cline-any cline-
|
|
487
|
+
<span class="cline-any cline-yes">20x</span>
|
|
488
|
+
<span class="cline-any cline-yes">20x</span>
|
|
489
|
+
<span class="cline-any cline-yes">20x</span>
|
|
482
490
|
<span class="cline-any cline-neutral"> </span>
|
|
483
491
|
<span class="cline-any cline-neutral"> </span>
|
|
484
492
|
<span class="cline-any cline-neutral"> </span>
|
|
485
493
|
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-
|
|
487
|
-
<span class="cline-any cline-
|
|
494
|
+
<span class="cline-any cline-yes">20x</span>
|
|
495
|
+
<span class="cline-any cline-yes">1x</span>
|
|
488
496
|
<span class="cline-any cline-neutral"> </span>
|
|
489
497
|
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-
|
|
498
|
+
<span class="cline-any cline-yes">1x</span>
|
|
491
499
|
<span class="cline-any cline-neutral"> </span>
|
|
492
500
|
<span class="cline-any cline-neutral"> </span>
|
|
493
501
|
<span class="cline-any cline-neutral"> </span>
|
|
494
502
|
<span class="cline-any cline-neutral"> </span>
|
|
495
|
-
<span class="cline-any cline-
|
|
503
|
+
<span class="cline-any cline-yes">19x</span>
|
|
496
504
|
<span class="cline-any cline-neutral"> </span>
|
|
497
505
|
<span class="cline-any cline-neutral"> </span>
|
|
498
|
-
<span class="cline-any cline-
|
|
506
|
+
<span class="cline-any cline-yes">19x</span>
|
|
499
507
|
<span class="cline-any cline-neutral"> </span>
|
|
500
508
|
<span class="cline-any cline-no"> </span>
|
|
501
509
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -507,80 +515,85 @@
|
|
|
507
515
|
<span class="cline-any cline-neutral"> </span>
|
|
508
516
|
<span class="cline-any cline-neutral"> </span>
|
|
509
517
|
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
518
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable, Logger, BadRequestException } from '@nestjs/common';
|
|
511
519
|
import { ContextTemplate } from '../core-entities';
|
|
512
520
|
import { CreateSessionInputDto } from './dto/session-input.dto';
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
521
|
+
import { ContextGenerationService } from '../context-generation/context-generation.service';
|
|
522
|
+
import { EventsGateway } from '../events/events.gateway';
|
|
523
|
+
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
524
|
+
import { ContextSnippetsService } from '../context-snippets/context-snippets.service';
|
|
517
525
|
|
|
518
526
|
interface ContextDefinition {
|
|
519
527
|
files?: string[];
|
|
520
528
|
folders?: string[];
|
|
521
529
|
}
|
|
522
530
|
@Injectable()
|
|
523
|
-
export class
|
|
524
|
-
private readonly
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
private readonly
|
|
528
|
-
private readonly
|
|
529
|
-
private readonly
|
|
530
|
-
private readonly
|
|
531
|
+
export class SessionInputContextService {
|
|
532
|
+
private readonly logger = new Logger(SessionInputContextService.name);
|
|
533
|
+
|
|
534
|
+
constructor(
|
|
535
|
+
private readonly contextGenerationService: ContextGenerationService,
|
|
536
|
+
private readonly eventsGateway: EventsGateway,
|
|
537
|
+
private readonly applicationStateService: ApplicationStateService,
|
|
538
|
+
private readonly contextSnippetsService: ContextSnippetsService,
|
|
531
539
|
) {}
|
|
532
540
|
|
|
533
|
-
private
|
|
541
|
+
private async resolveContextSnippets(
|
|
534
542
|
prompt: string,
|
|
535
543
|
): Promise<{ resolvedContent: string; cleanedPrompt: string }> {
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
);
|
|
539
|
-
|
|
540
|
-
|
|
544
|
+
// Regex to find !handle that is a whole word (preceded by space/start, followed by space/end)
|
|
545
|
+
const snippetRegex = /(^|\s)\!(\w[-\w]*)(?=\s|$)/g;
|
|
546
|
+
const matches = [...prompt.matchAll(snippetRegex)];
|
|
547
|
+
|
|
548
|
+
if (matches.length === 0) {
|
|
549
|
+
return { resolvedContent: '', cleanedPrompt: prompt };
|
|
541
550
|
}
|
|
542
551
|
|
|
543
|
-
|
|
552
|
+
const snippetHandles = matches.map((match) => match[2]);
|
|
553
|
+
this.logger.log(
|
|
544
554
|
`Found context snippet handles: ${snippetHandles.join(', ')}`,
|
|
545
555
|
);
|
|
546
556
|
|
|
547
|
-
const resolvedContents: string[] =
|
|
557
|
+
const resolvedContents: string[] = [];
|
|
548
558
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
const snippet =
|
|
552
|
-
const content =
|
|
559
|
+
for (const handle of snippetHandles) {
|
|
560
|
+
try {
|
|
561
|
+
const snippet = await this.contextSnippetsService.findByHandle(handle);
|
|
562
|
+
const content = await this.contextGenerationService.render(
|
|
553
563
|
snippet.template_content,
|
|
554
564
|
);
|
|
555
|
-
|
|
565
|
+
resolvedContents.push(content);
|
|
556
566
|
} catch (error) {
|
|
557
|
-
|
|
567
|
+
this.logger.error(
|
|
558
568
|
`Failed to resolve context snippet "!${handle}": ${error.message}`,
|
|
559
569
|
);
|
|
560
|
-
|
|
570
|
+
resolvedContents.push(`Error resolving !${handle}: ${error.message}`);
|
|
561
571
|
}
|
|
562
572
|
}
|
|
563
573
|
|
|
564
|
-
// Remove the !handle from the prompt
|
|
565
|
-
const cleanedPrompt =
|
|
574
|
+
// Remove the !handle and potential extra spaces from the prompt.
|
|
575
|
+
const cleanedPrompt = prompt
|
|
576
|
+
.replace(/(^|\s)\!(\w[-\w]*)(?=\s|$)\s*/g, '$1')
|
|
577
|
+
.replace(/\s{2,}/g, ' ')
|
|
578
|
+
.trim();
|
|
566
579
|
|
|
567
|
-
|
|
580
|
+
return {
|
|
568
581
|
resolvedContent: resolvedContents.join('\n\n'),
|
|
569
582
|
cleanedPrompt,
|
|
570
583
|
};
|
|
571
584
|
}
|
|
572
585
|
|
|
573
|
-
|
|
586
|
+
async generateContext(
|
|
574
587
|
dto: CreateSessionInputDto,
|
|
575
588
|
contextTemplate: ContextTemplate | null,
|
|
576
589
|
systemPromptContent: string,
|
|
577
590
|
previousActionsSummary?: string,
|
|
578
591
|
): Promise<string> {
|
|
579
592
|
const { resolvedContent: context_snippets_content, cleanedPrompt } =
|
|
580
|
-
|
|
581
|
-
|
|
593
|
+
await this.resolveContextSnippets(dto.user_prompt);
|
|
594
|
+
dto.user_prompt = cleanedPrompt; // Update DTO with cleaned prompt for template rendering
|
|
582
595
|
|
|
583
|
-
|
|
596
|
+
this.logger.log(
|
|
584
597
|
`Generating context. Template: ${
|
|
585
598
|
contextTemplate?.template_name || 'None'
|
|
586
599
|
}. Ad-hoc: ${!!dto.ad_hoc_context_definition}. Snippets: ${
|
|
@@ -588,21 +601,20 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
588
601
|
}.`,
|
|
589
602
|
);
|
|
590
603
|
|
|
591
|
-
const defaultTemplate =
|
|
604
|
+
const defaultTemplate = `<%~ it.system_prompt %>
|
|
592
605
|
|
|
593
606
|
<%~ it.context_snippets_content %>
|
|
594
607
|
|
|
595
|
-
<%~ it.
|
|
608
|
+
<%~ it.adhoc_files_content %>
|
|
609
|
+
|
|
610
|
+
<%~ it.adhoc_folders_content %>
|
|
596
611
|
|
|
597
|
-
<
|
|
598
|
-
--- Ad-hoc Context ---
|
|
599
|
-
<%- it.ad_hoc_context_definition %>
|
|
600
|
-
<% } %>`;
|
|
612
|
+
<%~ it.user_input %>`;
|
|
601
613
|
|
|
602
614
|
const templateContent =
|
|
603
|
-
|
|
615
|
+
contextTemplate?.template_content ?? defaultTemplate;
|
|
604
616
|
|
|
605
|
-
|
|
617
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (templateContent.trim() === '') {
|
|
606
618
|
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
607
619
|
'Context template is empty. Using only the user prompt.',
|
|
608
620
|
);
|
|
@@ -612,13 +624,13 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
612
624
|
const adHocData: {
|
|
613
625
|
adhoc_files_content: string;
|
|
614
626
|
adhoc_folders_content: string;
|
|
615
|
-
} =
|
|
627
|
+
} = {
|
|
616
628
|
adhoc_files_content: '',
|
|
617
629
|
adhoc_folders_content: '',
|
|
618
630
|
};
|
|
619
631
|
|
|
620
|
-
let templateContextDef: ContextDefinition =
|
|
621
|
-
|
|
632
|
+
let templateContextDef: ContextDefinition = {};
|
|
633
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (contextTemplate?.context_definition) {
|
|
622
634
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
623
635
|
<span class="cstat-no" title="statement not covered" > templateContextDef = JSON.parse(contextTemplate.context_definition);</span>
|
|
624
636
|
} catch (e) {
|
|
@@ -628,10 +640,10 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
628
640
|
}
|
|
629
641
|
}
|
|
630
642
|
|
|
631
|
-
let adhocContextDef: ContextDefinition =
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
643
|
+
let adhocContextDef: ContextDefinition = {};
|
|
644
|
+
if (dto.ad_hoc_context_definition) {
|
|
645
|
+
try {
|
|
646
|
+
adhocContextDef = JSON.parse(dto.ad_hoc_context_definition);
|
|
635
647
|
} catch (e) {
|
|
636
648
|
<span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
|
|
637
649
|
`Could not parse ad_hoc_context_definition as JSON: ${dto.ad_hoc_context_definition}`,
|
|
@@ -639,50 +651,50 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
639
651
|
}
|
|
640
652
|
}
|
|
641
653
|
|
|
642
|
-
const mergedFiles =
|
|
654
|
+
const mergedFiles = [
|
|
643
655
|
...(templateContextDef.files || []),
|
|
644
656
|
...(adhocContextDef.files || []),
|
|
645
657
|
];
|
|
646
|
-
const uniqueFiles =
|
|
658
|
+
const uniqueFiles = [...new Set(mergedFiles)];
|
|
647
659
|
|
|
648
|
-
const mergedFolders =
|
|
660
|
+
const mergedFolders = [
|
|
649
661
|
...(templateContextDef.folders || []),
|
|
650
662
|
...(adhocContextDef.folders || []),
|
|
651
663
|
];
|
|
652
|
-
const uniqueFolders =
|
|
664
|
+
const uniqueFolders = [...new Set(mergedFolders)];
|
|
653
665
|
|
|
654
|
-
|
|
655
|
-
const fileContents =
|
|
656
|
-
uniqueFiles.map(
|
|
657
|
-
|
|
666
|
+
if (uniqueFiles.length > 0) {
|
|
667
|
+
const fileContents = await Promise.all(
|
|
668
|
+
uniqueFiles.map((filePath: string) =>
|
|
669
|
+
this.contextGenerationService.secureReadFile(filePath),
|
|
658
670
|
),
|
|
659
671
|
);
|
|
660
|
-
|
|
672
|
+
adHocData.adhoc_files_content = fileContents.join('\n\n');
|
|
661
673
|
}
|
|
662
674
|
|
|
663
|
-
|
|
664
|
-
const folderContexts =
|
|
665
|
-
uniqueFolders.map(
|
|
675
|
+
if (uniqueFolders.length > 0) {
|
|
676
|
+
const folderContexts = await Promise.all(
|
|
677
|
+
uniqueFolders.map(async (folderPath: string) => {
|
|
666
678
|
const tree =
|
|
667
|
-
|
|
668
|
-
const header =
|
|
679
|
+
await this.contextGenerationService.secureTree(folderPath);
|
|
680
|
+
const header = `// Tree for: ${folderPath}\n\`\`\`\n${tree}\n\`\`\``;
|
|
669
681
|
|
|
670
|
-
const filesInFolder =
|
|
682
|
+
const filesInFolder = await this.contextGenerationService.secureGlob(
|
|
671
683
|
`${folderPath}/**/*`,
|
|
672
684
|
);
|
|
673
|
-
const fileContents =
|
|
685
|
+
const fileContents = await Promise.all(
|
|
674
686
|
filesInFolder.map(<span class="fstat-no" title="function not covered" >(f</span>ilePath: string) =>
|
|
675
687
|
<span class="cstat-no" title="statement not covered" > this.contextGenerationService.secureReadFile(filePath),</span>
|
|
676
688
|
),
|
|
677
689
|
);
|
|
678
690
|
|
|
679
|
-
|
|
691
|
+
return [header, ...fileContents].join('\n\n');
|
|
680
692
|
}),
|
|
681
693
|
);
|
|
682
|
-
|
|
694
|
+
adHocData.adhoc_folders_content = folderContexts.join('\n\n---\n\n');
|
|
683
695
|
}
|
|
684
696
|
|
|
685
|
-
const data =
|
|
697
|
+
const data = {
|
|
686
698
|
ad_hoc_context_definition: dto.ad_hoc_context_definition || null,
|
|
687
699
|
user_input: dto.user_prompt,
|
|
688
700
|
system_prompt: systemPromptContent,
|
|
@@ -691,33 +703,33 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
691
703
|
...adHocData,
|
|
692
704
|
};
|
|
693
705
|
|
|
694
|
-
|
|
695
|
-
const generatedString =
|
|
706
|
+
try {
|
|
707
|
+
const generatedString = await this.contextGenerationService.render(
|
|
696
708
|
templateContent,
|
|
697
709
|
data,
|
|
698
710
|
);
|
|
699
711
|
|
|
700
712
|
const websocketEnabled =
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
713
|
+
await this.applicationStateService.getWebsocketEnabled();
|
|
714
|
+
if (websocketEnabled) {
|
|
715
|
+
this.eventsGateway.sendToAll('llm-input-generated', {
|
|
704
716
|
prompt: generatedString,
|
|
705
717
|
});
|
|
706
718
|
}
|
|
707
719
|
|
|
708
|
-
|
|
709
|
-
|
|
720
|
+
if (!templateContent.includes('it.user_input')) {
|
|
721
|
+
this.logger.warn(
|
|
710
722
|
"Template does not explicitly use 'it.user_input'. Appending user prompt to the end.",
|
|
711
723
|
);
|
|
712
|
-
|
|
724
|
+
return generatedString.trim()
|
|
713
725
|
? `${generatedString}\n\n${dto.user_prompt}`
|
|
714
|
-
: dto.user_prompt
|
|
726
|
+
: <span class="branch-1 cbranch-no" title="branch not covered" >dto.user_prompt;</span>
|
|
715
727
|
}
|
|
716
728
|
|
|
717
|
-
|
|
729
|
+
this.logger.log(
|
|
718
730
|
`Generated context string of length ${generatedString.length}`,
|
|
719
731
|
);
|
|
720
|
-
|
|
732
|
+
return generatedString;
|
|
721
733
|
} catch (error) {
|
|
722
734
|
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
723
735
|
`Context generation failed: ${error.message}`,
|
|
@@ -736,7 +748,7 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
736
748
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
737
749
|
Code coverage generated by
|
|
738
750
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
739
|
-
at 2025-
|
|
751
|
+
at 2025-09-12T19:21:55.945Z
|
|
740
752
|
</div>
|
|
741
753
|
<script src="../../prettify.js"></script>
|
|
742
754
|
<script>
|