oficina-opencode 0.0.0-stage → 2.0.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 (117) hide show
  1. package/DESIGN.md +145 -0
  2. package/LICENSE +21 -0
  3. package/README.md +670 -2
  4. package/agents/oficina-architect.md +72 -0
  5. package/agents/oficina-commander.md +108 -0
  6. package/agents/oficina-critico.md +148 -0
  7. package/agents/oficina-director.md +160 -0
  8. package/agents/oficina-guardian.md +128 -0
  9. package/agents/oficina-integrator.md +98 -0
  10. package/agents/oficina-verificador.md +88 -0
  11. package/commands/oficina.md +36 -0
  12. package/dist/cli.d.ts +12 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +394 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/core/briefing.d.ts +115 -0
  17. package/dist/core/briefing.d.ts.map +1 -0
  18. package/dist/core/briefing.js +410 -0
  19. package/dist/core/briefing.js.map +1 -0
  20. package/dist/core/bus.d.ts +132 -0
  21. package/dist/core/bus.d.ts.map +1 -0
  22. package/dist/core/bus.js +250 -0
  23. package/dist/core/bus.js.map +1 -0
  24. package/dist/core/catalog.d.ts +303 -0
  25. package/dist/core/catalog.d.ts.map +1 -0
  26. package/dist/core/catalog.js +816 -0
  27. package/dist/core/catalog.js.map +1 -0
  28. package/dist/core/dispatch.d.ts +110 -0
  29. package/dist/core/dispatch.d.ts.map +1 -0
  30. package/dist/core/dispatch.js +301 -0
  31. package/dist/core/dispatch.js.map +1 -0
  32. package/dist/core/factory.d.ts +74 -0
  33. package/dist/core/factory.d.ts.map +1 -0
  34. package/dist/core/factory.js +243 -0
  35. package/dist/core/factory.js.map +1 -0
  36. package/dist/core/fsx.d.ts +39 -0
  37. package/dist/core/fsx.d.ts.map +1 -0
  38. package/dist/core/fsx.js +113 -0
  39. package/dist/core/fsx.js.map +1 -0
  40. package/dist/core/gates.d.ts +97 -0
  41. package/dist/core/gates.d.ts.map +1 -0
  42. package/dist/core/gates.js +467 -0
  43. package/dist/core/gates.js.map +1 -0
  44. package/dist/core/leases.d.ts +46 -0
  45. package/dist/core/leases.d.ts.map +1 -0
  46. package/dist/core/leases.js +94 -0
  47. package/dist/core/leases.js.map +1 -0
  48. package/dist/core/log.d.ts +30 -0
  49. package/dist/core/log.d.ts.map +1 -0
  50. package/dist/core/log.js +43 -0
  51. package/dist/core/log.js.map +1 -0
  52. package/dist/core/mesa.d.ts +82 -0
  53. package/dist/core/mesa.d.ts.map +1 -0
  54. package/dist/core/mesa.js +178 -0
  55. package/dist/core/mesa.js.map +1 -0
  56. package/dist/core/office.d.ts +208 -0
  57. package/dist/core/office.d.ts.map +1 -0
  58. package/dist/core/office.js +618 -0
  59. package/dist/core/office.js.map +1 -0
  60. package/dist/core/paths.d.ts +67 -0
  61. package/dist/core/paths.d.ts.map +1 -0
  62. package/dist/core/paths.js +136 -0
  63. package/dist/core/paths.js.map +1 -0
  64. package/dist/core/retry.d.ts +41 -0
  65. package/dist/core/retry.d.ts.map +1 -0
  66. package/dist/core/retry.js +86 -0
  67. package/dist/core/retry.js.map +1 -0
  68. package/dist/core/roster.d.ts +47 -0
  69. package/dist/core/roster.d.ts.map +1 -0
  70. package/dist/core/roster.js +146 -0
  71. package/dist/core/roster.js.map +1 -0
  72. package/dist/core/router.d.ts +67 -0
  73. package/dist/core/router.d.ts.map +1 -0
  74. package/dist/core/router.js +186 -0
  75. package/dist/core/router.js.map +1 -0
  76. package/dist/core/state.d.ts +89 -0
  77. package/dist/core/state.d.ts.map +1 -0
  78. package/dist/core/state.js +303 -0
  79. package/dist/core/state.js.map +1 -0
  80. package/dist/core/types.d.ts +333 -0
  81. package/dist/core/types.d.ts.map +1 -0
  82. package/dist/core/types.js +27 -0
  83. package/dist/core/types.js.map +1 -0
  84. package/dist/hooks/compacting.d.ts +18 -0
  85. package/dist/hooks/compacting.d.ts.map +1 -0
  86. package/dist/hooks/compacting.js +72 -0
  87. package/dist/hooks/compacting.js.map +1 -0
  88. package/dist/hooks/scopeGuard.d.ts +39 -0
  89. package/dist/hooks/scopeGuard.d.ts.map +1 -0
  90. package/dist/hooks/scopeGuard.js +114 -0
  91. package/dist/hooks/scopeGuard.js.map +1 -0
  92. package/dist/hooks/sessionIdle.d.ts +35 -0
  93. package/dist/hooks/sessionIdle.d.ts.map +1 -0
  94. package/dist/hooks/sessionIdle.js +110 -0
  95. package/dist/hooks/sessionIdle.js.map +1 -0
  96. package/dist/hooks/systemTransform.d.ts +18 -0
  97. package/dist/hooks/systemTransform.d.ts.map +1 -0
  98. package/dist/hooks/systemTransform.js +63 -0
  99. package/dist/hooks/systemTransform.js.map +1 -0
  100. package/dist/index.d.ts +36 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +103 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/tools/index.d.ts +22 -0
  105. package/dist/tools/index.d.ts.map +1 -0
  106. package/dist/tools/index.js +854 -0
  107. package/dist/tools/index.js.map +1 -0
  108. package/docs/ARCHITECTURE.md +258 -0
  109. package/docs/QUE-ES.md +337 -0
  110. package/examples/opencode.json +7 -0
  111. package/package.json +81 -4
  112. package/skills/oficina/README.md +120 -0
  113. package/skills/oficina/SKILL.md +251 -0
  114. package/skills/oficina/reference/mesh.md +345 -0
  115. package/skills/oficina/reference/protocol.md +342 -0
  116. package/skills/oficina/reference/roles.md +171 -0
  117. package/skills/oficina/reference/templates.md +278 -0
package/DESIGN.md ADDED
@@ -0,0 +1,145 @@
1
+ # AI-OFFICE — Dirección de diseño
2
+
3
+ Este documento es la fuente de verdad de las decisiones visuales del proyecto. Sobrevive a regeneraciones: si algo cambia, se actualiza acá primero.
4
+
5
+ **Tesis**: la documentación técnica que se lee como folleto es ruido. La que se lee como *informe de incidente bien escrito* se consulta. AI-OFFICE vende en la primera línea lo mismo que promete en la última: un sistema que no se detiene solo.
6
+
7
+ ---
8
+
9
+ ## Identidad
10
+
11
+ - **brand**: Una oficina de agentes para OpenCode donde el trabajo no se detiene cuando el modelo dice «terminé».
12
+ - **voice**: preciso · seco · sin entusiasmo artificial. Nunca «revolucionario», «magia», «poder total», «game-changer».
13
+ - **anti-adjetivos**: elegante, seamless, potenciado, orientado a KPIs.
14
+ - **audiencia**: developers que ya se cansaron de pedirle al modelo lo mismo tres veces.
15
+ - **outcome**: el lector entiende en 30 segundos que el problema no es el modelo, es la falta de estructura.
16
+
17
+ ---
18
+
19
+ ## Paleta
20
+
21
+ Sin gradientes. Sin azul→violeta. Sin purple-to-blue. La UI del proyecto es terminal: fondo oscuro, texto claro, un acento.
22
+
23
+ | Rol | Hex | Uso |
24
+ |---|---|---|
25
+ | `bg` | `#0B0D10` | Fondo de terminal y landing |
26
+ | `surface` | `#14181D` | Cards, bloques de código |
27
+ | `border` | `#232A32` | Hairlines, separadores |
28
+ | `text` | `#E6EAF0` | Texto principal |
29
+ | `muted` | `#8B97A6` | Texto secundario, metadata |
30
+ | `accent` | `#4ADE80` | PASS, éxito, links primarios — verde signals, no decorativo |
31
+ | `warn` | `#FBBF24` | N/A, advertencias, presupuesto |
32
+ | `danger` | `#F87171` | FAIL, findings críticos, violations |
33
+
34
+ **Regla 60-30-10**: 60% superficie oscura, 30% texto y bordes, 10% acento. El acento **solo** marca estado (PASS/FAIL/N/A) y acciones. Nunca decorativo.
35
+
36
+ **Ratios de color**: 3 siblings, 3 estados — no 5 siblings con 4 tintes.
37
+
38
+ ---
39
+
40
+ ## Tipografía
41
+
42
+ | Rol | Familia | Uso |
43
+ |---|---|---|
44
+ | Display | system sans, weight 700, `letter-spacing: -0.02em` | H1, H2 |
45
+ | Body | system sans, 400, `line-height: 1.6`, `max-width: 68ch` | Párrafos |
46
+ | Code | `ui-monospace, SFMono-Regular, Menlo, Consolas, monospace` | Todo lo técnico |
47
+
48
+ **Prohibido**: una sola familia con pesos 400-600 y `tracking-tight` global. Si todo es Inter 600, no hay jerarquía tipográfica.
49
+
50
+ **Trackeo por rol, no global**: display `-0.02em`, body `0`, caps `0.12em` (solo para labels small, nunca en H1).
51
+
52
+ **Rampas de peso**: 700 para display, 600 para labels y tabla headers, 400 para body. Tres pesos, no cinco.
53
+
54
+ **Números tabulares** en toda tabla de métricas — las columnas de budget alinean.
55
+
56
+ ---
57
+
58
+ ## Layout
59
+
60
+ Editorial, no landing.
61
+
62
+ - **Silueta**: barra de código arriba, luego problema (tabla 2 col), luego arquitectura (diagrama ASCII), luego mecanismo (4 hooks), luego referencia. Asimétrico: las tablas y el diagrama ocupan ancho variable; el texto largo va a `max-width: 68ch`.
63
+ - **Sin hero centrado.** El H1 va a la izquierda, con el tagline abajo. Centrado con badge de status arriba es el patrón de landing de IA que el proyecto existe para desmontar.
64
+ - **Sin bento.** No hay grid de 4-6 tiles con la misma silueta. Las secciones son bloques de una idea.
65
+ - **Separación por `---` y subtítulos H2 numerados opcionalmente**, no por cards.
66
+ - **Padding vertical variable**: más aire antes de las secciones densas (tablas) que entre secciones cortas.
67
+
68
+ ---
69
+
70
+ ## Componentes
71
+
72
+ - **Radio**: `4px` en bloques de código y badges, `0` en tablas y separadores. Dos escalas, no `rounded-2xl` en todo.
73
+ - **Elevación**: `border-hairline`. Sin `shadow-lg`, sin `drop-shadow`, sin glow. Un proyecto de terminal no flota.
74
+ - **Badges**: shields.io, con solo los que tienen dato real (npm, license, node, tests, coverage, types). Sin fila de logos de clientes.
75
+ - **Tablas**: hairline horizontal, header en 600, `text-align: right` en columnas numéricas, `tabular-nums`.
76
+ - **Diagramas**: ASCII en code block. Deben ser específicos — mostrar `bus/<canal>/<seq>-<msgid>.json` y no `<< >>`.
77
+ - **Código**: siempre con el lenguaje correcto. Nunca un bloque sin highlighting.
78
+ - **Iconos**: dentro de texto o ninguno. Cero emoji como icono de feature. Los emoji en prosa sí, en listas de features no.
79
+
80
+ ---
81
+
82
+ ## Copy
83
+
84
+ - **Headline**: nombra el mecanismo, no el beneficio. «Una oficina de agentes donde el trabajo no se detiene» falla el logo-tap test (un competidor podría llamarse igual). «AI-OFFICE: orquestación ejecutable para OpenCode» pasa el test porque el mecanismo es específico.
85
+ - **Sin frases cliché**: Transform · Unlock · Seamlessly · Effortlessly · Supercharge · Revolutionary · Game-changing.
86
+ - **Sin em-dash confetti**: máximo 1 por párrafo, y solo si vale.
87
+ - **Los números son reales o no van**: 148 tests · 87.8% coverage · 4.656 líneas · 21 archivos. Nada de «+50 agentes» sin contexto.
88
+ - **Cero fluff en el primer párrafo**: el H1 y el tagline dicen qué es. La venta empieza en la tabla del problema.
89
+
90
+ ---
91
+
92
+ ## Movimiento e interacción
93
+
94
+ Aplica a la landing HTML y a cualquier demo. El README es markdown: no hay motion, y eso está bien.
95
+
96
+ Si se agrega una landing:
97
+
98
+ - **Job por animación**: 1 entrada, 1 hover, 1 press. Nada más.
99
+ - **Duración**: `220ms` estándar, `400ms` entrada de hero, `80ms` cambio de estado.
100
+ - **Easing**: `cubic-bezier(0.16, 1, 0.3, 1)` para entrar (expo-out), `cubic-bezier(0.3, 0, 0.8, 0.15)` para salir (60% de la entrada).
101
+ - **Sin `transition: all`**: siempre `transition-[transform,opacity,border-color]`.
102
+ - **Sin `fadeInUp + stagger 0.1s` en cada sección**: máximo una entrada animada; el resto aparece sin animación.
103
+ - **Hover**: `border-color` **o** `translateY(-2px)`. Nunca los dos, nunca solo opacity.
104
+ - **Press**: `scale(0.97)` en 90 ms.
105
+ - **`prefers-reduced-motion: reduce`**: `opacity: 1 !important; transform: none !important` — aditivo, no `animation: none` brutal.
106
+ - **Sin parallax**, sin scroll-jacking, sin marquee.
107
+
108
+ ---
109
+
110
+ ## Prohibiciones (hard)
111
+
112
+ 1. Gradiente `blue → purple`, o cualquier purple-to-blue.
113
+ 2. Una sola familia tipográfica con pesos 400-600.
114
+ 3. Centrado con badge de status + H1 grande + doble CTA.
115
+ 4. `rounded-2xl` + `shadow-lg` + `backdrop-blur` en todo.
116
+ 5. `grid-cols-3 gap-6` con cards idénticas.
117
+ 6. Emoji como icono de feature.
118
+ 7. Eyebrow pill (`uppercase tracking-widest text-xs` sobre el H1).
119
+ 8. Fila de 3 stat cards con números redondos sin data verificable.
120
+ 9. `transition: all 0.3s ease`.
121
+ 10. `fadeInUp` uniforme con stagger lineal en cada sección.
122
+ 11. Logo orb con gradiente.
123
+ 12. `#FFFFFF` / `#000000` puros.
124
+ 13. Grados, skeuomorfismo, emoji en títulos.
125
+ 14. Métricas inventadas o redondeadas sin contexto.
126
+
127
+ ---
128
+
129
+ ## Prueba de silueta
130
+
131
+ Antes de dar por terminado un README o una landing:
132
+
133
+ - **10% thumbnail**: ¿se ve como un README de proyecto o como una landing de IA?
134
+ - **Logo-tap**: tapá el logo. ¿el headline sigue sirviendo para un competidor? Si sí, reescribir.
135
+ - **Hue shift 15°**: ¿sigue viéndose como clon? Si sí, cambiar estructura, no color.
136
+ - **Contraste**: texto principal ≥ 4.5:1 sobre `bg`; muted ≥ 3:1 para metadata.
137
+ - **Sin numbers huérfanos**: cada cifra del README tiene que ser verificable con un comando del repo.
138
+
139
+ ---
140
+
141
+ ## Referencias
142
+
143
+ - `docs/ARCHITECTURE.md` — la arquitectura en detalle, para el que quiera el porqué.
144
+ - `skills/oficina/reference/mesh.md` — el protocolo de la malla.
145
+ - `tests/` — la prueba de que los números del README son ciertos.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OFICINA contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.