Extract CLI operating loop parser
This commit is contained in:
+2
-271
@@ -5,6 +5,7 @@ import argparse
|
||||
from collections.abc import Callable
|
||||
|
||||
from yao_cli_parser_evidence import add_evidence_commands
|
||||
from yao_cli_parser_operations import add_operating_loop_commands
|
||||
|
||||
|
||||
SCRIPT_INTERFACE = "internal-module"
|
||||
@@ -298,277 +299,7 @@ def build_parser(command_handlers: dict[str, Callable[[argparse.Namespace], int]
|
||||
feedback_cmd.add_argument("--recommended-action", default="review")
|
||||
feedback_cmd.set_defaults(func=_handler(command_handlers, "command_feedback"))
|
||||
|
||||
adapt_scan_cmd = subparsers.add_parser(
|
||||
"adapt-scan",
|
||||
help="Scan one explicit local source file for redacted repeated user preference signals.",
|
||||
)
|
||||
adapt_scan_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
adapt_scan_cmd.add_argument("--source", required=True)
|
||||
adapt_scan_cmd.add_argument("--output-json")
|
||||
adapt_scan_cmd.add_argument("--output-md")
|
||||
adapt_scan_cmd.add_argument("--min-support", type=int, default=2)
|
||||
adapt_scan_cmd.add_argument("--generated-at")
|
||||
adapt_scan_cmd.add_argument("--allow-history-source", action="store_true")
|
||||
adapt_scan_cmd.set_defaults(func=_handler(command_handlers, "command_adapt_scan"))
|
||||
|
||||
adapt_propose_cmd = subparsers.add_parser(
|
||||
"adapt-propose",
|
||||
help="Create proposal-only adaptation plans from redacted repeated preference patterns.",
|
||||
)
|
||||
adapt_propose_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
adapt_propose_cmd.add_argument("--patterns-json")
|
||||
adapt_propose_cmd.add_argument("--output-json")
|
||||
adapt_propose_cmd.add_argument("--output-md")
|
||||
adapt_propose_cmd.add_argument("--generated-at")
|
||||
adapt_propose_cmd.set_defaults(func=_handler(command_handlers, "command_adapt_propose"))
|
||||
|
||||
adapt_apply_cmd = subparsers.add_parser(
|
||||
"adapt-apply",
|
||||
help="Dry-run or apply an approved adaptation patch with allowlist, regression, and rollback evidence.",
|
||||
)
|
||||
adapt_apply_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
adapt_apply_cmd.add_argument("--proposal-id")
|
||||
adapt_apply_cmd.add_argument("--patch-file")
|
||||
adapt_apply_cmd.add_argument("--proposals-json")
|
||||
adapt_apply_cmd.add_argument("--approval-ledger")
|
||||
adapt_apply_cmd.add_argument("--output-json")
|
||||
adapt_apply_cmd.add_argument("--output-md")
|
||||
adapt_apply_cmd.add_argument("--generated-at")
|
||||
adapt_apply_cmd.add_argument("--today")
|
||||
adapt_apply_cmd.add_argument("--write-template", action="store_true")
|
||||
adapt_apply_cmd.add_argument("--prepare-approval", action="store_true")
|
||||
adapt_apply_cmd.add_argument("--apply", action="store_true")
|
||||
adapt_apply_cmd.add_argument("--run-verification", action="store_true")
|
||||
adapt_apply_cmd.add_argument(
|
||||
"--no-rollback-on-failure",
|
||||
dest="rollback_on_failure",
|
||||
action="store_false",
|
||||
help="Leave an applied patch in place if verification fails. Default is to reverse the patch.",
|
||||
)
|
||||
adapt_apply_cmd.set_defaults(rollback_on_failure=True)
|
||||
adapt_apply_cmd.set_defaults(func=_handler(command_handlers, "command_adapt_apply"))
|
||||
|
||||
daily_skillops_cmd = subparsers.add_parser(
|
||||
"daily-skillops",
|
||||
help="Render a Daily SkillOps report from explicit-source adaptive evidence without scanning private logs or applying patches.",
|
||||
)
|
||||
daily_skillops_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
daily_skillops_cmd.add_argument("--source")
|
||||
daily_skillops_cmd.add_argument("--patterns-json", default="reports/user_patterns.json")
|
||||
daily_skillops_cmd.add_argument("--proposals-json", default="reports/adaptation_proposals.json")
|
||||
daily_skillops_cmd.add_argument("--output-json")
|
||||
daily_skillops_cmd.add_argument("--output-md")
|
||||
daily_skillops_cmd.add_argument("--min-support", type=int, default=2)
|
||||
daily_skillops_cmd.add_argument("--generated-at")
|
||||
daily_skillops_cmd.add_argument("--allow-history-source", action="store_true")
|
||||
daily_skillops_cmd.add_argument("--no-refresh-source-reports", action="store_true")
|
||||
daily_skillops_cmd.set_defaults(func=_handler(command_handlers, "command_daily_skillops"))
|
||||
|
||||
weekly_curator_cmd = subparsers.add_parser(
|
||||
"weekly-curator",
|
||||
help="Render a weekly SkillOps curator report from generated daily reports and portfolio evidence.",
|
||||
)
|
||||
weekly_curator_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
weekly_curator_cmd.add_argument("--daily-json", action="append", default=[])
|
||||
weekly_curator_cmd.add_argument("--output-json")
|
||||
weekly_curator_cmd.add_argument("--output-md")
|
||||
weekly_curator_cmd.add_argument("--generated-at")
|
||||
weekly_curator_cmd.set_defaults(func=_handler(command_handlers, "command_weekly_curator"))
|
||||
|
||||
adoption_drift_cmd = subparsers.add_parser(
|
||||
"adoption-drift",
|
||||
help="Render local-first metadata-only adoption and drift telemetry for a skill package.",
|
||||
)
|
||||
adoption_drift_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
adoption_drift_cmd.add_argument("--events-jsonl")
|
||||
adoption_drift_cmd.add_argument("--output-json")
|
||||
adoption_drift_cmd.add_argument("--output-md")
|
||||
adoption_drift_cmd.add_argument("--generated-at")
|
||||
adoption_drift_cmd.add_argument(
|
||||
"--record-event",
|
||||
choices=["review_event", "script_run", "skill_activation", "skill_output"],
|
||||
)
|
||||
adoption_drift_cmd.add_argument(
|
||||
"--activation-type",
|
||||
choices=["explicit", "implicit", "manual", "unknown"],
|
||||
default="unknown",
|
||||
)
|
||||
adoption_drift_cmd.add_argument(
|
||||
"--outcome",
|
||||
choices=["accepted", "edited", "failed", "missed", "rejected", "reviewed", "unknown"],
|
||||
default="unknown",
|
||||
)
|
||||
adoption_drift_cmd.add_argument(
|
||||
"--failure-type",
|
||||
choices=[
|
||||
"bad_output",
|
||||
"missing_resource",
|
||||
"none",
|
||||
"review_overdue",
|
||||
"script_error",
|
||||
"under_trigger",
|
||||
"wrong_trigger",
|
||||
],
|
||||
default="none",
|
||||
)
|
||||
adoption_drift_cmd.add_argument("--source", choices=["external", "manual", "unknown", "yao_cli"], default="manual")
|
||||
adoption_drift_cmd.add_argument("--command", dest="telemetry_command", default="unknown")
|
||||
adoption_drift_cmd.add_argument("--timestamp")
|
||||
adoption_drift_cmd.add_argument("--skill-name")
|
||||
adoption_drift_cmd.add_argument("--version")
|
||||
adoption_drift_cmd.set_defaults(func=_handler(command_handlers, "command_adoption_drift"))
|
||||
|
||||
telemetry_import_cmd = subparsers.add_parser(
|
||||
"telemetry-import",
|
||||
help="Import external metadata-only telemetry JSONL and refresh the adoption drift report.",
|
||||
)
|
||||
telemetry_import_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
telemetry_import_cmd.add_argument("--input-jsonl", required=True)
|
||||
telemetry_import_cmd.add_argument("--events-jsonl")
|
||||
telemetry_import_cmd.add_argument("--output-json")
|
||||
telemetry_import_cmd.add_argument("--output-md")
|
||||
telemetry_import_cmd.add_argument("--generated-at")
|
||||
telemetry_import_cmd.add_argument("--source", choices=["external", "manual", "unknown", "yao_cli"], default="external")
|
||||
telemetry_import_cmd.add_argument("--command", dest="telemetry_command", default="external-client")
|
||||
telemetry_import_cmd.add_argument("--dry-run", action="store_true")
|
||||
telemetry_import_cmd.set_defaults(func=_handler(command_handlers, "command_telemetry_import"))
|
||||
|
||||
telemetry_emit_cmd = subparsers.add_parser(
|
||||
"telemetry-emit",
|
||||
help="Emit one metadata-only telemetry event for later import.",
|
||||
)
|
||||
telemetry_emit_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
telemetry_emit_cmd.add_argument("--output-jsonl")
|
||||
telemetry_emit_cmd.add_argument(
|
||||
"--event",
|
||||
choices=["review_event", "script_run", "skill_activation", "skill_output"],
|
||||
default="script_run",
|
||||
)
|
||||
telemetry_emit_cmd.add_argument(
|
||||
"--activation-type",
|
||||
choices=["explicit", "implicit", "manual", "unknown"],
|
||||
default="manual",
|
||||
)
|
||||
telemetry_emit_cmd.add_argument(
|
||||
"--outcome",
|
||||
choices=["accepted", "edited", "failed", "missed", "rejected", "reviewed", "unknown"],
|
||||
default="unknown",
|
||||
)
|
||||
telemetry_emit_cmd.add_argument(
|
||||
"--failure-type",
|
||||
choices=[
|
||||
"bad_output",
|
||||
"missing_resource",
|
||||
"none",
|
||||
"review_overdue",
|
||||
"script_error",
|
||||
"under_trigger",
|
||||
"wrong_trigger",
|
||||
],
|
||||
default="none",
|
||||
)
|
||||
telemetry_emit_cmd.add_argument("--source", choices=["external", "manual", "unknown", "yao_cli"], default="external")
|
||||
telemetry_emit_cmd.add_argument("--command", dest="telemetry_command", default="external-client")
|
||||
telemetry_emit_cmd.add_argument("--timestamp")
|
||||
telemetry_emit_cmd.add_argument("--skill-name")
|
||||
telemetry_emit_cmd.add_argument("--version")
|
||||
telemetry_emit_cmd.add_argument("--dry-run", action="store_true")
|
||||
telemetry_emit_cmd.set_defaults(func=_handler(command_handlers, "command_telemetry_emit"))
|
||||
|
||||
telemetry_hooks_cmd = subparsers.add_parser(
|
||||
"telemetry-hooks",
|
||||
help="Render metadata-only telemetry client hook recipes.",
|
||||
)
|
||||
telemetry_hooks_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
telemetry_hooks_cmd.add_argument("--output-json")
|
||||
telemetry_hooks_cmd.add_argument("--output-md")
|
||||
telemetry_hooks_cmd.add_argument("--output-jsonl")
|
||||
telemetry_hooks_cmd.set_defaults(func=_handler(command_handlers, "command_telemetry_hooks"))
|
||||
|
||||
review_waivers_cmd = subparsers.add_parser(
|
||||
"review-waivers",
|
||||
help="Render or update human reviewer waiver evidence for Review Studio.",
|
||||
)
|
||||
review_waivers_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
review_waivers_cmd.add_argument("--waivers-json")
|
||||
review_waivers_cmd.add_argument("--output-json")
|
||||
review_waivers_cmd.add_argument("--output-md")
|
||||
review_waivers_cmd.add_argument("--generated-at")
|
||||
review_waivers_cmd.add_argument("--add-waiver", action="store_true")
|
||||
review_waivers_cmd.add_argument(
|
||||
"--gate-key",
|
||||
choices=[
|
||||
"architecture-maintainability",
|
||||
"context-budget",
|
||||
"intent-canvas",
|
||||
"operations-loop",
|
||||
"output-lab",
|
||||
"python-compat",
|
||||
"registry-audit",
|
||||
"release-notes",
|
||||
"runtime-matrix",
|
||||
"skill-atlas",
|
||||
"trigger-lab",
|
||||
"trust-report",
|
||||
"permission-gates",
|
||||
"permission-runtime",
|
||||
],
|
||||
)
|
||||
review_waivers_cmd.add_argument(
|
||||
"--decision",
|
||||
choices=["accepted-risk", "false-positive", "temporary-exception"],
|
||||
default="accepted-risk",
|
||||
)
|
||||
review_waivers_cmd.add_argument("--reviewer")
|
||||
review_waivers_cmd.add_argument("--reason")
|
||||
review_waivers_cmd.add_argument("--expires-at")
|
||||
review_waivers_cmd.add_argument("--created-at")
|
||||
review_waivers_cmd.add_argument("--evidence")
|
||||
review_waivers_cmd.add_argument("--scope", default="current-release")
|
||||
review_waivers_cmd.set_defaults(func=_handler(command_handlers, "command_review_waivers"))
|
||||
|
||||
review_annotations_cmd = subparsers.add_parser(
|
||||
"review-annotations",
|
||||
help="Render or update inline reviewer annotations for Review Studio gates and source paths.",
|
||||
)
|
||||
review_annotations_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
review_annotations_cmd.add_argument("--annotations-json")
|
||||
review_annotations_cmd.add_argument("--output-json")
|
||||
review_annotations_cmd.add_argument("--output-md")
|
||||
review_annotations_cmd.add_argument("--write-template", action="store_true")
|
||||
review_annotations_cmd.add_argument("--add-annotation", action="store_true")
|
||||
review_annotations_cmd.add_argument("--annotation-id")
|
||||
review_annotations_cmd.add_argument(
|
||||
"--gate-key",
|
||||
choices=[
|
||||
"architecture-maintainability",
|
||||
"context-budget",
|
||||
"intent-canvas",
|
||||
"operations-loop",
|
||||
"output-lab",
|
||||
"python-compat",
|
||||
"registry-audit",
|
||||
"release-notes",
|
||||
"review-waivers",
|
||||
"runtime-matrix",
|
||||
"skill-atlas",
|
||||
"trigger-lab",
|
||||
"trust-report",
|
||||
"world-class-evidence",
|
||||
"permission-gates",
|
||||
"permission-runtime",
|
||||
],
|
||||
)
|
||||
review_annotations_cmd.add_argument("--target-path")
|
||||
review_annotations_cmd.add_argument("--line", type=int)
|
||||
review_annotations_cmd.add_argument("--severity", choices=["blocker", "info", "note", "warning"], default="note")
|
||||
review_annotations_cmd.add_argument("--status", choices=["deferred", "open", "resolved"], default="open")
|
||||
review_annotations_cmd.add_argument("--reviewer")
|
||||
review_annotations_cmd.add_argument("--created-at")
|
||||
review_annotations_cmd.add_argument("--body")
|
||||
review_annotations_cmd.add_argument("--suggested-action")
|
||||
review_annotations_cmd.add_argument("--evidence")
|
||||
review_annotations_cmd.set_defaults(func=_handler(command_handlers, "command_review_annotations"))
|
||||
add_operating_loop_commands(subparsers, command_handlers)
|
||||
|
||||
baseline_compare_cmd = subparsers.add_parser(
|
||||
"baseline-compare",
|
||||
|
||||
Reference in New Issue
Block a user