diff --git a/cli.py b/cli.py index d1026bf..3229f8d 100644 --- a/cli.py +++ b/cli.py @@ -1,6 +1,7 @@ """Simbiot Harness — CLI: таски, статус, ручные тики.""" import argparse import json +import re import sys import os @@ -199,6 +200,21 @@ def main(): print(f"{t['id']} [{t['size']:2}] {t['status']:7} {t['title'][:70]}") elif not args.title: p_task.print_help() + elif re.fullmatch(r"t-\d{6,14}-\w+", (args.title or "").strip()): + # e-261004134613-dda90f: title=ID существующей задачи → показать её, + # а не плодить клон (агент звал 'cli.py task t-...' для чтения) + es.init_db() + model = es.run_projections() + tid = args.title.strip() + t = (model.get("tasks") or {}).get(tid) + if t is None: + print(f"ERROR: задача {tid} не найдена — чтение по id, создание клона запрещено", + file=sys.stderr) + sys.exit(2) + print(f"{t['id']} [{t['size']:2}] {t['status']:7} {t.get('title','')}") + print(f" est: {t.get('est_minutes','?')}м создана: {t.get('ts','?')}") + if t.get("details"): + print(f" детали: {t['details']}") else: tid, size = commands.submit_task(args.title, args.details, args.minutes) if args.await_delivery: