# Form: Onboard an existing project into the ontoref protocol
# Drives reflection/modes/adopt_ontoref.ncl with concrete parameter values.
#
# Usage:
#   nickel export reflection/forms/adopt_ontoref.ncl
#   # Fill in values, then run the generated adopt_ontoref.nu script.
#
# Agent query:
#   nickel export reflection/forms/adopt_ontoref.ncl \
#     | get elements \
#     | where type != "section_header" \
#     | where type != "section" \
#     | select name prompt required default

{
  name        = "Adopt Ontoref",
  description = "Onboard an existing project into the ontoref protocol. Adds .ontoref/, .ontology/ stubs, and scripts/ontoref wrapper without overwriting existing files.",

  elements = [

    # ── Identity ─────────────────────────────────────────────────────────────
    { type = "section_header", name = "identity_header",
      title = "Project Identity", border_top = true, border_bottom = true },

    { type = "text", name = "project_name",
      prompt      = "Project name (identifier)",
      required    = true,
      placeholder = "my-service",
      help        = "Lowercase, kebab-case. Used in .ontology/ node IDs and NATS subject prefix." },

    { type = "text", name = "project_dir",
      prompt      = "Absolute path to the existing project",
      required    = true,
      placeholder = "/Users/Akasha/Development/my-service",
      help        = "The directory must exist. Ontoref only adds files — never overwrites." },

    # ── Ontoref location ─────────────────────────────────────────────────────
    { type = "section_header", name = "ontoref_header",
      title = "Ontoref Location", border_top = true, border_bottom = true },

    { type = "text", name = "ontoref_dir",
      prompt   = "Absolute path to ontoref checkout",
      required = true,
      default  = "/Users/Akasha/Development/ontoref",
      help     = "Used to source templates (ontology stubs, config template, scripts wrapper)." },

    # ── What to install ──────────────────────────────────────────────────────
    { type = "section_header", name = "install_header",
      title = "What to Install", border_top = true, border_bottom = true },

    { type = "section", name = "install_note",
      content = "All steps are additive and idempotent. Existing files are never overwritten." },

    { type = "confirm", name = "install_config",
      prompt  = "Create .ontoref/config.ncl (per-project ontoref config)?",
      default = true,
      help    = "Templated from ontoref/templates/ontoref-config.ncl. Controls log, mode_run rules, NATS events." },

    { type = "confirm", name = "install_ontology_stubs",
      prompt  = "Create .ontology/ stubs (core.ncl, state.ncl, gate.ncl)?",
      default = true,
      help    = "Stub files are minimal — project owner fills in project-specific content. Skipped if files exist." },

    { type = "confirm", name = "install_scripts_wrapper",
      prompt  = "Install scripts/ontoref thin wrapper?",
      default = true,
      help    = "Thin bash wrapper that sets ONTOREF_ROOT and ONTOREF_PROJECT_ROOT, then delegates to ontoref entry point." },

    # ── Validation ───────────────────────────────────────────────────────────
    { type = "section_header", name = "validation_header",
      title = "Validation", border_top = true, border_bottom = true },

    { type = "confirm", name = "validate_after",
      prompt  = "Run nickel export on .ontology/ files after installation?",
      default = true,
      help    = "Verifies the stub files parse correctly with nickel." },

    # ── Review ───────────────────────────────────────────────────────────────
    { type = "section_header", name = "review_header",
      title = "Review", border_top = true },

    { type = "section", name = "review_note",
      content = "The generated script will:\n  1. mkdir -p .ontoref/logs .ontoref/locks (idempotent)\n  2. Copy .ontoref/config.ncl from template (if not present)\n  3. Copy .ontology/{core,state,gate}.ncl stubs (if not present)\n  4. Install scripts/ontoref wrapper (if not present)\n  5. Run nickel export on .ontology/ files to validate\n\nFiles already present are NOT overwritten." },

    { type = "confirm", name = "ready_to_generate",
      prompt  = "Generate the adopt script?",
      default = true },
  ],
}
