cmdbox 0.6.2.3__tar.gz → 0.6.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cmdbox might be problematic. Click here for more details.
- {cmdbox-0.6.2.3/cmdbox.egg-info → cmdbox-0.6.2.4}/PKG-INFO +1 -1
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/signin.py +3 -2
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_audit_search.py +6 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_start.py +1 -1
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/mcp.py +82 -86
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/web.py +15 -0
- {cmdbox-0.6.2.3/cmdbox/extensions/sample_project/sample → cmdbox-0.6.2.4/cmdbox}/extensions/user_list.yml +25 -1
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/version.py +2 -2
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/agent.js +1 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4/cmdbox.egg-info}/PKG-INFO +1 -1
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/LICENSE +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/MANIFEST.in +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/README.md +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/__init__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/__main__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/__init__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/app.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/__init__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/azure_signin.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/azure_signin_saml.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/github_signin.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/google_signin.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/auth/signin_saml.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/client.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/common.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/commons/convert.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/commons/loghandler.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/commons/module.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/commons/redis_client.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/edge.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/edge_tool.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/feature.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/agent_base.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/audit_base.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_audit_delete.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_audit_write.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_cmd_list.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_cmd_load.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_mcp_client.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_mcp_proxy.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_gencert.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_group_add.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_group_del.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_group_list.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_stop.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_user_add.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_user_del.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/cli/cmdbox_web_user_list.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_agent.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_audit.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_do_signout.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_filer download.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_signin.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/features/web/cmdbox_web_versions_used.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/filer.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/options.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/app/server.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/autoload.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/config.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/features.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/requirements.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/app/features/cli/__init__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/extensions/features.yml +0 -0
- {cmdbox-0.6.2.3/cmdbox → cmdbox-0.6.2.4/cmdbox/extensions/sample_project/sample}/extensions/user_list.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/version.py +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_Authlib_1_6_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_Jinja2_3_1_6_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_MarkupSafe_3_0_2_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_PyJWT_2_10_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_PyYAML_6_0_2_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_Pygments_2_19_2_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_SQLAlchemy_2_0_41_MIT.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_Sphinx_8_2_3_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_aiohappyeyeballs_2_6_1_Python_Software_Foundation_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_aiohttp_3_12_13_Apache-2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_aiosignal_1_3_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_alabaster_1_0_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_annotated-types_0_7_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_anyio_4_9_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_argcomplete_3_6_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_async-timeout_5_0_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_attrs_25_3_0_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_babel_2_17_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_backports_tarfile_1_2_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_cachetools_5_5_2_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_certifi_2025_6_15_Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_cffi_1_17_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_charset-normalizer_3_4_2_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_click_8_2_1_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_cloudpickle_3_1_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_colorama_0_4_6_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_cryptography_45_0_4_Apache-2_0_OR_BSD-3-Clause.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_distro_1_9_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_dnspython_2_7_0_ISC_License-ISCL.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_docstring_parser_0_16_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_docutils_0_21_2_BSD_License-GNU_General_Public_License-GPL-Public_Domain-Python_Software_Foundation_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_email_validator_2_2_0_The_Unlicense-Unlicense.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_exceptiongroup_1_3_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_fastapi_0_115_14_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_fastmcp_2_10_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_filelock_3_18_0_The_Unlicense-Unlicense.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_frozenlist_1_7_0_Apache-2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_fsspec_2025_5_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_gevent_25_5_1_MIT.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-adk_1_5_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-api-core_2_25_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-api-python-client_2_174_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-auth-httplib2_0_2_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-auth_2_40_3_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-aiplatform_1_100_0_Apache_2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-appengine-logging_1_6_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-audit-log_0_3_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-bigquery_3_34_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-core_2_4_3_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-logging_3_12_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-resource-manager_1_14_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-secret-manager_2_24_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-speech_2_33_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-storage_2_19_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-cloud-trace_1_16_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-crc32c_1_7_1_Apache_2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-genai_1_23_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_google-resumable-media_2_7_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_googleapis-common-protos_1_70_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_graphviz_0_21_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_greenlet_3_2_3_MIT_AND_Python-2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_grpc-google-iam-v1_0_14_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_grpcio-status_1_73_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_grpcio_1_73_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_gunicorn_23_0_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_h11_0_16_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_httpcore_1_0_9_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_httplib2_0_22_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_httptools_0_6_4_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_httpx-sse_0_4_1_MIT.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_httpx_0_28_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_huggingface-hub_0_33_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_id_1_5_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_idna_3_10_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_imagesize_1_4_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_importlib_metadata_8_7_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_itsdangerous_2_2_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_jaraco_classes_3_4_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_jaraco_context_6_0_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_jaraco_functools_4_2_1_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_jiter_0_10_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_jsonschema-specifications_2025_4_1_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_jsonschema_4_24_0_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_keyring_25_6_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_litellm_1_73_6_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_markdown-it-py_3_0_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_mcp_1_10_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_mdurl_0_1_2_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_more-itertools_10_7_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_multidict_6_6_2_Apache_License_2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_nh3_0_2_21_MIT.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_numpy_2_3_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_openai_1_93_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_openapi-pydantic_0_5_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_opentelemetry-api_1_34_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_opentelemetry-exporter-gcp-trace_1_9_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_opentelemetry-resourcedetector-gcp_1_9_0a0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_opentelemetry-sdk_1_34_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_opentelemetry-semantic-conventions_0_55b1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_packaging_25_0_Apache_Software_License-BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pillow_11_2_1_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pip_24_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_plyer_2_1_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_prettytable_3_16_0_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_prompt_toolkit_3_0_51_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_propcache_0_3_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_proto-plus_1_26_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_protobuf_6_31_1_3-Clause_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_psycopg-binary_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_psycopg_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pyasn1_0_6_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pyasn1_modules_0_4_2_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pycparser_2_22_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pycryptodome_3_23_0_BSD_License-Public_Domain.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pydantic-settings_2_10_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pydantic_2_11_7_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pydantic_core_2_33_2_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pyparsing_3_2_3_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pystray_0_19_5_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_python-dateutil_2_9_0_post0_Apache_Software_License-BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_python-dotenv_1_1_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_python-multipart_0_0_20_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_pywin32-ctypes_0_2_3_BSD-3-Clause.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_questionary_2_1_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_readme_renderer_44_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_redis_6_2_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_referencing_0_36_2_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_regex_2024_11_6_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_requests-toolbelt_1_0_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_requests_2_32_4_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_rfc3986_2_0_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_rich_14_0_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_roman-numerals-py_3_1_0_CC0_1_0_Universal-CC0_1_0-Public_Domain_Dedication-Zero-Clause_BSD-0BSD.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_rpds-py_0_25_1_MIT.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_rsa_4_9_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_setuptools_65_5_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_shapely_2_1_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_shellingham_1_5_4_ISC_License-ISCL.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_six_1_17_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sniffio_1_3_1_Apache_Software_License-MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_snowballstemmer_3_0_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinx-intl_2_3_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinx-last-updated-by-git_0_3_8_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinx-rtd-theme_3_0_2_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinx-sitemap_2_7_2_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinx_fontawesome_0_0_6_GNU_General_Public_License_v2-GPLv2.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-applehelp_2_0_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-devhelp_2_0_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-htmlhelp_2_1_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-jquery_4_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-jsmath_1_0_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-qthelp_2_0_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sphinxcontrib-serializinghtml_2_0_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_sse-starlette_2_3_6_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_starlette_0_46_2_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tabulate_0_9_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tenacity_8_5_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/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
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tokenizers_0_21_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tomli_2_2_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tqdm_4_67_1_MIT_License-Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_twine_6_1_0_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_typer_0_16_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_typing-inspection_0_4_1_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_typing_extensions_4_14_0_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tzdata_2025_2_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_tzlocal_5_3_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_uritemplate_4_2_0_BSD_3-Clause_OR_Apache-2_0.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_urllib3_2_5_0_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_uvicorn_0_35_0_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_watchfiles_1_1_0_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_wcwidth_0_2_13_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_websockets_15_0_1_BSD_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_wheel_0_45_1_MIT_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_yarl_1_20_1_Apache_Software_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_zipp_3_23_0_UNKNOWN.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_zope_event_5_1_Zope_Public_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/LICENSE_zope_interface_7_2_Zope_Public_License.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/licenses/files.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_audit.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_client.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_cmdbox.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_edge.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_gui.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_mcp.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_server.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/logconf_web.yml +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/agent.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/audit.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/common.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/icon.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/main.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/result.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/signin.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/svgicon.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/users.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/filer/filer.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/filer/main.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/filer/main.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/highlight/default.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/jquery-ui/package.json +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/assets_license_list.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/audit.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/filer.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/gui.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/result.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/signin.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox/web/users.html +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox.egg-info/SOURCES.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox.egg-info/dependency_links.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox.egg-info/entry_points.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox.egg-info/requires.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/cmdbox.egg-info/top_level.txt +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/setup.cfg +0 -0
- {cmdbox-0.6.2.3 → cmdbox-0.6.2.4}/setup.py +0 -0
|
@@ -931,7 +931,8 @@ async def create_request_scope(req:Request=None, res:Response=None, websocket:We
|
|
|
931
931
|
sess = None
|
|
932
932
|
if req is not None:
|
|
933
933
|
sess = req.session if hasattr(req, 'session') else None
|
|
934
|
-
|
|
934
|
+
from cmdbox.app.web import Web
|
|
935
|
+
request_scope.set(dict(req=req, res=res, websocket=websocket, web=Web.getInstance()))
|
|
935
936
|
try:
|
|
936
937
|
yield # リクエストの処理
|
|
937
938
|
finally:
|
|
@@ -954,4 +955,4 @@ def get_request_scope() -> Dict[str, Any]:
|
|
|
954
955
|
Returns:
|
|
955
956
|
Dict[str, Any]: リクエストとレスポンスとWebSocket接続
|
|
956
957
|
"""
|
|
957
|
-
return request_scope.get() if request_scope.get() is not None else dict(req=None, res=None, session=None, websocket=None)
|
|
958
|
+
return request_scope.get() if request_scope.get() is not None else dict(req=None, res=None, session=None, websocket=None, web=None)
|
|
@@ -144,6 +144,12 @@ class AuditSearch(audit_base.AuditBase):
|
|
|
144
144
|
Returns:
|
|
145
145
|
Tuple[int, Dict[str, Any], Any]: 終了コード, 結果, オブジェクト
|
|
146
146
|
"""
|
|
147
|
+
if not hasattr(args, 'format') or not args.format:
|
|
148
|
+
args.format = False
|
|
149
|
+
if not hasattr(args, 'output_json') or not args.output_json:
|
|
150
|
+
args.output_json = None
|
|
151
|
+
if not hasattr(args, 'output_json_append') or not args.output_json_append:
|
|
152
|
+
args.output_json_append = False
|
|
147
153
|
if args.svname is None:
|
|
148
154
|
msg = dict(warn=f"Please specify the --svname option.")
|
|
149
155
|
common.print_format(msg, args.format, tm, None, False, pf=pf)
|
|
@@ -183,7 +183,7 @@ class WebStart(feature.UnsupportEdgeFeature, agent_base.AgentBase):
|
|
|
183
183
|
Returns:
|
|
184
184
|
web.Web: Webオブジェクト
|
|
185
185
|
"""
|
|
186
|
-
w = web.Web(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
|
|
186
|
+
w = web.Web.getInstance(logger, Path(args.data), appcls=self.appcls, ver=self.ver,
|
|
187
187
|
redis_host=args.host, redis_port=args.port, redis_password=args.password, svname=args.svname,
|
|
188
188
|
client_only=args.client_only, doc_root=args.doc_root, gui_html=args.gui_html, filer_html=args.filer_html,
|
|
189
189
|
result_html=args.result_html, users_html=args.users_html,
|
|
@@ -35,11 +35,12 @@ class Mcp:
|
|
|
35
35
|
self.ver = ver
|
|
36
36
|
self.signin = sign
|
|
37
37
|
|
|
38
|
-
def create_mcpserver(self, args:argparse.Namespace, tools:List[Any], web:Any) -> Any:
|
|
38
|
+
def create_mcpserver(self, logger:logging.Logger, args:argparse.Namespace, tools:List[Any], web:Any) -> Any:
|
|
39
39
|
"""
|
|
40
40
|
mcpserverを作成します
|
|
41
41
|
|
|
42
42
|
Args:
|
|
43
|
+
logger (logging.Logger): ロガー
|
|
43
44
|
args (argparse.Namespace): 引数
|
|
44
45
|
tools (List[Any]): ツールのリスト
|
|
45
46
|
web (Any): Web関連のオブジェクト
|
|
@@ -60,13 +61,85 @@ class Mcp:
|
|
|
60
61
|
issuer=issuer,
|
|
61
62
|
audience=audience
|
|
62
63
|
)
|
|
63
|
-
mcp = FastMCP(name=self.ver.__appid__,
|
|
64
|
+
mcp = FastMCP(name=self.ver.__appid__, auth=auth)
|
|
64
65
|
else:
|
|
65
66
|
self.logger.info(f"Using BearerAuthProvider without public key, issuer, or audience.")
|
|
66
|
-
mcp = FastMCP(name=self.ver.__appid__
|
|
67
|
+
mcp = FastMCP(name=self.ver.__appid__)
|
|
67
68
|
mcp.add_middleware(self.create_mw_logging(self.logger, args))
|
|
68
69
|
mcp.add_middleware(self.create_mw_reqscope(self.logger, args, web))
|
|
69
|
-
|
|
70
|
+
|
|
71
|
+
options = Options.getInstance()
|
|
72
|
+
cmd_list:feature.Feature = options.get_cmd_attr('cmd', 'list', "feature")
|
|
73
|
+
language, _ = locale.getlocale()
|
|
74
|
+
is_japan = language.find('Japan') >= 0 or language.find('ja_JP') >= 0
|
|
75
|
+
_self_mcp = self
|
|
76
|
+
from cmdbox.app.web import Web
|
|
77
|
+
from fastmcp.tools import tool, tool_manager
|
|
78
|
+
class CustomToolManager(tool_manager.ToolManager):
|
|
79
|
+
async def _load_tools(self, *, via_server: bool = False) -> dict[str, tool.Tool]:
|
|
80
|
+
if hasattr(self, '_tools') and self._tools:
|
|
81
|
+
return self._tools
|
|
82
|
+
ret = await super()._load_tools(via_server=via_server)
|
|
83
|
+
#scope = signin.get_request_scope()
|
|
84
|
+
#web:Web = scope["web"]
|
|
85
|
+
signin_file = web.signin_file
|
|
86
|
+
#signin_data = signin.Signin.load_signin_file(signin_file)
|
|
87
|
+
#if signin.Signin._check_signin(scope["req"], scope["res"], signin_data, logger) is not None:
|
|
88
|
+
# logger.warning("Unable to execute command because authentication information cannot be obtained")
|
|
89
|
+
# raise Exception("Unable to execute command because authentication information cannot be obtained")
|
|
90
|
+
#groups = scope["req"].session["signin"]["groups"]
|
|
91
|
+
ret_tools = dict()
|
|
92
|
+
# システムコマンドリストのフィルタリング
|
|
93
|
+
for func in tools:
|
|
94
|
+
mode = [t.replace('mode=', '') for t in func.tags if t.startswith('mode=')]
|
|
95
|
+
mode = mode[0] if mode else None
|
|
96
|
+
cmd = [t.replace('cmd=', '') for t in func.tags if t.startswith('cmd=')]
|
|
97
|
+
cmd = cmd[0] if cmd else None
|
|
98
|
+
if mode is None or cmd is None:
|
|
99
|
+
logger.warning(f"Tool {func.name} does not have mode or cmd tag, skipping.")
|
|
100
|
+
continue
|
|
101
|
+
#if not signin.Signin._check_cmd(signin_data, groups, mode, cmd, logger):
|
|
102
|
+
# logger.warning(f"User does not have permission to use tool {func.name} (mode={mode}, cmd={cmd}), skipping.")
|
|
103
|
+
# continue
|
|
104
|
+
ret_tools[func.name] = func
|
|
105
|
+
# ユーザーコマンドリストの取得(すべてのコマンドを取得するためにgroupsをadminに設定)
|
|
106
|
+
args = argparse.Namespace(data=web.data, signin_file=signin_file, groups=['admin'], kwd=None,
|
|
107
|
+
format=False, output_json=None, output_json_append=False,)
|
|
108
|
+
st, ret, _ = cmd_list.apprun(logger, args, time.perf_counter(), [])
|
|
109
|
+
if ret is None or 'success' not in ret or not ret['success']:
|
|
110
|
+
return ret_tools
|
|
111
|
+
for opt in ret['success']:
|
|
112
|
+
func_name = opt['title']
|
|
113
|
+
mode, cmd, description = opt['mode'], opt['cmd'], opt['description'] if 'description' in opt and opt['description'] else ''
|
|
114
|
+
choices = options.get_cmd_choices(mode, cmd, False)
|
|
115
|
+
description += '\n' + options.get_cmd_attr(mode, cmd, 'description_ja' if is_japan else 'description_en')
|
|
116
|
+
# 関数の定義を生成
|
|
117
|
+
func_txt = _self_mcp._create_func_txt(func_name, mode, cmd, is_japan, options, title=opt['title'])
|
|
118
|
+
if logger.level == logging.DEBUG:
|
|
119
|
+
logger.debug(f"generating agent tool: {func_name}")
|
|
120
|
+
func_ctx = []
|
|
121
|
+
# 関数を実行してコンテキストに追加
|
|
122
|
+
exec(func_txt,
|
|
123
|
+
dict(time=time,List=List, Path=Path, argparse=argparse, common=common, options=options, logging=logging, signin=signin,),
|
|
124
|
+
dict(func_ctx=func_ctx))
|
|
125
|
+
# 関数のスキーマを生成
|
|
126
|
+
input_schema = dict(
|
|
127
|
+
type="object",
|
|
128
|
+
properties={o['opt']: _self_mcp._to_schema(o, is_japan) for o in choices},
|
|
129
|
+
required=[],
|
|
130
|
+
)
|
|
131
|
+
output_schema = dict(type="object", properties=dict())
|
|
132
|
+
func_tool = tool.FunctionTool(fn=func_ctx[0], name=func_name, title=func_name.title(), description=description,
|
|
133
|
+
tags=[f"mode={mode}", f"cmd={cmd}"],
|
|
134
|
+
parameters=input_schema, output_schema=output_schema,)
|
|
135
|
+
# ツールリストに追加
|
|
136
|
+
ret_tools[func_name] = func_tool
|
|
137
|
+
self._tools = ret_tools
|
|
138
|
+
return ret_tools
|
|
139
|
+
mcp._tool_manager = CustomToolManager(
|
|
140
|
+
duplicate_behavior=mcp._tool_manager.duplicate_behavior,
|
|
141
|
+
mask_error_details=mcp._tool_manager.mask_error_details
|
|
142
|
+
)
|
|
70
143
|
return mcp
|
|
71
144
|
|
|
72
145
|
def create_session_service(self, args:argparse.Namespace) -> Any:
|
|
@@ -335,6 +408,8 @@ class Mcp:
|
|
|
335
408
|
func_txt += f' opt_path = opt["data"] / ".cmds" / f"cmd-{title}.json"\n'
|
|
336
409
|
func_txt += f' opt.update(common.loadopt(opt_path))\n'
|
|
337
410
|
func_txt += f' scope = signin.get_request_scope()\n'
|
|
411
|
+
func_txt += f' if logger.level == logging.DEBUG:\n'
|
|
412
|
+
func_txt += ' logger.debug(f"MCP Call scope={scope}")\n'
|
|
338
413
|
func_txt += f' opt["mode"] = "{mode}"\n'
|
|
339
414
|
func_txt += f' opt["cmd"] = "{cmd}"\n'
|
|
340
415
|
func_txt += f' opt["format"] = False\n'
|
|
@@ -356,6 +431,8 @@ class Mcp:
|
|
|
356
431
|
func_txt += f' feat = options.get_cmd_attr("{mode}", "{cmd}", "feature")\n'
|
|
357
432
|
func_txt += f' args.groups = groups\n'
|
|
358
433
|
func_txt += f' try:\n'
|
|
434
|
+
func_txt += f' if logger.level == logging.DEBUG:\n'
|
|
435
|
+
func_txt += ' logger.debug(f"MCP Call {feat}#apprun, args={args}")\n'
|
|
359
436
|
func_txt += f' st, ret, _ = feat.apprun(logger, args, time.perf_counter(), [])\n'
|
|
360
437
|
func_txt += f' return ret\n'
|
|
361
438
|
func_txt += f' except Exception as e:\n'
|
|
@@ -411,87 +488,6 @@ class Mcp:
|
|
|
411
488
|
func_tools.append(func_tool)
|
|
412
489
|
return func_tools
|
|
413
490
|
|
|
414
|
-
def create_mw_toollist(self, logger:logging.Logger, args:argparse.Namespace) -> Any:
|
|
415
|
-
"""
|
|
416
|
-
ツールリストを作成するミドルウェアを作成します
|
|
417
|
-
|
|
418
|
-
Args:
|
|
419
|
-
logger (logging.Logger): ロガー
|
|
420
|
-
args (argparse.Namespace): 引数
|
|
421
|
-
|
|
422
|
-
Returns:
|
|
423
|
-
Any: ミドルウェア
|
|
424
|
-
"""
|
|
425
|
-
from cmdbox.app.web import Web
|
|
426
|
-
from fastmcp.server.middleware import Middleware, MiddlewareContext, ListToolsResult
|
|
427
|
-
from fastmcp.tools import FunctionTool
|
|
428
|
-
func_tools:List[FunctionTool] = self.create_tools(logger, args)
|
|
429
|
-
options = Options.getInstance()
|
|
430
|
-
cmd_list:feature.Feature = options.get_cmd_attr('cmd', 'list', "feature")
|
|
431
|
-
language, _ = locale.getlocale()
|
|
432
|
-
is_japan = language.find('Japan') >= 0 or language.find('ja_JP') >= 0
|
|
433
|
-
mcp = self
|
|
434
|
-
class CommandListMiddleware(Middleware):
|
|
435
|
-
async def on_list_tools(self, context: MiddlewareContext, call_next):
|
|
436
|
-
# 認証情報の取得
|
|
437
|
-
scope = signin.get_request_scope()
|
|
438
|
-
web:Web = scope["web"]
|
|
439
|
-
signin_file = web.signin_file
|
|
440
|
-
signin_data = signin.Signin.load_signin_file(signin_file)
|
|
441
|
-
if signin.Signin._check_signin(scope["req"], scope["res"], signin_data, logger) is not None:
|
|
442
|
-
logger.warning("Unable to execute command because authentication information cannot be obtained")
|
|
443
|
-
return dict(warn="Unable to execute command because authentication information cannot be obtained")
|
|
444
|
-
groups = scope["req"].session["signin"]["groups"]
|
|
445
|
-
ret_tools = []
|
|
446
|
-
# システムコマンドリストのフィルタリング
|
|
447
|
-
for func in func_tools:
|
|
448
|
-
mode = [t.replace('mode=', '') for t in func.tags if t.startswith('mode=')]
|
|
449
|
-
mode = mode[0] if mode else None
|
|
450
|
-
cmd = [t.replace('cmd=', '') for t in func.tags if t.startswith('cmd=')]
|
|
451
|
-
cmd = cmd[0] if cmd else None
|
|
452
|
-
if mode is None or cmd is None:
|
|
453
|
-
logger.warning(f"Tool {func.name} does not have mode or cmd tag, skipping.")
|
|
454
|
-
continue
|
|
455
|
-
if not signin.Signin._check_cmd(signin_data, groups, mode, cmd, logger):
|
|
456
|
-
logger.warning(f"User does not have permission to use tool {func.name} (mode={mode}, cmd={cmd}), skipping.")
|
|
457
|
-
continue
|
|
458
|
-
ret_tools.append(func)
|
|
459
|
-
# ユーザーコマンドリストの取得
|
|
460
|
-
args = argparse.Namespace(data=web.data, signin_file=signin_file, groups=groups, kwd=None,
|
|
461
|
-
format=False, output_json=None, output_json_append=False,)
|
|
462
|
-
st, ret, _ = cmd_list.apprun(logger, args, time.perf_counter(), [])
|
|
463
|
-
if ret is None or 'success' not in ret or not ret['success']:
|
|
464
|
-
return ret_tools
|
|
465
|
-
for opt in ret['success']:
|
|
466
|
-
func_name = f"user_{opt['title']}"
|
|
467
|
-
mode, cmd, description = opt['mode'], opt['cmd'], opt['description'] if 'description' in opt and opt['description'] else ''
|
|
468
|
-
choices = options.get_cmd_choices(mode, cmd, False)
|
|
469
|
-
description += '\n' + options.get_cmd_attr(mode, cmd, 'description_ja' if is_japan else 'description_en')
|
|
470
|
-
# 関数の定義を生成
|
|
471
|
-
func_txt = mcp._create_func_txt(func_name, mode, cmd, is_japan, options, title=opt['title'])
|
|
472
|
-
if logger.level == logging.DEBUG:
|
|
473
|
-
logger.debug(f"generating agent tool: {func_name}")
|
|
474
|
-
func_ctx = []
|
|
475
|
-
# 関数を実行してコンテキストに追加
|
|
476
|
-
exec(func_txt,
|
|
477
|
-
dict(time=time,List=List, Path=Path, argparse=argparse, common=common, options=options, logging=logging, signin=signin,),
|
|
478
|
-
dict(func_ctx=func_ctx))
|
|
479
|
-
# 関数のスキーマを生成
|
|
480
|
-
input_schema = dict(
|
|
481
|
-
type="object",
|
|
482
|
-
properties={o['opt']: mcp._to_schema(o, is_japan) for o in choices},
|
|
483
|
-
required=[],
|
|
484
|
-
)
|
|
485
|
-
output_schema = dict(type="object", properties=dict())
|
|
486
|
-
func_tool = FunctionTool(fn=func_ctx[0], name=func_name, title=func_name.title(), description=description,
|
|
487
|
-
tags=[f"mode={mode}", f"cmd={cmd}"],
|
|
488
|
-
parameters=input_schema, output_schema=output_schema,)
|
|
489
|
-
# ツールリストに追加
|
|
490
|
-
ret_tools.append(func_tool)
|
|
491
|
-
|
|
492
|
-
return ret_tools
|
|
493
|
-
return CommandListMiddleware()
|
|
494
|
-
|
|
495
491
|
def create_mw_logging(self, logger:logging.Logger, args:argparse.Namespace) -> Any:
|
|
496
492
|
"""
|
|
497
493
|
ログ出力用のミドルウェアを作成します
|
|
@@ -563,7 +559,7 @@ class Mcp:
|
|
|
563
559
|
session_service:BaseSessionService = self.create_session_service(args)
|
|
564
560
|
from fastmcp.tools import FunctionTool
|
|
565
561
|
tools:List[FunctionTool] = self.create_tools(logger, args)
|
|
566
|
-
mcp:FastMCP = self.create_mcpserver(args, tools, web)
|
|
562
|
+
mcp:FastMCP = self.create_mcpserver(logger, args, tools, web)
|
|
567
563
|
root_agent = self.create_agent(logger, args, [t.fn for t in tools])
|
|
568
564
|
runner = self.create_runner(logger, args, session_service, root_agent)
|
|
569
565
|
if logger.level == logging.DEBUG:
|
|
@@ -27,6 +27,21 @@ import webbrowser
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class Web:
|
|
30
|
+
@classmethod
|
|
31
|
+
def getInstance(cls, *args, **kwargs) -> 'Web':
|
|
32
|
+
"""
|
|
33
|
+
Webクラスのインスタンスを取得する
|
|
34
|
+
Args:
|
|
35
|
+
*args: 可変長引数
|
|
36
|
+
**kwargs: キーワード引数
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
Web: Webクラスのインスタンス
|
|
40
|
+
"""
|
|
41
|
+
if not hasattr(cls, '_instance'):
|
|
42
|
+
cls._instance = cls(*args, **kwargs)
|
|
43
|
+
return cls._instance
|
|
44
|
+
|
|
30
45
|
def __init__(self, logger:logging.Logger, data:Path, appcls=None, ver=None,
|
|
31
46
|
redis_host:str="localhost", redis_port:int=6379, redis_password:str=None, svname:str='server',
|
|
32
47
|
client_only:bool=False, doc_root:Path=None, gui_html:str=None, filer_html:str=None, result_html:str=None, users_html:str=None,
|
|
@@ -78,7 +78,7 @@ pathrule: # List of RESTAPI rules, rules that determine whe
|
|
|
78
78
|
- groups: [user]
|
|
79
79
|
paths: [/signin, /assets, /bbforce_cmd, /copyright, /dosignin, /dosignout, /password/change,
|
|
80
80
|
/gui/user_data/load, /gui/user_data/save, /gui/user_data/delete,
|
|
81
|
-
/agent, /
|
|
81
|
+
/agent, /mcpsv,
|
|
82
82
|
/exec_cmd, /exec_pipe, /filer, /result, /gui, /get_server_opt, /usesignout, /versions_cmdbox, /versions_used]
|
|
83
83
|
rule: allow
|
|
84
84
|
- groups: [readonly]
|
|
@@ -106,6 +106,30 @@ password: # Password settings.
|
|
|
106
106
|
enabled: true # Specify whether or not to enable account lockout.
|
|
107
107
|
threshold: 5 # Specify the number of failed login attempts before the account is locked.
|
|
108
108
|
reset: 30 # Specify the number of minutes after which the failed login count will be reset.
|
|
109
|
+
apikey:
|
|
110
|
+
gen_cert: # Specify whether to generate a certificate for API key.
|
|
111
|
+
enabled: true # Specify whether to enable certificate generation for API key.
|
|
112
|
+
privatekey: idp_private.pem # Specify the destination file for the generated private key.
|
|
113
|
+
certificate: idp_cert.pem # Specify the destination file for the generated certificate.
|
|
114
|
+
publickey: idp_public.pem # Specify the destination file for the generated public key.
|
|
115
|
+
gen_jwt: # Specify whether to generate JWT for API key.
|
|
116
|
+
enabled: true # Specify whether to enable JWT generation for API key.
|
|
117
|
+
privatekey: idp_private.pem # Specify the private key file for JWT generation.
|
|
118
|
+
privatekey_passphrase: # Specify the passphrase for the private key file.
|
|
119
|
+
# If the private key is encrypted, specify the passphrase here.
|
|
120
|
+
algorithm: RS256 # Specify the algorithm used to generate the JWT. The value can be RS256, PS256, or ES256.
|
|
121
|
+
claims: # Specify the claims to be included in the JWT.
|
|
122
|
+
iss: identity_provider # Specify the issuer of the JWT. This is usually the name of the identity provider.
|
|
123
|
+
sub: app_user # Specify the subject of the JWT. This is usually the name of the application.
|
|
124
|
+
aud: app_organization # Specify the audience of the JWT. This is usually the name of the organization that will use the application.
|
|
125
|
+
exp: 31536000 # Specify the expiration time of the JWT in seconds. The default is 31536000 seconds (1 year).
|
|
126
|
+
verify_jwt: # Specify whether to verify JWT for API key.
|
|
127
|
+
enabled: true # Specify whether to enable JWT verification for API key.
|
|
128
|
+
certificate: idp_cert.pem # Specify the certificate file for JWT verification.
|
|
129
|
+
publickey: idp_public.pem # Specify the public key file for JWT verification. Not required if certificate exists.
|
|
130
|
+
issuer: identity_provider # Specify the issuer of the JWT. This is usually the name of the identity provider. (If not specified, no verification)
|
|
131
|
+
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)
|
|
132
|
+
algorithm: RS256 # Specify the algorithm used to verify the JWT. The value can be RS256, PS256, or ES256.
|
|
109
133
|
oauth2: # OAuth2 settings.
|
|
110
134
|
providers: # This is a per-provider setting for OAuth2.
|
|
111
135
|
google: # Google's OAuth2 configuration.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
|
|
3
|
-
dt_now = datetime.datetime(2025, 7,
|
|
3
|
+
dt_now = datetime.datetime(2025, 7, 16)
|
|
4
4
|
days_ago = (datetime.datetime.now() - dt_now).days
|
|
5
5
|
__appid__ = 'cmdbox'
|
|
6
6
|
__title__ = 'cmdbox (Command Development Application)'
|
|
7
|
-
__version__ = '0.6.2.
|
|
7
|
+
__version__ = '0.6.2.4'
|
|
8
8
|
__copyright__ = f'Copyright © 2023-{dt_now.strftime("%Y")} hamacom2004jp'
|
|
9
9
|
__pypiurl__ = 'https://pypi.org/project/cmdbox/'
|
|
10
10
|
__srcurl__ = 'https://github.com/hamacom2004jp/cmdbox'
|
|
@@ -253,6 +253,7 @@ agent.create_history = (histories, session_id, msg) => {
|
|
|
253
253
|
e.preventDefault();
|
|
254
254
|
e.stopPropagation();
|
|
255
255
|
agent.delete_session(session_id).then((res) => {
|
|
256
|
+
const messages = $('#messages');
|
|
256
257
|
if (res['success']) {
|
|
257
258
|
history.remove();
|
|
258
259
|
const sid = messages.attr('data-session_id');
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|