@northflare/runner 0.0.11 → 0.0.13

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.
Files changed (81) hide show
  1. package/dist/utils/config.d.ts +1 -0
  2. package/dist/utils/config.d.ts.map +1 -1
  3. package/dist/utils/config.js +13 -2
  4. package/dist/utils/config.js.map +1 -1
  5. package/package.json +1 -2
  6. package/coverage/base.css +0 -224
  7. package/coverage/block-navigation.js +0 -87
  8. package/coverage/coverage-final.json +0 -12
  9. package/coverage/favicon.png +0 -0
  10. package/coverage/index.html +0 -176
  11. package/coverage/lib/index.html +0 -116
  12. package/coverage/lib/preload-script.js.html +0 -964
  13. package/coverage/prettify.css +0 -1
  14. package/coverage/prettify.js +0 -2
  15. package/coverage/sort-arrow-sprite.png +0 -0
  16. package/coverage/sorter.js +0 -196
  17. package/coverage/src/collections/index.html +0 -116
  18. package/coverage/src/collections/runner-messages.ts.html +0 -312
  19. package/coverage/src/components/claude-manager.ts.html +0 -1290
  20. package/coverage/src/components/index.html +0 -146
  21. package/coverage/src/components/message-handler.ts.html +0 -730
  22. package/coverage/src/components/repository-manager.ts.html +0 -841
  23. package/coverage/src/index.html +0 -131
  24. package/coverage/src/index.ts.html +0 -448
  25. package/coverage/src/runner.ts.html +0 -1239
  26. package/coverage/src/utils/config.ts.html +0 -780
  27. package/coverage/src/utils/console.ts.html +0 -121
  28. package/coverage/src/utils/index.html +0 -161
  29. package/coverage/src/utils/logger.ts.html +0 -475
  30. package/coverage/src/utils/status-line.ts.html +0 -445
  31. package/exceptions.log +0 -24
  32. package/lib/codex-sdk/src/codex.ts +0 -38
  33. package/lib/codex-sdk/src/codexOptions.ts +0 -10
  34. package/lib/codex-sdk/src/events.ts +0 -80
  35. package/lib/codex-sdk/src/exec.ts +0 -336
  36. package/lib/codex-sdk/src/index.ts +0 -39
  37. package/lib/codex-sdk/src/items.ts +0 -127
  38. package/lib/codex-sdk/src/outputSchemaFile.ts +0 -40
  39. package/lib/codex-sdk/src/thread.ts +0 -155
  40. package/lib/codex-sdk/src/threadOptions.ts +0 -18
  41. package/lib/codex-sdk/src/turnOptions.ts +0 -6
  42. package/lib/codex-sdk/tests/abort.test.ts +0 -165
  43. package/lib/codex-sdk/tests/codexExecSpy.ts +0 -37
  44. package/lib/codex-sdk/tests/responsesProxy.ts +0 -225
  45. package/lib/codex-sdk/tests/run.test.ts +0 -687
  46. package/lib/codex-sdk/tests/runStreamed.test.ts +0 -211
  47. package/lib/codex-sdk/tsconfig.json +0 -24
  48. package/rejections.log +0 -68
  49. package/runner.log +0 -488
  50. package/src/components/claude-sdk-manager.ts +0 -1425
  51. package/src/components/codex-sdk-manager.ts +0 -1358
  52. package/src/components/enhanced-repository-manager.ts +0 -823
  53. package/src/components/message-handler-sse.ts +0 -1097
  54. package/src/components/repository-manager.ts +0 -337
  55. package/src/index.ts +0 -168
  56. package/src/runner-sse.ts +0 -917
  57. package/src/services/RunnerAPIClient.ts +0 -175
  58. package/src/services/SSEClient.ts +0 -258
  59. package/src/types/claude.ts +0 -66
  60. package/src/types/computer-name.d.ts +0 -4
  61. package/src/types/index.ts +0 -64
  62. package/src/types/messages.ts +0 -39
  63. package/src/types/runner-interface.ts +0 -36
  64. package/src/utils/StateManager.ts +0 -187
  65. package/src/utils/config.ts +0 -316
  66. package/src/utils/console.ts +0 -15
  67. package/src/utils/debug.ts +0 -18
  68. package/src/utils/expand-env.ts +0 -22
  69. package/src/utils/logger.ts +0 -134
  70. package/src/utils/model.ts +0 -29
  71. package/src/utils/status-line.ts +0 -122
  72. package/src/utils/tool-response-sanitizer.ts +0 -160
  73. package/test-debug.sh +0 -26
  74. package/tests/retry-strategies.test.ts +0 -410
  75. package/tests/sdk-integration.test.ts +0 -329
  76. package/tests/sdk-streaming.test.ts +0 -1180
  77. package/tests/setup.ts +0 -5
  78. package/tests/test-claude-manager.ts +0 -120
  79. package/tests/tool-response-sanitizer.test.ts +0 -63
  80. package/tsconfig.json +0 -36
  81. package/vitest.config.ts +0 -27
@@ -1,131 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> src</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">50.69% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>257/507</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">75% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>36/48</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">57.14% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>12/21</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">50.69% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>257/507</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <div class="pad1">
66
- <table class="coverage-summary">
67
- <thead>
68
- <tr>
69
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
70
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
71
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
72
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
73
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
74
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
75
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
76
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
77
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
78
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
79
- </tr>
80
- </thead>
81
- <tbody><tr>
82
- <td class="file low" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
83
- <td data-value="0" class="pic low">
84
- <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
85
- </td>
86
- <td data-value="0" class="pct low">0%</td>
87
- <td data-value="122" class="abs low">0/122</td>
88
- <td data-value="0" class="pct low">0%</td>
89
- <td data-value="1" class="abs low">0/1</td>
90
- <td data-value="0" class="pct low">0%</td>
91
- <td data-value="1" class="abs low">0/1</td>
92
- <td data-value="0" class="pct low">0%</td>
93
- <td data-value="122" class="abs low">0/122</td>
94
- </tr>
95
-
96
- <tr>
97
- <td class="file medium" data-value="runner.ts"><a href="runner.ts.html">runner.ts</a></td>
98
- <td data-value="66.75" class="pic medium">
99
- <div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
100
- </td>
101
- <td data-value="66.75" class="pct medium">66.75%</td>
102
- <td data-value="385" class="abs medium">257/385</td>
103
- <td data-value="76.59" class="pct medium">76.59%</td>
104
- <td data-value="47" class="abs medium">36/47</td>
105
- <td data-value="60" class="pct medium">60%</td>
106
- <td data-value="20" class="abs medium">12/20</td>
107
- <td data-value="66.75" class="pct medium">66.75%</td>
108
- <td data-value="385" class="abs medium">257/385</td>
109
- </tr>
110
-
111
- </tbody>
112
- </table>
113
- </div>
114
- <div class='push'></div><!-- for sticky footer -->
115
- </div><!-- /wrapper -->
116
- <div class='footer quiet pad2 space-top1 center small'>
117
- Code coverage generated by
118
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2025-08-14T21:15:54.473Z
120
- </div>
121
- <script src="../prettify.js"></script>
122
- <script>
123
- window.onload = function () {
124
- prettyPrint();
125
- };
126
- </script>
127
- <script src="../sorter.js"></script>
128
- <script src="../block-navigation.js"></script>
129
- </body>
130
- </html>
131
-
@@ -1,448 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/index.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../prettify.css" />
9
- <link rel="stylesheet" href="../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> index.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/122</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/122</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
- <span class="cline-any cline-no">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
191
- <span class="cline-any cline-no">&nbsp;</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
195
- <span class="cline-any cline-no">&nbsp;</span>
196
- <span class="cline-any cline-no">&nbsp;</span>
197
- <span class="cline-any cline-no">&nbsp;</span>
198
- <span class="cline-any cline-no">&nbsp;</span>
199
- <span class="cline-any cline-no">&nbsp;</span>
200
- <span class="cline-any cline-no">&nbsp;</span>
201
- <span class="cline-any cline-no">&nbsp;</span>
202
- <span class="cline-any cline-no">&nbsp;</span>
203
- <span class="cline-any cline-no">&nbsp;</span>
204
- <span class="cline-any cline-no">&nbsp;</span>
205
- <span class="cline-any cline-no">&nbsp;</span>
206
- <span class="cline-any cline-no">&nbsp;</span>
207
- <span class="cline-any cline-no">&nbsp;</span>
208
- <span class="cline-any cline-no">&nbsp;</span>
209
- <span class="cline-any cline-no">&nbsp;</span>
210
- <span class="cline-any cline-no">&nbsp;</span>
211
- <span class="cline-any cline-no">&nbsp;</span>
212
- <span class="cline-any cline-no">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
214
- <span class="cline-any cline-no">&nbsp;</span>
215
- <span class="cline-any cline-no">&nbsp;</span>
216
- <span class="cline-any cline-no">&nbsp;</span>
217
- <span class="cline-any cline-no">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
220
- <span class="cline-any cline-no">&nbsp;</span>
221
- <span class="cline-any cline-no">&nbsp;</span>
222
- <span class="cline-any cline-no">&nbsp;</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-no">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-no">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
231
- <span class="cline-any cline-no">&nbsp;</span>
232
- <span class="cline-any cline-no">&nbsp;</span>
233
- <span class="cline-any cline-no">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
235
- <span class="cline-any cline-no">&nbsp;</span>
236
- <span class="cline-any cline-no">&nbsp;</span>
237
- <span class="cline-any cline-no">&nbsp;</span>
238
- <span class="cline-any cline-no">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
241
- <span class="cline-any cline-no">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
- <span class="cline-any cline-no">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-no">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-no">&nbsp;</span>
260
- <span class="cline-any cline-no">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-no">&nbsp;</span>
264
- <span class="cline-any cline-no">&nbsp;</span>
265
- <span class="cline-any cline-no">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-no">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
269
- <span class="cline-any cline-no">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
271
- <span class="cline-any cline-no">&nbsp;</span>
272
- <span class="cline-any cline-no">&nbsp;</span>
273
- <span class="cline-any cline-no">&nbsp;</span>
274
- <span class="cline-any cline-no">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
276
- <span class="cline-any cline-no">&nbsp;</span>
277
- <span class="cline-any cline-no">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
279
- <span class="cline-any cline-no">&nbsp;</span>
280
- <span class="cline-any cline-no">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
283
- <span class="cline-any cline-no">&nbsp;</span>
284
- <span class="cline-any cline-no">&nbsp;</span>
285
- <span class="cline-any cline-no">&nbsp;</span>
286
- <span class="cline-any cline-no">&nbsp;</span>
287
- <span class="cline-any cline-no">&nbsp;</span>
288
- <span class="cline-any cline-no">&nbsp;</span>
289
- <span class="cline-any cline-no">&nbsp;</span>
290
- <span class="cline-any cline-no">&nbsp;</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-no">&nbsp;</span>
295
- <span class="cline-any cline-no">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
- <span class="cline-any cline-no">&nbsp;</span>
298
- <span class="cline-any cline-no">&nbsp;</span>
299
- <span class="cline-any cline-no">&nbsp;</span>
300
- <span class="cline-any cline-no">&nbsp;</span>
301
- <span class="cline-any cline-no">&nbsp;</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-no">&nbsp;</span>
304
- <span class="cline-any cline-no">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
307
- <span class="cline-any cline-no">&nbsp;</span>
308
- <span class="cline-any cline-no">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >/**</span></span></span>
309
- <span class="cstat-no" title="statement not covered" > * Main entry point for the Claudette Runner App</span>
310
- <span class="cstat-no" title="statement not covered" > */</span>
311
- <span class="cstat-no" title="statement not covered" ></span>
312
- <span class="cstat-no" title="statement not covered" >import { RunnerApp } from "./runner";</span>
313
- <span class="cstat-no" title="statement not covered" >import { ConfigManager } from "./utils/config";</span>
314
- <span class="cstat-no" title="statement not covered" >import { logger, configureFileLogging } from "./utils/logger";</span>
315
- <span class="cstat-no" title="statement not covered" >import path from "path";</span>
316
- <span class="cstat-no" title="statement not covered" >import fs from "fs/promises";</span>
317
- <span class="cstat-no" title="statement not covered" ></span>
318
- <span class="cstat-no" title="statement not covered" >let runner: RunnerApp | null = null;</span>
319
- <span class="cstat-no" title="statement not covered" ></span>
320
- <span class="cstat-no" title="statement not covered" >async function main() {</span>
321
- <span class="cstat-no" title="statement not covered" > try {</span>
322
- <span class="cstat-no" title="statement not covered" > logger.info("Starting Claudette Runner...");</span>
323
- <span class="cstat-no" title="statement not covered" > </span>
324
- <span class="cstat-no" title="statement not covered" > // Load configuration (args already parsed by CLI)</span>
325
- <span class="cstat-no" title="statement not covered" > const configPath = process.argv[2]; // This is set by the CLI if --config was provided</span>
326
- <span class="cstat-no" title="statement not covered" > const config = await ConfigManager.loadConfig(configPath);</span>
327
- <span class="cstat-no" title="statement not covered" > </span>
328
- <span class="cstat-no" title="statement not covered" > // Set up file logging</span>
329
- <span class="cstat-no" title="statement not covered" > const logDir = path.join(config.dataDir, "logs");</span>
330
- <span class="cstat-no" title="statement not covered" > await fs.mkdir(logDir, { recursive: true });</span>
331
- <span class="cstat-no" title="statement not covered" > configureFileLogging(logDir);</span>
332
- <span class="cstat-no" title="statement not covered" > </span>
333
- <span class="cstat-no" title="statement not covered" > logger.info("Configuration loaded", {</span>
334
- <span class="cstat-no" title="statement not covered" > electricUrl: config.electricUrl,</span>
335
- <span class="cstat-no" title="statement not covered" > orchestratorUrl: config.orchestratorUrl,</span>
336
- <span class="cstat-no" title="statement not covered" > retryStrategy: config.retryStrategy,</span>
337
- <span class="cstat-no" title="statement not covered" > retryIntervalSecs: config.retryIntervalSecs,</span>
338
- <span class="cstat-no" title="statement not covered" > retryDurationSecs: config.retryDurationSecs,</span>
339
- <span class="cstat-no" title="statement not covered" > });</span>
340
- <span class="cstat-no" title="statement not covered" > </span>
341
- <span class="cstat-no" title="statement not covered" > // Create and start runner</span>
342
- <span class="cstat-no" title="statement not covered" > runner = new RunnerApp(config);</span>
343
- <span class="cstat-no" title="statement not covered" > await runner.start();</span>
344
- <span class="cstat-no" title="statement not covered" > </span>
345
- <span class="cstat-no" title="statement not covered" > // Set up graceful shutdown handlers</span>
346
- <span class="cstat-no" title="statement not covered" > setupShutdownHandlers();</span>
347
- <span class="cstat-no" title="statement not covered" > </span>
348
- <span class="cstat-no" title="statement not covered" > logger.info("Claudette Runner is running", { </span>
349
- <span class="cstat-no" title="statement not covered" > runnerId: runner.getRunnerId() || "pending registration" </span>
350
- <span class="cstat-no" title="statement not covered" > });</span>
351
- <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
352
- <span class="cstat-no" title="statement not covered" > logger.error("Failed to start runner:", error);</span>
353
- <span class="cstat-no" title="statement not covered" > process.exit(1);</span>
354
- <span class="cstat-no" title="statement not covered" > }</span>
355
- <span class="cstat-no" title="statement not covered" >}</span>
356
- <span class="cstat-no" title="statement not covered" ></span>
357
- <span class="cstat-no" title="statement not covered" >function setupShutdownHandlers() {</span>
358
- <span class="cstat-no" title="statement not covered" > let isShuttingDown = false;</span>
359
- <span class="cstat-no" title="statement not covered" > </span>
360
- <span class="cstat-no" title="statement not covered" > // Handle various shutdown signals</span>
361
- <span class="cstat-no" title="statement not covered" > const signals: NodeJS.Signals[] = ["SIGTERM", "SIGINT", "SIGHUP"];</span>
362
- <span class="cstat-no" title="statement not covered" > </span>
363
- <span class="cstat-no" title="statement not covered" > for (const signal of signals) {</span>
364
- <span class="cstat-no" title="statement not covered" > process.on(signal, async () =&gt; {</span>
365
- <span class="cstat-no" title="statement not covered" > if (isShuttingDown) {</span>
366
- <span class="cstat-no" title="statement not covered" > logger.info(`Already shutting down, ignoring ${signal}`);</span>
367
- <span class="cstat-no" title="statement not covered" > return;</span>
368
- <span class="cstat-no" title="statement not covered" > }</span>
369
- <span class="cstat-no" title="statement not covered" > isShuttingDown = true;</span>
370
- <span class="cstat-no" title="statement not covered" > logger.info(`Received ${signal}, shutting down gracefully...`);</span>
371
- <span class="cstat-no" title="statement not covered" > await shutdown();</span>
372
- <span class="cstat-no" title="statement not covered" > });</span>
373
- <span class="cstat-no" title="statement not covered" > }</span>
374
- <span class="cstat-no" title="statement not covered" ></span>
375
- <span class="cstat-no" title="statement not covered" > // Handle uncaught exceptions</span>
376
- <span class="cstat-no" title="statement not covered" > process.on("uncaughtException", async (error) =&gt; {</span>
377
- <span class="cstat-no" title="statement not covered" > logger.error("Uncaught exception:", error);</span>
378
- <span class="cstat-no" title="statement not covered" > if (!isShuttingDown) {</span>
379
- <span class="cstat-no" title="statement not covered" > isShuttingDown = true;</span>
380
- <span class="cstat-no" title="statement not covered" > await shutdown(1);</span>
381
- <span class="cstat-no" title="statement not covered" > }</span>
382
- <span class="cstat-no" title="statement not covered" > });</span>
383
- <span class="cstat-no" title="statement not covered" ></span>
384
- <span class="cstat-no" title="statement not covered" > // Handle unhandled promise rejections</span>
385
- <span class="cstat-no" title="statement not covered" > process.on("unhandledRejection", async (reason, promise) =&gt; {</span>
386
- <span class="cstat-no" title="statement not covered" > logger.error("Unhandled rejection", { promise, reason });</span>
387
- <span class="cstat-no" title="statement not covered" > if (!isShuttingDown) {</span>
388
- <span class="cstat-no" title="statement not covered" > isShuttingDown = true;</span>
389
- <span class="cstat-no" title="statement not covered" > await shutdown(1);</span>
390
- <span class="cstat-no" title="statement not covered" > }</span>
391
- <span class="cstat-no" title="statement not covered" > });</span>
392
- <span class="cstat-no" title="statement not covered" ></span>
393
- <span class="cstat-no" title="statement not covered" > // Handle process warnings</span>
394
- <span class="cstat-no" title="statement not covered" > process.on("warning", (warning) =&gt; {</span>
395
- <span class="cstat-no" title="statement not covered" > logger.warn("Process warning", {</span>
396
- <span class="cstat-no" title="statement not covered" > name: warning.name,</span>
397
- <span class="cstat-no" title="statement not covered" > message: warning.message,</span>
398
- <span class="cstat-no" title="statement not covered" > stack: warning.stack,</span>
399
- <span class="cstat-no" title="statement not covered" > });</span>
400
- <span class="cstat-no" title="statement not covered" > });</span>
401
- <span class="cstat-no" title="statement not covered" >}</span>
402
- <span class="cstat-no" title="statement not covered" ></span>
403
- <span class="cstat-no" title="statement not covered" >async function shutdown(exitCode: number = 0) {</span>
404
- <span class="cstat-no" title="statement not covered" > if (runner) {</span>
405
- <span class="cstat-no" title="statement not covered" > try {</span>
406
- <span class="cstat-no" title="statement not covered" > await runner.stop();</span>
407
- <span class="cstat-no" title="statement not covered" > logger.info("Runner stopped successfully");</span>
408
- <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
409
- <span class="cstat-no" title="statement not covered" > logger.error("Error during shutdown:", error);</span>
410
- <span class="cstat-no" title="statement not covered" > exitCode = 1;</span>
411
- <span class="cstat-no" title="statement not covered" > }</span>
412
- <span class="cstat-no" title="statement not covered" > }</span>
413
- <span class="cstat-no" title="statement not covered" > </span>
414
- <span class="cstat-no" title="statement not covered" > process.exit(exitCode);</span>
415
- <span class="cstat-no" title="statement not covered" >}</span>
416
- <span class="cstat-no" title="statement not covered" ></span>
417
- <span class="cstat-no" title="statement not covered" >// Start the runner if this is the main module</span>
418
- <span class="cstat-no" title="statement not covered" >if (require.main === module) {</span>
419
- <span class="cstat-no" title="statement not covered" > main().catch((error) =&gt; {</span>
420
- <span class="cstat-no" title="statement not covered" > logger.error("Fatal error:", error);</span>
421
- <span class="cstat-no" title="statement not covered" > process.exit(1);</span>
422
- <span class="cstat-no" title="statement not covered" > });</span>
423
- <span class="cstat-no" title="statement not covered" >}</span>
424
- <span class="cstat-no" title="statement not covered" ></span>
425
- <span class="cstat-no" title="statement not covered" >// Export for programmatic usage</span>
426
- <span class="cstat-no" title="statement not covered" >export { RunnerApp } from "./runner";</span>
427
- <span class="cstat-no" title="statement not covered" >export { ConfigManager } from "./utils/config";</span>
428
- <span class="cstat-no" title="statement not covered" >export * from "./types";</span>
429
- <span class="cstat-no" title="statement not covered" >export { main };</span></pre></td></tr></table></pre>
430
-
431
- <div class='push'></div><!-- for sticky footer -->
432
- </div><!-- /wrapper -->
433
- <div class='footer quiet pad2 space-top1 center small'>
434
- Code coverage generated by
435
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
436
- at 2025-08-14T21:15:54.473Z
437
- </div>
438
- <script src="../prettify.js"></script>
439
- <script>
440
- window.onload = function () {
441
- prettyPrint();
442
- };
443
- </script>
444
- <script src="../sorter.js"></script>
445
- <script src="../block-navigation.js"></script>
446
- </body>
447
- </html>
448
-