xonecode 0.9.0 → 0.12.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 (120) hide show
  1. package/THIRD_PARTY_NOTICES.md +56 -0
  2. package/apps/web/dist/assets/index-BCO9A9PF.js +485 -0
  3. package/apps/web/dist/assets/index-CBbdNsze.css +1 -0
  4. package/apps/web/dist/assets/{php-DjRQ1K-w.js → php-DOl4aWua.js} +1 -1
  5. package/apps/web/dist/assets/{ruby-BcLyZ3qi.js → ruby-DFYuLGa1.js} +1 -1
  6. package/apps/web/dist/iconos/conectores/deepwiki.png +0 -0
  7. package/apps/web/dist/iconos/conectores/jira.png +0 -0
  8. package/apps/web/dist/index.html +2 -2
  9. package/apps/web/dist/openui/visor.css +1 -0
  10. package/apps/web/dist/openui/visor.js +9113 -0
  11. package/dist/agent/conectores/conectoresEnDisco.js +188 -0
  12. package/dist/agent/conectores/conectoresEnDisco.js.map +1 -0
  13. package/dist/agent/conectores/proveedorDeConector.js +56 -0
  14. package/dist/agent/conectores/proveedorDeConector.js.map +1 -0
  15. package/dist/agent/conectores/servicioDeConectores.js +496 -0
  16. package/dist/agent/conectores/servicioDeConectores.js.map +1 -0
  17. package/dist/agent/config/catalogoModelos.js +2 -0
  18. package/dist/agent/config/catalogoModelos.js.map +1 -1
  19. package/dist/agent/config/modelos.js +27 -0
  20. package/dist/agent/config/modelos.js.map +1 -1
  21. package/dist/agent/exportarPdf.js +5 -1
  22. package/dist/agent/exportarPdf.js.map +1 -1
  23. package/dist/agent/grafo/arbolDeProyecto.js +66 -1
  24. package/dist/agent/grafo/arbolDeProyecto.js.map +1 -1
  25. package/dist/agent/grafo/memoriaDeProyecto.js +3 -2
  26. package/dist/agent/grafo/memoriaDeProyecto.js.map +1 -1
  27. package/dist/agent/grafo/navegacionXone.js +8 -3
  28. package/dist/agent/grafo/navegacionXone.js.map +1 -1
  29. package/dist/agent/grafo/proyecto.js +31 -15
  30. package/dist/agent/grafo/proyecto.js.map +1 -1
  31. package/dist/agent/grafo/unirSecciones.js +128 -0
  32. package/dist/agent/grafo/unirSecciones.js.map +1 -0
  33. package/dist/agent/grafo/xoneAgent.js +7 -0
  34. package/dist/agent/grafo/xoneAgent.js.map +1 -1
  35. package/dist/agent/motores/trueforge/capacidades.js +42 -1
  36. package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
  37. package/dist/agent/motores/trueforge/eventosTrueforge.js +52 -7
  38. package/dist/agent/motores/trueforge/eventosTrueforge.js.map +1 -1
  39. package/dist/agent/motores/trueforge/modeloLangchain.js +5 -2
  40. package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
  41. package/dist/agent/motores/trueforge/sesionTrueforge.js +19 -2
  42. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  43. package/dist/agent/motores/trueforge/toolsDeFichero.js +3 -2
  44. package/dist/agent/motores/trueforge/toolsDeFichero.js.map +1 -1
  45. package/dist/agent/motores/trueforge/trueforge.js +1 -1
  46. package/dist/agent/motores/trueforge/trueforge.js.map +1 -1
  47. package/dist/agent/navegacion/indiceEnDisco.js +10 -1
  48. package/dist/agent/navegacion/indiceEnDisco.js.map +1 -1
  49. package/dist/agent/planesEnDisco.js +64 -0
  50. package/dist/agent/planesEnDisco.js.map +1 -0
  51. package/dist/agent/sesiones/modeloDelCambio.js +70 -0
  52. package/dist/agent/sesiones/modeloDelCambio.js.map +1 -0
  53. package/dist/agent/sesiones/sesionGit.js +14 -0
  54. package/dist/agent/sesiones/sesionGit.js.map +1 -1
  55. package/dist/agent/subagentes/agentesEnDisco.js +95 -5
  56. package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
  57. package/dist/agent/subagentes/escrituraExterna.js +8 -2
  58. package/dist/agent/subagentes/escrituraExterna.js.map +1 -1
  59. package/dist/agent/subagentes/subagenteCodex.js +1 -1
  60. package/dist/agent/subagentes/subagenteCodex.js.map +1 -1
  61. package/dist/agent/subagentes/subagenteExterno.js +1 -1
  62. package/dist/agent/subagentes/subagenteExterno.js.map +1 -1
  63. package/dist/agent/subagentes/subagenteOpencode.js +1 -1
  64. package/dist/agent/subagentes/subagenteOpencode.js.map +1 -1
  65. package/dist/agent/turno/puente.js +17 -1
  66. package/dist/agent/turno/puente.js.map +1 -1
  67. package/dist/agent/turno/resumenDeContexto.js +17 -4
  68. package/dist/agent/turno/resumenDeContexto.js.map +1 -1
  69. package/dist/agent/turno/turnoReal.js +16 -2
  70. package/dist/agent/turno/turnoReal.js.map +1 -1
  71. package/dist/cli/tui/transcript.js +4 -0
  72. package/dist/cli/tui/transcript.js.map +1 -1
  73. package/dist/core/actos.js.map +1 -1
  74. package/dist/core/agentes.js +17 -0
  75. package/dist/core/agentes.js.map +1 -1
  76. package/dist/core/artefactos.js +22 -0
  77. package/dist/core/artefactos.js.map +1 -1
  78. package/dist/core/conectores.js +191 -0
  79. package/dist/core/conectores.js.map +1 -0
  80. package/dist/core/diffDeColecciones.js +84 -0
  81. package/dist/core/diffDeColecciones.js.map +1 -0
  82. package/dist/core/exportacion.js +6 -1
  83. package/dist/core/exportacion.js.map +1 -1
  84. package/dist/core/fotoDeColecciones.js +48 -0
  85. package/dist/core/fotoDeColecciones.js.map +1 -0
  86. package/dist/core/imagenesDeDocumento.js +88 -0
  87. package/dist/core/imagenesDeDocumento.js.map +1 -0
  88. package/dist/core/memoria.js +24 -0
  89. package/dist/core/memoria.js.map +1 -0
  90. package/dist/core/modelos.js +23 -1
  91. package/dist/core/modelos.js.map +1 -1
  92. package/dist/core/navegacion.js.map +1 -1
  93. package/dist/core/notify.js +23 -5
  94. package/dist/core/notify.js.map +1 -1
  95. package/dist/core/ports.js.map +1 -1
  96. package/dist/core/serieDeEscrituras.js +13 -0
  97. package/dist/core/serieDeEscrituras.js.map +1 -1
  98. package/dist/core/settings.js +62 -1
  99. package/dist/core/settings.js.map +1 -1
  100. package/dist/core/tareasDelPlan.js +103 -0
  101. package/dist/core/tareasDelPlan.js.map +1 -0
  102. package/dist/core/trazaDeErrores.js +42 -9
  103. package/dist/core/trazaDeErrores.js.map +1 -1
  104. package/dist/core/turno.js +34 -4
  105. package/dist/core/turno.js.map +1 -1
  106. package/dist/web/servidor/arranque.js +445 -2
  107. package/dist/web/servidor/arranque.js.map +1 -1
  108. package/dist/web/servidor/pielWeb.js +63 -4
  109. package/dist/web/servidor/pielWeb.js.map +1 -1
  110. package/dist/web/servidor/servidor.js +16 -1
  111. package/dist/web/servidor/servidor.js.map +1 -1
  112. package/dist/web/servidor/transporte.js.map +1 -1
  113. package/dist/web/servidor/vestibulo.js +45 -7
  114. package/dist/web/servidor/vestibulo.js.map +1 -1
  115. package/dist/web/servidor/visorOpenui.js +63 -0
  116. package/dist/web/servidor/visorOpenui.js.map +1 -0
  117. package/package.json +1 -1
  118. package/skills/openui-builder/SKILL.md +48 -0
  119. package/apps/web/dist/assets/index-CtfT1BjI.css +0 -1
  120. package/apps/web/dist/assets/index-DqcZ7_Rx.js +0 -478
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Los conectores MCP de la consola: servidores REMOTOS con los que se conecta esta máquina.
3
+ * Puro a propósito —catálogo, formas del cable y reglas—; el disco y la red viven en
4
+ * `agent/conectores/`.
5
+ *
6
+ * **Hay DOS familias y una sola forma de fila.** El CATÁLOGO son las filas que vienen por
7
+ * código (`CATALOGO_DE_CONECTORES`), y una DEFINICIÓN es una fila que escribió el usuario y
8
+ * vive en su disco. Las dos se resuelven al mismo `ConectorDeCatalogo`, así que de ahí para
9
+ * abajo —estado, prueba, autorización, botones— nada sabe de qué familia viene: es lo que
10
+ * hace que un servidor añadido a mano se comporte como Jira.
11
+ *
12
+ * **Todavía no llegan a ningún agente.** Esta pieza es la conexión y la configuración; qué
13
+ * agente recibe sus tools, y con qué política de aprobación, es la pieza siguiente.
14
+ */
15
+ import { motivoDeEndpointInaceptable, motivoDeSlugInaceptable, PREFIJO_PERSONALIZADO, slugDesdeNombre } from "./modelos.js";
16
+ /**
17
+ * El literal, comprobado por VALOR: es lo que llega por el cable, donde puede mentir.
18
+ *
19
+ * Se usa dos veces y por eso es una función y no tres `===` repetidos: al validar la
20
+ * definición que entra, y —su copia DECLARADA, porque la frontera del cliente no deja
21
+ * importar de aquí— en la guarda del store, que descarta la fila ENTERA en silencio si no
22
+ * reconoce el literal. Añadir un carril de autenticación y no tocar esa guarda deja la fila
23
+ * invisible con todo en verde.
24
+ */
25
+ export function esAutenticacionDeConector(valor) {
26
+ return valor === "ninguna" || valor === "oauth" || valor === "api-key";
27
+ }
28
+ /**
29
+ * Medido contra los tres servidores el 24-09-2026: deepwiki contesta `listTools` sin
30
+ * credenciales; Notion y Atlassian publican `registration_endpoint` y S256, y aceptan un
31
+ * cliente público con `redirect_uri` en loopback. El transporte NO se declara: se prueba
32
+ * `streamable-http` y, si no, `sse`, como hace TrueForge.
33
+ */
34
+ export const CATALOGO_DE_CONECTORES = [
35
+ {
36
+ id: "deepwiki",
37
+ nombre: "DeepWiki",
38
+ url: "https://mcp.deepwiki.com/mcp",
39
+ descripcion: "Lee la documentación y pregunta sobre cualquier repositorio público de GitHub.",
40
+ autenticacion: "ninguna",
41
+ },
42
+ {
43
+ id: "jira",
44
+ nombre: "Jira",
45
+ url: "https://mcp.atlassian.com/v1/mcp",
46
+ descripcion: "Busca, lee, crea y actualiza incidencias de Jira.",
47
+ autenticacion: "oauth",
48
+ },
49
+ {
50
+ id: "notion",
51
+ nombre: "Notion",
52
+ url: "https://mcp.notion.com/mcp",
53
+ descripcion: "Busca páginas, lee contenido, consulta bases de datos y crea páginas.",
54
+ autenticacion: "oauth",
55
+ },
56
+ ];
57
+ export function conectorDelCatalogo(id) {
58
+ return CATALOGO_DE_CONECTORES.find((c) => c.id === id);
59
+ }
60
+ /** Una fila resuelta, recortada a lo que viaja. Una sola función para las dos familias. */
61
+ export function filaDeCatalogo(c) {
62
+ return { id: c.id, nombre: c.nombre, descripcion: c.descripcion, autenticacion: c.autenticacion };
63
+ }
64
+ /**
65
+ * El prefijo de un conector propio es el MISMO literal que el de un proveedor personalizado
66
+ * (`modelos.ts#PREFIJO_PERSONALIZADO`), y a propósito: en el producto `custom:` significa una
67
+ * sola cosa —«esto lo añadiste tú»— y un segundo literal sería un segundo sitio donde
68
+ * decidirla. Las dos familias NO se cruzan: un id de conector no se le pasa jamás a una
69
+ * función de proveedor, ni al revés, así que compartir el prefijo no las mezcla.
70
+ */
71
+ export function esConectorPropio(id) {
72
+ return id.startsWith(PREFIJO_PERSONALIZADO)
73
+ && motivoDeSlugInaceptable(slugDeConectorPropio(id)) === undefined;
74
+ }
75
+ export function slugDeConectorPropio(id) {
76
+ return id.slice(PREFIJO_PERSONALIZADO.length);
77
+ }
78
+ export function idDeConectorPropio(slug) {
79
+ return `${PREFIJO_PERSONALIZADO}${slug}`;
80
+ }
81
+ /**
82
+ * El id de un conector escrito a mano, derivado de su NOMBRE. Se deriva y no se guarda —un
83
+ * campo derivado es un campo que puede contradecir a su fuente—, y sale de aquí y no de quien
84
+ * llama para que la regla del slug viva en UN sitio: quien valida una definición y quien la
85
+ * guarda tienen que derivar el MISMO id, o el rechazo por id ocupado hablaría de otro.
86
+ */
87
+ export function idDeConectorDesdeNombre(nombre) {
88
+ return idDeConectorPropio(slugDesdeNombre(nombre));
89
+ }
90
+ /**
91
+ * Una definición como la fila que representa, para que `resolver` devuelva SIEMPRE lo mismo
92
+ * y ninguna capa de más abajo tenga que saber de qué familia viene un conector.
93
+ */
94
+ export function conectorDeDefinicion(id, def) {
95
+ return { id, nombre: def.nombre, url: def.url, descripcion: def.descripcion, autenticacion: def.autenticacion };
96
+ }
97
+ /**
98
+ * La definición tal como llega por el cable, o `undefined` si no tiene la forma.
99
+ *
100
+ * La FORMA y la SEMÁNTICA van separadas a propósito: aquí solo se comprueba que los cuatro
101
+ * campos sean cadenas del tipo que dicen ser —el JSON de un cliente puede mentir sobre lo
102
+ * que el tipo promete—, y lo que tiene que valer cada uno lo decide
103
+ * `motivoDeDefinicionInaceptable`, que es la regla y tiene sus tests.
104
+ */
105
+ export function definicionDelCable(valor) {
106
+ if (typeof valor !== "object" || valor === null)
107
+ return undefined;
108
+ const d = valor;
109
+ if (typeof d["nombre"] !== "string")
110
+ return undefined;
111
+ if (typeof d["descripcion"] !== "string")
112
+ return undefined;
113
+ if (typeof d["url"] !== "string")
114
+ return undefined;
115
+ if (!esAutenticacionDeConector(d["autenticacion"]))
116
+ return undefined;
117
+ return { nombre: d["nombre"], descripcion: d["descripcion"], url: d["url"], autenticacion: d["autenticacion"] };
118
+ }
119
+ /**
120
+ * ¿Vale eso como conector nuevo? Devuelve el MOTIVO del rechazo, o `undefined` si pasa.
121
+ *
122
+ * `idsOcupados` son los ids ya AÑADIDOS más los que tienen definición, y NO el catálogo. La
123
+ * diferencia importa y es deliberada: lo que choca es crear DOS VECES el mismo nombre —el
124
+ * segundo pisaría la definición del primero, y su URL y su clave se quedarían apuntando a otro
125
+ * servidor—, y una definición huérfana (una que se añadió a mano al fichero, o la que dejó un
126
+ * `quitar` que falló) también ocupa su sitio por eso mismo. Un conector propio llamado «Jira»
127
+ * NO choca con la fila del catálogo, que vive en `jira` y no en `custom:jira`: montar tu propio
128
+ * servidor de Jira es una razón real para darlo de alta a mano, y ahí los dos conviven cada uno
129
+ * con su fila. El id se deriva con la MISMA regla que un proveedor personalizado
130
+ * (`modelos.ts`): un segundo slug sería un segundo sitio donde divergir, y el slug acaba siendo
131
+ * clave de un fichero.
132
+ */
133
+ export function motivoDeDefinicionInaceptable(def, idsOcupados) {
134
+ if (def.nombre.trim() === "")
135
+ return "ponle un nombre";
136
+ if (def.descripcion.trim() === "")
137
+ return "escribe una descripción: es lo que se lee en la lista";
138
+ const motivoDeUrl = motivoDeEndpointInaceptable(def.url);
139
+ if (motivoDeUrl !== undefined)
140
+ return motivoDeUrl;
141
+ const slug = slugDesdeNombre(def.nombre);
142
+ const motivoDelSlug = motivoDeSlugInaceptable(slug);
143
+ if (motivoDelSlug !== undefined)
144
+ return `de ese nombre no sale un identificador válido: ${motivoDelSlug}`;
145
+ if (idsOcupados.includes(idDeConectorDesdeNombre(def.nombre))) {
146
+ return `ya tienes un conector que se llama así: «${slug}»`;
147
+ }
148
+ return undefined;
149
+ }
150
+ /**
151
+ * El segundo parámetro se llama `hayCredencial` y no `hayTokens` porque la pregunta que
152
+ * contesta es «¿hay con qué autenticarse?»: un OAuth guarda tokens y un `api-key` guarda su
153
+ * clave, y desde aquí son la misma pregunta. Quien pregunta resuelve la suya —el servicio
154
+ * mira los dos campos de su fichero de secretos— y le pasa un booleano.
155
+ */
156
+ export function estadoDeConector(conector, hayCredencial) {
157
+ if (conector.autenticacion === "ninguna")
158
+ return "sin-autorizacion";
159
+ return hayCredencial ? "autorizado" : "falta-autorizar";
160
+ }
161
+ /** 10 min, el mismo plazo que TrueForge da a una autorización pendiente. */
162
+ export const TTL_DE_AUTORIZACION_MS = 10 * 60 * 1000;
163
+ /** Conectar + listar tools: más que esto es «no responde». */
164
+ export const TOPE_DE_CONEXION_MS = 30 * 1000;
165
+ /** La ruta del callback. PÚBLICA: la redirección llega sin cookie (`SameSite=Strict`). */
166
+ export const RUTA_CALLBACK_MCP = "/mcp/oauth/callback";
167
+ /**
168
+ * La autenticación de la ruta pública ES el `state`: aleatorio, de un solo uso y con
169
+ * plazo. Se CONSUME en cuanto se reconoce, vaya bien o mal, para que no se pueda repetir.
170
+ *
171
+ * El `motivo` es siempre una frase NUESTRA: la query la escribe quien redirige, y repetirla
172
+ * en una página nuestra sería servir contenido ajeno desde el origen de la consola.
173
+ */
174
+ export function interpretarCallback(query, pendientes, ahora) {
175
+ const state = query.get("state");
176
+ if (state === null)
177
+ return { ok: false, motivo: "la respuesta no trae el identificador de la autorización" };
178
+ const pendiente = pendientes.get(state);
179
+ if (pendiente === undefined)
180
+ return { ok: false, motivo: "esa autorización no la pidió esta consola, o ya se usó" };
181
+ pendientes.delete(state);
182
+ if (ahora > pendiente.expira)
183
+ return { ok: false, motivo: "la autorización caducó: vuelve a pulsar Conectar" };
184
+ if (query.get("error") !== null)
185
+ return { ok: false, motivo: "el servicio no concedió el acceso" };
186
+ const code = query.get("code");
187
+ if (code === null || code.length === 0)
188
+ return { ok: false, motivo: "la respuesta no trae código de autorización" };
189
+ return { ok: true, id: pendiente.id, code };
190
+ }
191
+ //# sourceMappingURL=conectores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conectores.js","sourceRoot":"","sources":["../../src/core/conectores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ const clave = (s) => s.toLowerCase();
2
+ function cambiosDeNombres(antes, ahora) {
3
+ const a = new Set(antes.map(clave));
4
+ const d = new Set(ahora.map(clave));
5
+ return [
6
+ ...ahora.filter((n) => !a.has(clave(n))).map((nombre) => ({ cambio: "nuevo", nombre })),
7
+ ...antes.filter((n) => !d.has(clave(n))).map((nombre) => ({ cambio: "borrado", nombre })),
8
+ ];
9
+ }
10
+ function cambiosDeCampos(antes, ahora) {
11
+ const deAntes = new Map(antes.map((f) => [clave(f.nombre), f]));
12
+ const deAhora = new Map(ahora.map((f) => [clave(f.nombre), f]));
13
+ const salida = [];
14
+ for (const f of ahora) {
15
+ const previo = deAntes.get(clave(f.nombre));
16
+ if (previo === undefined) {
17
+ salida.push({ cambio: "nuevo", nombre: f.nombre, ...(f.tipo === undefined ? {} : { ahora: f.tipo }) });
18
+ }
19
+ else if ((previo.tipo ?? "") !== (f.tipo ?? "")) {
20
+ salida.push({
21
+ cambio: "tipo",
22
+ nombre: f.nombre,
23
+ ...(previo.tipo === undefined ? {} : { antes: previo.tipo }),
24
+ ...(f.tipo === undefined ? {} : { ahora: f.tipo }),
25
+ });
26
+ }
27
+ }
28
+ for (const f of antes) {
29
+ if (!deAhora.has(clave(f.nombre))) {
30
+ salida.push({ cambio: "borrado", nombre: f.nombre, ...(f.tipo === undefined ? {} : { antes: f.tipo }) });
31
+ }
32
+ }
33
+ return salida;
34
+ }
35
+ function cambiosDeReferencias(antes, ahora) {
36
+ const id = (r) => `${clave(r.desde)}|${r.por}|${clave(r.hacia)}`;
37
+ const a = new Set(antes.map(id));
38
+ const d = new Set(ahora.map(id));
39
+ return [
40
+ ...ahora.filter((r) => !a.has(id(r))).map((r) => ({ cambio: "nuevo", desde: r.desde, por: r.por, hacia: r.hacia })),
41
+ ...antes.filter((r) => !d.has(id(r))).map((r) => ({ cambio: "borrado", desde: r.desde, por: r.por, hacia: r.hacia })),
42
+ ];
43
+ }
44
+ /**
45
+ * Las colecciones que cambiaron entre `antes` y `ahora`, que son las declaradas en UN fichero en
46
+ * cada extremo. Una colección sin ningún cambio que el modelo vea no sale: el fichero cambió en
47
+ * algo que el modelo no entiende, y eso lo dice quien pinta («sin cambios en el modelo»), no una
48
+ * fila vacía.
49
+ */
50
+ export function diffDeColecciones(antes, ahora) {
51
+ const deAntes = new Map(antes.map((c) => [clave(c.nombre), c]));
52
+ const deAhora = new Map(ahora.map((c) => [clave(c.nombre), c]));
53
+ const vacia = {
54
+ campos: [],
55
+ referencias: [],
56
+ eventos: [],
57
+ nodos: [],
58
+ conexiones: [],
59
+ };
60
+ const salida = [];
61
+ const comparar = (nombre, a, d, estado) => {
62
+ const cambios = {
63
+ nombre,
64
+ estado,
65
+ campos: cambiosDeCampos(a.campos, d.campos),
66
+ referencias: cambiosDeReferencias(a.referencias, d.referencias),
67
+ eventos: cambiosDeNombres(a.eventos, d.eventos),
68
+ nodos: cambiosDeNombres(a.nodos, d.nodos),
69
+ conexiones: cambiosDeNombres(a.conexiones, d.conexiones),
70
+ };
71
+ const hay = cambios.campos.length + cambios.referencias.length + cambios.eventos.length + cambios.nodos.length + cambios.conexiones.length > 0;
72
+ if (estado !== "modificada" || hay)
73
+ salida.push(cambios);
74
+ };
75
+ for (const c of ahora) {
76
+ const previa = deAntes.get(clave(c.nombre));
77
+ comparar(c.nombre, previa ?? vacia, c, previa === undefined ? "nueva" : "modificada");
78
+ }
79
+ for (const c of antes)
80
+ if (!deAhora.has(clave(c.nombre)))
81
+ comparar(c.nombre, c, vacia, "borrada");
82
+ return salida;
83
+ }
84
+ //# sourceMappingURL=diffDeColecciones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diffDeColecciones.js","sourceRoot":"","sources":["../../src/core/diffDeColecciones.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,11 @@ export function rutaDePdf(ruta) {
59
59
  * tablas y bloques de código —sin eso una tabla se parte por la mitad entre dos hojas— y
60
60
  * `break-after: avoid` en los encabezados, para que un título no se quede solo al pie.
61
61
  *
62
+ * **Y una imagen se limita también en ALTO**, no solo en ancho. Medido con una captura de móvil
63
+ * (1080×2400): con solo `max-width: 100%` medía unos 40 cm a todo el ancho de un A4, más que la
64
+ * página, y el PDF salía con el título solo en la primera hoja y la captura partida en las dos
65
+ * siguientes. Con `max-height` se reduce entera, sin deformarse, y cabe en una página.
66
+ *
62
67
  * El título va ESCAPADO: sale de un nombre de fichero del proyecto, y un `<` ahí dentro
63
68
  * rompería la cabecera del documento.
64
69
  */
@@ -85,7 +90,7 @@ pre { background: #f7f8fa; border: 1px solid #e2e6ec; border-radius: 5px; paddin
85
90
  overflow-x: auto; break-inside: avoid; }
86
91
  pre code { background: none; padding: 0; }
87
92
  blockquote { border-left: 3px solid #0b5fff; margin: 1em 0; padding: .2em 1em; background: #f5f8ff; }
88
- img { max-width: 100%; }
93
+ img { max-width: 100%; max-height: 190mm; width: auto; height: auto; display: block; margin: .6em auto; break-inside: avoid; }
89
94
  hr { border: 0; border-top: 1px solid #d7dbe0; margin: 1.6em 0; }
90
95
  a { color: #0b5fff; text-decoration: none; }
91
96
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"exportacion.js","sourceRoot":"","sources":["../../src/core/exportacion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEzE,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,oBAAoB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC;IAC5F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,MAAc;IAChE,OAAO;;;;EAIP,oBAAoB;SACb,WAAW,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;QAsBpB,MAAM;;CAEb,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,0EAA0E;IAC1E,uFAAuF,CAAC;AAE1F;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAsB,EAAE;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACvI,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,oBAAoB,GAAG,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"exportacion.js","sourceRoot":"","sources":["../../src/core/exportacion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEzE,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,oBAAoB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC;IAC5F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,MAAc;IAChE,OAAO;;;;EAIP,oBAAoB;SACb,WAAW,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;QAsBpB,MAAM;;CAEb,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,0EAA0E;IAC1E,uFAAuF,CAAC;AAE1F;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAsB,EAAE;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACvI,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,oBAAoB,GAAG,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * La FOTO del modelo XOne de un proyecto para la pestaña Colecciones: lo mismo que contesta
3
+ * `xone_navegacion`, entero y de una vez, para que una persona lo mire.
4
+ *
5
+ * **Sale del MISMO índice que la tool** (`core/navegacion.ts#construirIndice`) y no de una
6
+ * segunda lectura del modelo: «qué apunta a qué» se decide en un sitio, y el día que la tool y
7
+ * la pestaña contestaran distinto sobre el mismo proyecto no habría forma de saber cuál miente.
8
+ *
9
+ * Todo lo que lleva son rutas VIRTUALES y nombres del proyecto —lo que ya ve el agente—, nunca
10
+ * una ruta de la máquina: viaja por el cable. Y, como el índice, **no dice qué colecciones son
11
+ * huérfanas**: se midió y el 50 % eran falsos positivos (ver `core/navegacion.ts`).
12
+ */
13
+ import { construirIndice } from "./navegacion.js";
14
+ /**
15
+ * Cuántas colecciones caben en una foto. Un proyecto real anda por las decenas; el tope existe
16
+ * para que uno raro no mande un mensaje sin fondo, y lo que queda fuera se CUENTA (`total`).
17
+ */
18
+ export const TOPE_DE_COLECCIONES_EN_LA_FOTO = 400;
19
+ export function fotoDeColecciones(modelo, tope = TOPE_DE_COLECCIONES_EN_LA_FOTO) {
20
+ const indice = construirIndice(modelo);
21
+ const colecciones = modelo.colecciones.slice(0, tope).map((c) => {
22
+ // Los scripts que viven DENTRO de su `.xne` —sus eventos, sus `onclick`, sus `method`—,
23
+ // reconocidos por el FICHERO y no por el `desde`: ése puede ser `Coll.PROP`, `Coll:evento`
24
+ // o la ruta de un `.js` suelto, y partirlo por el punto confundiría las tres formas. Los de
25
+ // un `.js` suelto no son de ninguna colección; los que llegan HACIA ella los recoge
26
+ // `referencias` entera.
27
+ const deSusScripts = modelo.referenciasDeScript.filter((r) => r.fichero === c.fichero);
28
+ return {
29
+ nombre: c.nombre,
30
+ fichero: c.fichero,
31
+ campos: c.campos.map((f) => ({ nombre: f.nombre, ...(f.tipo === undefined ? {} : { tipo: f.tipo }) })),
32
+ eventos: [...c.eventos],
33
+ nodos: [...c.nodos],
34
+ conexiones: [...c.conexiones],
35
+ apuntaA: [...c.referencias.map((r) => ({ ...r, fichero: c.fichero })), ...deSusScripts],
36
+ leApuntan: [...indice.referencias(c.nombre)],
37
+ };
38
+ });
39
+ const app = indice.app();
40
+ return {
41
+ colecciones,
42
+ total: modelo.colecciones.length,
43
+ entrada: [...app.entrada],
44
+ login: [...app.login],
45
+ rotas: [...indice.problemas().rotas],
46
+ };
47
+ }
48
+ //# sourceMappingURL=fotoDeColecciones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fotoDeColecciones.js","sourceRoot":"","sources":["../../src/core/fotoDeColecciones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,eAAe,EAA4C,MAAM,iBAAiB,CAAC;AA2B5F;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAElD,MAAM,UAAU,iBAAiB,CAAC,MAA0B,EAAE,IAAI,GAAG,8BAA8B;IACjG,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAqB,EAAE;QACjF,wFAAwF;QACxF,2FAA2F;QAC3F,4FAA4F;QAC5F,oFAAoF;QACpF,wBAAwB;QACxB,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACvF,OAAO;YACL,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACtG,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACnB,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;YAC7B,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC;YACvF,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO;QACL,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;QAChC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QACzB,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACrB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Las IMÁGENES que enlaza un documento (`.md` o `.html`), resueltas dentro del proyecto.
3
+ *
4
+ * Existe porque un enlace relativo —`![Login](img/login.png)`— solo funciona leído desde la carpeta
5
+ * del documento, y los dos sitios donde se lee no están ahí: `/pdf` imprime un HTML escrito en un
6
+ * temporal (`agent/exportarPdf.ts`), y la pestaña Ficheros lo pinta en la página de la consola. En
7
+ * los dos la imagen salía rota. En el PDF se INCRUSTA —`data:`, que no depende de dónde se lea—; en
8
+ * la web se reescribe el enlace a una ruta que la sirve, porque su visor solo pinta imágenes
9
+ * `http(s)` absolutas.
10
+ *
11
+ * Puro: aquí solo se ENCUENTRAN los enlaces, se resuelven a una ruta del proyecto y se sustituyen.
12
+ * Leer la imagen —con las barreras de la pestaña Ficheros— es de `agent/`.
13
+ */
14
+ /**
15
+ * La ruta HTTP de la consola web que sirve una imagen del proyecto (`?ruta=<relativa>`). La
16
+ * reescribe `agent/grafo/arbolDeProyecto.ts#vistaDeMarkdown` y la atiende `web/servidor/arranque.ts`;
17
+ * el cliente la lleva copiada (`apps/web/src/imagenesDelDocumento.ts`), como un tipo del cable.
18
+ */
19
+ export const RUTA_IMAGEN_DEL_PROYECTO = "/imagen-del-proyecto";
20
+ /** Un esquema de URL (`http:`, `data:`, `file:`…): eso no es una ruta del proyecto. */
21
+ const CON_ESQUEMA = /^[a-z][a-z0-9+.-]*:/i;
22
+ /** `![alt](ruta "título")` y `![alt](<ruta con espacios>)`. */
23
+ const EN_MARKDOWN = /!\[[^\]]*\]\(\s*(?:<([^>]+)>|([^)\s]+))(?:\s+"[^"]*")?\s*\)/g;
24
+ /** `<img … src="ruta" …>`, con comillas dobles o simples. */
25
+ const EN_HTML = /<img\b[^>]*?\bsrc\s*=\s*(["'])(.*?)\1/gi;
26
+ /** Los enlaces a imagen de un documento, tal cual están escritos y sin repetir. */
27
+ export function enlacesDeImagen(texto) {
28
+ const vistos = new Set();
29
+ for (const m of texto.matchAll(EN_MARKDOWN))
30
+ vistos.add((m[1] ?? m[2] ?? "").trim());
31
+ for (const m of texto.matchAll(EN_HTML))
32
+ vistos.add((m[2] ?? "").trim());
33
+ vistos.delete("");
34
+ return [...vistos];
35
+ }
36
+ /**
37
+ * La ruta RELATIVA al proyecto de la imagen que enlaza `enlace` desde el documento `documento`
38
+ * (también relativa al proyecto), o `undefined` si no es una imagen del proyecto: una URL, un enlace
39
+ * que se sale de la raíz con `..`. Una ruta que empieza por `/` es la VIRTUAL, desde la raíz.
40
+ */
41
+ export function imagenEnProyecto(documento, enlace) {
42
+ if (CON_ESQUEMA.test(enlace) || enlace.startsWith("//"))
43
+ return undefined;
44
+ let limpio = enlace.split(/[?#]/)[0] ?? "";
45
+ try {
46
+ limpio = decodeURIComponent(limpio);
47
+ }
48
+ catch {
49
+ // Un `%` suelto no es una codificación: se deja como está.
50
+ }
51
+ if (limpio === "")
52
+ return undefined;
53
+ const base = limpio.startsWith("/") ? [] : documento.split("/").slice(0, -1);
54
+ const partes = [...base];
55
+ for (const trozo of limpio.split("/")) {
56
+ if (trozo === "" || trozo === ".")
57
+ continue;
58
+ if (trozo === "..") {
59
+ // Salirse de la raíz no es una imagen del proyecto: no se adivina a dónde apuntaba.
60
+ if (partes.length === 0)
61
+ return undefined;
62
+ partes.pop();
63
+ continue;
64
+ }
65
+ partes.push(trozo);
66
+ }
67
+ return partes.length === 0 ? undefined : partes.join("/");
68
+ }
69
+ /**
70
+ * El documento con cada enlace de `incrustadas` (enlace tal cual → `data:…`) sustituido, en las dos
71
+ * sintaxis. Lo que no está en el mapa se deja EXACTAMENTE igual: una imagen que no se pudo leer
72
+ * sigue rota, pero no se inventa ni se borra.
73
+ */
74
+ export function conImagenesIncrustadas(texto, incrustadas) {
75
+ if (incrustadas.size === 0)
76
+ return texto;
77
+ return texto
78
+ .replace(EN_MARKDOWN, (todo, entre, suelto) => {
79
+ const enlace = (entre ?? suelto ?? "").trim();
80
+ const dato = incrustadas.get(enlace);
81
+ return dato === undefined ? todo : todo.replace(entre !== undefined ? `<${entre}>` : (suelto ?? ""), dato);
82
+ })
83
+ .replace(EN_HTML, (todo, comilla, enlace) => {
84
+ const dato = incrustadas.get(enlace.trim());
85
+ return dato === undefined ? todo : todo.replace(`${comilla}${enlace}${comilla}`, `${comilla}${dato}${comilla}`);
86
+ });
87
+ }
88
+ //# sourceMappingURL=imagenesDeDocumento.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imagenesDeDocumento.js","sourceRoot":"","sources":["../../src/core/imagenesDeDocumento.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * La ruta VIRTUAL por la que el agente ve la memoria del proyecto, y cómo se reconoce una
3
+ * lectura suya en el flujo de tools.
4
+ *
5
+ * Vive en `core/` porque la usan dos lados: `agent/` la monta en el backend
6
+ * (`agent/grafo/memoriaDeProyecto.ts`, que la reexporta) y `core/turno.ts` la reconoce para
7
+ * decir en la pantalla QUIÉN pidió leerla. Dos copias del literal serían dos sitios donde la
8
+ * ruta puede cambiar y el reconocimiento quedarse mudo.
9
+ */
10
+ export const RUTA_MEMORIA_VIRTUAL = "/MEMORIA_PROYECTO.md";
11
+ /**
12
+ * ¿Esta llamada pide leer la memoria? Por la tool y por la ruta EXACTA, con barra o sin ella:
13
+ * medido en una sesión real, el modelo pidió `read_file MEMORIA_PROYECTO.md` sin la barra, y
14
+ * el backend de TrueForge la normaliza (`toolsDeFichero.ts#normalizarRuta`), así que esa
15
+ * lectura ocurre igual. No se reconoce por «contiene el nombre»: un `grep` que lo mencione no
16
+ * es una lectura.
17
+ */
18
+ export function pideLeerLaMemoria(nombre, detalle) {
19
+ if (nombre !== "read_file" || detalle === undefined)
20
+ return false;
21
+ const ruta = detalle.trim().replace(/^\.\//, "");
22
+ return (ruta.startsWith("/") ? ruta : `/${ruta}`) === RUTA_MEMORIA_VIRTUAL;
23
+ }
24
+ //# sourceMappingURL=memoria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoria.js","sourceRoot":"","sources":["../../src/core/memoria.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAA2B;IAC3E,IAAI,MAAM,KAAK,WAAW,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,oBAAoB,CAAC;AAC7E,CAAC"}
@@ -89,7 +89,7 @@ export function motivoDeEndpointInaceptable(valor) {
89
89
  }
90
90
  export const PROVEEDORES = [
91
91
  "gemini", "openai", "anthropic", "ollama", "ollama-cloud",
92
- "nvidia", "groq", "xai", "deepseek",
92
+ "nvidia", "groq", "xai", "deepseek", "opencode-go", "opencode-zen",
93
93
  ];
94
94
  export const COMPATIBLES_OPENAI = {
95
95
  nvidia: { baseUrl: "https://integrate.api.nvidia.com/v1", variable: "NVIDIA_API_KEY" },
@@ -107,6 +107,26 @@ export const COMPATIBLES_OPENAI = {
107
107
  * documentación, que no dice la ruta completa.
108
108
  */
109
109
  deepseek: { baseUrl: "https://api.deepseek.com/v1", variable: "DEEPSEEK_API_KEY" },
110
+ /**
111
+ * OpenCode Go, la suscripción mensual ($10/mes): un catálogo reducido de modelos, con
112
+ * límites por hora/semana/mes propios de la cuenta. MEDIDO y no leído: `GET
113
+ * https://opencode.ai/zen/go/v1/models` contesta 200 con un catálogo real
114
+ * (`{object:"list", data:[{id, object, created, owned_by}, ...]}`) — sin `context_window`
115
+ * ni ningún campo que diga por qué endpoint (`/chat/completions`, `/messages`,
116
+ * `/responses`) va cada modelo, así que `contexto` queda sin medir para todos (igual que
117
+ * NVIDIA/xAI cuando el servidor no lo manda) y el catálogo se ofrece sin filtrar por
118
+ * familia: una elección incompatible falla al invocarla con el error que dé el servidor,
119
+ * en vez de una tabla de familias hecha a mano que se desactualizaría con el catálogo.
120
+ */
121
+ "opencode-go": { baseUrl: "https://opencode.ai/zen/go/v1", variable: "OPENCODE_GO_API_KEY" },
122
+ /**
123
+ * OpenCode Zen, pago por uso: mismo servicio, catálogo más amplio y sin los límites por
124
+ * franja de Go. Misma URL base compatible con OpenAI, MEDIDA igual que la de Go (`GET
125
+ * https://opencode.ai/zen/v1/models` responde 200 con el mismo shape). Va con su PROPIA
126
+ * variable de entorno (`OPENCODE_ZEN_API_KEY`) aunque la cuenta de OpenCode sea una sola:
127
+ * guardar o borrar la credencial de uno no puede afectar al otro en silencio.
128
+ */
129
+ "opencode-zen": { baseUrl: "https://opencode.ai/zen/v1", variable: "OPENCODE_ZEN_API_KEY" },
110
130
  };
111
131
  /**
112
132
  * La variable de entorno donde vive la clave de cada proveedor, y el ÚNICO sitio donde
@@ -151,6 +171,8 @@ const NOMBRES = {
151
171
  groq: "Groq",
152
172
  xai: "xAI",
153
173
  deepseek: "DeepSeek",
174
+ "opencode-go": "OpenCode Go",
175
+ "opencode-zen": "OpenCode Zen",
154
176
  };
155
177
  /**
156
178
  * Cómo se escribe un proveedor. Para uno personalizado, el nombre que puso quien lo dio
@@ -1 +1 @@
1
- {"version":3,"file":"modelos.js","sourceRoot":"","sources":["../../src/core/modelos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modelos.js","sourceRoot":"","sources":["../../src/core/modelos.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navegacion.js","sourceRoot":"","sources":["../../src/core/navegacion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navegacion.js","sourceRoot":"","sources":["../../src/core/navegacion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA2IH,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IAClD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAErF,MAAM,sBAAsB,GAAG,CAAC,CAAwB,EAAe,EAAE,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,CAAC,CAAwB,EAAE,KAAwC,EAAe,EAAE,CAAC,CAAC;QAC/G,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,MAAM;QACnB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;KAC1D,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAEhE,UAAU,CAAC,MAAM;YACf,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3E,qFAAqF;YACrF,qFAAqF;YACrF,oEAAoE;YACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACpF,CAAC;QACJ,CAAC;QAED,WAAW,CAAC,MAAM;YAChB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,CAAC,KAAa,EAAW,EAAE;gBACxC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACvD,oFAAoF;gBACpF,yEAAyE;gBACzE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACrD,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC;YAEF,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACnC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW;oBAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChG,CAAC;YACD,mFAAmF;YACnF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,mBAAmB;gBAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,CAAC,SAAS;YACd,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,WAAW;iBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBACxC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG;QAErB,OAAO,CAAC,SAAS;YACf,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpE,wFAAwF;YACxF,6EAA6E;YAC7E,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACtC,OAAO;gBACL,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrD,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aAClE,CAAC;QACJ,CAAC;QAED,SAAS;YACP,MAAM,MAAM,GAAG,CAAC,MAAc,EAAW,EAAE,CACzC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAE1D,MAAM,KAAK,GAAiB,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAiB;gBAC1B,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9F,uFAAuF;gBACvF,mEAAmE;gBACnE,GAAG,MAAM,CAAC,mBAAmB;aAC9B,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnF,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}