#!/usr/bin/env node
/**
 * Recommended-node resolver for direct episodes.
 * Pure — read-only, no exec, no fs (Security Guidance #40).
 *
 * For an episode classified as `taskClassification` with node_chosen='direct',
 * return the first live (non-dormant) recommended node ID from the
 * classification map. Mirrors missed-activations.mjs dormancy logic:
 * dormancy[id] === false strictly (missing/true → not live).
 *
 * Per spec: docs/superpowers/specs/2026-05-23-observer-parser-skill-hook-expand-design.md
 */

export function recommendNode(taskClassification, classificationMap, dormancy) {
  if (!taskClassification || !classificationMap || !dormancy) return null;
  const recommended = classificationMap[taskClassification];
  if (!Array.isArray(recommended) || recommended.length === 0) return null;
  for (const id of recommended) {
    if (dormancy[id] === false) return id;
  }
  return null;
}
