← Files note Workspace|ROGNALIAARCHIVED FILE

skills/note-draft/scripts/validate_note_drafts.py

1.64 KB · Oct 2, 2026 · 00:33 UTC

↓ Download file

#!/usr/bin/env python3
"""Validate note draft registration packages, events, and saved results."""

from __future__ import annotations

import argparse
import json
import sys
from typing import Optional

from draft_common import (
    DraftDataError,
    resolve_workspace,
    validate_note_draft_data,
)


def _parser() -> argparse.ArgumentParser:
    parser = argparse.ArgumentParser(description="Validate note draft local state.")
    parser.add_argument("workspace", help="Absolute path to the selected workspace")
    return parser


def main(argv: Optional[list[str]] = None) -> int:
    args = _parser().parse_args(argv)
    try:
        workspace = resolve_workspace(args.workspace)
        errors, counts = validate_note_draft_data(workspace)
        result = {
            "status": "pass" if not errors else "error",
            **counts,
            "errors": errors,
            "external_actions": [],
        }
        print(json.dumps(result, ensure_ascii=False, indent=2, sort_keys=True))
        return 0 if not errors else 2
    except (OSError, UnicodeError, DraftDataError, json.JSONDecodeError) as exc:
        print(
            json.dumps(
                {
                    "status": "error",
                    "registration_count": 0,
                    "started_count": 0,
                    "saved_count": 0,
                    "pending_count": 0,
                    "errors": [str(exc)],
                    "external_actions": [],
                },
                ensure_ascii=False,
                indent=2,
                sort_keys=True,
            )
        )
        return 2


if __name__ == "__main__":
    raise SystemExit(main())

SHA-256: effc97001c8c9e64b2ee37f873395d600b57593697ade61f740dbf195476868b