cmdbox 0.6.0.4__tar.gz → 0.6.1.1__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 (395) hide show
  1. {cmdbox-0.6.0.4/cmdbox.egg-info → cmdbox-0.6.1.1}/PKG-INFO +30 -6
  2. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/README.md +29 -5
  3. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/app.py +2 -2
  4. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/azure_signin.py +5 -1
  5. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/signin.py +144 -28
  6. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/common.py +40 -3
  7. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/edge.py +1 -1
  8. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/edge_tool.py +1 -1
  9. cmdbox-0.6.1.1/cmdbox/app/features/cli/agent_base.py +87 -0
  10. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_audit_search.py +0 -2
  11. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_audit_write.py +9 -0
  12. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_cmd_list.py +1 -1
  13. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_cmd_load.py +1 -1
  14. cmdbox-0.6.1.1/cmdbox/app/features/cli/cmdbox_mcp_proxy.py +90 -0
  15. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_gencert.py +25 -2
  16. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_start.py +5 -2
  17. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_signin.py +1 -1
  18. cmdbox-0.6.0.4/cmdbox/app/features/cli/agent_base.py → cmdbox-0.6.1.1/cmdbox/app/mcp.py +42 -88
  19. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/options.py +2 -0
  20. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/web.py +34 -6
  21. cmdbox-0.6.1.1/cmdbox/autoload.py +10 -0
  22. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/user_list.yml +25 -1
  23. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Deprecated.1.2.18(MIT License).txt → cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_PyJWT_2_10_1_MIT_License.txt +2 -2
  24. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_exceptiongroup_1_3_0_MIT_License.txt +73 -0
  25. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_fastmcp_2_9_2_Apache_Software_License.txt +201 -0
  26. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.graphviz.0.20.3(MIT License).txt → cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_graphviz_0_21_UNKNOWN.txt +1 -1
  27. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_jaraco_functools_4_2_1_UNKNOWN.txt +18 -0
  28. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.numpy.2.2.5(BSD License).txt → cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_numpy_2_3_1_BSD_License.txt +8 -8
  29. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_openapi-pydantic_0_5_1_MIT_License.txt +40 -0
  30. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_propcache_0_3_2_Apache_Software_License.txt +202 -0
  31. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_proto-plus_1_26_1_Apache_Software_License.txt +202 -0
  32. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_shellingham_1_5_4_ISC_License-ISCL.txt +13 -0
  33. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinx-last-updated-by-git_0_3_8_BSD_License.txt +22 -0
  34. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tenacity_8_5_0_Apache_Software_License.txt +202 -0
  35. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tokenizers_0_21_2_Apache_Software_License.txt +1 -0
  36. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_typer_0_16_0_MIT_License.txt +21 -0
  37. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_typing-inspection_0_4_1_UNKNOWN.txt +21 -0
  38. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_yarl_1_20_1_Apache_Software_License.txt +202 -0
  39. cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_zipp_3_23_0_UNKNOWN.txt +18 -0
  40. cmdbox-0.6.1.1/cmdbox/licenses/files.txt +198 -0
  41. cmdbox-0.6.1.1/cmdbox/logconf_mcp.yml +43 -0
  42. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/version.py +2 -2
  43. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/agent.html +1 -33
  44. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/audit.js +1 -1
  45. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/common.js +47 -4
  46. cmdbox-0.6.1.1/cmdbox/web/assets/cmdbox/svgicon.js +122 -0
  47. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/users.js +4 -3
  48. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/audit.html +1 -35
  49. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/filer.html +1 -13
  50. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/gui.html +2 -50
  51. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/result.html +2 -46
  52. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/signin.html +30 -32
  53. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/users.html +1 -41
  54. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1/cmdbox.egg-info}/PKG-INFO +30 -6
  55. cmdbox-0.6.1.1/cmdbox.egg-info/SOURCES.txt +387 -0
  56. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox.egg-info/requires.txt +1 -0
  57. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/setup.py +1 -0
  58. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.keyring.25.6.0(MIT License).txt +0 -17
  59. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.typing-inspection.0.4.0(MIT License).txt +0 -21
  60. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.wrapt.1.17.2(BSD License).txt +0 -24
  61. cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.zipp.3.21.0(MIT License).txt +0 -17
  62. cmdbox-0.6.0.4/cmdbox/licenses/files.txt +0 -188
  63. cmdbox-0.6.0.4/cmdbox.egg-info/SOURCES.txt +0 -372
  64. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/LICENSE +0 -0
  65. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/MANIFEST.in +0 -0
  66. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/__init__.py +0 -0
  67. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/__main__.py +0 -0
  68. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/__init__.py +0 -0
  69. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/__init__.py +0 -0
  70. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/azure_signin_saml.py +0 -0
  71. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/github_signin.py +0 -0
  72. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/google_signin.py +0 -0
  73. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/auth/signin_saml.py +0 -0
  74. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/client.py +0 -0
  75. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/commons/convert.py +0 -0
  76. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/commons/loghandler.py +0 -0
  77. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/commons/module.py +0 -0
  78. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/commons/redis_client.py +0 -0
  79. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/feature.py +0 -0
  80. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/audit_base.py +0 -0
  81. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
  82. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_audit_delete.py +0 -0
  83. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
  84. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
  85. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
  86. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
  87. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
  88. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
  89. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
  90. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +0 -0
  91. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
  92. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
  93. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
  94. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
  95. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
  96. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
  97. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
  98. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
  99. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +0 -0
  100. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +0 -0
  101. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
  102. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_group_add.py +0 -0
  103. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_group_del.py +0 -0
  104. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +0 -0
  105. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_group_list.py +0 -0
  106. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_stop.py +0 -0
  107. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_user_add.py +0 -0
  108. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_user_del.py +0 -0
  109. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +0 -0
  110. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/cli/cmdbox_web_user_list.py +0 -0
  111. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_agent.py +0 -0
  112. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
  113. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_audit.py +0 -0
  114. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
  115. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
  116. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
  117. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
  118. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
  119. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
  120. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_do_signout.py +0 -0
  121. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +0 -0
  122. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
  123. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_filer download.py +0 -0
  124. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
  125. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
  126. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
  127. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
  128. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
  129. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
  130. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
  131. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
  132. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
  133. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
  134. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
  135. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
  136. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
  137. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
  138. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
  139. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
  140. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
  141. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
  142. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
  143. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
  144. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
  145. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/features/web/cmdbox_web_versions_used.py +0 -0
  146. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/filer.py +0 -0
  147. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/app/server.py +0 -0
  148. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/config.yml +0 -0
  149. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/features.yml +0 -0
  150. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
  151. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/requirements.txt +0 -0
  152. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
  153. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
  154. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
  155. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/app/features/cli/__init__.py +0 -0
  156. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
  157. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
  158. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
  159. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/extensions/features.yml +0 -0
  160. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/extensions/user_list.yml +0 -0
  161. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +0 -0
  162. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/version.py +0 -0
  163. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
  164. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
  165. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Authlib.1.5.2(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_Authlib_1_6_0_BSD_License.txt +0 -0
  166. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Jinja2.3.1.6(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_Jinja2_3_1_6_BSD_License.txt +0 -0
  167. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.MarkupSafe.3.0.2(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_MarkupSafe_3_0_2_BSD_License.txt +0 -0
  168. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.PyYAML.6.0.2(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_PyYAML_6_0_2_MIT_License.txt +0 -0
  169. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Pygments.2.19.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_Pygments_2_19_2_BSD_License.txt +0 -0
  170. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.SQLAlchemy.2.0.40(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_SQLAlchemy_2_0_41_MIT.txt +0 -0
  171. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Sphinx.8.2.3(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_Sphinx_8_2_3_UNKNOWN.txt +0 -0
  172. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.aiohappyeyeballs.2.6.1(Python Software Foundation License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_aiohappyeyeballs_2_6_1_Python_Software_Foundation_License.txt +0 -0
  173. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.aiohttp.3.11.18(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_aiohttp_3_12_13_Apache-2_0.txt +0 -0
  174. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.aiosignal.1.3.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_aiosignal_1_3_2_Apache_Software_License.txt +0 -0
  175. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.alabaster.1.0.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_alabaster_1_0_0_BSD_License.txt +0 -0
  176. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.annotated-types.0.7.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_annotated-types_0_7_0_MIT_License.txt +0 -0
  177. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.anyio.4.9.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_anyio_4_9_0_MIT_License.txt +0 -0
  178. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.argcomplete.3.6.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_argcomplete_3_6_2_Apache_Software_License.txt +0 -0
  179. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.async-timeout.5.0.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_async-timeout_5_0_1_Apache_Software_License.txt +0 -0
  180. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.attrs.25.3.0(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_attrs_25_3_0_UNKNOWN.txt +0 -0
  181. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.babel.2.17.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_babel_2_17_0_BSD_License.txt +0 -0
  182. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.backports.tarfile.1.2.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_backports_tarfile_1_2_0_MIT_License.txt +0 -0
  183. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.cachetools.5.5.2(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_cachetools_5_5_2_MIT_License.txt +0 -0
  184. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.certifi.2025.4.26(Mozilla Public License 2.0 (MPL 2.0)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_certifi_2025_6_15_Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
  185. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.cffi.1.17.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_cffi_1_17_1_MIT_License.txt +0 -0
  186. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.charset-normalizer.3.4.2(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_charset-normalizer_3_4_2_MIT_License.txt +0 -0
  187. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.click.8.2.0(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_click_8_2_1_UNKNOWN.txt +0 -0
  188. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jiter.0.9.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_cloudpickle_3_1_1_BSD_License.txt +0 -0
  189. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.colorama.0.4.6(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_colorama_0_4_6_BSD_License.txt +0 -0
  190. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.cryptography.44.0.3(Apache Software License; BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_cryptography_45_0_4_Apache-2_0_OR_BSD-3-Clause.txt +0 -0
  191. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.distro.1.9.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_distro_1_9_0_Apache_Software_License.txt +0 -0
  192. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.docstring_parser.0.16(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_docstring_parser_0_16_MIT_License.txt +0 -0
  193. /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 → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_docutils_0_21_2_BSD_License-GNU_General_Public_License-GPL-Public_Domain-Python_Software_Foundation_License.txt +0 -0
  194. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.fastapi.0.115.12(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_fastapi_0_115_14_MIT_License.txt +0 -0
  195. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.filelock.3.18.0(The Unlicense (Unlicense)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_filelock_3_18_0_The_Unlicense-Unlicense.txt +0 -0
  196. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.frozenlist.1.6.0(Apache-2.0).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_frozenlist_1_7_0_Apache-2_0.txt +0 -0
  197. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.fsspec.2025.3.2(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_fsspec_2025_5_1_BSD_License.txt +0 -0
  198. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.gevent.25.4.2(MIT).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_gevent_25_5_1_MIT.txt +0 -0
  199. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-adk.0.5.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-adk_1_5_0_Apache_Software_License.txt +0 -0
  200. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-api-core.2.24.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-api-core_2_25_1_Apache_Software_License.txt +0 -0
  201. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-api-python-client.2.169.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-api-python-client_2_174_0_Apache_Software_License.txt +0 -0
  202. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-auth-httplib2.0.2.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-auth-httplib2_0_2_0_Apache_Software_License.txt +0 -0
  203. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-auth.2.40.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-auth_2_40_3_Apache_Software_License.txt +0 -0
  204. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-aiplatform.1.92.0(Apache 2.0).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-aiplatform_1_100_0_Apache_2_0.txt +0 -0
  205. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-bigquery.3.31.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-appengine-logging_1_6_2_Apache_Software_License.txt +0 -0
  206. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-core.2.4.3(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-audit-log_0_3_2_Apache_Software_License.txt +0 -0
  207. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-resource-manager.1.14.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-bigquery_3_34_0_Apache_Software_License.txt +0 -0
  208. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-secret-manager.2.23.3(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-core_2_4_3_Apache_Software_License.txt +0 -0
  209. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-speech.2.32.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-logging_3_12_1_Apache_Software_License.txt +0 -0
  210. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-storage.2.19.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-resource-manager_1_14_2_Apache_Software_License.txt +0 -0
  211. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-trace.1.16.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-secret-manager_2_24_0_Apache_Software_License.txt +0 -0
  212. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-crc32c.1.7.1(Apache 2.0).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-speech_2_33_0_Apache_Software_License.txt +0 -0
  213. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-genai.1.14.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-storage_2_19_0_Apache_Software_License.txt +0 -0
  214. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-resumable-media.2.7.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-cloud-trace_1_16_2_Apache_Software_License.txt +0 -0
  215. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.googleapis-common-protos.1.70.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-crc32c_1_7_1_Apache_2_0.txt +0 -0
  216. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.grpc-google-iam-v1.0.14.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-genai_1_23_0_Apache_Software_License.txt +0 -0
  217. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.id.1.5.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_google-resumable-media_2_7_2_Apache_Software_License.txt +0 -0
  218. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.importlib_metadata.8.6.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_googleapis-common-protos_1_70_0_Apache_Software_License.txt +0 -0
  219. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.greenlet.3.2.2(MIT AND Python-2.0).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_greenlet_3_2_3_MIT_AND_Python-2_0.txt +0 -0
  220. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.propcache.0.3.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_grpc-google-iam-v1_0_14_2_Apache_Software_License.txt +0 -0
  221. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.grpcio-status.1.71.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_grpcio-status_1_73_1_Apache_Software_License.txt +0 -0
  222. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.grpcio.1.71.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_grpcio_1_73_1_Apache_Software_License.txt +0 -0
  223. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.gunicorn.23.0.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_gunicorn_23_0_0_MIT_License.txt +0 -0
  224. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.h11.0.16.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_h11_0_16_0_MIT_License.txt +0 -0
  225. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httpcore.1.0.9(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_httpcore_1_0_9_BSD_License.txt +0 -0
  226. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httplib2.0.22.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_httplib2_0_22_0_MIT_License.txt +0 -0
  227. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httptools.0.6.4(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_httptools_0_6_4_MIT_License.txt +0 -0
  228. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httpx-sse.0.4.0(MIT).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_httpx-sse_0_4_1_MIT.txt +0 -0
  229. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httpx.0.28.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_httpx_0_28_1_BSD_License.txt +0 -0
  230. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.huggingface-hub.0.31.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_huggingface-hub_0_33_1_Apache_Software_License.txt +0 -0
  231. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.proto-plus.1.26.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_id_1_5_0_Apache_Software_License.txt +0 -0
  232. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.idna.3.10(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_idna_3_10_BSD_License.txt +0 -0
  233. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.imagesize.1.4.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_imagesize_1_4_1_MIT_License.txt +0 -0
  234. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.yarl.1.20.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_importlib_metadata_8_7_0_Apache_Software_License.txt +0 -0
  235. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.itsdangerous.2.2.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_itsdangerous_2_2_0_BSD_License.txt +0 -0
  236. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jaraco.classes.3.4.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_jaraco_classes_3_4_0_MIT_License.txt +0 -0
  237. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jaraco.context.6.0.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_jaraco_context_6_0_1_MIT_License.txt +0 -0
  238. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-applehelp.2.0.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_jiter_0_10_0_MIT_License.txt +0 -0
  239. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jsonschema-specifications.2025.4.1(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_jsonschema-specifications_2025_4_1_UNKNOWN.txt +0 -0
  240. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jsonschema.4.23.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_jsonschema_4_24_0_UNKNOWN.txt +0 -0
  241. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jaraco.functools.4.1.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_keyring_25_6_0_MIT_License.txt +0 -0
  242. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.litellm.1.69.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_litellm_1_73_6_MIT_License.txt +0 -0
  243. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.markdown-it-py.3.0.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_markdown-it-py_3_0_0_MIT_License.txt +0 -0
  244. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.mcp.1.8.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_mcp_1_9_4_MIT_License.txt +0 -0
  245. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.mdurl.0.1.2(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_mdurl_0_1_2_MIT_License.txt +0 -0
  246. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.more-itertools.10.7.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_more-itertools_10_7_0_MIT_License.txt +0 -0
  247. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.multidict.6.4.3(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_multidict_6_6_2_Apache_License_2_0.txt +0 -0
  248. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.nh3.0.2.21(MIT).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_nh3_0_2_21_MIT.txt +0 -0
  249. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.openai.1.75.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_openai_1_93_0_Apache_Software_License.txt +0 -0
  250. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-api.1.33.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_opentelemetry-api_1_34_1_Apache_Software_License.txt +0 -0
  251. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-exporter-gcp-trace.1.9.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_opentelemetry-exporter-gcp-trace_1_9_0_Apache_Software_License.txt +0 -0
  252. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-resourcedetector-gcp.1.9.0a0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_opentelemetry-resourcedetector-gcp_1_9_0a0_Apache_Software_License.txt +0 -0
  253. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-sdk.1.33.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_opentelemetry-sdk_1_34_1_Apache_Software_License.txt +0 -0
  254. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-semantic-conventions.0.54b0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_opentelemetry-semantic-conventions_0_55b1_Apache_Software_License.txt +0 -0
  255. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.packaging.25.0(Apache Software License; BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_packaging_25_0_Apache_Software_License-BSD_License.txt +0 -0
  256. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pillow.11.2.1(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pillow_11_2_1_UNKNOWN.txt +0 -0
  257. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pip.24.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pip_24_0_MIT_License.txt +0 -0
  258. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.plyer.2.1.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_plyer_2_1_0_MIT_License.txt +0 -0
  259. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.prettytable.3.16.0(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_prettytable_3_16_0_UNKNOWN.txt +0 -0
  260. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.prompt_toolkit.3.0.51(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_prompt_toolkit_3_0_51_BSD_License.txt +0 -0
  261. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.protobuf.5.29.4(3-Clause BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_protobuf_6_31_1_3-Clause_BSD_License.txt +0 -0
  262. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.psycopg-binary.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_psycopg-binary_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
  263. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.psycopg.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_psycopg_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
  264. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pyasn1.0.6.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pyasn1_0_6_1_BSD_License.txt +0 -0
  265. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pyasn1_modules.0.4.2(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pyasn1_modules_0_4_2_BSD_License.txt +0 -0
  266. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pycparser.2.22(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pycparser_2_22_BSD_License.txt +0 -0
  267. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pycryptodome.3.22.0(BSD License; Public Domain).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pycryptodome_3_23_0_BSD_License-Public_Domain.txt +0 -0
  268. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pydantic-settings.2.9.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pydantic-settings_2_10_1_MIT_License.txt +0 -0
  269. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pydantic.2.11.4(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pydantic_2_11_7_MIT_License.txt +0 -0
  270. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pydantic_core.2.33.2(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pydantic_core_2_33_2_MIT_License.txt +0 -0
  271. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pyparsing.3.2.3(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pyparsing_3_2_3_MIT_License.txt +0 -0
  272. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pystray.0.19.5(GNU Lesser General Public License v3 (LGPLv3)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pystray_0_19_5_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
  273. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.python-dateutil.2.9.0.post0(Apache Software License; BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_python-dateutil_2_9_0_post0_Apache_Software_License-BSD_License.txt +0 -0
  274. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.python-dotenv.1.1.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_python-dotenv_1_1_1_BSD_License.txt +0 -0
  275. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.python-multipart.0.0.20(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_python-multipart_0_0_20_Apache_Software_License.txt +0 -0
  276. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pywin32-ctypes.0.2.3(BSD-3-Clause).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_pywin32-ctypes_0_2_3_BSD-3-Clause.txt +0 -0
  277. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.questionary.2.1.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_questionary_2_1_0_MIT_License.txt +0 -0
  278. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.readme_renderer.44.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_readme_renderer_44_0_Apache_Software_License.txt +0 -0
  279. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.redis.6.0.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_redis_6_2_0_MIT_License.txt +0 -0
  280. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.referencing.0.36.2(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_referencing_0_36_2_UNKNOWN.txt +0 -0
  281. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.regex.2024.11.6(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_regex_2024_11_6_Apache_Software_License.txt +0 -0
  282. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.requests-toolbelt.1.0.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_requests-toolbelt_1_0_0_Apache_Software_License.txt +0 -0
  283. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.requests.2.32.3(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_requests_2_32_4_Apache_Software_License.txt +0 -0
  284. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rfc3986.2.0.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_rfc3986_2_0_0_Apache_Software_License.txt +0 -0
  285. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rich.14.0.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_rich_14_0_0_MIT_License.txt +0 -0
  286. /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 → /cmdbox-0.6.1.1/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
  287. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rpds-py.0.24.0(MIT).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_rpds-py_0_25_1_MIT.txt +0 -0
  288. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rsa.4.9.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_rsa_4_9_1_Apache_Software_License.txt +0 -0
  289. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.setuptools.65.5.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_setuptools_65_5_0_MIT_License.txt +0 -0
  290. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.shapely.2.1.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_shapely_2_1_1_BSD_License.txt +0 -0
  291. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.six.1.17.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_six_1_17_0_MIT_License.txt +0 -0
  292. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sniffio.1.3.1(Apache Software License; MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sniffio_1_3_1_Apache_Software_License-MIT_License.txt +0 -0
  293. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.snowballstemmer.3.0.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_snowballstemmer_3_0_1_BSD_License.txt +0 -0
  294. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx-intl.2.3.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinx-intl_2_3_1_BSD_License.txt +0 -0
  295. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx-rtd-theme.3.0.2(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinx-rtd-theme_3_0_2_MIT_License.txt +0 -0
  296. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx-sitemap.2.6.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinx-sitemap_2_7_2_UNKNOWN.txt +0 -0
  297. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx_fontawesome.0.0.6(GNU General Public License v2 (GPLv2)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinx_fontawesome_0_0_6_GNU_General_Public_License_v2-GPLv2.txt +0 -0
  298. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-devhelp.2.0.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-applehelp_2_0_0_BSD_License.txt +0 -0
  299. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-htmlhelp.2.1.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-devhelp_2_0_0_BSD_License.txt +0 -0
  300. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-jquery.4.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-htmlhelp_2_1_0_BSD_License.txt +0 -0
  301. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-qthelp.2.0.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-jquery_4_1_BSD_License.txt +0 -0
  302. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-jsmath.1.0.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-jsmath_1_0_1_BSD_License.txt +0 -0
  303. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-serializinghtml.2.0.0(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-qthelp_2_0_0_BSD_License.txt +0 -0
  304. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tokenizers.0.21.1(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sphinxcontrib-serializinghtml_2_0_0_BSD_License.txt +0 -0
  305. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sse-starlette.2.3.4(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_sse-starlette_2_3_6_BSD_License.txt +0 -0
  306. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.starlette.0.46.2(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_starlette_0_46_2_BSD_License.txt +0 -0
  307. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tabulate.0.9.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tabulate_0_9_0_MIT_License.txt +0 -0
  308. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tiktoken.0.9.0(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tiktoken_0_9_0_MIT_License-Copyright-c-2022_OpenAI-Shantanu_Jain-Permission_is_hereby_granted-free_of_charge-to_any_pers.txt +0 -0
  309. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tomli.2.2.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tomli_2_2_1_MIT_License.txt +0 -0
  310. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tqdm.4.67.1(MIT License; Mozilla Public License 2.0 (MPL 2.0)).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tqdm_4_67_1_MIT_License-Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
  311. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.twine.6.1.0(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_twine_6_1_0_Apache_Software_License.txt +0 -0
  312. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.typing_extensions.4.13.2(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_typing_extensions_4_14_0_UNKNOWN.txt +0 -0
  313. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tzdata.2025.2(Apache Software License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tzdata_2025_2_Apache_Software_License.txt +0 -0
  314. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tzlocal.5.3.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_tzlocal_5_3_1_MIT_License.txt +0 -0
  315. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.uritemplate.4.1.1(Apache Software License; BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_uritemplate_4_2_0_BSD_3-Clause_OR_Apache-2_0.txt +0 -0
  316. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.urllib3.2.4.0(UNKNOWN).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_urllib3_2_5_0_UNKNOWN.txt +0 -0
  317. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.uvicorn.0.34.2(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_uvicorn_0_35_0_BSD_License.txt +0 -0
  318. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.watchfiles.1.0.5(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_watchfiles_1_1_0_MIT_License.txt +0 -0
  319. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.wcwidth.0.2.13(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_wcwidth_0_2_13_MIT_License.txt +0 -0
  320. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.websockets.15.0.1(BSD License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_websockets_15_0_1_BSD_License.txt +0 -0
  321. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.wheel.0.45.1(MIT License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_wheel_0_45_1_MIT_License.txt +0 -0
  322. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.zope.event.5.0(Zope Public License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_zope_event_5_1_Zope_Public_License.txt +0 -0
  323. /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.zope.interface.7.2(Zope Public License).txt → /cmdbox-0.6.1.1/cmdbox/licenses/LICENSE_zope_interface_7_2_Zope_Public_License.txt +0 -0
  324. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_audit.yml +0 -0
  325. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_client.yml +0 -0
  326. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_cmdbox.yml +0 -0
  327. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_edge.yml +0 -0
  328. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_gui.yml +0 -0
  329. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_server.yml +0 -0
  330. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/logconf_web.yml +0 -0
  331. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
  332. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
  333. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
  334. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
  335. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/agent.js +0 -0
  336. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
  337. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
  338. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
  339. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/icon.png +0 -0
  340. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
  341. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
  342. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/main.js +0 -0
  343. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
  344. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
  345. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/result.js +0 -0
  346. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/signin.js +0 -0
  347. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
  348. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
  349. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
  350. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
  351. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
  352. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/filer/filer.js +0 -0
  353. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/filer/main.css +0 -0
  354. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/filer/main.js +0 -0
  355. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/highlight/default.css +0 -0
  356. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
  357. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
  358. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
  359. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
  360. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
  361. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
  362. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
  363. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
  364. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
  365. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
  366. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
  367. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
  368. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
  369. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
  370. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
  371. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
  372. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  373. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
  374. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
  375. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
  376. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
  377. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/jquery-ui/package.json +0 -0
  378. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
  379. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
  380. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
  381. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
  382. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
  383. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
  384. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
  385. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
  386. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
  387. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
  388. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
  389. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
  390. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
  391. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox/web/assets_license_list.txt +0 -0
  392. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox.egg-info/dependency_links.txt +0 -0
  393. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox.egg-info/entry_points.txt +0 -0
  394. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/cmdbox.egg-info/top_level.txt +0 -0
  395. {cmdbox-0.6.0.4 → cmdbox-0.6.1.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cmdbox
3
- Version: 0.6.0.4
3
+ Version: 0.6.1.1
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
@@ -351,25 +351,25 @@ audit:
351
351
  users: # A list of users, each of which is a map that contains the following fields.
352
352
  - uid: 1 # An ID that identifies a user. No two users can have the same ID.
353
353
  name: admin # A name that identifies the user. No two users can have the same name.
354
- password: XXXXXXXXXXXXXXXX # The user's password. The value is hashed with the hash function specified in the next hash field.
354
+ password: XXXXX # The user's password. The value is hashed with the hash function specified in the next hash field.
355
355
  hash: plain # The hash function used to hash the password, which can be plain, md5, sha1, or sha256, or oauth2, or saml.
356
356
  groups: [admin] # A list of groups to which the user belongs, as specified in the groups field.
357
357
  email: admin@aaa.bbb.jp # The email address of the user, used when authenticating using the provider specified in the oauth2 or saml field.
358
358
  - uid: 101
359
359
  name: user01
360
- password: XXXXXXXXXXXXXXXX
360
+ password: XXXXX
361
361
  hash: md5
362
362
  groups: [user]
363
363
  email: user01@aaa.bbb.jp
364
364
  - uid: 102
365
365
  name: user02
366
- password: XXXXXXXXXXXXXXXX
366
+ password: XXXXX
367
367
  hash: sha1
368
368
  groups: [readonly]
369
369
  email: user02@aaa.bbb.jp
370
370
  - uid: 103
371
371
  name: user03
372
- password: XXXXXXXXXXXXXXXX
372
+ password: XXXXX
373
373
  hash: sha256
374
374
  groups: [editor]
375
375
  email: user03@aaa.bbb.jp
@@ -424,6 +424,7 @@ pathrule: # List of RESTAPI rules, rules that determine whe
424
424
  - groups: [user]
425
425
  paths: [/signin, /assets, /bbforce_cmd, /copyright, /dosignin, /dosignout, /password/change,
426
426
  /gui/user_data/load, /gui/user_data/save, /gui/user_data/delete,
427
+ /agent, /mcpsv,
427
428
  /exec_cmd, /exec_pipe, /filer, /result, /gui, /get_server_opt, /usesignout, /versions_cmdbox, /versions_used]
428
429
  rule: allow
429
430
  - groups: [readonly]
@@ -451,6 +452,30 @@ password: # Password settings.
451
452
  enabled: true # Specify whether or not to enable account lockout.
452
453
  threshold: 5 # Specify the number of failed login attempts before the account is locked.
453
454
  reset: 30 # Specify the number of minutes after which the failed login count will be reset.
455
+ apikey:
456
+ gen_cert: # Specify whether to generate a certificate for API key.
457
+ enabled: true # Specify whether to enable certificate generation for API key.
458
+ privatekey: idp_private.pem # Specify the destination file for the generated private key.
459
+ certificate: idp_cert.pem # Specify the destination file for the generated certificate.
460
+ publickey: idp_public.pem # Specify the destination file for the generated public key.
461
+ gen_jwt: # Specify whether to generate JWT for API key.
462
+ enabled: true # Specify whether to enable JWT generation for API key.
463
+ privatekey: idp_private.pem # Specify the private key file for JWT generation.
464
+ privatekey_passphrase: # Specify the passphrase for the private key file.
465
+ # If the private key is encrypted, specify the passphrase here.
466
+ algorithm: RS256 # Specify the algorithm used to generate the JWT. The value can be RS256, PS256, or ES256.
467
+ claims: # Specify the claims to be included in the JWT.
468
+ iss: identity_provider # Specify the issuer of the JWT. This is usually the name of the identity provider.
469
+ sub: app_user # Specify the subject of the JWT. This is usually the name of the application.
470
+ aud: app_organization # Specify the audience of the JWT. This is usually the name of the organization that will use the application.
471
+ exp: 31536000 # Specify the expiration time of the JWT in seconds. The default is 31536000 seconds (1 year).
472
+ verify_jwt: # Specify whether to verify JWT for API key.
473
+ enabled: true # Specify whether to enable JWT verification for API key.
474
+ certificate: idp_cert.pem # Specify the certificate file for JWT verification.
475
+ publickey: idp_public.pem # Specify the public key file for JWT verification. Not required if certificate exists.
476
+ issuer: identity_provider # Specify the issuer of the JWT. This is usually the name of the identity provider. (If not specified, no verification)
477
+ audience: app_organization # Specify the audience of the JWT. This is usually the name of the organization that will use the application. (If not specified, no verification)
478
+ algorithm: RS256 # Specify the algorithm used to verify the JWT. The value can be RS256, PS256, or ES256.
454
479
  oauth2: # OAuth2 settings.
455
480
  providers: # This is a per-provider setting for OAuth2.
456
481
  google: # Google's OAuth2 configuration.
@@ -512,7 +537,6 @@ saml: # SAML settings.
512
537
  certFingerprint: ''
513
538
  certFingerprintAlgorithm: sha1
514
539
 
515
-
516
540
  ```
517
541
 
518
542
  - See the documentation for references to each file.
@@ -327,25 +327,25 @@ audit:
327
327
  users: # A list of users, each of which is a map that contains the following fields.
328
328
  - uid: 1 # An ID that identifies a user. No two users can have the same ID.
329
329
  name: admin # A name that identifies the user. No two users can have the same name.
330
- password: XXXXXXXXXXXXXXXX # The user's password. The value is hashed with the hash function specified in the next hash field.
330
+ password: XXXXX # The user's password. The value is hashed with the hash function specified in the next hash field.
331
331
  hash: plain # The hash function used to hash the password, which can be plain, md5, sha1, or sha256, or oauth2, or saml.
332
332
  groups: [admin] # A list of groups to which the user belongs, as specified in the groups field.
333
333
  email: admin@aaa.bbb.jp # The email address of the user, used when authenticating using the provider specified in the oauth2 or saml field.
334
334
  - uid: 101
335
335
  name: user01
336
- password: XXXXXXXXXXXXXXXX
336
+ password: XXXXX
337
337
  hash: md5
338
338
  groups: [user]
339
339
  email: user01@aaa.bbb.jp
340
340
  - uid: 102
341
341
  name: user02
342
- password: XXXXXXXXXXXXXXXX
342
+ password: XXXXX
343
343
  hash: sha1
344
344
  groups: [readonly]
345
345
  email: user02@aaa.bbb.jp
346
346
  - uid: 103
347
347
  name: user03
348
- password: XXXXXXXXXXXXXXXX
348
+ password: XXXXX
349
349
  hash: sha256
350
350
  groups: [editor]
351
351
  email: user03@aaa.bbb.jp
@@ -400,6 +400,7 @@ pathrule: # List of RESTAPI rules, rules that determine whe
400
400
  - groups: [user]
401
401
  paths: [/signin, /assets, /bbforce_cmd, /copyright, /dosignin, /dosignout, /password/change,
402
402
  /gui/user_data/load, /gui/user_data/save, /gui/user_data/delete,
403
+ /agent, /mcpsv,
403
404
  /exec_cmd, /exec_pipe, /filer, /result, /gui, /get_server_opt, /usesignout, /versions_cmdbox, /versions_used]
404
405
  rule: allow
405
406
  - groups: [readonly]
@@ -427,6 +428,30 @@ password: # Password settings.
427
428
  enabled: true # Specify whether or not to enable account lockout.
428
429
  threshold: 5 # Specify the number of failed login attempts before the account is locked.
429
430
  reset: 30 # Specify the number of minutes after which the failed login count will be reset.
431
+ apikey:
432
+ gen_cert: # Specify whether to generate a certificate for API key.
433
+ enabled: true # Specify whether to enable certificate generation for API key.
434
+ privatekey: idp_private.pem # Specify the destination file for the generated private key.
435
+ certificate: idp_cert.pem # Specify the destination file for the generated certificate.
436
+ publickey: idp_public.pem # Specify the destination file for the generated public key.
437
+ gen_jwt: # Specify whether to generate JWT for API key.
438
+ enabled: true # Specify whether to enable JWT generation for API key.
439
+ privatekey: idp_private.pem # Specify the private key file for JWT generation.
440
+ privatekey_passphrase: # Specify the passphrase for the private key file.
441
+ # If the private key is encrypted, specify the passphrase here.
442
+ algorithm: RS256 # Specify the algorithm used to generate the JWT. The value can be RS256, PS256, or ES256.
443
+ claims: # Specify the claims to be included in the JWT.
444
+ iss: identity_provider # Specify the issuer of the JWT. This is usually the name of the identity provider.
445
+ sub: app_user # Specify the subject of the JWT. This is usually the name of the application.
446
+ aud: app_organization # Specify the audience of the JWT. This is usually the name of the organization that will use the application.
447
+ exp: 31536000 # Specify the expiration time of the JWT in seconds. The default is 31536000 seconds (1 year).
448
+ verify_jwt: # Specify whether to verify JWT for API key.
449
+ enabled: true # Specify whether to enable JWT verification for API key.
450
+ certificate: idp_cert.pem # Specify the certificate file for JWT verification.
451
+ publickey: idp_public.pem # Specify the public key file for JWT verification. Not required if certificate exists.
452
+ issuer: identity_provider # Specify the issuer of the JWT. This is usually the name of the identity provider. (If not specified, no verification)
453
+ audience: app_organization # Specify the audience of the JWT. This is usually the name of the organization that will use the application. (If not specified, no verification)
454
+ algorithm: RS256 # Specify the algorithm used to verify the JWT. The value can be RS256, PS256, or ES256.
430
455
  oauth2: # OAuth2 settings.
431
456
  providers: # This is a per-provider setting for OAuth2.
432
457
  google: # Google's OAuth2 configuration.
@@ -488,7 +513,6 @@ saml: # SAML settings.
488
513
  certFingerprint: ''
489
514
  certFingerprintAlgorithm: sha1
490
515
 
491
-
492
516
  ```
493
517
 
494
518
  - See the documentation for references to each file.
@@ -9,9 +9,9 @@ import time
9
9
  import sys
10
10
 
11
11
 
12
- def main(args_list:list=None):
12
+ def main(args_list:list=None, webcall:bool=False):
13
13
  app = CmdBoxApp.getInstance(appcls=CmdBoxApp, ver=version)
14
- return app.main(args_list)[0]
14
+ return app.main(args_list, webcall=webcall)[0]
15
15
 
16
16
  class CmdBoxApp:
17
17
  _instance = None
@@ -13,6 +13,8 @@ class AzureSignin(Signin):
13
13
  #url='https://graph.microsoft.com/v1.0/me/transitiveMemberOf?$Top=999',
14
14
  headers={'Authorization': f'Bearer {data}'}
15
15
  )
16
+ if not user_info_resp.ok and user_info_resp.text:
17
+ raise requests.exceptions.HTTPError(user_info_resp.text, response=user_info_resp)
16
18
  user_info_resp.raise_for_status()
17
19
  user_info_json = user_info_resp.json()
18
20
  if isinstance(user_info_json, dict):
@@ -27,12 +29,14 @@ class AzureSignin(Signin):
27
29
  'code': req.query_params['code'],
28
30
  'scope': " ".join(conf['scope']),
29
31
  'client_id': conf['client_id'],
30
- #'client_secret': conf['client_secret'],
32
+ 'client_secret': conf['client_secret'],
31
33
  'redirect_uri': conf['redirect_uri'],
32
34
  'grant_type': 'authorization_code'}
33
35
  query = '&'.join([f'{k}={urllib.parse.quote(v)}' for k, v in data.items()])
34
36
  # アクセストークン取得
35
37
  token_resp = requests.post(url=f'https://login.microsoftonline.com/{conf["tenant_id"]}/oauth2/v2.0/token', headers=headers, data=query)
38
+ if not token_resp.ok and token_resp.text:
39
+ raise requests.exceptions.HTTPError(token_resp.text, response=token_resp)
36
40
  token_resp.raise_for_status()
37
41
  token_json = token_resp.json()
38
42
  return token_json['access_token']
@@ -1,11 +1,16 @@
1
1
  from cmdbox.app import common, options
2
+ from cryptography import x509
3
+ from cryptography.hazmat.primitives import serialization
4
+ from cryptography.hazmat.backends import default_backend
2
5
  from fastapi import Request, Response, HTTPException, WebSocket
3
6
  from fastapi.responses import RedirectResponse
4
7
  from pathlib import Path
5
8
  from typing import Dict, Any, Tuple, List, Union
9
+ import argparse
6
10
  import copy
7
11
  import contextvars
8
12
  import logging
13
+ import jwt
9
14
  import string
10
15
 
11
16
 
@@ -87,7 +92,7 @@ class Signin(object):
87
92
  if self.signin_file_data is None:
88
93
  return None
89
94
  if 'signin' in req.session:
90
- self.signin_file_data = Signin.load_signin_file(self.signin_file, self.signin_file_data) # サインインファイルの更新をチェック
95
+ self.signin_file_data = Signin.load_signin_file(self.signin_file, self.signin_file_data, self=self) # サインインファイルの更新をチェック
91
96
  return Signin._check_signin(req, res, self.signin_file_data, self.logger)
92
97
 
93
98
  @classmethod
@@ -157,17 +162,37 @@ class Signin(object):
157
162
  if not auth.startswith('Bearer '):
158
163
  #self.logger.warning(f"Bearer not found. headers={req.headers}")
159
164
  return RedirectResponse(url=f'/signin{req.url.path}?error=apikeyfail')
160
- bearer, apikey = auth.split(' ')
161
- apikey = common.hash_password(apikey.strip(), 'sha1')
165
+ bearer, apikey = auth.split(' ').strip()
162
166
  if logger.level == logging.DEBUG:
163
- logger.debug(f"hashed apikey: {apikey}")
167
+ logger.debug(f"received apikey: {apikey}")
164
168
  find_user = None
169
+ jwt_enabled = signin_file_data['apikey']['verify_jwt']['enabled']
165
170
  for user in signin_file_data['users']:
166
171
  if 'apikeys' not in user:
167
172
  continue
168
173
  for ak, key in user['apikeys'].items():
169
174
  if apikey == key:
170
- find_user = user
175
+ if jwt_enabled:
176
+ publickey = None
177
+ if hasattr(cls, 'verify_jwt_certificate') and cls.verify_jwt_certificate is not None:
178
+ publickey = cls.verify_jwt_certificate.public_key()
179
+ if hasattr(cls, 'verify_jwt_publickey') and cls.verify_jwt_publickey is not None:
180
+ publickey = cls.verify_jwt_publickey
181
+ algorithm = signin_file_data['apikey']['verify_jwt']['algorithm']
182
+ issuer = signin_file_data['apikey']['verify_jwt']['issuer']
183
+ audience = signin_file_data['apikey']['verify_jwt']['audience']
184
+ claims = jwt.decode(apikey, publickey, algorithms=[algorithm],
185
+ issuer=issuer, audience=audience,
186
+ options={'verify_iss': issuer is not None,
187
+ 'verify_aud': audience is not None},)
188
+ find_user = dict(**claims, **user)
189
+ find_user['uid'] = find_user['uid'] if 'uid' in find_user else -1
190
+ find_user['name'] = find_user['name'] if 'name' in find_user else None
191
+ find_user['groups'] = find_user['groups'] if 'groups' in find_user else None
192
+ find_user['email'] = find_user['email'] if 'email' in find_user else None
193
+ find_user['apikey_name'] = find_user['apikey_name'] if 'apikey_name' in find_user else None
194
+ else:
195
+ find_user = user
171
196
  if find_user is None:
172
197
  logger.warning(f"No matching user found for apikey.")
173
198
  return RedirectResponse(url=f'/signin{req.url.path}?error=apikeyfail')
@@ -196,7 +221,22 @@ class Signin(object):
196
221
  return RedirectResponse(url=f'/signin{req.url.path}?error=unauthorizedsite')
197
222
 
198
223
  @classmethod
199
- def load_signin_file(cls, signin_file:Path, signin_file_data:Dict[str, Any]=None) -> Dict[str, Any]:
224
+ def load_pem_private_key(cls, data:bytes, passphrase:str=None):
225
+ return serialization.load_pem_private_key(
226
+ data,
227
+ password=passphrase.encode('utf-8') if passphrase else None,
228
+ backend=default_backend())
229
+
230
+ @classmethod
231
+ def load_pem_public_key(cls, data:bytes):
232
+ return serialization.load_pem_public_key(data, backend=default_backend())
233
+
234
+ @classmethod
235
+ def load_pem_x509_certificate(cls, data:bytes):
236
+ return x509.load_pem_x509_certificate(data, backend=default_backend())
237
+
238
+ @classmethod
239
+ def load_signin_file(cls, signin_file:Path, signin_file_data:Dict[str, Any]=None, self=None) -> Dict[str, Any]:
200
240
  """
201
241
  サインインファイルを読み込む
202
242
 
@@ -390,6 +430,90 @@ class Signin(object):
390
430
  raise HTTPException(status_code=500, detail=f'signin_file format error. "reset" not found in "password.lockout". ({signin_file})')
391
431
  if type(yml['password']['lockout']['reset']) is not int:
392
432
  raise HTTPException(status_code=500, detail=f'signin_file format error. "reset" not int type in "password.lockout". ({signin_file})')
433
+ # apikeyのフォーマットチェック
434
+ if 'apikey' not in yml:
435
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "apikey" not found. ({signin_file})')
436
+ if 'gen_cert' not in yml['apikey']:
437
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "gen_cert" not found in "apikey". ({signin_file})')
438
+ if 'enabled' not in yml['apikey']['gen_cert']:
439
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "enabled" not found in "apikey.gen_cert". ({signin_file})')
440
+ if type(yml['apikey']['gen_cert']['enabled']) is not bool:
441
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "enabled" not bool type in "apikey.gen_cert". ({signin_file})')
442
+ if yml['apikey']['gen_cert']['enabled']:
443
+ if 'privatekey' not in yml['apikey']['gen_cert']:
444
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "privatekey" not found in "apikey.gen_cert". ({signin_file})')
445
+ if 'certificate' not in yml['apikey']['gen_cert']:
446
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "certificate" not found in "apikey.gen_cert". ({signin_file})')
447
+ if 'publickey' not in yml['apikey']['gen_cert']:
448
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "publickey" not found in "apikey.gen_cert". ({signin_file})')
449
+ if not Path(yml['apikey']['gen_cert']['certificate']).is_file():
450
+ from cmdbox.app.features.cli.cmdbox_web_gencert import WebGencert
451
+ gencert = WebGencert(self.appcls, self.ver)
452
+ opt = dict(webhost=self.ver.__appid__, overwrite=True,
453
+ output_cert=yml['apikey']['gen_cert']['certificate'], output_cert_format='PEM',
454
+ output_pkey=yml['apikey']['gen_cert']['publickey'], output_pkey_format='PEM',
455
+ output_key=yml['apikey']['gen_cert']['privatekey'], output_key_format='PEM',)
456
+ args = argparse.Namespace(**opt)
457
+ status, res, _ = gencert.apprun(self.logger, args, 0, [])
458
+ if status != 0:
459
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "gen_cert" generate error in "apikey.gen_cert". ({signin_file}) {res}')
460
+ if 'gen_jwt' not in yml['apikey']:
461
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "gen_jwt" not found in "apikey". ({signin_file})')
462
+ if 'enabled' not in yml['apikey']['gen_jwt']:
463
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "enabled" not found in "apikey.gen_jwt". ({signin_file})')
464
+ if type(yml['apikey']['gen_jwt']['enabled']) is not bool:
465
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "enabled" not bool type in "apikey.gen_jwt". ({signin_file})')
466
+ if yml['apikey']['gen_jwt']['enabled']:
467
+ if 'privatekey' not in yml['apikey']['gen_jwt']:
468
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "privatekey" not found in "apikey.gen_jwt". ({signin_file})')
469
+ if 'privatekey_passphrase' not in yml['apikey']['gen_jwt']:
470
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "privatekey_passphrase" not found in "apikey.gen_jwt". ({signin_file})')
471
+ if not Path(yml['apikey']['gen_jwt']['privatekey']).is_file():
472
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "privatekey" file not found in "apikey.gen_jwt". ({signin_file})')
473
+ with open(yml['apikey']['gen_jwt']['privatekey'], 'rb') as f:
474
+ cls.gen_jwt_privatekey = cls.load_pem_private_key(f.read(), yml['apikey']['gen_jwt'].get('privatekey_passphrase', None))
475
+ if 'algorithm' not in yml['apikey']['gen_jwt']:
476
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "algorithm" not found in "apikey.gen_jwt". ({signin_file})')
477
+ cls.gen_jwt_algorithm = yml['apikey']['gen_jwt']['algorithm']
478
+ if 'claims' not in yml['apikey']['gen_jwt']:
479
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "claims" not found in "apikey.gen_jwt". ({signin_file})')
480
+ cls.gen_jwt_claims = yml['apikey']['gen_jwt']['claims'].copy()
481
+ if type(yml['apikey']['gen_jwt']['claims']) is not dict:
482
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "claims" not dict type in "apikey.gen_jwt". ({signin_file})')
483
+ if 'verify_jwt' not in yml['apikey']:
484
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "verify_jwt" not found in "apikey". ({signin_file})')
485
+ if 'enabled' not in yml['apikey']['verify_jwt']:
486
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "enabled" not found in "apikey.verify_jwt". ({signin_file})')
487
+ if type(yml['apikey']['verify_jwt']['enabled']) is not bool:
488
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "enabled" not bool type in "apikey.verify_jwt". ({signin_file})')
489
+ if yml['apikey']['verify_jwt']['enabled']:
490
+ if 'certificate' not in yml['apikey']['verify_jwt']:
491
+ if 'publickey' not in yml['apikey']['verify_jwt']:
492
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "certificate" or "publickey" not found in "apikey.verify_jwt". ({signin_file})')
493
+ if not Path(yml['apikey']['verify_jwt']['publickey']).is_file():
494
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "publickey" file not found in "apikey.verify_jwt". ({signin_file})')
495
+ with open(yml['apikey']['verify_jwt']['publickey'], 'rb') as f:
496
+ cls.verify_jwt_publickey_str = f.read()
497
+ cls.verify_jwt_publickey = cls.load_pem_public_key(cls.verify_jwt_publickey_str)
498
+ cls.verify_jwt_publickey_str = cls.verify_jwt_publickey_str.decode('utf-8')
499
+ else:
500
+ if not Path(yml['apikey']['verify_jwt']['certificate']).is_file():
501
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "certificate" file not found in "apikey.verify_jwt". ({signin_file})')
502
+ with open(yml['apikey']['verify_jwt']['certificate'], 'rb') as f:
503
+ cls.verify_jwt_certificate = cls.load_pem_x509_certificate(f.read())
504
+ cls.verify_jwt_publickey = cls.verify_jwt_certificate.public_key()
505
+ cls.verify_jwt_publickey_str = cls.verify_jwt_publickey.public_bytes(
506
+ encoding=serialization.Encoding.PEM,
507
+ format=serialization.PublicFormat.SubjectPublicKeyInfo).decode('utf-8')
508
+ if 'issuer' not in yml['apikey']['verify_jwt']:
509
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "issuer" not found in "apikey.verify_jwt". ({signin_file})')
510
+ cls.verify_jwt_issuer = yml['apikey']['verify_jwt']['issuer']
511
+ if 'audience' not in yml['apikey']['verify_jwt']:
512
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "audience" not found in "apikey.verify_jwt". ({signin_file})')
513
+ cls.verify_jwt_audience = yml['apikey']['verify_jwt']['audience']
514
+ if 'algorithm' not in yml['apikey']['verify_jwt']:
515
+ raise HTTPException(status_code=500, detail=f'signin_file format error. "algorithm" not found in "apikey.verify_jwt". ({signin_file})')
516
+ cls.verify_jwt_algorithm = yml['apikey']['verify_jwt']['algorithm']
393
517
  # oauth2のフォーマットチェック
394
518
  if 'oauth2' not in yml:
395
519
  raise HTTPException(status_code=500, detail=f'signin_file format error. "oauth2" not found. ({signin_file})')
@@ -485,7 +609,7 @@ class Signin(object):
485
609
  group_names (List[str]): グループ名リスト
486
610
  master_groups (List[Dict[str, Any]], optional): 親グループ名. Defaults to None.
487
611
  """
488
- copy_signin_data = copy.deepcopy(signin_file_data)
612
+ copy_signin_data = copy.deepcopy(dict(groups=signin_file_data['groups']))
489
613
  master_groups = copy_signin_data['groups'] if master_groups is None else master_groups
490
614
  gns = []
491
615
  for gn in group_names.copy():
@@ -788,16 +912,12 @@ async def create_request_scope(req:Request=None, res:Response=None, websocket:We
788
912
  これは、FastAPIのDependsで使用されることを意図しています。
789
913
  次のように使用します。
790
914
 
791
- Example:
792
-
793
- ::
915
+ from cmdbox.app.auth import signin
916
+ from fastapi import Depends, Request, Response
794
917
 
795
- from cmdbox.app.auth import signin
796
- from fastapi import Depends, Request, Response
797
-
798
- @app.get("/some-endpoint")
799
- async def some_endpoint(req: Request, res: Response, scope=Depends(signin.create_request_scope)):
800
- # 何らかの処理
918
+ @app.get("/some-endpoint")
919
+ async def some_endpoint(req: Request, res: Response, scope=Depends(signin.create_request_scope)):
920
+ pass
801
921
 
802
922
  Args:
803
923
  req (Request): リクエスト
@@ -818,18 +938,14 @@ def get_request_scope() -> Dict[str, Any]:
818
938
  """
819
939
  FastAPIのDepends用に、ContextVarからリクエストスコープを取得します。
820
940
 
821
- Example:
822
-
823
- ::
824
-
825
- from cmdbox.app.auth import signin
826
- from fastapi import Request, Response
827
- scope = signin.get_request_scope()
828
- scope['req'] # Requestオブジェクト
829
- scope['res'] # Responseオブジェクト
830
- scope['session'] # sessionを表す辞書
831
- scope['websocket'] # WebSocket接続
832
- scope['logger'] # loggerオブジェクト
941
+ from cmdbox.app.auth import signin
942
+ from fastapi import Request, Response
943
+ scope = signin.get_request_scope()
944
+ scope['req'] # Requestオブジェクト
945
+ scope['res'] # Responseオブジェクト
946
+ scope['session'] # sessionを表す辞書
947
+ scope['websocket'] # WebSocket接続
948
+ scope['logger'] # loggerオブジェクト
833
949
 
834
950
  Returns:
835
951
  Dict[str, Any]: リクエストとレスポンスとWebSocket接続
@@ -93,7 +93,33 @@ def save_yml(yml_path:Path, data:dict) -> None:
93
93
  with open(yml_path, 'w') as f:
94
94
  yaml.dump(data, f, default_flow_style=False, sort_keys=False)
95
95
 
96
- def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S') -> None:
96
+ class CommonValue:
97
+ _map = dict()
98
+
99
+ def set_common_value(key:str, value:Any) -> None:
100
+ """
101
+ 共通の値を設定します。
102
+
103
+ Args:
104
+ key (str): キー
105
+ value (Any): 値
106
+ """
107
+ CommonValue._map[key] = value
108
+
109
+ def get_common_value(key:str, default:Any=None) -> Any:
110
+ """
111
+ 共通の値を取得します。
112
+
113
+ Args:
114
+ key (str): キー
115
+ default (Any, optional): デフォルト値. Defaults to None.
116
+
117
+ Returns:
118
+ Any: 取得した値。存在しない場合はdefault値を返します。
119
+ """
120
+ return CommonValue._map.get(key, default)
121
+
122
+ def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S', level:int=logging.INFO) -> None:
97
123
  """
98
124
  指定されたロガーのハンドラをクリアし、新しいハンドラを追加します。
99
125
  Args:
@@ -101,13 +127,21 @@ def reset_logger(name:str, stderr:bool=False, fmt:str='[%(asctime)s] %(levelname
101
127
  stderr (bool, optional): 標準エラー出力を使用するかどうか. Defaults to False.
102
128
  fmt (str, optional): ログフォーマット. Defaults to '[%(asctime)s] %(levelname)s - %(message)s'.
103
129
  datefmt (str, optional): 日時フォーマット. Defaults to '%Y-%m-%d %H:%M:%S'.
130
+ level (int, optional): ログレベル. Defaults to logging.INFO.
104
131
  """
105
132
  logger = logging.getLogger(name)
106
133
  logger.handlers.clear()
107
134
  logger.propagate = False
108
- logger.addHandler(create_log_handler(stderr, fmt, datefmt))
135
+ logger.setLevel(level)
136
+ logger.addHandler(create_log_handler(stderr, fmt, datefmt, level))
137
+ if get_common_value('webcall', False):
138
+ # webcallの場合はStreamHandlerを削除
139
+ for handler in logger.handlers:
140
+ hc = handler.__class__
141
+ if issubclass(hc, logging.StreamHandler) and not issubclass(hc, logging.FileHandler):
142
+ logger.removeHandler(handler)
109
143
 
110
- def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S') -> logging.Handler:
144
+ def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s - %(message)s', datefmt:str='%Y-%m-%d %H:%M:%S', level:int=logging.INFO) -> logging.Handler:
111
145
  """
112
146
  ログハンドラを生成します。
113
147
 
@@ -123,6 +157,7 @@ def create_log_handler(stderr:bool=False, fmt:str='[%(asctime)s] %(levelname)s -
123
157
  # tracebacks_word_wrap=False, log_time_format='[%Y-%m-%d %H:%M]')
124
158
  handler = loghandler.ColorfulStreamHandler(sys.stdout if not stderr else sys.stderr)
125
159
  handler.setFormatter(formatter)
160
+ handler.setLevel(level)
126
161
  return handler
127
162
 
128
163
  def create_console(stderr:bool=False, file=None) -> Console:
@@ -155,6 +190,7 @@ def default_logger(debug:bool=False, ver=version, webcall:bool=False) -> logging
155
190
  logging.Logger: ロガー
156
191
  """
157
192
  logger = logging.getLogger(ver.__appid__)
193
+ set_common_value('webcall', webcall)
158
194
  if not webcall:
159
195
  handler = create_log_handler()
160
196
  handler.setLevel(logging.DEBUG if debug else logging.INFO)
@@ -199,6 +235,7 @@ def load_config(mode:str, debug:bool=False, data=HOME_DIR, webcall:bool=False, v
199
235
  with open(log_conf_path) as f:
200
236
  log_config = yaml.safe_load(f)
201
237
  std_key = None
238
+ set_common_value('webcall', webcall)
202
239
  for k, h in log_config['handlers'].items():
203
240
  if 'filename' in h:
204
241
  h['filename'] = data / h['filename']
@@ -450,7 +450,7 @@ class Edge(object):
450
450
 
451
451
  status, res, headers = self.site_request(self.session.post, "/dosignin/gui", data=dict(name=user, password=password), ok_status=[200, 307])
452
452
  if status != 0 or headers.get('signin') is None:
453
- return 1, dict(warn=f"Signin failed.")
453
+ return 1, dict(warn=f"Signin failed.", headers=headers)
454
454
  status, self.user_info = self.load_user_info()
455
455
  self.user_info['auth_type'] = auth_type
456
456
  self.user_info['password'] = password
@@ -56,7 +56,7 @@ class Tool(object):
56
56
  """
57
57
  self.session = session
58
58
  self.svcert_no_verify = svcert_no_verify
59
- self.endpoint = endpoint
59
+ self.endpoint = endpoint.rstrip('/')
60
60
  self.icon_path = icon_path
61
61
  self.user = user_info
62
62
  self.oauth2 = oauth2
@@ -0,0 +1,87 @@
1
+ from cmdbox.app import common, feature, mcp
2
+ from cmdbox.app.options import Options
3
+
4
+
5
+ class AgentBase(feature.ResultEdgeFeature):
6
+
7
+ def get_option(self):
8
+ """
9
+ この機能のオプションを返します
10
+
11
+ Returns:
12
+ Dict[str, Any]: オプション
13
+ """
14
+ return dict(
15
+ use_redis=self.USE_REDIS_FALSE, nouse_webmode=False, use_agent=True,
16
+ discription_ja="-",
17
+ discription_en="-",
18
+ choice=[
19
+ dict(opt="agent", type=Options.T_STR, default="no", required=False, multi=False, hide=False, choice=["no", "use"],
20
+ discription_ja="エージェントを使用するかどうかを指定します。",
21
+ discription_en="Specifies whether the agent is used.",
22
+ choice_show=dict(use=["agent_name", "agent_description", "agent_instruction", "agent_session_store", "llmprov",],)),
23
+ dict(opt="agent_name", type=Options.T_STR, default=self.ver.__appid__, required=False, multi=False, hide=False, choice=None,
24
+ discription_ja="エージェント名を指定します。",
25
+ discription_en="Specifies the agent name."),
26
+ dict(opt="agent_description", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
27
+ discription_ja="エージェントの説明を指定します。",
28
+ discription_en="Specify agent description."),
29
+ dict(opt="agent_instruction", type=Options.T_TEXT, default=None, required=False, multi=False, hide=False, choice=None,
30
+ discription_ja="エージェントのシステム指示を指定します。",
31
+ discription_en="Specifies the agent's system instructions."),
32
+ dict(opt="agent_session_store", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=['memory', 'sqlite', 'postgresql'],
33
+ discription_ja="エージェントのセッションを保存する方法を指定します。",
34
+ discription_en="Specify how the agent's session is to be saved.",
35
+ choice_show=dict(postgresql=["agent_pg_host", "agent_pg_port", "agent_pg_user", "agent_pg_password", "agent_pg_dbname"]),),
36
+ dict(opt="agent_pg_host", type=Options.T_STR, default='localhost', required=False, multi=False, hide=False, choice=None, web="mask",
37
+ discription_ja="postgresqlホストを指定する。",
38
+ discription_en="Specify the postgresql host."),
39
+ dict(opt="agent_pg_port", type=Options.T_INT, default=5432, required=False, multi=False, hide=False, choice=None, web="mask",
40
+ discription_ja="postgresqlのポートを指定する。",
41
+ discription_en="Specify the postgresql port."),
42
+ dict(opt="agent_pg_user", type=Options.T_STR, default='postgres', required=False, multi=False, hide=False, choice=None, web="mask",
43
+ discription_ja="postgresqlのユーザー名を指定する。",
44
+ discription_en="Specify the postgresql user name."),
45
+ dict(opt="agent_pg_password", type=Options.T_STR, default='postgres', required=False, multi=False, hide=False, choice=None, web="mask",
46
+ discription_ja="postgresqlのパスワードを指定する。",
47
+ discription_en="Specify the postgresql password."),
48
+ dict(opt="agent_pg_dbname", type=Options.T_STR, default='agent', required=False, multi=False, hide=False, choice=None,
49
+ discription_ja="postgresqlデータベース名を指定します。",
50
+ discription_en="Specify the postgresql database name."),
51
+ dict(opt="llmprov", type=Options.T_STR, default=None, required=False, multi=False, hide=False,
52
+ choice=["", "azureopenai", "openai", "vertexai", "ollama"],
53
+ discription_ja="llmのプロバイダを指定します。",
54
+ discription_en="Specify llm provider.",
55
+ choice_show=dict(azureopenai=["llmapikey", "llmendpoint", "llmmodel", "llmapiversion"],
56
+ openai=["llmapikey", "llmendpoint", "llmmodel"],
57
+ vertexai=["llmprojectid", "llmsvaccountfile", "llmlocation", "llmmodel", "llmseed", "llmtemperature"],
58
+ ollama=["llmendpoint", "llmmodel", "llmtemperature"],),
59
+ ),
60
+ dict(opt="llmprojectid", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
61
+ discription_ja="llmのプロバイダ接続のためのプロジェクトIDを指定します。",
62
+ discription_en="Specify the project ID for llm's provider connection."),
63
+ dict(opt="llmsvaccountfile", type=Options.T_FILE, default=None, required=False, multi=False, hide=False, choice=None,
64
+ discription_ja="llmのプロバイダ接続のためのサービスアカウントファイルを指定します。",
65
+ discription_en="Specifies the service account file for llm's provider connection."),
66
+ dict(opt="llmlocation", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
67
+ discription_ja="llmのプロバイダ接続のためのロケーションを指定します。",
68
+ discription_en="Specifies the location for llm provider connections."),
69
+ dict(opt="llmapikey", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
70
+ discription_ja="llmのプロバイダ接続のためのAPIキーを指定します。",
71
+ discription_en="Specify API key for llm provider connection."),
72
+ dict(opt="llmapiversion", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
73
+ discription_ja="llmのプロバイダ接続のためのAPIバージョンを指定します。",
74
+ discription_en="Specifies the API version for llm provider connections."),
75
+ dict(opt="llmendpoint", type=Options.T_STR, default=None, required=False, multi=False, hide=False, choice=None,
76
+ discription_ja="llmのプロバイダ接続のためのエンドポイントを指定します。",
77
+ discription_en="Specifies the endpoint for llm provider connections."),
78
+ dict(opt="llmmodel", type=Options.T_STR, default="text-multilingual-embedding-002", required=False, multi=False, hide=False, choice=None,
79
+ discription_ja="llmモデルを指定します。",
80
+ discription_en="Specifies the llm model."),
81
+ dict(opt="llmseed", type=Options.T_INT, default=13, required=False, multi=False, hide=False, choice=None,
82
+ discription_ja="llmモデルを使用するときのシード値を指定します。",
83
+ discription_en="Specifies the seed value when using llm model."),
84
+ dict(opt="llmtemperature", type=Options.T_FLOAT, default=0.1, required=False, multi=False, hide=False, choice=None,
85
+ discription_ja="llmのモデルを使用するときのtemperatureを指定します。",
86
+ discription_en="Specifies the temperature when using llm model."),
87
+ ])