// tools/create-spec-hu/ai-native-hu-adapter.ts — SPEC-056
// Builds AI-Native Architecture criteria for HU.md:
// latency budget, fallback chain, prompt versioning, observability, cost governance.
/**
 * Build AI-native architecture section for HU.md.
 * Emits criteria for latency, fallback, prompt versioning, observability
 * and cost governance when the project is AI-native.
 * Returns empty array for AI-bolted-on or non-AI projects.
 */
export function buildAiNativeHuSection(knowledge) {
    if (!knowledge) {
        return [];
    }
    const detection = knowledge.aiNativeDetection;
    if (!detection?.isAiNative) {
        return [];
    }
    const lines = ['', '## AI-Native Architecture Requirements', ''];
    // S5: Latency budget
    lines.push('### Latency Budget', '', '- [ ] P99 < 2s para llamadas LLM en flujo sincrono, P99 < 30s para flujos async con streaming habilitado', '- [ ] El sistema mide y reporta latencia por modelo y por endpoint en dashboard de observabilidad', '');
    // S6: Fallback chain
    lines.push('### Fallback Chain', '', '- [ ] Si LLM primario falla o excede timeout -> fallback a modelo secundario -> fallback a respuesta cached/rule-based', '- [ ] Cada nivel de fallback tiene metricas independientes (count, latency, success rate)', '- [ ] El fallback chain es configurable sin re-deploy (feature flags o config file)', '');
    // S7: Prompt versioning
    lines.push('### Prompt Versioning', '', '- [ ] Prompts almacenados con version semantica (major.minor.patch)', '- [ ] Cambios en prompts deprecan versiones anteriores con migration path documentado', '- [ ] Historial de versiones de prompts accesible para rollback en produccion', '');
    // S8: Observability
    lines.push('### Inference Observability', '', '- [ ] Cada request LLM registra: token count (input/output), latency P50/P99, cost estimado, model version, prompt version', '- [ ] Dashboard de metricas de inferencia disponible para el equipo de desarrollo', '');
    // S15: Cost governance
    lines.push('### Cost Governance', '', '- [ ] LLM spend tiene limite mensual configurado + alertas al 80% del presupuesto', '- [ ] Cost per request se registra en metricas y es consultable por endpoint/feature', '- [ ] Alertas de anomalia cuando el costo por request supera 2x el promedio historico', '');
    // Agentic patterns criteria (S14)
    if (detection.agenticPatterns.length > 0) {
        lines.push('### Agentic Patterns', '', `- Patrones detectados: ${detection.agenticPatterns.join(', ')}`, '- [ ] Cada agente tiene un scope de permisos maximo documentado', '- [ ] Los loops de agentes tienen un max-iterations configurable para prevenir runaway execution', '');
    }
    // Memory patterns criteria (S13)
    if (detection.memoryPatterns.length > 0) {
        lines.push('### Memory Management', '', `- Patrones detectados: ${detection.memoryPatterns.join(', ')}`, '- [ ] La politica de retencion de memoria esta documentada (TTL, max entries, eviction strategy)', '');
    }
    // Multi-modal criteria (S16)
    if (detection.isMultiModal) {
        lines.push('### Multi-Modal Input Handling', '', '- [ ] Cada tipo de input (vision, audio, documents) tiene validacion de formato y tamano maximo', '- [ ] Los pipelines multi-modal tienen timeout independiente por modalidad', '');
    }
    return lines;
}
//# sourceMappingURL=ai-native-hu-adapter.js.map