ostacky 0.7.4 → 0.8.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/README.md +17 -19
- package/assets/agents/ostacky.md +45 -512
- package/assets/commands/install-stack.md +2 -2
- package/assets/docs/engram-protocol.md +79 -0
- package/assets/docs/ostacky-reference.md +79 -0
- package/assets/mcp/ostacky-controller/index.js +169 -69
- package/assets/mcp/ostacky-controller/package.json +1 -1
- package/assets/plugins/engram.ts +47 -79
- package/assets/plugins/ostacky-guard.ts +11 -205
- package/assets/plugins/ostacky-plugin.ts +646 -0
- package/assets/skills/brainstorming/SKILL.md +14 -14
- package/assets/skills/execution-mode-evaluation/SKILL.md +9 -9
- package/dist/cli.js +233 -83
- package/manifest.json +30 -30
- package/package.json +1 -1
|
@@ -36,29 +36,29 @@ Do NOT invoke any implementation skill, write any code, or scaffold any project
|
|
|
36
36
|
|
|
37
37
|
### Process
|
|
38
38
|
|
|
39
|
-
1. **Check
|
|
40
|
-
2. **
|
|
41
|
-
3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
|
|
39
|
+
1. **Check discovery-cache first** — `src/discovery-cache.ts` `getDiscoverySnapshot(query)` + `getEngramDedup(query, requestId)`. Si hit válido (TTL+gitDiffHash), **reusar** sin llamar tools. Solo si miss → `engram_mem_search` + `codegraph_codegraph_explore` y **SHALL `putDiscoverySnapshot`** antes de avanzar. No re-llamar si área difiere <30% del snapshot.
|
|
40
|
+
2. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
|
|
42
41
|
4. **Propose 2-3 approaches (hardening-v2 — SHALL)** — con tabla trade-offs (coste|riesgo|complejidad) + evidencia CodeGraph+Engram (+Context7 si librería) sin alucinar, YAGNI, y recomendación con razón; cada approach cita symbols existentes y mem_search hits verificables
|
|
43
42
|
5. **Present design** — in sections scaled to complexity, get user approval after each section. **Gate post-brainstorming (hardening-v2):** tras presentar diseño, preguntar "¿Procedo con este diseño o querés ajustar algo?" y esperar confirmación explícita antes de `record_discovery`, `openspec-propose` o implementación directa
|
|
44
|
-
6. **Write design doc
|
|
43
|
+
6. **Write design doc (output path condicional — router exclusivo):**
|
|
44
|
+
- Si trigger + `level 1+` no-downgradeable (`estLines>30` o `fileCount>2` o API pública) y change activo → escribir `openspec/changes/<id>/design.md` sección `## Alternatives Considered` con 2-3 approaches (tabla coste|riesgo|complejidad + evidencia CodeGraph+Engram), no `docs/`. No invocar `openspec-propose` separado — este es el diseño.
|
|
45
|
+
- Si trigger + `0/0+1` o `1+` downgradeable (`estLines<30`&&`fileCount==1`&&sin API) → solo `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` + gate único `¿Procedo?` → DIRECT sin change. SHALL sugerir downgrade: `"Esto parece 0+1 (~X líneas, 1 archivo). ¿Lo tratamos sin spec?"` y esperar.
|
|
46
|
+
- Gate post-brainstorming es **único**; no hay segundo `¿Procedo con spec?`. `get_audit` `WARN:duplicate_design_generated` si ambos artefactos mismo `requestId`.
|
|
45
47
|
7. **Spec self-review** — check for placeholders, contradictions, ambiguity, scope
|
|
46
48
|
8. **User reviews spec** — ask user to review before proceeding
|
|
47
49
|
9. **Save to Engram** — `engram_mem_save` with the design decision and tradeoffs
|
|
48
50
|
10. **Transition** — based on routing decision (see Transition Rules below)
|
|
49
51
|
|
|
50
|
-
### Transition Rules
|
|
52
|
+
### Transition Rules (router exclusivo — reemplaza SHALL secuencial)
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
| Trigger + Nivel | Output path | Next Step | Gate |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| `mejor forma\|tradeoff\|...` + `1+` no-downgradeable | `openspec/changes/<id>/design.md` `## Alternatives` | Fin brainstorming → `spec_complete` vía change | Único `¿Procedo?` |
|
|
57
|
+
| `mejor forma\|tradeoff\|...` + `0/0+1` o `1+` downgradeable | `docs/superpowers/specs/...` solo | DIRECT | Único `¿Procedo?` + sugerencia downgrade explícita |
|
|
58
|
+
| Sin trigger + claros | — | `openspec-propose` directo (no brainstorming) | — |
|
|
59
|
+
| Sin trigger + vagos | — | Pregunta `¿brainstorming o spec?` | — |
|
|
53
60
|
|
|
54
|
-
|
|
55
|
-
|---------|-----------|------|
|
|
56
|
-
| **DIRECT** (Level 0/0+1) | **Implementación directa** (con gate de confirmación del usuario) | Small changes, no OpenSpec |
|
|
57
|
-
| **SPEC** (Level 1+) | `openspec-propose` | Complex changes requiring OpenSpec artifacts |
|
|
58
|
-
|
|
59
|
-
If you're unsure about routing, ask Ostacky or check the controller state.
|
|
60
|
-
|
|
61
|
-
**Terminal state:** For DIRECT, present the design and get user approval before proceeding to implementation. For SPEC, invoke `openspec-propose`. Do NOT invoke implementation skills directly.
|
|
61
|
+
`WARN:skipped_brainstorming` solo si trigger presente y se omite sin downgrade. `WARN:duplicate_design_generated` si ambos paths mismo `requestId`.
|
|
62
62
|
|
|
63
63
|
### Design Principles
|
|
64
64
|
|
|
@@ -25,13 +25,13 @@ Determinar el modo de ejecución óptimo entre **inline** y **subagent-driven**
|
|
|
25
25
|
|
|
26
26
|
## Procedimiento
|
|
27
27
|
|
|
28
|
-
### Paso 0: Verificar
|
|
28
|
+
### Paso 0: Verificar discovery-cache primero (ÚNICO entrypoint)
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
**SHALL** llamar `src/discovery-cache.ts` `getDiscoverySnapshot(query)` y `getEngramDedup(query, requestId)` antes de cualquier `codegraph_codegraph_explore` o `engram_mem_search`. Si hit válido (TTL+gitDiffHash) → **reusar** `codegraph+engramHits` para construir `sharedFiles/fileClusters`; solo `codegraph_impact` para símbolos no cubiertos. Si miss o área difiere >30% → fetch fresco y `putDiscoverySnapshot`. Segunda llamada misma query en mismo `requestId` SHALL ser dedup (no `redundantCallCount`).
|
|
31
31
|
|
|
32
|
-
### Paso 0.1: Consultar Engram por decisiones previas
|
|
32
|
+
### Paso 0.1: Consultar Engram por decisiones previas (solo si no hay dedup hit)
|
|
33
33
|
|
|
34
|
-
`engram_mem_search` con keywords del cambio
|
|
34
|
+
Si `getEngramDedup` fue miss, `engram_mem_search` con keywords del cambio. Si existe decisión previa, usar como referencia no vinculante.
|
|
35
35
|
|
|
36
36
|
### Paso 0.5: Early exit para cambios pequeños
|
|
37
37
|
|
|
@@ -48,14 +48,14 @@ Si el change tiene **≤2 tasks** Y **no comparten archivos entre sí** → devo
|
|
|
48
48
|
}
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
### Paso 1: Obtener datos de CodeGraph
|
|
51
|
+
### Paso 1: Obtener datos de CodeGraph (solo si discovery-cache miss)
|
|
52
52
|
|
|
53
|
+
Si Paso 0 fue hit → **SKIP este paso**, derivar `fileClusters/sharedFiles` del snapshot (`state.snapshots.codegraph` + `tasks.md`). Snapshot resultante SHALL usar `codegraphUsed:["discovery-cache"]` (válido, no genera `WARN:execution_without_codegraph` si `snapshots.codegraph` existe) y `reuseDiscovery:true`.
|
|
54
|
+
Si miss:
|
|
53
55
|
```
|
|
54
56
|
codegraph_codegraph_explore con query: "<área del cambio>"
|
|
55
57
|
```
|
|
56
|
-
|
|
57
|
-
Si el output es muy general → `codegraph_impact` sobre símbolos centrales para blast radius preciso.
|
|
58
|
-
Si CodeGraph no está inicializado → devolver `{ "recommendation": "INLINE", "confidence": 0.3, "reasons": ["CodeGraph no disponible"], "codegraphUsed": [] }`.
|
|
58
|
+
Si muy general → `codegraph_impact` para blast radius. Si CodeGraph no inicializado → `{ "recommendation": "INLINE", "confidence": 0.3, "reasons": ["CodeGraph no disponible"], "codegraphUsed": [] }`.
|
|
59
59
|
|
|
60
60
|
### Paso 2: Construir mapa de dependencias
|
|
61
61
|
|
|
@@ -174,7 +174,7 @@ Para cada fase de `tasks.md`, evaluar intra-fase:
|
|
|
174
174
|
| `expectedTaskIds` | **Obligatorio** cuando `taskCount>0` — gate del controller |
|
|
175
175
|
| `taskCount` | Total tasks, debe coincidir con `expectedTaskIds.length` |
|
|
176
176
|
|
|
177
|
-
**⚠️ Este skill provee ANÁLISIS, no autorización
|
|
177
|
+
**⚠️ Este skill provee ANÁLISIS, no autorización. Gate ANTES de persistir:** SHALL correr **en memoria primero**, derivar snapshot y **mostrar al usuario** `"Recomendación: INLINE/SUBAGENT por [razón], ~X líneas, clusters [...] ¿Procedo con este plan?"` y esperar. Solo si responde sí → `record_execution_analysis({snapshot, reuseDiscovery:true})` → `EXECUTION_DECISION_PENDING` → `consume_execution_decision`. Si responde no → `block({reason:"usuario rechazó plan"})` sin persistir. Si re-llamó `codegraph_explore` pudiendo reusar → `WARN:redundant_codegraph_call`.
|
|
178
178
|
|
|
179
179
|
## Ejemplo compacto
|
|
180
180
|
|