create-harness-btp 0.1.1 → 0.2.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/AI/.opencode/agents/deploy-cf.md +7 -7
- package/AI/.opencode/agents/orchestrator.md +1 -1
- package/AI/.opencode/commands/verify.md +1 -1
- package/AI/.opencode/skills/cf-cli/SKILL.md +41 -0
- package/AI/.opencode/skills/mta-build/SKILL.md +4 -4
- package/AI/AGENTS.md +22 -21
- package/AI/INICIO.md +34 -15
- package/AI/docs/cf-safe.md +5 -5
- package/AI/docs/flujo-etapas.md +1 -1
- package/AI/docs/fuentes-oficiales.md +27 -0
- package/AI/docs/habilitacion-trial.md +2 -2
- package/AI/docs/prerequisitos.md +60 -0
- package/AI/scripts/cf-safe.ps1 +14 -14
- package/AI/scripts/check-docs.ps1 +78 -0
- package/AI/scripts/check-docs.sh +42 -0
- package/AI/scripts/check-prereqs.ps1 +129 -0
- package/AI/scripts/check-prereqs.sh +136 -0
- package/AI/scripts/provision-espacio.template.ps1 +10 -10
- package/README.md +106 -38
- package/VERSION +1 -1
- package/install.ps1 +6 -0
- package/install.sh +15 -2
- package/package.json +1 -1
- package/AI/.opencode/skills/sap-cf-cli/SKILL.md +0 -41
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# harness-btp
|
|
2
2
|
|
|
3
|
-
[](https://github.com/horangelmillan/harness-btp/releases/tag/v0.2.0)
|
|
4
4
|
[](LICENSE)
|
|
5
|
-
[](https://github.com/horangelmillan/harness-btp)
|
|
6
|
-
[](https://github.com/horangelmillan/harness-btp)
|
|
6
|
+
[](https://github.com/horangelmillan/harness-btp)
|
|
7
7
|
|
|
8
|
-
Reglas, agentes y scripts reutilizables para llevar un MVP SAP de la especificación al despliegue en Cloud Foundry con
|
|
8
|
+
Reglas, agentes y scripts reutilizables para llevar un MVP SAP de la especificación al despliegue en Cloud Foundry, con cualquier cliente agéntico que lea `AGENTS.md`.
|
|
9
9
|
|
|
10
|
-
Para quien construye MVPs SAP BTP
|
|
10
|
+
Para quien construye MVPs SAP BTP y quiere empezar cada proyecto con el mismo flujo probado, sin copiar y pegar. Funciona en Windows, Linux y macOS, con OpenCode, Claude Code o cualquier otro cliente que lea `AGENTS.md` y ejecute scripts del proyecto.
|
|
11
11
|
|
|
12
12
|
## Contenidos
|
|
13
13
|
|
|
@@ -16,6 +16,7 @@ Para quien construye MVPs SAP BTP en equipo Windows con OpenCode y quiere empeza
|
|
|
16
16
|
- [Quickstart](#quickstart)
|
|
17
17
|
- [Instalación](#instalación)
|
|
18
18
|
- [Actualizar y desinstalar](#actualizar-y-desinstalar)
|
|
19
|
+
- [Adaptadores opcionales](#adaptadores-opcionales)
|
|
19
20
|
- [Estructura del repo](#estructura-del-repo)
|
|
20
21
|
- [Cómo lo descubre el agente](#cómo-lo-descubre-el-agente)
|
|
21
22
|
- [Troubleshooting](#troubleshooting)
|
|
@@ -27,71 +28,101 @@ Para quien construye MVPs SAP BTP en equipo Windows con OpenCode y quiere empeza
|
|
|
27
28
|
## Features
|
|
28
29
|
|
|
29
30
|
- **Carpeta `AI/` sin envolver:** se instala dentro de tu proyecto (nuevo o existente) sin mover ni renombrar nada de lo que ya tienes.
|
|
30
|
-
- **Idempotente con `SKIP` / `-Force` + backup:** repetir la instalación no pisa nada; solo reemplaza con `-Force` y guarda copia en `AI.bak`.
|
|
31
|
+
- **Idempotente con `SKIP` / `-Force` + backup:** repetir la instalación no pisa nada; solo reemplaza con `-Force` (`.ps1`) o `--force` (`.sh`) y guarda copia en `AI.bak`.
|
|
31
32
|
- **Sin secretos:** el repo no contiene credenciales, tokens ni rutas de máquina; solo nombres y placeholders por paisaje.
|
|
32
33
|
- **Tres formas de instalar:** `degit`, `git clone` o `pnpm dlx`, todas ancladas a un tag versionado.
|
|
33
34
|
- **Versionado por tags:** cada versión es un tag `vX.Y.Z`; actualizar es repetir el comando contra el tag nuevo.
|
|
34
|
-
- **
|
|
35
|
+
- **Instaladores pares:** `install.ps1` (PowerShell) e `install.sh` (bash/sh) con la misma lógica (`SKIP` / `CREATE` / `BACKUP` / `OK`). Elige el de tu shell.
|
|
36
|
+
- **Agnóstico al cliente:** el núcleo es Markdown + shell (`AI/AGENTS.md`, `AI/INICIO.md`, `AI/docs/`, `AI/scripts/`). `AI/.opencode/` y `AI/opencode.fragment.jsonc` son adaptadores opcionales de ejemplo, no requisitos (ver [Adaptadores opcionales](#adaptadores-opcionales)).
|
|
37
|
+
- **El agente se adapta solo:** deja un puntero `AGENTS.md` en la raíz y el cliente encuentra `AI/AGENTS.md`, `INICIO.md`, agentes, skills y plantilla de spec.
|
|
35
38
|
|
|
36
39
|
## Requisitos
|
|
37
40
|
|
|
38
41
|
| Necesitas | Versión | Para qué |
|
|
39
42
|
|---|---|---|
|
|
40
|
-
|
|
|
43
|
+
| PowerShell 5.1+ o bash/sh | incluido en el SO | ejecutar `install.ps1` / `install.sh` |
|
|
41
44
|
| Node.js 18+ | solo si usas `degit` o `pnpm dlx` | descargar e instalar el harness |
|
|
42
45
|
| `gh` (opcional) | cualquiera reciente | clonar repo privado o crear PRs |
|
|
43
|
-
|
|
|
46
|
+
| Cliente agéntico | cualquiera reciente que lea `AGENTS.md` (OpenCode, Claude Code, etc.) | leer `AGENTS.md` y orquestar el flujo |
|
|
44
47
|
|
|
45
48
|
> Sin Node también puedes instalar vía `git clone`, que no lo necesita.
|
|
46
49
|
|
|
47
50
|
## Quickstart
|
|
48
51
|
|
|
49
|
-
El camino de 30 segundos en un proyecto nuevo
|
|
52
|
+
El camino de 30 segundos en un proyecto nuevo. Elige tu shell:
|
|
53
|
+
|
|
54
|
+
PowerShell (Windows):
|
|
50
55
|
|
|
51
56
|
```powershell
|
|
52
|
-
npx -p degit degit horangelmillan/harness-btp#v0.
|
|
57
|
+
npx -p degit degit horangelmillan/harness-btp#v0.2.0 AI-tmp -- AI-tmp
|
|
53
58
|
powershell -ExecutionPolicy Bypass -File AI-tmp/install.ps1 -Dest .
|
|
54
59
|
Remove-Item -Recurse -Force AI-tmp
|
|
55
60
|
```
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
bash (Linux, macOS o Git Bash):
|
|
58
63
|
|
|
59
|
-
|
|
64
|
+
```bash
|
|
65
|
+
npx -p degit degit horangelmillan/harness-btp#v0.2.0 AI-tmp -- AI-tmp
|
|
66
|
+
sh AI-tmp/install.sh --dest .
|
|
67
|
+
rm -rf AI-tmp
|
|
68
|
+
```
|
|
60
69
|
|
|
61
|
-
|
|
70
|
+
Eso es todo. Abre el proyecto en tu cliente agéntico y el agente ya sabe qué hacer: lee `AGENTS.md` → `AI/AGENTS.md` → `AI/INICIO.md`.
|
|
71
|
+
|
|
72
|
+
## Instalación
|
|
62
73
|
|
|
63
74
|
### Opción 1 — degit (recomendado)
|
|
64
75
|
|
|
65
76
|
Descarga solo lo necesario, sin historial git:
|
|
66
77
|
|
|
78
|
+
PowerShell:
|
|
79
|
+
|
|
67
80
|
```powershell
|
|
68
|
-
npx -p degit degit horangelmillan/harness-btp#v0.
|
|
81
|
+
npx -p degit degit horangelmillan/harness-btp#v0.2.0 AI-tmp -- AI-tmp
|
|
69
82
|
powershell -ExecutionPolicy Bypass -File AI-tmp/install.ps1 -Dest .
|
|
70
83
|
Remove-Item -Recurse -Force AI-tmp
|
|
71
84
|
```
|
|
72
85
|
|
|
86
|
+
bash:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx -p degit degit horangelmillan/harness-btp#v0.2.0 AI-tmp -- AI-tmp
|
|
90
|
+
sh AI-tmp/install.sh --dest .
|
|
91
|
+
rm -rf AI-tmp
|
|
92
|
+
```
|
|
93
|
+
|
|
73
94
|
### Opción 2 — git clone
|
|
74
95
|
|
|
75
96
|
Clon superficial anclado al tag:
|
|
76
97
|
|
|
98
|
+
PowerShell:
|
|
99
|
+
|
|
77
100
|
```powershell
|
|
78
|
-
git clone --branch v0.
|
|
101
|
+
git clone --branch v0.2.0 --depth 1 https://github.com/horangelmillan/harness-btp AI-tmp
|
|
79
102
|
powershell -ExecutionPolicy Bypass -File AI-tmp/install.ps1 -Dest .
|
|
80
103
|
Remove-Item -Recurse -Force AI-tmp
|
|
81
104
|
```
|
|
82
105
|
|
|
106
|
+
bash:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git clone --branch v0.2.0 --depth 1 https://github.com/horangelmillan/harness-btp AI-tmp
|
|
110
|
+
sh AI-tmp/install.sh --dest .
|
|
111
|
+
rm -rf AI-tmp
|
|
112
|
+
```
|
|
113
|
+
|
|
83
114
|
### Opción 3 — pnpm dlx
|
|
84
115
|
|
|
85
|
-
Sin descargas manuales (requiere publicar `create-harness-btp` en el registry):
|
|
116
|
+
Sin descargas manuales (requiere publicar `create-harness-btp` en el registry). Igual en todos los SO:
|
|
86
117
|
|
|
87
|
-
```
|
|
118
|
+
```bash
|
|
88
119
|
pnpm dlx create-harness-btp --dest .
|
|
89
120
|
```
|
|
90
121
|
|
|
91
122
|
### Qué hace el instalador
|
|
92
123
|
|
|
93
|
-
- `CREATE: AI/` o `SKIP: AI/ ya existe` (solo lo reemplaza con `-Force`, con backup a `AI.bak`).
|
|
94
|
-
- `CREATE: AGENTS.md` o `SKIP: AGENTS.md ya existe` (tu `AGENTS.md` propio se conserva; con `-Force` se respalda a `AGENTS.md.bak`).
|
|
124
|
+
- `CREATE: AI/` o `SKIP: AI/ ya existe` (solo lo reemplaza con `-Force` / `--force`, con backup a `AI.bak`).
|
|
125
|
+
- `CREATE: AGENTS.md` o `SKIP: AGENTS.md ya existe` (tu `AGENTS.md` propio se conserva; con `-Force` / `--force` se respalda a `AGENTS.md.bak`).
|
|
95
126
|
- Fusiona `.gitignore`: añade las líneas que falten, sin duplicar ni borrar las tuyas.
|
|
96
127
|
- **No toca** `package.json` ni `mta.yaml` de tu proyecto, nunca.
|
|
97
128
|
|
|
@@ -100,12 +131,14 @@ Salida típica en proyecto nuevo:
|
|
|
100
131
|
```text
|
|
101
132
|
CREATE: AI/
|
|
102
133
|
CREATE: AGENTS.md
|
|
103
|
-
OK: harness v0.
|
|
134
|
+
OK: harness v0.2.0 instalado
|
|
104
135
|
```
|
|
105
136
|
|
|
106
137
|
## Actualizar y desinstalar
|
|
107
138
|
|
|
108
|
-
**Actualizar:** repite el mismo comando de instalación contra el tag nuevo. Sin `-Force` lo existente se conserva (`SKIP:`); con
|
|
139
|
+
**Actualizar:** repite el mismo comando de instalación contra el tag nuevo. Sin `-Force` / `--force` lo existente se conserva (`SKIP:`); con fuerza se reemplaza con backup:
|
|
140
|
+
|
|
141
|
+
PowerShell:
|
|
109
142
|
|
|
110
143
|
```powershell
|
|
111
144
|
npx -p degit degit horangelmillan/harness-btp#v0.2.0 AI-tmp -- AI-tmp
|
|
@@ -114,15 +147,43 @@ Remove-Item -Recurse -Force AI-tmp
|
|
|
114
147
|
# tu versión anterior queda en AI.bak por si quieres comparar
|
|
115
148
|
```
|
|
116
149
|
|
|
150
|
+
bash:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx -p degit degit horangelmillan/harness-btp#v0.2.0 AI-tmp -- AI-tmp
|
|
154
|
+
sh AI-tmp/install.sh --dest . --force
|
|
155
|
+
rm -rf AI-tmp
|
|
156
|
+
# tu versión anterior queda en AI.bak por si quieres comparar
|
|
157
|
+
```
|
|
158
|
+
|
|
117
159
|
**Desinstalar:** borra la carpeta y el puntero. No deja servicios ni hooks:
|
|
118
160
|
|
|
161
|
+
PowerShell:
|
|
162
|
+
|
|
119
163
|
```powershell
|
|
120
164
|
Remove-Item -Recurse -Force AI
|
|
121
165
|
Remove-Item -Force AGENTS.md # solo si es el puntero al harness
|
|
122
166
|
```
|
|
123
167
|
|
|
168
|
+
bash:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
rm -rf AI
|
|
172
|
+
rm -f AGENTS.md # solo si es el puntero al harness
|
|
173
|
+
```
|
|
174
|
+
|
|
124
175
|
> Si tu `AGENTS.md` tenía contenido propio antes del harness, el instalador lo respaldó en `AGENTS.md.bak`: restáuralo en vez de borrarlo.
|
|
125
176
|
|
|
177
|
+
## Adaptadores opcionales
|
|
178
|
+
|
|
179
|
+
El harness funciona con **cualquier** cliente agéntico que lea `AGENTS.md`. Estos archivos son ayudas para un cliente concreto, no requisitos:
|
|
180
|
+
|
|
181
|
+
- **`AI/.opencode/`** — agentes, comandos y skills de ejemplo con el layout de OpenCode. Si tu cliente usa otro layout, ignóralos o adaptalos: el flujo vive en `AI/AGENTS.md`, `AI/INICIO.md`, `AI/docs/` y `AI/scripts/`, que son Markdown + shell portátil.
|
|
182
|
+
- **`AI/opencode.fragment.jsonc`** — fragmento de ejemplo para fusionar en tu `opencode.jsonc` (p. ej. el bloque MCP `graphify-code`, deshabilitado por defecto). Solo aplica a OpenCode; otros clientes lo ignoran sin efecto.
|
|
183
|
+
- **`install.ps1` / `install.sh`** — elige el de tu shell; ambos aplican la misma lógica idempotente. Los scripts de `AI/scripts/` también vienen en par `.ps1` / `.sh`.
|
|
184
|
+
|
|
185
|
+
Nada del núcleo exige OpenCode, Windows ni ningún modelo concreto.
|
|
186
|
+
|
|
126
187
|
## Estructura del repo
|
|
127
188
|
|
|
128
189
|
```text
|
|
@@ -130,9 +191,9 @@ harness-btp/
|
|
|
130
191
|
├── AI/ # lo que queda instalado en tu proyecto
|
|
131
192
|
│ ├── AGENTS.md # reglas del harness (parametrizado, sin rutas absolutas)
|
|
132
193
|
│ ├── INICIO.md # punto de entrada para el agente
|
|
133
|
-
│ ├── opencode.fragment.jsonc#
|
|
134
|
-
│ ├── .opencode/ #
|
|
135
|
-
│ ├── scripts/ #
|
|
194
|
+
│ ├── opencode.fragment.jsonc# ADAPTER opcional: ejemplo para opencode.jsonc
|
|
195
|
+
│ ├── .opencode/ # ADAPTER opcional: agents + commands + skills de ejemplo
|
|
196
|
+
│ ├── scripts/ # pares .ps1 / .sh + provision-espacio.template.ps1
|
|
136
197
|
│ ├── docs/ # flujo-etapas, cf-safe, habilitacion-trial
|
|
137
198
|
│ ├── specs/ # plantilla _template.md
|
|
138
199
|
│ └── .gitignore.fragment # líneas a fusionar en tu .gitignore
|
|
@@ -141,15 +202,15 @@ harness-btp/
|
|
|
141
202
|
├── install.ps1 / install.sh # instaladores idempotentes (SKIP / CREATE / BACKUP / OK)
|
|
142
203
|
├── bin/ # ejecutable de create-harness-btp (pnpm dlx)
|
|
143
204
|
├── package.json # name create-harness-btp
|
|
144
|
-
└── VERSION # 0.
|
|
205
|
+
└── VERSION # 0.2.0
|
|
145
206
|
```
|
|
146
207
|
|
|
147
208
|
## Cómo lo descubre el agente
|
|
148
209
|
|
|
149
|
-
1.
|
|
150
|
-
2. El puntero lo lleva a `AI/AGENTS.md`: reglas, herramientas (`
|
|
151
|
-
3. Desde ahí sigue a `AI/INICIO.md` para el flujo por etapas (`/flow`), descubre agentes en `.opencode/`, skills y scripts, y usa `AI/specs/_template.md` para nuevas especificaciones.
|
|
152
|
-
4. Antes del primer despliegue adapta los dos placeholders a tu
|
|
210
|
+
1. Tu cliente agéntico abre el proyecto y lee `AGENTS.md` en la raíz (el puntero que deja el instalador).
|
|
211
|
+
2. El puntero lo lleva a `AI/AGENTS.md`: reglas, herramientas (`cf`, `mbt`) y presupuestos.
|
|
212
|
+
3. Desde ahí sigue a `AI/INICIO.md` para el flujo por etapas (`/flow`), descubre los agentes de ejemplo en `.opencode/`, skills y scripts, y usa `AI/specs/_template.md` para nuevas especificaciones.
|
|
213
|
+
4. Antes del primer despliegue adapta los dos placeholders a tu destino (ver `AI/INICIO.md`).
|
|
153
214
|
|
|
154
215
|
Tú no configuras nada: el agente se adapta solo.
|
|
155
216
|
|
|
@@ -157,17 +218,24 @@ Tú no configuras nada: el agente se adapta solo.
|
|
|
157
218
|
|
|
158
219
|
| Problema | Causa | Comando |
|
|
159
220
|
|---|---|---|
|
|
160
|
-
| `SKIP: AI/ ya existe` y quería actualizar | reinstalación sin
|
|
161
|
-
| Mi `AGENTS.md` propio desapareció | se instaló con
|
|
221
|
+
| `SKIP: AI/ ya existe` y quería actualizar | reinstalación sin fuerza conserva lo existente | repite con `-Force` (`.ps1`) o `--force` (`.sh`); guarda `AI.bak` |
|
|
222
|
+
| Mi `AGENTS.md` propio desapareció | se instaló con fuerza | recupera `AGENTS.md.bak` |
|
|
162
223
|
| Líneas duplicadas en `.gitignore` | edición manual tras la fusión | el instalador fusiona sin duplicar; borra el duplicado a mano |
|
|
163
|
-
| `ExecutionPolicy` bloquea `install.ps1` | política de PowerShell | `powershell -ExecutionPolicy Bypass -File AI-tmp/install.ps1 -Dest .` |
|
|
164
|
-
| `
|
|
224
|
+
| `ExecutionPolicy` bloquea `install.ps1` | política de PowerShell | `powershell -ExecutionPolicy Bypass -File AI-tmp/install.ps1 -Dest .` (o usa `install.sh` en Git Bash) |
|
|
225
|
+
| `ABORT: opción desconocida` en `install.sh` | flag inexistente | `sh install.sh --help` lista `--dest`, `--force` |
|
|
226
|
+
| `degit` falla sin Node | `degit` corre sobre Node 18+ | instala Node o usa `git clone --branch v0.2.0` |
|
|
227
|
+
| Tu cliente no lee los agentes de `.opencode/` | layout específico de OpenCode | son un adapter opcional; el flujo está en `AI/AGENTS.md` + `AI/INICIO.md` |
|
|
165
228
|
|
|
166
229
|
## Compatibilidad
|
|
167
230
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
231
|
+
Matriz honesta cliente × SO (`verificado` = probado con evidencia; `esperado` = sin bloqueo conocido, pendiente de evidencia):
|
|
232
|
+
|
|
233
|
+
| Cliente agéntico | Windows | Linux | macOS |
|
|
234
|
+
|---|---|---|---|
|
|
235
|
+
| OpenCode | verificado | esperado (`install.sh` par verificado en Git Bash) | esperado |
|
|
236
|
+
| Claude Code, otros que lean `AGENTS.md` | esperado | esperado | esperado |
|
|
237
|
+
|
|
238
|
+
- Instaladores y `check-prereqs` / `check-docs` verificados en Windows (`.ps1` nativo, `.sh` vía Git Bash, paridad CREATE/SKIP/BACKUP/OK + mismos `exit`).
|
|
171
239
|
- SAP BTP Cloud Foundry solo cuando el MVP lo pida: el harness no crea cuentas ni espacios por sí solo.
|
|
172
240
|
|
|
173
241
|
## Contribuir
|
|
@@ -182,4 +250,4 @@ MIT. Haz lo que quieras con el harness; sin garantía.
|
|
|
182
250
|
|
|
183
251
|
## Changelog
|
|
184
252
|
|
|
185
|
-
- **v0.
|
|
253
|
+
- **v0.2.0** — versión inicial: carpeta `AI/` parametrizada, instaladores idempotentes `install.ps1` / `install.sh`, `create-harness-btp` vía `pnpm dlx`, plantilla de puntero, docs de flujo / cf-safe / habilitación trial, plantilla de spec.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.2.0
|
package/install.ps1
CHANGED
|
@@ -58,3 +58,9 @@ if (Test-Path $GiDst) {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
Write-Output "OK: harness instalado en $Dest (package.json y mta.yaml intactos)"
|
|
61
|
+
|
|
62
|
+
# Verificación de prerrequisitos en modo aviso (no bloquea la instalación).
|
|
63
|
+
try {
|
|
64
|
+
$Check = Join-Path $AiSrc "scripts\check-prereqs.ps1"
|
|
65
|
+
if (Test-Path $Check) { & $Check -WarnOnly }
|
|
66
|
+
} catch { Write-Output "AVISO: no se pudo ejecutar check-prereqs.ps1 (ver AI/docs/prerequisitos.md)" }
|
package/install.sh
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
# Instalador del harness BTP (idempotente, POSIX sh).
|
|
3
|
-
# Uso: ./install.sh [--dest
|
|
3
|
+
# Uso: ./install.sh [--dest <dir>] [--force] [--help]
|
|
4
4
|
# Sin secretos. No toca package.json ni mta.yaml del proyecto.
|
|
5
5
|
DEST="."
|
|
6
6
|
FORCE=0
|
|
@@ -8,7 +8,13 @@ while [ $# -gt 0 ]; do
|
|
|
8
8
|
case "$1" in
|
|
9
9
|
--dest) DEST="$2"; shift 2 ;;
|
|
10
10
|
--force) FORCE=1; shift ;;
|
|
11
|
-
|
|
11
|
+
-h|--help)
|
|
12
|
+
echo "Uso: ./install.sh [--dest <dir>] [--force] [--help]"
|
|
13
|
+
echo " --dest <dir> proyecto destino (por defecto: .)"
|
|
14
|
+
echo " --force reinstala AI/ con backup a AI.bak"
|
|
15
|
+
echo " -h, --help muestra esta ayuda"
|
|
16
|
+
exit 0 ;;
|
|
17
|
+
*) echo "ABORT: opción desconocida $1 (usa --help)"; exit 1 ;;
|
|
12
18
|
esac
|
|
13
19
|
done
|
|
14
20
|
SRC="$(cd "$(dirname "$0")" && pwd)"
|
|
@@ -46,3 +52,10 @@ if [ "$ADDED" -eq 0 ]; then echo "SKIP: .gitignore ya contiene el fragmento"
|
|
|
46
52
|
else echo "CREATE: .gitignore (+$ADDED líneas)"; fi
|
|
47
53
|
|
|
48
54
|
echo "OK: harness instalado en $DEST (package.json y mta.yaml intactos)"
|
|
55
|
+
|
|
56
|
+
# Verificación de prerrequisitos en modo aviso (no bloquea la instalación).
|
|
57
|
+
if [ -f "$SRC/AI/scripts/check-prereqs.sh" ]; then
|
|
58
|
+
sh "$SRC/AI/scripts/check-prereqs.sh" --warn-only || true
|
|
59
|
+
else
|
|
60
|
+
echo "AVISO: no se encontró check-prereqs.sh (ver AI/docs/prerequisitos.md)"
|
|
61
|
+
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-harness-btp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Instala el harness MVP SAP BTP como carpeta AI/ en cualquier proyecto",
|
|
5
5
|
"keywords": ["sap-btp", "opencode", "harness", "agents", "scaffolder", "create"],
|
|
6
6
|
"homepage": "https://github.com/horangelmillan/harness-btp#readme",
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sap-cf-cli
|
|
3
|
-
description: Uso seguro del CLI de Cloud Foundry como sap_cf en Windows
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# CLI Cloud Foundry (`sap_cf`)
|
|
7
|
-
|
|
8
|
-
En [TU_PC] `cf` es el CLI de **Cloudflare**. Cloud Foundry se invoca
|
|
9
|
-
**siempre** como `sap_cf` (`sap_cf.cmd`, ruta de instalación de
|
|
10
|
-
Cloud Foundry CLI en [TU_PC]; verificado en Windows, adapta rutas).
|
|
11
|
-
|
|
12
|
-
## Lectura segura (sin secretos)
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
sap_cf target # endpoint / org / espacio actuales
|
|
16
|
-
sap_cf api # endpoint y versión API
|
|
17
|
-
sap_cf orgs # solo nombres
|
|
18
|
-
sap_cf spaces # solo nombres
|
|
19
|
-
sap_cf apps # estado observable (started/stopped, rutas)
|
|
20
|
-
sap_cf services # instancias visibles
|
|
21
|
-
sap_cf logs <app> --recent
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
`target`, `api`, `orgs`, `spaces` y `app <nombre>` nunca muestran tokens.
|
|
25
|
-
Si una salida incluyera un secreto, redáctalo antes de citarla.
|
|
26
|
-
|
|
27
|
-
## Mutaciones (solo `deploy-cf`, con destino confirmado)
|
|
28
|
-
|
|
29
|
-
- Confirmar endpoint/org/espacio contra la spec **antes** de cada despliegue.
|
|
30
|
-
- `sap_cf push` para apps simples; `sap_cf deploy <archivo>.mtar` para MTA
|
|
31
|
-
(requiere plugin `multiapps`, no instalado: ver skill `mta-build`).
|
|
32
|
-
- Verificar después: `sap_cf apps` + `sap_cf logs <app> --recent` + URL.
|
|
33
|
-
|
|
34
|
-
## Denylist
|
|
35
|
-
|
|
36
|
-
- `cf ...` para cualquier operación Foundry.
|
|
37
|
-
- Borrar o renombrar orgs, espacios, apps o servicios fuera del MVP.
|
|
38
|
-
- `sap_cf login`/re-autenticaciones no solicitadas (si la sesión caduca,
|
|
39
|
-
pedir al usuario el flujo interactivo, nunca credenciales en texto).
|
|
40
|
-
- `--var`/`--vars-file` con secretos en shell compartida; usar archivos ya
|
|
41
|
-
ignorados por Git y no citar sus valores.
|