@draig/lexis-two 1.0.2 → 1.0.3
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/package.json +1 -1
- package/.claude-plugin/marketplace.json +0 -29
- package/.claude-plugin/plugin.json +0 -9
- package/.codex-plugin/plugin.json +0 -31
- package/.env.example +0 -8
- package/.github/FUNDING.yml +0 -1
- package/.github/copilot-instructions.md +0 -47
- package/.github/plugin/marketplace.json +0 -20
- package/.github/plugin/plugin.json +0 -16
- package/.github/workflows/deploy-site.yml +0 -53
- package/.github/workflows/test.yml +0 -29
- package/AUDIT.md +0 -74
- package/SPECXIS.md +0 -576
- package/benchmarks/README.md +0 -114
- package/benchmarks/arms/baseline.js +0 -2
- package/benchmarks/arms/caveman-SKILL.md +0 -67
- package/benchmarks/arms/caveman.js +0 -8
- package/benchmarks/arms/lexis-two.js +0 -10
- package/benchmarks/arms/ponytail.js +0 -6
- package/benchmarks/behavior.js +0 -58
- package/benchmarks/behavior.yaml +0 -40
- package/benchmarks/benchmark-local.py +0 -156
- package/benchmarks/benchmark-opencode-go.js +0 -294
- package/benchmarks/correctness.js +0 -294
- package/benchmarks/lib/aggregate-opencode-go.js +0 -103
- package/benchmarks/lib/load-env.js +0 -31
- package/benchmarks/lib/opencode-go-client.js +0 -151
- package/benchmarks/loc.js +0 -13
- package/benchmarks/opencode-go-models.json +0 -31
- package/benchmarks/promptfooconfig.yaml +0 -41
- package/benchmarks/prompts.json +0 -15
- package/benchmarks/render-opencode-go-report.js +0 -28
- package/benchmarks/results/2026-06-15-llama3.2-local.md +0 -76
- package/benchmarks/results/2026-06-16-opencode-go.md +0 -56
- package/benchmarks/results/opencode-go-2026-06-16-report.html +0 -226
- package/benchmarks/results/opencode-go-2026-06-16.json +0 -1339
- package/docs/assets/lexis-two-nobg.png +0 -0
- package/docs/assets/logo.png +0 -0
- package/docs/assets/logo.svg +0 -4
- package/docs/portability.md +0 -147
- package/docs/site.md +0 -52
- package/gemini-extension.json +0 -7
- package/pi-extension/index.js +0 -161
- package/pi-extension/package.json +0 -8
- package/pi-extension/test/extension.test.js +0 -89
- package/pi-extension/test/helpers.test.js +0 -35
- package/scripts/check-rule-copies.js +0 -82
- package/site/astro.config.mjs +0 -18
- package/site/package-lock.json +0 -4913
- package/site/package.json +0 -14
- package/site/public/CNAME +0 -1
- package/site/public/assets/lexis-two-nobg.png +0 -0
- package/site/public/assets/logo.png +0 -0
- package/site/public/assets/logo.svg +0 -4
- package/site/public/robots.txt +0 -4
- package/site/src/components/Adapt.astro +0 -33
- package/site/src/components/Benchmarks.astro +0 -232
- package/site/src/components/Commands.astro +0 -33
- package/site/src/components/Ecosystem.astro +0 -30
- package/site/src/components/Example.astro +0 -77
- package/site/src/components/Footer.astro +0 -28
- package/site/src/components/Header.astro +0 -87
- package/site/src/components/Hero.astro +0 -58
- package/site/src/components/Home.astro +0 -46
- package/site/src/components/Hosts.astro +0 -62
- package/site/src/components/Install.astro +0 -139
- package/site/src/components/LanguageSwitcher.astro +0 -82
- package/site/src/components/Philosophy.astro +0 -23
- package/site/src/components/Stacks.astro +0 -33
- package/site/src/components/Suggested.astro +0 -39
- package/site/src/data/opencode-go-benchmark.json +0 -230
- package/site/src/i18n/en.ts +0 -155
- package/site/src/i18n/es.ts +0 -158
- package/site/src/i18n/index.ts +0 -14
- package/site/src/layouts/Layout.astro +0 -114
- package/site/src/pages/benchmarks.astro +0 -4
- package/site/src/pages/es/benchmarks.astro +0 -4
- package/site/src/pages/es/index.astro +0 -10
- package/site/src/pages/index.astro +0 -10
- package/site/src/styles/global.css +0 -780
- package/site/tsconfig.json +0 -3
- package/tests/behavior.test.js +0 -80
- package/tests/commands.test.js +0 -40
- package/tests/copilot-plugin.test.js +0 -33
- package/tests/correctness.test.js +0 -191
- package/tests/gemini-extension.test.js +0 -78
- package/tests/hooks-windows.test.js +0 -48
- package/tests/hooks.test.js +0 -177
- package/tests/opencode-plugin.test.js +0 -64
package/site/src/i18n/en.ts
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
meta: {
|
|
3
|
-
title: "Lexis-Two -- The simple way to obtain the best code.",
|
|
4
|
-
description:
|
|
5
|
-
"Portable rules, skills, and slash commands for AI agents. The simple way to get the best code. With lowest tokens usage.",
|
|
6
|
-
},
|
|
7
|
-
nav: {
|
|
8
|
-
philosophy: "Philosophy",
|
|
9
|
-
example: "Example",
|
|
10
|
-
hosts: "Hosts",
|
|
11
|
-
commands: "Commands",
|
|
12
|
-
install: "Install",
|
|
13
|
-
benchmarks: "Benchmarks",
|
|
14
|
-
github: "GitHub",
|
|
15
|
-
skipLink: "Skip to content",
|
|
16
|
-
},
|
|
17
|
-
hero: {
|
|
18
|
-
badge: "LEXIS-TWO",
|
|
19
|
-
title: "The simple way to obtain the best code.",
|
|
20
|
-
tagline:
|
|
21
|
-
"Portable rules, skills, and slash commands for AI agents. The simple way to get the best code. With lowest tokens usage.",
|
|
22
|
-
benchmark:
|
|
23
|
-
"Benchmark with your OpenCode Go models, then publish results --",
|
|
24
|
-
benchmarkLink: "OpenCode Go harness",
|
|
25
|
-
benchmarkCode: "npm run benchmark:opencode-go",
|
|
26
|
-
ctaGitHub: "Star on GitHub",
|
|
27
|
-
ctaInstall: "Clone & install",
|
|
28
|
-
ctaDocs: "Full portability docs",
|
|
29
|
-
ctaBenchmark: "View benchmarks",
|
|
30
|
-
},
|
|
31
|
-
philosophy: {
|
|
32
|
-
title: "The ladder",
|
|
33
|
-
subtitle: "Before writing any code, stop at the first rung that holds.",
|
|
34
|
-
rungs: [
|
|
35
|
-
"Does this need to exist at all? (YAGNI)",
|
|
36
|
-
"Does the standard library already do this?",
|
|
37
|
-
"Does a native platform feature cover it?",
|
|
38
|
-
"Does an already-installed dependency solve it?",
|
|
39
|
-
"Can it be one line?",
|
|
40
|
-
"Only then: write the minimum code that works.",
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
example: {
|
|
44
|
-
title: "One example",
|
|
45
|
-
subtitle: "Sort an array. From examples/sorting.md in the repo.",
|
|
46
|
-
without: "Without Lexis-Two",
|
|
47
|
-
with: "With Lexis-Two",
|
|
48
|
-
withoutFoot: "Hand-rolled quicksort. Homework energy.",
|
|
49
|
-
withFoot: "24 lines -> 1. Every runtime ships a sort tuned by pros.",
|
|
50
|
-
copy: "Copy",
|
|
51
|
-
copied: "Copied",
|
|
52
|
-
},
|
|
53
|
-
hosts: {
|
|
54
|
-
title: "Works where you code",
|
|
55
|
-
subtitle:
|
|
56
|
-
"Thin adapters. One skill source. skills/ is the core.",
|
|
57
|
-
headHost: "Host",
|
|
58
|
-
headLevel: "Level",
|
|
59
|
-
headEntry: "Entry point",
|
|
60
|
-
rows: [
|
|
61
|
-
{ host: "OpenCode", level: "full", entry: ".opencode/plugins/lexis-two.mjs" },
|
|
62
|
-
{ host: "Claude Code", level: "soon", entry: ".claude-plugin/ + hooks/ (v0.3)" },
|
|
63
|
-
{ host: "GitHub Copilot (plugin)", level: "soon", entry: ".github/plugin/plugin.json (v0.3)" },
|
|
64
|
-
{ host: "Gemini CLI", level: "full", entry: "gemini-extension.json" },
|
|
65
|
-
{ host: "pi", level: "full", entry: "pi-extension/" },
|
|
66
|
-
{ host: "Codex", level: "full", entry: ".codex-plugin/ + AGENTS.md" },
|
|
67
|
-
{ host: "Cursor", level: "rules", entry: ".cursor/rules/lexis-two.mdc" },
|
|
68
|
-
{ host: "Windsurf / Cline / Kiro", level: "rules", entry: "lexis-two.md in host rules folder" },
|
|
69
|
-
{ host: "Any agent", level: "rules", entry: "AGENTS.md or skills/*/SKILL.md" },
|
|
70
|
-
],
|
|
71
|
-
levelFull: "Full",
|
|
72
|
-
levelSoon: "Coming soon",
|
|
73
|
-
levelRules: "Rules",
|
|
74
|
-
},
|
|
75
|
-
commands: {
|
|
76
|
-
title: "Slash commands",
|
|
77
|
-
subtitle:
|
|
78
|
-
"On hosts with command adapters today: OpenCode, Gemini CLI, and pi. Claude Code and Copilot plugin land in v0.3.",
|
|
79
|
-
items: [
|
|
80
|
-
{ name: "/lexis-two", desc: "Mode: lite, full, ultra, off" },
|
|
81
|
-
{ name: "/lexis-two-review", desc: "Review the diff for over-engineering" },
|
|
82
|
-
{ name: "/lexis-two-audit", desc: "Full repo audit -- what to delete" },
|
|
83
|
-
{ name: "/lexis-two-debt", desc: "Harvest // lexis: comments" },
|
|
84
|
-
{ name: "/lexis-two-plan", desc: "Plan before writing code" },
|
|
85
|
-
{ name: "/lexis-two-security", desc: "Security audit (Node/TS stack default)" },
|
|
86
|
-
{ name: "/lexis-two-help", desc: "Quick reference card" },
|
|
87
|
-
],
|
|
88
|
-
},
|
|
89
|
-
install: {
|
|
90
|
-
title: "Install",
|
|
91
|
-
subtitle: "Clone once. Point your host at the adapter files.",
|
|
92
|
-
tabOpencode: "OpenCode",
|
|
93
|
-
tabCursor: "Cursor",
|
|
94
|
-
tabClone: "Clone",
|
|
95
|
-
},
|
|
96
|
-
adapt: {
|
|
97
|
-
title: "Adapt to any stack",
|
|
98
|
-
subtitle: "Three files to touch. No new framework required.",
|
|
99
|
-
cards: [
|
|
100
|
-
{ title: "1. AGENTS.md", desc: "Replace stack shortcuts (Python stdlib, Rust crates, Go stdlib). Run node scripts/check-rule-copies.js." },
|
|
101
|
-
{ title: "2. skills/", desc: "Point audit commands at your tools -- cargo audit, pip-audit, golangci-lint." },
|
|
102
|
-
{ title: "3. commands/", desc: "Update TOML and OpenCode command descriptions if skill behavior changes." },
|
|
103
|
-
],
|
|
104
|
-
},
|
|
105
|
-
stacks: {
|
|
106
|
-
title: "Focused stacks",
|
|
107
|
-
subtitle: "Optimized patterns for the most common production stacks.",
|
|
108
|
-
items: [
|
|
109
|
-
{ name: "TypeScript / Node.js", desc: "Next.js, React, Express, Fastify, strict types" },
|
|
110
|
-
{ name: "MongoDB / Mongoose", desc: "Schemas, indexes, aggregation, transactions" },
|
|
111
|
-
{ name: "Tailwind CSS", desc: "Utility-first, dark mode, responsive" },
|
|
112
|
-
{ name: "Python", desc: "FastAPI, Django, dataclasses, type hints" },
|
|
113
|
-
{ name: "PostgreSQL / Prisma", desc: "Relations, migrations, N+1 prevention" },
|
|
114
|
-
{ name: "Redis", desc: "Caching, sessions, rate limiting, pub/sub" },
|
|
115
|
-
],
|
|
116
|
-
},
|
|
117
|
-
suggested: {
|
|
118
|
-
title: "Related projects",
|
|
119
|
-
subtitle: "Forked from and worth reviewing for complementary ideas.",
|
|
120
|
-
items: [
|
|
121
|
-
{ name: "ponytail", url: "https://github.com/DietrichGebert/ponytail", desc: "Base project from which lexis-two was forked and extended." },
|
|
122
|
-
{ name: "my-cursor-skills", url: "https://github.com/nitdraig/my-cursor-skills", desc: "Cursor skills collection to review for complementary features." },
|
|
123
|
-
],
|
|
124
|
-
},
|
|
125
|
-
ecosystem: {
|
|
126
|
-
title: "Ecosystem",
|
|
127
|
-
subtitle:
|
|
128
|
-
"Lexis-Two is the public portable package. Lexis-One is private. Lexis-Zero is future.",
|
|
129
|
-
},
|
|
130
|
-
footer: {
|
|
131
|
-
license: "MIT License",
|
|
132
|
-
forked: "Forked from ponytail by DietrichGebert. Lexis ecosystem by",
|
|
133
|
-
built: "Built on OpenCode and Cursor.",
|
|
134
|
-
},
|
|
135
|
-
benchmarks: {
|
|
136
|
-
title: "OpenCode Go benchmark",
|
|
137
|
-
subtitle: "baseline vs lexis-two — median LOC across 5 coding tasks.",
|
|
138
|
-
backHome: "Home",
|
|
139
|
-
methodology: "Methodology",
|
|
140
|
-
runDate: "Run date",
|
|
141
|
-
runsPerCell: "runs per cell",
|
|
142
|
-
source: "source",
|
|
143
|
-
totalLoc: "Total code LOC (median, 5 tasks)",
|
|
144
|
-
reduction: "LOC reduction vs baseline",
|
|
145
|
-
time: "Wall time (median total seconds)",
|
|
146
|
-
byTask: "LOC by task — lexis-two arm",
|
|
147
|
-
summary: "Summary table",
|
|
148
|
-
colModel: "Model",
|
|
149
|
-
colBaseline: "Baseline LOC",
|
|
150
|
-
colLexis: "Lexis-Two LOC",
|
|
151
|
-
colReduction: "Reduction",
|
|
152
|
-
colCorrect: "Correct (lexis)",
|
|
153
|
-
regenerate: "Regenerate:",
|
|
154
|
-
},
|
|
155
|
-
} as const;
|
package/site/src/i18n/es.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
meta: {
|
|
3
|
-
title: "Lexis-Two -- La forma simple de obtener el mejor código.",
|
|
4
|
-
description:
|
|
5
|
-
"Reglas, skills y slash commands portables para agentes de IA. La forma simple de obtener el mejor código. Con el menor uso de tokens.",
|
|
6
|
-
},
|
|
7
|
-
nav: {
|
|
8
|
-
philosophy: "Filosofía",
|
|
9
|
-
example: "Ejemplo",
|
|
10
|
-
hosts: "Hosts",
|
|
11
|
-
commands: "Comandos",
|
|
12
|
-
install: "Instalar",
|
|
13
|
-
benchmarks: "Benchmarks",
|
|
14
|
-
github: "GitHub",
|
|
15
|
-
skipLink: "Saltar al contenido",
|
|
16
|
-
},
|
|
17
|
-
hero: {
|
|
18
|
-
badge: "LEXIS-TWO",
|
|
19
|
-
title: "La forma simple de obtener el mejor código.",
|
|
20
|
-
tagline:
|
|
21
|
-
"Reglas, skills y slash commands portables para agentes de IA. La forma simple de obtener el mejor código. Con el menor uso de tokens.",
|
|
22
|
-
benchmark:
|
|
23
|
-
"Haz benchmarks con tus modelos OpenCode Go, luego publica resultados --",
|
|
24
|
-
benchmarkLink: "OpenCode Go harness",
|
|
25
|
-
benchmarkCode: "npm run benchmark:opencode-go",
|
|
26
|
-
ctaGitHub: "Star en GitHub",
|
|
27
|
-
ctaInstall: "Clonar e instalar",
|
|
28
|
-
ctaDocs: "Docs completas de portabilidad",
|
|
29
|
-
ctaBenchmark: "Ver benchmarks",
|
|
30
|
-
},
|
|
31
|
-
philosophy: {
|
|
32
|
-
title: "La escalera",
|
|
33
|
-
subtitle:
|
|
34
|
-
"Antes de escribir código, detente en el primer escalón que sostenga.",
|
|
35
|
-
rungs: [
|
|
36
|
-
"Esto necesita existir? (YAGNI)",
|
|
37
|
-
"¿La biblioteca estándar ya hace esto?",
|
|
38
|
-
"¿Una feature nativa de la plataforma lo resuelve?",
|
|
39
|
-
"¿Una dependencia ya instalada lo resuelve?",
|
|
40
|
-
"¿Puede ser una sola línea?",
|
|
41
|
-
"Solo entonces: escribe el mínimo código que funcione.",
|
|
42
|
-
],
|
|
43
|
-
},
|
|
44
|
-
example: {
|
|
45
|
-
title: "Un ejemplo",
|
|
46
|
-
subtitle:
|
|
47
|
-
"Ordenar un arreglo. De examples/sorting.md en el repo.",
|
|
48
|
-
without: "Sin Lexis-Two",
|
|
49
|
-
with: "Con Lexis-Two",
|
|
50
|
-
withoutFoot: "Quicksort hecho a mano. Tarea de la escuela.",
|
|
51
|
-
withFoot: "24 líneas -> 1. Todo runtime trae un sort optimizado por pros.",
|
|
52
|
-
copy: "Copiar",
|
|
53
|
-
copied: "Copiado",
|
|
54
|
-
},
|
|
55
|
-
hosts: {
|
|
56
|
-
title: "Funciona donde programas",
|
|
57
|
-
subtitle:
|
|
58
|
-
"Adaptadores delgados. Una fuente de skills. skills/ es el nucleo.",
|
|
59
|
-
headHost: "Host",
|
|
60
|
-
headLevel: "Nivel",
|
|
61
|
-
headEntry: "Punto de entrada",
|
|
62
|
-
rows: [
|
|
63
|
-
{ host: "OpenCode", level: "full", entry: ".opencode/plugins/lexis-two.mjs" },
|
|
64
|
-
{ host: "Claude Code", level: "soon", entry: ".claude-plugin/ + hooks/ (v0.3)" },
|
|
65
|
-
{ host: "GitHub Copilot (plugin)", level: "soon", entry: ".github/plugin/plugin.json (v0.3)" },
|
|
66
|
-
{ host: "Gemini CLI", level: "full", entry: "gemini-extension.json" },
|
|
67
|
-
{ host: "pi", level: "full", entry: "pi-extension/" },
|
|
68
|
-
{ host: "Codex", level: "full", entry: ".codex-plugin/ + AGENTS.md" },
|
|
69
|
-
{ host: "Cursor", level: "rules", entry: ".cursor/rules/lexis-two.mdc" },
|
|
70
|
-
{ host: "Windsurf / Cline / Kiro", level: "rules", entry: "lexis-two.md en la carpeta rules del host" },
|
|
71
|
-
{ host: "Cualquier agente", level: "rules", entry: "AGENTS.md o skills/*/SKILL.md" },
|
|
72
|
-
],
|
|
73
|
-
levelFull: "Completo",
|
|
74
|
-
levelSoon: "Proximamente",
|
|
75
|
-
levelRules: "Reglas",
|
|
76
|
-
},
|
|
77
|
-
commands: {
|
|
78
|
-
title: "Slash commands",
|
|
79
|
-
subtitle:
|
|
80
|
-
"En hosts con adaptadores de comandos hoy: OpenCode, Gemini CLI y pi. Claude Code y Copilot plugin llegan en v0.3.",
|
|
81
|
-
items: [
|
|
82
|
-
{ name: "/lexis-two", desc: "Modo: lite, full, ultra, off" },
|
|
83
|
-
{ name: "/lexis-two-review", desc: "Revisar el diff por over-engineering" },
|
|
84
|
-
{ name: "/lexis-two-audit", desc: "Auditoria completa del repo -- que borrar" },
|
|
85
|
-
{ name: "/lexis-two-debt", desc: "Cosechar comentarios // lexis:" },
|
|
86
|
-
{ name: "/lexis-two-plan", desc: "Planificar antes de escribir código" },
|
|
87
|
-
{ name: "/lexis-two-security", desc: "Auditoria de seguridad (default Node/TS)" },
|
|
88
|
-
{ name: "/lexis-two-help", desc: "Tarjeta de referencia rapida" },
|
|
89
|
-
],
|
|
90
|
-
},
|
|
91
|
-
install: {
|
|
92
|
-
title: "Instalar",
|
|
93
|
-
subtitle:
|
|
94
|
-
"Clona una vez. Apunta tu host a los archivos del adaptador.",
|
|
95
|
-
tabOpencode: "OpenCode",
|
|
96
|
-
tabCursor: "Cursor",
|
|
97
|
-
tabClone: "Clonar",
|
|
98
|
-
},
|
|
99
|
-
adapt: {
|
|
100
|
-
title: "Adapta a cualquier stack",
|
|
101
|
-
subtitle: "Tres archivos para tocar. No se necesita un nuevo framework.",
|
|
102
|
-
cards: [
|
|
103
|
-
{ title: "1. AGENTS.md", desc: "Reemplaza los shortcuts del stack (Python stdlib, Rust crates, Go stdlib). Ejecuta node scripts/check-rule-copies.js." },
|
|
104
|
-
{ title: "2. skills/", desc: "Apunta los comandos de auditoría a tus herramientas -- cargo audit, pip-audit, golangci-lint." },
|
|
105
|
-
{ title: "3. commands/", desc: "Actualiza las descripciones TOML y de OpenCode si cambia el comportamiento de un skill." },
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
stacks: {
|
|
109
|
-
title: "Stacks enfocados",
|
|
110
|
-
subtitle: "Patrones optimizados para los stacks de producción mas comunes.",
|
|
111
|
-
items: [
|
|
112
|
-
{ name: "TypeScript / Node.js", desc: "Next.js, React, Express, Fastify, tipos estrictos" },
|
|
113
|
-
{ name: "MongoDB / Mongoose", desc: "Schemas, índices, agregacion, transacciones" },
|
|
114
|
-
{ name: "Tailwind CSS", desc: "Utility-first, modo oscuro, responsivo" },
|
|
115
|
-
{ name: "Python", desc: "FastAPI, Django, dataclasses, type hints" },
|
|
116
|
-
{ name: "PostgreSQL / Prisma", desc: "Relaciones, migraciones, prevención de N+1" },
|
|
117
|
-
{ name: "Redis", desc: "Cacheo, sesiones, rate limiting, pub/sub" },
|
|
118
|
-
],
|
|
119
|
-
},
|
|
120
|
-
suggested: {
|
|
121
|
-
title: "Proyectos relacionados",
|
|
122
|
-
subtitle: "Del cual se forked y vale la pena revisar ideas complementarias.",
|
|
123
|
-
items: [
|
|
124
|
-
{ name: "ponytail", url: "https://github.com/DietrichGebert/ponytail", desc: "Proyecto base del cual lexis-two fue forked y extendido." },
|
|
125
|
-
{ name: "my-cursor-skills", url: "https://github.com/nitdraig/my-cursor-skills", desc: "Colección de skills de Cursor para revisar features complementarias." },
|
|
126
|
-
],
|
|
127
|
-
},
|
|
128
|
-
ecosystem: {
|
|
129
|
-
title: "Ecosistema",
|
|
130
|
-
subtitle:
|
|
131
|
-
"Lexis-Two es el paquete público portable. Lexis-One es privado. Lexis-Zero es el futuro.",
|
|
132
|
-
},
|
|
133
|
-
footer: {
|
|
134
|
-
license: "Licencia MIT",
|
|
135
|
-
forked: "Forked de ponytail por DietrichGebert. Ecosistema Lexis por",
|
|
136
|
-
built: "Construido con OpenCode y Cursor.",
|
|
137
|
-
},
|
|
138
|
-
benchmarks: {
|
|
139
|
-
title: "Benchmark OpenCode Go",
|
|
140
|
-
subtitle: "baseline vs lexis-two — LOC mediana en 5 tareas de código.",
|
|
141
|
-
backHome: "Inicio",
|
|
142
|
-
methodology: "Metodología",
|
|
143
|
-
runDate: "Fecha",
|
|
144
|
-
runsPerCell: "ejecuciones por celda",
|
|
145
|
-
source: "fuente",
|
|
146
|
-
totalLoc: "LOC total (mediana, 5 tareas)",
|
|
147
|
-
reduction: "Reducción de LOC vs baseline",
|
|
148
|
-
time: "Tiempo total (mediana en segundos)",
|
|
149
|
-
byTask: "LOC por tarea — brazo lexis-two",
|
|
150
|
-
summary: "Tabla resumen",
|
|
151
|
-
colModel: "Modelo",
|
|
152
|
-
colBaseline: "LOC baseline",
|
|
153
|
-
colLexis: "LOC Lexis-Two",
|
|
154
|
-
colReduction: "Reducción",
|
|
155
|
-
colCorrect: "Correctas (lexis)",
|
|
156
|
-
regenerate: "Regenerar:",
|
|
157
|
-
},
|
|
158
|
-
} as const;
|
package/site/src/i18n/index.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import en from "./en.js";
|
|
2
|
-
import es from "./es.js";
|
|
3
|
-
|
|
4
|
-
export type Locale = "en" | "es";
|
|
5
|
-
|
|
6
|
-
export const locales = ["en", "es"] as const;
|
|
7
|
-
|
|
8
|
-
const dictionaries = { en, es } as const;
|
|
9
|
-
|
|
10
|
-
export type Dictionary = typeof en;
|
|
11
|
-
|
|
12
|
-
export function getDictionary(locale: Locale): Dictionary {
|
|
13
|
-
return dictionaries[locale] ?? dictionaries.en;
|
|
14
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
import type { Locale } from "../i18n/index.js";
|
|
3
|
-
import { getDictionary } from "../i18n/index.js";
|
|
4
|
-
|
|
5
|
-
interface Props {
|
|
6
|
-
locale: Locale;
|
|
7
|
-
canonicalPath: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { locale, canonicalPath } = Astro.props;
|
|
11
|
-
const t = getDictionary(locale);
|
|
12
|
-
|
|
13
|
-
// lexis: simple i18n path mapping — add when locale count exceeds 2
|
|
14
|
-
const alternateEn = canonicalPath.startsWith("/es")
|
|
15
|
-
? canonicalPath.replace(/^\/es/, "") || "/"
|
|
16
|
-
: canonicalPath;
|
|
17
|
-
const alternateEs = canonicalPath.startsWith("/es")
|
|
18
|
-
? canonicalPath
|
|
19
|
-
: `/es${canonicalPath}`;
|
|
20
|
-
|
|
21
|
-
const structuredData = {
|
|
22
|
-
"@context": "https://schema.org",
|
|
23
|
-
"@type": "SoftwareApplication",
|
|
24
|
-
name: "Lexis-Two",
|
|
25
|
-
description: t.meta.description,
|
|
26
|
-
url: `https://lexis-two.excelso.xyz${canonicalPath}`,
|
|
27
|
-
applicationCategory: "DeveloperApplication",
|
|
28
|
-
operatingSystem: "Cross-platform",
|
|
29
|
-
offers: {
|
|
30
|
-
"@type": "Offer",
|
|
31
|
-
price: "0",
|
|
32
|
-
priceCurrency: "USD",
|
|
33
|
-
},
|
|
34
|
-
author: {
|
|
35
|
-
"@type": "Person",
|
|
36
|
-
name: "nitdraig",
|
|
37
|
-
url: "https://github.com/nitdraig",
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
<!doctype html>
|
|
43
|
-
<html lang={locale}>
|
|
44
|
-
<head>
|
|
45
|
-
<meta charset="utf-8" />
|
|
46
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
47
|
-
<title>{t.meta.title}</title>
|
|
48
|
-
<meta name="description" content={t.meta.description} />
|
|
49
|
-
<meta name="theme-color" content="#0b0d0c" />
|
|
50
|
-
<meta name="robots" content="index, follow" />
|
|
51
|
-
<meta name="author" content="nitdraig" />
|
|
52
|
-
|
|
53
|
-
<!-- Open Graph -->
|
|
54
|
-
<meta property="og:type" content="website" />
|
|
55
|
-
<meta property="og:title" content={t.meta.title} />
|
|
56
|
-
<meta property="og:description" content={t.meta.description} />
|
|
57
|
-
<meta
|
|
58
|
-
property="og:url"
|
|
59
|
-
content={`https://lexis-two.excelso.xyz${canonicalPath}`}
|
|
60
|
-
/>
|
|
61
|
-
<meta
|
|
62
|
-
property="og:image"
|
|
63
|
-
content="https://lexis-two.excelso.xyz/assets/lexis-two-nobg.png"
|
|
64
|
-
/>
|
|
65
|
-
<meta property="og:site_name" content="Lexis-Two" />
|
|
66
|
-
|
|
67
|
-
<!-- Twitter -->
|
|
68
|
-
<meta name="twitter:card" content="summary_large_image" />
|
|
69
|
-
<meta name="twitter:title" content={t.meta.title} />
|
|
70
|
-
<meta name="twitter:description" content={t.meta.description} />
|
|
71
|
-
<meta
|
|
72
|
-
name="twitter:image"
|
|
73
|
-
content="https://lexis-two.excelso.xyz/assets/lexis-two-nobg.png"
|
|
74
|
-
/>
|
|
75
|
-
|
|
76
|
-
<!-- Canonical & hreflang -->
|
|
77
|
-
<link
|
|
78
|
-
rel="canonical"
|
|
79
|
-
href={`https://lexis-two.excelso.xyz${canonicalPath}`}
|
|
80
|
-
/>
|
|
81
|
-
<link
|
|
82
|
-
rel="alternate"
|
|
83
|
-
hreflang="en"
|
|
84
|
-
href={`https://lexis-two.excelso.xyz${alternateEn}`}
|
|
85
|
-
/>
|
|
86
|
-
<link
|
|
87
|
-
rel="alternate"
|
|
88
|
-
hreflang="es"
|
|
89
|
-
href={`https://lexis-two.excelso.xyz${alternateEs}`}
|
|
90
|
-
/>
|
|
91
|
-
<link
|
|
92
|
-
rel="alternate"
|
|
93
|
-
hreflang="x-default"
|
|
94
|
-
href={`https://lexis-two.excelso.xyz${alternateEn}`}
|
|
95
|
-
/>
|
|
96
|
-
|
|
97
|
-
<!-- Structured data -->
|
|
98
|
-
<script
|
|
99
|
-
type="application/ld+json"
|
|
100
|
-
set:html={JSON.stringify(structuredData)}
|
|
101
|
-
/>
|
|
102
|
-
|
|
103
|
-
<link rel="icon" href="/assets/logo.png" type="image/png" />
|
|
104
|
-
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
105
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
106
|
-
<link
|
|
107
|
-
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Syne:wght@500;700;800&display=swap"
|
|
108
|
-
rel="stylesheet"
|
|
109
|
-
/>
|
|
110
|
-
</head>
|
|
111
|
-
<body>
|
|
112
|
-
<slot />
|
|
113
|
-
</body>
|
|
114
|
-
</html>
|