theus-cli 0.1.3 → 0.1.5
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/LICENSE +78 -0
- package/README.md +112 -174
- package/cli.js +35539 -40831
- package/package.json +3 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
LICENCIA COMERCIAL PROPIETARIA DE THEUS
|
|
2
|
+
Copyright (c) 2026 Marketrix / Theus (theus.pe). Todos los derechos reservados.
|
|
3
|
+
|
|
4
|
+
1. TITULARIDAD
|
|
5
|
+
Este software, denominado "Theus CLI" o "Theus", incluyendo su codigo
|
|
6
|
+
fuente, binarios, bundles compilados, documentacion, marcas, logotipos,
|
|
7
|
+
arte y demas materiales asociados (en conjunto, el "Software"), es
|
|
8
|
+
propiedad exclusiva de Marketrix ("el Titular"), operador del dominio
|
|
9
|
+
comercial theus.pe.
|
|
10
|
+
|
|
11
|
+
2. LICENCIA LIMITADA DE USO
|
|
12
|
+
Sujeto al cumplimiento de estos terminos y, cuando corresponda, al pago
|
|
13
|
+
del plan de suscripcion vigente contratado a traves de theus.pe, el
|
|
14
|
+
Titular concede al usuario una licencia limitada, personal, revocable,
|
|
15
|
+
no exclusiva, no transferible y no sublicenciable para instalar y
|
|
16
|
+
ejecutar el Software con fines de uso del producto Theus.
|
|
17
|
+
|
|
18
|
+
3. RESTRICCIONES
|
|
19
|
+
Salvo autorizacion previa, expresa y por escrito del Titular, el usuario
|
|
20
|
+
NO puede:
|
|
21
|
+
a) copiar, distribuir, publicar, alquilar, prestar, vender o revender el
|
|
22
|
+
Software, en todo o en parte;
|
|
23
|
+
b) modificar, traducir, adaptar o crear obras derivadas del Software;
|
|
24
|
+
c) realizar ingenieria inversa, descompilar o desensamblar el Software,
|
|
25
|
+
salvo en la medida en que la ley aplicable lo permita de forma
|
|
26
|
+
imperativa;
|
|
27
|
+
d) eliminar, ocultar o alterar avisos de derechos de autor, marcas o
|
|
28
|
+
atribuciones incluidos en el Software;
|
|
29
|
+
e) usar el Software para construir un producto o servicio que compita
|
|
30
|
+
con Theus;
|
|
31
|
+
f) usar las marcas "Theus", "theus.pe" o el arte asociado fuera del uso
|
|
32
|
+
normal del producto.
|
|
33
|
+
|
|
34
|
+
4. SUSCRIPCIONES Y SERVICIOS
|
|
35
|
+
Determinadas funciones del Software dependen de servicios en linea del
|
|
36
|
+
Titular (por ejemplo, el gateway de modelos y la consola de theus.pe) y
|
|
37
|
+
pueden requerir una suscripcion de pago activa. El Titular puede
|
|
38
|
+
modificar, suspender o descontinuar dichos servicios conforme a los
|
|
39
|
+
terminos comerciales publicados en theus.pe.
|
|
40
|
+
|
|
41
|
+
5. CODIGO DE TERCEROS
|
|
42
|
+
El Software puede incluir componentes de terceros sujetos a sus propias
|
|
43
|
+
licencias. Nada en esta licencia limita los derechos que dichas
|
|
44
|
+
licencias otorgan sobre esos componentes; sus avisos se conservan en los
|
|
45
|
+
archivos correspondientes.
|
|
46
|
+
|
|
47
|
+
6. PROPIEDAD INTELECTUAL
|
|
48
|
+
El Software se licencia, no se vende. El Titular conserva todos los
|
|
49
|
+
derechos, titulos e intereses sobre el Software que no se conceden
|
|
50
|
+
expresamente en esta licencia.
|
|
51
|
+
|
|
52
|
+
7. SIN GARANTIAS
|
|
53
|
+
EL SOFTWARE SE ENTREGA "TAL CUAL" Y "SEGUN DISPONIBILIDAD", SIN
|
|
54
|
+
GARANTIAS DE NINGUN TIPO, EXPRESAS O IMPLICITAS, INCLUYENDO SIN
|
|
55
|
+
LIMITACION GARANTIAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPOSITO
|
|
56
|
+
PARTICULAR Y NO INFRACCION.
|
|
57
|
+
|
|
58
|
+
8. LIMITACION DE RESPONSABILIDAD
|
|
59
|
+
EN LA MAXIMA MEDIDA PERMITIDA POR LA LEY, EL TITULAR NO SERA RESPONSABLE
|
|
60
|
+
POR DANOS INDIRECTOS, INCIDENTALES, ESPECIALES, PUNITIVOS O
|
|
61
|
+
CONSECUENTES, NI POR PERDIDA DE DATOS, LUCRO CESANTE O INTERRUPCION DE
|
|
62
|
+
NEGOCIO, DERIVADOS DEL USO O LA IMPOSIBILIDAD DE USO DEL SOFTWARE.
|
|
63
|
+
|
|
64
|
+
9. TERMINACION
|
|
65
|
+
Esta licencia termina automaticamente si el usuario incumple cualquiera
|
|
66
|
+
de sus terminos o si finaliza la suscripcion que la habilita. Al
|
|
67
|
+
terminar, el usuario debe cesar todo uso del Software y eliminar las
|
|
68
|
+
copias en su poder.
|
|
69
|
+
|
|
70
|
+
10. LEY APLICABLE
|
|
71
|
+
Esta licencia se rige por las leyes de la Republica del Peru. Cualquier
|
|
72
|
+
controversia se somete a la jurisdiccion de los tribunales de Lima,
|
|
73
|
+
Peru.
|
|
74
|
+
|
|
75
|
+
Para licencias corporativas, redistribucion u otros permisos, contacta al
|
|
76
|
+
Titular a traves de theus.pe.
|
|
77
|
+
|
|
78
|
+
THEUS — HECHO EN PERU · AD ASTRA PER ASPERA
|
package/README.md
CHANGED
|
@@ -1,96 +1,60 @@
|
|
|
1
|
-
# THEUS
|
|
1
|
+
# THEUS — CLI
|
|
2
2
|
|
|
3
|
-
**THEUS HECHO EN
|
|
4
|
-
|
|
5
|
-
Dominio comercial: `theus.pe`
|
|
3
|
+
> **THEUS HECHO EN PERÚ · AD ASTRA PER ASPERA**
|
|
4
|
+
> Dominio: [`theus.pe`](https://theus.pe) · Docs: [`docs.theus.pe`](https://docs.theus.pe)
|
|
6
5
|
|
|
7
|
-
Theus es un agente
|
|
6
|
+
**Theus** es un agente de código **local-first y multimodelo**: abre una sesión interactiva desde cualquier proyecto, lo indexa en tu propia máquina, mantiene memoria y un grafo del código, levanta un dashboard visual, y ejecuta tareas de programación con el modelo que elijas.
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
Este repo es el **producto principal**: el CLI `theus` (Bun + Ink/React en TSX). El lado servidor (web, gateway y consola) vive en [`MarketrixPE/theus-pe`](https://github.com/MarketrixPE/theus-pe).
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
---
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
- Indexa el proyecto localmente para reducir contexto repetido y mejorar memoria.
|
|
15
|
-
- Levanta una API local en `127.0.0.1` con estado, grafo y esquema de base de datos.
|
|
16
|
-
- Abre un dashboard visual del proyecto con mapa neuronal, archivos, simbolos, entidades, base de datos y memoria.
|
|
17
|
-
- Permite conectar modelos locales, endpoints OpenAI-compatible o proveedores BYOK.
|
|
18
|
-
- Mantiene paquetes propios en `vendor/theus-packages/` para preparar exports SDK, tipos y stubs de producto.
|
|
19
|
-
- Usa identidad Theus: `.theus`, variables `THEUS_*`, dominio `theus.pe` y copy en espanol primero.
|
|
12
|
+
## 🧠 Cómo encaja en el negocio
|
|
20
13
|
|
|
21
|
-
|
|
14
|
+
Theus se puede usar de dos maneras, y las dos son ciudadanas de primera clase:
|
|
22
15
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
las opciones de abajo lo instala por ti, o hazlo manualmente:
|
|
16
|
+
1. **Local-first / BYOK** — apunta el CLI a cualquier endpoint OpenAI-compatible (Ollama, LM Studio, un gateway propio, tu propia key). Todo corre en tu máquina; ningún servicio remoto es obligatorio para arrancar.
|
|
17
|
+
2. **Suscripción Theus (gateway gestionado)** — `theus login` conecta el CLI al gateway de `theus.pe`. Con **una sola API key de Theus** accedes a los **~20 mejores modelos** (Claude, GPT, Gemini, DeepSeek, Grok, Qwen, GLM…). **Theus** administra centralmente las keys de cada proveedor; tú solo usas tu suscripción — **no traes tus propias keys de proveedor**.
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
curl -fsSL https://bun.sh/install | bash
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Opcion A — npm (global)
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npm install -g theus-cli
|
|
35
|
-
theus --version
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Uso normal:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
cd /ruta/de/tu/proyecto
|
|
42
|
-
theus
|
|
43
|
-
```
|
|
19
|
+
En el modo suscripción, el modelo por defecto es **`titan`**: el orquestador propio de Theus que analiza cada petición, decide si la resuelve con **un modelo** o la **descompone entre varios**, y **sintetiza** la respuesta final. (Toda la lógica de TITAN, el catálogo y la gestión de keys está documentada en el README de [`theus-pe`](https://github.com/MarketrixPE/theus-pe).)
|
|
44
20
|
|
|
45
|
-
|
|
21
|
+
> **Regla de producto:** el copy visible es **español-first** y **sin marcas externas**. La única excepción es el catálogo de modelos, donde sí aparecen los nombres reales.
|
|
46
22
|
|
|
47
|
-
|
|
48
|
-
theus update
|
|
49
|
-
# o dentro del chat:
|
|
50
|
-
/update
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Ejecucion puntual sin instalar (descarga temporal):
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
npx theus-cli --help
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
> Nota: el paquete publica un unico bundle self-contained (`cli.js`) con shebang
|
|
60
|
-
> `#!/usr/bin/env bun`. `npm install -g` crea el enlace `theus` apuntando a ese
|
|
61
|
-
> bundle; necesitas Bun en el PATH para ejecutarlo.
|
|
23
|
+
---
|
|
62
24
|
|
|
63
|
-
|
|
25
|
+
## 🚀 Instalación (usuarios)
|
|
64
26
|
|
|
65
|
-
|
|
27
|
+
Requisito de runtime: **Bun** (`cli.js` es un bundle con target `bun`, no corre bajo Node). El instalador oficial instala Bun por ti si falta, verificando su checksum SHA-256.
|
|
66
28
|
|
|
67
29
|
```bash
|
|
68
30
|
curl -fsSL https://theus.pe/install.sh | bash
|
|
31
|
+
theus --version
|
|
69
32
|
```
|
|
70
33
|
|
|
71
|
-
|
|
72
|
-
`THEUS_BIN_DIR`. El script vive en `scripts/install.sh`.
|
|
34
|
+
El instalador detecta tu plataforma (macOS/Linux, x64/arm64), descarga el tarball del último release (primario desde `theus.pe/dl`, con GitHub Releases como respaldo — el repo es privado), lo instala en `~/.theus/app` y enlaza `theus` en tu PATH. Es idempotente: para actualizar, vuelve a ejecutarlo.
|
|
73
35
|
|
|
74
|
-
|
|
36
|
+
**Alternativa vía npm** (también requiere Bun):
|
|
75
37
|
|
|
76
38
|
```bash
|
|
77
|
-
|
|
78
|
-
bun run build # genera cli.js self-contained
|
|
79
|
-
./cli.js --version # o: bun run dev
|
|
39
|
+
npm install -g theus-cli
|
|
80
40
|
```
|
|
81
41
|
|
|
82
|
-
|
|
83
|
-
|
|
42
|
+
Variables del instalador: `THEUS_INSTALL_MODE` (`auto`|`release`|`source`), `THEUS_VERSION` (`latest` o `vX.Y.Z`), `THEUS_HOME`, `THEUS_BIN_DIR`.
|
|
43
|
+
|
|
44
|
+
### Primer uso
|
|
84
45
|
|
|
85
46
|
```bash
|
|
86
|
-
|
|
47
|
+
cd /ruta/de/tu/proyecto
|
|
48
|
+
theus # sesión interactiva
|
|
49
|
+
theus -p "tu prompt" # modo no interactivo
|
|
50
|
+
theus login # conectar la suscripción Theus
|
|
87
51
|
```
|
|
88
52
|
|
|
89
|
-
|
|
53
|
+
---
|
|
90
54
|
|
|
91
|
-
|
|
55
|
+
## 🧩 Conectar un modelo
|
|
92
56
|
|
|
93
|
-
|
|
57
|
+
Theus lee primero las variables `THEUS_*`. Apunta a cualquier endpoint OpenAI-compatible:
|
|
94
58
|
|
|
95
59
|
```bash
|
|
96
60
|
export THEUS_BASE_URL="http://127.0.0.1:11434/v1"
|
|
@@ -99,155 +63,129 @@ export THEUS_API_KEY="local"
|
|
|
99
63
|
theus
|
|
100
64
|
```
|
|
101
65
|
|
|
102
|
-
|
|
66
|
+
O define proveedores en `~/.theus/providers.json`:
|
|
103
67
|
|
|
104
68
|
```json
|
|
105
69
|
{
|
|
106
70
|
"providers": [
|
|
107
|
-
{
|
|
108
|
-
"
|
|
109
|
-
"adapter": "openai-compatible",
|
|
110
|
-
"enabled": true,
|
|
111
|
-
"options": {
|
|
112
|
-
"baseURL": "http://127.0.0.1:11434/v1",
|
|
113
|
-
"model": "llama3.1",
|
|
114
|
-
"apiKey": "local"
|
|
115
|
-
}
|
|
116
|
-
}
|
|
71
|
+
{ "id": "ollama", "adapter": "openai-compatible", "enabled": true,
|
|
72
|
+
"options": { "baseURL": "http://127.0.0.1:11434/v1", "model": "llama3.1", "apiKey": "local" } }
|
|
117
73
|
],
|
|
118
|
-
"policy": {
|
|
119
|
-
"text": ["ollama"]
|
|
120
|
-
}
|
|
74
|
+
"policy": { "text": ["ollama"] }
|
|
121
75
|
}
|
|
122
76
|
```
|
|
123
77
|
|
|
124
|
-
|
|
78
|
+
**`theus login`** hace el flujo OAuth/PKCE contra `theus.pe`, intercambia el código por token y deja instalado el proveedor `theus-official` (`https://theus.pe/v1`, modelo `titan`) en `~/.theus/providers.json`. A partir de ahí basta con `theus`.
|
|
125
79
|
|
|
126
|
-
|
|
127
|
-
~/.theus/providers.json
|
|
128
|
-
```
|
|
80
|
+
**Orden de selección de proveedor** (`services/api/theus.ts`): `THEUS_DISABLE_MAIN_PROVIDER=1` → env `THEUS_BASE_URL`/`THEUS_OPENAI_BASE_URL` → primer proveedor con texto en `providers.json` → motor de compatibilidad. Ningún servicio remoto es obligatorio para arrancar.
|
|
129
81
|
|
|
130
|
-
|
|
82
|
+
### Variables útiles
|
|
131
83
|
|
|
132
|
-
|
|
84
|
+
| Variable | Uso |
|
|
85
|
+
| --- | --- |
|
|
86
|
+
| `THEUS_BASE_URL` / `THEUS_OPENAI_BASE_URL` | endpoint OpenAI-compatible |
|
|
87
|
+
| `THEUS_MODEL` / `THEUS_API_KEY` / `THEUS_PROVIDER_ID` | modelo, key y nombre del proveedor |
|
|
88
|
+
| `THEUS_DISABLE_MAIN_PROVIDER=1` | fuerza el motor de compatibilidad |
|
|
89
|
+
| `THEUS_NO_PROJECT_INTELLIGENCE=1` | no levanta índice/API/dashboard |
|
|
90
|
+
| `THEUS_NO_OPEN_DASHBOARD=1` | levanta la API sin abrir el navegador |
|
|
91
|
+
| `PROJECT_API_PORT` / `INDEX_MAX_FILES` | puerto local / límite de archivos indexados |
|
|
133
92
|
|
|
134
|
-
|
|
135
|
-
- extrae simbolos,
|
|
136
|
-
- construye nodos y relaciones,
|
|
137
|
-
- detecta esquemas SQL/Prisma,
|
|
138
|
-
- guarda indice y memoria bajo `~/.theus/knowledge/`,
|
|
139
|
-
- expone un dashboard local.
|
|
93
|
+
---
|
|
140
94
|
|
|
141
|
-
|
|
95
|
+
## 📊 Dashboard e inteligencia local
|
|
96
|
+
|
|
97
|
+
Al iniciar dentro de un proyecto, el servicio de inteligencia local indexa archivos, extrae símbolos, construye el grafo, detecta esquemas SQL/Prisma, guarda índice y memoria en `~/.theus/knowledge/` y expone un dashboard en `127.0.0.1`:
|
|
142
98
|
|
|
143
99
|
```text
|
|
144
|
-
/dashboard
|
|
145
|
-
/api/health
|
|
146
|
-
/api/status
|
|
147
|
-
/api/graph
|
|
148
|
-
/api/database
|
|
149
|
-
/api/db
|
|
150
|
-
/api/schema
|
|
100
|
+
/dashboard /api/status /api/graph /api/database /api/schema /api/health
|
|
151
101
|
```
|
|
152
102
|
|
|
153
|
-
|
|
103
|
+
---
|
|
154
104
|
|
|
155
|
-
|
|
105
|
+
## 🛠️ Desarrollo
|
|
156
106
|
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
107
|
+
```bash
|
|
108
|
+
bun install
|
|
109
|
+
bun run dev # corre desde fuente (entrypoints/cli.tsx)
|
|
110
|
+
./bin/theus --version # vía el launcher (preload de shims)
|
|
111
|
+
bun run build # bundle → ./cli.js (usa el macro feature(); --define feature=false)
|
|
112
|
+
bun run typecheck # tsc --noEmit — ⚠️ ver caveat
|
|
163
113
|
```
|
|
164
114
|
|
|
165
|
-
|
|
115
|
+
**Smoke tests** (la verificación real, no el typecheck):
|
|
166
116
|
|
|
167
117
|
```bash
|
|
168
|
-
theus
|
|
118
|
+
THEUS_NO_PROJECT_INTELLIGENCE=1 ./bin/theus --help
|
|
119
|
+
THEUS_NO_OPEN_DASHBOARD=1 ./bin/theus
|
|
120
|
+
curl http://127.0.0.1:<puerto>/api/status
|
|
121
|
+
curl http://127.0.0.1:<puerto>/api/database
|
|
169
122
|
```
|
|
170
123
|
|
|
171
|
-
|
|
124
|
+
> **Caveat de typecheck:** `bun run typecheck` aún falla por deuda de tipos heredada y stubs reconstruidos. **No** lo trates como gate. Valida con tests enfocados + smoke tests del CLI + chequeos del dashboard.
|
|
172
125
|
|
|
173
|
-
|
|
126
|
+
### Flujo de arranque
|
|
174
127
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
| `THEUS_OPENAI_BASE_URL` | Alias compatible para proveedor OpenAI-compatible |
|
|
179
|
-
| `THEUS_MODEL` | Modelo principal |
|
|
180
|
-
| `THEUS_OPENAI_MODEL` | Alias compatible de modelo |
|
|
181
|
-
| `THEUS_API_KEY` | API key del proveedor |
|
|
182
|
-
| `THEUS_PROVIDER_ID` | Nombre visible del proveedor activo |
|
|
183
|
-
| `THEUS_DISABLE_MAIN_PROVIDER=1` | Fuerza el motor de compatibilidad |
|
|
184
|
-
| `THEUS_DISABLE_TOOLS=1` | Desactiva tool-calling para endpoints simples |
|
|
185
|
-
| `THEUS_NO_PROJECT_INTELLIGENCE=1` | No levanta indice/API/dashboard |
|
|
186
|
-
| `THEUS_NO_OPEN_DASHBOARD=1` | Levanta API sin abrir el navegador |
|
|
187
|
-
| `PROJECT_API_PORT=65235` | Fija el puerto local |
|
|
188
|
-
| `INDEX_MAX_FILES=2500` | Limite de archivos indexados |
|
|
189
|
-
| `THEUS_ENABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1` | Opt-in para marketplace oficial |
|
|
190
|
-
|
|
191
|
-
## Comandos principales
|
|
192
|
-
|
|
193
|
-
| Comando | Proposito |
|
|
194
|
-
| --- | --- |
|
|
195
|
-
| `theus` | Inicia la sesion interactiva |
|
|
196
|
-
| `theus -p "prompt"` | Ejecuta en modo no interactivo |
|
|
197
|
-
| `theus --help` | Muestra ayuda |
|
|
198
|
-
| `/help` | Ayuda dentro del REPL |
|
|
199
|
-
| `/login` | Configuracion de acceso cuando se usa una cuenta remota |
|
|
200
|
-
| `/model` | Seleccion de modelo |
|
|
201
|
-
| `/mcp` | Servidores MCP |
|
|
202
|
-
| `/permissions` | Permisos de herramientas |
|
|
203
|
-
| `/init` | Inicializa documentacion de proyecto |
|
|
128
|
+
```
|
|
129
|
+
bin/theus → entrypoints/cli.tsx → main.tsx → setup.ts → replLauncher.tsx → screens/REPL.tsx → query.ts
|
|
130
|
+
```
|
|
204
131
|
|
|
205
|
-
|
|
132
|
+
`bin/theus` corre Bun con `--preload bun-shims/preload.ts` (registra el shim del macro `feature()`/`bun:bundle` y stubs internos para correr sin bundlear). `login`/`signin`/`entrar` los intercepta el launcher y los enruta a `entrypoints/theus-login.ts`.
|
|
206
133
|
|
|
207
|
-
|
|
134
|
+
### Mapa de arquitectura
|
|
208
135
|
|
|
209
136
|
```text
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
types/theus-sdk.d.ts tipos publicos base
|
|
137
|
+
services/api/theus.ts proveedor de modelos — router OpenAI-compatible + fallback
|
|
138
|
+
services/knowledge/ índice local, grafo del proyecto, memoria (~/.theus/knowledge/)
|
|
139
|
+
services/projectIntelligence/ API HTTP local + dashboard + DB visual (detección SQL/Prisma)
|
|
140
|
+
tools.ts registro de herramientas (¡el orden importa!)
|
|
141
|
+
commands.ts registro de slash-commands (¡el orden importa!)
|
|
142
|
+
components/Theus/ banner (Prometeo ASCII), menú, setup de proveedor
|
|
143
|
+
vendor/theus-packages/ paquetes propios (agent-sdk, sdk, mcpb)
|
|
144
|
+
vendor/theus-stubs/ stubs reconstruidos de deps privadas/3ras
|
|
145
|
+
types/ tipos públicos + shims
|
|
220
146
|
```
|
|
221
147
|
|
|
222
|
-
|
|
148
|
+
---
|
|
223
149
|
|
|
224
|
-
|
|
150
|
+
## ⚠️ Convenciones que NO se rompen (léelas antes de tocar código)
|
|
151
|
+
|
|
152
|
+
Este CLI es una reconstrucción de un agente upstream: varios invariantes de build son **load-bearing** y fáciles de romper sin querer.
|
|
153
|
+
|
|
154
|
+
- **Mantén las extensiones `.js` en imports ESM** aunque el archivo fuente sea `.ts`/`.tsx`.
|
|
155
|
+
- Usa `import type` para imports de solo-tipo (`verbatimModuleSyntax` está activo).
|
|
156
|
+
- **No auto-ordenes ni reordenes `tools.ts` ni `commands.ts`** — el orden es significativo.
|
|
157
|
+
- `feature("FLAG")` es un **macro de build**, no un `if` de runtime. No lo reescribas como condicional normal; el bundler hace dead-code-elimination desde ahí (`build` pasa `--define feature=false`). Los módulos gateados por build se cargan con `require()` condicional dentro de un ternario.
|
|
158
|
+
- No renombres mecánicamente `process.env.USER_TYPE === 'ant'` — es un gate de build heredado.
|
|
159
|
+
- Evita editar `main.tsx` en bloque (entrada grande heredada). Prefiere `components/`, `hooks/`, `screens/`, `services/`, `tools/`, `commands/`.
|
|
160
|
+
- No cambies prompts sensibles sin motivo: `query.ts`, reglas de thinking, permisos, seguridad, prompts de herramientas.
|
|
161
|
+
|
|
162
|
+
### Añadir una herramienta o comando
|
|
163
|
+
|
|
164
|
+
- **Herramienta:** `buildTool(...) satisfies ToolDef<...>`, constante de nombre en `prompt.ts`/`constants.ts`, regístrala en `getAllBaseTools()`, declara permisos + destructividad con precisión, y añádela a `constants/tools.ts` si los subagentes deben verla.
|
|
165
|
+
- **Slash-command:** vive en `commands/<nombre>/`, tipo `prompt` | `local` | `local-jsx`. Mantén `COMMANDS` como función memoizada — no la conviertas en array top-level.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 🚢 Releases y distribución
|
|
225
170
|
|
|
226
171
|
```bash
|
|
227
|
-
|
|
228
|
-
THEUS_NO_OPEN_DASHBOARD=1 ./bin/theus
|
|
229
|
-
curl http://127.0.0.1:<puerto>/api/status
|
|
230
|
-
curl http://127.0.0.1:<puerto>/api/database
|
|
172
|
+
bun run scripts/release.ts --tag vX.Y.Z # genera dist/release/* + SHA256SUMS
|
|
231
173
|
```
|
|
232
174
|
|
|
233
|
-
|
|
175
|
+
Luego: sube `dist/release/*` a `/var/www/theus.pe/dl/` (y `/dl/vX.Y.Z/`), crea el release en GitHub (`MarketrixPE/theuscode`), y publica en npm (`theus-cli`; requiere OTP salvo con token de automatización). El paquete npm es solo el bundle compilado (`cli.js` + bin + arte ASCII + README): **no expone la fuente privada**.
|
|
234
176
|
|
|
235
|
-
|
|
177
|
+
---
|
|
236
178
|
|
|
237
|
-
|
|
238
|
-
- Cada usuario controla su modelo y su llave.
|
|
239
|
-
- Cero marca externa en el copy visible.
|
|
240
|
-
- Identidad Theus coherente: `theus`, `.theus`, `THEUS_*`, `theus.pe`.
|
|
241
|
-
- El dashboard debe explicar el proyecto, no solo dibujar puntos.
|
|
242
|
-
- Las bases de datos se muestran como capa visual real, con tablas, columnas, relaciones y fuente.
|
|
243
|
-
- Las funciones incompletas se nombran como deuda tecnica, no como promesa terminada.
|
|
179
|
+
## 📖 Docs adicionales del subproyecto
|
|
244
180
|
|
|
245
|
-
|
|
181
|
+
- `AGENTS.md` — reglas de trabajo para agentes.
|
|
182
|
+
- `THEUS.md` — manual de producto/operaciones.
|
|
183
|
+
- `THEUS_SOURCE_NOTES.md` — internals de runtime/build.
|
|
246
184
|
|
|
247
|
-
|
|
248
|
-
Dominio: **theus.pe**
|
|
249
|
-
Linea: **THEUS HECHO EN PERU**
|
|
250
|
-
Lema: **AD ASTRA PER ASPERA**
|
|
251
|
-
Color base: rojo Peru, blanco, grafito profundo, acentos dorado/verde para grafos y datos.
|
|
185
|
+
## Principios de producto
|
|
252
186
|
|
|
253
|
-
|
|
187
|
+
- Local-first por defecto; cada usuario controla su modelo y su llave.
|
|
188
|
+
- Cero marca externa en el copy visible (excepto el catálogo de modelos).
|
|
189
|
+
- Identidad Theus coherente: `theus`, `.theus`, `THEUS_*`, `theus.pe`.
|
|
190
|
+
- El dashboard **explica** el proyecto, no solo dibuja puntos.
|
|
191
|
+
- Las funciones incompletas se nombran como deuda técnica, no como promesa terminada.
|