oficina-opencode 0.0.0-stage → 2.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.
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
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Catálogo: resolución de roles desde agency-agents.
3
+ *
4
+ * ## Por qué esto no es un `grep` de descripciones
5
+ *
6
+ * El repo de agency-agents tiene 306 agentes en 25 divisiones. Cada uno trae
7
+ * un *briefing* de 10 secciones, y la especialidad real NO está en el
8
+ * `description` del frontmatter: está en el cuerpo.
9
+ *
10
+ * Un agente de statistics, por ejemplo, declara:
11
+ * - description: "Expert in quantitative research methodology..."
12
+ * - Core Mission → "Pressure-Test Quantitative Claims", "Design Sound Studies"
13
+ * - Technical Deliverables → "Claim Interrogation Framework", "Effect Size Report"
14
+ * - Advanced Capabilities → "Causal Inference", "Experimental Design"
15
+ *
16
+ * La `description` dice "de qué se ocupa". El cuerpo dice **en qué es
17
+ * exactamente bueno**. Un matcher que solo mira la description no puede
18
+ * distinguir a un metodólogo de un analista de datos, aunque uno de los dos
19
+ * sea exactamente lo que la card necesita.
20
+ *
21
+ * Por eso el parser extrae las secciones del cuerpo y el matching pondera
22
+ * cada campo por lo que aporta.
23
+ */
24
+ import type { CatalogAgent, CatalogMatch } from "./types.js";
25
+ /** Parsea frontmatter YAML simple (clave: valor, sin anidación). */
26
+ export declare function parseFrontmatter(content: string): {
27
+ data: Record<string, string>;
28
+ body: string;
29
+ };
30
+ /** Limpia un encabezado de sección de los emoji y espacios que agency-agents usa. */
31
+ export declare function normalizeHeading(raw: string): string;
32
+ /**
33
+ * Divide el cuerpo en secciones H2.
34
+ *
35
+ * Los encabezados de agency-agents vienen con emoji (`## 🎯 Your Identity &
36
+ * Memory`) o lisos (`## Core Mission`). Se normalizan para que el matching
37
+ * sea estable.
38
+ */
39
+ export declare function parseSections(body: string): Record<string, string>;
40
+ /**
41
+ * Busca una sección por cualquiera de sus nombres posibles.
42
+ *
43
+ * La estructura de agency-agents tiene variantes con y sin el "Your", y
44
+ * con y sin emoji. En vez de hardcodear 20 nombres, se busca por coincidencia
45
+ * de palabra clave.
46
+ */
47
+ export declare function findSection(sections: Record<string, string>, ...keywords: string[]): string | undefined;
48
+ /** Extrae los subtítulos H3 de un bloque de texto. */
49
+ export declare function extractSubheadings(block: string | undefined): string[];
50
+ /**
51
+ * Extrae las etiquetas de una sección "Core Mission".
52
+ *
53
+ * La sección viene en dos formatos y ambos son válidos en el repo real:
54
+ *
55
+ * 1. **Subtítulos H3** — `### Pressure-Test Quantitative Claims`
56
+ * 2. **Lista de bullets** — `- **Subvert Default Biases**: Ensure generated...`
57
+ *
58
+ * Se intentan los H3 primero. Si no hay, se cae a los bullets, y de cada
59
+ * bullet se extrae la etiqueta: la parte en negrita si la hay, o las
60
+ * primeras palabras antes del primer `:`.
61
+ *
62
+ * Sin este fallback, la mitad del catálogo queda sin misión declarada y el
63
+ * matching pierde la señal más fuerte que tiene.
64
+ */
65
+ export declare function extractMissionLabels(block: string | undefined): string[];
66
+ /** Extrae los items numerados o con guion de un bloque de texto. */
67
+ export declare function extractListItems(block: string | undefined): string[];
68
+ /**
69
+ * Mapa de tokens a dominios.
70
+ *
71
+ * Solo se usa para el fallback por tokens (cuando no hay match estructural).
72
+ * El matching principal es por secciones.
73
+ */
74
+ export declare const CAPABILITY_TAXONOMY: Record<string, string[]>;
75
+ /**
76
+ * Afinidad de división.
77
+ *
78
+ * Si la card pide capacidades de un dominio, la división homónima del
79
+ * catálogo es una señal fuerte. "gis" → división `gis`. "game" →
80
+ * `game-development`. Es una señal barata y muy precisa.
81
+ */
82
+ export declare const DIVISION_AFFINITY: Record<string, string[]>;
83
+ /**
84
+ * Convierte una frase en un conjunto de tokens con señal.
85
+ *
86
+ * Se filtran stopwords y tokens de menos de 3 caracteres. Los tokens de
87
+ * más de 3 caracteres se consideran "concepts" para el matching.
88
+ */
89
+ export declare function capabilityTokens(phrase: string): Set<string>;
90
+ /**
91
+ * Infiere capabilities de un agente.
92
+ *
93
+ * Tres fuentes, en orden de valor:
94
+ * 1. Los subtítulos de "Core Mission" — **la** especialidad del agente.
95
+ * 2. Los subtítulos de "Advanced Capabilities" — lo que maneja mejor.
96
+ * 3. Los subtítulos de "Technical Deliverables" — lo que produce.
97
+ *
98
+ * Más los tokens de la descripción y del nombre, como respaldo.
99
+ */
100
+ export declare function extractCapabilities(agent: {
101
+ displayName: string;
102
+ description: string;
103
+ missions: string[];
104
+ deliverables: string[];
105
+ advanced: string[];
106
+ }): string[];
107
+ /**
108
+ * Convierte los subtítulos de misión en etiquetas legibles.
109
+ *
110
+ * "Pressure-Test Quantitative Claims" → "pressure-test quantitative claims".
111
+ * Se usan como capabilitiesdirectly comparables con lo que pide la card.
112
+ */
113
+ export declare function missionTags(missions: string[]): string[];
114
+ export interface CatalogScanOptions {
115
+ /** Raíz del repo agency-agents. */
116
+ root: string;
117
+ /** Divisiones a considerar. Vacío = todas. */
118
+ divisions?: string[];
119
+ /** Si es true, ignora las divisiones sin agentes de código. */
120
+ codeOnly?: boolean;
121
+ }
122
+ export declare function scanCatalog(options: CatalogScanOptions): Promise<CatalogAgent[]>;
123
+ /** "frontend-developer" → "Frontend Developer". */
124
+ export declare function titleize(slug: string): string;
125
+ /**
126
+ * Pesos de cada señal en el score.
127
+ *
128
+ * El orden reflects dónde está la información real:
129
+ *
130
+ * 1. **El nombre del rol** (`engineering-frontend-developer`) es la etiqueta
131
+ * más literal de la especialidad que existe. ElCommander también pide
132
+ * roles por nombre, así que es la señal más alineada entre las dos
133
+ * listas.
134
+ *
135
+ * 2. **La misión declarada** ("Create Modern Web Applications") es lo que el
136
+ * agente dice que sabe hacer. El overlap literal es preciso; el
137
+ * conceptual (con taxonomía) bridgea sinónimos.
138
+ *
139
+ * 3. **El cuerpo completo** es un pajaro: 300 líneas donde cualquier
140
+ * palabra genérica ("review", "design", "audit") aparece en todos. Por
141
+ * eso casi no pesa. Con peso alto, un "Legal Document Review" ganaba el
142
+ * match de "revisar la seguridad de una API" por la palabra "review".
143
+ */
144
+ export declare const MATCH_WEIGHTS: {
145
+ /** El nombre del rol y su display name. */
146
+ readonly name: 0.35;
147
+ /** La misión, overlap literal. */
148
+ readonly missionLiteral: 0.28;
149
+ /** La misión, overlap conceptual (taxonomía + lematización). */
150
+ readonly missionConcept: 0.18;
151
+ /** Capabilities inferidas del cuerpo. */
152
+ readonly capabilities: 0.05;
153
+ /** Lo que el agente sabe producir. */
154
+ readonly deliverables: 0.03;
155
+ /**
156
+ * La división: contexto, no especialidad — pero señal fuerte. Una card de
157
+ * e2e testing tiene que ir a la división `testing`, no a `engineering`.
158
+ */
159
+ readonly division: 0.1;
160
+ /** El texto completo: ruido puro. */
161
+ readonly text: 0.01;
162
+ };
163
+ /**
164
+ * Convierte una frase en un conjunto de tokens **y conceptos**.
165
+ *
166
+ * ## Por qué se conservan los tokens crudos
167
+ *
168
+ * La primera versión de esta función reemplazaba cada token por su grupo
169
+ * completo de alias. El efecto fue contraproducente: el objetivo
170
+ * `{playwright, e2e, testing, checkout, browser}` colapsaba a un solo
171
+ * concepto `testing`, y cualquier agente que mencionara "Testing" una vez
172
+ * (un code reviewer, por ejemplo)得分 100% de cobertura conceptual.
173
+ *
174
+ * La granularidad se pierde al colapsar. Por eso los tokens crudos se
175
+ * **conservan** y el concepto se **agrega**:
176
+ *
177
+ * - "web" → {web, react} (puentea con "frontend" y "react")
178
+ * - "Testing"→ {testing} (no colapsa a sus 13 alias)
179
+ *
180
+ * Ahora un agente tiene que coincidir en **varias** de las cosas pedidas,
181
+ * no en una sola.
182
+ */
183
+ export declare function canonicalConcepts(phrase: string): Set<string>;
184
+ /**
185
+ * Sinónimos **por capability**.
186
+ *
187
+ * ## Por qué no alcanza con la taxonomía
188
+ *
189
+ * La taxonomía agrupa por *concepto*: "e2e" y "testing" caen en el mismo
190
+ * grupo. Con eso, un agente que dice "testing" matcheaba "e2e", y un PDF
191
+ * engine que menciona "Playwright" le ganaba a un Test Automation Engineer
192
+ * que decía "end-to-end" — que es la misma palabra escrita larga.
193
+ *
194
+ * Los sinónimos van **por capability**: "e2e" es "end-to-end", pero
195
+ * "e2e" NO es "playwright". Esa distinción es la que separa a un
196
+ * especialista de un generalista que menciona la tool de pasada.
197
+ */
198
+ export declare const CAPABILITY_SYNONYMS: Record<string, string[]>;
199
+ /**
200
+ * Sinónimos de una capability.
201
+ *
202
+ * Si la capability no está en la tabla, sus sinónimos son ella misma: el
203
+ * match es literal o lematizado.
204
+ */
205
+ export declare function synonymsOf(capability: string): Set<string>;
206
+ /**
207
+ * ¿El agente menciona esta capability, por sinonimia o lematización?
208
+ *
209
+ * La capability puede ser una **frase** ("react components"), no un token
210
+ * suelto: se tokeniza y se busca cualquiera de sus partes. Un token solo
211
+ * ("react") se busca como synonym group.
212
+ */
213
+ export declare function mentionsCapability(agentTokens: Set<string>, capability: string): boolean;
214
+ /**
215
+ * Fracción de las capabilities objetivo que el agente menciona.
216
+ *
217
+ * Una capability puede ser una **frase** ("react component accessibility").
218
+ * En ese caso cuenta como varias: cada palabra se evalúa por separado. Si no,
219
+ * "react component accessibility" valdría lo mismo que "react", y un agente
220
+ * que solo menciona accesibilidad ganaría una card de frontend.
221
+ */
222
+ export declare function capabilityCoverage(agentTokens: Set<string>, target: string[]): number;
223
+ /**
224
+ * Lematiza un token: "testing" → "test", "validation" → "validat".
225
+ *
226
+ * ## Por qué hace falta
227
+ *
228
+ * El Commander pide capabilities en sus palabras ("testing", "validation") y
229
+ * los agentes de agency-agents usan las suyas ("test", "validate"). Sin
230
+ * lematizar, dos palabras que significan lo mismo no se ven nunca.
231
+ *
232
+ * Es la diferencia entre un matcher de palabras y uno de conceptos.
233
+ */
234
+ export declare function stem(token: string): string;
235
+ /** Afinidad de la división con las capabilities pedidas. */
236
+ export declare function divisionAffinity(division: string, target: string[]): number;
237
+ /**
238
+ * Matchea un objetivo de capabilities contra el catálogo.
239
+ *
240
+ * El score es ponderado por campo, no una bolsa de tokens. Un agente cuyo
241
+ * "Core Mission" menciona literalmente lo que la card necesita gana sobre
242
+ * uno que menciona la palabra de pasada en el cuerpo.
243
+ */
244
+ export declare function matchCapabilities(catalog: CatalogAgent[], target: string[], options?: {
245
+ division?: string;
246
+ minCoverage?: number;
247
+ }): CatalogMatch | undefined;
248
+ /**
249
+ * Resuelve un rol: catálogo primero, factory si la cobertura es baja.
250
+ *
251
+ * ## La cobertura es sobre el PANEL, no sobre el primario
252
+ *
253
+ * Un objetivo casi nunca es de un solo dominio. Si el primario cubre la
254
+ * mitad y un complemento cubre la otra mitad, el objetivo **está cubierto**
255
+ * y no hace falta fabricar un rol.
256
+ *
257
+ * La cobertura se mide como:Concepts cubiertos por el panel / concepts
258
+ * pedidos. El umbral de 0.6 significa "el equipo cubre el 60% de lo que
259
+ * la card pide". Por debajo, se fabrica el rol.
260
+ */
261
+ export declare function resolveRole(catalog: CatalogAgent[], target: string[], minCoverage: number): {
262
+ match: CatalogMatch | undefined;
263
+ needsFactory: boolean;
264
+ panel?: RolePanel;
265
+ };
266
+ /**
267
+ * Devuelve los mejores N agentes para un objetivo, ordenados por cobertura.
268
+ *
269
+ * Útil para que el Comandante vea alternativas: "este es el mejor, pero
270
+ * estos dos también sirven y podrían repartir la carga".
271
+ */
272
+ export declare function rankCandidates(catalog: CatalogAgent[], target: string[], limit?: number): CatalogMatch[];
273
+ /**
274
+ * Construye un **panel de roles**: un primario más los complementos.
275
+ *
276
+ * ## Por qué un panel y no un solo agente
277
+ *
278
+ * Un objetivo casi nunca es de un solo dominio. "Formulario de login en
279
+ * React con validación y accesibilidad" necesita un frontend (que no sabe
280
+ * de ARIA) y un especialista en accesibilidad (que no sabe de React).
281
+ *
282
+ * Si el sistema elige uno solo, deja huecos. Si elige varios sin criterio,
283
+ * duplica capacidad.
284
+ *
285
+ * El panel resuelve las dos cosas:
286
+ * - **Primario**: el mejor match global. Se lleva la card.
287
+ * - **Complementos**: los agentes que cubren lo que el primario NO cubre.
288
+ * Cada uno entra con un rol distinto y sin pisar al primario.
289
+ *
290
+ * Es la misma lógica del equipo real: nadie hace de frontend y de
291
+ * especialista en accesibilidad a la vez, pero los dos están en la oficina.
292
+ */
293
+ export interface RolePanel {
294
+ primary: CatalogMatch | null;
295
+ complements: CatalogMatch[];
296
+ /** Capabilities que nadie del panel cubre. */
297
+ uncovered: string[];
298
+ }
299
+ export declare function buildPanel(catalog: CatalogAgent[], target: string[], options?: {
300
+ maxComplements?: number;
301
+ minComplementCoverage?: number;
302
+ }): RolePanel;
303
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/core/catalog.ts"],"names":[],"mappings":"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"}