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
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Briefing: el contrato de información que recibe cada agente.
3
+ *
4
+ * ## El problema que resuelve
5
+ *
6
+ * Un subagente arranca con un contexto vacío. Si elCommander le pasa un
7
+ * prompt suelta ("implementá el login"), el agente tiene que adivinar: qué
8
+ * sabe del proyecto, qué espera de él, qué puede tocar, a quién preguntarle
9
+ * si se traba, y qué tiene que entregar. Adivinar es la fuente de todo el
10
+ * trabajo que se repite y de los agentes que se salen del scope.
11
+ *
12
+ * ## La solución
13
+ *
14
+ * Un briefing con **orden fijo** y **mínimo verificable**:
15
+ *
16
+ * - **Orden**: la información llega en una secuencia que va de lo más
17
+ * estable a lo más cambiante. Identidad → misión → contexto → territorio
18
+ * → protocolo → bus → calidad → límites → éxito. Un agente lee de arriba
19
+ * hacia abajo y siempre tiene lo que necesita para el siguiente paso.
20
+ *
21
+ * - **Mínimo**: hay secciones **requeridas**. Si alguna queda vacía, el
22
+ * briefing se marca `incompleto` y **el agente no arranca**. Un briefing
23
+ * a medio llenar produce un agente a medio informado, que es peor que no
24
+ * tener agente.
25
+ *
26
+ * - **Cuatro artefactos**: el briefing se materializa en cuatro archivos en
27
+ * disco, porque un agente no "recuerda" un prompt largo: lo lee.
28
+ */
29
+ import type { Card, Ficha, RosterEntry } from "./types.js";
30
+ export type BriefingSectionId = "identidad" | "mision" | "contexto-conocido" | "contexto-desconocido" | "territorio" | "protocolo" | "bus" | "calidad" | "limites" | "exito";
31
+ /** Definición de una sección del briefing. El orden es fijo. */
32
+ export interface BriefingSectionDef {
33
+ id: BriefingSectionId;
34
+ order: number;
35
+ title: string;
36
+ /** Sin esto, el agente no puede arrancar. */
37
+ required: boolean;
38
+ /** Para qué está la sección. Se le muestra alCommander. */
39
+ purpose: string;
40
+ }
41
+ /**
42
+ * Las 10 secciones, en orden.
43
+ *
44
+ * El orden importa: identidad y misión siempre primero (qué sos y qué hacés),
45
+ * después el contexto (qué sabés), después el territorio y el protocolo
46
+ * (cómo hacés), y al final la definición de éxito (cómo se sabe que
47
+ * terminaste).
48
+ */
49
+ export declare const BRIEFING_SECTIONS: BriefingSectionDef[];
50
+ export interface Briefing {
51
+ agentId: string;
52
+ role: string;
53
+ objective: string;
54
+ card: {
55
+ id: string;
56
+ title: string;
57
+ type: string;
58
+ acceptance: string[];
59
+ gate: string;
60
+ };
61
+ /** Las 10 secciones, en orden, con su contenido. */
62
+ sections: BriefingSection[];
63
+ /** Ids de secciones requeridas que quedaron vacías. */
64
+ missing: BriefingSectionId[];
65
+ /** ¿Se puede arrancar? */
66
+ complete: boolean;
67
+ /** Los 4 archivos que se escriben en disco para el agente. */
68
+ artifacts: BriefingArtifact[];
69
+ }
70
+ /** Una sección del briefing, ya resuelta. */
71
+ export interface BriefingSection {
72
+ id: BriefingSectionId;
73
+ /** El orden fijo. */
74
+ order: number;
75
+ title: string;
76
+ /** Sin esto, el agente no puede arrancar. */
77
+ required: boolean;
78
+ /** Para qué está la sección. */
79
+ purpose: string;
80
+ /** El contenido renderizado. */
81
+ content: string;
82
+ /** ¿Tiene contenido? */
83
+ filled: boolean;
84
+ }
85
+ export interface BriefingArtifact {
86
+ filename: string;
87
+ content: string;
88
+ }
89
+ /** Contexto que el Commander le pasa al briefing. */
90
+ export interface BriefingContext {
91
+ ficha: Ficha;
92
+ card: Card;
93
+ objective: string;
94
+ /** Decisiones ya tomadas en la corrida. */
95
+ knownDecisions?: string[];
96
+ /** Restricciones descubiertas. */
97
+ knownConstraints?: string[];
98
+ /** Piezas ya construidas. */
99
+ builtPieces?: string[];
100
+ /** Trampas: lo que no hay que tocar. */
101
+ knownTraps?: string[];
102
+ /** Temas abiertos: huecos que el agente puede tener que cubrir. */
103
+ openQuestions?: string[];
104
+ /** Peers del roster, para saber a quién pedirle ayuda. */
105
+ peers?: RosterEntry[];
106
+ /** Id del coordinador al que escala. */
107
+ coordinatorId?: string;
108
+ }
109
+ /** Construye el briefing completo de un agente. */
110
+ export declare function buildBriefing(ctx: BriefingContext): Briefing;
111
+ /** Renderiza el briefing como un documento único (para lectura humana). */
112
+ export declare function renderBriefing(briefing: Briefing): string;
113
+ /** Texto compacto para inyectar en el prompt de una delegación. */
114
+ export declare function renderBriefingPrompt(briefing: Briefing): string;
115
+ //# sourceMappingURL=briefing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"briefing.d.ts","sourceRoot":"","sources":["../../src/core/briefing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO1D,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,QAAQ,GACR,mBAAmB,GACnB,sBAAsB,GACtB,YAAY,GACZ,WAAW,GACX,KAAK,GACL,SAAS,GACT,SAAS,GACT,OAAO,CAAA;AAEX,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,iBAAiB,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,EAuEjD,CAAA;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,EAAE,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,oDAAoD;IACpD,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,uDAAuD;IACvD,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,0BAA0B;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,8DAA8D;IAC9D,SAAS,EAAE,gBAAgB,EAAE,CAAA;CAC9B;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,iBAAiB,CAAA;IACrB,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAA;IACjB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAMD,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,CAiD5D;AA0PD,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAkBzD;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAK/D"}
@@ -0,0 +1,410 @@
1
+ /**
2
+ * Briefing: el contrato de información que recibe cada agente.
3
+ *
4
+ * ## El problema que resuelve
5
+ *
6
+ * Un subagente arranca con un contexto vacío. Si elCommander le pasa un
7
+ * prompt suelta ("implementá el login"), el agente tiene que adivinar: qué
8
+ * sabe del proyecto, qué espera de él, qué puede tocar, a quién preguntarle
9
+ * si se traba, y qué tiene que entregar. Adivinar es la fuente de todo el
10
+ * trabajo que se repite y de los agentes que se salen del scope.
11
+ *
12
+ * ## La solución
13
+ *
14
+ * Un briefing con **orden fijo** y **mínimo verificable**:
15
+ *
16
+ * - **Orden**: la información llega en una secuencia que va de lo más
17
+ * estable a lo más cambiante. Identidad → misión → contexto → territorio
18
+ * → protocolo → bus → calidad → límites → éxito. Un agente lee de arriba
19
+ * hacia abajo y siempre tiene lo que necesita para el siguiente paso.
20
+ *
21
+ * - **Mínimo**: hay secciones **requeridas**. Si alguna queda vacía, el
22
+ * briefing se marca `incompleto` y **el agente no arranca**. Un briefing
23
+ * a medio llenar produce un agente a medio informado, que es peor que no
24
+ * tener agente.
25
+ *
26
+ * - **Cuatro artefactos**: el briefing se materializa en cuatro archivos en
27
+ * disco, porque un agente no "recuerda" un prompt largo: lo lee.
28
+ */
29
+ import { CHANNELS } from "./bus.js";
30
+ /**
31
+ * Las 10 secciones, en orden.
32
+ *
33
+ * El orden importa: identidad y misión siempre primero (qué sos y qué hacés),
34
+ * después el contexto (qué sabés), después el territorio y el protocolo
35
+ * (cómo hacés), y al final la definición de éxito (cómo se sabe que
36
+ * terminaste).
37
+ */
38
+ export const BRIEFING_SECTIONS = [
39
+ {
40
+ id: "identidad",
41
+ order: 1,
42
+ title: "Quién sos",
43
+ required: true,
44
+ purpose: "Rol, especialidad de origen y de dónde viene tu briefing. Determina cómo pensás.",
45
+ },
46
+ {
47
+ id: "mision",
48
+ order: 2,
49
+ title: "Tu misión",
50
+ required: true,
51
+ purpose: "La card exacta, con criterios de aceptación y el control que tiene que pasar.",
52
+ },
53
+ {
54
+ id: "contexto-conocido",
55
+ order: 3,
56
+ title: "Lo que ya sabés",
57
+ required: true,
58
+ purpose: "Decisiones tomadas, restricciones descubiertas y piezas ya construidas. Lo que NO tenés que volver a buscar.",
59
+ },
60
+ {
61
+ id: "contexto-desconocido",
62
+ order: 4,
63
+ title: "Lo que NO sabés",
64
+ required: true,
65
+ purpose: "Los huecos explícitos y a quién preguntarle por cada uno. Lo que tenés que ir a buscar vos.",
66
+ },
67
+ {
68
+ id: "territorio",
69
+ order: 5,
70
+ title: "Tu territorio",
71
+ required: true,
72
+ purpose: "Qué archivos podés tocar y cuáles no. El motor bloquea lo que está fuera.",
73
+ },
74
+ {
75
+ id: "protocolo",
76
+ order: 6,
77
+ title: "Cómo trabajás",
78
+ required: true,
79
+ purpose: "El ciclo de trabajo, cuándo pedir ayuda, cuándo delegar y cuándo escalar.",
80
+ },
81
+ {
82
+ id: "bus",
83
+ order: 7,
84
+ title: "Tu canal",
85
+ required: true,
86
+ purpose: "Dónde dejás y encontrás mensajes. Formato y tiempos de vida.",
87
+ },
88
+ {
89
+ id: "calidad",
90
+ order: 8,
91
+ title: "Qué se espera de vos",
92
+ required: true,
93
+ purpose: "Los entregables exactos: handoff y evidencia. Sin evidencia no hay trabajo hecho.",
94
+ },
95
+ {
96
+ id: "limites",
97
+ order: 9,
98
+ title: "Lo que no podés hacer",
99
+ required: true,
100
+ purpose: "Las prohibiciones duras. Están en código, no en tu discretion.",
101
+ },
102
+ {
103
+ id: "exito",
104
+ order: 10,
105
+ title: "Cómo se mide que terminaste",
106
+ required: true,
107
+ purpose: "La definición de terminado. Si no podés cumplir esto, pedí ayuda antes de empezar.",
108
+ },
109
+ ];
110
+ // ─────────────────────────────────────────────────────────────────────────────
111
+ // Construcción
112
+ // ─────────────────────────────────────────────────────────────────────────────
113
+ /** Construye el briefing completo de un agente. */
114
+ export function buildBriefing(ctx) {
115
+ const { ficha, card, objective } = ctx;
116
+ const contents = {
117
+ identidad: renderIdentity(ficha, objective),
118
+ mision: renderMission(card, objective),
119
+ "contexto-conocido": renderKnownContext(ctx),
120
+ "contexto-desconocido": renderUnknownContext(ctx),
121
+ territorio: renderTerritory(card, ficha),
122
+ protocolo: renderProtocol(ficha, card),
123
+ bus: renderBus(ficha, ctx.coordinatorId),
124
+ calidad: renderQuality(card),
125
+ limites: renderLimits(ficha, card),
126
+ exito: renderSuccess(card, ficha),
127
+ };
128
+ const sections = BRIEFING_SECTIONS.map((def) => {
129
+ const content = contents[def.id] ?? "";
130
+ return {
131
+ id: def.id,
132
+ order: def.order,
133
+ title: def.title,
134
+ required: def.required,
135
+ purpose: def.purpose,
136
+ content,
137
+ filled: content.trim().length > 0,
138
+ };
139
+ });
140
+ const missing = sections
141
+ .filter((s) => s.required && !s.filled)
142
+ .map((s) => s.id);
143
+ return {
144
+ agentId: ficha.id,
145
+ role: ficha.role,
146
+ objective,
147
+ card: {
148
+ id: card.id,
149
+ title: card.title,
150
+ type: card.type,
151
+ acceptance: card.acceptance,
152
+ gate: card.gate,
153
+ },
154
+ sections,
155
+ missing,
156
+ complete: missing.length === 0,
157
+ artifacts: renderArtifacts(sections, ficha, card),
158
+ };
159
+ }
160
+ // ─────────────────────────────────────────────────────────────────────────────
161
+ // Render de cada sección
162
+ // ─────────────────────────────────────────────────────────────────────────────
163
+ function renderIdentity(ficha, objective) {
164
+ // Sin identidad no hay briefing: el agente no sabe qué rol tiene.
165
+ if (!ficha.displayName || !ficha.role)
166
+ return "";
167
+ const lines = [
168
+ `Sos **${ficha.displayName}** (\`${ficha.id}\`), rol \`${ficha.role}\`.`,
169
+ "",
170
+ `**Especialidad:** ${ficha.capabilities.slice(0, 8).join(", ") || "genérica"}.`,
171
+ `**Origen del briefing:** ${ficha.source.kind === "agency-agents" ? `catálogo agency-agents · ${ficha.source.division}/${ficha.source.path}` : "factory (rol fabricado para esta corrida)"}.`,
172
+ ];
173
+ if (ficha.source.vibe)
174
+ lines.push(`**Vibe:** ${ficha.source.vibe}`);
175
+ lines.push("", `**Corrida:** ${objective}`);
176
+ return lines.join("\n");
177
+ }
178
+ function renderMission(card, objective) {
179
+ return [
180
+ `**Card ${card.id} — ${card.title}** (${card.type})`,
181
+ "",
182
+ "**Criterios de aceptación** (todos tienen que cumplirse):",
183
+ ...card.acceptance.map((a, i) => `${i + 1}. ${a}`),
184
+ "",
185
+ `**Control de calidad de la card:** ${card.gate}`,
186
+ "",
187
+ "**Objetivo de la corrida:** " + objective,
188
+ ].join("\n");
189
+ }
190
+ function renderKnownContext(ctx) {
191
+ const lines = [];
192
+ const push = (title, items) => {
193
+ if (!items || items.length === 0)
194
+ return;
195
+ lines.push(`**${title}:**`);
196
+ lines.push(...items.map((i) => `- ${i}`));
197
+ lines.push("");
198
+ };
199
+ push("Decisiones ya tomadas", ctx.knownDecisions);
200
+ push("Restricciones descubiertas", ctx.knownConstraints);
201
+ push("Piezas ya construidas", ctx.builtPieces);
202
+ push("Trampas — no toques esto", ctx.knownTraps);
203
+ if (lines.length === 0) {
204
+ return "Todavía no hay decisiones tomadas en esta corrida. Sos el primero: lo que decidas queda escrito para los que vengan después.";
205
+ }
206
+ return lines.join("\n").trim();
207
+ }
208
+ function renderUnknownContext(ctx) {
209
+ const lines = [];
210
+ const push = (title, items) => {
211
+ if (!items || items.length === 0)
212
+ return;
213
+ lines.push(`**${title}:**`);
214
+ lines.push(...items.map((i) => `- ${i}`));
215
+ lines.push("");
216
+ };
217
+ push("Temas abiertos en la corrida", ctx.openQuestions);
218
+ if (ctx.peers && ctx.peers.length > 0) {
219
+ lines.push("**A quién preguntarle si te trabás:**");
220
+ for (const peer of ctx.peers) {
221
+ lines.push(`- \`${peer.id}\` (${peer.role}) — ${peer.capabilities.slice(0, 4).join(", ")}`);
222
+ }
223
+ lines.push("");
224
+ lines.push("Pedí ayuda por el bus (`HELP_REQUEST`). No te quedes trabado esperando: el que puede, responde.");
225
+ }
226
+ if (lines.length === 0) {
227
+ return "No hay huecos conocidos. Si descubrís algo que no sabías, anotalo en el handoff.";
228
+ }
229
+ return lines.join("\n").trim();
230
+ }
231
+ function renderTerritory(card, ficha) {
232
+ const extra = ficha.scope.forbidden.filter((f) => !card.scope.forbidden.includes(f));
233
+ return [
234
+ "**Podés tocar:**",
235
+ ...(card.scope.mayTouch.length > 0
236
+ ? card.scope.mayTouch.map((s) => `- \`${s}\``)
237
+ : ["- (sin restricción declarada)"]),
238
+ "",
239
+ "**No podés tocar:**",
240
+ ...card.scope.forbidden.map((s) => `- \`${s}\``),
241
+ ...extra.map((s) => `- \`${s}\` (prohibido por tu ficha)`),
242
+ "",
243
+ "**Además, tu ficha te prohíbe:**",
244
+ ...ficha.mustNot.map((m) => `- ${m}`),
245
+ "",
246
+ "El motor rechaza cualquier escritura fuera de tu territorio. No es una sugerencia.",
247
+ ].join("\n");
248
+ }
249
+ function renderProtocol(ficha, card) {
250
+ const canDelegate = ficha.canDelegate;
251
+ return [
252
+ "**Ciclo de trabajo:**",
253
+ "1. Leé tu briefing entero antes de tocar nada.",
254
+ "2. Explorá lo que no sabés (sección 4). No inventes: preguntá o buscalo.",
255
+ "3. Trabajá **solo** dentro de tu territorio (sección 5).",
256
+ "4. Escribí el handoff y la evidencia (sección 8).",
257
+ "5. Entregá. Otro agente te revisa — y no sos vos.",
258
+ "",
259
+ "**Si te trabás:**",
260
+ "- Si el problema es de otro dominio → `HELP_REQUEST` por el bus a un peer. Antes de acceptar.help, evaluá vos si podés hacerlo ya sin romper tu propia card.",
261
+ "- Si el peer no está desplegado → pedí `SPAWN_REQUEST` al Integrador. **No lo clones por tu cuenta.**",
262
+ "- Si el problema es una decisión de producto → escalá alCommander.",
263
+ "- Si no vas a poder cumplir los criterios de aceptación → pedí ayuda antes de empezar, no después.",
264
+ "",
265
+ canDelegate
266
+ ? "**Podés delegar:** sí, hasta \`delegate_budget\` solicitudes. Usalo cuando el rol que falta es genuinamente otro."
267
+ : "**Podés delegar:** no. Si falta un rol, pedilo por el bus al Integrador.",
268
+ "",
269
+ `**Revisor de tu card:** \`${card.reviewer ?? "por asignar"}\` — no podés ser vos.`,
270
+ ].join("\n");
271
+ }
272
+ function renderBus(ficha, coordinatorId) {
273
+ return [
274
+ "**Dónde dejás y encontrás mensajes:**",
275
+ `- Tu inbox: \`inbox/${ficha.id}/\``,
276
+ `- Canal general entre pares: \`${CHANNELS.peer}/\``,
277
+ coordinatorId ? `- Tu coordinador: \`${coordinatorId}\` (canal \`${CHANNELS.flow}/\`)` : "",
278
+ "",
279
+ "**Formato de mensaje:**",
280
+ "```json",
281
+ '{ "from": "' + ficha.id + '", "to": ["e-otro"], "kind": "HELP_REQUEST",',
282
+ ' "subject": "' + ficha.id + '", "body": { "need": "...", "why_me": "..." } }',
283
+ "```",
284
+ "",
285
+ "**Reglas del canal:**",
286
+ "- Los mensajes se acumulan: no se borran. Lo que escribís queda en el historial.",
287
+ `- Tiempos de vida: ${900} segundos. Un pedido viejo no bloquea a nadie, pero tampoco se pierde.`,
288
+ "- Acusá recibo de lo que leés (`ack`). Así el emisor sabe que llegaste.",
289
+ "- No repitas un pedido con la misma clave: el bus lo deduplica.",
290
+ "- Los mensajes que no son para vos no se muestran. Un pedido de ayuda a alguien más no es tuyo.",
291
+ ]
292
+ .filter(Boolean)
293
+ .join("\n");
294
+ }
295
+ function renderQuality(card) {
296
+ return [
297
+ "**Entregables obligatorios** (ambos van a disco, en `.oficina/artifacts/" + card.id + "/`):",
298
+ "",
299
+ "**1. `handoff.md` — qué hiciste**",
300
+ "- Qué implementaste, en concreto",
301
+ "- Qué archivos tocaste, uno por línea, con el motivo",
302
+ "- Qué decisiones tomaste y por qué",
303
+ "- Qué quedó **afuera** y por qué",
304
+ "- Qué necesitás que sepa el siguiente",
305
+ "",
306
+ "**2. `evidence.md` — la prueba**",
307
+ "- La salida **real** de los comandos que corriste, pegada literal",
308
+ "- El comando que corriste y su exit code",
309
+ "- Sin evidencia, la card no puede aprobarse. No es un formality: es la diferencia entre «lo hice» y «creo que lo hice».",
310
+ ].join("\n");
311
+ }
312
+ function renderLimits(ficha, card) {
313
+ const limits = new Set([...ficha.mustNot, ...card.scope.forbidden.map((f) => `no tocar ${f}`)]);
314
+ return [
315
+ "Estas reglas están en código. No son criterio: si las violás, el motor te corta.",
316
+ "",
317
+ ...[...limits].map((l) => `- ${l}`),
318
+ "",
319
+ "**Nunca:**",
320
+ "- Declarar la card terminada sin el control de calidad en verde",
321
+ "- Aprobar tu propio trabajo",
322
+ "- Tocar archivos de otros agentes o de sus artefactos",
323
+ "- Inventar output de un comando que no corriste",
324
+ ].join("\n");
325
+ }
326
+ function renderSuccess(card, ficha) {
327
+ return [
328
+ "**Terminaste cuando las tres cosas son verdad:**",
329
+ "",
330
+ `1. Todos los criterios de aceptación se cumplen — y lo podés demostrar.`,
331
+ `2. El control de calidad de la card (\`${card.gate}\`) pasa.`,
332
+ "3. Dejaste `handoff.md` y `evidence.md` en disco.",
333
+ "",
334
+ `**Tu card:** \`${card.id}\` — ${card.title}`,
335
+ `**Tu rol:** \`${ficha.role}\``,
336
+ "",
337
+ "Si llegaste hasta acá y algo no cumple, **no lo declares terminado**: pedí ayuda o escalá. Un trabajo a medio hacer, reportado como terminado, es peor que un trabajo a medio hecho reportado como a medio hacer.",
338
+ ].join("\n");
339
+ }
340
+ // ─────────────────────────────────────────────────────────────────────────────
341
+ // Artefactos
342
+ // ─────────────────────────────────────────────────────────────────────────────
343
+ /** Mapea qué secciones van a cada artefacto. */
344
+ const ARTIFACT_MAP = [
345
+ {
346
+ filename: "ficha.md",
347
+ sections: ["identidad"],
348
+ intro: "# Tu ficha",
349
+ },
350
+ {
351
+ filename: "misiones.md",
352
+ sections: ["mision", "contexto-conocido", "contexto-desconocido"],
353
+ intro: "# Tus misiones",
354
+ },
355
+ {
356
+ filename: "protocolo.md",
357
+ sections: ["protocolo", "territorio", "calidad", "limites", "exito"],
358
+ intro: "# Cómo trabajás",
359
+ },
360
+ {
361
+ filename: "bus.md",
362
+ sections: ["bus"],
363
+ intro: "# Tu canal",
364
+ },
365
+ ];
366
+ /** Renderiza el briefing como los 4 archivos que el agente lee. */
367
+ function renderArtifacts(sections, ficha, card) {
368
+ const byId = new Map(sections.map((s) => [s.id, s]));
369
+ return ARTIFACT_MAP.map(({ filename, sections: ids, intro }) => {
370
+ const body = ids
371
+ .map((id) => {
372
+ const section = byId.get(id);
373
+ if (!section)
374
+ return "";
375
+ return `## ${section.title}\n\n${section.content}`;
376
+ })
377
+ .filter(Boolean)
378
+ .join("\n\n---\n\n");
379
+ return {
380
+ filename,
381
+ content: `${intro}\n\n> Agente \`${ficha.id}\` · card \`${card.id}\`\n\n${body}\n`,
382
+ };
383
+ });
384
+ }
385
+ /** Renderiza el briefing como un documento único (para lectura humana). */
386
+ export function renderBriefing(briefing) {
387
+ const lines = [
388
+ `# Briefing — ${briefing.role}`,
389
+ "",
390
+ `> Agente \`${briefing.agentId}\` · card \`${briefing.card.id}\` · ${briefing.complete ? "completo" : `INCOMPLETO — faltan: ${briefing.missing.join(", ")}`}`,
391
+ "",
392
+ ];
393
+ for (const section of briefing.sections) {
394
+ lines.push(`## ${section.order}. ${section.title}`);
395
+ lines.push("");
396
+ lines.push(section.content);
397
+ lines.push("");
398
+ lines.push("---");
399
+ lines.push("");
400
+ }
401
+ return lines.join("\n");
402
+ }
403
+ /** Texto compacto para inyectar en el prompt de una delegación. */
404
+ export function renderBriefingPrompt(briefing) {
405
+ const required = briefing.sections.filter((s) => s.required && s.filled);
406
+ return required
407
+ .map((s) => `## ${s.title}\n${s.content}`)
408
+ .join("\n\n");
409
+ }
410
+ //# sourceMappingURL=briefing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"briefing.js","sourceRoot":"","sources":["../../src/core/briefing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AA6BnC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,kFAAkF;KAC5F;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,+EAA+E;KACzF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,8GAA8G;KACxH;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,6FAA6F;KACvG;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,2EAA2E;KACrF;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,2EAA2E;KACrF;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,8DAA8D;KACxE;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,sBAAsB;QAC7B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,mFAAmF;KAC7F;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,uBAAuB;QAC9B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,gEAAgE;KAC1E;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,6BAA6B;QACpC,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,oFAAoF;KAC9F;CACF,CAAA;AAiED,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,GAAoB;IAChD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;IAEtC,MAAM,QAAQ,GAAsC;QAClD,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;QAC3C,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;QACtC,mBAAmB,EAAE,kBAAkB,CAAC,GAAG,CAAC;QAC5C,sBAAsB,EAAE,oBAAoB,CAAC,GAAG,CAAC;QACjD,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QACxC,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;QACtC,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC;QAC5B,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;QAClC,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;KAClC,CAAA;IAED,MAAM,QAAQ,GAAsB,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QACtC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;SAClC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,QAAQ;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAEnB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS;QACT,IAAI,EAAE;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;QACD,QAAQ;QACR,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC9B,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;KAClD,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF,SAAS,cAAc,CAAC,KAAY,EAAE,SAAiB;IACrD,kEAAkE;IAClE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IAEhD,MAAM,KAAK,GAAG;QACZ,SAAS,KAAK,CAAC,WAAW,SAAS,KAAK,CAAC,EAAE,cAAc,KAAK,CAAC,IAAI,KAAK;QACxE,EAAE;QACF,qBAAqB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,GAAG;QAC/E,4BAA4B,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,2CAA2C,GAAG;KAC9L,CAAA;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACnE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,SAAS,EAAE,CAAC,CAAA;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,IAAU,EAAE,SAAiB;IAClD,OAAO;QACL,UAAU,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,IAAI,GAAG;QACpD,EAAE;QACF,2DAA2D;QAC3D,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,EAAE;QACF,sCAAsC,IAAI,CAAC,IAAI,EAAE;QACjD,EAAE;QACF,8BAA8B,GAAG,SAAS;KAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAoB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAA2B,EAAE,EAAE;QAC1D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IACjD,IAAI,CAAC,4BAA4B,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACxD,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IAC9C,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAEhD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,8HAA8H,CAAA;IACvI,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAChC,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAoB;IAChD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAA2B,EAAE,EAAE;QAC1D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,aAAa,CAAC,CAAA;IAEvD,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;QACnD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,iGAAiG,CAAC,CAAA;IAC/G,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,kFAAkF,CAAA;IAC3F,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,KAAY;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IACpF,OAAO;QACL,kBAAkB;QAClB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9C,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;QACtC,EAAE;QACF,qBAAqB;QACrB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAChD,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC;QAC1D,EAAE;QACF,kCAAkC;QAClC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,EAAE;QACF,oFAAoF;KACrF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAY,EAAE,IAAU;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IACrC,OAAO;QACL,uBAAuB;QACvB,gDAAgD;QAChD,0EAA0E;QAC1E,0DAA0D;QAC1D,mDAAmD;QACnD,mDAAmD;QACnD,EAAE;QACF,mBAAmB;QACnB,8JAA8J;QAC9J,uGAAuG;QACvG,oEAAoE;QACpE,oGAAoG;QACpG,EAAE;QACF,WAAW;YACT,CAAC,CAAC,mHAAmH;YACrH,CAAC,CAAC,0EAA0E;QAC9E,EAAE;QACF,6BAA6B,IAAI,CAAC,QAAQ,IAAI,aAAa,wBAAwB;KACpF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAY,EAAE,aAAsB;IACrD,OAAO;QACL,uCAAuC;QACvC,uBAAuB,KAAK,CAAC,EAAE,KAAK;QACpC,kCAAkC,QAAQ,CAAC,IAAI,KAAK;QACpD,aAAa,CAAC,CAAC,CAAC,uBAAuB,aAAa,eAAe,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QAC3F,EAAE;QACF,yBAAyB;QACzB,SAAS;QACT,aAAa,GAAG,KAAK,CAAC,EAAE,GAAG,8CAA8C;QACzE,gBAAgB,GAAG,KAAK,CAAC,EAAE,GAAG,iDAAiD;QAC/E,KAAK;QACL,EAAE;QACF,uBAAuB;QACvB,kFAAkF;QAClF,sBAAsB,GAAG,wEAAwE;QACjG,yEAAyE;QACzE,iEAAiE;QACjE,iGAAiG;KAClG;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,OAAO;QACL,0EAA0E,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM;QAC7F,EAAE;QACF,mCAAmC;QACnC,kCAAkC;QAClC,sDAAsD;QACtD,oCAAoC;QACpC,kCAAkC;QAClC,uCAAuC;QACvC,EAAE;QACF,kCAAkC;QAClC,mEAAmE;QACnE,0CAA0C;QAC1C,yHAAyH;KAC1H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAY,EAAE,IAAU;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/F,OAAO;QACL,kFAAkF;QAClF,EAAE;QACF,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,EAAE;QACF,YAAY;QACZ,iEAAiE;QACjE,6BAA6B;QAC7B,uDAAuD;QACvD,iDAAiD;KAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAAU,EAAE,KAAY;IAC7C,OAAO;QACL,kDAAkD;QAClD,EAAE;QACF,yEAAyE;QACzE,0CAA0C,IAAI,CAAC,IAAI,WAAW;QAC9D,mDAAmD;QACnD,EAAE;QACF,kBAAkB,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,KAAK,EAAE;QAC7C,iBAAiB,KAAK,CAAC,IAAI,IAAI;QAC/B,EAAE;QACF,mNAAmN;KACpN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,gDAAgD;AAChD,MAAM,YAAY,GAAyE;IACzF;QACE,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,KAAK,EAAE,YAAY;KACpB;IACD;QACE,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,sBAAsB,CAAC;QACjE,KAAK,EAAE,gBAAgB;KACxB;IACD;QACE,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;QACpE,KAAK,EAAE,iBAAiB;KACzB;IACD;QACE,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,KAAK,EAAE,YAAY;KACpB;CACF,CAAA;AAED,mEAAmE;AACnE,SAAS,eAAe,CACtB,QAA2B,EAC3B,KAAY,EACZ,IAAU;IAEV,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,GAAG;aACb,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAA;YACvB,OAAO,MAAM,OAAO,CAAC,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACpD,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,aAAa,CAAC,CAAA;QAEtB,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,GAAG,KAAK,kBAAkB,KAAK,CAAC,EAAE,eAAe,IAAI,CAAC,EAAE,SAAS,IAAI,IAAI;SACnF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,KAAK,GAAa;QACtB,gBAAgB,QAAQ,CAAC,IAAI,EAAE;QAC/B,EAAE;QACF,cAAc,QAAQ,CAAC,OAAO,eAAe,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;QAC7J,EAAE;KACH,CAAA;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACxE,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACzC,IAAI,CAAC,MAAM,CAAC,CAAA;AACjB,CAAC"}