zen-cli 0.1.7__tar.gz → 0.1.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. {zen_cli-0.1.7 → zen_cli-0.1.9}/PKG-INFO +20 -22
  2. {zen_cli-0.1.7 → zen_cli-0.1.9}/README.md +15 -18
  3. {zen_cli-0.1.7 → zen_cli-0.1.9}/pyproject.toml +6 -4
  4. zen_cli-0.1.9/src/zen_cli/__init__.py +1 -0
  5. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cli.py +3 -2
  6. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/activity/get.py +20 -20
  7. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/activity/list.py +138 -138
  8. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/api.py +144 -146
  9. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/auth/details.py +19 -19
  10. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/auth/refresh.py +11 -11
  11. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/auth/status.py +17 -17
  12. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/auth/token.py +17 -17
  13. zen_cli-0.1.9/src/zen_cli/cmds/completion.py +47 -0
  14. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/credential/create.py +13 -13
  15. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/credential/delete.py +27 -27
  16. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/credential/get.py +19 -19
  17. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/credential/list.py +18 -18
  18. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/deployment/create.py +19 -19
  19. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/deployment/delete.py +28 -28
  20. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/deployment/get.py +19 -19
  21. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/deployment/list.py +19 -19
  22. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/entitlement/create.py +13 -13
  23. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/entitlement/delete.py +27 -27
  24. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/entitlement/get.py +19 -19
  25. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/entitlement/list.py +19 -19
  26. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/group/create.py +13 -13
  27. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/group/delete.py +33 -33
  28. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/group/get.py +19 -19
  29. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/group/list.py +26 -26
  30. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/login.py +370 -379
  31. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/logout.py +9 -9
  32. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/mcp.py +20 -16
  33. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/network/create.py +13 -13
  34. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/network/delete.py +34 -34
  35. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/network/get.py +19 -19
  36. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/network/list.py +21 -21
  37. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/notification/get.py +19 -19
  38. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/notification/list.py +48 -48
  39. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/org/create.py +13 -13
  40. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/org/get.py +51 -51
  41. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/org/list.py +20 -20
  42. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/org/use.py +46 -46
  43. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/pool/create.py +13 -13
  44. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/pool/delete.py +34 -34
  45. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/pool/get.py +19 -19
  46. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/pool/list.py +36 -36
  47. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/pool/use.py +35 -35
  48. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/profile/init.py +10 -10
  49. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/provider/create.py +13 -13
  50. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/provider/delete.py +27 -27
  51. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/provider/get.py +27 -27
  52. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/provider/list.py +43 -43
  53. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/sag/create.py +13 -13
  54. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/sag/delete.py +34 -34
  55. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/sag/get.py +19 -19
  56. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/sag/list.py +20 -20
  57. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/cancel.py +27 -27
  58. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/duplicate.py +29 -29
  59. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/get.py +20 -20
  60. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/list.py +132 -132
  61. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/log.py +57 -60
  62. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/namespaces.py +11 -11
  63. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/use.py +37 -37
  64. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/wait.py +28 -28
  65. zen_cli-0.1.9/src/zen_cli/cmds/upgrade.py +68 -0
  66. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/delete.py +39 -39
  67. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/get.py +14 -14
  68. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/list.py +91 -91
  69. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/poweroff.py +29 -29
  70. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/poweron.py +29 -29
  71. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/restart.py +19 -19
  72. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/shutdown.py +19 -19
  73. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/use.py +48 -48
  74. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/wait.py +55 -57
  75. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/config/default.yaml +1 -1
  76. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/config/int.yaml +1 -1
  77. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/config/prod.yaml +1 -1
  78. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/config/stg.yaml +1 -1
  79. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/__init__.py +1 -1
  80. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/_init.py +76 -76
  81. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/built_in_cmds/_ut.py +122 -122
  82. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/built_in_cmds/context.py +93 -92
  83. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/built_in_cmds/profile.py +159 -159
  84. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/cli_options.py +136 -136
  85. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/cli_processor.py +101 -44
  86. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/fstore.py +41 -38
  87. zen_cli-0.1.7/src/zen_cli/__init__.py → zen_cli-0.1.9/src/zen_cli/ctxp/httpx_alias.py +13 -14
  88. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/logger.py +0 -23
  89. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/profile.py +19 -8
  90. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/telemetry.py +152 -154
  91. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/util.py +490 -486
  92. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/api.py +1 -1
  93. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/server.py +1 -1
  94. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/task.py +0 -12
  95. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/auth.py +3 -2
  96. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/cli_options.py +59 -59
  97. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/client_util.py +39 -41
  98. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/csp.py +3 -4
  99. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/ez_client.py +1 -4
  100. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/login_support.py +2 -2
  101. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/mdc.py +2 -2
  102. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/requtil.py +1 -1
  103. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/payload.py +123 -123
  104. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/use_util.py +103 -103
  105. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/util/exec_util.py +257 -257
  106. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/util/query_util.py +11 -6
  107. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/util/versions.py +1 -1
  108. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/cli_test.py +1 -1
  109. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_auth.py +1 -4
  110. zen_cli-0.1.9/tests/blackbox/test_help.py +21 -0
  111. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_io.py +11 -15
  112. zen_cli-0.1.9/tests/blackbox/test_login.py +14 -0
  113. zen_cli-0.1.9/tests/blackbox/test_org.py +10 -0
  114. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_pool.py +0 -6
  115. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_profile.py +1 -0
  116. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_root.py +0 -3
  117. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/util.py +5 -1
  118. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/test_auth_status.py +23 -1
  119. zen_cli-0.1.9/tests/test_cli.py +169 -0
  120. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/test_mcp.py +1 -8
  121. zen_cli-0.1.9/tests/test_query_util.py +17 -0
  122. zen_cli-0.1.7/src/zen_cli/cmds/completion.py +0 -32
  123. zen_cli-0.1.7/src/zen_cli/cmds/task/delete.py +0 -44
  124. zen_cli-0.1.7/src/zen_cli/cmds/upgrade.py +0 -16
  125. zen_cli-0.1.7/src/zen_cli/ctxp/cmd_util.py +0 -88
  126. zen_cli-0.1.7/src/zen_cli/ctxp/dispatcher.py +0 -84
  127. zen_cli-0.1.7/src/zen_cli/ctxp/extension.py +0 -32
  128. zen_cli-0.1.7/src/zen_cli/ctxp/fn_util.py +0 -61
  129. zen_cli-0.1.7/src/zen_cli/ctxp/template_util.py +0 -26
  130. zen_cli-0.1.7/src/zen_cli/ctxp/timeutil.py +0 -11
  131. zen_cli-0.1.7/src/zen_cli/ctxp/var_template.py +0 -109
  132. zen_cli-0.1.7/src/zen_cli/sglib/init.py +0 -18
  133. zen_cli-0.1.7/src/zen_cli/sglib/utils.py +0 -107
  134. zen_cli-0.1.7/tests/blackbox/test_credential.py +0 -10
  135. zen_cli-0.1.7/tests/blackbox/test_deployment.py +0 -10
  136. zen_cli-0.1.7/tests/blackbox/test_entitlement.py +0 -10
  137. zen_cli-0.1.7/tests/blackbox/test_group.py +0 -10
  138. zen_cli-0.1.7/tests/blackbox/test_login.py +0 -26
  139. zen_cli-0.1.7/tests/blackbox/test_mcp.py +0 -7
  140. zen_cli-0.1.7/tests/blackbox/test_network.py +0 -10
  141. zen_cli-0.1.7/tests/blackbox/test_org.py +0 -22
  142. zen_cli-0.1.7/tests/blackbox/test_provider.py +0 -10
  143. zen_cli-0.1.7/tests/blackbox/test_sag.py +0 -10
  144. zen_cli-0.1.7/tests/blackbox/test_task.py +0 -7
  145. zen_cli-0.1.7/tests/blackbox/test_vm.py +0 -7
  146. zen_cli-0.1.7/tests/test_cli.py +0 -155
  147. {zen_cli-0.1.7 → zen_cli-0.1.9}/.gitignore +0 -0
  148. {zen_cli-0.1.7 → zen_cli-0.1.9}/LICENSE +0 -0
  149. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/__main__.py +0 -0
  150. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/activity/__init__.py +0 -0
  151. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/auth/__init__.py +0 -0
  152. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/credential/__init__.py +0 -0
  153. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/deployment/__init__.py +0 -0
  154. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/entitlement/__init__.py +0 -0
  155. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/group/__init__.py +0 -0
  156. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/network/__init__.py +0 -0
  157. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/notification/__init__.py +0 -0
  158. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/org/__init__.py +0 -0
  159. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/pool/__init__.py +0 -0
  160. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/profile/__init__.py +0 -0
  161. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/provider/__init__.py +0 -0
  162. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/sag/__init__.py +0 -0
  163. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/task/__init__.py +0 -0
  164. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/cmds/vm/__init__.py +0 -0
  165. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/built_in_cmds/__init__.py +0 -0
  166. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/config.py +0 -0
  167. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/context.py +0 -0
  168. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/data_util.py +0 -0
  169. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/jsondot.py +0 -0
  170. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/profile_store.py +0 -0
  171. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/recent.py +0 -0
  172. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/ctxp/state.py +0 -0
  173. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/__init__.py +0 -0
  174. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/_util.py +0 -0
  175. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/__init__.py +0 -0
  176. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/activity.py +0 -0
  177. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/credential.py +0 -0
  178. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/deployment.py +0 -0
  179. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/entitlement.py +0 -0
  180. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/group.py +0 -0
  181. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/network.py +0 -0
  182. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/notification.py +0 -0
  183. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/org.py +0 -0
  184. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/pool.py +0 -0
  185. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/provider.py +0 -0
  186. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/sag.py +0 -0
  187. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/task.py +0 -0
  188. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/mcp/resources/vm.py +0 -0
  189. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/__init__.py +0 -0
  190. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/activity.py +0 -0
  191. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/api.py +0 -0
  192. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/broker/__init__.py +0 -0
  193. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/broker/entitlement.py +0 -0
  194. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/broker/pool_group.py +0 -0
  195. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/cockpit/__init__.py +0 -0
  196. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/cockpit/network.py +0 -0
  197. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/cockpit/pool.py +0 -0
  198. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/cockpit/provider.py +0 -0
  199. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/cockpit/sag.py +0 -0
  200. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/cockpit/vm.py +0 -0
  201. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/credential.py +0 -0
  202. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/deployment.py +0 -0
  203. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/notification.py +0 -0
  204. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/service/org.py +0 -0
  205. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/__init__.py +0 -0
  206. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/sglib/zds_client.py +0 -0
  207. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/activity.py +0 -0
  208. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/auth.py +0 -0
  209. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/deployment.py +0 -0
  210. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/network.py +0 -0
  211. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/notification.py +0 -0
  212. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/org.py +0 -0
  213. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/pool.py +0 -0
  214. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/profile.py +0 -0
  215. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/recent.py +0 -0
  216. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/task.py +0 -0
  217. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/support/vm.py +0 -0
  218. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/util/exit.py +0 -0
  219. {zen_cli-0.1.7 → zen_cli-0.1.9}/src/zen_cli/util/readonly.py +0 -0
  220. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/__init__.py +0 -0
  221. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_api.py +0 -0
  222. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_completion.py +0 -0
  223. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_context.py +0 -0
  224. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_errors.py +0 -0
  225. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/blackbox/test_logout.py +0 -0
  226. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/test_device_login.py +0 -0
  227. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/test_payload.py +0 -0
  228. {zen_cli-0.1.7 → zen_cli-0.1.9}/tests/test_recent.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: zen-cli
3
- Version: 0.1.7
4
- Summary: CLI for Zen Desktop Service. Designed for AI and Human.
3
+ Version: 0.1.9
4
+ Summary: CLI for Zen Cloud Service. Designed for AI and Human.
5
5
  Project-URL: Homepage, https://pypi.org/project/zen-cli/
6
6
  Author: zen-cli authors
7
7
  License-Expression: MIT
@@ -18,13 +18,14 @@ Requires-Dist: pyjwt
18
18
  Requires-Dist: python-dotenv
19
19
  Requires-Dist: pyyaml
20
20
  Requires-Dist: questionary
21
+ Requires-Dist: rich-click>=1.8
21
22
  Requires-Dist: tabulate
22
23
  Requires-Dist: yumako
23
24
  Provides-Extra: dev
24
25
  Requires-Dist: build; extra == 'dev'
25
- Requires-Dist: mypy; extra == 'dev'
26
+ Requires-Dist: mypy==2.3.1; extra == 'dev'
26
27
  Requires-Dist: pre-commit; extra == 'dev'
27
- Requires-Dist: ruff; extra == 'dev'
28
+ Requires-Dist: ruff==0.16.8; extra == 'dev'
28
29
  Provides-Extra: release
29
30
  Requires-Dist: build; extra == 'release'
30
31
  Requires-Dist: twine; extra == 'release'
@@ -32,43 +33,40 @@ Description-Content-Type: text/markdown
32
33
 
33
34
  # zen-cli
34
35
 
35
- [![PyPI](https://img.shields.io/pypi/v/zen-cli?logo=pypi&logoColor=white)](https://pypi.org/project/zen-cli/) [![Python](https://img.shields.io/badge/python-3.12%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![PyPI downloads](https://img.shields.io/pypi/dm/zen-cli)](https://pypi.org/project/zen-cli/) [![Wheel](https://img.shields.io/pypi/wheel/zen-cli)](https://pypi.org/project/zen-cli/) [![OS](https://img.shields.io/badge/OS-macOS%20%7C%20Linux%20%7C%20Windows-informational)](https://pypi.org/project/zen-cli/) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Checked with mypy](https://img.shields.io/badge/mypy-checked-2A6DB2)](https://mypy-lang.org/) [![Click](https://img.shields.io/badge/cli-Click%208-4584b6)](https://click.palletsprojects.com/) [![Hatch](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5)](https://github.com/pypa/hatch)
36
+ [![PyPI](https://img.shields.io/pypi/v/zen-cli?logo=pypi&logoColor=white)](https://pypi.org/project/zen-cli/) [![Python](https://img.shields.io/badge/python-3.12%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![PyPI downloads](https://img.shields.io/pypi/dm/zen-cli)](https://pypi.org/project/zen-cli/) [![Wheel](https://img.shields.io/pypi/wheel/zen-cli)](https://pypi.org/project/zen-cli/) [![OS](https://img.shields.io/badge/OS-macOS%20%7C%20Linux%20%7C%20Windows-informational)](https://pypi.org/project/zen-cli/) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Checked with mypy](https://img.shields.io/badge/mypy-checked-2A6DB2)](https://mypy-lang.org/)
36
37
 
37
38
  面向 AI 和人的 Zen Cloud 命令行工具。
38
39
 
39
- ## 目录
40
-
41
- - [试用](#试用)
42
- - [前置条件](#前置条件)
43
- - [安装](#安装)
44
- - [Mac 与 Linux](#mac-与-linux)
45
- - [Windows](#windows)
46
- - [使用 CLI](#使用-cli)
47
- - [文档](#文档)
48
- - [许可证](#许可证)
49
-
50
40
  ## 试用
51
41
 
52
42
  ### 前置条件
53
43
 
54
44
  * Python 3.12 或更新版本
55
- * Pip
45
+ * [uv](https://docs.astral.sh/uv/) 或 [pipx](https://pipx.pypa.io/)
56
46
 
57
47
  ### 安装
58
48
 
59
- #### Mac 与 Linux
49
+ ```text
50
+ uv tool install zen-cli
51
+ ```
52
+
53
+ 或:
60
54
 
61
55
  ```text
62
- pip install zen-cli
56
+ pipx install zen-cli
63
57
  ```
64
58
 
65
- #### Windows
59
+ 装完后若找不到 `zen`,跑 `uv tool update-shell` 或 `pipx ensurepath`,然后开一个新终端。Windows 同样适用。
60
+
61
+ 升级:
66
62
 
67
63
  ```text
68
- pip install zen-cli
64
+ zen upgrade
65
+ uv tool upgrade zen-cli
66
+ pipx upgrade zen-cli
69
67
  ```
70
68
 
71
- 如果安装 Python 时没有勾选 “Add python to PATH”,请把 Python 及其 `Scripts` 目录加入 PATH。
69
+ `zen upgrade` 会按当前是 uv、pipx 还是普通环境选择对应方式。
72
70
 
73
71
  ### 使用 CLI
74
72
 
@@ -1,42 +1,39 @@
1
1
  # zen-cli
2
2
 
3
- [![PyPI](https://img.shields.io/pypi/v/zen-cli?logo=pypi&logoColor=white)](https://pypi.org/project/zen-cli/) [![Python](https://img.shields.io/badge/python-3.12%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![PyPI downloads](https://img.shields.io/pypi/dm/zen-cli)](https://pypi.org/project/zen-cli/) [![Wheel](https://img.shields.io/pypi/wheel/zen-cli)](https://pypi.org/project/zen-cli/) [![OS](https://img.shields.io/badge/OS-macOS%20%7C%20Linux%20%7C%20Windows-informational)](https://pypi.org/project/zen-cli/) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Checked with mypy](https://img.shields.io/badge/mypy-checked-2A6DB2)](https://mypy-lang.org/) [![Click](https://img.shields.io/badge/cli-Click%208-4584b6)](https://click.palletsprojects.com/) [![Hatch](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5)](https://github.com/pypa/hatch)
3
+ [![PyPI](https://img.shields.io/pypi/v/zen-cli?logo=pypi&logoColor=white)](https://pypi.org/project/zen-cli/) [![Python](https://img.shields.io/badge/python-3.12%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![PyPI downloads](https://img.shields.io/pypi/dm/zen-cli)](https://pypi.org/project/zen-cli/) [![Wheel](https://img.shields.io/pypi/wheel/zen-cli)](https://pypi.org/project/zen-cli/) [![OS](https://img.shields.io/badge/OS-macOS%20%7C%20Linux%20%7C%20Windows-informational)](https://pypi.org/project/zen-cli/) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Checked with mypy](https://img.shields.io/badge/mypy-checked-2A6DB2)](https://mypy-lang.org/)
4
4
 
5
5
  面向 AI 和人的 Zen Cloud 命令行工具。
6
6
 
7
- ## 目录
8
-
9
- - [试用](#试用)
10
- - [前置条件](#前置条件)
11
- - [安装](#安装)
12
- - [Mac 与 Linux](#mac-与-linux)
13
- - [Windows](#windows)
14
- - [使用 CLI](#使用-cli)
15
- - [文档](#文档)
16
- - [许可证](#许可证)
17
-
18
7
  ## 试用
19
8
 
20
9
  ### 前置条件
21
10
 
22
11
  * Python 3.12 或更新版本
23
- * Pip
12
+ * [uv](https://docs.astral.sh/uv/) 或 [pipx](https://pipx.pypa.io/)
24
13
 
25
14
  ### 安装
26
15
 
27
- #### Mac 与 Linux
16
+ ```text
17
+ uv tool install zen-cli
18
+ ```
19
+
20
+ 或:
28
21
 
29
22
  ```text
30
- pip install zen-cli
23
+ pipx install zen-cli
31
24
  ```
32
25
 
33
- #### Windows
26
+ 装完后若找不到 `zen`,跑 `uv tool update-shell` 或 `pipx ensurepath`,然后开一个新终端。Windows 同样适用。
27
+
28
+ 升级:
34
29
 
35
30
  ```text
36
- pip install zen-cli
31
+ zen upgrade
32
+ uv tool upgrade zen-cli
33
+ pipx upgrade zen-cli
37
34
  ```
38
35
 
39
- 如果安装 Python 时没有勾选 “Add python to PATH”,请把 Python 及其 `Scripts` 目录加入 PATH。
36
+ `zen upgrade` 会按当前是 uv、pipx 还是普通环境选择对应方式。
40
37
 
41
38
  ### 使用 CLI
42
39
 
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "zen-cli"
7
- version = "0.1.7"
8
- description = "CLI for Zen Desktop Service. Designed for AI and Human."
7
+ version = "0.1.9"
8
+ description = "CLI for Zen Cloud Service. Designed for AI and Human."
9
9
  readme = "README.md"
10
10
  license = "MIT"
11
11
  license-files = ["LICENSE"]
@@ -14,6 +14,7 @@ authors = [{ name = "zen-cli authors" }]
14
14
  dependencies = [
15
15
  "authlib",
16
16
  "click>=8.1",
17
+ "rich-click>=1.8",
17
18
  "coloredlogs",
18
19
  "httpx2",
19
20
  "mcp>=2",
@@ -28,7 +29,7 @@ dependencies = [
28
29
  ]
29
30
 
30
31
  [project.optional-dependencies]
31
- dev = ["build", "pre-commit", "ruff", "mypy"]
32
+ dev = ["build", "pre-commit", "ruff==0.16.8", "mypy==2.3.1"]
32
33
  release = ["build", "twine"]
33
34
 
34
35
  [project.scripts]
@@ -68,11 +69,12 @@ module = [
68
69
  "httpx2",
69
70
  "httpx2.*",
70
71
  "coloredlogs",
72
+ "tabulate",
71
73
  ]
72
74
  ignore_missing_imports = true
73
75
 
74
76
  [[tool.mypy.overrides]]
75
- module = ["zen_cli.cmds", "zen_cli.cmds.*", "zen_cli.ctxp", "zen_cli.ctxp.*"]
77
+ module = ["zen_cli", "zen_cli.cli", "zen_cli.cmds", "zen_cli.cmds.*", "zen_cli.ctxp", "zen_cli.ctxp.*"]
76
78
  disallow_untyped_decorators = false
77
79
 
78
80
  [[tool.mypy.overrides]]
@@ -0,0 +1 @@
1
+ """zen-cli package."""
@@ -4,7 +4,7 @@ import sys
4
4
  from pathlib import Path
5
5
  from typing import Any
6
6
 
7
- import click
7
+ import rich_click as click
8
8
  from dotenv import load_dotenv
9
9
  from yumako import env
10
10
 
@@ -98,7 +98,7 @@ def _check_upgrade() -> None:
98
98
  "--mdc",
99
99
  type=str,
100
100
  required=False,
101
- help=("MDC name from profile zds.mdcs (e.g. beijing, singapore). Default is the first zds.mdcs entry."),
101
+ help=("MDC name from profile zcs.mdcs (e.g. beijing, singapore). Default is the first zcs.mdcs entry."),
102
102
  )
103
103
  @click.option(
104
104
  "--check-upgrade/--no-check-upgrade",
@@ -174,6 +174,7 @@ def main() -> None:
174
174
  load_dotenv(".env")
175
175
  if not logger.color_enabled():
176
176
  CONTEXT_SETTINGS["color"] = False
177
+ CONTEXT_SETTINGS["rich_help_config"] = {"color_system": None, "force_terminal": False}
177
178
  if os.environ.get("_ZEN_COMPLETE"):
178
179
  ctxp.telemetry.disable()
179
180
  ctxp.init_cli(main_cli=cli, commands_dir=str(_COMMANDS_DIR))
@@ -1,20 +1,20 @@
1
- from typing import Any
2
-
3
- import click
4
-
5
- import zen_cli.sglib.cli_options as cli
6
- from zen_cli.ctxp import recent
7
- from zen_cli.service import activity
8
-
9
-
10
- @click.command()
11
- @cli.org_id
12
- @click.argument("id", type=str, required=False)
13
- def get(org: str, id: str) -> Any:
14
- """Get a system activity by ID. Without an argument, use the recent activity."""
15
- id = recent.require("activity", id)
16
- org_id = None if org == "all" else cli.get_org_id(org)
17
- ret = activity.get(id, org_id=org_id)
18
- if ret:
19
- return ret
20
- return "", 1
1
+ from typing import Any
2
+
3
+ import rich_click as click
4
+
5
+ import zen_cli.sglib.cli_options as cli
6
+ from zen_cli.ctxp import recent
7
+ from zen_cli.service import activity
8
+
9
+
10
+ @click.command()
11
+ @cli.org_id
12
+ @click.argument("id", type=str, required=False)
13
+ def get(org: str, id: str) -> Any:
14
+ """Get a system activity by ID. Without an argument, use the recent activity."""
15
+ id = recent.require("activity", id)
16
+ org_id = None if org == "all" else cli.get_org_id(org)
17
+ ret = activity.get(id, org_id=org_id)
18
+ if ret:
19
+ return ret
20
+ return "", 1
@@ -1,138 +1,138 @@
1
- from typing import Any
2
-
3
- import click
4
-
5
- import zen_cli.sglib.cli_options as cli
6
- from zen_cli.ctxp import recent
7
- from zen_cli.service import activity
8
- from zen_cli.support.activity import format_activity_table
9
-
10
- _RESOURCE_TYPES = [
11
- "ORG",
12
- "ORG_PREFERENCE",
13
- "DATACENTER",
14
- "POOL",
15
- "ENTITLEMENT",
16
- "VM",
17
- "EDGE",
18
- "SAG",
19
- "TASK",
20
- "PROVIDER_INSTANCE",
21
- "NET_INFRA",
22
- "EXPRESS_DEPLOYMENT",
23
- "POOL_GROUP",
24
- "IMAGE",
25
- "SITE",
26
- "SPEC",
27
- "SESSION",
28
- "VMAGENT",
29
- "NOTIFICATION",
30
- ]
31
-
32
-
33
- @click.command(name="list")
34
- @cli.org_id
35
- @click.option("--service-name", type=str, required=False, help="Filter by service name.")
36
- @click.option("--code", type=str, required=False, help="Filter by activity code.")
37
- @click.option("--trace-id", type=str, required=False, help="Filter by trace ID.")
38
- @click.option("--span-id", type=str, required=False, help="Filter by span ID.")
39
- @click.option("--resource-id", type=str, required=False, help="Filter by resource ID.")
40
- @click.option("--resource-name", type=str, required=False, help="Filter by resource name.")
41
- @click.option("--task-id", type=str, required=False, help="Filter by task ID.")
42
- @click.option("--parent-id", type=str, required=False, help="Filter by parent activity ID.")
43
- @click.option("--initiator", type=str, required=False, help="Filter by initiator.")
44
- @click.option(
45
- "--initiator-type",
46
- type=click.Choice(["SYSTEM", "OPS", "CUSTOMER_ADMIN", "USER"], case_sensitive=False),
47
- required=False,
48
- help="Filter by initiator type.",
49
- )
50
- @click.option(
51
- "--resource-type",
52
- type=click.Choice(_RESOURCE_TYPES, case_sensitive=False),
53
- required=False,
54
- help="Filter by resource type.",
55
- )
56
- @click.option(
57
- "--severity",
58
- type=click.Choice(["CRITICAL", "WARNING", "INFO", "TRIVIAL"], case_sensitive=False),
59
- required=False,
60
- help="Filter by severity.",
61
- )
62
- @click.option(
63
- "--status",
64
- type=click.Choice(
65
- ["QUEUED", "START", "PROGRESS", "SUCCESS", "ERROR", "CANCELLED"],
66
- case_sensitive=False,
67
- ),
68
- required=False,
69
- help="Filter by status.",
70
- )
71
- @click.option(
72
- "--timestamp-from",
73
- type=str,
74
- required=False,
75
- help="Inclusive lower bound (ISO-8601).",
76
- )
77
- @click.option(
78
- "--timestamp-to",
79
- type=str,
80
- required=False,
81
- help="Inclusive upper bound (ISO-8601).",
82
- )
83
- @cli.sort
84
- @cli.limit
85
- @cli.formatter(format_activity_table)
86
- def list_activities(
87
- org: str,
88
- service_name: str,
89
- code: str,
90
- trace_id: str,
91
- span_id: str,
92
- resource_id: str,
93
- resource_name: str,
94
- task_id: str,
95
- parent_id: str,
96
- initiator: str,
97
- initiator_type: str,
98
- resource_type: str,
99
- severity: str,
100
- status: str,
101
- timestamp_from: str,
102
- timestamp_to: str,
103
- sort: str,
104
- limit: int,
105
- ) -> Any:
106
- """List system activities."""
107
- org_id = None if org == "all" else cli.get_org_id(org)
108
- if initiator_type:
109
- initiator_type = initiator_type.upper()
110
- if resource_type:
111
- resource_type = resource_type.upper()
112
- if severity:
113
- severity = severity.upper()
114
- if status:
115
- status = status.upper()
116
-
117
- ret = activity.list(
118
- org_id=org_id,
119
- service_name=service_name,
120
- code=code,
121
- trace_id=trace_id,
122
- span_id=span_id,
123
- resource_id=resource_id,
124
- resource_name=resource_name,
125
- task_id=task_id,
126
- parent_id=parent_id,
127
- initiator=initiator,
128
- initiator_type=initiator_type,
129
- resource_type=resource_type,
130
- severity=severity,
131
- status=status,
132
- timestamp_from=timestamp_from,
133
- timestamp_to=timestamp_to,
134
- sort=sort,
135
- limit=limit,
136
- )
137
- recent.helper.default_list(ret, "activity")
138
- return ret
1
+ from typing import Any
2
+
3
+ import rich_click as click
4
+
5
+ import zen_cli.sglib.cli_options as cli
6
+ from zen_cli.ctxp import recent
7
+ from zen_cli.service import activity
8
+ from zen_cli.support.activity import format_activity_table
9
+
10
+ _RESOURCE_TYPES = [
11
+ "ORG",
12
+ "ORG_PREFERENCE",
13
+ "DATACENTER",
14
+ "POOL",
15
+ "ENTITLEMENT",
16
+ "VM",
17
+ "EDGE",
18
+ "SAG",
19
+ "TASK",
20
+ "PROVIDER_INSTANCE",
21
+ "NET_INFRA",
22
+ "EXPRESS_DEPLOYMENT",
23
+ "POOL_GROUP",
24
+ "IMAGE",
25
+ "SITE",
26
+ "SPEC",
27
+ "SESSION",
28
+ "VMAGENT",
29
+ "NOTIFICATION",
30
+ ]
31
+
32
+
33
+ @click.command(name="list")
34
+ @cli.org_id
35
+ @click.option("--service-name", type=str, required=False, help="Filter by service name.")
36
+ @click.option("--code", type=str, required=False, help="Filter by activity code.")
37
+ @click.option("--trace-id", type=str, required=False, help="Filter by trace ID.")
38
+ @click.option("--span-id", type=str, required=False, help="Filter by span ID.")
39
+ @click.option("--resource-id", type=str, required=False, help="Filter by resource ID.")
40
+ @click.option("--resource-name", type=str, required=False, help="Filter by resource name.")
41
+ @click.option("--task-id", type=str, required=False, help="Filter by task ID.")
42
+ @click.option("--parent-id", type=str, required=False, help="Filter by parent activity ID.")
43
+ @click.option("--initiator", type=str, required=False, help="Filter by initiator.")
44
+ @click.option(
45
+ "--initiator-type",
46
+ type=click.Choice(["SYSTEM", "OPS", "CUSTOMER_ADMIN", "USER"], case_sensitive=False),
47
+ required=False,
48
+ help="Filter by initiator type.",
49
+ )
50
+ @click.option(
51
+ "--resource-type",
52
+ type=click.Choice(_RESOURCE_TYPES, case_sensitive=False),
53
+ required=False,
54
+ help="Filter by resource type.",
55
+ )
56
+ @click.option(
57
+ "--severity",
58
+ type=click.Choice(["CRITICAL", "WARNING", "INFO", "TRIVIAL"], case_sensitive=False),
59
+ required=False,
60
+ help="Filter by severity.",
61
+ )
62
+ @click.option(
63
+ "--status",
64
+ type=click.Choice(
65
+ ["QUEUED", "START", "PROGRESS", "SUCCESS", "ERROR", "CANCELLED"],
66
+ case_sensitive=False,
67
+ ),
68
+ required=False,
69
+ help="Filter by status.",
70
+ )
71
+ @click.option(
72
+ "--timestamp-from",
73
+ type=str,
74
+ required=False,
75
+ help="Inclusive lower bound (ISO-8601).",
76
+ )
77
+ @click.option(
78
+ "--timestamp-to",
79
+ type=str,
80
+ required=False,
81
+ help="Inclusive upper bound (ISO-8601).",
82
+ )
83
+ @cli.sort
84
+ @cli.limit
85
+ @cli.formatter(format_activity_table)
86
+ def list_activities(
87
+ org: str,
88
+ service_name: str,
89
+ code: str,
90
+ trace_id: str,
91
+ span_id: str,
92
+ resource_id: str,
93
+ resource_name: str,
94
+ task_id: str,
95
+ parent_id: str,
96
+ initiator: str,
97
+ initiator_type: str,
98
+ resource_type: str,
99
+ severity: str,
100
+ status: str,
101
+ timestamp_from: str,
102
+ timestamp_to: str,
103
+ sort: str,
104
+ limit: int,
105
+ ) -> Any:
106
+ """List system activities."""
107
+ org_id = None if org == "all" else cli.get_org_id(org)
108
+ if initiator_type:
109
+ initiator_type = initiator_type.upper()
110
+ if resource_type:
111
+ resource_type = resource_type.upper()
112
+ if severity:
113
+ severity = severity.upper()
114
+ if status:
115
+ status = status.upper()
116
+
117
+ ret = activity.list(
118
+ org_id=org_id,
119
+ service_name=service_name,
120
+ code=code,
121
+ trace_id=trace_id,
122
+ span_id=span_id,
123
+ resource_id=resource_id,
124
+ resource_name=resource_name,
125
+ task_id=task_id,
126
+ parent_id=parent_id,
127
+ initiator=initiator,
128
+ initiator_type=initiator_type,
129
+ resource_type=resource_type,
130
+ severity=severity,
131
+ status=status,
132
+ timestamp_from=timestamp_from,
133
+ timestamp_to=timestamp_to,
134
+ sort=sort,
135
+ limit=limit,
136
+ )
137
+ recent.helper.default_list(ret, "activity")
138
+ return ret