@funkai/agents 0.1.0 → 0.1.1

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 (45) hide show
  1. package/.turbo/turbo-build.log +19 -21
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +1 -1
  4. package/package.json +1 -1
  5. package/.turbo/turbo-test$colon$coverage.log +0 -109
  6. package/.turbo/turbo-test.log +0 -141
  7. package/.turbo/turbo-typecheck.log +0 -4
  8. package/coverage/lcov-report/base.css +0 -224
  9. package/coverage/lcov-report/block-navigation.js +0 -87
  10. package/coverage/lcov-report/core/agents/base/agent.ts.html +0 -1705
  11. package/coverage/lcov-report/core/agents/base/index.html +0 -146
  12. package/coverage/lcov-report/core/agents/base/output.ts.html +0 -256
  13. package/coverage/lcov-report/core/agents/base/utils.ts.html +0 -694
  14. package/coverage/lcov-report/core/agents/flow/engine.ts.html +0 -928
  15. package/coverage/lcov-report/core/agents/flow/flow-agent.ts.html +0 -1462
  16. package/coverage/lcov-report/core/agents/flow/index.html +0 -146
  17. package/coverage/lcov-report/core/agents/flow/messages.ts.html +0 -508
  18. package/coverage/lcov-report/core/agents/flow/steps/factory.ts.html +0 -1975
  19. package/coverage/lcov-report/core/agents/flow/steps/index.html +0 -116
  20. package/coverage/lcov-report/core/index.html +0 -131
  21. package/coverage/lcov-report/core/logger.ts.html +0 -541
  22. package/coverage/lcov-report/core/models/providers/index.html +0 -116
  23. package/coverage/lcov-report/core/models/providers/openai.ts.html +0 -337
  24. package/coverage/lcov-report/core/provider/index.html +0 -131
  25. package/coverage/lcov-report/core/provider/provider.ts.html +0 -346
  26. package/coverage/lcov-report/core/provider/usage.ts.html +0 -376
  27. package/coverage/lcov-report/core/tool.ts.html +0 -577
  28. package/coverage/lcov-report/favicon.png +0 -0
  29. package/coverage/lcov-report/index.html +0 -221
  30. package/coverage/lcov-report/lib/hooks.ts.html +0 -262
  31. package/coverage/lcov-report/lib/index.html +0 -161
  32. package/coverage/lcov-report/lib/middleware.ts.html +0 -274
  33. package/coverage/lcov-report/lib/runnable.ts.html +0 -151
  34. package/coverage/lcov-report/lib/trace.ts.html +0 -520
  35. package/coverage/lcov-report/prettify.css +0 -1
  36. package/coverage/lcov-report/prettify.js +0 -2
  37. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  38. package/coverage/lcov-report/sorter.js +0 -210
  39. package/coverage/lcov-report/utils/attempt.ts.html +0 -199
  40. package/coverage/lcov-report/utils/error.ts.html +0 -421
  41. package/coverage/lcov-report/utils/index.html +0 -176
  42. package/coverage/lcov-report/utils/resolve.ts.html +0 -208
  43. package/coverage/lcov-report/utils/result.ts.html +0 -538
  44. package/coverage/lcov-report/utils/zod.ts.html +0 -178
  45. package/coverage/lcov.info +0 -1566
@@ -1,346 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for core/provider/provider.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">core/provider</a> provider.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>17/17</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>10/10</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>5/5</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>17/17</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 high'></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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">5x</span>
179
- <span class="cline-any cline-yes">5x</span>
180
- <span class="cline-any cline-neutral">&nbsp;</span>
181
- <span class="cline-any cline-neutral">&nbsp;</span>
182
- <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-neutral">&nbsp;</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-yes">5x</span>
187
- <span class="cline-any cline-yes">2x</span>
188
- <span class="cline-any cline-neutral">&nbsp;</span>
189
- <span class="cline-any cline-yes">3x</span>
190
- <span class="cline-any cline-neutral">&nbsp;</span>
191
- <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-neutral">&nbsp;</span>
193
- <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-neutral">&nbsp;</span>
198
- <span class="cline-any cline-neutral">&nbsp;</span>
199
- <span class="cline-any cline-neutral">&nbsp;</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-neutral">&nbsp;</span>
206
- <span class="cline-any cline-neutral">&nbsp;</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-yes">1x</span>
211
- <span class="cline-any cline-yes">1x</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-neutral">&nbsp;</span>
214
- <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-yes">1x</span>
216
- <span class="cline-any cline-yes">6x</span>
217
- <span class="cline-any cline-yes">6x</span>
218
- <span class="cline-any cline-yes">4x</span>
219
- <span class="cline-any cline-yes">4x</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-yes">5x</span>
222
- <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-neutral">&nbsp;</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-neutral">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-yes">9x</span>
232
- <span class="cline-any cline-yes">9x</span>
233
- <span class="cline-any cline-yes">2x</span>
234
- <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-neutral">&nbsp;</span>
236
- <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-yes">7x</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
241
- createOpenRouter as baseCreateOpenRouter,
242
- type OpenRouterProvider,
243
- type OpenRouterProviderSettings,
244
- } from "@openrouter/ai-sdk-provider";
245
- &nbsp;
246
- import type { ModelId } from "@/core/models/index.js";
247
- import { type LanguageModel } from "@/core/provider/types.js";
248
- &nbsp;
249
- /**
250
- * Create an OpenRouter provider instance with automatic API key resolution.
251
- *
252
- * Falls back to the `OPENROUTER_API_KEY` environment variable when
253
- * no explicit `apiKey` is provided in the options.
254
- *
255
- * @param options - Provider settings forwarded to `@openrouter/ai-sdk-provider`.
256
- * @returns A configured {@link OpenRouterProvider} instance.
257
- *
258
- * @example
259
- * ```typescript
260
- * const openrouter = createOpenRouter({ apiKey: 'sk-...' })
261
- * const m = openrouter('openai/gpt-5.2-codex')
262
- * ```
263
- */
264
- export function createOpenRouter(options?: OpenRouterProviderSettings): OpenRouterProvider {
265
- const apiKey = resolveApiKey(options);
266
- return baseCreateOpenRouter({
267
- ...options,
268
- apiKey,
269
- });
270
- }
271
- &nbsp;
272
- function resolveApiKey(options: OpenRouterProviderSettings | undefined): string {
273
- if (options != null &amp;&amp; options.apiKey != null) {
274
- return options.apiKey;
275
- }
276
- return getOpenRouterApiKey();
277
- }
278
- &nbsp;
279
- /**
280
- * Shorthand for creating a single OpenRouter language model.
281
- *
282
- * Resolves the API key from the environment and returns a ready-to-use
283
- * {@link LanguageModel} that can be passed directly to AI SDK functions.
284
- *
285
- * The provider instance is cached at module scope and reused across
286
- * calls. If `OPENROUTER_API_KEY` changes at runtime, the cache is
287
- * invalidated and a new provider is created.
288
- *
289
- * @param modelId - An OpenRouter model identifier (e.g. `"openai/gpt-5.2-codex"`).
290
- * @returns A configured {@link LanguageModel} instance.
291
- *
292
- * @example
293
- * ```typescript
294
- * const m = openrouter('openai/gpt-5.2-codex')
295
- * ```
296
- */
297
- export const openrouter: (modelId: ModelId) =&gt; LanguageModel = (() =&gt; {
298
- const cache: { provider: OpenRouterProvider | undefined; apiKey: string | undefined } = {
299
- provider: undefined,
300
- apiKey: undefined,
301
- };
302
- return (modelId: ModelId): LanguageModel =&gt; {
303
- const apiKey = getOpenRouterApiKey();
304
- if (!cache.provider || cache.apiKey !== apiKey) {
305
- cache.provider = baseCreateOpenRouter({ apiKey });
306
- cache.apiKey = apiKey;
307
- }
308
- return cache.provider(modelId);
309
- };
310
- })();
311
- &nbsp;
312
- /**
313
- * Read the OpenRouter API key from the environment.
314
- *
315
- * @throws {Error} If `OPENROUTER_API_KEY` is not set.
316
- */
317
- function getOpenRouterApiKey(): string {
318
- const apiKey = process.env.OPENROUTER_API_KEY;
319
- if (!apiKey) {
320
- throw new Error(
321
- "OPENROUTER_API_KEY environment variable is required. " +
322
- "Set it in your .env file or environment.",
323
- );
324
- }
325
- return apiKey;
326
- }
327
- &nbsp;</pre></td></tr></table></pre>
328
-
329
- <div class='push'></div><!-- for sticky footer -->
330
- </div><!-- /wrapper -->
331
- <div class='footer quiet pad2 space-top1 center small'>
332
- Code coverage generated by
333
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
334
- at 2026-03-13T01:02:17.231Z
335
- </div>
336
- <script src="../../prettify.js"></script>
337
- <script>
338
- window.onload = function () {
339
- prettyPrint();
340
- };
341
- </script>
342
- <script src="../../sorter.js"></script>
343
- <script src="../../block-navigation.js"></script>
344
- </body>
345
- </html>
346
-