ostacky 0.7.2 → 0.7.4
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/README.md +25 -14
- package/assets/agents/ostacky.md +548 -501
- package/assets/commands/install-stack.md +2 -2
- package/assets/mcp/ostacky-controller/index.js +1277 -127
- package/assets/mcp/ostacky-controller/package.json +1 -1
- package/assets/mcp/ostacky-controller/security.js +87 -0
- package/assets/plugins/engram.ts +41 -5
- package/assets/plugins/ostacky-guard.ts +212 -0
- package/assets/skills/brainstorming/SKILL.md +198 -197
- package/assets/skills/execution-mode-evaluation/SKILL.md +9 -1
- package/assets/skills/graceful-degradation/SKILL.md +251 -239
- package/assets/skills/using-git-worktrees/SKILL.md +8 -0
- package/dist/cli.js +417 -90
- package/manifest.json +32 -32
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ Después de instalar Ostacky (con `npx ostacky install`), necesitás iniciar Ope
|
|
|
22
22
|
opencode
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
Abre la interfaz de terminal interactiva.
|
|
25
|
+
Abre la interfaz de terminal interactiva. **Para elegir el agente Ostacky: usá `Tab` para navegar entre agentes** en el panel lateral, o escribí `/agent Ostacky` en el chat.
|
|
26
26
|
|
|
27
27
|
### Web UI — para usar desde el navegador
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ Abre la interfaz de terminal interactiva. Seleccioná el agente `@Ostacky` desde
|
|
|
30
30
|
opencode web --port 4096
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
Abre OpenCode en el navegador en `http://localhost:4096`. Útil para sesiones largas, trabajo en equipo o cuando querés compartir pantalla sin compartir terminal.
|
|
33
|
+
Abre OpenCode en el navegador en `http://localhost:4096`. **Para elegir el agente Ostacky: abrí el combo/selector de agentes** en la barra superior y seleccioná "Ostacky". Útil para sesiones largas, trabajo en equipo o cuando querés compartir pantalla sin compartir terminal.
|
|
34
34
|
|
|
35
35
|
Opciones útiles:
|
|
36
36
|
|
|
@@ -221,33 +221,33 @@ Tras instalar, el proyecto queda así:
|
|
|
221
221
|
|
|
222
222
|
```json
|
|
223
223
|
{
|
|
224
|
-
"version": "0.7.
|
|
224
|
+
"version": "0.7.4",
|
|
225
225
|
"lockedAt": "2025-01-01T00:00:00.000Z",
|
|
226
226
|
"repo": "JaimeHoracio/Ostacky",
|
|
227
|
-
"tag": "v0.7.
|
|
227
|
+
"tag": "v0.7.4",
|
|
228
228
|
"agents": {
|
|
229
229
|
"ostacky": {
|
|
230
|
-
"version": "0.7.
|
|
230
|
+
"version": "0.7.4",
|
|
231
231
|
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
232
232
|
"sha256": "abc123..."
|
|
233
233
|
}
|
|
234
234
|
},
|
|
235
235
|
"commands": {
|
|
236
236
|
"install-stack": {
|
|
237
|
-
"version": "0.7.
|
|
237
|
+
"version": "0.7.4",
|
|
238
238
|
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
239
239
|
"sha256": "def456..."
|
|
240
240
|
},
|
|
241
241
|
"opsx-sync": {
|
|
242
|
-
"version": "0.7.
|
|
242
|
+
"version": "0.7.4",
|
|
243
243
|
"installedAt": "2025-01-01T00:00:00.000Z",
|
|
244
244
|
"sha256": "ghi789..."
|
|
245
245
|
}
|
|
246
246
|
},
|
|
247
247
|
"skills": {
|
|
248
|
-
"brainstorming": { "version": "0.7.
|
|
249
|
-
"execution-mode-evaluation": { "version": "0.7.
|
|
250
|
-
"openspec-propose": { "version": "0.7.
|
|
248
|
+
"brainstorming": { "version": "0.7.4", ... },
|
|
249
|
+
"execution-mode-evaluation": { "version": "0.7.4", ... },
|
|
250
|
+
"openspec-propose": { "version": "0.7.4", ... }
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
```
|
|
@@ -259,10 +259,10 @@ Se recomienda agregar `ostacky-lock.json` al control de versiones para que el eq
|
|
|
259
259
|
Al terminar la instalación, el flujo normal es:
|
|
260
260
|
|
|
261
261
|
1. **Iniciar OpenCode** (si no está corriendo):
|
|
262
|
-
- **TUI:** `opencode` en tu terminal
|
|
263
|
-
- **Web:** `opencode web --port 4096` y abrí `http://localhost:4096`
|
|
262
|
+
- **TUI:** `opencode` en tu terminal → **usá `Tab` para navegar al agente Ostacky** en el panel lateral
|
|
263
|
+
- **Web:** `opencode web --port 4096` y abrí `http://localhost:4096` → **abrí el combo/selector de agentes** en la barra superior y elegí "Ostacky"
|
|
264
264
|
2. OpenCode detecta automáticamente los archivos nuevos en `.opencode/` al iniciar, no necesita recarga manual.
|
|
265
|
-
3. Para usar el agente **escribí `@Ostacky`** en el chat de OpenCode (TUI o web) y enviá tu mensaje. También podés seleccionarlo desde el selector de agentes
|
|
265
|
+
3. Para usar el agente **escribí `@Ostacky`** en el chat de OpenCode (TUI o web) y enviá tu mensaje. También podés seleccionarlo desde el selector de agentes (ver arriba cómo).
|
|
266
266
|
|
|
267
267
|
### Regenerar el stack manualmente
|
|
268
268
|
|
|
@@ -277,7 +277,7 @@ Es opcional y solo necesario si algo falló durante la instalación o si querés
|
|
|
277
277
|
## Seguridad
|
|
278
278
|
|
|
279
279
|
- `opencode.jsonc` se versiona en el repo para compartir permisos y MCP de forma reproducible.
|
|
280
|
-
- Las URLs de descarga usan **tags de GitHub** (ej. `v0.7.
|
|
280
|
+
- Las URLs de descarga usan **tags de GitHub** (ej. `v0.7.4`), nunca `main` — instalaciones reproducibles
|
|
281
281
|
- Cada path de archivo descargado es validado para prevenir **path traversal**
|
|
282
282
|
- Los archivos incluyen **checksum SHA-256** opcional; si el manifest lo define, el contenido se verifica antes de escribir
|
|
283
283
|
- El cache local (`.opencode/cache/`) también valida integridad al servir archivos cacheados
|
|
@@ -288,6 +288,17 @@ Es opcional y solo necesario si algo falló durante la instalación o si querés
|
|
|
288
288
|
- La sesión sigue ejecutándose después del bloqueo porque `experimental.continue_loop_on_deny` está activado.
|
|
289
289
|
- Para worktrees, el repo prefiere `.worktrees/` o `worktrees/` (ambos project-local).
|
|
290
290
|
|
|
291
|
+
#### Patrones sensibles configurables (hardening-v2)
|
|
292
|
+
|
|
293
|
+
- Variable `OSTACKY_SENSITIVE_PATTERNS` overridea los patrones por defecto (`**/.env*`, `**/.secrets/**`, `**/*.pem`, `**/*.key`, `**/.aws/**`, `**/.ssh/**`, `**/credentials.json`, `**/.npmrc`).
|
|
294
|
+
- Ejemplo: `OSTACKY_SENSITIVE_PATTERNS="**/.env*,**/.secrets/**" bunx ostacky doctor` — `doctor` imprime el patrón efectivo.
|
|
295
|
+
- Allowlist: `.env.example`, `.env.template`, `.env.sample` nunca se bloquean.
|
|
296
|
+
- Fuente única: `src/security.ts` (`SENSITIVE_DEFAULT`, `isSensitive`, `BASH_SENSITIVE_RE`) — guard y controller usan la misma lógica (ver `doctor` para verificar).
|
|
297
|
+
|
|
298
|
+
#### Aislamiento de worktrees (harness-prod-hardening)
|
|
299
|
+
|
|
300
|
+
Cada worktree de git tiene su **propio** `ostacky-state.json` aislado (resuelto via `findProjectRoot()` con `git rev-parse --show-toplevel`). Dos worktrees no comparten `statePath`, locks ni backups — 3 agentes en 3 worktrees no corrompen el estado del otro. Ver `assets/skills/using-git-worktrees/SKILL.md` §Ostacky Worktree Isolation y `src/fs.ts:findProjectRoot`.
|
|
301
|
+
|
|
291
302
|
## Cache
|
|
292
303
|
|
|
293
304
|
Los archivos descargados se guardan en:
|