@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.
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +13 -2
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -2
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -12
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -176
- package/coverage/lib/index.html +0 -116
- package/coverage/lib/preload-script.js.html +0 -964
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/src/collections/index.html +0 -116
- package/coverage/src/collections/runner-messages.ts.html +0 -312
- package/coverage/src/components/claude-manager.ts.html +0 -1290
- package/coverage/src/components/index.html +0 -146
- package/coverage/src/components/message-handler.ts.html +0 -730
- package/coverage/src/components/repository-manager.ts.html +0 -841
- package/coverage/src/index.html +0 -131
- package/coverage/src/index.ts.html +0 -448
- package/coverage/src/runner.ts.html +0 -1239
- package/coverage/src/utils/config.ts.html +0 -780
- package/coverage/src/utils/console.ts.html +0 -121
- package/coverage/src/utils/index.html +0 -161
- package/coverage/src/utils/logger.ts.html +0 -475
- package/coverage/src/utils/status-line.ts.html +0 -445
- package/exceptions.log +0 -24
- package/lib/codex-sdk/src/codex.ts +0 -38
- package/lib/codex-sdk/src/codexOptions.ts +0 -10
- package/lib/codex-sdk/src/events.ts +0 -80
- package/lib/codex-sdk/src/exec.ts +0 -336
- package/lib/codex-sdk/src/index.ts +0 -39
- package/lib/codex-sdk/src/items.ts +0 -127
- package/lib/codex-sdk/src/outputSchemaFile.ts +0 -40
- package/lib/codex-sdk/src/thread.ts +0 -155
- package/lib/codex-sdk/src/threadOptions.ts +0 -18
- package/lib/codex-sdk/src/turnOptions.ts +0 -6
- package/lib/codex-sdk/tests/abort.test.ts +0 -165
- package/lib/codex-sdk/tests/codexExecSpy.ts +0 -37
- package/lib/codex-sdk/tests/responsesProxy.ts +0 -225
- package/lib/codex-sdk/tests/run.test.ts +0 -687
- package/lib/codex-sdk/tests/runStreamed.test.ts +0 -211
- package/lib/codex-sdk/tsconfig.json +0 -24
- package/rejections.log +0 -68
- package/runner.log +0 -488
- package/src/components/claude-sdk-manager.ts +0 -1425
- package/src/components/codex-sdk-manager.ts +0 -1358
- package/src/components/enhanced-repository-manager.ts +0 -823
- package/src/components/message-handler-sse.ts +0 -1097
- package/src/components/repository-manager.ts +0 -337
- package/src/index.ts +0 -168
- package/src/runner-sse.ts +0 -917
- package/src/services/RunnerAPIClient.ts +0 -175
- package/src/services/SSEClient.ts +0 -258
- package/src/types/claude.ts +0 -66
- package/src/types/computer-name.d.ts +0 -4
- package/src/types/index.ts +0 -64
- package/src/types/messages.ts +0 -39
- package/src/types/runner-interface.ts +0 -36
- package/src/utils/StateManager.ts +0 -187
- package/src/utils/config.ts +0 -316
- package/src/utils/console.ts +0 -15
- package/src/utils/debug.ts +0 -18
- package/src/utils/expand-env.ts +0 -22
- package/src/utils/logger.ts +0 -134
- package/src/utils/model.ts +0 -29
- package/src/utils/status-line.ts +0 -122
- package/src/utils/tool-response-sanitizer.ts +0 -160
- package/test-debug.sh +0 -26
- package/tests/retry-strategies.test.ts +0 -410
- package/tests/sdk-integration.test.ts +0 -329
- package/tests/sdk-streaming.test.ts +0 -1180
- package/tests/setup.ts +0 -5
- package/tests/test-claude-manager.ts +0 -120
- package/tests/tool-response-sanitizer.test.ts +0 -63
- package/tsconfig.json +0 -36
- package/vitest.config.ts +0 -27
|
@@ -1,780 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for src/utils/config.ts</title>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
7
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
8
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
9
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
10
|
-
<style type="text/css">
|
|
11
|
-
.coverage-summary .sorter {
|
|
12
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
13
|
-
}
|
|
14
|
-
</style>
|
|
15
|
-
</head>
|
|
16
|
-
|
|
17
|
-
<body>
|
|
18
|
-
<div class="wrapper">
|
|
19
|
-
<div class="pad1">
|
|
20
|
-
<h1>
|
|
21
|
-
<a href="../../index.html">All files</a> /
|
|
22
|
-
<a href="index.html">src/utils</a> config.ts
|
|
23
|
-
</h1>
|
|
24
|
-
<div class="clearfix">
|
|
25
|
-
<div class="fl pad1y space-right2">
|
|
26
|
-
<span class="strong">0% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class="fraction">0/232</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div class="fl pad1y space-right2">
|
|
32
|
-
<span class="strong">0% </span>
|
|
33
|
-
<span class="quiet">Branches</span>
|
|
34
|
-
<span class="fraction">0/1</span>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div class="fl pad1y space-right2">
|
|
38
|
-
<span class="strong">0% </span>
|
|
39
|
-
<span class="quiet">Functions</span>
|
|
40
|
-
<span class="fraction">0/1</span>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div class="fl pad1y space-right2">
|
|
44
|
-
<span class="strong">0% </span>
|
|
45
|
-
<span class="quiet">Lines</span>
|
|
46
|
-
<span class="fraction">0/232</span>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
<p class="quiet">
|
|
50
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
|
|
51
|
-
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
52
|
-
</p>
|
|
53
|
-
<template id="filterTemplate">
|
|
54
|
-
<div class="quiet">
|
|
55
|
-
Filter:
|
|
56
|
-
<input type="search" id="fileSearch" />
|
|
57
|
-
</div>
|
|
58
|
-
</template>
|
|
59
|
-
</div>
|
|
60
|
-
<div class="status-line low"></div>
|
|
61
|
-
<pre><table class="coverage">
|
|
62
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
63
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
64
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
65
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
66
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
67
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
68
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
69
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
70
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
71
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
72
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
73
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
74
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
75
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
76
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
77
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
78
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
79
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
80
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
81
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
82
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
83
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
84
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
85
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
86
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
87
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
88
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
89
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
90
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
91
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
92
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
93
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
94
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
95
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
96
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
97
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
98
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
99
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
100
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
101
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
102
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
103
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
104
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
105
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
106
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
107
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
108
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
109
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
110
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
111
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
112
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
113
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
114
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
115
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
116
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
117
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
118
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
119
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
120
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
121
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
122
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
123
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
124
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
125
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
126
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
127
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
128
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
129
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
130
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
131
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
132
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
133
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
134
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
135
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
136
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
137
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
138
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
139
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
140
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
141
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
142
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
143
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
144
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
145
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
146
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
147
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
148
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
149
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
150
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
151
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
152
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
153
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
154
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
155
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
156
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
157
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
158
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
159
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
160
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
161
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
162
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
163
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
164
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
165
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
166
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
167
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
168
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
169
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
170
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
171
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
172
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
173
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
174
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
175
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
176
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
177
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
178
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
179
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
180
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
181
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
182
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
183
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
184
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
185
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
186
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
187
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
188
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
189
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
190
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
191
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
192
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
193
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
194
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
195
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
196
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
197
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
198
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
199
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
200
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
201
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
202
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
203
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
204
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
205
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
206
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
207
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
208
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
209
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
210
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
211
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
212
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
213
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
214
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
215
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
216
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
217
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
218
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
219
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
220
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
221
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
222
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
223
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
224
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
225
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
226
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
227
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
228
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
229
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
230
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
231
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
232
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
233
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
234
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
235
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
236
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
237
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
238
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
239
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
240
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
241
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
242
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
243
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
244
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
245
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
246
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
247
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
248
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
249
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
250
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
251
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
252
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
253
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
254
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
255
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
256
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
257
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
258
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
259
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
260
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
261
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
262
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
263
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
264
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
265
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
266
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
267
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
268
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
269
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
270
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
271
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
272
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
273
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
274
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
275
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
276
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
277
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
278
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
279
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
280
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
281
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
282
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
283
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
284
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
285
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
286
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
287
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
288
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
289
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
290
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
291
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
292
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
293
|
-
<a name='L232'></a><a href='#L232'>232</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
294
|
-
<span class="cline-any cline-no"> </span>
|
|
295
|
-
<span class="cline-any cline-no"> </span>
|
|
296
|
-
<span class="cline-any cline-no"> </span>
|
|
297
|
-
<span class="cline-any cline-no"> </span>
|
|
298
|
-
<span class="cline-any cline-no"> </span>
|
|
299
|
-
<span class="cline-any cline-no"> </span>
|
|
300
|
-
<span class="cline-any cline-no"> </span>
|
|
301
|
-
<span class="cline-any cline-no"> </span>
|
|
302
|
-
<span class="cline-any cline-no"> </span>
|
|
303
|
-
<span class="cline-any cline-no"> </span>
|
|
304
|
-
<span class="cline-any cline-no"> </span>
|
|
305
|
-
<span class="cline-any cline-no"> </span>
|
|
306
|
-
<span class="cline-any cline-no"> </span>
|
|
307
|
-
<span class="cline-any cline-no"> </span>
|
|
308
|
-
<span class="cline-any cline-no"> </span>
|
|
309
|
-
<span class="cline-any cline-no"> </span>
|
|
310
|
-
<span class="cline-any cline-no"> </span>
|
|
311
|
-
<span class="cline-any cline-no"> </span>
|
|
312
|
-
<span class="cline-any cline-no"> </span>
|
|
313
|
-
<span class="cline-any cline-no"> </span>
|
|
314
|
-
<span class="cline-any cline-no"> </span>
|
|
315
|
-
<span class="cline-any cline-no"> </span>
|
|
316
|
-
<span class="cline-any cline-no"> </span>
|
|
317
|
-
<span class="cline-any cline-no"> </span>
|
|
318
|
-
<span class="cline-any cline-no"> </span>
|
|
319
|
-
<span class="cline-any cline-no"> </span>
|
|
320
|
-
<span class="cline-any cline-no"> </span>
|
|
321
|
-
<span class="cline-any cline-no"> </span>
|
|
322
|
-
<span class="cline-any cline-no"> </span>
|
|
323
|
-
<span class="cline-any cline-no"> </span>
|
|
324
|
-
<span class="cline-any cline-no"> </span>
|
|
325
|
-
<span class="cline-any cline-no"> </span>
|
|
326
|
-
<span class="cline-any cline-no"> </span>
|
|
327
|
-
<span class="cline-any cline-no"> </span>
|
|
328
|
-
<span class="cline-any cline-no"> </span>
|
|
329
|
-
<span class="cline-any cline-no"> </span>
|
|
330
|
-
<span class="cline-any cline-no"> </span>
|
|
331
|
-
<span class="cline-any cline-no"> </span>
|
|
332
|
-
<span class="cline-any cline-no"> </span>
|
|
333
|
-
<span class="cline-any cline-no"> </span>
|
|
334
|
-
<span class="cline-any cline-no"> </span>
|
|
335
|
-
<span class="cline-any cline-no"> </span>
|
|
336
|
-
<span class="cline-any cline-no"> </span>
|
|
337
|
-
<span class="cline-any cline-no"> </span>
|
|
338
|
-
<span class="cline-any cline-no"> </span>
|
|
339
|
-
<span class="cline-any cline-no"> </span>
|
|
340
|
-
<span class="cline-any cline-no"> </span>
|
|
341
|
-
<span class="cline-any cline-no"> </span>
|
|
342
|
-
<span class="cline-any cline-no"> </span>
|
|
343
|
-
<span class="cline-any cline-no"> </span>
|
|
344
|
-
<span class="cline-any cline-no"> </span>
|
|
345
|
-
<span class="cline-any cline-no"> </span>
|
|
346
|
-
<span class="cline-any cline-no"> </span>
|
|
347
|
-
<span class="cline-any cline-no"> </span>
|
|
348
|
-
<span class="cline-any cline-no"> </span>
|
|
349
|
-
<span class="cline-any cline-no"> </span>
|
|
350
|
-
<span class="cline-any cline-no"> </span>
|
|
351
|
-
<span class="cline-any cline-no"> </span>
|
|
352
|
-
<span class="cline-any cline-no"> </span>
|
|
353
|
-
<span class="cline-any cline-no"> </span>
|
|
354
|
-
<span class="cline-any cline-no"> </span>
|
|
355
|
-
<span class="cline-any cline-no"> </span>
|
|
356
|
-
<span class="cline-any cline-no"> </span>
|
|
357
|
-
<span class="cline-any cline-no"> </span>
|
|
358
|
-
<span class="cline-any cline-no"> </span>
|
|
359
|
-
<span class="cline-any cline-no"> </span>
|
|
360
|
-
<span class="cline-any cline-no"> </span>
|
|
361
|
-
<span class="cline-any cline-no"> </span>
|
|
362
|
-
<span class="cline-any cline-no"> </span>
|
|
363
|
-
<span class="cline-any cline-no"> </span>
|
|
364
|
-
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-no"> </span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-no"> </span>
|
|
368
|
-
<span class="cline-any cline-no"> </span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
|
-
<span class="cline-any cline-no"> </span>
|
|
371
|
-
<span class="cline-any cline-no"> </span>
|
|
372
|
-
<span class="cline-any cline-no"> </span>
|
|
373
|
-
<span class="cline-any cline-no"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-no"> </span>
|
|
377
|
-
<span class="cline-any cline-no"> </span>
|
|
378
|
-
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-no"> </span>
|
|
380
|
-
<span class="cline-any cline-no"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
|
-
<span class="cline-any cline-no"> </span>
|
|
383
|
-
<span class="cline-any cline-no"> </span>
|
|
384
|
-
<span class="cline-any cline-no"> </span>
|
|
385
|
-
<span class="cline-any cline-no"> </span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
388
|
-
<span class="cline-any cline-no"> </span>
|
|
389
|
-
<span class="cline-any cline-no"> </span>
|
|
390
|
-
<span class="cline-any cline-no"> </span>
|
|
391
|
-
<span class="cline-any cline-no"> </span>
|
|
392
|
-
<span class="cline-any cline-no"> </span>
|
|
393
|
-
<span class="cline-any cline-no"> </span>
|
|
394
|
-
<span class="cline-any cline-no"> </span>
|
|
395
|
-
<span class="cline-any cline-no"> </span>
|
|
396
|
-
<span class="cline-any cline-no"> </span>
|
|
397
|
-
<span class="cline-any cline-no"> </span>
|
|
398
|
-
<span class="cline-any cline-no"> </span>
|
|
399
|
-
<span class="cline-any cline-no"> </span>
|
|
400
|
-
<span class="cline-any cline-no"> </span>
|
|
401
|
-
<span class="cline-any cline-no"> </span>
|
|
402
|
-
<span class="cline-any cline-no"> </span>
|
|
403
|
-
<span class="cline-any cline-no"> </span>
|
|
404
|
-
<span class="cline-any cline-no"> </span>
|
|
405
|
-
<span class="cline-any cline-no"> </span>
|
|
406
|
-
<span class="cline-any cline-no"> </span>
|
|
407
|
-
<span class="cline-any cline-no"> </span>
|
|
408
|
-
<span class="cline-any cline-no"> </span>
|
|
409
|
-
<span class="cline-any cline-no"> </span>
|
|
410
|
-
<span class="cline-any cline-no"> </span>
|
|
411
|
-
<span class="cline-any cline-no"> </span>
|
|
412
|
-
<span class="cline-any cline-no"> </span>
|
|
413
|
-
<span class="cline-any cline-no"> </span>
|
|
414
|
-
<span class="cline-any cline-no"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-no"> </span>
|
|
417
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-no"> </span>
|
|
420
|
-
<span class="cline-any cline-no"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-no"> </span>
|
|
423
|
-
<span class="cline-any cline-no"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-no"> </span>
|
|
427
|
-
<span class="cline-any cline-no"> </span>
|
|
428
|
-
<span class="cline-any cline-no"> </span>
|
|
429
|
-
<span class="cline-any cline-no"> </span>
|
|
430
|
-
<span class="cline-any cline-no"> </span>
|
|
431
|
-
<span class="cline-any cline-no"> </span>
|
|
432
|
-
<span class="cline-any cline-no"> </span>
|
|
433
|
-
<span class="cline-any cline-no"> </span>
|
|
434
|
-
<span class="cline-any cline-no"> </span>
|
|
435
|
-
<span class="cline-any cline-no"> </span>
|
|
436
|
-
<span class="cline-any cline-no"> </span>
|
|
437
|
-
<span class="cline-any cline-no"> </span>
|
|
438
|
-
<span class="cline-any cline-no"> </span>
|
|
439
|
-
<span class="cline-any cline-no"> </span>
|
|
440
|
-
<span class="cline-any cline-no"> </span>
|
|
441
|
-
<span class="cline-any cline-no"> </span>
|
|
442
|
-
<span class="cline-any cline-no"> </span>
|
|
443
|
-
<span class="cline-any cline-no"> </span>
|
|
444
|
-
<span class="cline-any cline-no"> </span>
|
|
445
|
-
<span class="cline-any cline-no"> </span>
|
|
446
|
-
<span class="cline-any cline-no"> </span>
|
|
447
|
-
<span class="cline-any cline-no"> </span>
|
|
448
|
-
<span class="cline-any cline-no"> </span>
|
|
449
|
-
<span class="cline-any cline-no"> </span>
|
|
450
|
-
<span class="cline-any cline-no"> </span>
|
|
451
|
-
<span class="cline-any cline-no"> </span>
|
|
452
|
-
<span class="cline-any cline-no"> </span>
|
|
453
|
-
<span class="cline-any cline-no"> </span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-no"> </span>
|
|
456
|
-
<span class="cline-any cline-no"> </span>
|
|
457
|
-
<span class="cline-any cline-no"> </span>
|
|
458
|
-
<span class="cline-any cline-no"> </span>
|
|
459
|
-
<span class="cline-any cline-no"> </span>
|
|
460
|
-
<span class="cline-any cline-no"> </span>
|
|
461
|
-
<span class="cline-any cline-no"> </span>
|
|
462
|
-
<span class="cline-any cline-no"> </span>
|
|
463
|
-
<span class="cline-any cline-no"> </span>
|
|
464
|
-
<span class="cline-any cline-no"> </span>
|
|
465
|
-
<span class="cline-any cline-no"> </span>
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
467
|
-
<span class="cline-any cline-no"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-no"> </span>
|
|
470
|
-
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-no"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
|
-
<span class="cline-any cline-no"> </span>
|
|
474
|
-
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-no"> </span>
|
|
476
|
-
<span class="cline-any cline-no"> </span>
|
|
477
|
-
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-no"> </span>
|
|
479
|
-
<span class="cline-any cline-no"> </span>
|
|
480
|
-
<span class="cline-any cline-no"> </span>
|
|
481
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
487
|
-
<span class="cline-any cline-no"> </span>
|
|
488
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
-
<span class="cline-any cline-no"> </span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-no"> </span>
|
|
496
|
-
<span class="cline-any cline-no"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-no"> </span>
|
|
501
|
-
<span class="cline-any cline-no"> </span>
|
|
502
|
-
<span class="cline-any cline-no"> </span>
|
|
503
|
-
<span class="cline-any cline-no"> </span>
|
|
504
|
-
<span class="cline-any cline-no"> </span>
|
|
505
|
-
<span class="cline-any cline-no"> </span>
|
|
506
|
-
<span class="cline-any cline-no"> </span>
|
|
507
|
-
<span class="cline-any cline-no"> </span>
|
|
508
|
-
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-no"> </span>
|
|
510
|
-
<span class="cline-any cline-no"> </span>
|
|
511
|
-
<span class="cline-any cline-no"> </span>
|
|
512
|
-
<span class="cline-any cline-no"> </span>
|
|
513
|
-
<span class="cline-any cline-no"> </span>
|
|
514
|
-
<span class="cline-any cline-no"> </span>
|
|
515
|
-
<span class="cline-any cline-no"> </span>
|
|
516
|
-
<span class="cline-any cline-no"> </span>
|
|
517
|
-
<span class="cline-any cline-no"> </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-no"> </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></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>
|
|
525
|
-
<span class="cstat-no" title="statement not covered" > * Configuration management utilities</span>
|
|
526
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
527
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
528
|
-
<span class="cstat-no" title="statement not covered" >import { RunnerConfig, EnvironmentConfig, RetryStrategy } from "../types";</span>
|
|
529
|
-
<span class="cstat-no" title="statement not covered" >import fs from "fs/promises";</span>
|
|
530
|
-
<span class="cstat-no" title="statement not covered" >import path from "path";</span>
|
|
531
|
-
<span class="cstat-no" title="statement not covered" >import { createLogger } from "./logger";</span>
|
|
532
|
-
<span class="cstat-no" title="statement not covered" >import { Command } from "commander";</span>
|
|
533
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
534
|
-
<span class="cstat-no" title="statement not covered" >const logger = createLogger("ConfigManager");</span>
|
|
535
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
536
|
-
<span class="cstat-no" title="statement not covered" >export class ConfigManager {</span>
|
|
537
|
-
<span class="cstat-no" title="statement not covered" > private static DEFAULT_CONFIG: Partial<RunnerConfig> = {</span>
|
|
538
|
-
<span class="cstat-no" title="statement not covered" > dataDir: "./data",</span>
|
|
539
|
-
<span class="cstat-no" title="statement not covered" > heartbeatInterval: 120000, // 2 minutes</span>
|
|
540
|
-
<span class="cstat-no" title="statement not covered" > retryStrategy: "exponential" as RetryStrategy,</span>
|
|
541
|
-
<span class="cstat-no" title="statement not covered" > retryIntervalSecs: 60,</span>
|
|
542
|
-
<span class="cstat-no" title="statement not covered" > retryDurationSecs: 900,</span>
|
|
543
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
544
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
545
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
546
|
-
<span class="cstat-no" title="statement not covered" > * Load configuration without parsing command line arguments</span>
|
|
547
|
-
<span class="cstat-no" title="statement not covered" > * Used when arguments have already been parsed by the CLI</span>
|
|
548
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
549
|
-
<span class="cstat-no" title="statement not covered" > static async loadConfig(configPath?: string): Promise<RunnerConfig> {</span>
|
|
550
|
-
<span class="cstat-no" title="statement not covered" > // Validate required environment variables</span>
|
|
551
|
-
<span class="cstat-no" title="statement not covered" > this.validateEnvironment();</span>
|
|
552
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
553
|
-
<span class="cstat-no" title="statement not covered" > // Start with defaults</span>
|
|
554
|
-
<span class="cstat-no" title="statement not covered" > let config: Partial<RunnerConfig> = { ...this.DEFAULT_CONFIG };</span>
|
|
555
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
556
|
-
<span class="cstat-no" title="statement not covered" > // Load from config file if provided</span>
|
|
557
|
-
<span class="cstat-no" title="statement not covered" > if (configPath) {</span>
|
|
558
|
-
<span class="cstat-no" title="statement not covered" > const fileConfig = await this.loadConfigFile(configPath);</span>
|
|
559
|
-
<span class="cstat-no" title="statement not covered" > config = { ...config, ...fileConfig };</span>
|
|
560
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
561
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
562
|
-
<span class="cstat-no" title="statement not covered" > // Override with environment variables</span>
|
|
563
|
-
<span class="cstat-no" title="statement not covered" > const envConfig = this.loadFromEnvironment();</span>
|
|
564
|
-
<span class="cstat-no" title="statement not covered" > config = { ...config, ...envConfig };</span>
|
|
565
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
566
|
-
<span class="cstat-no" title="statement not covered" > // Validate final configuration</span>
|
|
567
|
-
<span class="cstat-no" title="statement not covered" > this.validateConfig(config);</span>
|
|
568
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
569
|
-
<span class="cstat-no" title="statement not covered" > return config as RunnerConfig;</span>
|
|
570
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
571
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
572
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
573
|
-
<span class="cstat-no" title="statement not covered" > * Parse command line arguments and load configuration</span>
|
|
574
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
575
|
-
<span class="cstat-no" title="statement not covered" > static async parseArgsAndLoadConfig(argv: string[]): Promise<RunnerConfig> {</span>
|
|
576
|
-
<span class="cstat-no" title="statement not covered" > const program = new Command();</span>
|
|
577
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
578
|
-
<span class="cstat-no" title="statement not covered" > program</span>
|
|
579
|
-
<span class="cstat-no" title="statement not covered" > .name("claudette-runner")</span>
|
|
580
|
-
<span class="cstat-no" title="statement not covered" > .description("Claudette Runner - Executes Claude agents for task processing")</span>
|
|
581
|
-
<span class="cstat-no" title="statement not covered" > .version("1.0.0")</span>
|
|
582
|
-
<span class="cstat-no" title="statement not covered" > .option("-c, --config <path>", "Path to configuration file")</span>
|
|
583
|
-
<span class="cstat-no" title="statement not covered" > .option("--retry-strategy <strategy>", "Registration retry strategy (none, interval, exponential)", "exponential")</span>
|
|
584
|
-
<span class="cstat-no" title="statement not covered" > .option("--retry-interval-secs <seconds>", "Retry interval in seconds for interval strategy", "60")</span>
|
|
585
|
-
<span class="cstat-no" title="statement not covered" > .option("--retry-duration-secs <seconds>", "Max retry duration in seconds for exponential strategy", "900")</span>
|
|
586
|
-
<span class="cstat-no" title="statement not covered" > .option("--data-dir <path>", "Data directory path", "./data")</span>
|
|
587
|
-
<span class="cstat-no" title="statement not covered" > .option("--heartbeat-interval <ms>", "Heartbeat interval in milliseconds", "120000");</span>
|
|
588
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
589
|
-
<span class="cstat-no" title="statement not covered" > program.parse(argv);</span>
|
|
590
|
-
<span class="cstat-no" title="statement not covered" > const options = program.opts();</span>
|
|
591
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
592
|
-
<span class="cstat-no" title="statement not covered" > // Validate required environment variables</span>
|
|
593
|
-
<span class="cstat-no" title="statement not covered" > this.validateEnvironment();</span>
|
|
594
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
595
|
-
<span class="cstat-no" title="statement not covered" > // Start with defaults</span>
|
|
596
|
-
<span class="cstat-no" title="statement not covered" > let config: Partial<RunnerConfig> = { ...this.DEFAULT_CONFIG };</span>
|
|
597
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
598
|
-
<span class="cstat-no" title="statement not covered" > // Load from config file if provided</span>
|
|
599
|
-
<span class="cstat-no" title="statement not covered" > if (options['config']) {</span>
|
|
600
|
-
<span class="cstat-no" title="statement not covered" > const fileConfig = await this.loadConfigFile(options['config']);</span>
|
|
601
|
-
<span class="cstat-no" title="statement not covered" > config = { ...config, ...fileConfig };</span>
|
|
602
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
603
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
604
|
-
<span class="cstat-no" title="statement not covered" > // Override with environment variables</span>
|
|
605
|
-
<span class="cstat-no" title="statement not covered" > const envConfig = this.loadFromEnvironment();</span>
|
|
606
|
-
<span class="cstat-no" title="statement not covered" > config = { ...config, ...envConfig };</span>
|
|
607
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
608
|
-
<span class="cstat-no" title="statement not covered" > // Override with CLI arguments (highest priority)</span>
|
|
609
|
-
<span class="cstat-no" title="statement not covered" > if (options['retryStrategy']) {</span>
|
|
610
|
-
<span class="cstat-no" title="statement not covered" > config.retryStrategy = options['retryStrategy'] as RetryStrategy;</span>
|
|
611
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
612
|
-
<span class="cstat-no" title="statement not covered" > if (options['retryIntervalSecs']) {</span>
|
|
613
|
-
<span class="cstat-no" title="statement not covered" > config.retryIntervalSecs = parseInt(options['retryIntervalSecs']);</span>
|
|
614
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
615
|
-
<span class="cstat-no" title="statement not covered" > if (options['retryDurationSecs']) {</span>
|
|
616
|
-
<span class="cstat-no" title="statement not covered" > config.retryDurationSecs = parseInt(options['retryDurationSecs']);</span>
|
|
617
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
618
|
-
<span class="cstat-no" title="statement not covered" > if (options['dataDir']) {</span>
|
|
619
|
-
<span class="cstat-no" title="statement not covered" > config.dataDir = options['dataDir'];</span>
|
|
620
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
621
|
-
<span class="cstat-no" title="statement not covered" > if (options['heartbeatInterval']) {</span>
|
|
622
|
-
<span class="cstat-no" title="statement not covered" > config.heartbeatInterval = parseInt(options['heartbeatInterval']);</span>
|
|
623
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
624
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
625
|
-
<span class="cstat-no" title="statement not covered" > // Validate final configuration</span>
|
|
626
|
-
<span class="cstat-no" title="statement not covered" > this.validateConfig(config);</span>
|
|
627
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
628
|
-
<span class="cstat-no" title="statement not covered" > return config as RunnerConfig;</span>
|
|
629
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
630
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
631
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
632
|
-
<span class="cstat-no" title="statement not covered" > * Validate required environment variables</span>
|
|
633
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
634
|
-
<span class="cstat-no" title="statement not covered" > private static validateEnvironment(): void {</span>
|
|
635
|
-
<span class="cstat-no" title="statement not covered" > // Set default for CLAUDETTE_WORKSPACE_DIR if not provided</span>
|
|
636
|
-
<span class="cstat-no" title="statement not covered" > if (!process.env["CLAUDETTE_WORKSPACE_DIR"]) {</span>
|
|
637
|
-
<span class="cstat-no" title="statement not covered" > process.env["CLAUDETTE_WORKSPACE_DIR"] = "/workspace";</span>
|
|
638
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
639
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
640
|
-
<span class="cstat-no" title="statement not covered" > // Set default for CLAUDETTE_ELECTRICSQL_URL if not provided</span>
|
|
641
|
-
<span class="cstat-no" title="statement not covered" > if (!process.env["CLAUDETTE_ELECTRICSQL_URL"]) {</span>
|
|
642
|
-
<span class="cstat-no" title="statement not covered" > process.env["CLAUDETTE_ELECTRICSQL_URL"] = "https://electric.withclaudette.com";</span>
|
|
643
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
644
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
645
|
-
<span class="cstat-no" title="statement not covered" > // Set default for CLAUDETTE_ORCHESTRATOR_URL if not provided</span>
|
|
646
|
-
<span class="cstat-no" title="statement not covered" > if (!process.env["CLAUDETTE_ORCHESTRATOR_URL"]) {</span>
|
|
647
|
-
<span class="cstat-no" title="statement not covered" > process.env["CLAUDETTE_ORCHESTRATOR_URL"] = "https://api.withclaudette.t-0.pw";</span>
|
|
648
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
649
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
650
|
-
<span class="cstat-no" title="statement not covered" > const required = [</span>
|
|
651
|
-
<span class="cstat-no" title="statement not covered" > "NORTHFLARE_RUNNER_TOKEN",</span>
|
|
652
|
-
<span class="cstat-no" title="statement not covered" > "CLAUDETTE_WORKSPACE_DIR",</span>
|
|
653
|
-
<span class="cstat-no" title="statement not covered" > "CLAUDETTE_ELECTRICSQL_URL",</span>
|
|
654
|
-
<span class="cstat-no" title="statement not covered" > "CLAUDETTE_ORCHESTRATOR_URL",</span>
|
|
655
|
-
<span class="cstat-no" title="statement not covered" > ];</span>
|
|
656
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
657
|
-
<span class="cstat-no" title="statement not covered" > const missing = required.filter(key => !process.env[key]);</span>
|
|
658
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
659
|
-
<span class="cstat-no" title="statement not covered" > if (missing.length > 0) {</span>
|
|
660
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
661
|
-
<span class="cstat-no" title="statement not covered" > `Missing required environment variables: ${missing.join(", ")}\n` +</span>
|
|
662
|
-
<span class="cstat-no" title="statement not covered" > "Please set these environment variables before starting the runner."</span>
|
|
663
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
664
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
665
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
666
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
667
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
668
|
-
<span class="cstat-no" title="statement not covered" > * Load configuration from environment variables</span>
|
|
669
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
670
|
-
<span class="cstat-no" title="statement not covered" > private static loadFromEnvironment(): Partial<RunnerConfig> {</span>
|
|
671
|
-
<span class="cstat-no" title="statement not covered" > const config: Partial<RunnerConfig> = {</span>
|
|
672
|
-
<span class="cstat-no" title="statement not covered" > electricUrl: process.env["CLAUDETTE_ELECTRICSQL_URL"]!,</span>
|
|
673
|
-
<span class="cstat-no" title="statement not covered" > orchestratorUrl: process.env["CLAUDETTE_ORCHESTRATOR_URL"]!,</span>
|
|
674
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
675
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
676
|
-
<span class="cstat-no" title="statement not covered" > // Optional environment overrides</span>
|
|
677
|
-
<span class="cstat-no" title="statement not covered" > if (process.env["CLAUDETTE_DATA_DIR"]) {</span>
|
|
678
|
-
<span class="cstat-no" title="statement not covered" > config.dataDir = process.env["CLAUDETTE_DATA_DIR"];</span>
|
|
679
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
680
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
681
|
-
<span class="cstat-no" title="statement not covered" > return config;</span>
|
|
682
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
683
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
684
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
685
|
-
<span class="cstat-no" title="statement not covered" > * Load configuration from file</span>
|
|
686
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
687
|
-
<span class="cstat-no" title="statement not covered" > private static async loadConfigFile(configPath: string): Promise<Partial<RunnerConfig>> {</span>
|
|
688
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" > const absolutePath = path.resolve(configPath);</span>
|
|
690
|
-
<span class="cstat-no" title="statement not covered" > const content = await fs.readFile(absolutePath, "utf-8");</span>
|
|
691
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
692
|
-
<span class="cstat-no" title="statement not covered" > // Support both JSON and YAML formats</span>
|
|
693
|
-
<span class="cstat-no" title="statement not covered" > if (configPath.endsWith(".json")) {</span>
|
|
694
|
-
<span class="cstat-no" title="statement not covered" > return JSON.parse(content);</span>
|
|
695
|
-
<span class="cstat-no" title="statement not covered" > } else if (configPath.endsWith(".yaml") || configPath.endsWith(".yml")) {</span>
|
|
696
|
-
<span class="cstat-no" title="statement not covered" > // For YAML support, we'd need to add a yaml parser dependency</span>
|
|
697
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("YAML configuration files are not yet supported");</span>
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
699
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("Configuration file must be .json format");</span>
|
|
700
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
701
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
702
|
-
<span class="cstat-no" title="statement not covered" > if ((error as any).code === "ENOENT") {</span>
|
|
703
|
-
<span class="cstat-no" title="statement not covered" > logger.warn(`Configuration file not found: ${configPath}`);</span>
|
|
704
|
-
<span class="cstat-no" title="statement not covered" > return {};</span>
|
|
705
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
706
|
-
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
707
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
708
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
709
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
710
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
711
|
-
<span class="cstat-no" title="statement not covered" > * Validate final configuration</span>
|
|
712
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
713
|
-
<span class="cstat-no" title="statement not covered" > private static validateConfig(config: Partial<RunnerConfig>): void {</span>
|
|
714
|
-
<span class="cstat-no" title="statement not covered" > // Note: Runner ID will be generated by server during registration</span>
|
|
715
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
716
|
-
<span class="cstat-no" title="statement not covered" > if (!config.electricUrl || !config.orchestratorUrl) {</span>
|
|
717
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("electricUrl and orchestratorUrl are required");</span>
|
|
718
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
719
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
720
|
-
<span class="cstat-no" title="statement not covered" > if (!config.dataDir) {</span>
|
|
721
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("dataDir is required");</span>
|
|
722
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
723
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
724
|
-
<span class="cstat-no" title="statement not covered" > if (!config.heartbeatInterval || config.heartbeatInterval < 1000) {</span>
|
|
725
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("heartbeatInterval must be at least 1000ms");</span>
|
|
726
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
727
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
728
|
-
<span class="cstat-no" title="statement not covered" > // Validate retry strategy</span>
|
|
729
|
-
<span class="cstat-no" title="statement not covered" > const validStrategies: RetryStrategy[] = ["none", "interval", "exponential"];</span>
|
|
730
|
-
<span class="cstat-no" title="statement not covered" > if (!config.retryStrategy || !validStrategies.includes(config.retryStrategy)) {</span>
|
|
731
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`retryStrategy must be one of: ${validStrategies.join(", ")}`);</span>
|
|
732
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
733
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
734
|
-
<span class="cstat-no" title="statement not covered" > if (config.retryStrategy === "interval" && (!config.retryIntervalSecs || config.retryIntervalSecs < 1)) {</span>
|
|
735
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("retryIntervalSecs must be at least 1 when using interval strategy");</span>
|
|
736
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
737
|
-
<span class="cstat-no" title="statement not covered" > </span>
|
|
738
|
-
<span class="cstat-no" title="statement not covered" > if (config.retryStrategy === "exponential" && (!config.retryDurationSecs || config.retryDurationSecs < 1)) {</span>
|
|
739
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("retryDurationSecs must be at least 1 when using exponential strategy");</span>
|
|
740
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
741
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
742
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
743
|
-
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
744
|
-
<span class="cstat-no" title="statement not covered" > * Get all environment configuration</span>
|
|
745
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
746
|
-
<span class="cstat-no" title="statement not covered" > static getEnvironmentConfig(): EnvironmentConfig {</span>
|
|
747
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
748
|
-
<span class="cstat-no" title="statement not covered" > NORTHFLARE_RUNNER_TOKEN: process.env["NORTHFLARE_RUNNER_TOKEN"]!,</span>
|
|
749
|
-
<span class="cstat-no" title="statement not covered" > CLAUDETTE_WORKSPACE_DIR: process.env["CLAUDETTE_WORKSPACE_DIR"]!,</span>
|
|
750
|
-
<span class="cstat-no" title="statement not covered" > CLAUDETTE_ELECTRICSQL_URL: process.env["CLAUDETTE_ELECTRICSQL_URL"]!,</span>
|
|
751
|
-
<span class="cstat-no" title="statement not covered" > CLAUDETTE_ORCHESTRATOR_URL: process.env["CLAUDETTE_ORCHESTRATOR_URL"]!,</span>
|
|
752
|
-
<span class="cstat-no" title="statement not covered" > DEBUG: process.env["DEBUG"],</span>
|
|
753
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
754
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
755
|
-
<span class="cstat-no" title="statement not covered" >}</span></pre></td></tr></table></pre>
|
|
756
|
-
|
|
757
|
-
<div class="push"></div>
|
|
758
|
-
<!-- for sticky footer -->
|
|
759
|
-
</div>
|
|
760
|
-
<!-- /wrapper -->
|
|
761
|
-
<div class="footer quiet pad2 space-top1 center small">
|
|
762
|
-
Code coverage generated by
|
|
763
|
-
<a
|
|
764
|
-
href="https://istanbul.js.org/"
|
|
765
|
-
target="_blank"
|
|
766
|
-
rel="noopener noreferrer"
|
|
767
|
-
>istanbul</a
|
|
768
|
-
>
|
|
769
|
-
at 2025-08-14T21:15:54.473Z
|
|
770
|
-
</div>
|
|
771
|
-
<script src="../../prettify.js"></script>
|
|
772
|
-
<script>
|
|
773
|
-
window.onload = function () {
|
|
774
|
-
prettyPrint();
|
|
775
|
-
};
|
|
776
|
-
</script>
|
|
777
|
-
<script src="../../sorter.js"></script>
|
|
778
|
-
<script src="../../block-navigation.js"></script>
|
|
779
|
-
</body>
|
|
780
|
-
</html>
|