@draig/lexis-two 1.0.0
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/.agents/plugins/marketplace.json +21 -0
- package/.claude-plugin/marketplace.json +29 -0
- package/.claude-plugin/plugin.json +9 -0
- package/.clinerules/lexis-two.md +163 -0
- package/.codex-plugin/plugin.json +31 -0
- package/.cursor/rules/lexis-two.mdc +169 -0
- package/.env.example +8 -0
- package/.github/FUNDING.yml +1 -0
- package/.github/copilot-instructions.md +47 -0
- package/.github/plugin/marketplace.json +20 -0
- package/.github/plugin/plugin.json +16 -0
- package/.github/workflows/deploy-site.yml +53 -0
- package/.github/workflows/test.yml +29 -0
- package/.kiro/steering/lexis-two.md +167 -0
- package/.nojekyll +0 -0
- package/.opencode/command/lexis-two-audit.md +5 -0
- package/.opencode/command/lexis-two-debt.md +5 -0
- package/.opencode/command/lexis-two-help.md +5 -0
- package/.opencode/command/lexis-two-plan.md +5 -0
- package/.opencode/command/lexis-two-review.md +5 -0
- package/.opencode/command/lexis-two-security.md +5 -0
- package/.opencode/command/lexis-two.md +5 -0
- package/.opencode/plugins/lexis-two.mjs +74 -0
- package/.windsurf/rules/lexis-two.md +163 -0
- package/AGENTS.md +163 -0
- package/AUDIT.md +74 -0
- package/CNAME +1 -0
- package/LICENSE +23 -0
- package/README.md +301 -0
- package/SPECXIS.md +576 -0
- package/assets/benchmark-3model.svg +21 -0
- package/assets/lexis-two-complete.webp +0 -0
- package/assets/lexis-two-nobg.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/social-preview.png +0 -0
- package/benchmarks/README.md +114 -0
- package/benchmarks/arms/baseline.js +2 -0
- package/benchmarks/arms/caveman-SKILL.md +67 -0
- package/benchmarks/arms/caveman.js +8 -0
- package/benchmarks/arms/lexis-two.js +10 -0
- package/benchmarks/arms/ponytail.js +6 -0
- package/benchmarks/behavior.js +58 -0
- package/benchmarks/behavior.yaml +40 -0
- package/benchmarks/benchmark-local.py +156 -0
- package/benchmarks/benchmark-opencode-go.js +294 -0
- package/benchmarks/correctness.js +294 -0
- package/benchmarks/lib/aggregate-opencode-go.js +103 -0
- package/benchmarks/lib/load-env.js +31 -0
- package/benchmarks/lib/opencode-go-client.js +151 -0
- package/benchmarks/loc.js +13 -0
- package/benchmarks/opencode-go-models.json +31 -0
- package/benchmarks/promptfooconfig.yaml +41 -0
- package/benchmarks/prompts.json +15 -0
- package/benchmarks/render-opencode-go-report.js +28 -0
- package/benchmarks/results/2026-06-15-llama3.2-local.md +76 -0
- package/benchmarks/results/2026-06-16-opencode-go.md +56 -0
- package/benchmarks/results/opencode-go-2026-06-16-report.html +226 -0
- package/benchmarks/results/opencode-go-2026-06-16.json +1339 -0
- package/commands/lexis-two-audit.toml +3 -0
- package/commands/lexis-two-debt.toml +3 -0
- package/commands/lexis-two-help.toml +3 -0
- package/commands/lexis-two-plan.toml +3 -0
- package/commands/lexis-two-review.toml +3 -0
- package/commands/lexis-two-security.toml +3 -0
- package/commands/lexis-two.toml +3 -0
- package/docs/assets/lexis-two-nobg.png +0 -0
- package/docs/assets/logo.png +0 -0
- package/docs/assets/logo.svg +4 -0
- package/docs/portability.md +147 -0
- package/docs/site.md +52 -0
- package/examples/api-endpoint.md +68 -0
- package/examples/caching.md +74 -0
- package/examples/date-picker.md +48 -0
- package/examples/email-validation.md +51 -0
- package/examples/sorting.md +42 -0
- package/gemini-extension.json +7 -0
- package/hooks/copilot-hooks.json +21 -0
- package/hooks/hooks.json +31 -0
- package/hooks/lexis-two-activate.js +72 -0
- package/hooks/lexis-two-config.js +101 -0
- package/hooks/lexis-two-instructions.js +126 -0
- package/hooks/lexis-two-mode-tracker.js +55 -0
- package/hooks/lexis-two-runtime.js +50 -0
- package/hooks/lexis-two-statusline.ps1 +19 -0
- package/hooks/lexis-two-statusline.sh +11 -0
- package/opencode.json +4 -0
- package/package.json +31 -0
- package/pi-extension/index.js +161 -0
- package/pi-extension/package.json +8 -0
- package/pi-extension/test/extension.test.js +89 -0
- package/pi-extension/test/helpers.test.js +35 -0
- package/scripts/check-rule-copies.js +82 -0
- package/site/astro.config.mjs +18 -0
- package/site/package-lock.json +4913 -0
- package/site/package.json +14 -0
- package/site/public/CNAME +1 -0
- package/site/public/assets/lexis-two-nobg.png +0 -0
- package/site/public/assets/logo.png +0 -0
- package/site/public/assets/logo.svg +4 -0
- package/site/public/robots.txt +4 -0
- package/site/src/components/Adapt.astro +33 -0
- package/site/src/components/Benchmarks.astro +232 -0
- package/site/src/components/Commands.astro +33 -0
- package/site/src/components/Ecosystem.astro +30 -0
- package/site/src/components/Example.astro +77 -0
- package/site/src/components/Footer.astro +28 -0
- package/site/src/components/Header.astro +87 -0
- package/site/src/components/Hero.astro +58 -0
- package/site/src/components/Home.astro +46 -0
- package/site/src/components/Hosts.astro +62 -0
- package/site/src/components/Install.astro +143 -0
- package/site/src/components/LanguageSwitcher.astro +82 -0
- package/site/src/components/Philosophy.astro +23 -0
- package/site/src/components/Stacks.astro +33 -0
- package/site/src/components/Suggested.astro +39 -0
- package/site/src/data/opencode-go-benchmark.json +230 -0
- package/site/src/i18n/en.ts +155 -0
- package/site/src/i18n/es.ts +158 -0
- package/site/src/i18n/index.ts +14 -0
- package/site/src/layouts/Layout.astro +114 -0
- package/site/src/pages/benchmarks.astro +4 -0
- package/site/src/pages/es/benchmarks.astro +4 -0
- package/site/src/pages/es/index.astro +10 -0
- package/site/src/pages/index.astro +10 -0
- package/site/src/styles/global.css +780 -0
- package/site/tsconfig.json +3 -0
- package/skills/lexis-two/SKILL.md +109 -0
- package/skills/lexis-two-audit/SKILL.md +21 -0
- package/skills/lexis-two-debt/SKILL.md +22 -0
- package/skills/lexis-two-plan/SKILL.md +25 -0
- package/skills/lexis-two-review/SKILL.md +24 -0
- package/skills/lexis-two-security/SKILL.md +24 -0
- package/tests/behavior.test.js +80 -0
- package/tests/commands.test.js +40 -0
- package/tests/copilot-plugin.test.js +33 -0
- package/tests/correctness.test.js +191 -0
- package/tests/gemini-extension.test.js +78 -0
- package/tests/hooks-windows.test.js +48 -0
- package/tests/hooks.test.js +177 -0
- package/tests/opencode-plugin.test.js +64 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props {
|
|
3
|
+
hosts: {
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle: string;
|
|
6
|
+
headHost: string;
|
|
7
|
+
headLevel: string;
|
|
8
|
+
headEntry: string;
|
|
9
|
+
rows: readonly {
|
|
10
|
+
host: string;
|
|
11
|
+
level: string;
|
|
12
|
+
entry: string;
|
|
13
|
+
}[];
|
|
14
|
+
levelFull: string;
|
|
15
|
+
levelSoon: string;
|
|
16
|
+
levelRules: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const { hosts } = Astro.props;
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
<section id="hosts">
|
|
24
|
+
<div class="wrap">
|
|
25
|
+
<div class="section-head">
|
|
26
|
+
<h2>{hosts.title}</h2>
|
|
27
|
+
<p set:html={hosts.subtitle} />
|
|
28
|
+
</div>
|
|
29
|
+
<div class="table-wrap">
|
|
30
|
+
<table>
|
|
31
|
+
<thead>
|
|
32
|
+
<tr>
|
|
33
|
+
<th scope="col">{hosts.headHost}</th>
|
|
34
|
+
<th scope="col">{hosts.headLevel}</th>
|
|
35
|
+
<th scope="col">{hosts.headEntry}</th>
|
|
36
|
+
</tr>
|
|
37
|
+
</thead>
|
|
38
|
+
<tbody>
|
|
39
|
+
{
|
|
40
|
+
hosts.rows.map((row) => (
|
|
41
|
+
<tr>
|
|
42
|
+
<td>{row.host}</td>
|
|
43
|
+
<td>
|
|
44
|
+
<span class:list={["pill", row.level]}>
|
|
45
|
+
{row.level === "full"
|
|
46
|
+
? hosts.levelFull
|
|
47
|
+
: row.level === "soon"
|
|
48
|
+
? hosts.levelSoon
|
|
49
|
+
: hosts.levelRules}
|
|
50
|
+
</span>
|
|
51
|
+
</td>
|
|
52
|
+
<td>
|
|
53
|
+
<code>{row.entry}</code>
|
|
54
|
+
</td>
|
|
55
|
+
</tr>
|
|
56
|
+
))
|
|
57
|
+
}
|
|
58
|
+
</tbody>
|
|
59
|
+
</table>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</section>
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props {
|
|
3
|
+
install: {
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle: string;
|
|
6
|
+
tabOpencode: string;
|
|
7
|
+
tabCursor: string;
|
|
8
|
+
tabClone: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const { install } = Astro.props;
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<section id="install">
|
|
16
|
+
<div class="wrap">
|
|
17
|
+
<div class="section-head">
|
|
18
|
+
<h2>{install.title}</h2>
|
|
19
|
+
<p>{install.subtitle}</p>
|
|
20
|
+
</div>
|
|
21
|
+
<div
|
|
22
|
+
class="install-tabs"
|
|
23
|
+
role="tablist"
|
|
24
|
+
aria-label="Install instructions"
|
|
25
|
+
>
|
|
26
|
+
<button
|
|
27
|
+
type="button"
|
|
28
|
+
class="tab-btn"
|
|
29
|
+
role="tab"
|
|
30
|
+
aria-selected="true"
|
|
31
|
+
aria-controls="tab-opencode-npm"
|
|
32
|
+
id="tab-btn-opencode-npm"
|
|
33
|
+
>
|
|
34
|
+
OpenCode (npm)
|
|
35
|
+
</button>
|
|
36
|
+
<button
|
|
37
|
+
type="button"
|
|
38
|
+
class="tab-btn"
|
|
39
|
+
role="tab"
|
|
40
|
+
aria-selected="false"
|
|
41
|
+
aria-controls="tab-opencode"
|
|
42
|
+
id="tab-btn-opencode"
|
|
43
|
+
>
|
|
44
|
+
OpenCode (Local)
|
|
45
|
+
</button>
|
|
46
|
+
<button
|
|
47
|
+
type="button"
|
|
48
|
+
class="tab-btn"
|
|
49
|
+
role="tab"
|
|
50
|
+
aria-selected="false"
|
|
51
|
+
aria-controls="tab-cursor"
|
|
52
|
+
id="tab-btn-cursor"
|
|
53
|
+
>
|
|
54
|
+
{install.tabCursor}
|
|
55
|
+
</button>
|
|
56
|
+
<button
|
|
57
|
+
type="button"
|
|
58
|
+
class="tab-btn"
|
|
59
|
+
role="tab"
|
|
60
|
+
aria-selected="false"
|
|
61
|
+
aria-controls="tab-clone"
|
|
62
|
+
id="tab-btn-clone"
|
|
63
|
+
>
|
|
64
|
+
{install.tabClone}
|
|
65
|
+
</button>
|
|
66
|
+
</div>
|
|
67
|
+
<div
|
|
68
|
+
id="tab-opencode-npm"
|
|
69
|
+
class="tab-panel active"
|
|
70
|
+
role="tabpanel"
|
|
71
|
+
aria-labelledby="tab-btn-opencode-npm"
|
|
72
|
+
>
|
|
73
|
+
<pre><code set:html={`# Add to your opencode.json
|
|
74
|
+
{
|
|
75
|
+
"plugin": ["@nitdraig/lexis-two"]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# Optional: Copy slash commands globally to use them anywhere
|
|
79
|
+
mkdir -p ~/.config/opencode/commands
|
|
80
|
+
cp -r .opencode/command/lexis-two*.md ~/.config/opencode/commands/`} /></pre>
|
|
81
|
+
</div>
|
|
82
|
+
<div
|
|
83
|
+
id="tab-opencode"
|
|
84
|
+
class="tab-panel"
|
|
85
|
+
role="tabpanel"
|
|
86
|
+
aria-labelledby="tab-btn-opencode"
|
|
87
|
+
hidden
|
|
88
|
+
>
|
|
89
|
+
<pre><code set:html={`git clone https://github.com/nitdraig/lexis-two.git ~/lexis-two
|
|
90
|
+
|
|
91
|
+
# opencode.json
|
|
92
|
+
{
|
|
93
|
+
"plugin": ["~/lexis-two/.opencode/plugins/lexis-two.mjs"],
|
|
94
|
+
"instructions": ["~/lexis-two/AGENTS.md"]
|
|
95
|
+
}`} /></pre>
|
|
96
|
+
</div>
|
|
97
|
+
<div
|
|
98
|
+
id="tab-cursor"
|
|
99
|
+
class="tab-panel"
|
|
100
|
+
role="tabpanel"
|
|
101
|
+
aria-labelledby="tab-btn-cursor"
|
|
102
|
+
hidden
|
|
103
|
+
>
|
|
104
|
+
<pre><code>git clone https://github.com/nitdraig/lexis-two.git ~/lexis-two
|
|
105
|
+
cp ~/lexis-two/.cursor/rules/lexis-two.mdc .cursor/rules/lexis-two.mdc
|
|
106
|
+
|
|
107
|
+
# Or globally:
|
|
108
|
+
cp ~/lexis-two/.cursor/rules/lexis-two.mdc ~/.cursor/rules/lexis-two.mdc</code></pre>
|
|
109
|
+
</div>
|
|
110
|
+
<div
|
|
111
|
+
id="tab-clone"
|
|
112
|
+
class="tab-panel"
|
|
113
|
+
role="tabpanel"
|
|
114
|
+
aria-labelledby="tab-btn-clone"
|
|
115
|
+
hidden
|
|
116
|
+
>
|
|
117
|
+
<pre><code set:html={`git clone https://github.com/nitdraig/lexis-two.git ~/lexis-two
|
|
118
|
+
|
|
119
|
+
# More hosts: docs/portability.md in the repo
|
|
120
|
+
# Default mode: LEXIS_TWO_DEFAULT_MODE=full
|
|
121
|
+
# Or ~/.config/lexis-two/config.json → { "defaultMode": "full" }`} /></pre>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</section>
|
|
125
|
+
|
|
126
|
+
<script>
|
|
127
|
+
document.querySelectorAll(".tab-btn").forEach(function (btn) {
|
|
128
|
+
btn.addEventListener("click", function () {
|
|
129
|
+
var target = btn.getAttribute("aria-controls");
|
|
130
|
+
document.querySelectorAll(".tab-btn").forEach(function (b) {
|
|
131
|
+
b.setAttribute("aria-selected", "false");
|
|
132
|
+
});
|
|
133
|
+
document.querySelectorAll(".tab-panel").forEach(function (p) {
|
|
134
|
+
p.classList.remove("active");
|
|
135
|
+
p.hidden = true;
|
|
136
|
+
});
|
|
137
|
+
btn.setAttribute("aria-selected", "true");
|
|
138
|
+
var panel = document.getElementById(target!);
|
|
139
|
+
panel!.classList.add("active");
|
|
140
|
+
panel!.hidden = false;
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
</script>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { Locale } from "../i18n/index.js";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
locale: Locale;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const { locale } = Astro.props;
|
|
9
|
+
const otherLocale: Locale = locale === "en" ? "es" : "en";
|
|
10
|
+
const otherLabel = locale === "en" ? "ES" : "EN";
|
|
11
|
+
|
|
12
|
+
const currentPath = Astro.url.pathname;
|
|
13
|
+
let targetPath: string;
|
|
14
|
+
if (locale === "en") {
|
|
15
|
+
targetPath = `/es${currentPath}`;
|
|
16
|
+
} else {
|
|
17
|
+
targetPath = currentPath.replace(/^\/es/, "") || "/";
|
|
18
|
+
}
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
<a
|
|
22
|
+
href={targetPath}
|
|
23
|
+
class="lang-switch"
|
|
24
|
+
aria-label={locale === "en" ? "Cambiar a espanol" : "Switch to English"}
|
|
25
|
+
title={locale === "en" ? "Espanol" : "English"}
|
|
26
|
+
>
|
|
27
|
+
<svg
|
|
28
|
+
width="16"
|
|
29
|
+
height="16"
|
|
30
|
+
viewBox="0 0 24 24"
|
|
31
|
+
fill="none"
|
|
32
|
+
stroke="currentColor"
|
|
33
|
+
stroke-width="2"
|
|
34
|
+
stroke-linecap="round"
|
|
35
|
+
stroke-linejoin="round"
|
|
36
|
+
aria-hidden="true"
|
|
37
|
+
>
|
|
38
|
+
<circle cx="12" cy="12" r="10" />
|
|
39
|
+
<path d="M2 12h20" />
|
|
40
|
+
<path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" />
|
|
41
|
+
</svg>
|
|
42
|
+
<span>{otherLabel}</span>
|
|
43
|
+
</a>
|
|
44
|
+
|
|
45
|
+
<style>
|
|
46
|
+
.lang-switch {
|
|
47
|
+
display: inline-flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
gap: 0.35rem;
|
|
50
|
+
font-family: var(--font-mono);
|
|
51
|
+
font-size: 0.75rem;
|
|
52
|
+
font-weight: 600;
|
|
53
|
+
padding: 0.4rem 0.7rem;
|
|
54
|
+
border: 1px solid var(--border-bright);
|
|
55
|
+
border-radius: 999px;
|
|
56
|
+
background: var(--bg-elevated);
|
|
57
|
+
color: var(--text-muted);
|
|
58
|
+
text-decoration: none;
|
|
59
|
+
transition:
|
|
60
|
+
border-color 0.15s ease,
|
|
61
|
+
color 0.15s ease,
|
|
62
|
+
background 0.15s ease;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.lang-switch:hover {
|
|
67
|
+
border-color: var(--accent-dim);
|
|
68
|
+
color: var(--accent);
|
|
69
|
+
background: var(--accent-glow);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.lang-switch svg {
|
|
73
|
+
flex-shrink: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@media (max-width: 767px) {
|
|
77
|
+
.lang-switch {
|
|
78
|
+
margin-left: 0;
|
|
79
|
+
margin-top: 0.25rem;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props {
|
|
3
|
+
philosophy: {
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle: string;
|
|
6
|
+
rungs: readonly string[];
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { philosophy } = Astro.props;
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<section id="philosophy">
|
|
14
|
+
<div class="wrap">
|
|
15
|
+
<div class="section-head">
|
|
16
|
+
<h2>{philosophy.title}</h2>
|
|
17
|
+
<p>{philosophy.subtitle}</p>
|
|
18
|
+
</div>
|
|
19
|
+
<ol class="ladder">
|
|
20
|
+
{philosophy.rungs.map((rung) => <li>{rung}</li>)}
|
|
21
|
+
</ol>
|
|
22
|
+
</div>
|
|
23
|
+
</section>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props {
|
|
3
|
+
stacks: {
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle: string;
|
|
6
|
+
items: readonly {
|
|
7
|
+
name: string;
|
|
8
|
+
desc: string;
|
|
9
|
+
}[];
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const { stacks } = Astro.props;
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<section id="stacks">
|
|
17
|
+
<div class="wrap">
|
|
18
|
+
<div class="section-head">
|
|
19
|
+
<h2>{stacks.title}</h2>
|
|
20
|
+
<p>{stacks.subtitle}</p>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="stacks-grid">
|
|
23
|
+
{
|
|
24
|
+
stacks.items.map((stack) => (
|
|
25
|
+
<div class="stack-card">
|
|
26
|
+
<h3>{stack.name}</h3>
|
|
27
|
+
<p>{stack.desc}</p>
|
|
28
|
+
</div>
|
|
29
|
+
))
|
|
30
|
+
}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</section>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
interface Props {
|
|
3
|
+
suggested: {
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle: string;
|
|
6
|
+
items: readonly {
|
|
7
|
+
name: string;
|
|
8
|
+
url: string;
|
|
9
|
+
desc: string;
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const { suggested } = Astro.props;
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<section id="suggested">
|
|
18
|
+
<div class="wrap">
|
|
19
|
+
<div class="section-head">
|
|
20
|
+
<h2>{suggested.title}</h2>
|
|
21
|
+
<p>{suggested.subtitle}</p>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="suggested-list">
|
|
24
|
+
{
|
|
25
|
+
suggested.items.map((item) => (
|
|
26
|
+
<a
|
|
27
|
+
href={item.url}
|
|
28
|
+
class="suggested-card"
|
|
29
|
+
target="_blank"
|
|
30
|
+
rel="noopener noreferrer"
|
|
31
|
+
>
|
|
32
|
+
<h3>{item.name}</h3>
|
|
33
|
+
<p>{item.desc}</p>
|
|
34
|
+
</a>
|
|
35
|
+
))
|
|
36
|
+
}
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</section>
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "opencode-go-2026-06-16.json",
|
|
3
|
+
"date": "2026-06-16",
|
|
4
|
+
"repeat": 3,
|
|
5
|
+
"models": [
|
|
6
|
+
{
|
|
7
|
+
"id": "kimi-k2.6",
|
|
8
|
+
"label": "Kimi K2.6",
|
|
9
|
+
"locByArmTask": {
|
|
10
|
+
"baseline": {
|
|
11
|
+
"email": 46,
|
|
12
|
+
"debounce": 63,
|
|
13
|
+
"csv-sum": 18,
|
|
14
|
+
"countdown": 413,
|
|
15
|
+
"rate-limit": 62
|
|
16
|
+
},
|
|
17
|
+
"lexis-two": {
|
|
18
|
+
"email": 13,
|
|
19
|
+
"debounce": 10,
|
|
20
|
+
"csv-sum": 4,
|
|
21
|
+
"countdown": 13,
|
|
22
|
+
"rate-limit": 23
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"timeByArmTask": {
|
|
26
|
+
"baseline": {
|
|
27
|
+
"email": 14.996,
|
|
28
|
+
"debounce": 6.997,
|
|
29
|
+
"csv-sum": 5.53,
|
|
30
|
+
"countdown": 22.661,
|
|
31
|
+
"rate-limit": 9.316
|
|
32
|
+
},
|
|
33
|
+
"lexis-two": {
|
|
34
|
+
"email": 7.944,
|
|
35
|
+
"debounce": 7.106,
|
|
36
|
+
"csv-sum": 5.982,
|
|
37
|
+
"countdown": 13.821,
|
|
38
|
+
"rate-limit": 18.117
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"correctByArm": {
|
|
42
|
+
"baseline": {
|
|
43
|
+
"pass": 12,
|
|
44
|
+
"total": 15
|
|
45
|
+
},
|
|
46
|
+
"lexis-two": {
|
|
47
|
+
"pass": 12,
|
|
48
|
+
"total": 15
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"totals": {
|
|
52
|
+
"baselineLoc": 602,
|
|
53
|
+
"lexisLoc": 63,
|
|
54
|
+
"reductionPct": 90,
|
|
55
|
+
"baselineTimeSec": 59.5,
|
|
56
|
+
"lexisTimeSec": 53
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "deepseek-v4-pro",
|
|
61
|
+
"label": "DeepSeek V4",
|
|
62
|
+
"locByArmTask": {
|
|
63
|
+
"baseline": {
|
|
64
|
+
"email": 36,
|
|
65
|
+
"debounce": 61,
|
|
66
|
+
"csv-sum": 25,
|
|
67
|
+
"countdown": 113,
|
|
68
|
+
"rate-limit": 53
|
|
69
|
+
},
|
|
70
|
+
"lexis-two": {
|
|
71
|
+
"email": 9,
|
|
72
|
+
"debounce": 12,
|
|
73
|
+
"csv-sum": 4,
|
|
74
|
+
"countdown": 12,
|
|
75
|
+
"rate-limit": 20
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"timeByArmTask": {
|
|
79
|
+
"baseline": {
|
|
80
|
+
"email": 37.21,
|
|
81
|
+
"debounce": 21.122,
|
|
82
|
+
"csv-sum": 10.365,
|
|
83
|
+
"countdown": 33.662,
|
|
84
|
+
"rate-limit": 31.551
|
|
85
|
+
},
|
|
86
|
+
"lexis-two": {
|
|
87
|
+
"email": 68.671,
|
|
88
|
+
"debounce": 16.821,
|
|
89
|
+
"csv-sum": 25.552,
|
|
90
|
+
"countdown": 45.493,
|
|
91
|
+
"rate-limit": 47.007
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"correctByArm": {
|
|
95
|
+
"baseline": {
|
|
96
|
+
"pass": 14,
|
|
97
|
+
"total": 15
|
|
98
|
+
},
|
|
99
|
+
"lexis-two": {
|
|
100
|
+
"pass": 13,
|
|
101
|
+
"total": 15
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"totals": {
|
|
105
|
+
"baselineLoc": 288,
|
|
106
|
+
"lexisLoc": 57,
|
|
107
|
+
"reductionPct": 80,
|
|
108
|
+
"baselineTimeSec": 133.9,
|
|
109
|
+
"lexisTimeSec": 203.5
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "qwen3.7-max",
|
|
114
|
+
"label": "Qwen3.7 Max",
|
|
115
|
+
"locByArmTask": {
|
|
116
|
+
"baseline": {
|
|
117
|
+
"email": 39,
|
|
118
|
+
"debounce": 48,
|
|
119
|
+
"csv-sum": 19,
|
|
120
|
+
"countdown": 124,
|
|
121
|
+
"rate-limit": 40
|
|
122
|
+
},
|
|
123
|
+
"lexis-two": {
|
|
124
|
+
"email": 14,
|
|
125
|
+
"debounce": 9,
|
|
126
|
+
"csv-sum": 4,
|
|
127
|
+
"countdown": 10,
|
|
128
|
+
"rate-limit": 17
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"timeByArmTask": {
|
|
132
|
+
"baseline": {
|
|
133
|
+
"email": 58.608,
|
|
134
|
+
"debounce": 32.691,
|
|
135
|
+
"csv-sum": 26.66,
|
|
136
|
+
"countdown": 52.281,
|
|
137
|
+
"rate-limit": 42.698
|
|
138
|
+
},
|
|
139
|
+
"lexis-two": {
|
|
140
|
+
"email": 39.348,
|
|
141
|
+
"debounce": 27.973,
|
|
142
|
+
"csv-sum": 26.696,
|
|
143
|
+
"countdown": 38.458,
|
|
144
|
+
"rate-limit": 39.445
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"correctByArm": {
|
|
148
|
+
"baseline": {
|
|
149
|
+
"pass": 12,
|
|
150
|
+
"total": 15
|
|
151
|
+
},
|
|
152
|
+
"lexis-two": {
|
|
153
|
+
"pass": 13,
|
|
154
|
+
"total": 15
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"totals": {
|
|
158
|
+
"baselineLoc": 270,
|
|
159
|
+
"lexisLoc": 54,
|
|
160
|
+
"reductionPct": 80,
|
|
161
|
+
"baselineTimeSec": 212.9,
|
|
162
|
+
"lexisTimeSec": 171.9
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"id": "minimax-m3",
|
|
167
|
+
"label": "MiniMax M3",
|
|
168
|
+
"locByArmTask": {
|
|
169
|
+
"baseline": {
|
|
170
|
+
"email": 55,
|
|
171
|
+
"debounce": 66,
|
|
172
|
+
"csv-sum": 33,
|
|
173
|
+
"countdown": 112,
|
|
174
|
+
"rate-limit": 59
|
|
175
|
+
},
|
|
176
|
+
"lexis-two": {
|
|
177
|
+
"email": 9,
|
|
178
|
+
"debounce": 10,
|
|
179
|
+
"csv-sum": 4,
|
|
180
|
+
"countdown": 18,
|
|
181
|
+
"rate-limit": 15
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"timeByArmTask": {
|
|
185
|
+
"baseline": {
|
|
186
|
+
"email": 13.415,
|
|
187
|
+
"debounce": 12.657,
|
|
188
|
+
"csv-sum": 6.729,
|
|
189
|
+
"countdown": 12.771,
|
|
190
|
+
"rate-limit": 14.89
|
|
191
|
+
},
|
|
192
|
+
"lexis-two": {
|
|
193
|
+
"email": 6.683,
|
|
194
|
+
"debounce": 3.81,
|
|
195
|
+
"csv-sum": 2.563,
|
|
196
|
+
"countdown": 4.428,
|
|
197
|
+
"rate-limit": 4.817
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"correctByArm": {
|
|
201
|
+
"baseline": {
|
|
202
|
+
"pass": 11,
|
|
203
|
+
"total": 15
|
|
204
|
+
},
|
|
205
|
+
"lexis-two": {
|
|
206
|
+
"pass": 15,
|
|
207
|
+
"total": 15
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"totals": {
|
|
211
|
+
"baselineLoc": 325,
|
|
212
|
+
"lexisLoc": 56,
|
|
213
|
+
"reductionPct": 83,
|
|
214
|
+
"baselineTimeSec": 60.5,
|
|
215
|
+
"lexisTimeSec": 22.3
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
],
|
|
219
|
+
"tasks": [
|
|
220
|
+
"email",
|
|
221
|
+
"debounce",
|
|
222
|
+
"csv-sum",
|
|
223
|
+
"countdown",
|
|
224
|
+
"rate-limit"
|
|
225
|
+
],
|
|
226
|
+
"arms": [
|
|
227
|
+
"baseline",
|
|
228
|
+
"lexis-two"
|
|
229
|
+
]
|
|
230
|
+
}
|