cmdbox 0.6.4.1__tar.gz → 0.6.4.2__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 (412) hide show
  1. {cmdbox-0.6.4.1/cmdbox.egg-info → cmdbox-0.6.4.2}/PKG-INFO +1 -1
  2. cmdbox-0.6.4.2/cmdbox/app/features/cli/cmdbox_vision_install.py +213 -0
  3. cmdbox-0.6.4.2/cmdbox/app/features/cli/cmdbox_vision_predict.py +192 -0
  4. cmdbox-0.6.4.2/cmdbox/app/features/cli/cmdbox_vision_start.py +230 -0
  5. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_versions_used.py +1 -1
  6. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/version.py +2 -2
  7. cmdbox-0.6.4.2/cmdbox/web/voicevox_license_list.txt +41 -0
  8. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2/cmdbox.egg-info}/PKG-INFO +1 -1
  9. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox.egg-info/SOURCES.txt +4 -0
  10. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/LICENSE +0 -0
  11. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/MANIFEST.in +0 -0
  12. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/README.md +0 -0
  13. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/__init__.py +0 -0
  14. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/__main__.py +0 -0
  15. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/__init__.py +0 -0
  16. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/app.py +0 -0
  17. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/__init__.py +0 -0
  18. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/azure_signin.py +0 -0
  19. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/azure_signin_saml.py +0 -0
  20. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/github_signin.py +0 -0
  21. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/google_signin.py +0 -0
  22. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/signin.py +0 -0
  23. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/auth/signin_saml.py +0 -0
  24. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/client.py +0 -0
  25. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/common.py +0 -0
  26. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/commons/convert.py +0 -0
  27. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/commons/loghandler.py +0 -0
  28. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/commons/module.py +0 -0
  29. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/commons/redis_client.py +0 -0
  30. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/edge.py +0 -0
  31. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/edge_tool.py +0 -0
  32. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/feature.py +0 -0
  33. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/agent_base.py +0 -0
  34. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/audit_base.py +0 -0
  35. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_agent_mcp_client.py +0 -0
  36. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_agent_mcp_proxy.py +0 -0
  37. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
  38. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_audit_delete.py +0 -0
  39. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_audit_search.py +0 -0
  40. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_audit_write.py +0 -0
  41. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
  42. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
  43. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
  44. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
  45. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
  46. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
  47. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
  48. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +0 -0
  49. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_http.py +0 -0
  50. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
  51. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_cmd_list.py +0 -0
  52. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_cmd_load.py +0 -0
  53. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
  54. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
  55. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
  56. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
  57. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
  58. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
  59. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
  60. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_tts_install.py +0 -0
  61. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_tts_say.py +0 -0
  62. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_tts_start.py +0 -0
  63. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_tts_stop.py +0 -0
  64. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +0 -0
  65. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +0 -0
  66. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_gencert.py +0 -0
  67. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
  68. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_group_add.py +0 -0
  69. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_group_del.py +0 -0
  70. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +0 -0
  71. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_group_list.py +0 -0
  72. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_start.py +0 -0
  73. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_stop.py +0 -0
  74. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_user_add.py +0 -0
  75. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_user_del.py +0 -0
  76. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +0 -0
  77. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/cli/cmdbox_web_user_list.py +0 -0
  78. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_agent.py +0 -0
  79. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
  80. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_audit.py +0 -0
  81. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
  82. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
  83. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
  84. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
  85. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
  86. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
  87. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_do_signout.py +0 -0
  88. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +0 -0
  89. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
  90. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_filer download.py +0 -0
  91. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
  92. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
  93. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
  94. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
  95. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
  96. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
  97. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
  98. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
  99. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
  100. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
  101. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
  102. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
  103. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
  104. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
  105. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
  106. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
  107. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
  108. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_signin.py +0 -0
  109. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
  110. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
  111. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
  112. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
  113. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/filer.py +0 -0
  114. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/mcp.py +0 -0
  115. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/options.py +0 -0
  116. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/server.py +0 -0
  117. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/app/web.py +0 -0
  118. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/autoload.py +0 -0
  119. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/features.yml +0 -0
  120. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
  121. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/requirements.txt +0 -0
  122. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
  123. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
  124. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
  125. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/app/features/cli/__init__.py +0 -0
  126. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
  127. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
  128. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
  129. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/extensions/features.yml +0 -0
  130. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/extensions/user_list.yml +0 -0
  131. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +0 -0
  132. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/version.py +0 -0
  133. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
  134. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
  135. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/extensions/user_list.yml +0 -0
  136. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_APScheduler_3_11_0_MIT_License.txt +0 -0
  137. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_Authlib_1_6_1_BSD_License.txt +0 -0
  138. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_Jinja2_3_1_6_BSD_License.txt +0 -0
  139. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_MarkupSafe_3_0_2_BSD_License.txt +0 -0
  140. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_PyJWT_2_10_1_MIT_License.txt +0 -0
  141. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_PyYAML_6_0_2_MIT_License.txt +0 -0
  142. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_Pygments_2_19_2_BSD_License.txt +0 -0
  143. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_SQLAlchemy_2_0_43_MIT.txt +0 -0
  144. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_Sphinx_8_2_3_UNKNOWN.txt +0 -0
  145. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_Werkzeug_3_1_1_BSD_License.txt +0 -0
  146. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_absolufy-imports_0_3_1_MIT_License.txt +0 -0
  147. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_aiohappyeyeballs_2_6_1_Python_Software_Foundation_License.txt +0 -0
  148. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_aiohttp_3_12_15_Apache-2_0_AND_MIT.txt +0 -0
  149. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_aiosignal_1_4_0_Apache_Software_License.txt +0 -0
  150. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_alabaster_1_0_0_BSD_License.txt +0 -0
  151. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_annotated-types_0_7_0_MIT_License.txt +0 -0
  152. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_anyio_4_10_0_UNKNOWN.txt +0 -0
  153. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_argcomplete_3_6_2_Apache_Software_License.txt +0 -0
  154. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_async-timeout_5_0_1_Apache_Software_License.txt +0 -0
  155. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_attrs_25_3_0_UNKNOWN.txt +0 -0
  156. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_babel_2_17_0_BSD_License.txt +0 -0
  157. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_backoff_2_2_1_MIT_License.txt +0 -0
  158. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_backports_tarfile_1_2_0_MIT_License.txt +0 -0
  159. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_cachetools_5_5_2_MIT_License.txt +0 -0
  160. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_certifi_2025_8_3_Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
  161. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_cffi_1_17_1_MIT_License.txt +0 -0
  162. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_charset-normalizer_3_4_3_MIT.txt +0 -0
  163. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_click_8_2_1_UNKNOWN.txt +0 -0
  164. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_cloudpickle_3_1_1_BSD_License.txt +0 -0
  165. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_colorama_0_4_6_BSD_License.txt +0 -0
  166. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_cryptography_45_0_6_Apache-2_0_OR_BSD-3-Clause.txt +0 -0
  167. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_cyclopts_3_22_5_Apache_Software_License.txt +0 -0
  168. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_distro_1_9_0_Apache_Software_License.txt +0 -0
  169. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_dnspython_2_7_0_ISC_License-ISCL.txt +0 -0
  170. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_docstring_parser_0_17_0_MIT_License.txt +0 -0
  171. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_docutils_0_21_2_BSD_License-GNU_General_Public_License-GPL-Public_Domain-Python_Software_Foundation_License.txt +0 -0
  172. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_email_validator_2_2_0_The_Unlicense-Unlicense.txt +0 -0
  173. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_exceptiongroup_1_3_0_MIT_License.txt +0 -0
  174. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_fastapi-sso_0_18_0_MIT_License.txt +0 -0
  175. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_fastapi_0_116_1_MIT_License.txt +0 -0
  176. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_fastmcp_2_11_3_Apache_Software_License.txt +0 -0
  177. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_filelock_3_18_0_The_Unlicense-Unlicense.txt +0 -0
  178. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_frozenlist_1_7_0_Apache-2_0.txt +0 -0
  179. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_fsspec_2025_7_0_BSD_License.txt +0 -0
  180. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_gevent_25_5_1_MIT.txt +0 -0
  181. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-adk_1_10_0_Apache_Software_License.txt +0 -0
  182. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-api-core_2_25_1_Apache_Software_License.txt +0 -0
  183. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-api-python-client_2_178_0_Apache_Software_License.txt +0 -0
  184. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-auth-httplib2_0_2_0_Apache_Software_License.txt +0 -0
  185. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-auth_2_40_3_Apache_Software_License.txt +0 -0
  186. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-aiplatform_1_108_0_Apache_2_0.txt +0 -0
  187. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-appengine-logging_1_6_2_Apache_Software_License.txt +0 -0
  188. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-audit-log_0_3_2_Apache_Software_License.txt +0 -0
  189. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-bigquery_3_35_1_Apache_Software_License.txt +0 -0
  190. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-core_2_4_3_Apache_Software_License.txt +0 -0
  191. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-logging_3_12_1_Apache_Software_License.txt +0 -0
  192. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-resource-manager_1_14_2_Apache_Software_License.txt +0 -0
  193. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-secret-manager_2_24_0_Apache_Software_License.txt +0 -0
  194. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-speech_2_33_0_Apache_Software_License.txt +0 -0
  195. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-storage_2_19_0_Apache_Software_License.txt +0 -0
  196. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-cloud-trace_1_16_2_Apache_Software_License.txt +0 -0
  197. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-crc32c_1_7_1_Apache_2_0.txt +0 -0
  198. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-genai_1_29_0_Apache_Software_License.txt +0 -0
  199. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_google-resumable-media_2_7_2_Apache_Software_License.txt +0 -0
  200. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_googleapis-common-protos_1_70_0_Apache_Software_License.txt +0 -0
  201. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_graphviz_0_21_UNKNOWN.txt +0 -0
  202. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_greenlet_3_2_4_MIT_AND_Python-2_0.txt +0 -0
  203. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_grpc-google-iam-v1_0_14_2_Apache_Software_License.txt +0 -0
  204. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_grpcio-status_1_74_0_Apache_Software_License.txt +0 -0
  205. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_grpcio_1_74_0_Apache_Software_License.txt +0 -0
  206. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_gunicorn_23_0_0_MIT_License.txt +0 -0
  207. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_h11_0_16_0_MIT_License.txt +0 -0
  208. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_httpcore_1_0_9_BSD_License.txt +0 -0
  209. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_httplib2_0_22_0_MIT_License.txt +0 -0
  210. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_httpx-sse_0_4_1_MIT.txt +0 -0
  211. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_httpx_0_28_1_BSD_License.txt +0 -0
  212. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_huggingface-hub_0_34_4_Apache_Software_License.txt +0 -0
  213. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_id_1_5_0_Apache_Software_License.txt +0 -0
  214. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_idna_3_10_BSD_License.txt +0 -0
  215. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_imagesize_1_4_1_MIT_License.txt +0 -0
  216. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_importlib_metadata_8_7_0_Apache_Software_License.txt +0 -0
  217. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_isodate_0_7_2_BSD_License.txt +0 -0
  218. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_itsdangerous_2_2_0_BSD_License.txt +0 -0
  219. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jaraco_classes_3_4_0_MIT_License.txt +0 -0
  220. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jaraco_context_6_0_1_MIT_License.txt +0 -0
  221. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jaraco_functools_4_2_1_UNKNOWN.txt +0 -0
  222. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jiter_0_10_0_MIT_License.txt +0 -0
  223. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jsonschema-path_0_3_4_Apache_Software_License.txt +0 -0
  224. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jsonschema-specifications_2025_4_1_UNKNOWN.txt +0 -0
  225. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_jsonschema_4_25_0_UNKNOWN.txt +0 -0
  226. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_keyring_25_6_0_MIT_License.txt +0 -0
  227. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_lazy-object-proxy_1_11_0_BSD_License.txt +0 -0
  228. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_litellm-enterprise_0_1_19_UNKNOWN.txt +0 -0
  229. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_litellm_1_75_5_post1_MIT_License.txt +0 -0
  230. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_markdown-it-py_4_0_0_MIT_License.txt +0 -0
  231. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_mcp_1_12_4_MIT_License.txt +0 -0
  232. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_mdurl_0_1_2_MIT_License.txt +0 -0
  233. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_more-itertools_10_7_0_MIT_License.txt +0 -0
  234. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_multidict_6_6_4_Apache_License_2_0.txt +0 -0
  235. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_nh3_0_3_0_MIT.txt +0 -0
  236. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_numpy_2_3_2_BSD_License.txt +0 -0
  237. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_oauthlib_3_3_1_BSD-3-Clause.txt +0 -0
  238. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_openai_1_99_9_Apache_Software_License.txt +0 -0
  239. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_openapi-core_0_19_5_BSD_License.txt +0 -0
  240. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_openapi-pydantic_0_5_1_MIT_License.txt +0 -0
  241. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_openapi-schema-validator_0_6_3_BSD_License.txt +0 -0
  242. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_openapi-spec-validator_0_7_2_Apache_Software_License.txt +0 -0
  243. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_opentelemetry-api_1_36_0_UNKNOWN.txt +0 -0
  244. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_opentelemetry-exporter-gcp-trace_1_9_0_Apache_Software_License.txt +0 -0
  245. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_opentelemetry-resourcedetector-gcp_1_9_0a0_Apache_Software_License.txt +0 -0
  246. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_opentelemetry-sdk_1_36_0_UNKNOWN.txt +0 -0
  247. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_opentelemetry-semantic-conventions_0_57b0_UNKNOWN.txt +0 -0
  248. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_orjson_3_11_1_Apache_Software_License-MIT_License.txt +0 -0
  249. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_packaging_25_0_Apache_Software_License-BSD_License.txt +0 -0
  250. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_parse_1_20_2_MIT_License.txt +0 -0
  251. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pathable_0_4_4_Apache_Software_License.txt +0 -0
  252. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pillow_11_3_0_UNKNOWN.txt +0 -0
  253. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pip_24_0_MIT_License.txt +0 -0
  254. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_plyer_2_1_0_MIT_License.txt +0 -0
  255. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_prettytable_3_16_0_UNKNOWN.txt +0 -0
  256. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_prompt_toolkit_3_0_51_BSD_License.txt +0 -0
  257. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_propcache_0_3_2_Apache_Software_License.txt +0 -0
  258. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_proto-plus_1_26_1_Apache_Software_License.txt +0 -0
  259. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_protobuf_6_31_1_3-Clause_BSD_License.txt +0 -0
  260. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_psycopg-binary_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
  261. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_psycopg_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
  262. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pyasn1_0_6_1_BSD_License.txt +0 -0
  263. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pyasn1_modules_0_4_2_BSD_License.txt +0 -0
  264. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pycparser_2_22_BSD_License.txt +0 -0
  265. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pycryptodome_3_23_0_BSD_License-Public_Domain.txt +0 -0
  266. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pydantic-settings_2_10_1_MIT_License.txt +0 -0
  267. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pydantic_2_11_7_MIT_License.txt +0 -0
  268. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pydantic_core_2_33_2_MIT_License.txt +0 -0
  269. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pyparsing_3_2_3_MIT_License.txt +0 -0
  270. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pyperclip_1_9_0_BSD_License.txt +0 -0
  271. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pystray_0_19_5_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
  272. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_python-dateutil_2_9_0_post0_Apache_Software_License-BSD_License.txt +0 -0
  273. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_python-dotenv_1_1_1_BSD_License.txt +0 -0
  274. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_python-multipart_0_0_20_Apache_Software_License.txt +0 -0
  275. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pywin32-ctypes_0_2_3_BSD-3-Clause.txt +0 -0
  276. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_pywin32_311_Python_Software_Foundation_License.txt +0 -0
  277. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_questionary_2_1_0_MIT_License.txt +0 -0
  278. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_readme_renderer_44_0_Apache_Software_License.txt +0 -0
  279. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_redis_6_4_0_MIT_License.txt +0 -0
  280. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_referencing_0_36_2_UNKNOWN.txt +0 -0
  281. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_regex_2025_7_34_UNKNOWN.txt +0 -0
  282. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_requests-toolbelt_1_0_0_Apache_Software_License.txt +0 -0
  283. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_requests_2_32_4_Apache_Software_License.txt +0 -0
  284. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_rfc3339-validator_0_1_4_MIT_License.txt +0 -0
  285. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_rfc3986_2_0_0_Apache_Software_License.txt +0 -0
  286. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_rich-rst_1_3_1_MIT_License.txt +0 -0
  287. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_rich_14_1_0_MIT_License.txt +0 -0
  288. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/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
  289. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_rpds-py_0_27_0_UNKNOWN.txt +0 -0
  290. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_rsa_4_9_1_Apache_Software_License.txt +0 -0
  291. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_setuptools_80_9_0_UNKNOWN.txt +0 -0
  292. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_shapely_2_1_1_BSD_License.txt +0 -0
  293. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_six_1_17_0_MIT_License.txt +0 -0
  294. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sniffio_1_3_1_Apache_Software_License-MIT_License.txt +0 -0
  295. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_snowballstemmer_3_0_1_BSD_License.txt +0 -0
  296. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinx-intl_2_3_2_UNKNOWN.txt +0 -0
  297. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinx-last-updated-by-git_0_3_8_BSD_License.txt +0 -0
  298. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinx-rtd-theme_3_0_2_MIT_License.txt +0 -0
  299. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinx-sitemap_2_7_2_UNKNOWN.txt +0 -0
  300. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinx_fontawesome_0_0_6_GNU_General_Public_License_v2-GPLv2.txt +0 -0
  301. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-applehelp_2_0_0_BSD_License.txt +0 -0
  302. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-devhelp_2_0_0_BSD_License.txt +0 -0
  303. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-htmlhelp_2_1_0_BSD_License.txt +0 -0
  304. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-jquery_4_1_BSD_License.txt +0 -0
  305. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-jsmath_1_0_1_BSD_License.txt +0 -0
  306. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-qthelp_2_0_0_BSD_License.txt +0 -0
  307. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sphinxcontrib-serializinghtml_2_0_0_BSD_License.txt +0 -0
  308. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_sse-starlette_3_0_2_UNKNOWN.txt +0 -0
  309. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_starlette_0_47_2_BSD_License.txt +0 -0
  310. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tabulate_0_9_0_MIT_License.txt +0 -0
  311. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tenacity_9_1_2_Apache_Software_License.txt +0 -0
  312. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tiktoken_0_11_0_MIT_License-Copyright-c-2022_OpenAI-Shantanu_Jain-Permission_is_hereby_granted-free_of_charge-to_any_per.txt +0 -0
  313. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tokenizers_0_21_4_Apache_Software_License.txt +0 -0
  314. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tomli_2_2_1_MIT_License.txt +0 -0
  315. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tqdm_4_67_1_MIT_License-Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
  316. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_twine_6_1_0_Apache_Software_License.txt +0 -0
  317. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_typing-inspection_0_4_1_UNKNOWN.txt +0 -0
  318. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_typing_extensions_4_14_1_UNKNOWN.txt +0 -0
  319. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tzdata_2025_2_Apache_Software_License.txt +0 -0
  320. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_tzlocal_5_3_1_MIT_License.txt +0 -0
  321. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_uritemplate_4_2_0_BSD_3-Clause_OR_Apache-2_0.txt +0 -0
  322. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_urllib3_2_5_0_UNKNOWN.txt +0 -0
  323. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_uvicorn_0_35_0_BSD_License.txt +0 -0
  324. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_watchdog_6_0_0_Apache_Software_License.txt +0 -0
  325. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_wcwidth_0_2_13_MIT_License.txt +0 -0
  326. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_websockets_15_0_1_BSD_License.txt +0 -0
  327. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_wheel_0_45_1_MIT_License.txt +0 -0
  328. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_wsproto_1_2_0_MIT_License.txt +0 -0
  329. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_yarl_1_20_1_Apache_Software_License.txt +0 -0
  330. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_zipp_3_23_0_UNKNOWN.txt +0 -0
  331. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_zope_event_5_1_1_Zope_Public_License.txt +0 -0
  332. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/LICENSE_zope_interface_7_2_Zope_Public_License.txt +0 -0
  333. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/licenses/files.txt +0 -0
  334. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/logconf_cmdbox.yml +0 -0
  335. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/agent.html +0 -0
  336. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
  337. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
  338. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
  339. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
  340. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/agent.js +0 -0
  341. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/audit.js +0 -0
  342. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
  343. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/common.js +0 -0
  344. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
  345. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
  346. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/icon.png +0 -0
  347. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
  348. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
  349. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/main.js +0 -0
  350. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
  351. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
  352. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/result.js +0 -0
  353. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/signin.js +0 -0
  354. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/svgicon.js +0 -0
  355. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/users.js +0 -0
  356. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
  357. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
  358. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
  359. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
  360. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
  361. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/filer/filer.js +0 -0
  362. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/filer/main.css +0 -0
  363. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/filer/main.js +0 -0
  364. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/highlight/default.css +0 -0
  365. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
  366. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
  367. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
  368. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
  369. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
  370. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
  371. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
  372. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
  373. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
  374. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
  375. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
  376. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
  377. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
  378. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
  379. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
  380. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
  381. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  382. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
  383. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
  384. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
  385. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
  386. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/jquery-ui/package.json +0 -0
  387. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
  388. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
  389. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
  390. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
  391. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
  392. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
  393. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
  394. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
  395. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
  396. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
  397. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
  398. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
  399. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
  400. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/assets_license_list.txt +0 -0
  401. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/audit.html +0 -0
  402. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/filer.html +0 -0
  403. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/gui.html +0 -0
  404. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/result.html +0 -0
  405. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/signin.html +0 -0
  406. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox/web/users.html +0 -0
  407. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox.egg-info/dependency_links.txt +0 -0
  408. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox.egg-info/entry_points.txt +0 -0
  409. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox.egg-info/requires.txt +0 -0
  410. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/cmdbox.egg-info/top_level.txt +0 -0
  411. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/setup.cfg +0 -0
  412. {cmdbox-0.6.4.1 → cmdbox-0.6.4.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmdbox
3
- Version: 0.6.4.1
3
+ Version: 0.6.4.2
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
@@ -0,0 +1,213 @@
1
+ from cmdbox import version
2
+ from cmdbox.app import common, client, feature
3
+ from cmdbox.app.commons import convert, redis_client
4
+ from cmdbox.app.options import Options
5
+ from cmdbox.app.features.cli import cmdbox_vision_start
6
+ from pathlib import Path
7
+ from typing import Dict, Any, Tuple, List, Union
8
+ import argparse
9
+ import glob
10
+ import logging
11
+ import pip
12
+ import requests
13
+ import shutil
14
+ import subprocess
15
+ import sys
16
+
17
+
18
+ class VisionInstall(cmdbox_vision_start.VisionStart):
19
+ def get_mode(self) -> Union[str, List[str]]:
20
+ """
21
+ この機能のモードを返します
22
+
23
+ Returns:
24
+ Union[str, List[str]]: モード
25
+ """
26
+ return 'vision'
27
+
28
+ def get_cmd(self):
29
+ """
30
+ この機能のコマンドを返します
31
+
32
+ Returns:
33
+ str: コマンド
34
+ """
35
+ return 'install'
36
+
37
+ def get_option(self):
38
+ """
39
+ この機能のオプションを返します
40
+
41
+ Returns:
42
+ Dict[str, Any]: オプション
43
+ """
44
+ return dict(
45
+ use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=True, use_agent=False,
46
+ description_ja="画像/動画の推論エンジンをインストールします。",
47
+ description_en="Installs the image/video inference engine.",
48
+ choice=[
49
+ dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
50
+ description_ja="Redisサーバーのサービスホストを指定します。",
51
+ description_en="Specify the service host of the Redis server."),
52
+ dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
53
+ description_ja="Redisサーバーのサービスポートを指定します。",
54
+ description_en="Specify the service port of the Redis server."),
55
+ dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
56
+ description_ja=f"Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `{self.default_pass}` を使用します。",
57
+ description_en=f"Specify the access password of the Redis server (optional). If omitted, `{self.default_pass}` is used."),
58
+ dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
59
+ description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
60
+ description_en="Specify the service name of the inference server. If omitted, `server` is used."),
61
+ dict(opt="retry_count", type=Options.T_INT, default=3, required=False, multi=False, hide=True, choice=None,
62
+ description_ja="Redisサーバーへの再接続回数を指定します。0以下を指定すると永遠に再接続を行います。",
63
+ description_en="Specifies the number of reconnections to the Redis server.If less than 0 is specified, reconnection is forever."),
64
+ dict(opt="retry_interval", type=Options.T_INT, default=5, required=False, multi=False, hide=True, choice=None,
65
+ description_ja="Redisサーバーに再接続までの秒数を指定します。",
66
+ description_en="Specifies the number of seconds before reconnecting to the Redis server."),
67
+ dict(opt="timeout", type=Options.T_INT, default="300", required=False, multi=False, hide=True, choice=None,
68
+ description_ja="サーバーの応答が返ってくるまでの最大待ち時間を指定。",
69
+ description_en="Specify the maximum waiting time until the server responds."),
70
+ dict(opt="client_only", type=Options.T_BOOL, default=False, required=False, multi=False, hide=True, choice=[True, False],
71
+ description_ja="サーバーへの接続を行わないようにします。",
72
+ description_en="Do not make connections to the server."),
73
+ dict(opt="vision_engine", type=Options.T_STR, default="sam2", required=True, multi=False, hide=False,
74
+ choice=["sam2"],
75
+ description_ja="使用するVisionエンジンを指定します。",
76
+ description_en="Specify the Vision engine to use."),
77
+ ]
78
+ )
79
+
80
+ def get_svcmd(self):
81
+ """
82
+ この機能のサーバー側のコマンドを返します
83
+
84
+ Returns:
85
+ str: サーバー側のコマンド
86
+ """
87
+ return 'vision_install'
88
+
89
+ def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
90
+ """
91
+ この機能の実行を行います
92
+
93
+ Args:
94
+ logger (logging.Logger): ロガー
95
+ args (argparse.Namespace): 引数
96
+ tm (float): 実行開始時間
97
+ pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
98
+
99
+ Returns:
100
+ Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
101
+ """
102
+ if args.vision_engine is None:
103
+ msg = dict(warn=f"Please specify the --vision_engine option.")
104
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
105
+ return self.RESP_WARN, msg, None
106
+ if args.vision_engine == 'sam2':
107
+ vision_engine_b64 = convert.str2b64str(args.vision_engine)
108
+ if args.client_only:
109
+ # クライアントのみの場合は、サーバーに接続せずに実行
110
+ ret = self.install(common.random_string(), args.vision_engine, logger)
111
+ else:
112
+ cl = client.Client(logger, redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname)
113
+ ret = cl.redis_cli.send_cmd(self.get_svcmd(), [vision_engine_b64],
114
+ retry_count=args.retry_count, retry_interval=args.retry_interval, timeout=args.timeout, nowait=False)
115
+ common.print_format(ret, False, tm, None, False, pf=pf)
116
+ if 'success' not in ret:
117
+ return self.RESP_WARN, ret, None
118
+ return self.RESP_SUCCESS, ret, None
119
+
120
+ msg = dict(warn=f"Unsupported vision engine: {args.vision_engine}")
121
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
122
+ return self.RESP_WARN, msg, None
123
+
124
+ def is_cluster_redirect(self):
125
+ """
126
+ クラスター宛のメッセージの場合、メッセージを転送するかどうかを返します
127
+
128
+ Returns:
129
+ bool: メッセージを転送する場合はTrue
130
+ """
131
+ return False
132
+
133
+ def svrun(self, data_dir:Path, logger:logging.Logger, redis_cli:redis_client.RedisClient, msg:List[str],
134
+ sessions:Dict[str, Dict[str, Any]]) -> int:
135
+ """
136
+ この機能のサーバー側の実行を行います
137
+
138
+ Args:
139
+ data_dir (Path): データディレクトリ
140
+ logger (logging.Logger): ロガー
141
+ redis_cli (redis_client.RedisClient): Redisクライアント
142
+ msg (List[str]): 受信メッセージ
143
+ sessions (Dict[str, Dict[str, Any]]): セッション情報
144
+
145
+ Returns:
146
+ int: 終了コード
147
+ """
148
+ if logger.level == logging.DEBUG:
149
+ logger.debug(f"audit write svrun msg: {msg}")
150
+ vision_engine = convert.b64str2str(msg[2])
151
+ ret = self.install(msg[1], vision_engine, logger)
152
+
153
+ if 'success' not in ret:
154
+ redis_cli.rpush(msg[1], ret)
155
+ return self.RESP_WARN
156
+ return self.RESP_SUCCESS
157
+
158
+ def install(self, reskey:str, vision_engine:str, logger:logging.Logger) -> Dict[str, Any]:
159
+ """
160
+ SAML2をインストールします
161
+
162
+ Args:
163
+ reskey (str): レスポンスキー
164
+ vision_engine (str): Visionエンジン
165
+ logger (logging.Logger): ロガー
166
+
167
+ Returns:
168
+ Dict[str, Any]: 結果
169
+ """
170
+ try:
171
+ if vision_engine == 'sam2':
172
+ #===============================================================
173
+ # SAM2のモデルファイルのダウンロード
174
+ sam2_dir = Path(version.__file__).parent / '.sam2' / 'model'
175
+ # すでにダウンローダーが存在する場合は削除
176
+ if sam2_dir.exists():
177
+ shutil.rmtree(sam2_dir)
178
+ for mk, mv in self.VISION_MODEL.items():
179
+ model_file = sam2_dir / mv['path']
180
+ model_file.parent.mkdir(parents=True, exist_ok=True)
181
+ # モデルファイルを保存
182
+ logger.info(f"Downloading.. : {mv['url']}")
183
+ responce = requests.get(f"{mv['url']}", allow_redirects=True)
184
+ if responce.status_code != 200:
185
+ _msg = f"Failed to download SAM2 model: {responce.status_code} {responce.reason}. {mv['url']}"
186
+ logger.error(_msg, exc_info=True)
187
+ return dict(warn=_msg)
188
+ with open(model_file, mode='wb') as f:
189
+ f.write(responce.content)
190
+ #===============================================================
191
+ # SAM2のpythonライブラリのインストール
192
+ whl_url = f'git+https://github.com/facebookresearch/sam2.git'
193
+ # whlファイルをpipでインストール
194
+ if logger.level == logging.DEBUG:
195
+ logger.debug(f"pip install {whl_url}")
196
+ rescode = pip.main(['install', str(whl_url)]) # pipのインストール
197
+ logger.info(f"Install wheel: {whl_url}")
198
+ if rescode != 0:
199
+ _msg = f"Failed to install SAM2 python library: Possible whl not in the environment. {whl_url}"
200
+ logger.error(_msg, exc_info=True)
201
+ return dict(warn=_msg)
202
+ #===============================================================
203
+ # 成功時の処理
204
+ rescode, _msg = (self.RESP_SUCCESS, dict(success=f'Success to install SAM2 python library. {whl_url}'))
205
+ return dict(success=_msg)
206
+ else:
207
+ _msg = f"Unsupported vision engine: {vision_engine}"
208
+ logger.error(_msg, exc_info=True)
209
+ return dict(warn=_msg)
210
+ except Exception as e:
211
+ _msg = f"Failed to install vision engine: {e}"
212
+ logger.warning(_msg, exc_info=True)
213
+ return dict(warn=_msg)
@@ -0,0 +1,192 @@
1
+ from cmdbox import version
2
+ from cmdbox.app import common, client, feature
3
+ from cmdbox.app.commons import convert, redis_client
4
+ from cmdbox.app.features.cli import cmdbox_vision_start
5
+ from cmdbox.app.options import Options
6
+ from pathlib import Path
7
+ from typing import Dict, Any, Tuple, List, Union
8
+ import argparse
9
+ import logging
10
+ import json
11
+
12
+
13
+ class VisionPredict(cmdbox_vision_start.VisionStart):
14
+
15
+ def get_mode(self) -> Union[str, List[str]]:
16
+ """
17
+ この機能のモードを返します
18
+
19
+ Returns:
20
+ Union[str, List[str]]: モード
21
+ """
22
+ return 'vision'
23
+
24
+ def get_cmd(self):
25
+ """
26
+ この機能のコマンドを返します
27
+
28
+ Returns:
29
+ str: コマンド
30
+ """
31
+ return 'predict'
32
+
33
+ def get_option(self):
34
+ """
35
+ この機能のオプションを返します
36
+
37
+ Returns:
38
+ Dict[str, Any]: オプション
39
+ """
40
+ return dict(
41
+ use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False, use_agent=True,
42
+ description_ja="画像/動画の推論を実行します。",
43
+ description_en="Executes inference on images/videos.",
44
+ choice=[
45
+ dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
46
+ description_ja="Redisサーバーのサービスホストを指定します。",
47
+ description_en="Specify the service host of the Redis server."),
48
+ dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
49
+ description_ja="Redisサーバーのサービスポートを指定します。",
50
+ description_en="Specify the service port of the Redis server."),
51
+ dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
52
+ description_ja=f"Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `{self.default_pass}` を使用します。",
53
+ description_en=f"Specify the access password of the Redis server (optional). If omitted, `{self.default_pass}` is used."),
54
+ dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
55
+ description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
56
+ description_en="Specify the service name of the inference server. If omitted, `server` is used."),
57
+ dict(opt="retry_count", type=Options.T_INT, default=3, required=False, multi=False, hide=True, choice=None,
58
+ description_ja="Redisサーバーへの再接続回数を指定します。0以下を指定すると永遠に再接続を行います。",
59
+ description_en="Specifies the number of reconnections to the Redis server.If less than 0 is specified, reconnection is forever."),
60
+ dict(opt="retry_interval", type=Options.T_INT, default=5, required=False, multi=False, hide=True, choice=None,
61
+ description_ja="Redisサーバーに再接続までの秒数を指定します。",
62
+ description_en="Specifies the number of seconds before reconnecting to the Redis server."),
63
+ dict(opt="timeout", type=Options.T_INT, default="60", required=False, multi=False, hide=True, choice=None,
64
+ description_ja="サーバーの応答が返ってくるまでの最大待ち時間を指定。",
65
+ description_en="Specify the maximum waiting time until the server responds."),
66
+ dict(opt="vision_engine", type=Options.T_STR, default="sam2", required=True, multi=False, hide=False,
67
+ choice=["sam2"],
68
+ choice_show=dict(sam2=["sam2_model", "sam2_point"]),
69
+ description_ja="使用するVisionエンジンを指定します。",
70
+ description_en="Specify the Vision engine to use."),
71
+ dict(opt="sam2_model", type=Options.T_STR, default="092824/sam2.1_hiera_tiny.pt", required=True, multi=False, hide=False,
72
+ choice=[k for k in self.VISION_MODEL.keys() if self.VISION_MODEL[k]['type'] == 'sam2'],
73
+ choice_edit=True,
74
+ description_ja="使用するSAM2モデルを指定します。",
75
+ description_en="Specify the SAM2 model to use."),
76
+ dict(opt="sam2_point", type=Options.T_STR, default=None, required=True, multi=True, hide=False, choice=None,
77
+ description_ja="使用するSAM2モデルのポイントを指定します。 `x,y` の形式で指定してください。",
78
+ description_en="Specify the SAM2 model points to use. Please specify in the format `x,y`."),
79
+ ]
80
+ )
81
+
82
+ def get_svcmd(self):
83
+ """
84
+ この機能のサーバー側のコマンドを返します
85
+
86
+ Returns:
87
+ str: サーバー側のコマンド
88
+ """
89
+ return 'vision_predict'
90
+
91
+ def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
92
+ """
93
+ この機能の実行を行います
94
+
95
+ Args:
96
+ logger (logging.Logger): ロガー
97
+ args (argparse.Namespace): 引数
98
+ tm (float): 実行開始時間
99
+ pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
100
+
101
+ Returns:
102
+ Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
103
+ """
104
+ if args.vision_engine is None:
105
+ msg = dict(warn=f"Please specify the --vision_engine option.")
106
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
107
+ return self.RESP_WARN, msg, None
108
+ if args.vision_engine == 'sam2':
109
+ if args.sam2_model is None:
110
+ msg = dict(warn=f"Please specify the --sam2_model option.")
111
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
112
+ return self.RESP_WARN, msg, None
113
+
114
+ vision_engine_b64 = convert.str2b64str(args.vision_engine)
115
+ sam2_model_b64 = convert.str2b64str(args.sam2_model)
116
+ sam2_point_b64 = convert.str2b64str(common.to_str(args.sam2_point))
117
+
118
+ cl = client.Client(logger, redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname)
119
+ ret = cl.redis_cli.send_cmd(self.get_svcmd(),
120
+ [vision_engine_b64, sam2_model_b64, sam2_point_b64],
121
+ retry_count=args.retry_count, retry_interval=args.retry_interval, timeout=args.timeout, nowait=False)
122
+ common.print_format(ret, False, tm, None, False, pf=pf)
123
+ if 'success' not in ret:
124
+ return self.RESP_WARN, ret, cl
125
+ return self.RESP_SUCCESS, ret, cl
126
+
127
+ msg = dict(warn=f"Unsupported vision engine: {args.vision_engine}")
128
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
129
+ return self.RESP_WARN, msg, None
130
+
131
+ def is_cluster_redirect(self):
132
+ """
133
+ クラスター宛のメッセージの場合、メッセージを転送するかどうかを返します
134
+
135
+ Returns:
136
+ bool: メッセージを転送する場合はTrue
137
+ """
138
+ return False
139
+
140
+ def svrun(self, data_dir:Path, logger:logging.Logger, redis_cli:redis_client.RedisClient, msg:List[str],
141
+ sessions:Dict[str, Dict[str, Any]]) -> int:
142
+ """
143
+ この機能のサーバー側の実行を行います
144
+
145
+ Args:
146
+ data_dir (Path): データディレクトリ
147
+ logger (logging.Logger): ロガー
148
+ redis_cli (redis_client.RedisClient): Redisクライアント
149
+ msg (List[str]): 受信メッセージ
150
+ sessions (Dict[str, Dict[str, Any]]): セッション情報
151
+
152
+ Returns:
153
+ int: 終了コード
154
+ """
155
+ if logger.level == logging.DEBUG:
156
+ logger.debug(f"audit write svrun msg: {msg}")
157
+ vision_engine = convert.b64str2str(msg[2])
158
+ sam2_model = convert.b64str2str(msg[3])
159
+ sam2_point = json.loads(convert.b64str2str(msg[4]))
160
+ st = self.predict(msg[1], vision_engine, sam2_model, sam2_point, data_dir, logger, redis_cli, sessions)
161
+ return st
162
+
163
+ def predict(self, reskey:str, vision_engine:str, sam2_model:str, sam2_point:List[List[int]], data_dir:Path, logger:logging.Logger,
164
+ redis_cli:redis_client.RedisClient, sessions:Dict[str, Dict[str, Any]]) -> int:
165
+ """
166
+ SAM2のモデルを使用して指定したポイントのマスクを取得します
167
+
168
+ Args:
169
+ reskey (str): レスポンスキー
170
+ vision_engine (str): Visionエンジン
171
+ sam2_model (str): SAM2モデル
172
+ sam2_point (List[List[int,int]]): SAM2モデルのポイント
173
+ data_dir (Path): データディレクトリ
174
+ logger (logging.Logger): ロガー
175
+ redis_cli (redis_client.RedisClient): Redisクライアント
176
+ sessions (Dict[str, Dict[str, Any]]): セッション情報
177
+
178
+ Returns:
179
+ int: レスポンスコード
180
+ """
181
+ try:
182
+ if vision_engine == 'sam2':
183
+ raise NotImplementedError("SAM2 model is not implemented yet.")
184
+ else:
185
+ logger.warning(f"Unsupported vision engine: {vision_engine}")
186
+ redis_cli.rpush(reskey, dict(warn=f"Unsupported vision engine: {vision_engine}"))
187
+ return self.RESP_WARN
188
+
189
+ except Exception as e:
190
+ logger.warning(f"Failed to start: {e}", exc_info=True)
191
+ redis_cli.rpush(reskey, dict(warn=f"Failed to start: {e}"))
192
+ return self.RESP_WARN
@@ -0,0 +1,230 @@
1
+ from cmdbox import version
2
+ from cmdbox.app import common, client, feature
3
+ from cmdbox.app.commons import convert, redis_client
4
+ from cmdbox.app.options import Options
5
+ from pathlib import Path
6
+ from typing import Dict, Any, Tuple, List, Union
7
+ import argparse
8
+ import logging
9
+
10
+
11
+ class VisionStart(feature.UnsupportEdgeFeature):
12
+ VISION_MODEL = dict()
13
+ VISION_MODEL['092824/sam2.1_hiera_tiny'] = dict(type='sam2',
14
+ path='092824/sam2.1_hiera_tiny.pt',
15
+ conf='configs/sam2.1/sam2.1_hiera_t.yaml',
16
+ url='https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt')
17
+ VISION_MODEL['092824/sam2.1_hiera_small'] = dict(type='sam2',
18
+ path='092824/sam2.1_hiera_small.pt',
19
+ conf='configs/sam2.1/sam2.1_hiera_s.yaml',
20
+ url='https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt')
21
+ VISION_MODEL['092824/sam2.1_hiera_base_plus'] = dict(type='sam2',
22
+ path='092824/sam2.1_hiera_base_plus.pt',
23
+ conf='configs/sam2.1/sam2.1_hiera_b+.yaml',
24
+ url='https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt')
25
+ VISION_MODEL['092824/sam2.1_hiera_large'] = dict(type='sam2',
26
+ path='092824/sam2.1_hiera_large.pt',
27
+ conf='configs/sam2.1/sam2.1_hiera_l.yaml',
28
+ url='https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt')
29
+
30
+ def get_mode(self) -> Union[str, List[str]]:
31
+ """
32
+ この機能のモードを返します
33
+
34
+ Returns:
35
+ Union[str, List[str]]: モード
36
+ """
37
+ return 'vision'
38
+
39
+ def get_cmd(self):
40
+ """
41
+ この機能のコマンドを返します
42
+
43
+ Returns:
44
+ str: コマンド
45
+ """
46
+ return 'start'
47
+
48
+ def get_option(self):
49
+ """
50
+ この機能のオプションを返します
51
+
52
+ Returns:
53
+ Dict[str, Any]: オプション
54
+ """
55
+ return dict(
56
+ use_redis=self.USE_REDIS_MEIGHT, nouse_webmode=False, use_agent=True,
57
+ description_ja="画像/動画の推論を開始します。",
58
+ description_en="Starts inference on images/videos.",
59
+ choice=[
60
+ dict(opt="host", type=Options.T_STR, default=self.default_host, required=True, multi=False, hide=True, choice=None, web="mask",
61
+ description_ja="Redisサーバーのサービスホストを指定します。",
62
+ description_en="Specify the service host of the Redis server."),
63
+ dict(opt="port", type=Options.T_INT, default=self.default_port, required=True, multi=False, hide=True, choice=None, web="mask",
64
+ description_ja="Redisサーバーのサービスポートを指定します。",
65
+ description_en="Specify the service port of the Redis server."),
66
+ dict(opt="password", type=Options.T_STR, default=self.default_pass, required=True, multi=False, hide=True, choice=None, web="mask",
67
+ description_ja=f"Redisサーバーのアクセスパスワード(任意)を指定します。省略時は `{self.default_pass}` を使用します。",
68
+ description_en=f"Specify the access password of the Redis server (optional). If omitted, `{self.default_pass}` is used."),
69
+ dict(opt="svname", type=Options.T_STR, default=self.default_svname, required=True, multi=False, hide=True, choice=None, web="readonly",
70
+ description_ja="サーバーのサービス名を指定します。省略時は `server` を使用します。",
71
+ description_en="Specify the service name of the inference server. If omitted, `server` is used."),
72
+ dict(opt="retry_count", type=Options.T_INT, default=3, required=False, multi=False, hide=True, choice=None,
73
+ description_ja="Redisサーバーへの再接続回数を指定します。0以下を指定すると永遠に再接続を行います。",
74
+ description_en="Specifies the number of reconnections to the Redis server.If less than 0 is specified, reconnection is forever."),
75
+ dict(opt="retry_interval", type=Options.T_INT, default=5, required=False, multi=False, hide=True, choice=None,
76
+ description_ja="Redisサーバーに再接続までの秒数を指定します。",
77
+ description_en="Specifies the number of seconds before reconnecting to the Redis server."),
78
+ dict(opt="timeout", type=Options.T_INT, default="60", required=False, multi=False, hide=True, choice=None,
79
+ description_ja="サーバーの応答が返ってくるまでの最大待ち時間を指定。",
80
+ description_en="Specify the maximum waiting time until the server responds."),
81
+ dict(opt="vision_engine", type=Options.T_STR, default="sam2", required=True, multi=False, hide=False,
82
+ choice=["sam2"],
83
+ choice_show=dict(sam2=["sam2_model"]),
84
+ description_ja="使用するVisionエンジンを指定します。",
85
+ description_en="Specify the Vision engine to use."),
86
+ dict(opt="sam2_model", type=Options.T_STR, default="092824/sam2.1_hiera_tiny.pt", required=True, multi=False, hide=False,
87
+ choice=[k for k in self.VISION_MODEL.keys() if self.VISION_MODEL[k]['type'] == 'sam2'],
88
+ choice_edit=True,
89
+ description_ja="使用するSAM2モデルを指定します。",
90
+ description_en="Specify the SAM2 model to use."),
91
+ ]
92
+ )
93
+
94
+ def get_svcmd(self):
95
+ """
96
+ この機能のサーバー側のコマンドを返します
97
+
98
+ Returns:
99
+ str: サーバー側のコマンド
100
+ """
101
+ return 'vision_start'
102
+
103
+ def apprun(self, logger:logging.Logger, args:argparse.Namespace, tm:float, pf:List[Dict[str, float]]=[]) -> Tuple[int, Dict[str, Any], Any]:
104
+ """
105
+ この機能の実行を行います
106
+
107
+ Args:
108
+ logger (logging.Logger): ロガー
109
+ args (argparse.Namespace): 引数
110
+ tm (float): 実行開始時間
111
+ pf (List[Dict[str, float]]): 呼出元のパフォーマンス情報
112
+
113
+ Returns:
114
+ Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
115
+ """
116
+ if args.vision_engine is None:
117
+ msg = dict(warn=f"Please specify the --vision_engine option.")
118
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
119
+ return self.RESP_WARN, msg, None
120
+ if args.vision_engine == 'sam2':
121
+ if args.sam2_model is None:
122
+ msg = dict(warn=f"Please specify the --sam2_model option.")
123
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
124
+ return self.RESP_WARN, msg, None
125
+
126
+ vision_engine_b64 = convert.str2b64str(args.vision_engine)
127
+ sam2_model_b64 = convert.str2b64str(args.sam2_model)
128
+ cl = client.Client(logger, redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname)
129
+ ret = cl.redis_cli.send_cmd(self.get_svcmd(),
130
+ [vision_engine_b64, sam2_model_b64],
131
+ retry_count=args.retry_count, retry_interval=args.retry_interval, timeout=args.timeout, nowait=False)
132
+ common.print_format(ret, False, tm, None, False, pf=pf)
133
+ if 'success' not in ret:
134
+ return self.RESP_WARN, ret, cl
135
+ return self.RESP_SUCCESS, ret, cl
136
+
137
+ msg = dict(warn=f"Unsupported vision engine: {args.vision_engine}")
138
+ common.print_format(msg, False, tm, args.output_json, args.output_json_append, pf=pf)
139
+ return self.RESP_WARN, msg, None
140
+
141
+ def is_cluster_redirect(self):
142
+ """
143
+ クラスター宛のメッセージの場合、メッセージを転送するかどうかを返します
144
+
145
+ Returns:
146
+ bool: メッセージを転送する場合はTrue
147
+ """
148
+ return True
149
+
150
+ def svrun(self, data_dir:Path, logger:logging.Logger, redis_cli:redis_client.RedisClient, msg:List[str],
151
+ sessions:Dict[str, Dict[str, Any]]) -> int:
152
+ """
153
+ この機能のサーバー側の実行を行います
154
+
155
+ Args:
156
+ data_dir (Path): データディレクトリ
157
+ logger (logging.Logger): ロガー
158
+ redis_cli (redis_client.RedisClient): Redisクライアント
159
+ msg (List[str]): 受信メッセージ
160
+ sessions (Dict[str, Dict[str, Any]]): セッション情報
161
+
162
+ Returns:
163
+ int: 終了コード
164
+ """
165
+ if logger.level == logging.DEBUG:
166
+ logger.debug(f"audit write svrun msg: {msg}")
167
+ vision_engine = convert.b64str2str(msg[2])
168
+ sam2_model = convert.b64str2str(msg[3])
169
+ st = self.start(msg[1], vision_engine, sam2_model, data_dir, logger, redis_cli, sessions)
170
+ return st
171
+
172
+ def start(self, reskey:str, vision_engine:str, sam2_model:str, data_dir:Path, logger:logging.Logger,
173
+ redis_cli:redis_client.RedisClient, sessions:Dict[str, Dict[str, Any]]) -> int:
174
+ """
175
+ SAM2のモデルを開始します
176
+
177
+ Args:
178
+ reskey (str): レスポンスキー
179
+ vision_engine (str): Visionエンジン
180
+ sam2_model (str): SAM2モデル
181
+ data_dir (Path): データディレクトリ
182
+ logger (logging.Logger): ロガー
183
+ redis_cli (redis_client.RedisClient): Redisクライアント
184
+ sessions (Dict[str, Dict[str, Any]]): セッション情報
185
+
186
+ Returns:
187
+ int: レスポンスコード
188
+ """
189
+ try:
190
+ if vision_engine == 'sam2':
191
+ #===============================================================
192
+ # SAM2モデルの初期化
193
+ from sam2.build_sam import build_sam2
194
+ from sam2.sam2_image_predictor import SAM2ImagePredictor
195
+ #from sam2.sam2_video_predictor import SAM2VideoPredictor
196
+ import torch
197
+
198
+ sam2_dir = Path(version.__file__).parent / '.sam2' / 'model'
199
+ if not sam2_dir.exists():
200
+ logger.error(f"Failed to start SAM2 model: sam2 directory does not exist: {sam2_dir}")
201
+ redis_cli.rpush(reskey, dict(warn=f"Failed to start SAM2 model: sam2 directory does not exist: {sam2_dir}"))
202
+ return self.RESP_WARN
203
+
204
+ model_file = sam2_dir / self.VISION_MODEL[sam2_model]['path']
205
+ config_file = self.VISION_MODEL[sam2_model]['conf']
206
+ if not model_file.exists():
207
+ logger.error(f"Failed to start SAM2 model: model file does not exist: {model_file}")
208
+ redis_cli.rpush(reskey, dict(warn=f"Failed to start SAM2 model: model file does not exist: {model_file}"))
209
+ return self.RESP_WARN
210
+
211
+ device = 'cuda' if torch.cuda.is_available() else 'cpu'
212
+ # vvmファイルの読込み
213
+ predictor = SAM2ImagePredictor(build_sam2(config_file, model_file, device=device))
214
+ sessions[sam2_model] = dict(
215
+ info=self.VISION_MODEL[sam2_model].copy(),
216
+ predictor=predictor,
217
+ )
218
+ #===============================================================
219
+ # 成功時の処理
220
+ rescode, msg = (self.RESP_SUCCESS, dict(success=f'Success to start SAM2. Model: {sam2_model}'))
221
+ redis_cli.rpush(reskey, msg)
222
+ return rescode
223
+ else:
224
+ logger.warning(f"Unsupported vision engine: {vision_engine}")
225
+ redis_cli.rpush(reskey, dict(warn=f"Unsupported vision engine: {vision_engine}"))
226
+ return self.RESP_WARN
227
+ except Exception as e:
228
+ logger.warning(f"Failed to start: {e}", exc_info=True)
229
+ redis_cli.rpush(reskey, dict(warn=f"Failed to start: {e}"))
230
+ return self.RESP_WARN
@@ -25,7 +25,7 @@ class VersionsUsed(feature.WebFeature):
25
25
  for i, line in enumerate(f.readlines()):
26
26
  parts = line.strip().split('\t')
27
27
  ret.append(parts)
28
- with open(Path(cmdbox.__file__).parent / 'app' / 'lib_license_list.txt', 'r', encoding='utf-8') as f:
28
+ with open(Path(cmdbox.__file__).parent / 'web' / 'voicevox_license_list.txt', 'r', encoding='utf-8') as f:
29
29
  for i, line in enumerate(f.readlines()):
30
30
  parts = line.strip().split('\t')
31
31
  ret.append(parts)