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
|
@@ -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">75% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>42/56</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">55.55% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>5/9</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">92.85% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>13/14</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">75.47% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>40/53</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -194,30 +194,62 @@
|
|
|
194
194
|
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
195
|
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
196
|
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a
|
|
198
|
-
<
|
|
199
|
-
<
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">8x</span>
|
|
237
|
+
<span class="cline-any cline-yes">8x</span>
|
|
238
|
+
<span class="cline-any cline-yes">8x</span>
|
|
200
239
|
<span class="cline-any cline-neutral"> </span>
|
|
240
|
+
<span class="cline-any cline-yes">8x</span>
|
|
201
241
|
<span class="cline-any cline-neutral"> </span>
|
|
202
|
-
<span class="cline-any cline-no"> </span>
|
|
203
|
-
<span class="cline-any cline-no"> </span>
|
|
204
|
-
<span class="cline-any cline-no"> </span>
|
|
205
242
|
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-no"> </span>
|
|
207
243
|
<span class="cline-any cline-neutral"> </span>
|
|
208
244
|
<span class="cline-any cline-neutral"> </span>
|
|
209
245
|
<span class="cline-any cline-neutral"> </span>
|
|
210
246
|
<span class="cline-any cline-neutral"> </span>
|
|
211
247
|
<span class="cline-any cline-neutral"> </span>
|
|
212
248
|
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-no"> </span>
|
|
214
249
|
<span class="cline-any cline-neutral"> </span>
|
|
215
250
|
<span class="cline-any cline-neutral"> </span>
|
|
216
251
|
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-no"> </span>
|
|
218
|
-
<span class="cline-any cline-no"> </span>
|
|
219
252
|
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-no"> </span>
|
|
221
253
|
<span class="cline-any cline-neutral"> </span>
|
|
222
254
|
<span class="cline-any cline-neutral"> </span>
|
|
223
255
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -225,245 +257,330 @@
|
|
|
225
257
|
<span class="cline-any cline-neutral"> </span>
|
|
226
258
|
<span class="cline-any cline-neutral"> </span>
|
|
227
259
|
<span class="cline-any cline-neutral"> </span>
|
|
228
|
-
<span class="cline-any cline-no"> </span>
|
|
229
260
|
<span class="cline-any cline-neutral"> </span>
|
|
230
261
|
<span class="cline-any cline-neutral"> </span>
|
|
231
262
|
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-no"> </span>
|
|
233
263
|
<span class="cline-any cline-neutral"> </span>
|
|
234
264
|
<span class="cline-any cline-neutral"> </span>
|
|
235
265
|
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-no"> </span>
|
|
237
266
|
<span class="cline-any cline-neutral"> </span>
|
|
238
267
|
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-no"> </span>
|
|
240
|
-
<span class="cline-any cline-no"> </span>
|
|
241
|
-
<span class="cline-any cline-no"> </span>
|
|
242
268
|
<span class="cline-any cline-neutral"> </span>
|
|
243
|
-
<span class="cline-any cline-no"> </span>
|
|
244
269
|
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-no"> </span>
|
|
246
|
-
<span class="cline-any cline-no"> </span>
|
|
247
270
|
<span class="cline-any cline-neutral"> </span>
|
|
248
271
|
<span class="cline-any cline-neutral"> </span>
|
|
249
|
-
<span class="cline-any cline-no"> </span>
|
|
250
272
|
<span class="cline-any cline-neutral"> </span>
|
|
251
273
|
<span class="cline-any cline-neutral"> </span>
|
|
252
274
|
<span class="cline-any cline-neutral"> </span>
|
|
253
|
-
<span class="cline-any cline-no"> </span>
|
|
254
|
-
<span class="cline-any cline-no"> </span>
|
|
255
|
-
<span class="cline-any cline-no"> </span>
|
|
256
275
|
<span class="cline-any cline-neutral"> </span>
|
|
257
|
-
<span class="cline-any cline-no"> </span>
|
|
258
|
-
<span class="cline-any cline-no"> </span>
|
|
259
276
|
<span class="cline-any cline-neutral"> </span>
|
|
260
277
|
<span class="cline-any cline-neutral"> </span>
|
|
261
278
|
<span class="cline-any cline-neutral"> </span>
|
|
262
279
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-no"> </span>
|
|
264
|
-
<span class="cline-any cline-no"> </span>
|
|
265
|
-
<span class="cline-any cline-no"> </span>
|
|
266
280
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-no"> </span>
|
|
268
|
-
<span class="cline-any cline-no"> </span>
|
|
269
281
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-no"> </span>
|
|
271
282
|
<span class="cline-any cline-neutral"> </span>
|
|
272
283
|
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-yes">8x</span>
|
|
285
|
+
<span class="cline-any cline-yes">6x</span>
|
|
286
|
+
<span class="cline-any cline-yes">6x</span>
|
|
273
287
|
<span class="cline-any cline-neutral"> </span>
|
|
274
|
-
<span class="cline-any cline-
|
|
288
|
+
<span class="cline-any cline-yes">6x</span>
|
|
275
289
|
<span class="cline-any cline-neutral"> </span>
|
|
276
290
|
<span class="cline-any cline-neutral"> </span>
|
|
277
291
|
<span class="cline-any cline-neutral"> </span>
|
|
278
292
|
<span class="cline-any cline-neutral"> </span>
|
|
279
293
|
<span class="cline-any cline-neutral"> </span>
|
|
280
294
|
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-yes">6x</span>
|
|
281
296
|
<span class="cline-any cline-neutral"> </span>
|
|
282
297
|
<span class="cline-any cline-neutral"> </span>
|
|
283
|
-
<span class="cline-any cline-
|
|
298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<span class="cline-any cline-yes">6x</span>
|
|
300
|
+
<span class="cline-any cline-yes">6x</span>
|
|
301
|
+
<span class="cline-any cline-yes">6x</span>
|
|
302
|
+
<span class="cline-any cline-yes">6x</span>
|
|
303
|
+
<span class="cline-any cline-yes">6x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
305
|
<span class="cline-any cline-no"> </span>
|
|
285
306
|
<span class="cline-any cline-neutral"> </span>
|
|
286
307
|
<span class="cline-any cline-neutral"> </span>
|
|
287
308
|
<span class="cline-any cline-neutral"> </span>
|
|
288
|
-
<span class="cline-any cline-no"> </span>
|
|
289
|
-
<span class="cline-any cline-no"> </span>
|
|
290
|
-
<span class="cline-any cline-no"> </span>
|
|
291
309
|
<span class="cline-any cline-neutral"> </span>
|
|
292
|
-
<span class="cline-any cline-no"> </span>
|
|
293
310
|
<span class="cline-any cline-neutral"> </span>
|
|
294
311
|
<span class="cline-any cline-neutral"> </span>
|
|
295
312
|
<span class="cline-any cline-neutral"> </span>
|
|
313
|
+
<span class="cline-any cline-yes">15x</span>
|
|
296
314
|
<span class="cline-any cline-neutral"> </span>
|
|
297
315
|
<span class="cline-any cline-neutral"> </span>
|
|
298
316
|
<span class="cline-any cline-neutral"> </span>
|
|
317
|
+
<span class="cline-any cline-yes">24x</span>
|
|
299
318
|
<span class="cline-any cline-neutral"> </span>
|
|
300
319
|
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
|
+
<span class="cline-any cline-yes">1x</span>
|
|
322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-yes">1x</span>
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-yes">3x</span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
331
|
+
<span class="cline-any cline-yes">2x</span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-yes">1x</span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-yes">2x</span>
|
|
336
|
+
<span class="cline-any cline-yes">2x</span>
|
|
337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-yes">1x</span>
|
|
340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-yes">2x</span>
|
|
344
|
+
<span class="cline-any cline-yes">2x</span>
|
|
345
|
+
<span class="cline-any cline-yes">2x</span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
347
|
<span class="cline-any cline-no"> </span>
|
|
302
348
|
<span class="cline-any cline-no"> </span>
|
|
303
|
-
<span class="cline-any cline-
|
|
349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
304
351
|
<span class="cline-any cline-neutral"> </span>
|
|
305
352
|
<span class="cline-any cline-no"> </span>
|
|
353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
354
|
<span class="cline-any cline-no"> </span>
|
|
307
355
|
<span class="cline-any cline-neutral"> </span>
|
|
308
356
|
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-yes">16x</span>
|
|
360
|
+
<span class="cline-any cline-yes">16x</span>
|
|
361
|
+
<span class="cline-any cline-yes">16x</span>
|
|
362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
363
|
<span class="cline-any cline-no"> </span>
|
|
310
364
|
<span class="cline-any cline-no"> </span>
|
|
311
365
|
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
313
367
|
<span class="cline-any cline-neutral"> </span>
|
|
314
368
|
<span class="cline-any cline-neutral"> </span>
|
|
315
369
|
<span class="cline-any cline-neutral"> </span>
|
|
316
370
|
<span class="cline-any cline-no"> </span>
|
|
317
371
|
<span class="cline-any cline-neutral"> </span>
|
|
318
372
|
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
375
|
+
<span class="cline-any cline-yes">8x</span>
|
|
376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
319
379
|
<span class="cline-any cline-no"> </span>
|
|
320
380
|
<span class="cline-any cline-no"> </span>
|
|
381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
382
|
<span class="cline-any cline-no"> </span>
|
|
322
383
|
<span class="cline-any cline-neutral"> </span>
|
|
323
384
|
<span class="cline-any cline-no"> </span>
|
|
324
385
|
<span class="cline-any cline-neutral"> </span>
|
|
325
386
|
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-no"> </span>
|
|
327
387
|
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-neutral"> </span
|
|
329
|
-
<span class="
|
|
330
|
-
<span class="
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-yes">5x</span>
|
|
390
|
+
<span class="cline-any cline-yes">5x</span>
|
|
391
|
+
<span class="cline-any cline-yes">5x</span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-yes">3x</span>
|
|
396
|
+
<span class="cline-any cline-yes">3x</span>
|
|
397
|
+
<span class="cline-any cline-neutral"> </span>
|
|
398
|
+
<span class="cline-any cline-yes">3x</span>
|
|
399
|
+
<span class="cline-any cline-yes">3x</span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-yes">3x</span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-yes">3x</span>
|
|
404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable, Logger, NotFoundException } from '@nestjs/common';
|
|
407
|
+
import * as fs from 'fs/promises';
|
|
408
|
+
import * as path from 'path';
|
|
409
|
+
|
|
410
|
+
const readmeContent = `# How to Create Orchestration Scripts
|
|
411
|
+
|
|
412
|
+
Orchestrations automate multi-step tasks by executing a sequence of prompts defined in a single markdown file.
|
|
413
|
+
|
|
414
|
+
## 1. File Naming
|
|
415
|
+
|
|
416
|
+
- An orchestration script is a single markdown file with a \`.rc.md\` extension (e.g., \`my-new-feature.rc.md\`).
|
|
417
|
+
|
|
418
|
+
## 2. Script Format
|
|
419
|
+
|
|
420
|
+
The file contains one or more "chunks" of text, separated by \`$$$$\`. Each chunk is treated as a distinct prompt that will be sent to the LLM.
|
|
421
|
+
|
|
422
|
+
### The Separator
|
|
423
|
+
|
|
424
|
+
- Use \`$$$$\` on its own line to separate prompts.
|
|
425
|
+
|
|
426
|
+
### Example \`.rc.md\` File (\`sample-feature.rc.md\`)
|
|
427
|
+
|
|
428
|
+
\`\`\`markdown
|
|
429
|
+
Create a new React component file named Greeting.tsx in src/components. It should be a simple functional component that displays "Hello, World!".
|
|
430
|
+
|
|
431
|
+
$$$$
|
|
432
|
+
|
|
433
|
+
Now, import and render the new Greeting component in the main App component located at src/app/page.tsx.
|
|
434
|
+
\`\`\`
|
|
435
|
+
|
|
436
|
+
## How It Works
|
|
437
|
+
|
|
438
|
+
1. **Execution**: When you run an orchestration, the system makes a temporary copy of your script.
|
|
439
|
+
2. **One Chunk at a Time**: It sends the content of the first chunk to the LLM.
|
|
440
|
+
3. **Auto-Apply**: The LLM's response is parsed, and the resulting file modifications are applied automatically.
|
|
441
|
+
4. **Consume and Continue**: After a chunk is successfully processed, it's removed from the temporary script. The engine then moves on to the next chunk.
|
|
442
|
+
5. **Completion**: The orchestration is complete when all chunks in the temporary script have been processed and removed.
|
|
443
|
+
|
|
444
|
+
This allows the orchestration to be resumable. If it's stopped, the temporary script file maintains the state of remaining tasks.
|
|
445
|
+
|
|
446
|
+
## Guidelines for Writing Prompts
|
|
447
|
+
|
|
448
|
+
- **Be Specific and Atomic**: Each chunk should describe a single, clear, and verifiable step.
|
|
449
|
+
- **Sequential Logic**: Write chunks in the order they should be executed. The orchestration runs them sequentially and depends on the success of the previous step.
|
|
450
|
+
- **Assume \`auto_apply\`**: Remember that all actions generated by the LLM will be applied automatically. Write prompts that are safe for direct execution.
|
|
451
|
+
`;
|
|
331
452
|
|
|
332
453
|
@Injectable()
|
|
333
|
-
export class
|
|
334
|
-
private readonly
|
|
335
|
-
private readonly
|
|
454
|
+
export class OrchestrationFsService {
|
|
455
|
+
private readonly logger = new Logger(OrchestrationFsService.name);
|
|
456
|
+
private readonly projectRoot: string =
|
|
336
457
|
process.env.REPOBURG_PROJECT_PATH || process.cwd();
|
|
337
|
-
private readonly
|
|
458
|
+
private readonly orchestrationsDir: string = path.join(
|
|
338
459
|
this.projectRoot,
|
|
339
460
|
'.repoburg',
|
|
340
461
|
'orchestrations',
|
|
341
462
|
);
|
|
342
463
|
|
|
343
|
-
|
|
344
|
-
|
|
464
|
+
constructor() {
|
|
465
|
+
this.ensureOrchestrationsDirExists();
|
|
345
466
|
}
|
|
346
467
|
|
|
347
|
-
private
|
|
348
|
-
|
|
349
|
-
|
|
468
|
+
private async ensureOrchestrationsDirExists(): Promise<void> {
|
|
469
|
+
try {
|
|
470
|
+
await fs.mkdir(this.orchestrationsDir, { recursive: true });
|
|
471
|
+
const readmePath = path.join(this.orchestrationsDir, 'README.md');
|
|
472
|
+
this.logger.log('Ensuring orchestration README.md is up to date.');
|
|
473
|
+
await fs.writeFile(readmePath, readmeContent, 'utf-8');
|
|
350
474
|
} catch (error) {
|
|
351
475
|
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
352
|
-
`Failed to
|
|
476
|
+
`Failed to ensure orchestrations directory and README exist at ${this.orchestrationsDir}`,
|
|
353
477
|
error.stack,
|
|
354
478
|
);
|
|
355
479
|
}
|
|
356
480
|
}
|
|
357
481
|
|
|
358
|
-
private
|
|
359
|
-
|
|
482
|
+
private getScriptPath(name: string): string {
|
|
483
|
+
return path.join(this.orchestrationsDir, `${name}.rc.md`);
|
|
360
484
|
}
|
|
361
485
|
|
|
362
|
-
private
|
|
363
|
-
|
|
486
|
+
private getRunScriptPath(name: string): string {
|
|
487
|
+
return path.join(this.orchestrationsDir, `${name}.run.rc.md`);
|
|
364
488
|
}
|
|
365
489
|
|
|
366
|
-
|
|
367
|
-
const entries =
|
|
490
|
+
async listScripts(): Promise<{ name: string; content: string }[]> {
|
|
491
|
+
const entries = await fs.readdir(this.orchestrationsDir, {
|
|
368
492
|
withFileTypes: true,
|
|
369
493
|
});
|
|
370
|
-
const
|
|
371
|
-
.filter(
|
|
372
|
-
|
|
373
|
-
&
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
494
|
+
const scriptFiles = entries
|
|
495
|
+
.filter(
|
|
496
|
+
(e) =>
|
|
497
|
+
e.isFile() &&
|
|
498
|
+
e.name.endsWith('.rc.md') &&
|
|
499
|
+
!e.name.endsWith('.run.rc.md'),
|
|
500
|
+
)
|
|
501
|
+
.map((e) => e.name.replace(/\.rc\.md$/, ''));
|
|
502
|
+
|
|
503
|
+
const scripts = await Promise.all(
|
|
504
|
+
scriptFiles.map(async (name) => {
|
|
505
|
+
const content = await this.readScript(name);
|
|
506
|
+
return { name, content };
|
|
378
507
|
}),
|
|
379
508
|
);
|
|
380
|
-
|
|
509
|
+
return scripts;
|
|
381
510
|
}
|
|
382
511
|
|
|
383
|
-
|
|
384
|
-
const scriptPath =
|
|
385
|
-
|
|
386
|
-
|
|
512
|
+
async readScript(name: string): Promise<string> {
|
|
513
|
+
const scriptPath = this.getScriptPath(name);
|
|
514
|
+
try {
|
|
515
|
+
return await fs.readFile(scriptPath, 'utf-8');
|
|
387
516
|
} catch (error) {
|
|
388
|
-
<span class="cstat-no" title="statement not covered" >
|
|
389
|
-
<span class="cstat-no" title="statement not covered" >
|
|
517
|
+
<span class="cstat-no" title="statement not covered" > if (error.code === 'ENOENT') {</span>
|
|
518
|
+
<span class="cstat-no" title="statement not covered" > this.logger.log(</span>
|
|
519
|
+
`Script "${name}.rc.md" not found at path: ${scriptPath}`,
|
|
520
|
+
);
|
|
521
|
+
} else {
|
|
522
|
+
<span class="cstat-no" title="statement not covered" > this.logger.error(`Failed to read script: ${scriptPath}`, error.stack);</span>
|
|
523
|
+
}
|
|
524
|
+
<span class="cstat-no" title="statement not covered" > throw new NotFoundException(`Script "${name}.rc.md" not found.`);</span>
|
|
390
525
|
}
|
|
391
526
|
}
|
|
392
527
|
|
|
393
|
-
|
|
394
|
-
const
|
|
395
|
-
|
|
396
|
-
|
|
528
|
+
async readRunScript(name: string): Promise<string> {
|
|
529
|
+
const runScriptPath = this.getRunScriptPath(name);
|
|
530
|
+
try {
|
|
531
|
+
return await fs.readFile(runScriptPath, 'utf-8');
|
|
397
532
|
} catch (error) {
|
|
398
533
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.code === 'ENOENT') {</span>
|
|
399
|
-
<span class="cstat-no" title="statement not covered" > return ''; </span>// Return empty string if
|
|
534
|
+
<span class="cstat-no" title="statement not covered" > return ''; </span>// Return empty string if run file doesn't exist
|
|
400
535
|
}
|
|
401
536
|
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
402
|
-
`Failed to read
|
|
537
|
+
`Failed to read run script: ${runScriptPath}`,
|
|
403
538
|
error.stack,
|
|
404
539
|
);
|
|
405
540
|
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
406
541
|
}
|
|
407
542
|
}
|
|
408
543
|
|
|
409
|
-
|
|
410
|
-
name
|
|
411
|
-
scriptContent: string,
|
|
412
|
-
taskFileContent: string,
|
|
413
|
-
): Promise<void> {
|
|
414
|
-
<span class="cstat-no" title="statement not covered" > await fs.writeFile(this.getScriptPath(name), scriptContent, 'utf-8');</span>
|
|
415
|
-
<span class="cstat-no" title="statement not covered" > await fs.writeFile(this.getTaskFilePath(name), taskFileContent, 'utf-8');</span>
|
|
544
|
+
async writeScript(name: string, content: string): Promise<void> {
|
|
545
|
+
await fs.writeFile(this.getScriptPath(name), content, 'utf-8');
|
|
416
546
|
}
|
|
417
547
|
|
|
418
548
|
<span class="fstat-no" title="function not covered" > async </span>deleteScript(name: string): Promise<void> {
|
|
419
549
|
<span class="cstat-no" title="statement not covered" > await fs.unlink(this.getScriptPath(name));</span>
|
|
420
550
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
421
|
-
|
|
551
|
+
// Also clean up any lingering run file
|
|
552
|
+
<span class="cstat-no" title="statement not covered" > await fs.unlink(this.getRunScriptPath(name));</span>
|
|
422
553
|
} catch (error) {
|
|
423
554
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.code !== 'ENOENT') <span class="cstat-no" title="statement not covered" >throw error;</span></span>
|
|
424
555
|
}
|
|
425
556
|
}
|
|
426
557
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
const taskFilePath = <span class="cstat-no" title="statement not covered" >this.getTaskFilePath(scriptName);</span>
|
|
433
|
-
const content = <span class="cstat-no" title="statement not covered" >await this.readTaskFile(scriptName);</span>
|
|
434
|
-
const lines = <span class="cstat-no" title="statement not covered" >content.split('\n');</span>
|
|
435
|
-
|
|
436
|
-
const taskLineIndex = <span class="cstat-no" title="statement not covered" >lines.findIndex(<span class="fstat-no" title="function not covered" >(l</span>ine) =></span>
|
|
437
|
-
<span class="cstat-no" title="statement not covered" > line.includes(taskContent.substring(0, 100)),</span>
|
|
438
|
-
);
|
|
558
|
+
async cloneScriptForRun(name: string): Promise<void> {
|
|
559
|
+
const originalPath = this.getScriptPath(name);
|
|
560
|
+
const runPath = this.getRunScriptPath(name);
|
|
561
|
+
await fs.copyFile(originalPath, runPath);
|
|
562
|
+
}
|
|
439
563
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
0,
|
|
444
|
-
100,
|
|
445
|
-
)}" in ${taskFilePath}`,
|
|
446
|
-
);
|
|
447
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
448
|
-
}
|
|
564
|
+
async consumeNextChunk(name: string): Promise<void> {
|
|
565
|
+
const runScriptPath = this.getRunScriptPath(name);
|
|
566
|
+
const content = await this.readRunScript(name);
|
|
449
567
|
|
|
450
|
-
const
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
<span class="cstat-no" title="statement not covered" > lines[taskLineIndex] = line.replace('[x]', '[ ]');</span>
|
|
455
|
-
}
|
|
568
|
+
const parts = content.split('$$$$');
|
|
569
|
+
parts.shift(); // Remove the first chunk
|
|
570
|
+
|
|
571
|
+
const newContent = parts.join('$$$$').trim();
|
|
456
572
|
|
|
457
|
-
|
|
573
|
+
await fs.writeFile(runScriptPath, newContent, 'utf-8');
|
|
458
574
|
}
|
|
459
|
-
}
|
|
575
|
+
}
|
|
576
|
+
</pre></td></tr></table></pre>
|
|
460
577
|
|
|
461
578
|
<div class='push'></div><!-- for sticky footer -->
|
|
462
579
|
</div><!-- /wrapper -->
|
|
463
580
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
464
581
|
Code coverage generated by
|
|
465
582
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
466
|
-
at 2025-
|
|
583
|
+
at 2025-09-12T19:21:55.945Z
|
|
467
584
|
</div>
|
|
468
585
|
<script src="../../prettify.js"></script>
|
|
469
586
|
<script>
|