version: '3'

vars:
  DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'

tasks:
  validate-structure:
    desc: "Validate authored codeStructure metadata and PR3 discipline rules (#1595)."
    dir: '{{.USER_WORKING_DIR}}'
    # Per conventions/task-caching.md: no sources/generates because this task
    # forwards user-supplied paths and project-root flags via CLI_ARGS.
    deps:
      - task: :engine:_ts-build
    cmds:
      - task: :engine:invoke
        vars:
          ENGINE_CMD: 'code-structure-validate --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'

  extract-default:
    desc: "Emit the dependency-free default codebase-map artifact to stdout (#1595 PR3)."
    dir: '{{.USER_WORKING_DIR}}'
    deps:
      - task: :engine:_ts-build
    cmds:
      - task: :engine:invoke
        vars:
          ENGINE_CMD: 'codebase-default-extractor --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'

  provider-map:
    desc: "Select an external codebase-map provider or fall back to the default artifact (#1595 PR3)."
    dir: '{{.USER_WORKING_DIR}}'
    deps:
      - task: :engine:_ts-build
    cmds:
      - task: :engine:invoke
        vars:
          ENGINE_CMD: 'codebase-provider --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'

  map:
    desc: "Generate .planning/codebase/MAP.md from the selected codebase-map artifact (#1595 PR4)."
    dir: '{{.USER_WORKING_DIR}}'
    deps:
      - task: :engine:_ts-build
    cmds:
      - task: :engine:invoke
        vars:
          ENGINE_CMD: 'codebase-map --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'

  projection-registry:
    desc: "Inspect registered codebase projection kinds (#1595 PR3)."
    dir: '{{.USER_WORKING_DIR}}'
    deps:
      - task: :engine:_ts-build
    cmds:
      - task: :engine:invoke
        vars:
          ENGINE_CMD: 'codebase-projection-registry {{.CLI_ARGS}}'
