cmdbox 0.6.0.3__tar.gz → 0.6.0.4__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.

Potentially problematic release.


This version of cmdbox might be problematic. Click here for more details.

Files changed (374) hide show
  1. {cmdbox-0.6.0.3/cmdbox.egg-info → cmdbox-0.6.0.4}/PKG-INFO +2 -2
  2. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/README.md +1 -1
  3. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/common.py +4 -2
  4. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/agent_base.py +7 -65
  5. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_cmd_list.py +1 -1
  6. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_cmd_load.py +1 -1
  7. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +1 -1
  8. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +1 -1
  9. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_group_add.py +1 -1
  10. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_group_del.py +1 -1
  11. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +1 -1
  12. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_group_list.py +1 -1
  13. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_start.py +65 -26
  14. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_user_add.py +1 -1
  15. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_user_del.py +1 -1
  16. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +1 -1
  17. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_user_list.py +1 -1
  18. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_agent.py +10 -4
  19. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/options.py +8 -0
  20. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/web.py +26 -47
  21. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/version.py +2 -2
  22. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/agent.js +2 -3
  23. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/common.js +26 -4
  24. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/main.js +1 -2
  25. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4/cmdbox.egg-info}/PKG-INFO +2 -2
  26. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/setup.py +1 -0
  27. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/LICENSE +0 -0
  28. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/MANIFEST.in +0 -0
  29. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/__init__.py +0 -0
  30. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/__main__.py +0 -0
  31. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/__init__.py +0 -0
  32. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/app.py +0 -0
  33. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/__init__.py +0 -0
  34. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/azure_signin.py +0 -0
  35. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/azure_signin_saml.py +0 -0
  36. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/github_signin.py +0 -0
  37. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/google_signin.py +0 -0
  38. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/signin.py +0 -0
  39. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/auth/signin_saml.py +0 -0
  40. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/client.py +0 -0
  41. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/commons/convert.py +0 -0
  42. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/commons/loghandler.py +0 -0
  43. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/commons/module.py +0 -0
  44. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/commons/redis_client.py +0 -0
  45. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/edge.py +0 -0
  46. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/edge_tool.py +0 -0
  47. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/feature.py +0 -0
  48. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/audit_base.py +0 -0
  49. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
  50. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_audit_delete.py +0 -0
  51. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_audit_search.py +0 -0
  52. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_audit_write.py +0 -0
  53. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
  54. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
  55. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
  56. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
  57. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
  58. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
  59. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
  60. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +0 -0
  61. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
  62. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
  63. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
  64. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
  65. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
  66. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
  67. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
  68. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
  69. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_gencert.py +0 -0
  70. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
  71. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/cli/cmdbox_web_stop.py +0 -0
  72. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
  73. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_audit.py +0 -0
  74. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
  75. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
  76. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
  77. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
  78. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
  79. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
  80. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_do_signout.py +0 -0
  81. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +0 -0
  82. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
  83. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_filer download.py +0 -0
  84. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
  85. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
  86. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
  87. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
  88. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
  89. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
  90. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
  91. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
  92. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
  93. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
  94. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
  95. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
  96. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
  97. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
  98. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
  99. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
  100. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
  101. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_signin.py +0 -0
  102. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
  103. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
  104. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
  105. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
  106. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/features/web/cmdbox_web_versions_used.py +0 -0
  107. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/filer.py +0 -0
  108. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/app/server.py +0 -0
  109. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/config.yml +0 -0
  110. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/features.yml +0 -0
  111. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
  112. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/requirements.txt +0 -0
  113. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
  114. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
  115. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
  116. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/app/features/cli/__init__.py +0 -0
  117. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
  118. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
  119. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
  120. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/extensions/features.yml +0 -0
  121. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/extensions/user_list.yml +0 -0
  122. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +0 -0
  123. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/version.py +0 -0
  124. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
  125. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
  126. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/extensions/user_list.yml +0 -0
  127. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.Authlib.1.5.2(BSD License).txt +0 -0
  128. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.Deprecated.1.2.18(MIT License).txt +0 -0
  129. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.Jinja2.3.1.6(BSD License).txt +0 -0
  130. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.MarkupSafe.3.0.2(BSD License).txt +0 -0
  131. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.PyYAML.6.0.2(MIT License).txt +0 -0
  132. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.Pygments.2.19.1(BSD License).txt +0 -0
  133. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.SQLAlchemy.2.0.40(MIT License).txt +0 -0
  134. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.Sphinx.8.2.3(UNKNOWN).txt +0 -0
  135. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.aiohappyeyeballs.2.6.1(Python Software Foundation License).txt +0 -0
  136. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.aiohttp.3.11.18(Apache Software License).txt +0 -0
  137. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.aiosignal.1.3.2(Apache Software License).txt +0 -0
  138. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.alabaster.1.0.0(BSD License).txt +0 -0
  139. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.annotated-types.0.7.0(MIT License).txt +0 -0
  140. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.anyio.4.9.0(MIT License).txt +0 -0
  141. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.argcomplete.3.6.2(Apache Software License).txt +0 -0
  142. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.async-timeout.5.0.1(Apache Software License).txt +0 -0
  143. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.attrs.25.3.0(UNKNOWN).txt +0 -0
  144. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.babel.2.17.0(BSD License).txt +0 -0
  145. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.backports.tarfile.1.2.0(MIT License).txt +0 -0
  146. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.cachetools.5.5.2(MIT License).txt +0 -0
  147. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.certifi.2025.4.26(Mozilla Public License 2.0 (MPL 2.0)).txt +0 -0
  148. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.cffi.1.17.1(MIT License).txt +0 -0
  149. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.charset-normalizer.3.4.2(MIT License).txt +0 -0
  150. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.click.8.2.0(UNKNOWN).txt +0 -0
  151. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.colorama.0.4.6(BSD License).txt +0 -0
  152. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.cryptography.44.0.3(Apache Software License; BSD License).txt +0 -0
  153. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.distro.1.9.0(Apache Software License).txt +0 -0
  154. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.docstring_parser.0.16(MIT License).txt +0 -0
  155. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.docutils.0.21.2(BSD License; GNU General Public License (GPL); Public Domain; Python Software Foundation License).txt +0 -0
  156. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.fastapi.0.115.12(MIT License).txt +0 -0
  157. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.filelock.3.18.0(The Unlicense (Unlicense)).txt +0 -0
  158. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.frozenlist.1.6.0(Apache-2.0).txt +0 -0
  159. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.fsspec.2025.3.2(BSD License).txt +0 -0
  160. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.gevent.25.4.2(MIT).txt +0 -0
  161. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-adk.0.5.0(Apache Software License).txt +0 -0
  162. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-api-core.2.24.2(Apache Software License).txt +0 -0
  163. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-api-python-client.2.169.0(Apache Software License).txt +0 -0
  164. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-auth-httplib2.0.2.0(Apache Software License).txt +0 -0
  165. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-auth.2.40.1(Apache Software License).txt +0 -0
  166. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-aiplatform.1.92.0(Apache 2.0).txt +0 -0
  167. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-bigquery.3.31.0(Apache Software License).txt +0 -0
  168. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-core.2.4.3(Apache Software License).txt +0 -0
  169. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-resource-manager.1.14.2(Apache Software License).txt +0 -0
  170. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-secret-manager.2.23.3(Apache Software License).txt +0 -0
  171. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-speech.2.32.0(Apache Software License).txt +0 -0
  172. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-storage.2.19.0(Apache Software License).txt +0 -0
  173. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-cloud-trace.1.16.1(Apache Software License).txt +0 -0
  174. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-crc32c.1.7.1(Apache 2.0).txt +0 -0
  175. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-genai.1.14.0(Apache Software License).txt +0 -0
  176. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.google-resumable-media.2.7.2(Apache Software License).txt +0 -0
  177. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.googleapis-common-protos.1.70.0(Apache Software License).txt +0 -0
  178. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.graphviz.0.20.3(MIT License).txt +0 -0
  179. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.greenlet.3.2.2(MIT AND Python-2.0).txt +0 -0
  180. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.grpc-google-iam-v1.0.14.2(Apache Software License).txt +0 -0
  181. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.grpcio-status.1.71.0(Apache Software License).txt +0 -0
  182. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.grpcio.1.71.0(Apache Software License).txt +0 -0
  183. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.gunicorn.23.0.0(MIT License).txt +0 -0
  184. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.h11.0.16.0(MIT License).txt +0 -0
  185. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.httpcore.1.0.9(BSD License).txt +0 -0
  186. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.httplib2.0.22.0(MIT License).txt +0 -0
  187. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.httptools.0.6.4(MIT License).txt +0 -0
  188. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.httpx-sse.0.4.0(MIT).txt +0 -0
  189. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.httpx.0.28.1(BSD License).txt +0 -0
  190. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.huggingface-hub.0.31.1(Apache Software License).txt +0 -0
  191. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.id.1.5.0(Apache Software License).txt +0 -0
  192. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.idna.3.10(BSD License).txt +0 -0
  193. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.imagesize.1.4.1(MIT License).txt +0 -0
  194. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.importlib_metadata.8.6.1(Apache Software License).txt +0 -0
  195. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.itsdangerous.2.2.0(BSD License).txt +0 -0
  196. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.jaraco.classes.3.4.0(MIT License).txt +0 -0
  197. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.jaraco.context.6.0.1(MIT License).txt +0 -0
  198. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.jaraco.functools.4.1.0(MIT License).txt +0 -0
  199. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.jiter.0.9.0(MIT License).txt +0 -0
  200. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.jsonschema-specifications.2025.4.1(UNKNOWN).txt +0 -0
  201. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.jsonschema.4.23.0(MIT License).txt +0 -0
  202. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.keyring.25.6.0(MIT License).txt +0 -0
  203. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.litellm.1.69.0(MIT License).txt +0 -0
  204. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.markdown-it-py.3.0.0(MIT License).txt +0 -0
  205. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.mcp.1.8.0(MIT License).txt +0 -0
  206. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.mdurl.0.1.2(MIT License).txt +0 -0
  207. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.more-itertools.10.7.0(MIT License).txt +0 -0
  208. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.multidict.6.4.3(Apache Software License).txt +0 -0
  209. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.nh3.0.2.21(MIT).txt +0 -0
  210. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.numpy.2.2.5(BSD License).txt +0 -0
  211. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.openai.1.75.0(Apache Software License).txt +0 -0
  212. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.opentelemetry-api.1.33.0(Apache Software License).txt +0 -0
  213. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.opentelemetry-exporter-gcp-trace.1.9.0(Apache Software License).txt +0 -0
  214. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.opentelemetry-resourcedetector-gcp.1.9.0a0(Apache Software License).txt +0 -0
  215. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.opentelemetry-sdk.1.33.0(Apache Software License).txt +0 -0
  216. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.opentelemetry-semantic-conventions.0.54b0(Apache Software License).txt +0 -0
  217. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.packaging.25.0(Apache Software License; BSD License).txt +0 -0
  218. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pillow.11.2.1(UNKNOWN).txt +0 -0
  219. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pip.24.0(MIT License).txt +0 -0
  220. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.plyer.2.1.0(MIT License).txt +0 -0
  221. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.prettytable.3.16.0(UNKNOWN).txt +0 -0
  222. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.prompt_toolkit.3.0.51(BSD License).txt +0 -0
  223. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.propcache.0.3.1(Apache Software License).txt +0 -0
  224. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.proto-plus.1.26.1(Apache Software License).txt +0 -0
  225. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.protobuf.5.29.4(3-Clause BSD License).txt +0 -0
  226. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.psycopg-binary.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt +0 -0
  227. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.psycopg.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt +0 -0
  228. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pyasn1.0.6.1(BSD License).txt +0 -0
  229. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pyasn1_modules.0.4.2(BSD License).txt +0 -0
  230. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pycparser.2.22(BSD License).txt +0 -0
  231. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pycryptodome.3.22.0(BSD License; Public Domain).txt +0 -0
  232. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pydantic-settings.2.9.1(MIT License).txt +0 -0
  233. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pydantic.2.11.4(MIT License).txt +0 -0
  234. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pydantic_core.2.33.2(MIT License).txt +0 -0
  235. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pyparsing.3.2.3(MIT License).txt +0 -0
  236. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pystray.0.19.5(GNU Lesser General Public License v3 (LGPLv3)).txt +0 -0
  237. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.python-dateutil.2.9.0.post0(Apache Software License; BSD License).txt +0 -0
  238. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.python-dotenv.1.1.0(BSD License).txt +0 -0
  239. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.python-multipart.0.0.20(Apache Software License).txt +0 -0
  240. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.pywin32-ctypes.0.2.3(BSD-3-Clause).txt +0 -0
  241. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.questionary.2.1.0(MIT License).txt +0 -0
  242. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.readme_renderer.44.0(Apache Software License).txt +0 -0
  243. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.redis.6.0.0(MIT License).txt +0 -0
  244. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.referencing.0.36.2(UNKNOWN).txt +0 -0
  245. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.regex.2024.11.6(Apache Software License).txt +0 -0
  246. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.requests-toolbelt.1.0.0(Apache Software License).txt +0 -0
  247. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.requests.2.32.3(Apache Software License).txt +0 -0
  248. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.rfc3986.2.0.0(Apache Software License).txt +0 -0
  249. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.rich.14.0.0(MIT License).txt +0 -0
  250. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.roman-numerals-py.3.1.0(CC0 1.0 Universal (CC0 1.0) Public Domain Dedication; Zero-Clause BSD (0BSD)).txt +0 -0
  251. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.rpds-py.0.24.0(MIT).txt +0 -0
  252. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.rsa.4.9.1(Apache Software License).txt +0 -0
  253. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.setuptools.65.5.0(MIT License).txt +0 -0
  254. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.shapely.2.1.0(BSD License).txt +0 -0
  255. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.six.1.17.0(MIT License).txt +0 -0
  256. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sniffio.1.3.1(Apache Software License; MIT License).txt +0 -0
  257. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.snowballstemmer.3.0.1(BSD License).txt +0 -0
  258. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinx-intl.2.3.1(BSD License).txt +0 -0
  259. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinx-rtd-theme.3.0.2(MIT License).txt +0 -0
  260. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinx-sitemap.2.6.0(MIT License).txt +0 -0
  261. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinx_fontawesome.0.0.6(GNU General Public License v2 (GPLv2)).txt +0 -0
  262. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-applehelp.2.0.0(BSD License).txt +0 -0
  263. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-devhelp.2.0.0(BSD License).txt +0 -0
  264. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-htmlhelp.2.1.0(BSD License).txt +0 -0
  265. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-jquery.4.1(BSD License).txt +0 -0
  266. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-jsmath.1.0.1(BSD License).txt +0 -0
  267. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-qthelp.2.0.0(BSD License).txt +0 -0
  268. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sphinxcontrib-serializinghtml.2.0.0(BSD License).txt +0 -0
  269. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.sse-starlette.2.3.4(BSD License).txt +0 -0
  270. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.starlette.0.46.2(BSD License).txt +0 -0
  271. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tabulate.0.9.0(MIT License).txt +0 -0
  272. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tiktoken.0.9.0(MIT License).txt +0 -0
  273. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tokenizers.0.21.1(Apache Software License).txt +0 -0
  274. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tomli.2.2.1(MIT License).txt +0 -0
  275. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tqdm.4.67.1(MIT License; Mozilla Public License 2.0 (MPL 2.0)).txt +0 -0
  276. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.twine.6.1.0(Apache Software License).txt +0 -0
  277. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.typing-inspection.0.4.0(MIT License).txt +0 -0
  278. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.typing_extensions.4.13.2(UNKNOWN).txt +0 -0
  279. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tzdata.2025.2(Apache Software License).txt +0 -0
  280. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.tzlocal.5.3.1(MIT License).txt +0 -0
  281. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.uritemplate.4.1.1(Apache Software License; BSD License).txt +0 -0
  282. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.urllib3.2.4.0(UNKNOWN).txt +0 -0
  283. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.uvicorn.0.34.2(BSD License).txt +0 -0
  284. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.watchfiles.1.0.5(MIT License).txt +0 -0
  285. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.wcwidth.0.2.13(MIT License).txt +0 -0
  286. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.websockets.15.0.1(BSD License).txt +0 -0
  287. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.wheel.0.45.1(MIT License).txt +0 -0
  288. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.wrapt.1.17.2(BSD License).txt +0 -0
  289. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.yarl.1.20.0(Apache Software License).txt +0 -0
  290. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.zipp.3.21.0(MIT License).txt +0 -0
  291. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.zope.event.5.0(Zope Public License).txt +0 -0
  292. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/LICENSE.zope.interface.7.2(Zope Public License).txt +0 -0
  293. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/licenses/files.txt +0 -0
  294. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_audit.yml +0 -0
  295. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_client.yml +0 -0
  296. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_cmdbox.yml +0 -0
  297. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_edge.yml +0 -0
  298. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_gui.yml +0 -0
  299. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_server.yml +0 -0
  300. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/logconf_web.yml +0 -0
  301. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/agent.html +0 -0
  302. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
  303. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
  304. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
  305. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
  306. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/audit.js +0 -0
  307. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
  308. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
  309. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
  310. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/icon.png +0 -0
  311. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
  312. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
  313. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
  314. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
  315. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/result.js +0 -0
  316. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/signin.js +0 -0
  317. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/users.js +0 -0
  318. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
  319. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
  320. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
  321. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
  322. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
  323. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/filer/filer.js +0 -0
  324. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/filer/main.css +0 -0
  325. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/filer/main.js +0 -0
  326. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/highlight/default.css +0 -0
  327. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
  328. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
  329. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
  330. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
  331. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
  332. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
  333. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
  334. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
  335. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
  336. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
  337. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
  338. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
  339. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
  340. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
  341. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
  342. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
  343. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  344. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
  345. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
  346. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
  347. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
  348. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/jquery-ui/package.json +0 -0
  349. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
  350. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
  351. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
  352. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
  353. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
  354. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
  355. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
  356. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
  357. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
  358. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
  359. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
  360. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
  361. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
  362. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/assets_license_list.txt +0 -0
  363. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/audit.html +0 -0
  364. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/filer.html +0 -0
  365. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/gui.html +0 -0
  366. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/result.html +0 -0
  367. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/signin.html +0 -0
  368. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox/web/users.html +0 -0
  369. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox.egg-info/SOURCES.txt +0 -0
  370. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox.egg-info/dependency_links.txt +0 -0
  371. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox.egg-info/entry_points.txt +0 -0
  372. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox.egg-info/requires.txt +0 -0
  373. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/cmdbox.egg-info/top_level.txt +0 -0
  374. {cmdbox-0.6.0.3 → cmdbox-0.6.0.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cmdbox
3
- Version: 0.6.0.3
3
+ Version: 0.6.0.4
4
4
  Summary: cmdbox: It is a command line application with a plugin mechanism.
5
5
  Home-page: https://github.com/hamacom2004jp/cmdbox
6
6
  Download-URL: https://github.com/hamacom2004jp/cmdbox
@@ -51,7 +51,7 @@ apt-get install -y pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl buil
51
51
 
52
52
  - When using `--agent use` in web mode, install the modules with dependencies.
53
53
  ```bash
54
- pip install google-adk litellm
54
+ pip install google-adk litellm fastmcp
55
55
  ```
56
56
 
57
57
  # Run
@@ -27,7 +27,7 @@ apt-get install -y pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl buil
27
27
 
28
28
  - When using `--agent use` in web mode, install the modules with dependencies.
29
29
  ```bash
30
- pip install google-adk litellm
30
+ pip install google-adk litellm fastmcp
31
31
  ```
32
32
 
33
33
  # Run
@@ -135,8 +135,10 @@ def create_console(stderr:bool=False, file=None) -> Console:
135
135
  Returns:
136
136
  Console: コンソール
137
137
  """
138
- console = Console(height=False,
139
- soft_wrap=False, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
138
+ #console = Console(soft_wrap=True, height=True, highlighter=loghandler.LogLevelHighlighter(), theme=loghandler.theme,
139
+ # stderr=stderr, file=file)
140
+ console = Console(height=True, highlighter=loghandler.LogLevelHighlighter(), theme=loghandler.theme,
141
+ soft_wrap=True, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
140
142
  #console = Console(soft_wrap=True, stderr=stderr, file=file, log_time=True, log_path=False, log_time_format='[%Y-%m-%d %H:%M:%S]')
141
143
  return console
142
144
 
@@ -30,8 +30,7 @@ class AgentBase(feature.ResultEdgeFeature):
30
30
  dict(opt="agent", type=Options.T_STR, default="no", required=False, multi=False, hide=False, choice=["no", "use"],
31
31
  discription_ja="エージェントを使用するかどうかを指定します。",
32
32
  discription_en="Specifies whether the agent is used.",
33
- choice_show=dict(use=["agent_name", "agent_description", "agent_instruction", "agent_session_store", "llmprov",
34
- "mcp_listen_port", "mcp_ssl_listen_port"],)),
33
+ choice_show=dict(use=["agent_name", "agent_description", "agent_instruction", "agent_session_store", "llmprov",],)),
35
34
  dict(opt="agent_name", type=Options.T_STR, default=self.ver.__appid__, required=False, multi=False, hide=False, choice=None,
36
35
  discription_ja="エージェント名を指定します。",
37
36
  discription_en="Specifies the agent name."),
@@ -45,12 +44,6 @@ class AgentBase(feature.ResultEdgeFeature):
45
44
  discription_ja="エージェントのセッションを保存する方法を指定します。",
46
45
  discription_en="Specify how the agent's session is to be saved.",
47
46
  choice_show=dict(postgresql=["agent_pg_host", "agent_pg_port", "agent_pg_user", "agent_pg_password", "agent_pg_dbname"]),),
48
- dict(opt="mcp_listen_port", type=Options.T_INT, default="9081", required=False, multi=False, hide=False, choice=None,
49
- discription_ja="省略した時は `9081` を使用します。",
50
- discription_en="If omitted, `9081` is used."),
51
- dict(opt="mcp_ssl_listen_port", type=Options.T_INT, default="9443", required=False, multi=False, hide=False, choice=None,
52
- discription_ja="省略した時は `9443` を使用します。",
53
- discription_en="If omitted, `9443` is used."),
54
47
  dict(opt="agent_pg_host", type=Options.T_STR, default='localhost', required=False, multi=False, hide=False, choice=None, web="mask",
55
48
  discription_ja="postgresqlホストを指定する。",
56
49
  discription_en="Specify the postgresql host."),
@@ -114,7 +107,7 @@ class AgentBase(feature.ResultEdgeFeature):
114
107
  Returns:
115
108
  Any: FastMCP
116
109
  """
117
- from mcp.server.fastmcp import FastMCP
110
+ from fastmcp import FastMCP
118
111
  mcp = FastMCP(name=self.ver.__appid__)
119
112
  return mcp
120
113
 
@@ -174,33 +167,6 @@ class AgentBase(feature.ResultEdgeFeature):
174
167
  f"1. ユーザーのクエリからが実行したいコマンドを特定します。\n" + \
175
168
  f"2. コマンド実行に必要なパラメータのなかで、ユーザーのクエリから取得できないものは、コマンド定義にあるデフォルト値を指定して実行してください。\n" + \
176
169
  f"3. もしエラーが発生した場合は、ユーザーにコマンド名とパラメータとエラー内容を提示してください。\n"
177
- """
178
- f"2. コマンド実行に必要なパラメータを特定します。\n" + \
179
- f"3. ユーザーのクエリから指定しているパラメータを取得します。\n" + \
180
- f"4. ユーザーが指定しているパラメータと、コマンド実行に必要なパラメータを比較し、不足しているパラメータを取得します。\n" + \
181
- f"5. 以下に「パラメータ = デフォルト値」を示しているので、不足しているパラメータはデフォルト値を使用します。\n" + \
182
- f" 但しコマンドが実行に必要のないパラメータは指定しないようにしてください。\n" + \
183
- f" host = {args.host if hasattr(args, 'host') and args.host else self.default_host}\n" + \
184
- f" port = {args.port if hasattr(args, 'port') and args.port else self.default_port}\n" + \
185
- f" password = {args.password if hasattr(args, 'password') and args.password else self.default_pass}\n" + \
186
- f" svname = {args.svname if hasattr(args, 'svname') and args.svname else self.default_svname}\n" + \
187
- f" data = {args.data if hasattr(args, 'data') and args.data else self.default_data}\n" + \
188
- f" retry_count = {args.retry_count if hasattr(args, 'retry_count') and args.retry_count else 3}\n" + \
189
- f" retry_interval = {args.retry_interval if hasattr(args, 'retry_interval') and args.retry_interval else 3}\n" + \
190
- f" timeout = {args.timeout if hasattr(args, 'timeout') and args.timeout else 15}\n" + \
191
- f" output_json = {args.output_json if hasattr(args, 'output_json') and args.output_json else None}\n" + \
192
- f" output_json_append = {args.output_json_append if hasattr(args, 'output_json_append') and args.output_json_append else False}\n" + \
193
- f" stdout_log = {args.stdout_log if hasattr(args, 'stdout_log') and args.stdout_log else False}\n" + \
194
- f" capture_stdout = {args.capture_stdout if hasattr(args, 'capture_stdout') and args.capture_stdout else False}\n" + \
195
- f" capture_maxsize = {args.capture_maxsize if hasattr(args, 'capture_maxsize') and args.capture_maxsize else 100}\n" + \
196
- f" tag = {args.tag if hasattr(args, 'tag') and args.tag else None}\n" + \
197
- f" clmsg_id = {args.clmsg_id if hasattr(args, 'clmsg_id') and args.clmsg_id else None}\n" + \
198
- f" signin_file = {args.signin_file if hasattr(args, 'signin_file') and args.signin_file else f'.{self.ver.__appid__}/user_list.yml'}\n" + \
199
- f"6. 以上のパラメータを使用しても不足するパラメータは、Noneを使用します。\n" + \
200
- f"7. 以上のパラメータを使用してコマンドを実行して、コマンドの結果はJSONでユーザーに提示してください。\n" + \
201
- f"8. もし予期しないパラメータを受け取ったという旨のエラーが発生した場合は、そのパラメータを指定せずに再実行してください。\n" + \
202
- f"9. もしエラーが発生した場合は、ユーザーにコマンド名とパラメータとエラー内容を提示してください。\n"
203
- """
204
170
 
205
171
  description = description if is_japan else \
206
172
  f"Command offer registered in {self.ver.__appid__}."
@@ -210,32 +176,6 @@ class AgentBase(feature.ResultEdgeFeature):
210
176
  f"1. Identify the command you want to execute from the user's query.\n" + \
211
177
  f"2. Any parameters required to execute the command that cannot be obtained from the user's query should be executed with the default values provided in the command definition.\n" + \
212
178
  f"3. If an error occurs, provide the user with the command name, parameters, and error description.\n"
213
- """
214
- f"2. Identify the parameters required to execute the command.\n" + \
215
- f"3. Retrieve the specified parameters from the user's query.\n" + \
216
- f"4. It compares the parameters specified by the user with those required to execute the command and obtains the missing parameters.\n" + \
217
- f"5. The “Parameter = Default Value” is shown below, so use default values for missing parameters.\n" + \
218
- f" However, do not specify parameters that the command does not require for execution.\n" + \
219
- f" host = {args.host if hasattr(args, 'host') and args.host else self.default_host}\n" + \
220
- f" port = {args.port if hasattr(args, 'port') and args.port else self.default_port}\n" + \
221
- f" password = {args.password if hasattr(args, 'password') and args.password else self.default_pass}\n" + \
222
- f" svname = {args.svname if hasattr(args, 'svname') and args.svname else self.default_svname}\n" + \
223
- f" data = {args.data if hasattr(args, 'data') and args.data else self.default_data}\n" + \
224
- f" retry_count = {args.retry_count if hasattr(args, 'retry_count') and args.retry_count else 3}\n" + \
225
- f" retry_interval = {args.retry_interval if hasattr(args, 'retry_interval') and args.retry_interval else 3}\n" + \
226
- f" timeout = {args.timeout if hasattr(args, 'timeout') and args.timeout else 15}\n" + \
227
- f" output_json = {args.output_json if hasattr(args, 'output_json') and args.output_json else None}\n" + \
228
- f" output_json_append = {args.output_json_append if hasattr(args, 'output_json_append') and args.output_json_append else False}\n" + \
229
- f" stdout_log = {args.stdout_log if hasattr(args, 'stdout_log') and args.stdout_log else False}\n" + \
230
- f" capture_stdout = {args.capture_stdout if hasattr(args, 'capture_stdout') and args.capture_stdout else False}\n" + \
231
- f" capture_maxsize = {args.capture_maxsize if hasattr(args, 'capture_maxsize') and args.capture_maxsize else 100}\n" + \
232
- f" tag = {args.tag if hasattr(args, 'tag') and args.tag else None}\n" + \
233
- f" clmsg_id = {args.clmsg_id if hasattr(args, 'clmsg_id') and args.clmsg_id else None}\n" + \
234
- f"6. Use None for parameters that are missing even with the above parameters.\n" + \
235
- f"7. Execute the command using the above parameters and present the results of the command to the user in JSON.\n" + \
236
- f"8. If you receive an error stating that an unexpected parameter was received, rerun the program without that parameter.\n" + \
237
- f"9. If an error occurs, provide the user with the command name, parameters, and error description.\n"
238
- """
239
179
 
240
180
  description = args.agent_description if args.agent_description else description
241
181
  instruction = args.agent_instruction if args.agent_instruction else instruction
@@ -360,7 +300,7 @@ class AgentBase(feature.ResultEdgeFeature):
360
300
  common.reset_logger("google_adk.google.adk.sessions.database_session_service")
361
301
  common.reset_logger("mcp.server.streamable_http_manager")
362
302
  # モジュールインポート
363
- from mcp.server.fastmcp import FastMCP
303
+ from fastmcp import FastMCP
364
304
  from google.adk.sessions import BaseSessionService
365
305
  mcp:FastMCP = self.create_mcpserver(args)
366
306
  session_service:BaseSessionService = self.create_session_service(args)
@@ -410,8 +350,7 @@ class AgentBase(feature.ResultEdgeFeature):
410
350
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
411
351
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),)
412
352
  fn = f"{mode}_{cmd}"
413
- func_txt = f'@mcp.tool()\n'
414
- func_txt += f'def {fn}(' + ", ".join([f'{o["opt"]}:{_t2s(o, False)}' for o in choices]) + '):\n'
353
+ func_txt = f'def {fn}(' + ", ".join([f'{o["opt"]}:{_t2s(o, False)}' for o in choices]) + '):\n'
415
354
  func_txt += f' """\n'
416
355
  func_txt += f' {discription}\n'
417
356
  func_txt += f' Args:\n'
@@ -472,6 +411,9 @@ class AgentBase(feature.ResultEdgeFeature):
472
411
  exec(func_txt,
473
412
  dict(time=time,List=List, argparse=argparse, common=common, Options=Options, logging=logging, signin=signin,),
474
413
  dict(tools=tools, mcp=mcp))
414
+ exec(f"@mcp.tool\n{func_txt}",
415
+ dict(time=time,List=List, argparse=argparse, common=common, Options=Options, logging=logging, signin=signin,),
416
+ dict(tools=[], mcp=mcp))
475
417
  root_agent = self.create_agent(logger, args, tools)
476
418
  runner = self.create_runner(logger, args, session_service, root_agent)
477
419
  if logger.level == logging.DEBUG:
@@ -45,7 +45,7 @@ class CmdList(feature.OneshotResultEdgeFeature):
45
45
  dict(opt="kwd", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
46
46
  discription_ja=f"検索したいコマンド名を指定します。中間マッチで検索します。",
47
47
  discription_en=f"Specify the name of the command you want to search. Search with intermediate matches."),
48
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=False, multi=False, hide=True, choice=None,
48
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=False, multi=False, hide=True, choice=None,
49
49
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。",
50
50
  discription_en="Specify a file containing users and passwords with which they can signin."),
51
51
  dict(opt="groups", type=Options.T_STR, default=None, required=False, multi=True, hide=True, choice=None,
@@ -45,7 +45,7 @@ class CmdLoad(feature.OneshotResultEdgeFeature):
45
45
  dict(opt="title", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
46
46
  discription_ja=f"読込みたいコマンド名を指定します。",
47
47
  discription_en=f"Specify the name of the command to be read."),
48
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=False, multi=False, hide=True, choice=None,
48
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=False, multi=False, hide=True, choice=None,
49
49
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。",
50
50
  discription_en="Specify a file containing users and passwords with which they can signin."),
51
51
  dict(opt="groups", type=Options.T_STR, default=None, required=False, multi=True, hide=True, choice=None,
@@ -58,7 +58,7 @@ class WebApikeyAdd(feature.UnsupportEdgeFeature):
58
58
  dict(opt="apikey_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
59
59
  discription_ja="このユーザーのApiKey名を指定します。",
60
60
  discription_en="Specify the ApiKey name for this user."),
61
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
61
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
62
62
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
63
63
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
64
64
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -58,7 +58,7 @@ class WebApikeyDel(feature.UnsupportEdgeFeature):
58
58
  dict(opt="apikey_name", type=Options.T_STR, default=None, required=True, multi=False, hide=False, choice=None,
59
59
  discription_ja="このユーザーのApiKey名を指定します。",
60
60
  discription_en="Specify the ApiKey name for this user."),
61
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
61
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
62
62
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
63
63
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
64
64
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -61,7 +61,7 @@ class WebGroupAdd(feature.UnsupportEdgeFeature):
61
61
  dict(opt="group_parent", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
62
62
  discription_ja="親グループ名を指定します。",
63
63
  discription_en="Specifies the parent group name."),
64
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
64
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
65
65
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
66
66
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
67
67
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -55,7 +55,7 @@ class WebGroupDel(feature.UnsupportEdgeFeature):
55
55
  dict(opt="group_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
56
56
  discription_ja="グループIDを指定します。",
57
57
  discription_en="Specify the group ID. Do not duplicate other groups."),
58
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
58
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
59
59
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
60
60
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
61
61
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -61,7 +61,7 @@ class WebGroupEdit(feature.UnsupportEdgeFeature):
61
61
  dict(opt="group_parent", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
62
62
  discription_ja="親グループ名を指定します。",
63
63
  discription_en="Specifies the parent group name."),
64
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
64
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
65
65
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
66
66
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
67
67
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -55,7 +55,7 @@ class WebGroupList(feature.OneshotResultEdgeFeature):
55
55
  dict(opt="group_name", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
56
56
  discription_ja="グループ名を指定して取得します。省略した時は全てのグループを取得します。",
57
57
  discription_en="Retrieved by specifying a group name. If omitted, all groups are retrieved."),
58
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
58
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
59
59
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
60
60
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
61
61
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -157,32 +157,12 @@ class WebStart(feature.UnsupportEdgeFeature, agent_base.AgentBase):
157
157
  w = None
158
158
  try:
159
159
  args.gui_mode = False if not hasattr(args, 'gui_mode') or not args.gui_mode else args.gui_mode
160
- ssl_cert = None if args.ssl_cert is None else Path(args.ssl_cert)
161
- ssl_key = None if args.ssl_key is None else Path(args.ssl_key)
162
- ssl_ca_certs = None if args.ssl_ca_certs is None else Path(args.ssl_ca_certs)
163
- w = web.Web(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
164
- redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname,
165
- client_only=args.client_only, doc_root=args.doc_root, gui_html=args.gui_html, filer_html=args.filer_html,
166
- result_html=args.result_html, users_html=args.users_html,
167
- assets=args.assets, signin_html=args.signin_html, signin_file=args.signin_file, gui_mode=args.gui_mode)
168
- agent_runner = None
169
- mcp = None
170
- logger.info(f"Agent={args.agent}")
171
- if args.agent=='use':
172
- if args.agent_session_store == 'sqlite':
173
- args.agent_session_dburl = "sqlite://" + pathname2url(str(w.agent_path / 'session.db'))
174
- elif args.agent_session_store == 'postgresql':
175
- args.agent_session_dburl = f"postgresql+psycopg://{args.agent_pg_user}:{args.agent_pg_password}@{args.agent_pg_host}:{args.agent_pg_port}/{args.agent_pg_dbname}"
176
- else:
177
- args.agent_session_dburl = None
178
- agent_runner, mcp = self.init_agent_runner(logger, args)
179
- w.start(allow_host=args.allow_host, listen_port=args.listen_port, ssl_listen_port=args.ssl_listen_port,
180
- ssl_cert=ssl_cert, ssl_key=ssl_key, ssl_keypass=args.ssl_keypass, ssl_ca_certs=ssl_ca_certs,
181
- session_domain=args.session_domain, session_path=args.session_path,
182
- session_secure=args.session_secure, session_timeout=args.session_timeout,
183
- outputs_key=args.outputs_key, guvicorn_workers=args.guvicorn_workers, guvicorn_timeout=args.guvicorn_timeout,
184
- agent_runner=agent_runner, mcp=mcp, mcp_listen_port=args.mcp_listen_port, mcp_ssl_listen_port=args.mcp_ssl_listen_port)
185
-
160
+ w = self.createWeb(logger, args)
161
+ agent_runner, mcp = self._init_agent_runner(w, logger, args)
162
+ args.ssl_cert = None if args.ssl_cert is None else Path(args.ssl_cert)
163
+ args.ssl_key = None if args.ssl_key is None else Path(args.ssl_key)
164
+ args.ssl_ca_certs = None if args.ssl_ca_certs is None else Path(args.ssl_ca_certs)
165
+ self.start(w, agent_runner, mcp, logger, args)
186
166
  msg = dict(success="web complate.")
187
167
  common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
188
168
  return 0, msg, w
@@ -191,3 +171,62 @@ class WebStart(feature.UnsupportEdgeFeature, agent_base.AgentBase):
191
171
  msg = dict(warn=f"Web server start error. {e}")
192
172
  common.print_format(msg, args.format, tm, args.output_json, args.output_json_append, pf=pf)
193
173
  return 1, msg, w
174
+
175
+ def createWeb(self, logger:logging.Logger, args:argparse.Namespace) -> web.Web:
176
+ """
177
+ Webオブジェクトを作成します
178
+
179
+ Args:
180
+ logger (logging.Logger): ロガー
181
+ args (argparse.Namespace): 引数
182
+
183
+ Returns:
184
+ web.Web: Webオブジェクト
185
+ """
186
+ w = web.Web(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
187
+ redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname,
188
+ client_only=args.client_only, doc_root=args.doc_root, gui_html=args.gui_html, filer_html=args.filer_html,
189
+ result_html=args.result_html, users_html=args.users_html,
190
+ assets=args.assets, signin_html=args.signin_html, signin_file=args.signin_file, gui_mode=args.gui_mode)
191
+ return w
192
+
193
+ def _init_agent_runner(self, w:web.Web, logger:logging.Logger, args:argparse.Namespace) -> Tuple[Any, Any]:
194
+ """
195
+ エージェントをセットアップします
196
+
197
+ Args:
198
+ w (web.Web): Webオブジェクト
199
+ logger (logging.Logger): ロガー
200
+ args (argparse.Namespace): 引数
201
+
202
+ Returns:
203
+ Tuple[agent_base.AgentBase, Any]: エージェントオブジェクト, MCPオブジェクト
204
+ """
205
+ logger.info(f"Agent={args.agent}")
206
+ if args.agent=='use':
207
+ if args.agent_session_store == 'sqlite':
208
+ args.agent_session_dburl = "sqlite://" + pathname2url(str(w.agent_path / 'session.db'))
209
+ elif args.agent_session_store == 'postgresql':
210
+ args.agent_session_dburl = f"postgresql+psycopg://{args.agent_pg_user}:{args.agent_pg_password}@{args.agent_pg_host}:{args.agent_pg_port}/{args.agent_pg_dbname}"
211
+ else:
212
+ args.agent_session_dburl = None
213
+ return self.init_agent_runner(logger, args)
214
+ return None, None
215
+
216
+ def start(self, w:web.Web, agent_runner, mcp, logger:logging.Logger, args:argparse.Namespace) -> None:
217
+ """
218
+ Webモードを起動します
219
+
220
+ Args:
221
+ w (web.Web): Webオブジェクト
222
+ agent_runner: エージェントランナー
223
+ mcp: MCPオブジェクト
224
+ logger (logging.Logger): ロガー
225
+ args (argparse.Namespace): 引数
226
+ """
227
+ w.start(allow_host=args.allow_host, listen_port=args.listen_port, ssl_listen_port=args.ssl_listen_port,
228
+ ssl_cert=args.ssl_cert, ssl_key=args.ssl_key, ssl_keypass=args.ssl_keypass, ssl_ca_certs=args.ssl_ca_certs,
229
+ session_domain=args.session_domain, session_path=args.session_path,
230
+ session_secure=args.session_secure, session_timeout=args.session_timeout,
231
+ outputs_key=args.outputs_key, guvicorn_workers=args.guvicorn_workers, guvicorn_timeout=args.guvicorn_timeout,
232
+ agent_runner=agent_runner, mcp=mcp,)
@@ -70,7 +70,7 @@ class WebUserAdd(feature.UnsupportEdgeFeature):
70
70
  dict(opt="user_group", type=Options.T_STR, default=None, required=True, multi=True, hide=False, choice=None,
71
71
  discription_ja="ユーザーが所属するグループを指定します。",
72
72
  discription_en="Specifies the groups to which the user belongs."),
73
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
73
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
74
74
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
75
75
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
76
76
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -55,7 +55,7 @@ class WebUserDel(feature.UnsupportEdgeFeature):
55
55
  dict(opt="user_id", type=Options.T_INT, default=None, required=True, multi=False, hide=False, choice=None,
56
56
  discription_ja="ユーザーIDを指定します。",
57
57
  discription_en="Specify the user ID."),
58
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
58
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
59
59
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
60
60
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
61
61
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -70,7 +70,7 @@ class WebUserEdit(feature.UnsupportEdgeFeature):
70
70
  dict(opt="user_group", type=Options.T_STR, default=None, required=True, multi=True, hide=False, choice=None,
71
71
  discription_ja="ユーザーが所属するグループを指定します。",
72
72
  discription_en="Specifies the groups to which the user belongs."),
73
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
73
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
74
74
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
75
75
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
76
76
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -55,7 +55,7 @@ class WebUserList(feature.OneshotResultEdgeFeature):
55
55
  dict(opt="user_name", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
56
56
  discription_ja="ユーザー名を指定して取得します。省略した時は全てのユーザーを取得します。",
57
57
  discription_en="Retrieved by specifying a user name. If omitted, all users are retrieved."),
58
- dict(opt="signin_file", type=Options.T_FILE, default=None, required=True, multi=False, hide=False, choice=None,
58
+ dict(opt="signin_file", type=Options.T_FILE, default=f".{self.ver.__appid__}/user_list.yml", required=True, multi=False, hide=False, choice=None,
59
59
  discription_ja="サインイン可能なユーザーとパスワードを記載したファイルを指定します。省略した時は認証を要求しません。",
60
60
  discription_en="Specify a file containing users and passwords with which they can signin. If omitted, no authentication is required."),
61
61
  dict(opt="stdout_log", type=Options.T_BOOL, default=True, required=False, multi=False, hide=True, choice=[True, False],
@@ -60,7 +60,7 @@ class Agent(feature.WebFeature):
60
60
  session_id = form.get('session_id', None)
61
61
  sessions = await web.list_agent_sessions(web.agent_runner.session_service, user_id, session_id=session_id)
62
62
  data = [dict(id=s.id, app_name=s.app_name, user_id=s.user_id, last_update_time=s.last_update_time,
63
- events=[dict(author=ev.author,text=ev.content.parts[0].text) for ev in s.events if ev.content and ev.content.parts]) for s in sessions]
63
+ events=[dict(author=ev.author,text=ev.content.parts[0].text) for ev in s.events if ev.content and ev.content.parts]) for s in sessions if s]
64
64
  data.reverse() # 最新のセッションを先頭にする
65
65
  return dict(success=data)
66
66
 
@@ -204,14 +204,20 @@ class Agent(feature.WebFeature):
204
204
  outputs = dict()
205
205
  if event.turn_complete:
206
206
  outputs['turn_complete'] = True
207
- yield json.dumps(outputs, default=common.default_json_enc)
207
+ yield common.to_str(outputs)
208
208
  if event.interrupted:
209
209
  outputs['interrupted'] = True
210
- yield json.dumps(outputs, default=common.default_json_enc)
210
+ yield common.to_str(outputs)
211
211
  #if event.is_final_response():
212
212
  msg = None
213
213
  if event.content and event.content.parts:
214
214
  msg = "\n".join([p.text for p in event.content.parts if p and p.text])
215
+ calls = event.get_function_calls()
216
+ if calls:
217
+ msg += '\n```json{"function_calls":'+common.to_str([dict(fn=c.name,args=c.args) for c in calls])+'}```'
218
+ responses = event.get_function_responses()
219
+ if responses:
220
+ msg += '\n```json{"function_responses":'+common.to_str([dict(fn=r.name, res=r.response) for r in responses])+'}```'
215
221
  elif event.actions and event.actions.escalate:
216
222
  msg = f"Agent escalated: {event.error_message or 'No specific message.'}"
217
223
  if msg:
@@ -219,7 +225,7 @@ class Agent(feature.WebFeature):
219
225
 
220
226
  outputs['message'] = msg
221
227
  web.options.audit_exec(sock, web, body=dict(agent_session=agent_session.id, result=msg))
222
- yield json.dumps(outputs, default=common.default_json_enc)
228
+ yield common.to_str(outputs)
223
229
  if event.is_final_response():
224
230
  break
225
231
  except WebSocketDisconnect:
@@ -295,12 +295,18 @@ class Options:
295
295
  discription_ja="クライアントのメッセージIDを指定します。省略した場合はuuid4で生成されます。",
296
296
  discription_en="Specifies the message ID of the client. If omitted, uuid4 will be generated.",
297
297
  choice=None)
298
+ self._options["description"] = dict(
299
+ type=Options.T_TEXT, default=None, required=False, multi=False, hide=True,
300
+ discription_ja="このコマンド登録の説明文を指定します。Agentがこのコマンドの用途を理解するのに使用します。",
301
+ discription_en="Specifies a description of this command registration, used to help the Agent understand the use of this command.",
302
+ choice=None)
298
303
 
299
304
  def init_debugoption(self):
300
305
  # デバックオプションを追加
301
306
  self._options["debug"]["opt"] = "debug"
302
307
  self._options["tag"]["opt"] = "tag"
303
308
  self._options["clmsg_id"]["opt"] = "clmsg_id"
309
+ self._options["description"]["opt"] = "description"
304
310
  for key, mode in self._options["cmd"].items():
305
311
  if type(mode) is not dict:
306
312
  continue
@@ -315,6 +321,8 @@ class Options:
315
321
  c["choice"].append(self._options["tag"])
316
322
  if "clmsg_id" not in [_o['opt'] for _o in c["choice"]]:
317
323
  c["choice"].append(self._options["clmsg_id"])
324
+ if "description" not in [_o['opt'] for _o in c["choice"]]:
325
+ c["choice"].append(self._options["description"])
318
326
  if c["opt"] not in [_o['opt'] for _o in self._options["cmd"]["choice"]]:
319
327
  self._options["cmd"]["choice"] += [c]
320
328
  self._options["mode"][key] = mode