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">87.24% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>130/149</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">78.26% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>36/46</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">81.81% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>18/22</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">90.51% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>124/137</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>
|
|
@@ -399,43 +399,7 @@
|
|
|
399
399
|
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
400
|
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
401
|
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">8x</span>
|
|
439
403
|
<span class="cline-any cline-neutral"> </span>
|
|
440
404
|
<span class="cline-any cline-neutral"> </span>
|
|
441
405
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -443,263 +407,226 @@
|
|
|
443
407
|
<span class="cline-any cline-neutral"> </span>
|
|
444
408
|
<span class="cline-any cline-neutral"> </span>
|
|
445
409
|
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-
|
|
447
|
-
<span class="cline-any cline-
|
|
448
|
-
<span class="cline-any cline-
|
|
410
|
+
<span class="cline-any cline-yes">8x</span>
|
|
411
|
+
<span class="cline-any cline-yes">8x</span>
|
|
412
|
+
<span class="cline-any cline-yes">8x</span>
|
|
449
413
|
<span class="cline-any cline-neutral"> </span>
|
|
450
414
|
<span class="cline-any cline-neutral"> </span>
|
|
451
415
|
<span class="cline-any cline-neutral"> </span>
|
|
452
416
|
<span class="cline-any cline-neutral"> </span>
|
|
453
417
|
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-
|
|
455
|
-
<span class="cline-any cline-
|
|
456
|
-
<span class="cline-any cline-
|
|
457
|
-
<span class="cline-any cline-
|
|
458
|
-
<span class="cline-any cline-
|
|
459
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
+
<span class="cline-any cline-yes">8x</span>
|
|
419
|
+
<span class="cline-any cline-yes">8x</span>
|
|
420
|
+
<span class="cline-any cline-yes">8x</span>
|
|
421
|
+
<span class="cline-any cline-yes">8x</span>
|
|
422
|
+
<span class="cline-any cline-yes">8x</span>
|
|
460
423
|
<span class="cline-any cline-neutral"> </span>
|
|
461
424
|
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-
|
|
463
|
-
<span class="cline-any cline-
|
|
464
|
-
<span class="cline-any cline-
|
|
465
|
-
<span class="cline-any cline-
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
+
<span class="cline-any cline-yes">8x</span>
|
|
426
|
+
<span class="cline-any cline-yes">21x</span>
|
|
427
|
+
<span class="cline-any cline-yes">21x</span>
|
|
428
|
+
<span class="cline-any cline-yes">21x</span>
|
|
467
429
|
<span class="cline-any cline-neutral"> </span>
|
|
468
430
|
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-
|
|
470
|
-
<span class="cline-any cline-
|
|
471
|
-
<span class="cline-any cline-
|
|
472
|
-
<span class="cline-any cline-
|
|
473
|
-
<span class="cline-any cline-
|
|
474
|
-
<span class="cline-any cline-
|
|
475
|
-
<span class="cline-any cline-
|
|
476
|
-
<span class="cline-any cline-no"> </span>
|
|
431
|
+
<span class="cline-any cline-yes">21x</span>
|
|
432
|
+
<span class="cline-any cline-yes">21x</span>
|
|
433
|
+
<span class="cline-any cline-yes">21x</span>
|
|
434
|
+
<span class="cline-any cline-yes">21x</span>
|
|
435
|
+
<span class="cline-any cline-yes">21x</span>
|
|
436
|
+
<span class="cline-any cline-yes">21x</span>
|
|
437
|
+
<span class="cline-any cline-yes">21x</span>
|
|
477
438
|
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-
|
|
439
|
+
<span class="cline-any cline-yes">21x</span>
|
|
479
440
|
<span class="cline-any cline-neutral"> </span>
|
|
480
441
|
<span class="cline-any cline-neutral"> </span>
|
|
481
442
|
<span class="cline-any cline-neutral"> </span>
|
|
482
|
-
<span class="cline-any cline-no"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-no"> </span>
|
|
485
|
-
<span class="cline-any cline-no"> </span>
|
|
486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
487
443
|
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-yes">23x</span>
|
|
445
|
+
<span class="cline-any cline-yes">23x</span>
|
|
446
|
+
<span class="cline-any cline-yes">16x</span>
|
|
447
|
+
<span class="cline-any cline-yes">16x</span>
|
|
488
448
|
<span class="cline-any cline-neutral"> </span>
|
|
489
449
|
<span class="cline-any cline-neutral"> </span>
|
|
490
450
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
493
451
|
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-no"> </span>
|
|
496
452
|
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-yes">1x</span>
|
|
501
454
|
<span class="cline-any cline-neutral"> </span>
|
|
502
455
|
<span class="cline-any cline-neutral"> </span>
|
|
456
|
+
<span class="cline-any cline-yes">1x</span>
|
|
457
|
+
<span class="cline-any cline-yes">1x</span>
|
|
503
458
|
<span class="cline-any cline-neutral"> </span>
|
|
459
|
+
<span class="cline-any cline-yes">1x</span>
|
|
460
|
+
<span class="cline-any cline-yes">1x</span>
|
|
461
|
+
<span class="cline-any cline-yes">1x</span>
|
|
462
|
+
<span class="cline-any cline-yes">15x</span>
|
|
504
463
|
<span class="cline-any cline-neutral"> </span>
|
|
505
464
|
<span class="cline-any cline-neutral"> </span>
|
|
506
465
|
<span class="cline-any cline-neutral"> </span>
|
|
507
466
|
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-no"> </span>
|
|
510
467
|
<span class="cline-any cline-neutral"> </span>
|
|
511
468
|
<span class="cline-any cline-neutral"> </span>
|
|
512
469
|
<span class="cline-any cline-neutral"> </span>
|
|
470
|
+
<span class="cline-any cline-yes">15x</span>
|
|
471
|
+
<span class="cline-any cline-yes">15x</span>
|
|
513
472
|
<span class="cline-any cline-neutral"> </span>
|
|
514
473
|
<span class="cline-any cline-neutral"> </span>
|
|
515
474
|
<span class="cline-any cline-neutral"> </span>
|
|
516
475
|
<span class="cline-any cline-neutral"> </span>
|
|
517
476
|
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-no"> </span>
|
|
520
|
-
<span class="cline-any cline-no"> </span>
|
|
521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-no"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-no"> </span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-no"> </span>
|
|
531
|
-
<span class="cline-any cline-no"> </span>
|
|
532
477
|
<span class="cline-any cline-neutral"> </span>
|
|
533
478
|
<span class="cline-any cline-neutral"> </span>
|
|
534
479
|
<span class="cline-any cline-neutral"> </span>
|
|
480
|
+
<span class="cline-any cline-yes">29x</span>
|
|
481
|
+
<span class="cline-any cline-yes">29x</span>
|
|
482
|
+
<span class="cline-any cline-yes">29x</span>
|
|
535
483
|
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-yes">29x</span>
|
|
485
|
+
<span class="cline-any cline-yes">5x</span>
|
|
486
|
+
<span class="cline-any cline-yes">5x</span>
|
|
487
|
+
<span class="cline-any cline-yes">5x</span>
|
|
536
488
|
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-yes">24x</span>
|
|
537
490
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-yes">29x</span>
|
|
538
492
|
<span class="cline-any cline-no"> </span>
|
|
539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
540
|
-
<span class="cline-any cline-neutral"> </span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
493
|
<span class="cline-any cline-no"> </span>
|
|
543
494
|
<span class="cline-any cline-neutral"> </span>
|
|
544
495
|
<span class="cline-any cline-neutral"> </span>
|
|
545
496
|
<span class="cline-any cline-neutral"> </span>
|
|
546
497
|
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-yes">32x</span>
|
|
547
499
|
<span class="cline-any cline-neutral"> </span>
|
|
548
500
|
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-no"> </span>
|
|
550
|
-
<span class="cline-any cline-no"> </span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-no"> </span>
|
|
553
501
|
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-yes">52x</span>
|
|
554
503
|
<span class="cline-any cline-neutral"> </span>
|
|
555
504
|
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-no"> </span>
|
|
557
505
|
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-yes">53x</span>
|
|
507
|
+
<span class="cline-any cline-yes">52x</span>
|
|
508
|
+
<span class="cline-any cline-yes">52x</span>
|
|
509
|
+
<span class="cline-any cline-yes">52x</span>
|
|
558
510
|
<span class="cline-any cline-neutral"> </span>
|
|
559
511
|
<span class="cline-any cline-neutral"> </span>
|
|
560
|
-
<span class="cline-any cline-no"> </span>
|
|
561
|
-
<span class="cline-any cline-no"> </span>
|
|
562
512
|
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-yes">21x</span>
|
|
563
514
|
<span class="cline-any cline-neutral"> </span>
|
|
564
515
|
<span class="cline-any cline-neutral"> </span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-no"> </span>
|
|
567
|
-
<span class="cline-any cline-no"> </span>
|
|
568
516
|
<span class="cline-any cline-neutral"> </span>
|
|
517
|
+
<span class="cline-any cline-yes">7x</span>
|
|
569
518
|
<span class="cline-any cline-no"> </span>
|
|
570
519
|
<span class="cline-any cline-neutral"> </span>
|
|
571
520
|
<span class="cline-any cline-neutral"> </span>
|
|
572
521
|
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
522
|
<span class="cline-any cline-no"> </span>
|
|
576
523
|
<span class="cline-any cline-no"> </span>
|
|
577
524
|
<span class="cline-any cline-no"> </span>
|
|
578
525
|
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
526
|
<span class="cline-any cline-no"> </span>
|
|
581
527
|
<span class="cline-any cline-neutral"> </span>
|
|
582
528
|
<span class="cline-any cline-neutral"> </span>
|
|
583
529
|
<span class="cline-any cline-neutral"> </span>
|
|
584
530
|
<span class="cline-any cline-neutral"> </span>
|
|
585
531
|
<span class="cline-any cline-neutral"> </span>
|
|
532
|
+
<span class="cline-any cline-yes">7x</span>
|
|
533
|
+
<span class="cline-any cline-yes">7x</span>
|
|
586
534
|
<span class="cline-any cline-neutral"> </span>
|
|
535
|
+
<span class="cline-any cline-yes">7x</span>
|
|
536
|
+
<span class="cline-any cline-yes">7x</span>
|
|
587
537
|
<span class="cline-any cline-neutral"> </span>
|
|
538
|
+
<span class="cline-any cline-yes">7x</span>
|
|
588
539
|
<span class="cline-any cline-neutral"> </span>
|
|
589
540
|
<span class="cline-any cline-neutral"> </span>
|
|
590
541
|
<span class="cline-any cline-neutral"> </span>
|
|
591
542
|
<span class="cline-any cline-neutral"> </span>
|
|
592
543
|
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-no"> </span>
|
|
594
|
-
<span class="cline-any cline-no"> </span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
544
|
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-no"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
545
|
<span class="cline-any cline-neutral"> </span>
|
|
601
546
|
<span class="cline-any cline-neutral"> </span>
|
|
602
547
|
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-no"> </span>
|
|
604
548
|
<span class="cline-any cline-neutral"> </span>
|
|
605
549
|
<span class="cline-any cline-neutral"> </span>
|
|
606
550
|
<span class="cline-any cline-neutral"> </span>
|
|
607
551
|
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-
|
|
552
|
+
<span class="cline-any cline-yes">7x</span>
|
|
553
|
+
<span class="cline-any cline-yes">7x</span>
|
|
609
554
|
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-no"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-no"> </span>
|
|
613
|
-
<span class="cline-any cline-no"> </span>
|
|
614
555
|
<span class="cline-any cline-neutral"> </span>
|
|
556
|
+
<span class="cline-any cline-yes">7x</span>
|
|
615
557
|
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-no"> </span>
|
|
617
558
|
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-
|
|
559
|
+
<span class="cline-any cline-yes">7x</span>
|
|
619
560
|
<span class="cline-any cline-no"> </span>
|
|
620
561
|
<span class="cline-any cline-neutral"> </span>
|
|
621
562
|
<span class="cline-any cline-neutral"> </span>
|
|
622
|
-
<span class="cline-any cline-no"> </span>
|
|
623
563
|
<span class="cline-any cline-neutral"> </span>
|
|
624
564
|
<span class="cline-any cline-no"> </span>
|
|
625
|
-
<span class="cline-any cline-no"> </span>
|
|
626
|
-
<span class="cline-any cline-no"> </span>
|
|
627
|
-
<span class="cline-any cline-no"> </span>
|
|
628
|
-
<span class="cline-any cline-no"> </span>
|
|
629
565
|
<span class="cline-any cline-neutral"> </span>
|
|
630
566
|
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-no"> </span>
|
|
632
567
|
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-no"> </span>
|
|
634
|
-
<span class="cline-any cline-no"> </span>
|
|
635
|
-
<span class="cline-any cline-no"> </span>
|
|
636
|
-
<span class="cline-any cline-no"> </span>
|
|
637
568
|
<span class="cline-any cline-neutral"> </span>
|
|
569
|
+
<span class="cline-any cline-yes">10x</span>
|
|
638
570
|
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-
|
|
640
|
-
<span class="cline-any cline-no"> </span>
|
|
641
|
-
<span class="cline-any cline-no"> </span>
|
|
642
|
-
<span class="cline-any cline-no"> </span>
|
|
571
|
+
<span class="cline-any cline-yes">10x</span>
|
|
643
572
|
<span class="cline-any cline-no"> </span>
|
|
644
573
|
<span class="cline-any cline-no"> </span>
|
|
645
574
|
<span class="cline-any cline-no"> </span>
|
|
646
575
|
<span class="cline-any cline-neutral"> </span>
|
|
647
576
|
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-
|
|
577
|
+
<span class="cline-any cline-yes">10x</span>
|
|
649
578
|
<span class="cline-any cline-neutral"> </span>
|
|
579
|
+
<span class="cline-any cline-yes">10x</span>
|
|
580
|
+
<span class="cline-any cline-yes">10x</span>
|
|
650
581
|
<span class="cline-any cline-neutral"> </span>
|
|
582
|
+
<span class="cline-any cline-yes">10x</span>
|
|
583
|
+
<span class="cline-any cline-yes">2x</span>
|
|
651
584
|
<span class="cline-any cline-neutral"> </span>
|
|
652
585
|
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-
|
|
654
|
-
<span class="cline-any cline-
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-no"> </span>
|
|
657
|
-
<span class="cline-any cline-no"> </span>
|
|
658
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
+
<span class="cline-any cline-yes">2x</span>
|
|
587
|
+
<span class="cline-any cline-yes">2x</span>
|
|
659
588
|
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-no"> </span>
|
|
661
|
-
<span class="cline-any cline-no"> </span>
|
|
662
589
|
<span class="cline-any cline-neutral"> </span>
|
|
590
|
+
<span class="cline-any cline-yes">8x</span>
|
|
591
|
+
<span class="cline-any cline-yes">8x</span>
|
|
663
592
|
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-
|
|
593
|
+
<span class="cline-any cline-yes">8x</span>
|
|
594
|
+
<span class="cline-any cline-yes">8x</span>
|
|
595
|
+
<span class="cline-any cline-yes">8x</span>
|
|
596
|
+
<span class="cline-any cline-yes">8x</span>
|
|
665
597
|
<span class="cline-any cline-neutral"> </span>
|
|
598
|
+
<span class="cline-any cline-yes">8x</span>
|
|
666
599
|
<span class="cline-any cline-neutral"> </span>
|
|
667
600
|
<span class="cline-any cline-neutral"> </span>
|
|
668
601
|
<span class="cline-any cline-neutral"> </span>
|
|
602
|
+
<span class="cline-any cline-yes">8x</span>
|
|
669
603
|
<span class="cline-any cline-neutral"> </span>
|
|
670
604
|
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-no"> </span>
|
|
672
|
-
<span class="cline-any cline-no"> </span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
605
|
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-no"> </span>
|
|
676
606
|
<span class="cline-any cline-neutral"> </span>
|
|
677
607
|
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-
|
|
679
|
-
<span class="cline-any cline-
|
|
608
|
+
<span class="cline-any cline-yes">8x</span>
|
|
609
|
+
<span class="cline-any cline-yes">8x</span>
|
|
680
610
|
<span class="cline-any cline-neutral"> </span>
|
|
611
|
+
<span class="cline-any cline-yes">8x</span>
|
|
681
612
|
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-no"> </span>
|
|
683
|
-
<span class="cline-any cline-no"> </span>
|
|
684
613
|
<span class="cline-any cline-neutral"> </span>
|
|
685
614
|
<span class="cline-any cline-neutral"> </span>
|
|
615
|
+
<span class="cline-any cline-yes">8x</span>
|
|
686
616
|
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
617
|
<span class="cline-any cline-neutral"> </span>
|
|
690
618
|
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-no"> </span>
|
|
692
619
|
<span class="cline-any cline-neutral"> </span>
|
|
693
620
|
<span class="cline-any cline-neutral"> </span>
|
|
621
|
+
<span class="cline-any cline-yes">8x</span>
|
|
694
622
|
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-no"> </span>
|
|
696
|
-
<span class="cline-any cline-no"> </span>
|
|
697
623
|
<span class="cline-any cline-neutral"> </span>
|
|
698
624
|
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-no"> </span>
|
|
700
625
|
<span class="cline-any cline-neutral"> </span>
|
|
701
626
|
<span class="cline-any cline-neutral"> </span>
|
|
702
627
|
<span class="cline-any cline-neutral"> </span>
|
|
628
|
+
<span class="cline-any cline-yes">8x</span>
|
|
629
|
+
<span class="cline-any cline-yes">2x</span>
|
|
703
630
|
<span class="cline-any cline-neutral"> </span>
|
|
704
631
|
<span class="cline-any cline-neutral"> </span>
|
|
705
632
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -708,106 +635,107 @@
|
|
|
708
635
|
<span class="cline-any cline-neutral"> </span>
|
|
709
636
|
<span class="cline-any cline-neutral"> </span>
|
|
710
637
|
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-
|
|
712
|
-
<span class="cline-any cline-
|
|
713
|
-
<span class="cline-any cline-no"> </span>
|
|
638
|
+
<span class="cline-any cline-yes">10x</span>
|
|
639
|
+
<span class="cline-any cline-yes">7x</span>
|
|
714
640
|
<span class="cline-any cline-neutral"> </span>
|
|
715
641
|
<span class="cline-any cline-neutral"> </span>
|
|
642
|
+
<span class="cline-any cline-yes">7x</span>
|
|
716
643
|
<span class="cline-any cline-neutral"> </span>
|
|
717
644
|
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-no"> </span>
|
|
719
645
|
<span class="cline-any cline-neutral"> </span>
|
|
646
|
+
<span class="cline-any cline-yes">7x</span>
|
|
647
|
+
<span class="cline-any cline-yes">1x</span>
|
|
720
648
|
<span class="cline-any cline-neutral"> </span>
|
|
721
649
|
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-
|
|
723
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
+
<span class="cline-any cline-yes">3x</span>
|
|
724
651
|
<span class="cline-any cline-neutral"> </span>
|
|
725
652
|
<span class="cline-any cline-neutral"> </span>
|
|
726
653
|
<span class="cline-any cline-neutral"> </span>
|
|
727
654
|
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-no"> </span>
|
|
729
|
-
<span class="cline-any cline-no"> </span>
|
|
730
|
-
<span class="cline-any cline-no"> </span>
|
|
731
|
-
<span class="cline-any cline-no"> </span>
|
|
732
655
|
<span class="cline-any cline-neutral"> </span>
|
|
733
656
|
<span class="cline-any cline-neutral"> </span>
|
|
657
|
+
<span class="cline-any cline-yes">2x</span>
|
|
734
658
|
<span class="cline-any cline-neutral"> </span>
|
|
735
659
|
<span class="cline-any cline-neutral"> </span>
|
|
736
660
|
<span class="cline-any cline-neutral"> </span>
|
|
737
661
|
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-
|
|
739
|
-
<span class="cline-any cline-
|
|
740
|
-
<span class="cline-any cline-
|
|
662
|
+
<span class="cline-any cline-yes">1x</span>
|
|
663
|
+
<span class="cline-any cline-yes">1x</span>
|
|
664
|
+
<span class="cline-any cline-yes">1x</span>
|
|
741
665
|
<span class="cline-any cline-neutral"> </span>
|
|
742
666
|
<span class="cline-any cline-neutral"> </span>
|
|
743
667
|
<span class="cline-any cline-neutral"> </span>
|
|
744
668
|
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-
|
|
669
|
+
<span class="cline-any cline-yes">3x</span>
|
|
746
670
|
<span class="cline-any cline-neutral"> </span>
|
|
747
671
|
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-no"> </span>
|
|
749
|
-
<span class="cline-any cline-no"> </span>
|
|
750
|
-
<span class="cline-any cline-no"> </span>
|
|
751
672
|
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-
|
|
673
|
+
<span class="cline-any cline-yes">2x</span>
|
|
674
|
+
<span class="cline-any cline-yes">2x</span>
|
|
675
|
+
<span class="cline-any cline-yes">2x</span>
|
|
753
676
|
<span class="cline-any cline-neutral"> </span>
|
|
754
677
|
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-no"> </span>
|
|
756
678
|
<span class="cline-any cline-neutral"> </span>
|
|
757
679
|
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-
|
|
680
|
+
<span class="cline-any cline-yes">1x</span>
|
|
681
|
+
<span class="cline-any cline-yes">1x</span>
|
|
682
|
+
<span class="cline-any cline-yes">1x</span>
|
|
683
|
+
<span class="cline-any cline-yes">1x</span>
|
|
759
684
|
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-no"> </span>
|
|
762
685
|
<span class="cline-any cline-neutral"> </span>
|
|
763
686
|
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-no"> </span>
|
|
765
687
|
<span class="cline-any cline-neutral"> </span>
|
|
766
688
|
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-no"> </span>
|
|
768
|
-
<span class="cline-any cline-no"> </span>
|
|
769
689
|
<span class="cline-any cline-neutral"> </span>
|
|
690
|
+
<span class="cline-any cline-yes">9x</span>
|
|
691
|
+
<span class="cline-any cline-yes">5x</span>
|
|
692
|
+
<span class="cline-any cline-yes">5x</span>
|
|
770
693
|
<span class="cline-any cline-neutral"> </span>
|
|
771
694
|
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
695
|
<span class="cline-any cline-neutral"> </span>
|
|
774
696
|
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-
|
|
697
|
+
<span class="cline-any cline-yes">6x</span>
|
|
776
698
|
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-no"> </span>
|
|
778
|
-
<span class="cline-any cline-no"> </span>
|
|
779
699
|
<span class="cline-any cline-neutral"> </span>
|
|
700
|
+
<span class="cline-any cline-yes">6x</span>
|
|
701
|
+
<span class="cline-any cline-yes">1x</span>
|
|
702
|
+
<span class="cline-any cline-yes">1x</span>
|
|
780
703
|
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-
|
|
782
|
-
<span class="cline-any cline-no"> </span>
|
|
704
|
+
<span class="cline-any cline-yes">5x</span>
|
|
783
705
|
<span class="cline-any cline-neutral"> </span>
|
|
784
706
|
<span class="cline-any cline-neutral"> </span>
|
|
707
|
+
<span class="cline-any cline-yes">1x</span>
|
|
785
708
|
<span class="cline-any cline-neutral"> </span>
|
|
786
709
|
<span class="cline-any cline-neutral"> </span>
|
|
710
|
+
<span class="cline-any cline-yes">1x</span>
|
|
787
711
|
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-
|
|
712
|
+
<span class="cline-any cline-yes">4x</span>
|
|
713
|
+
<span class="cline-any cline-yes">1x</span>
|
|
789
714
|
<span class="cline-any cline-neutral"> </span>
|
|
790
715
|
<span class="cline-any cline-neutral"> </span>
|
|
716
|
+
<span class="cline-any cline-yes">1x</span>
|
|
791
717
|
<span class="cline-any cline-neutral"> </span>
|
|
792
718
|
<span class="cline-any cline-neutral"> </span>
|
|
719
|
+
<span class="cline-any cline-yes">3x</span>
|
|
720
|
+
<span class="cline-any cline-yes">3x</span>
|
|
793
721
|
<span class="cline-any cline-neutral"> </span>
|
|
794
|
-
<span class="cline-any cline-no"> </span>
|
|
795
722
|
<span class="cline-any cline-neutral"> </span>
|
|
796
723
|
<span class="cline-any cline-neutral"> </span>
|
|
724
|
+
<span class="cline-any cline-yes">3x</span>
|
|
797
725
|
<span class="cline-any cline-neutral"> </span>
|
|
726
|
+
<span class="cline-any cline-yes">3x</span>
|
|
727
|
+
<span class="cline-any cline-yes">3x</span>
|
|
798
728
|
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-no"> </span>
|
|
800
|
-
<span class="cline-any cline-no"> </span>
|
|
801
729
|
<span class="cline-any cline-neutral"> </span>
|
|
802
730
|
<span class="cline-any cline-neutral"> </span>
|
|
731
|
+
<span class="cline-any cline-yes">3x</span>
|
|
732
|
+
<span class="cline-any cline-yes">3x</span>
|
|
733
|
+
<span class="cline-any cline-yes">3x</span>
|
|
734
|
+
<span class="cline-any cline-yes">3x</span>
|
|
803
735
|
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-no"> </span>
|
|
805
|
-
<span class="cline-any cline-no"> </span>
|
|
806
|
-
<span class="cline-any cline-no"> </span>
|
|
807
|
-
<span class="cline-any cline-no"> </span>
|
|
808
736
|
<span class="cline-any cline-neutral"> </span>
|
|
809
737
|
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
738
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
811
739
|
Injectable,
|
|
812
740
|
Logger,
|
|
813
741
|
Scope,
|
|
@@ -815,61 +743,59 @@
|
|
|
815
743
|
forwardRef,
|
|
816
744
|
BadRequestException,
|
|
817
745
|
} from '@nestjs/common';
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
746
|
+
import { OrchestrationFsService } from './orchestration-fs.service';
|
|
747
|
+
import { ApplicationStateService } from '../application-state/application-state.service';
|
|
748
|
+
import {
|
|
821
749
|
OrchestrationMode,
|
|
822
750
|
OrchestrationRunState,
|
|
823
751
|
OrchestrationStatus,
|
|
824
752
|
} from './orchestration.types';
|
|
825
753
|
import { StartOrchestrationDto } from './dto/orchestration.dto';
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
<span class="cstat-no" title="statement not covered" >import { OrchestrationParserService } from './orchestration-parser.service';</span>
|
|
754
|
+
import { randomUUID } from 'crypto';
|
|
755
|
+
import { EventsGateway } from '../events/events.gateway';
|
|
756
|
+
import { SessionInputsService } from '../session-inputs/session-inputs.service';
|
|
757
|
+
import { SessionsService } from '../sessions/sessions.service';
|
|
758
|
+
import { OrchestrationParserService } from './orchestration-parser.service';
|
|
832
759
|
|
|
833
760
|
@Injectable({ scope: Scope.DEFAULT }) // Singleton
|
|
834
|
-
export class
|
|
835
|
-
private readonly
|
|
836
|
-
private
|
|
837
|
-
private
|
|
838
|
-
private readonly <span class="cstat-no" title="statement not covered" >TIMEOUT_MS = 6 * 60 * 1000; </span>// 6 minutes
|
|
761
|
+
export class OrchestrationService {
|
|
762
|
+
private readonly logger = new Logger(OrchestrationService.name);
|
|
763
|
+
private activeRun: OrchestrationRunState | null = null;
|
|
764
|
+
private timeoutTimer: NodeJS.Timeout | null = null;
|
|
839
765
|
|
|
840
|
-
|
|
841
|
-
private readonly
|
|
842
|
-
private readonly
|
|
843
|
-
private readonly
|
|
844
|
-
private readonly
|
|
845
|
-
@Inject(forwardRef(
|
|
846
|
-
private readonly
|
|
847
|
-
private readonly
|
|
848
|
-
private readonly <span class="cstat-no" title="statement not covered" >sessionsService: S</span>essionsService,
|
|
766
|
+
constructor(
|
|
767
|
+
private readonly fsService: OrchestrationFsService,
|
|
768
|
+
private readonly appStateService: ApplicationStateService,
|
|
769
|
+
private readonly eventsGateway: EventsGateway,
|
|
770
|
+
private readonly parserService: OrchestrationParserService,
|
|
771
|
+
@Inject(forwardRef(() => SessionInputsService))
|
|
772
|
+
private readonly sessionInputsService: SessionInputsService,
|
|
773
|
+
private readonly sessionsService: SessionsService,
|
|
849
774
|
) {
|
|
850
|
-
|
|
775
|
+
this.loadStateFromPersistence();
|
|
851
776
|
}
|
|
852
777
|
|
|
853
|
-
private
|
|
854
|
-
const persistedState =
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
778
|
+
private async loadStateFromPersistence() {
|
|
779
|
+
const persistedState =
|
|
780
|
+
await this.appStateService.getOrchestrationRunState();
|
|
781
|
+
if (persistedState) {
|
|
782
|
+
this.logger.log('Loading persisted orchestration state:', persistedState);
|
|
783
|
+
if (
|
|
858
784
|
[
|
|
859
785
|
OrchestrationStatus.RUNNING,
|
|
860
786
|
OrchestrationStatus.WAITING_FOR_LLM_RESPONSE,
|
|
861
787
|
].includes(persistedState.status)
|
|
862
788
|
) {
|
|
863
|
-
|
|
789
|
+
this.logger.warn(
|
|
864
790
|
`Server restarted during an active orchestration run (${persistedState.runId}). Setting status to FAILED.`,
|
|
865
791
|
);
|
|
866
|
-
|
|
867
|
-
|
|
792
|
+
persistedState.status = OrchestrationStatus.FAILED;
|
|
793
|
+
persistedState.error =
|
|
868
794
|
'Orchestration failed due to an unexpected server restart.';
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
} else
|
|
795
|
+
this.activeRun = persistedState;
|
|
796
|
+
await this.persistState();
|
|
797
|
+
this.emitStatus();
|
|
798
|
+
} else if (
|
|
873
799
|
[
|
|
874
800
|
OrchestrationStatus.COMPLETED,
|
|
875
801
|
OrchestrationStatus.FAILED,
|
|
@@ -877,59 +803,54 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
877
803
|
].includes(persistedState.status)
|
|
878
804
|
) {
|
|
879
805
|
// If the server restarts after a terminal state, load it so the user can dismiss it.
|
|
880
|
-
|
|
881
|
-
|
|
806
|
+
this.activeRun = persistedState;
|
|
807
|
+
this.emitStatus();
|
|
882
808
|
}
|
|
883
809
|
}
|
|
884
810
|
}
|
|
885
811
|
|
|
886
|
-
private
|
|
812
|
+
private async setState(
|
|
887
813
|
status: OrchestrationStatus,
|
|
888
814
|
newState?: Partial<Omit<OrchestrationRunState, 'status'>>,
|
|
889
815
|
) {
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
816
|
+
if (this.activeRun) {
|
|
817
|
+
this.activeRun.status = status;
|
|
818
|
+
Object.assign(this.activeRun, newState);
|
|
893
819
|
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
820
|
+
if (status === OrchestrationStatus.IDLE) {
|
|
821
|
+
this.activeRun = null;
|
|
822
|
+
await this.appStateService.setOrchestrationRunState(null);
|
|
823
|
+
if (this.timeoutTimer) clearTimeout(this.timeoutTimer);
|
|
898
824
|
} else {
|
|
899
|
-
|
|
825
|
+
await this.persistState();
|
|
900
826
|
}
|
|
901
|
-
|
|
902
|
-
} else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>if (status !== OrchestrationStatus.IDLE) {</span>
|
|
903
|
-
<span class="cstat-no" title="statement not covered" > this.logger.warn(
|
|
904
|
-
`Cannot set status to ${status} without an active run.`,
|
|
905
|
-
);
|
|
827
|
+
this.emitStatus();
|
|
828
|
+
} else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span><span class="missing-if-branch" title="else path not taken" >E</span>if (status !== OrchestrationStatus.IDLE) {</span>
|
|
829
|
+
<span class="cstat-no" title="statement not covered" > this.logger.warn(`Cannot set status to ${status} without an active run.`);</span>
|
|
906
830
|
}
|
|
907
831
|
}
|
|
908
832
|
|
|
909
|
-
private
|
|
910
|
-
|
|
833
|
+
private async persistState() {
|
|
834
|
+
await this.appStateService.setOrchestrationRunState(this.activeRun);
|
|
911
835
|
}
|
|
912
836
|
|
|
913
|
-
private
|
|
914
|
-
|
|
915
|
-
'orchestration_status_update',
|
|
916
|
-
this.activeRun,
|
|
917
|
-
);
|
|
837
|
+
private emitStatus() {
|
|
838
|
+
this.eventsGateway.sendToAll('orchestration_status_update', this.activeRun);
|
|
918
839
|
}
|
|
919
840
|
|
|
920
|
-
private
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
841
|
+
private log(message: string) {
|
|
842
|
+
if (!this.activeRun) return;
|
|
843
|
+
this.logger.log(`[Run ${this.activeRun.runId}] ${message}`);
|
|
844
|
+
this.activeRun.log.push(`${new Date().toISOString()} - ${message}`);
|
|
845
|
+
this.eventsGateway.sendToAll('orchestration_log', { message });
|
|
925
846
|
}
|
|
926
847
|
|
|
927
|
-
|
|
928
|
-
|
|
848
|
+
getActiveRun(): OrchestrationRunState | null {
|
|
849
|
+
return this.activeRun;
|
|
929
850
|
}
|
|
930
851
|
|
|
931
|
-
|
|
932
|
-
|
|
852
|
+
async start(dto: StartOrchestrationDto): Promise<void> {
|
|
853
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.activeRun) {
|
|
933
854
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
934
855
|
this.activeRun.scriptName === dto.scriptName &&
|
|
935
856
|
this.activeRun.status === OrchestrationStatus.STOPPED
|
|
@@ -943,31 +864,35 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
943
864
|
);
|
|
944
865
|
}
|
|
945
866
|
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
const
|
|
949
|
-
|
|
950
|
-
|
|
867
|
+
// Clone the script for a fresh run
|
|
868
|
+
await this.fsService.cloneScriptForRun(dto.scriptName);
|
|
869
|
+
const runScriptContent = await this.fsService.readRunScript(dto.scriptName);
|
|
870
|
+
const initialChunks =
|
|
871
|
+
await this.parserService.parseScript(runScriptContent);
|
|
872
|
+
const timeoutMs = await this.appStateService.getOrchestrationTimeoutMs();
|
|
951
873
|
|
|
952
|
-
|
|
874
|
+
this.activeRun = {
|
|
953
875
|
runId: randomUUID(),
|
|
954
876
|
status: OrchestrationStatus.RUNNING,
|
|
955
877
|
mode: dto.mode,
|
|
956
878
|
scriptName: dto.scriptName,
|
|
957
879
|
sessionId: dto.sessionId,
|
|
958
880
|
currentStep: 0,
|
|
959
|
-
totalSteps:
|
|
881
|
+
totalSteps: initialChunks.length,
|
|
960
882
|
waitStartTime: null,
|
|
961
883
|
waitingOnInputId: null,
|
|
962
884
|
error: null,
|
|
963
885
|
log: [],
|
|
886
|
+
timeoutMs,
|
|
964
887
|
};
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
888
|
+
await this.persistState();
|
|
889
|
+
this.log(
|
|
890
|
+
`Orchestration started in ${dto.mode} mode with ${initialChunks.length} total steps. Timeout is ${timeoutMs / 1000}s.`,
|
|
891
|
+
);
|
|
892
|
+
this.emitStatus();
|
|
968
893
|
|
|
969
894
|
// Non-blocking execution
|
|
970
|
-
|
|
895
|
+
this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>rror) => {
|
|
971
896
|
<span class="cstat-no" title="statement not covered" > this.logger.error(</span>
|
|
972
897
|
`Unhandled error in orchestration execution: ${error.message}`,
|
|
973
898
|
error.stack,
|
|
@@ -976,217 +901,184 @@ export class <span class="cstat-no" title="statement not covered" ><span class="
|
|
|
976
901
|
});
|
|
977
902
|
}
|
|
978
903
|
|
|
979
|
-
private
|
|
980
|
-
|
|
904
|
+
private async execute() {
|
|
905
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.activeRun) <span class="cstat-no" title="statement not covered" >return;</span>
|
|
981
906
|
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
907
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.activeRun.status === OrchestrationStatus.STOPPING) {
|
|
908
|
+
<span class="cstat-no" title="statement not covered" > this.log('Execution loop halted due to STOPPING state.');</span>
|
|
909
|
+
<span class="cstat-no" title="statement not covered" > this.setState(OrchestrationStatus.STOPPED);</span>
|
|
910
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
911
|
+
}
|
|
986
912
|
|
|
987
|
-
const {
|
|
988
|
-
<span class="cstat-no" title="statement not covered" > await this.parserService.findResumeState(scriptName, allCommands);</span>
|
|
989
|
-
|
|
990
|
-
<span class="cstat-no" title="statement not covered" > this.log(`Execution loop starting/resuming at command ${commandIndex}. Current task step is ${taskStepCounter}.`);</span>
|
|
991
|
-
<span class="cstat-no" title="statement not covered" > this.activeRun.currentStep = taskStepCounter;</span>
|
|
913
|
+
const { scriptName, mode, sessionId } = this.activeRun;
|
|
992
914
|
|
|
993
|
-
|
|
994
|
-
|
|
915
|
+
const runScriptContent = await this.fsService.readRunScript(scriptName);
|
|
916
|
+
const chunks = await this.parserService.parseScript(runScriptContent);
|
|
995
917
|
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
918
|
+
if (chunks.length === 0) {
|
|
919
|
+
this.log(
|
|
920
|
+
'Orchestration completed successfully: No more chunks to process.',
|
|
921
|
+
);
|
|
922
|
+
this.setState(OrchestrationStatus.COMPLETED);
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
const nextPrompt = chunks[0];
|
|
927
|
+
const session = await this.sessionsService.findOne(sessionId);
|
|
1002
928
|
|
|
1003
|
-
|
|
929
|
+
try {
|
|
930
|
+
const totalSteps = this.activeRun.totalSteps;
|
|
931
|
+
const completedSteps = totalSteps - chunks.length;
|
|
932
|
+
this.activeRun.currentStep = completedSteps + 1;
|
|
1004
933
|
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
const template = <span class="cstat-no" title="statement not covered" >await this.contextTemplatesService.findByName(</span>
|
|
1009
|
-
command.value,
|
|
1010
|
-
);
|
|
1011
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!template)</span>
|
|
1012
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`Context template "${command.value}" not found.`);</span>
|
|
1013
|
-
<span class="cstat-no" title="statement not covered" > initialContextTemplateId = template.id;</span>
|
|
1014
|
-
<span class="cstat-no" title="statement not covered" > this.log(`Initial context template set to "${command.value}".`);</span>
|
|
1015
|
-
} else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>if (command.type === 'send_and_wait') {</span>
|
|
1016
|
-
<span class="cstat-no" title="statement not covered" > this.activeRun.currentStep++;</span>
|
|
1017
|
-
<span class="cstat-no" title="statement not covered" > this.setState(OrchestrationStatus.RUNNING, {</span>
|
|
1018
|
-
currentStep: this.activeRun.currentStep,
|
|
1019
|
-
});
|
|
1020
|
-
<span class="cstat-no" title="statement not covered" > this.log(</span>
|
|
1021
|
-
`Executing step ${this.activeRun.currentStep}/${this.activeRun.totalSteps}: ${command.originalLine}`,
|
|
1022
|
-
);
|
|
934
|
+
this.setState(OrchestrationStatus.RUNNING, {
|
|
935
|
+
currentStep: this.activeRun.currentStep,
|
|
936
|
+
});
|
|
1023
937
|
|
|
1024
|
-
|
|
1025
|
-
|
|
938
|
+
this.log(
|
|
939
|
+
`Executing step ${
|
|
940
|
+
this.activeRun.currentStep
|
|
941
|
+
}/${totalSteps}: ${nextPrompt.substring(0, 100)}...`,
|
|
942
|
+
);
|
|
1026
943
|
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
<span class="cstat-no" title="statement not covered" > contextTemplateId = initialContextTemplateId;</span>
|
|
1030
|
-
<span class="cstat-no" title="statement not covered" > this.log(`Using one-time initial context template: ${contextTemplateId || 'session default'}`);</span>
|
|
1031
|
-
} else {
|
|
1032
|
-
<span class="cstat-no" title="statement not covered" > contextTemplateId = session.default_followup_context_template_id;</span>
|
|
1033
|
-
<span class="cstat-no" title="statement not covered" > this.log(`Using session's default follow-up context template.`);</span>
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
<span class="cstat-no" title="statement not covered" > await this.sessionInputsService.prepareLlmInput(sessionId, {</span>
|
|
1037
|
-
user_prompt: command.value,
|
|
1038
|
-
execution_strategy:
|
|
1039
|
-
mode === OrchestrationMode.AUTO ? 'auto_apply' : 'review_first',
|
|
1040
|
-
context_template_id: contextTemplateId,
|
|
1041
|
-
});
|
|
944
|
+
const existingInputsCount = session.sessionInputs?.length || 0;
|
|
945
|
+
const isFirstPromptInSession = existingInputsCount === 0;
|
|
1042
946
|
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
}
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
947
|
+
const context_template_id = isFirstPromptInSession
|
|
948
|
+
? session.default_initial_context_template_id
|
|
949
|
+
: session.default_followup_context_template_id;
|
|
950
|
+
|
|
951
|
+
this.log(
|
|
952
|
+
`Session has ${existingInputsCount} existing inputs. Using ${
|
|
953
|
+
isFirstPromptInSession ? 'initial' : 'follow-up'
|
|
954
|
+
} context template.`,
|
|
955
|
+
);
|
|
956
|
+
|
|
957
|
+
await this.sessionInputsService.prepareLlmInput(sessionId, {
|
|
958
|
+
user_prompt: nextPrompt,
|
|
959
|
+
execution_strategy:
|
|
960
|
+
mode === OrchestrationMode.AUTO ? 'auto_apply' : 'review_first',
|
|
961
|
+
context_template_id: context_template_id,
|
|
962
|
+
});
|
|
963
|
+
|
|
964
|
+
if (mode === OrchestrationMode.INTERACTIVE) {
|
|
965
|
+
this.setState(OrchestrationStatus.PAUSED_INTERACTIVE);
|
|
1052
966
|
}
|
|
967
|
+
// In both modes, we wait for onPromptPrepared to be called, which will change the state.
|
|
968
|
+
} catch (error) {
|
|
969
|
+
<span class="cstat-no" title="statement not covered" > await this.fail(error.message);</span>
|
|
1053
970
|
}
|
|
1054
|
-
<span class="cstat-no" title="statement not covered" > this.log('Orchestration completed successfully.');</span>
|
|
1055
|
-
<span class="cstat-no" title="statement not covered" > this.setState(OrchestrationStatus.COMPLETED);</span>
|
|
1056
971
|
}
|
|
1057
972
|
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
973
|
+
onPromptPrepared(inputId: string) {
|
|
974
|
+
if (this.activeRun?.status === OrchestrationStatus.RUNNING) {
|
|
975
|
+
this.log(
|
|
1061
976
|
`[onPromptPrepared] Prompt prepared for input ${inputId}. Awaiting LLM response.`,
|
|
1062
977
|
);
|
|
1063
|
-
|
|
978
|
+
this.setState(OrchestrationStatus.WAITING_FOR_LLM_RESPONSE, {
|
|
1064
979
|
waitingOnInputId: inputId,
|
|
1065
980
|
waitStartTime: Date.now(),
|
|
1066
981
|
});
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
}, this.
|
|
982
|
+
this.timeoutTimer = setTimeout(() => {
|
|
983
|
+
this.fail('Orchestration timed out waiting for LLM response.');
|
|
984
|
+
}, this.activeRun.timeoutMs);
|
|
1070
985
|
} else {
|
|
1071
|
-
|
|
986
|
+
this.logger.warn(
|
|
1072
987
|
`[onPromptPrepared] Called but active run status is not 'RUNNING'. Current status: ${this.activeRun?.status}`,
|
|
1073
988
|
);
|
|
1074
989
|
}
|
|
1075
990
|
}
|
|
1076
991
|
|
|
1077
|
-
|
|
1078
|
-
|
|
992
|
+
async stop(): Promise<void> {
|
|
993
|
+
if (
|
|
1079
994
|
this.activeRun &&
|
|
1080
995
|
(this.activeRun.status === OrchestrationStatus.RUNNING ||
|
|
1081
996
|
this.activeRun.status === OrchestrationStatus.WAITING_FOR_LLM_RESPONSE)
|
|
1082
997
|
) {
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
998
|
+
this.log('Graceful stop requested.');
|
|
999
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.timeoutTimer) <span class="cstat-no" title="statement not covered" >clearTimeout(this.timeoutTimer);</span>
|
|
1000
|
+
this.setState(OrchestrationStatus.STOPPING);
|
|
1086
1001
|
}
|
|
1087
1002
|
}
|
|
1088
1003
|
|
|
1089
|
-
|
|
1090
|
-
|
|
1004
|
+
async proceed(): Promise<void> {
|
|
1005
|
+
if (
|
|
1091
1006
|
this.activeRun &&
|
|
1092
1007
|
this.activeRun.status === OrchestrationStatus.PAUSED_INTERACTIVE
|
|
1093
1008
|
) {
|
|
1094
|
-
|
|
1095
|
-
|
|
1009
|
+
this.log('Proceeding to next step...');
|
|
1010
|
+
await this.fsService.consumeNextChunk(this.activeRun.scriptName);
|
|
1011
|
+
this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>) => <span class="cstat-no" title="statement not covered" >this.fail(e.message))</span>;
|
|
1096
1012
|
}
|
|
1097
1013
|
}
|
|
1098
1014
|
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1015
|
+
async emergencyStop(): Promise<void> {
|
|
1016
|
+
if (this.activeRun) {
|
|
1017
|
+
this.log('Emergency stop triggered!');
|
|
1018
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.timeoutTimer) <span class="cstat-no" title="statement not covered" >clearTimeout(this.timeoutTimer);</span>
|
|
1019
|
+
this.setState(OrchestrationStatus.FAILED, {
|
|
1104
1020
|
error: 'Forcefully stopped by user.',
|
|
1105
1021
|
});
|
|
1106
1022
|
}
|
|
1107
1023
|
}
|
|
1108
1024
|
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1025
|
+
async clearActiveRun(): Promise<void> {
|
|
1026
|
+
if (this.activeRun) {
|
|
1027
|
+
this.log('Clearing active run state.');
|
|
1028
|
+
this.setState(OrchestrationStatus.IDLE);
|
|
1113
1029
|
}
|
|
1114
1030
|
}
|
|
1115
1031
|
|
|
1116
|
-
|
|
1117
|
-
|
|
1032
|
+
async resumeFromInput(inputId: string): Promise<void> {
|
|
1033
|
+
this.log(
|
|
1118
1034
|
`[resumeFromInput] Attempting to resume for completed input ID: ${inputId}`,
|
|
1119
1035
|
);
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1036
|
+
if (!this.activeRun) {
|
|
1037
|
+
this.logger.warn('[resumeFromInput] Cannot resume, no active run.');
|
|
1038
|
+
return;
|
|
1123
1039
|
}
|
|
1124
|
-
|
|
1040
|
+
if (
|
|
1125
1041
|
this.activeRun.status !== OrchestrationStatus.WAITING_FOR_LLM_RESPONSE
|
|
1126
1042
|
) {
|
|
1127
|
-
|
|
1043
|
+
this.logger.warn(
|
|
1128
1044
|
`[resumeFromInput] Cannot resume, status is '${this.activeRun.status}', not 'waiting_for_llm_response'.`,
|
|
1129
1045
|
);
|
|
1130
|
-
|
|
1046
|
+
return;
|
|
1131
1047
|
}
|
|
1132
|
-
|
|
1133
|
-
|
|
1048
|
+
if (this.activeRun.waitingOnInputId !== inputId) {
|
|
1049
|
+
this.logger.warn(
|
|
1134
1050
|
`[resumeFromInput] Mismatched input ID. Expected '${this.activeRun.waitingOnInputId}', but got '${inputId}'.`,
|
|
1135
1051
|
);
|
|
1136
|
-
|
|
1052
|
+
return;
|
|
1137
1053
|
}
|
|
1138
1054
|
|
|
1139
|
-
|
|
1140
|
-
|
|
1055
|
+
if (this.timeoutTimer) clearTimeout(this.timeoutTimer);
|
|
1056
|
+
this.log(
|
|
1141
1057
|
`[resumeFromInput] Resuming orchestration after receiving response for ${inputId}`,
|
|
1142
1058
|
);
|
|
1143
1059
|
|
|
1144
|
-
|
|
1145
|
-
this.activeRun.scriptName,
|
|
1146
|
-
);
|
|
1147
|
-
const allCommands = <span class="cstat-no" title="statement not covered" >await this.parserService.parseScript(scriptContent);</span>
|
|
1148
|
-
|
|
1149
|
-
const commandToUpdate = <span class="cstat-no" title="statement not covered" >allCommands</span>
|
|
1150
|
-
.filter(<span class="fstat-no" title="function not covered" >(c</span>md) => <span class="cstat-no" title="statement not covered" >cmd.type === 'send_and_wait')</span>
|
|
1151
|
-
[this.activeRun.currentStep - 1];
|
|
1152
|
-
|
|
1153
|
-
<span class="cstat-no" title="statement not covered" > if (commandToUpdate) {</span>
|
|
1154
|
-
<span class="cstat-no" title="statement not covered" > this.log(</span>
|
|
1155
|
-
`[resumeFromInput] Updating task status for: ${commandToUpdate.value.substring(
|
|
1156
|
-
0,
|
|
1157
|
-
50,
|
|
1158
|
-
)}...`,
|
|
1159
|
-
);
|
|
1160
|
-
<span class="cstat-no" title="statement not covered" > await this.fsService.updateTaskStatus(</span>
|
|
1161
|
-
this.activeRun.scriptName,
|
|
1162
|
-
commandToUpdate.value,
|
|
1163
|
-
true,
|
|
1164
|
-
);
|
|
1165
|
-
} else {
|
|
1166
|
-
<span class="cstat-no" title="statement not covered" > this.log(</span>
|
|
1167
|
-
`[resumeFromInput] Could not find command to update task status for step ${this.activeRun.currentStep}.`,
|
|
1168
|
-
);
|
|
1169
|
-
}
|
|
1060
|
+
await this.fsService.consumeNextChunk(this.activeRun.scriptName);
|
|
1170
1061
|
|
|
1171
|
-
|
|
1172
|
-
|
|
1062
|
+
this.log(`[resumeFromInput] Re-triggering execution loop.`);
|
|
1063
|
+
this.execute().catch(<span class="fstat-no" title="function not covered" >(e</span>) => <span class="cstat-no" title="statement not covered" >this.fail(e.message))</span>;
|
|
1173
1064
|
}
|
|
1174
1065
|
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1066
|
+
async fail(error: string): Promise<void> {
|
|
1067
|
+
if (this.activeRun) {
|
|
1068
|
+
this.logger.error(`Orchestration failed: ${error}`);
|
|
1069
|
+
if (this.timeoutTimer) clearTimeout(this.timeoutTimer);
|
|
1070
|
+
this.setState(OrchestrationStatus.FAILED, { error });
|
|
1180
1071
|
}
|
|
1181
1072
|
}
|
|
1182
|
-
}
|
|
1073
|
+
}
|
|
1074
|
+
</pre></td></tr></table></pre>
|
|
1183
1075
|
|
|
1184
1076
|
<div class='push'></div><!-- for sticky footer -->
|
|
1185
1077
|
</div><!-- /wrapper -->
|
|
1186
1078
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1187
1079
|
Code coverage generated by
|
|
1188
1080
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1189
|
-
at 2025-
|
|
1081
|
+
at 2025-09-12T19:21:55.945Z
|
|
1190
1082
|
</div>
|
|
1191
1083
|
<script src="../../prettify.js"></script>
|
|
1192
1084
|
<script>
|