@@ -1042,6 +1042,25 @@ def _cmd_contract(args: argparse.Namespace) -> int:
10421042 benefitable = args .benefitable ,
10431043 settings = settings ,
10441044 ))
1045+ elif action == "edit" :
1046+ tags = _parse_tags (args .tags ) if getattr (args , "tags" , None ) else None
1047+ settings : dict [str , Any ] | None = (
1048+ {"tags" : tags } if tags else None
1049+ )
1050+ _contract_dump (cli .propose (
1051+ args .eid ,
1052+ status_id = args .status ,
1053+ label = args .label ,
1054+ description = args .desc ,
1055+ start = args .start ,
1056+ end = args .end ,
1057+ date = args .date ,
1058+ duration = args .duration ,
1059+ amount = args .amount ,
1060+ currency = args .currency ,
1061+ benefitable = args .benefitable ,
1062+ settings = settings ,
1063+ ))
10451064 elif action == "progress" :
10461065 _contract_dump (cli .progress (
10471066 args .eid ,
@@ -1119,40 +1138,6 @@ def _cmd_timelog(args: argparse.Namespace) -> int:
11191138 return 0
11201139
11211140
1122- def _cmd_edit (args : argparse .Namespace ) -> int :
1123- """Semantic sugar: ``ceki edit`` ≡ ``ceki contract propose``.
1124-
1125- Same wire call, same args, different name — lets AI agents express
1126- "edit the task" intent instead of "propose a correction".
1127- """
1128- from .contract import ContractError
1129-
1130- try :
1131- with _contract_client () as cli :
1132- tags = _parse_tags (args .tags ) if getattr (args , "tags" , None ) else None
1133- settings : dict [str , Any ] | None = (
1134- {"tags" : tags } if tags else None
1135- )
1136- _contract_dump (cli .propose (
1137- args .eid ,
1138- status_id = args .status ,
1139- label = args .label ,
1140- description = args .desc ,
1141- start = args .start ,
1142- end = args .end ,
1143- date = args .date ,
1144- duration = args .duration ,
1145- amount = args .amount ,
1146- currency = args .currency ,
1147- benefitable = args .benefitable ,
1148- settings = settings ,
1149- ))
1150- except ContractError as e :
1151- _err (str (e ), "contract" )
1152- return 1
1153- return 0
1154-
1155-
11561141async def _cmd_cdp (args : argparse .Namespace ) -> None :
11571142 # Try daemon IPC
11581143 params = json .loads (args .params ) if args .params else {}
@@ -1462,6 +1447,27 @@ def build_parser() -> argparse.ArgumentParser:
14621447 ),
14631448 )
14641449
1450+ p_edit = csub .add_parser ("edit" , help = "Edit task (semantic sugar for propose)" )
1451+ p_edit .add_argument ("eid" , type = int )
1452+ p_edit .add_argument ("--status" , type = int )
1453+ p_edit .add_argument ("--label" )
1454+ p_edit .add_argument ("--desc" )
1455+ p_edit .add_argument ("--start" )
1456+ p_edit .add_argument ("--end" )
1457+ p_edit .add_argument ("--date" )
1458+ p_edit .add_argument ("--duration" , type = int )
1459+ p_edit .add_argument ("--amount" , type = int )
1460+ p_edit .add_argument ("--currency" )
1461+ p_edit .add_argument ("--benefitable" )
1462+ p_edit .add_argument (
1463+ "--tags" ,
1464+ help = (
1465+ "Project tags (sugar for settings.tags[]). Comma-separated, each "
1466+ "item key[:label[:color]]. E.g. 'backend,urgent' or "
1467+ "'backend:Backend:#ff0000'."
1468+ ),
1469+ )
1470+
14651471 p_cpr = csub .add_parser (
14661472 "progress" ,
14671473 help = "Status correction + progress comment (description is not touched)" ,
@@ -1522,28 +1528,6 @@ def build_parser() -> argparse.ArgumentParser:
15221528 )
15231529 p_tlc .add_argument ("event_id" , type = int , help = "Event ID" )
15241530
1525- # ── edit subcommand (semantic sugar over contract propose) ────────
1526- p_edit = sub .add_parser ("edit" , help = "Propose a correction (semantic sugar for ``contract propose``)" )
1527- p_edit .add_argument ("eid" , type = int , help = "Event ID" )
1528- p_edit .add_argument ("--status" , type = int )
1529- p_edit .add_argument ("--label" )
1530- p_edit .add_argument ("--desc" )
1531- p_edit .add_argument ("--start" )
1532- p_edit .add_argument ("--end" )
1533- p_edit .add_argument ("--date" )
1534- p_edit .add_argument ("--duration" , type = int )
1535- p_edit .add_argument ("--amount" , type = int )
1536- p_edit .add_argument ("--currency" )
1537- p_edit .add_argument ("--benefitable" )
1538- p_edit .add_argument (
1539- "--tags" ,
1540- help = (
1541- "Project tags (sugar for settings.tags[]). Comma-separated, each "
1542- "item key[:label[:color]]. E.g. 'backend,urgent' or "
1543- "'backend:Backend:#ff0000'."
1544- ),
1545- )
1546-
15471531 # ── daemon subcommand ─────────────────────────────────────────────
15481532 p_daemon = sub .add_parser ("daemon" , help = "Manage persistent renter daemon" )
15491533 dsub = p_daemon .add_subparsers (dest = "daemon_action" , required = True )
@@ -1580,9 +1564,6 @@ def main() -> None:
15801564 "request-captcha" : _cmd_request_captcha ,
15811565 }
15821566
1583- if args .command == "edit" :
1584- sys .exit (_cmd_edit (args ))
1585-
15861567 if args .command == "contract" :
15871568 sys .exit (_cmd_contract (args ))
15881569
0 commit comments