xonecode 0.11.0 → 0.13.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.
- package/apps/web/dist/assets/index-D8kdTP0Z.css +1 -0
- package/apps/web/dist/assets/index-a1EvXQj9.js +485 -0
- package/apps/web/dist/assets/{php-DPbDT8rX.js → php-qXN69lAY.js} +1 -1
- package/apps/web/dist/assets/{ruby-Bfvws9R8.js → ruby-Cxx7RgZA.js} +1 -1
- package/apps/web/dist/iconos/conectores/deepwiki.png +0 -0
- package/apps/web/dist/iconos/conectores/jira.png +0 -0
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/conectores/conectoresEnDisco.js +188 -0
- package/dist/agent/conectores/conectoresEnDisco.js.map +1 -0
- package/dist/agent/conectores/proveedorDeConector.js +56 -0
- package/dist/agent/conectores/proveedorDeConector.js.map +1 -0
- package/dist/agent/conectores/servicioDeConectores.js +496 -0
- package/dist/agent/conectores/servicioDeConectores.js.map +1 -0
- package/dist/agent/config/catalogoModelos.js +2 -0
- package/dist/agent/config/catalogoModelos.js.map +1 -1
- package/dist/agent/config/modelos.js +27 -0
- package/dist/agent/config/modelos.js.map +1 -1
- package/dist/agent/config/settingsEnDisco.js +16 -0
- package/dist/agent/config/settingsEnDisco.js.map +1 -1
- package/dist/agent/dispositivos/procesosEnMaquina.js +24 -2
- package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -1
- package/dist/agent/grafo/ejecucionCancelable.js +117 -0
- package/dist/agent/grafo/ejecucionCancelable.js.map +1 -0
- package/dist/agent/grafo/incorporarAdjunto.js +262 -0
- package/dist/agent/grafo/incorporarAdjunto.js.map +1 -0
- package/dist/agent/grafo/perfiles.js +12 -5
- package/dist/agent/grafo/perfiles.js.map +1 -1
- package/dist/agent/grafo/proyecto.js +53 -18
- package/dist/agent/grafo/proyecto.js.map +1 -1
- package/dist/agent/grafo/xoneAgent.js +25 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/motores/trueforge/capacidades.js +69 -4
- package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
- package/dist/agent/motores/trueforge/detencion.js +138 -0
- package/dist/agent/motores/trueforge/detencion.js.map +1 -0
- package/dist/agent/motores/trueforge/modeloLangchain.js +36 -4
- package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
- package/dist/agent/motores/trueforge/notas.js +49 -0
- package/dist/agent/motores/trueforge/notas.js.map +1 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.js +100 -3
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/sesiones/adjuntosDeSesion.js +235 -0
- package/dist/agent/sesiones/adjuntosDeSesion.js.map +1 -0
- package/dist/agent/subagentes/agentesEnDisco.js +4 -0
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/agent/trazaDeErroresEnDisco.js +12 -4
- package/dist/agent/trazaDeErroresEnDisco.js.map +1 -1
- package/dist/agent/turno/depuracion.js +27 -0
- package/dist/agent/turno/depuracion.js.map +1 -0
- package/dist/agent/turno/diagnosticoDeTools.js +7 -1
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
- package/dist/agent/turno/informeDeTraza.js +2 -1
- package/dist/agent/turno/informeDeTraza.js.map +1 -1
- package/dist/agent/turno/interrupts.js +13 -0
- package/dist/agent/turno/interrupts.js.map +1 -1
- package/dist/agent/turno/resumenDeTool.js +4 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -1
- package/dist/agent/turno/turnoReal.js +9 -2
- package/dist/agent/turno/turnoReal.js.map +1 -1
- package/dist/cli/main.js +52 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/core/actos.js.map +1 -1
- package/dist/core/adjuntos.js +72 -14
- package/dist/core/adjuntos.js.map +1 -1
- package/dist/core/conectores.js +191 -0
- package/dist/core/conectores.js.map +1 -0
- package/dist/core/entrega.js.map +1 -1
- package/dist/core/modelos.js +23 -1
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/settings.js +57 -0
- package/dist/core/settings.js.map +1 -1
- package/dist/web/servidor/arranque.js +336 -6
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/consolaWeb.js +29 -3
- package/dist/web/servidor/consolaWeb.js.map +1 -1
- package/dist/web/servidor/servidor.js +16 -1
- package/dist/web/servidor/servidor.js.map +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +122 -11
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/dist/web/servidor/visorOpenui.js +25 -3
- package/dist/web/servidor/visorOpenui.js.map +1 -1
- package/package.json +1 -1
- package/apps/web/dist/assets/index-BAyybSz-.css +0 -1
- package/apps/web/dist/assets/index-BNCMVjWv.js +0 -485
|
Binary file
|
|
Binary file
|
package/apps/web/dist/index.html
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<!-- El icono oficial, servido por Vite desde `iconos/`. Es el mismo fichero que la
|
|
8
8
|
marca de la barra superior: dos copias del logo acaban siendo dos logos. -->
|
|
9
9
|
<link rel="icon" type="image/png" href="./iconos/xonecode.png" />
|
|
10
|
-
<script type="module" crossorigin src="./assets/index-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
10
|
+
<script type="module" crossorigin src="./assets/index-a1EvXQj9.js"></script>
|
|
11
|
+
<link rel="stylesheet" crossorigin href="./assets/index-D8kdTP0Z.css">
|
|
12
12
|
</head>
|
|
13
13
|
<!-- Sin el atributo aquí: el oscuro es SOLO del splash (el registro de entorno y
|
|
14
14
|
modelo), no de la consola entera — `App.tsx` lo pone y lo quita él mismo, en el
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Los dos ficheros de los conectores, en la casa del usuario y SOLO ahí.
|
|
3
|
+
*
|
|
4
|
+
* Dos y no uno porque contestan cosas distintas con permisos distintos: `conectores.json`
|
|
5
|
+
* es configuración (qué está añadido y qué definió el usuario) y `conectores-oauth.json` son
|
|
6
|
+
* secretos (cliente registrado, tokens, verificador PKCE y la clave de un `api-key`), 0600.
|
|
7
|
+
* Solo global: una definición en el proyecto podría llevar un token a donde el proyecto
|
|
8
|
+
* dijera, la misma razón que los proveedores personalizados.
|
|
9
|
+
*
|
|
10
|
+
* **El fichero de secretos conserva su nombre aunque ya no sean solo de OAuth.** Renombrarlo
|
|
11
|
+
* es una migración con usuarios dentro —y sin premio: no hay segundo sitio donde mirar—, así
|
|
12
|
+
* que lo que cambia es el TIPO (`SecretosDeConector`) y lo que dice esta cabecera. El nombre
|
|
13
|
+
* del fichero ya contesta la pregunta que hay que contestarle a quien lo abra: son los
|
|
14
|
+
* secretos de los conectores.
|
|
15
|
+
*
|
|
16
|
+
* El contrato es el de `authEnDisco.ts`: **una escritura nunca destruye lo que había**. Un
|
|
17
|
+
* JSON ilegible o de una versión que no conocemos se deja tal cual y la escritura LANZA — y
|
|
18
|
+
* lo que no se entiende de un fichero que SÍ se lee (una definición a medio escribir) se
|
|
19
|
+
* conserva al escribir: lo que se filtra es la LECTURA, no la fusión, que es el mismo
|
|
20
|
+
* reparto que ya hacían `leerAnadidos` e `idsCrudos`.
|
|
21
|
+
*/
|
|
22
|
+
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
23
|
+
import { randomUUID } from "node:crypto";
|
|
24
|
+
import { dirname, join } from "node:path";
|
|
25
|
+
import { conectorDelCatalogo, definicionDelCable, esConectorPropio } from "../../core/conectores.js";
|
|
26
|
+
export class ErrorDeFicheroDeConectores extends Error {
|
|
27
|
+
}
|
|
28
|
+
export function rutaDeAnadidos(casa) { return join(casa, ".xonecode", "conectores.json"); }
|
|
29
|
+
export function rutaDeOAuth(casa) { return join(casa, ".xonecode", "conectores-oauth.json"); }
|
|
30
|
+
function leerJson(ruta) {
|
|
31
|
+
if (!existsSync(ruta))
|
|
32
|
+
return { tipo: "ausente" };
|
|
33
|
+
try {
|
|
34
|
+
const bruto = JSON.parse(readFileSync(ruta, "utf8"));
|
|
35
|
+
if (typeof bruto !== "object" || bruto === null || Array.isArray(bruto))
|
|
36
|
+
return { tipo: "ilegible" };
|
|
37
|
+
const objeto = bruto;
|
|
38
|
+
return objeto.version === 1 ? { tipo: "ok", valor: objeto } : { tipo: "ilegible" };
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return { tipo: "ilegible" };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function escribirAtomico(ruta, contenido) {
|
|
45
|
+
mkdirSync(dirname(ruta), { recursive: true, mode: 0o700 });
|
|
46
|
+
const temporal = `${ruta}.${randomUUID()}.tmp`;
|
|
47
|
+
let fd;
|
|
48
|
+
try {
|
|
49
|
+
fd = openSync(temporal, "wx", 0o600);
|
|
50
|
+
writeFileSync(fd, JSON.stringify(contenido, null, 2) + "\n", "utf8");
|
|
51
|
+
closeSync(fd);
|
|
52
|
+
fd = undefined;
|
|
53
|
+
renameSync(temporal, ruta);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (fd !== undefined)
|
|
57
|
+
closeSync(fd);
|
|
58
|
+
try {
|
|
59
|
+
unlinkSync(temporal);
|
|
60
|
+
}
|
|
61
|
+
catch { /* no llegó a crearse */ }
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function paraEscribir(ruta) {
|
|
66
|
+
const lectura = leerJson(ruta);
|
|
67
|
+
if (lectura.tipo === "ilegible") {
|
|
68
|
+
// No se nombra el contenido: puede llevar un token.
|
|
69
|
+
throw new ErrorDeFicheroDeConectores(`${ruta} no se entiende y no se sobrescribe: revísalo o bórralo a mano`);
|
|
70
|
+
}
|
|
71
|
+
return lectura.tipo === "ok" ? lectura.valor : { version: 1 };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Las definiciones del fichero, SIN filtrar: lo que se usa para FUSIONAR. Una entrada que no
|
|
75
|
+
* se entiende se conserva al escribir —quitarla sería destruir lo que había, y el aviso de
|
|
76
|
+
* `desconocidos` es justo lo que evita que desaparezca en silencio—; quien la criba es la
|
|
77
|
+
* lectura, que es donde se decide qué se puede enseñar.
|
|
78
|
+
*/
|
|
79
|
+
function definicionesCrudas(base) {
|
|
80
|
+
const bruto = base.definiciones;
|
|
81
|
+
if (typeof bruto !== "object" || bruto === null || Array.isArray(bruto))
|
|
82
|
+
return {};
|
|
83
|
+
return bruto;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Las definiciones que SÍ se entienden. Dos cosas se comprueban y ninguna es de forma: que la
|
|
87
|
+
* clave sea un id nuestro (`custom:<slug>`) —un fichero editado a mano puede tener cualquier
|
|
88
|
+
* cosa ahí, y de ahí sale una clave de directorio— y que la fila pase el MISMO parser que lee
|
|
89
|
+
* lo que llega por el cable, porque una definición a medias no se carga a medias.
|
|
90
|
+
*
|
|
91
|
+
* Una entrada que no pasa NO se borra: su id, si está en `anadidos`, sale como `desconocido` y
|
|
92
|
+
* la ventana lo dice, que es la única forma de que alguien pueda arreglarlo.
|
|
93
|
+
*/
|
|
94
|
+
function definicionesValidas(base) {
|
|
95
|
+
const salida = {};
|
|
96
|
+
for (const [id, valor] of Object.entries(definicionesCrudas(base))) {
|
|
97
|
+
if (!esConectorPropio(id))
|
|
98
|
+
continue;
|
|
99
|
+
const def = definicionDelCable(valor);
|
|
100
|
+
if (def !== undefined)
|
|
101
|
+
salida[id] = def;
|
|
102
|
+
}
|
|
103
|
+
return salida;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* El fichero entero en una lectura, y por eso es UNO y no `leerAnadidos` + `leerDefiniciones`:
|
|
107
|
+
* quien resuelve un id necesita las dos cosas a la vez, y dos lecturas del mismo fichero pueden
|
|
108
|
+
* discrepar a mitad de camino — un `anadido` que la segunda ya no sabe resolver. Con una sola,
|
|
109
|
+
* `anadidos` y `definiciones` son coherentes por construcción, que es lo que deja afirmar que
|
|
110
|
+
* todo id de `anadidos` tiene fila.
|
|
111
|
+
*
|
|
112
|
+
* **Un id está VIVO si lo conoce el catálogo o si tiene definición.** Las dos familias, una
|
|
113
|
+
* sola pregunta: de aquí para abajo nada distingue un conector de código de uno escrito a mano,
|
|
114
|
+
* que es lo que hace que un servidor propio se comporte como Jira.
|
|
115
|
+
*/
|
|
116
|
+
export function leerConectores(casa) {
|
|
117
|
+
const lectura = leerJson(rutaDeAnadidos(casa));
|
|
118
|
+
if (lectura.tipo === "ilegible")
|
|
119
|
+
return { anadidos: [], desconocidos: [], definiciones: {}, ilegible: true };
|
|
120
|
+
if (lectura.tipo !== "ok")
|
|
121
|
+
return { anadidos: [], desconocidos: [], definiciones: {} };
|
|
122
|
+
const definiciones = definicionesValidas(lectura.valor);
|
|
123
|
+
const definidos = new Set(Object.keys(definiciones));
|
|
124
|
+
const ids = Array.isArray(lectura.valor.anadidos) ? lectura.valor.anadidos.filter((x) => typeof x === "string") : [];
|
|
125
|
+
const vivo = (id) => conectorDelCatalogo(id) !== undefined || definidos.has(id);
|
|
126
|
+
return { definiciones, anadidos: ids.filter(vivo), desconocidos: ids.filter((id) => !vivo(id)) };
|
|
127
|
+
}
|
|
128
|
+
function idsCrudos(base) {
|
|
129
|
+
return Array.isArray(base.anadidos) ? base.anadidos.filter((x) => typeof x === "string") : [];
|
|
130
|
+
}
|
|
131
|
+
export function anadirConector(casa, id) {
|
|
132
|
+
const ruta = rutaDeAnadidos(casa);
|
|
133
|
+
const base = paraEscribir(ruta);
|
|
134
|
+
const ids = idsCrudos(base);
|
|
135
|
+
if (ids.includes(id))
|
|
136
|
+
return;
|
|
137
|
+
escribirAtomico(ruta, { ...base, version: 1, anadidos: [...ids, id] });
|
|
138
|
+
}
|
|
139
|
+
export function quitarConector(casa, id) {
|
|
140
|
+
const ruta = rutaDeAnadidos(casa);
|
|
141
|
+
const base = paraEscribir(ruta);
|
|
142
|
+
const ids = idsCrudos(base);
|
|
143
|
+
if (!ids.includes(id))
|
|
144
|
+
return;
|
|
145
|
+
escribirAtomico(ruta, { ...base, version: 1, anadidos: ids.filter((x) => x !== id) });
|
|
146
|
+
}
|
|
147
|
+
export function guardarDefinicion(casa, id, def) {
|
|
148
|
+
const ruta = rutaDeAnadidos(casa);
|
|
149
|
+
const base = paraEscribir(ruta);
|
|
150
|
+
escribirAtomico(ruta, { ...base, version: 1, definiciones: { ...definicionesCrudas(base), [id]: def } });
|
|
151
|
+
}
|
|
152
|
+
export function olvidarDefinicion(casa, id) {
|
|
153
|
+
const ruta = rutaDeAnadidos(casa);
|
|
154
|
+
const base = paraEscribir(ruta);
|
|
155
|
+
const todas = definicionesCrudas(base);
|
|
156
|
+
if (!(id in todas))
|
|
157
|
+
return;
|
|
158
|
+
const { [id]: _fuera, ...resto } = todas;
|
|
159
|
+
escribirAtomico(ruta, { ...base, version: 1, definiciones: resto });
|
|
160
|
+
}
|
|
161
|
+
function porConector(base) {
|
|
162
|
+
const bruto = base.porConector;
|
|
163
|
+
if (typeof bruto !== "object" || bruto === null || Array.isArray(bruto))
|
|
164
|
+
return {};
|
|
165
|
+
return bruto;
|
|
166
|
+
}
|
|
167
|
+
export function leerOAuth(casa, id) {
|
|
168
|
+
const lectura = leerJson(rutaDeOAuth(casa));
|
|
169
|
+
if (lectura.tipo !== "ok")
|
|
170
|
+
return {};
|
|
171
|
+
const datos = porConector(lectura.valor)[id];
|
|
172
|
+
return typeof datos === "object" && datos !== null ? datos : {};
|
|
173
|
+
}
|
|
174
|
+
export function guardarOAuth(casa, id, datos) {
|
|
175
|
+
const ruta = rutaDeOAuth(casa);
|
|
176
|
+
const base = paraEscribir(ruta);
|
|
177
|
+
escribirAtomico(ruta, { ...base, version: 1, porConector: { ...porConector(base), [id]: datos } });
|
|
178
|
+
}
|
|
179
|
+
export function olvidarOAuth(casa, id) {
|
|
180
|
+
const ruta = rutaDeOAuth(casa);
|
|
181
|
+
const base = paraEscribir(ruta);
|
|
182
|
+
const todos = porConector(base);
|
|
183
|
+
if (!(id in todos))
|
|
184
|
+
return;
|
|
185
|
+
const { [id]: _fuera, ...resto } = todos;
|
|
186
|
+
escribirAtomico(ruta, { ...base, version: 1, porConector: resto });
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=conectoresEnDisco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conectoresEnDisco.js","sourceRoot":"","sources":["../../../src/agent/conectores/conectoresEnDisco.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { guardarOAuth, leerOAuth } from "./conectoresEnDisco.js";
|
|
2
|
+
export class ProveedorDeConector {
|
|
3
|
+
o;
|
|
4
|
+
/**
|
|
5
|
+
* Los secretos de ESTE conector. Son los mismos que guarda el carril de la clave —un solo
|
|
6
|
+
* fichero por conector—, pero aquí no puede haber `clave`: quien construye un proveedor es el
|
|
7
|
+
* carril de OAuth, y la autenticación de un conector no cambia después de crearlo.
|
|
8
|
+
*/
|
|
9
|
+
datos;
|
|
10
|
+
constructor(o) {
|
|
11
|
+
this.o = o;
|
|
12
|
+
this.datos = leerOAuth(o.casa, o.id);
|
|
13
|
+
}
|
|
14
|
+
guardar() { guardarOAuth(this.o.casa, this.o.id, this.datos); }
|
|
15
|
+
get redirectUrl() { return this.o.redirectUrl; }
|
|
16
|
+
get clientMetadata() {
|
|
17
|
+
return {
|
|
18
|
+
client_name: "xonecode",
|
|
19
|
+
redirect_uris: [this.o.redirectUrl],
|
|
20
|
+
grant_types: ["authorization_code", "refresh_token"],
|
|
21
|
+
response_types: ["code"],
|
|
22
|
+
token_endpoint_auth_method: "none",
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
state() { return this.o.state; }
|
|
26
|
+
clientInformation() {
|
|
27
|
+
return this.datos.redirectUri === this.o.redirectUrl ? this.datos.clientInformation : undefined;
|
|
28
|
+
}
|
|
29
|
+
saveClientInformation(info) {
|
|
30
|
+
this.datos = { ...this.datos, clientInformation: info, redirectUri: this.o.redirectUrl };
|
|
31
|
+
this.guardar();
|
|
32
|
+
}
|
|
33
|
+
tokens() { return this.datos.tokens; }
|
|
34
|
+
saveTokens(tokens) { this.datos = { ...this.datos, tokens }; this.guardar(); }
|
|
35
|
+
redirectToAuthorization(url) { this.o.alRedirigir(url); }
|
|
36
|
+
saveCodeVerifier(verifier) { this.datos = { ...this.datos, codeVerifier: verifier }; this.guardar(); }
|
|
37
|
+
codeVerifier() {
|
|
38
|
+
if (!this.datos.codeVerifier)
|
|
39
|
+
throw new Error("no hay verificador PKCE para esta autorización: vuelve a pulsar Conectar");
|
|
40
|
+
return this.datos.codeVerifier;
|
|
41
|
+
}
|
|
42
|
+
/** El gancho de recuperación del SDK: sin él, un refresh muerto es un fallo duro. */
|
|
43
|
+
invalidateCredentials(alcance) {
|
|
44
|
+
const { clientInformation, redirectUri, tokens, codeVerifier } = this.datos;
|
|
45
|
+
if (alcance === "all")
|
|
46
|
+
this.datos = {};
|
|
47
|
+
else if (alcance === "client")
|
|
48
|
+
this.datos = { ...(tokens ? { tokens } : {}), ...(codeVerifier ? { codeVerifier } : {}) };
|
|
49
|
+
else if (alcance === "tokens")
|
|
50
|
+
this.datos = { ...(clientInformation ? { clientInformation } : {}), ...(redirectUri ? { redirectUri } : {}), ...(codeVerifier ? { codeVerifier } : {}) };
|
|
51
|
+
else if (alcance === "verifier")
|
|
52
|
+
this.datos = { ...(clientInformation ? { clientInformation } : {}), ...(redirectUri ? { redirectUri } : {}), ...(tokens ? { tokens } : {}) };
|
|
53
|
+
this.guardar();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=proveedorDeConector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proveedorDeConector.js","sourceRoot":"","sources":["../../../src/agent/conectores/proveedorDeConector.ts"],"names":[],"mappings":"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"}
|