@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.
- package/.turbo/turbo-build.log +19 -21
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/.turbo/turbo-test$colon$coverage.log +0 -109
- package/.turbo/turbo-test.log +0 -141
- package/.turbo/turbo-typecheck.log +0 -4
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/core/agents/base/agent.ts.html +0 -1705
- package/coverage/lcov-report/core/agents/base/index.html +0 -146
- package/coverage/lcov-report/core/agents/base/output.ts.html +0 -256
- package/coverage/lcov-report/core/agents/base/utils.ts.html +0 -694
- package/coverage/lcov-report/core/agents/flow/engine.ts.html +0 -928
- package/coverage/lcov-report/core/agents/flow/flow-agent.ts.html +0 -1462
- package/coverage/lcov-report/core/agents/flow/index.html +0 -146
- package/coverage/lcov-report/core/agents/flow/messages.ts.html +0 -508
- package/coverage/lcov-report/core/agents/flow/steps/factory.ts.html +0 -1975
- package/coverage/lcov-report/core/agents/flow/steps/index.html +0 -116
- package/coverage/lcov-report/core/index.html +0 -131
- package/coverage/lcov-report/core/logger.ts.html +0 -541
- package/coverage/lcov-report/core/models/providers/index.html +0 -116
- package/coverage/lcov-report/core/models/providers/openai.ts.html +0 -337
- package/coverage/lcov-report/core/provider/index.html +0 -131
- package/coverage/lcov-report/core/provider/provider.ts.html +0 -346
- package/coverage/lcov-report/core/provider/usage.ts.html +0 -376
- package/coverage/lcov-report/core/tool.ts.html +0 -577
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -221
- package/coverage/lcov-report/lib/hooks.ts.html +0 -262
- package/coverage/lcov-report/lib/index.html +0 -161
- package/coverage/lcov-report/lib/middleware.ts.html +0 -274
- package/coverage/lcov-report/lib/runnable.ts.html +0 -151
- package/coverage/lcov-report/lib/trace.ts.html +0 -520
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/utils/attempt.ts.html +0 -199
- package/coverage/lcov-report/utils/error.ts.html +0 -421
- package/coverage/lcov-report/utils/index.html +0 -176
- package/coverage/lcov-report/utils/resolve.ts.html +0 -208
- package/coverage/lcov-report/utils/result.ts.html +0 -538
- package/coverage/lcov-report/utils/zod.ts.html +0 -178
- package/coverage/lcov.info +0 -1566
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[34mℹ[39m
|
|
7
|
-
[34mℹ[39m
|
|
8
|
-
[34mℹ[39m
|
|
9
|
-
[34mℹ[39m
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[34mℹ[39m
|
|
15
|
-
[34mℹ[39m
|
|
16
|
-
[34mℹ[39m [2mdist/[
|
|
17
|
-
[34mℹ[39m [2mdist/[
|
|
18
|
-
[34mℹ[39m
|
|
19
|
-
[
|
|
20
|
-
[34mℹ[39m 4 files, total: 330.82 kB
|
|
21
|
-
[32m✔[39m Build complete in [32m546ms[39m
|
|
1
|
+
|
|
2
|
+
> @funkai/agents@0.1.1 build /home/runner/work/funkai/funkai/packages/agents
|
|
3
|
+
> tsdown
|
|
4
|
+
|
|
5
|
+
[34mℹ[39m tsdown [2mv0.21.2[22m powered by rolldown [2mv1.0.0-rc.9[22m
|
|
6
|
+
[34mℹ[39m config file: [4m/home/runner/work/funkai/funkai/packages/agents/tsdown.config.ts[24m
|
|
7
|
+
[34mℹ[39m entry: [34msrc/index.ts[39m
|
|
8
|
+
[34mℹ[39m target: [34mnode22[39m
|
|
9
|
+
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
10
|
+
|
|
11
|
+
[43m WARN [49m `external` is deprecated. Use `deps.neverBundle` instead.
|
|
12
|
+
|
|
13
|
+
[34mℹ[39m Build start
|
|
14
|
+
[34mℹ[39m [2mdist/[22m[1mindex.mjs[22m [2m 66.70 kB[22m [2m│ gzip: 16.43 kB[22m
|
|
15
|
+
[34mℹ[39m [2mdist/[22mindex.mjs.map [2m154.48 kB[22m [2m│ gzip: 35.44 kB[22m
|
|
16
|
+
[34mℹ[39m [2mdist/[22mindex.d.mts.map [2m 17.15 kB[22m [2m│ gzip: 4.77 kB[22m
|
|
17
|
+
[34mℹ[39m [2mdist/[22m[32m[1mindex.d.mts[22m[39m [2m 92.50 kB[22m [2m│ gzip: 21.21 kB[22m
|
|
18
|
+
[34mℹ[39m 4 files, total: 330.82 kB
|
|
19
|
+
[32m✔[39m Build complete in [32m2624ms[39m
|
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
- :zap: **Functions all the way down** — `agent`, `tool`, `workflow` are functions that return plain objects.
|
|
13
13
|
- :jigsaw: **Composition over configuration** — Combine small pieces instead of configuring large ones.
|
|
14
|
-
- :shield: **Result, never throw** — Every public method returns `Result<T>`. Pattern-match on `ok` instead of try/catch.
|
|
14
|
+
- :shield: **Result, never ~~panic~~ throw** — Every public method returns `Result<T>`. Pattern-match on `ok` instead of try/catch.
|
|
15
15
|
- :lock: **Closures are state** — Workflow state is just `let` variables in your handler.
|
|
16
16
|
- :mag: **`$` is optional sugar** — The `$` helpers register data flow for observability; plain imperative code works too.
|
|
17
17
|
|
package/package.json
CHANGED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @funkai/agents@0.4.0 test:coverage /Users/zacrosenbauer/Code/joggr/funkai/packages/agents
|
|
3
|
-
> vitest run --coverage
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[1m[46m RUN [49m[22m [36mv4.1.0 [39m[90m/Users/zacrosenbauer/Code/joggr/funkai/packages/agents[39m
|
|
7
|
-
[2mCoverage enabled with [22m[33mv8[39m
|
|
8
|
-
|
|
9
|
-
[32m✓[39m src/lib/trace.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
10
|
-
[32m✓[39m src/utils/zod.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
11
|
-
[32m✓[39m src/core/agents/flow/steps/race.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
12
|
-
[32m✓[39m src/core/agents/flow/steps/reduce.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
13
|
-
[32m✓[39m src/core/agents/flow/steps/agent.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
14
|
-
[32m✓[39m src/core/agents/flow/steps/step.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
15
|
-
[32m✓[39m src/core/agents/flow/steps/while.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
16
|
-
[32m✓[39m src/lib/middleware.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
17
|
-
[32m✓[39m src/core/agents/flow/steps/all.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 38[2mms[22m[39m
|
|
18
|
-
[90mstdout[2m | src/core/agents/flow/flow-agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
19
|
-
[22m[39m{ flowAgentId: [32m'no-logger-flow'[39m, name: [32m'no-logger-flow'[39m } flowAgent.generate start
|
|
20
|
-
|
|
21
|
-
[90mstdout[2m | src/core/agents/flow/flow-agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
22
|
-
[22m[39m{ flowAgentId: [32m'no-logger-flow'[39m, name: [32m'no-logger-flow'[39m, duration: [33m1[39m } flowAgent.generate finish
|
|
23
|
-
|
|
24
|
-
[32m✓[39m src/core/agents/flow/engine.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
25
|
-
[32m✓[39m src/core/agents/base/output.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 46[2mms[22m[39m
|
|
26
|
-
[32m✓[39m src/core/agents/flow/flow-agent.test.ts [2m([22m[2m47 tests[22m[2m)[22m[32m 22[2mms[22m[39m
|
|
27
|
-
[32m✓[39m src/core/agents/flow/steps/map.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 74[2mms[22m[39m
|
|
28
|
-
[32m✓[39m src/core/agents/flow/steps/factory.test.ts [2m([22m[2m35 tests[22m[2m)[22m[32m 72[2mms[22m[39m
|
|
29
|
-
[32m✓[39m src/lib/hooks.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
30
|
-
[32m✓[39m src/core/logger.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
31
|
-
[90mstdout[2m | src/core/agents/base/agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
32
|
-
[22m[39m{ agentId: [32m'no-logger-agent'[39m, name: [32m'no-logger-agent'[39m } agent.generate start
|
|
33
|
-
|
|
34
|
-
[90mstdout[2m | src/core/agents/base/agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
35
|
-
[22m[39m{ agentId: [32m'no-logger-agent'[39m, name: [32m'no-logger-agent'[39m, duration: [33m1[39m } agent.generate finish
|
|
36
|
-
|
|
37
|
-
[32m✓[39m src/lib/context.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
38
|
-
[32m✓[39m src/core/agents/base/agent.test.ts [2m([22m[2m69 tests[22m[2m)[22m[32m 95[2mms[22m[39m
|
|
39
|
-
[32m✓[39m src/core/agents/flow/steps/each.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
40
|
-
[32m✓[39m src/core/provider/provider.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
41
|
-
[32m✓[39m src/core/models/index.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
42
|
-
[32m✓[39m src/core/provider/usage.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
43
|
-
[32m✓[39m src/core/agents/flow/messages.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
44
|
-
[32m✓[39m src/utils/result.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
45
|
-
[32m✓[39m src/core/agents/base/utils.test.ts [2m([22m[2m28 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
46
|
-
[32m✓[39m src/utils/error.test.ts [2m([22m[2m32 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
47
|
-
[32m✓[39m src/utils/attempt.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
48
|
-
[32m✓[39m src/lib/runnable.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
49
|
-
[32m✓[39m src/utils/resolve.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
50
|
-
[32m✓[39m src/core/tool.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
51
|
-
|
|
52
|
-
[2m Test Files [22m [1m[32m30 passed[39m[22m[90m (30)[39m
|
|
53
|
-
[2m Tests [22m [1m[32m509 passed[39m[22m[90m (509)[39m
|
|
54
|
-
[2m Start at [22m 20:28:55
|
|
55
|
-
[2m Duration [22m 627ms[2m (transform 1.16s, setup 0ms, import 2.72s, tests 492ms, environment 1ms)[22m
|
|
56
|
-
|
|
57
|
-
[34m % [39m[2mCoverage report from [22m[33mv8[39m
|
|
58
|
-
-------------------|---------|----------|---------|---------|-------------------
|
|
59
|
-
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
|
|
60
|
-
-------------------|---------|----------|---------|---------|-------------------
|
|
61
|
-
All files | 92.68 | 87.01 | 91.2 | 92.58 |
|
|
62
|
-
core | 88 | 78.57 | 100 | 88 |
|
|
63
|
-
logger.ts | 100 | 100 | 100 | 100 |
|
|
64
|
-
tool.ts | 78.57 | 70 | 100 | 78.57 | 152,156,160
|
|
65
|
-
types.ts | 0 | 0 | 0 | 0 |
|
|
66
|
-
core/agents/base | 89.03 | 88.67 | 79.59 | 89.03 |
|
|
67
|
-
agent.ts | 85.97 | 80 | 66.66 | 85.97 | ...26-427,470-475
|
|
68
|
-
output.ts | 100 | 100 | 100 | 100 |
|
|
69
|
-
types.ts | 0 | 0 | 0 | 0 |
|
|
70
|
-
utils.ts | 96.36 | 100 | 90 | 96.36 | 174,180
|
|
71
|
-
core/agents/flow | 93.7 | 82.81 | 84.37 | 93.66 |
|
|
72
|
-
engine.ts | 97.14 | 83.33 | 100 | 97.05 | 252
|
|
73
|
-
flow-agent.ts | 94.84 | 82.5 | 85.71 | 94.84 | ...23,346,352-353
|
|
74
|
-
messages.ts | 72.72 | 83.33 | 66.66 | 72.72 | 136-138
|
|
75
|
-
types.ts | 0 | 0 | 0 | 0 |
|
|
76
|
-
...nts/flow/steps | 91.86 | 79.36 | 92.59 | 91.77 |
|
|
77
|
-
agent.ts | 0 | 0 | 0 | 0 |
|
|
78
|
-
all.ts | 0 | 0 | 0 | 0 |
|
|
79
|
-
builder.ts | 0 | 0 | 0 | 0 |
|
|
80
|
-
each.ts | 0 | 0 | 0 | 0 |
|
|
81
|
-
factory.ts | 91.86 | 79.36 | 92.59 | 91.77 | ...29,265-284,613
|
|
82
|
-
map.ts | 0 | 0 | 0 | 0 |
|
|
83
|
-
race.ts | 0 | 0 | 0 | 0 |
|
|
84
|
-
reduce.ts | 0 | 0 | 0 | 0 |
|
|
85
|
-
result.ts | 0 | 0 | 0 | 0 |
|
|
86
|
-
step.ts | 0 | 0 | 0 | 0 |
|
|
87
|
-
while.ts | 0 | 0 | 0 | 0 |
|
|
88
|
-
...dels/providers | 100 | 100 | 100 | 100 |
|
|
89
|
-
openai.ts | 100 | 100 | 100 | 100 |
|
|
90
|
-
core/provider | 100 | 100 | 100 | 100 |
|
|
91
|
-
provider.ts | 100 | 100 | 100 | 100 |
|
|
92
|
-
types.ts | 0 | 0 | 0 | 0 |
|
|
93
|
-
usage.ts | 100 | 100 | 100 | 100 |
|
|
94
|
-
lib | 100 | 94.11 | 100 | 100 |
|
|
95
|
-
context.ts | 0 | 0 | 0 | 0 |
|
|
96
|
-
hooks.ts | 100 | 100 | 100 | 100 |
|
|
97
|
-
middleware.ts | 100 | 88.88 | 100 | 100 | 39
|
|
98
|
-
runnable.ts | 100 | 100 | 100 | 100 |
|
|
99
|
-
trace.ts | 100 | 100 | 100 | 100 |
|
|
100
|
-
testing | 100 | 100 | 100 | 100 |
|
|
101
|
-
context.ts | 100 | 100 | 100 | 100 |
|
|
102
|
-
logger.ts | 100 | 100 | 100 | 100 |
|
|
103
|
-
utils | 100 | 100 | 100 | 100 |
|
|
104
|
-
attempt.ts | 100 | 100 | 100 | 100 |
|
|
105
|
-
error.ts | 100 | 100 | 100 | 100 |
|
|
106
|
-
resolve.ts | 100 | 100 | 100 | 100 |
|
|
107
|
-
result.ts | 100 | 100 | 100 | 100 |
|
|
108
|
-
zod.ts | 100 | 100 | 100 | 100 |
|
|
109
|
-
-------------------|---------|----------|---------|---------|-------------------
|
package/.turbo/turbo-test.log
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
> @funkai/agents@0.4.0 test /Users/zacrosenbauer/Code/joggr/funkai/packages/agents
|
|
4
|
-
> vitest run --typecheck
|
|
5
|
-
|
|
6
|
-
[?25l[33mTesting types with tsc and vue-tsc is an experimental feature.
|
|
7
|
-
Breaking changes might not follow SemVer, please pin Vitest's version when using it.[39m
|
|
8
|
-
|
|
9
|
-
[1m[46m RUN [49m[22m [36mv4.1.0 [39m[90m/Users/zacrosenbauer/Code/joggr/funkai/packages/agents[39m
|
|
10
|
-
|
|
11
|
-
[?2026h
|
|
12
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/output.test.ts[2m [queued][22m
|
|
13
|
-
|
|
14
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (32)[39m
|
|
15
|
-
[2m Tests [22m[1m[32m0 passed[39m[22m[90m (0)[39m
|
|
16
|
-
[2m Start at [22m21:15:41
|
|
17
|
-
[2m Duration [22m100ms
|
|
18
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
19
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/agent.test.ts[2m [queued][22m
|
|
20
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/output.test.ts[2m 0/9[22m
|
|
21
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/utils.test.ts[2m [queued][22m
|
|
22
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/engine.test.ts[2m [queued][22m
|
|
23
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/flow-agent.test.ts[2m [queued][22m
|
|
24
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/agent.test.ts[2m [queued][22m
|
|
25
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/all.test.ts[2m [queued][22m
|
|
26
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/each.test.ts[2m [queued][22m
|
|
27
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/factory.test.ts[2m [queued][22m
|
|
28
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/map.test.ts[2m [queued][22m
|
|
29
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/race.test.ts[2m [queued][22m
|
|
30
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/reduce.test.ts[2m [queued][22m
|
|
31
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/step.test.ts[2m [queued][22m
|
|
32
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/while.test.ts[2m [queued][22m
|
|
33
|
-
[1m[33m ❯ [39m[22msrc/lib/middleware.test.ts[2m [queued][22m
|
|
34
|
-
|
|
35
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (32)[39m
|
|
36
|
-
[2m Tests [22m[1m[32m0 passed[39m[22m[90m (9)[39m
|
|
37
|
-
[2m Start at [22m21:15:41
|
|
38
|
-
[2m Duration [22m203ms
|
|
39
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m src/lib/middleware.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
40
|
-
[32m✓[39m src/core/agents/flow/steps/race.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
41
|
-
[32m✓[39m src/core/agents/flow/steps/each.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
42
|
-
[32m✓[39m src/core/agents/flow/steps/reduce.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
43
|
-
[32m✓[39m src/core/agents/base/utils.test.ts [2m([22m[2m30 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
44
|
-
[32m✓[39m src/core/agents/flow/steps/while.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
45
|
-
[32m✓[39m src/core/agents/flow/steps/agent.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
46
|
-
[32m✓[39m src/core/agents/flow/steps/step.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
47
|
-
[32m✓[39m src/core/agents/base/output.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 33[2mms[22m[39m
|
|
48
|
-
[90mstdout[2m | src/core/agents/flow/engine.test.ts[2m > [22m[2mcreateFlowEngine[2m > [22m[2medge cases[2m > [22m[2mfalls back to createDefaultLogger when logger is omitted from config
|
|
49
|
-
[22m[39m{ flowAgentId: [32m'no-logger-flow'[39m, name: [32m'no-logger-flow'[39m } flowAgent.generate start
|
|
50
|
-
|
|
51
|
-
[90mstdout[2m | src/core/agents/flow/engine.test.ts[2m > [22m[2mcreateFlowEngine[2m > [22m[2medge cases[2m > [22m[2mfalls back to createDefaultLogger when logger is omitted from config
|
|
52
|
-
[22m[39m{ flowAgentId: [32m'no-logger-flow'[39m, name: [32m'no-logger-flow'[39m, duration: [33m1[39m } flowAgent.generate finish
|
|
53
|
-
|
|
54
|
-
[32m✓[39m src/core/agents/flow/engine.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
55
|
-
[90mstdout[2m | src/core/agents/flow/flow-agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
56
|
-
[22m[39m{ flowAgentId: [32m'no-logger-flow'[39m, name: [32m'no-logger-flow'[39m } flowAgent.generate start
|
|
57
|
-
|
|
58
|
-
[90mstdout[2m | src/core/agents/flow/flow-agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
59
|
-
[22m[39m{ flowAgentId: [32m'no-logger-flow'[39m, name: [32m'no-logger-flow'[39m, duration: [33m0[39m } flowAgent.generate finish
|
|
60
|
-
|
|
61
|
-
[32m✓[39m src/core/agents/flow/steps/all.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 40[2mms[22m[39m
|
|
62
|
-
[32m✓[39m src/core/agents/flow/flow-agent.test.ts [2m([22m[2m52 tests[22m[2m)[22m[32m 19[2mms[22m[39m
|
|
63
|
-
[32m✓[39m src/core/agents/flow/steps/factory.test.ts [2m([22m[2m40 tests[22m[2m)[22m[32m 65[2mms[22m[39m
|
|
64
|
-
[32m✓[39m src/core/agents/flow/steps/map.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 75[2mms[22m[39m
|
|
65
|
-
|
|
66
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/agent.test.ts[2m 0/76[22m
|
|
67
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/output.test.ts[2m 9/9[22m
|
|
68
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/utils.test.ts[2m 30/30[22m
|
|
69
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/engine.test.ts[2m 17/17[22m
|
|
70
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/flow-agent.test.ts[2m 52/52[22m
|
|
71
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/agent.test.ts[2m 14/14[22m
|
|
72
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/all.test.ts[2m 14/14[22m
|
|
73
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/each.test.ts[2m 13/13[22m
|
|
74
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/factory.test.ts[2m 40/40[22m
|
|
75
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/map.test.ts[2m 13/13[22m
|
|
76
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/race.test.ts[2m 13/13[22m
|
|
77
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/reduce.test.ts[2m 14/14[22m
|
|
78
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/step.test.ts[2m 19/19[22m
|
|
79
|
-
[1m[33m ❯ [39m[22msrc/core/agents/flow/steps/while.test.ts[2m 14/14[22m
|
|
80
|
-
[1m[33m ❯ [39m[22msrc/core/provider/provider.test.ts[2m [queued][22m
|
|
81
|
-
|
|
82
|
-
[2m Test Files [22m[1m[32m14 passed[39m[22m[90m (32)[39m
|
|
83
|
-
[2m Tests [22m[1m[32m268 passed[39m[22m[90m (344)[39m
|
|
84
|
-
[2m Start at [22m21:15:41
|
|
85
|
-
[2m Duration [22m404ms
|
|
86
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m src/lib/hooks.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
87
|
-
[32m✓[39m src/lib/trace.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
88
|
-
[32m✓[39m src/lib/context.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
89
|
-
[32m✓[39m src/core/logger.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
90
|
-
[32m✓[39m src/core/provider/provider.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
91
|
-
[32m✓[39m src/core/models/index.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
92
|
-
[32m✓[39m src/utils/zod.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
93
|
-
[90mstdout[2m | src/core/agents/base/agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
94
|
-
[22m[39m{ agentId: [32m'no-logger-agent'[39m, name: [32m'no-logger-agent'[39m } agent.generate start
|
|
95
|
-
|
|
96
|
-
[90mstdout[2m | src/core/agents/base/agent.test.ts[2m > [22m[2medge cases[2m > [22m[2muses default logger when none provided
|
|
97
|
-
[22m[39m{ agentId: [32m'no-logger-agent'[39m, name: [32m'no-logger-agent'[39m, duration: [33m1[39m } agent.generate finish
|
|
98
|
-
|
|
99
|
-
[32m✓[39m src/core/agents/flow/messages.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
100
|
-
[32m✓[39m src/utils/error.test.ts [2m([22m[2m32 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
101
|
-
[32m✓[39m src/core/provider/usage.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
102
|
-
[32m✓[39m src/utils/attempt.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
103
|
-
[32m✓[39m src/lib/runnable.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
104
|
-
[32m✓[39m src/utils/resolve.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
[1m[33m ❯ [39m[22msrc/core/agents/base/agent.test.ts[2m 55/76[22m
|
|
110
|
-
[1m[33m ❯ [39m[22msrc/core/tool.test.ts[2m [queued][22m
|
|
111
|
-
[1m[33m ❯ [39m[22msrc/lib/trace.test.ts[2m 19/19[22m
|
|
112
|
-
[1m[33m ❯ [39m[22msrc/utils/result.test.ts[2m 0/10[22m
|
|
113
|
-
|
|
114
|
-
[2m Test Files [22m[1m[32m27 passed[39m[22m[90m (32)[39m
|
|
115
|
-
[2m Tests [22m[1m[32m499 passed[39m[22m[90m (530)[39m
|
|
116
|
-
[2m Start at [22m21:15:41
|
|
117
|
-
[2m Duration [22m504ms
|
|
118
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m src/utils/result.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
119
|
-
[32m✓[39m src/core/tool.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
120
|
-
[32m✓[39m src/core/agents/base/agent.test.ts [2m([22m[2m76 tests[22m[2m)[22m[32m 225[2mms[22m[39m
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
[1m[33m ❯ [39m[22m[44m[1m TS [22m[49m src/core/agents/base/types.test-d.ts[2m 0/13[22m
|
|
126
|
-
[1m[33m ❯ [39m[22m[44m[1m TS [22m[49m src/core/agents/flow/steps/factory.test-d.ts[2m 0/8[22m
|
|
127
|
-
|
|
128
|
-
[2m Test Files [22m[1m[32m30 passed[39m[22m[90m (32)[39m
|
|
129
|
-
[2m Tests [22m[1m[32m536 passed[39m[22m[90m (557)[39m
|
|
130
|
-
[2m Start at [22m21:15:41
|
|
131
|
-
[2m Duration [22m908ms
|
|
132
|
-
[?2026l[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m [44m[1m TS [22m[49m src/core/agents/base/types.test-d.ts [2m([22m[2m13 tests[22m[2m)[22m
|
|
133
|
-
[32m✓[39m [44m[1m TS [22m[49m src/core/agents/flow/steps/factory.test-d.ts [2m([22m[2m8 tests[22m[2m)[22m
|
|
134
|
-
|
|
135
|
-
[2m Test Files [22m [1m[32m32 passed[39m[22m[90m (32)[39m
|
|
136
|
-
[2m Tests [22m [1m[32m557 passed[39m[22m[90m (557)[39m
|
|
137
|
-
[2mType Errors [22m [2mno errors[22m
|
|
138
|
-
[2m Start at [22m 21:15:41
|
|
139
|
-
[2m Duration [22m 1.05s[2m (transform 1.34s, setup 0ms, import 2.93s, tests 573ms, environment 2ms, typecheck 481ms)[22m
|
|
140
|
-
|
|
141
|
-
[?25h
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
body, html {
|
|
2
|
-
margin:0; padding: 0;
|
|
3
|
-
height: 100%;
|
|
4
|
-
}
|
|
5
|
-
body {
|
|
6
|
-
font-family: Helvetica Neue, Helvetica, Arial;
|
|
7
|
-
font-size: 14px;
|
|
8
|
-
color:#333;
|
|
9
|
-
}
|
|
10
|
-
.small { font-size: 12px; }
|
|
11
|
-
*, *:after, *:before {
|
|
12
|
-
-webkit-box-sizing:border-box;
|
|
13
|
-
-moz-box-sizing:border-box;
|
|
14
|
-
box-sizing:border-box;
|
|
15
|
-
}
|
|
16
|
-
h1 { font-size: 20px; margin: 0;}
|
|
17
|
-
h2 { font-size: 14px; }
|
|
18
|
-
pre {
|
|
19
|
-
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
20
|
-
margin: 0;
|
|
21
|
-
padding: 0;
|
|
22
|
-
-moz-tab-size: 2;
|
|
23
|
-
-o-tab-size: 2;
|
|
24
|
-
tab-size: 2;
|
|
25
|
-
}
|
|
26
|
-
a { color:#0074D9; text-decoration:none; }
|
|
27
|
-
a:hover { text-decoration:underline; }
|
|
28
|
-
.strong { font-weight: bold; }
|
|
29
|
-
.space-top1 { padding: 10px 0 0 0; }
|
|
30
|
-
.pad2y { padding: 20px 0; }
|
|
31
|
-
.pad1y { padding: 10px 0; }
|
|
32
|
-
.pad2x { padding: 0 20px; }
|
|
33
|
-
.pad2 { padding: 20px; }
|
|
34
|
-
.pad1 { padding: 10px; }
|
|
35
|
-
.space-left2 { padding-left:55px; }
|
|
36
|
-
.space-right2 { padding-right:20px; }
|
|
37
|
-
.center { text-align:center; }
|
|
38
|
-
.clearfix { display:block; }
|
|
39
|
-
.clearfix:after {
|
|
40
|
-
content:'';
|
|
41
|
-
display:block;
|
|
42
|
-
height:0;
|
|
43
|
-
clear:both;
|
|
44
|
-
visibility:hidden;
|
|
45
|
-
}
|
|
46
|
-
.fl { float: left; }
|
|
47
|
-
@media only screen and (max-width:640px) {
|
|
48
|
-
.col3 { width:100%; max-width:100%; }
|
|
49
|
-
.hide-mobile { display:none!important; }
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.quiet {
|
|
53
|
-
color: #7f7f7f;
|
|
54
|
-
color: rgba(0,0,0,0.5);
|
|
55
|
-
}
|
|
56
|
-
.quiet a { opacity: 0.7; }
|
|
57
|
-
|
|
58
|
-
.fraction {
|
|
59
|
-
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
|
|
60
|
-
font-size: 10px;
|
|
61
|
-
color: #555;
|
|
62
|
-
background: #E8E8E8;
|
|
63
|
-
padding: 4px 5px;
|
|
64
|
-
border-radius: 3px;
|
|
65
|
-
vertical-align: middle;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
div.path a:link, div.path a:visited { color: #333; }
|
|
69
|
-
table.coverage {
|
|
70
|
-
border-collapse: collapse;
|
|
71
|
-
margin: 10px 0 0 0;
|
|
72
|
-
padding: 0;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
table.coverage td {
|
|
76
|
-
margin: 0;
|
|
77
|
-
padding: 0;
|
|
78
|
-
vertical-align: top;
|
|
79
|
-
}
|
|
80
|
-
table.coverage td.line-count {
|
|
81
|
-
text-align: right;
|
|
82
|
-
padding: 0 5px 0 20px;
|
|
83
|
-
}
|
|
84
|
-
table.coverage td.line-coverage {
|
|
85
|
-
text-align: right;
|
|
86
|
-
padding-right: 10px;
|
|
87
|
-
min-width:20px;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
table.coverage td span.cline-any {
|
|
91
|
-
display: inline-block;
|
|
92
|
-
padding: 0 5px;
|
|
93
|
-
width: 100%;
|
|
94
|
-
}
|
|
95
|
-
.missing-if-branch {
|
|
96
|
-
display: inline-block;
|
|
97
|
-
margin-right: 5px;
|
|
98
|
-
border-radius: 3px;
|
|
99
|
-
position: relative;
|
|
100
|
-
padding: 0 4px;
|
|
101
|
-
background: #333;
|
|
102
|
-
color: yellow;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.skip-if-branch {
|
|
106
|
-
display: none;
|
|
107
|
-
margin-right: 10px;
|
|
108
|
-
position: relative;
|
|
109
|
-
padding: 0 4px;
|
|
110
|
-
background: #ccc;
|
|
111
|
-
color: white;
|
|
112
|
-
}
|
|
113
|
-
.missing-if-branch .typ, .skip-if-branch .typ {
|
|
114
|
-
color: inherit !important;
|
|
115
|
-
}
|
|
116
|
-
.coverage-summary {
|
|
117
|
-
border-collapse: collapse;
|
|
118
|
-
width: 100%;
|
|
119
|
-
}
|
|
120
|
-
.coverage-summary tr { border-bottom: 1px solid #bbb; }
|
|
121
|
-
.keyline-all { border: 1px solid #ddd; }
|
|
122
|
-
.coverage-summary td, .coverage-summary th { padding: 10px; }
|
|
123
|
-
.coverage-summary tbody { border: 1px solid #bbb; }
|
|
124
|
-
.coverage-summary td { border-right: 1px solid #bbb; }
|
|
125
|
-
.coverage-summary td:last-child { border-right: none; }
|
|
126
|
-
.coverage-summary th {
|
|
127
|
-
text-align: left;
|
|
128
|
-
font-weight: normal;
|
|
129
|
-
white-space: nowrap;
|
|
130
|
-
}
|
|
131
|
-
.coverage-summary th.file { border-right: none !important; }
|
|
132
|
-
.coverage-summary th.pct { }
|
|
133
|
-
.coverage-summary th.pic,
|
|
134
|
-
.coverage-summary th.abs,
|
|
135
|
-
.coverage-summary td.pct,
|
|
136
|
-
.coverage-summary td.abs { text-align: right; }
|
|
137
|
-
.coverage-summary td.file { white-space: nowrap; }
|
|
138
|
-
.coverage-summary td.pic { min-width: 120px !important; }
|
|
139
|
-
.coverage-summary tfoot td { }
|
|
140
|
-
|
|
141
|
-
.coverage-summary .sorter {
|
|
142
|
-
height: 10px;
|
|
143
|
-
width: 7px;
|
|
144
|
-
display: inline-block;
|
|
145
|
-
margin-left: 0.5em;
|
|
146
|
-
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
|
|
147
|
-
}
|
|
148
|
-
.coverage-summary .sorted .sorter {
|
|
149
|
-
background-position: 0 -20px;
|
|
150
|
-
}
|
|
151
|
-
.coverage-summary .sorted-desc .sorter {
|
|
152
|
-
background-position: 0 -10px;
|
|
153
|
-
}
|
|
154
|
-
.status-line { height: 10px; }
|
|
155
|
-
/* yellow */
|
|
156
|
-
.cbranch-no { background: yellow !important; color: #111; }
|
|
157
|
-
/* dark red */
|
|
158
|
-
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
|
|
159
|
-
.low .chart { border:1px solid #C21F39 }
|
|
160
|
-
.highlighted,
|
|
161
|
-
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
|
|
162
|
-
background: #C21F39 !important;
|
|
163
|
-
}
|
|
164
|
-
/* medium red */
|
|
165
|
-
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
|
|
166
|
-
/* light red */
|
|
167
|
-
.low, .cline-no { background:#FCE1E5 }
|
|
168
|
-
/* light green */
|
|
169
|
-
.high, .cline-yes { background:rgb(230,245,208) }
|
|
170
|
-
/* medium green */
|
|
171
|
-
.cstat-yes { background:rgb(161,215,106) }
|
|
172
|
-
/* dark green */
|
|
173
|
-
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
|
|
174
|
-
.high .chart { border:1px solid rgb(77,146,33) }
|
|
175
|
-
/* dark yellow (gold) */
|
|
176
|
-
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
|
|
177
|
-
.medium .chart { border:1px solid #f9cd0b; }
|
|
178
|
-
/* light yellow */
|
|
179
|
-
.medium { background: #fff4c2; }
|
|
180
|
-
|
|
181
|
-
.cstat-skip { background: #ddd; color: #111; }
|
|
182
|
-
.fstat-skip { background: #ddd; color: #111 !important; }
|
|
183
|
-
.cbranch-skip { background: #ddd !important; color: #111; }
|
|
184
|
-
|
|
185
|
-
span.cline-neutral { background: #eaeaea; }
|
|
186
|
-
|
|
187
|
-
.coverage-summary td.empty {
|
|
188
|
-
opacity: .5;
|
|
189
|
-
padding-top: 4px;
|
|
190
|
-
padding-bottom: 4px;
|
|
191
|
-
line-height: 1;
|
|
192
|
-
color: #888;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.cover-fill, .cover-empty {
|
|
196
|
-
display:inline-block;
|
|
197
|
-
height: 12px;
|
|
198
|
-
}
|
|
199
|
-
.chart {
|
|
200
|
-
line-height: 0;
|
|
201
|
-
}
|
|
202
|
-
.cover-empty {
|
|
203
|
-
background: white;
|
|
204
|
-
}
|
|
205
|
-
.cover-full {
|
|
206
|
-
border-right: none !important;
|
|
207
|
-
}
|
|
208
|
-
pre.prettyprint {
|
|
209
|
-
border: none !important;
|
|
210
|
-
padding: 0 !important;
|
|
211
|
-
margin: 0 !important;
|
|
212
|
-
}
|
|
213
|
-
.com { color: #999 !important; }
|
|
214
|
-
.ignore-none { color: #999; font-weight: normal; }
|
|
215
|
-
|
|
216
|
-
.wrapper {
|
|
217
|
-
min-height: 100%;
|
|
218
|
-
height: auto !important;
|
|
219
|
-
height: 100%;
|
|
220
|
-
margin: 0 auto -48px;
|
|
221
|
-
}
|
|
222
|
-
.footer, .push {
|
|
223
|
-
height: 48px;
|
|
224
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
var jumpToCode = (function init() {
|
|
3
|
-
// Classes of code we would like to highlight in the file view
|
|
4
|
-
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
|
|
5
|
-
|
|
6
|
-
// Elements to highlight in the file listing view
|
|
7
|
-
var fileListingElements = ['td.pct.low'];
|
|
8
|
-
|
|
9
|
-
// We don't want to select elements that are direct descendants of another match
|
|
10
|
-
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
|
|
11
|
-
|
|
12
|
-
// Selector that finds elements on the page to which we can jump
|
|
13
|
-
var selector =
|
|
14
|
-
fileListingElements.join(', ') +
|
|
15
|
-
', ' +
|
|
16
|
-
notSelector +
|
|
17
|
-
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
|
|
18
|
-
|
|
19
|
-
// The NodeList of matching elements
|
|
20
|
-
var missingCoverageElements = document.querySelectorAll(selector);
|
|
21
|
-
|
|
22
|
-
var currentIndex;
|
|
23
|
-
|
|
24
|
-
function toggleClass(index) {
|
|
25
|
-
missingCoverageElements
|
|
26
|
-
.item(currentIndex)
|
|
27
|
-
.classList.remove('highlighted');
|
|
28
|
-
missingCoverageElements.item(index).classList.add('highlighted');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function makeCurrent(index) {
|
|
32
|
-
toggleClass(index);
|
|
33
|
-
currentIndex = index;
|
|
34
|
-
missingCoverageElements.item(index).scrollIntoView({
|
|
35
|
-
behavior: 'smooth',
|
|
36
|
-
block: 'center',
|
|
37
|
-
inline: 'center'
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function goToPrevious() {
|
|
42
|
-
var nextIndex = 0;
|
|
43
|
-
if (typeof currentIndex !== 'number' || currentIndex === 0) {
|
|
44
|
-
nextIndex = missingCoverageElements.length - 1;
|
|
45
|
-
} else if (missingCoverageElements.length > 1) {
|
|
46
|
-
nextIndex = currentIndex - 1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
makeCurrent(nextIndex);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function goToNext() {
|
|
53
|
-
var nextIndex = 0;
|
|
54
|
-
|
|
55
|
-
if (
|
|
56
|
-
typeof currentIndex === 'number' &&
|
|
57
|
-
currentIndex < missingCoverageElements.length - 1
|
|
58
|
-
) {
|
|
59
|
-
nextIndex = currentIndex + 1;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
makeCurrent(nextIndex);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return function jump(event) {
|
|
66
|
-
if (
|
|
67
|
-
document.getElementById('fileSearch') === document.activeElement &&
|
|
68
|
-
document.activeElement != null
|
|
69
|
-
) {
|
|
70
|
-
// if we're currently focused on the search input, we don't want to navigate
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
switch (event.which) {
|
|
75
|
-
case 78: // n
|
|
76
|
-
case 74: // j
|
|
77
|
-
goToNext();
|
|
78
|
-
break;
|
|
79
|
-
case 66: // b
|
|
80
|
-
case 75: // k
|
|
81
|
-
case 80: // p
|
|
82
|
-
goToPrevious();
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
})();
|
|
87
|
-
window.addEventListener('keydown', jumpToCode);
|